Adds support for the user adding new tabs by itself (requires Lazarus rev 33539+)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2136 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat 2011-11-15 10:22:30 +00:00
parent 5195e212a1
commit c38546ca77
4 changed files with 36 additions and 22 deletions

View File

@ -3,7 +3,7 @@ object formBrowser: TformBrowser
Height = 439 Height = 439
Top = 186 Top = 186
Width = 621 Width = 621
ClientHeight = 439 ClientHeight = 412
ClientWidth = 621 ClientWidth = 621
Color = clBtnFace Color = clBtnFace
Font.Color = clWindowText Font.Color = clWindowText
@ -18,7 +18,7 @@ object formBrowser: TformBrowser
object panelBottom: TPanel object panelBottom: TPanel
Left = 0 Left = 0
Height = 18 Height = 18
Top = 421 Top = 394
Width = 621 Width = 621
Align = alBottom Align = alBottom
Alignment = taLeftJustify Alignment = taLeftJustify
@ -39,7 +39,7 @@ object formBrowser: TformBrowser
Left = 319 Left = 319
Height = 16 Height = 16
Top = 3 Top = 3
Width = 22 Width = 21
Caption = 'Idle' Caption = 'Idle'
ParentColor = False ParentColor = False
end end

View File

@ -2,17 +2,17 @@
LazarusResources.Add('TformBrowser','FORMDATA',[ LazarusResources.Add('TformBrowser','FORMDATA',[
'TPF0'#12'TformBrowser'#11'formBrowser'#4'Left'#3'G'#1#6'Height'#3#183#1#3'To' 'TPF0'#12'TformBrowser'#11'formBrowser'#4'Left'#3'G'#1#6'Height'#3#183#1#3'To'
+'p'#3#186#0#5'Width'#3'm'#2#12'ClientHeight'#3#183#1#11'ClientWidth'#3'm'#2#5 +'p'#3#186#0#5'Width'#3'm'#2#12'ClientHeight'#3#156#1#11'ClientWidth'#3'm'#2#5
+'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2 +'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2
+#243#9'Font.Name'#6#5'Arial'#4'Menu'#7#8'MainMenu'#8'OnCreate'#7#10'FormCrea' +#243#9'Font.Name'#6#5'Arial'#4'Menu'#7#8'MainMenu'#8'OnCreate'#7#10'FormCrea'
+'te'#9'OnDestroy'#7#11'FormDestroy'#6'OnShow'#7#8'FormShow'#8'Position'#7#14 +'te'#9'OnDestroy'#7#11'FormDestroy'#6'OnShow'#7#8'FormShow'#8'Position'#7#14
+'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#11'panelBottom'#4'Le' +'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#11'panelBottom'#4'Le'
+'ft'#2#0#6'Height'#2#18#3'Top'#3#165#1#5'Width'#3'm'#2#5'Align'#7#8'alBottom' +'ft'#2#0#6'Height'#2#18#3'Top'#3#138#1#5'Width'#3'm'#2#5'Align'#7#8'alBottom'
+#9'Alignment'#7#13'taLeftJustify'#10'BevelInner'#7#9'bvLowered'#10'BevelOute' +#9'Alignment'#7#13'taLeftJustify'#10'BevelInner'#7#9'bvLowered'#10'BevelOute'
+'r'#7#6'bvNone'#12'ClientHeight'#2#18#11'ClientWidth'#3'm'#2#8'TabOrder'#2#0 +'r'#7#6'bvNone'#12'ClientHeight'#2#18#11'ClientWidth'#3'm'#2#8'TabOrder'#2#0
+#0#12'TProgressBar'#11'ProgressBar'#4'Left'#3#214#1#6'Height'#2#16#3'Top'#2#1 +#0#12'TProgressBar'#11'ProgressBar'#4'Left'#3#214#1#6'Height'#2#16#3'Top'#2#1
+#5'Width'#3#150#0#5'Align'#7#7'alRight'#8'TabOrder'#2#0#0#0#6'TLabel'#13'lab' +#5'Width'#3#150#0#5'Align'#7#7'alRight'#8'TabOrder'#2#0#0#0#6'TLabel'#13'lab'
+'elProgress'#4'Left'#3'?'#1#6'Height'#2#16#3'Top'#2#3#5'Width'#2#22#7'Captio' +'elProgress'#4'Left'#3'?'#1#6'Height'#2#16#3'Top'#2#3#5'Width'#2#21#7'Captio'
+'n'#6#4'Idle'#11'ParentColor'#8#0#0#0#11'TOpenDialog'#10'OpenDialog'#10'Defa' +'n'#6#4'Idle'#11'ParentColor'#8#0#0#0#11'TOpenDialog'#10'OpenDialog'#10'Defa'
+'ultExt'#6#4'.htm'#6'Filter'#6'%html files|*.htm;*.html|all files|*.*'#7'Opt' +'ultExt'#6#4'.htm'#6'Filter'#6'%html files|*.htm;*.html|all files|*.*'#7'Opt'
+'ions'#11#14'ofHideReadOnly'#15'ofPathMustExist'#15'ofFileMustExist'#0#4'lef' +'ions'#11#14'ofHideReadOnly'#15'ofPathMustExist'#15'ofFileMustExist'#0#4'lef'

View File

@ -126,10 +126,12 @@ type
CurrentTab: Integer; CurrentTab: Integer;
procedure LoadURL(AURL: string); procedure LoadURL(AURL: string);
procedure AddBrowserTab(AURL: string; AGoToTab: Boolean); procedure AddBrowserTab(AURL: string; AGoToTab: Boolean);
procedure AddBrowserControlsToTab(ATabSheet: TCDTabSheet);
procedure AddMemoTab(AText: TStringList; ACaption: string; AGoToTab: Boolean); procedure AddMemoTab(AText: TStringList; ACaption: string; AGoToTab: Boolean);
procedure AddURLToHistory(AURL: string); procedure AddURLToHistory(AURL: string);
procedure HandlePageLoaderProgress(APercent: Integer); procedure HandlePageLoaderProgress(APercent: Integer);
procedure HandlePageLoaderTerminated(Sender: TObject); procedure HandlePageLoaderTerminated(Sender: TObject);
procedure HandleUserAddedPage(Sender: TObject; APage: TCDTabSheet);
end; end;
var var
@ -147,7 +149,8 @@ begin
pageBrowser.Align := alClient; pageBrowser.Align := alClient;
pageBrowser.DrawStyle := dsKDE; pageBrowser.DrawStyle := dsKDE;
pageBrowser.Options := [nboShowCloseButtons, nboHidePageListPopup, pageBrowser.Options := [nboShowCloseButtons, nboHidePageListPopup,
nboKeyboardTabSwitch]; nboKeyboardTabSwitch, nboShowAddTabButton];
pageBrowser.OnUserAddedPage := HandleUserAddedPage;
InitializeForm(); InitializeForm();
end; end;
@ -776,18 +779,30 @@ end;
procedure TformBrowser.AddBrowserTab(AURL: string; AGoToTab: Boolean); procedure TformBrowser.AddBrowserTab(AURL: string; AGoToTab: Boolean);
var var
lViewer: TBrowserViewer;
lTabSheet: TCDTabSheet; lTabSheet: TCDTabSheet;
lTopPanel: TPanel;
lbuttonReload, lbuttonBack, lbuttonForward: TBitBtn;
leditURL: TEdit;
begin begin
lTabSheet := pageBrowser.AddPage(''); // This call requires Lazarus 0.9.31+ lTabSheet := pageBrowser.AddPage(''); // This call requires Lazarus 0.9.31+
lTabSheet.Caption := 'WebPage'; lTabSheet.Caption := 'WebPage';
AddBrowserControlsToTab(lTabSheet);
if AGoToTab then
begin
CurrentTab := GetBrowerViewerCount() - 1;
SetCurrentBrowserViewer(CurrentTab);
end;
end;
procedure TformBrowser.AddBrowserControlsToTab(ATabSheet: TCDTabSheet);
var
lViewer: TBrowserViewer;
lTopPanel: TPanel;
lbuttonReload, lbuttonBack, lbuttonForward: TBitBtn;
leditURL: TEdit;
begin
// Add the top panel of the tab with buttons and the edit box // Add the top panel of the tab with buttons and the edit box
lTopPanel := TPanel.Create(lTabSheet); lTopPanel := TPanel.Create(ATabSheet);
lTopPanel.Parent := lTabSheet; lTopPanel.Parent := ATabSheet;
lTopPanel.Align := alTop; lTopPanel.Align := alTop;
lTopPanel.Height := 33; lTopPanel.Height := 33;
@ -828,13 +843,7 @@ begin
// Add the HTML Viewer // Add the HTML Viewer
lViewer := AddBrowserViewer(); lViewer := AddBrowserViewer();
lViewer.CreateViewer(lTabSheet, Self); lViewer.CreateViewer(ATabSheet, Self);
if AGoToTab then
begin
CurrentTab := GetBrowerViewerCount() - 1;
SetCurrentBrowserViewer(CurrentTab);
end;
end; end;
procedure TformBrowser.AddMemoTab(AText: TStringList; ACaption: string; procedure TformBrowser.AddMemoTab(AText: TStringList; ACaption: string;
@ -886,6 +895,11 @@ begin
AddURLToHistory(MyPageLoader.LastPageURL);} AddURLToHistory(MyPageLoader.LastPageURL);}
end; end;
procedure TformBrowser.HandleUserAddedPage(Sender: TObject; APage: TCDTabSheet);
begin
AddBrowserControlsToTab(APage);
end;
procedure TformBrowser.Timer1Timer(Sender: TObject); procedure TformBrowser.Timer1Timer(Sender: TObject);
const const
StartCount = 2; {timer counts before hint window opens} StartCount = 2; {timer counts before hint window opens}

View File

@ -195,7 +195,7 @@ begin
ViewerName := 'Turbo Power iPro HTML viewer written in Pascal'; ViewerName := 'Turbo Power iPro HTML viewer written in Pascal';
DataProvider1:=TMyIpHtmlDataProvider.Create(AOwner); DataProvider1:=TMyIpHtmlDataProvider.Create(AOwner);
DataProvider1.Name:='DataProvider1'; //DataProvider1.Name:='DataProvider1';
DataProvider1.OnCanHandle:=DataProvider1CanHandle; DataProvider1.OnCanHandle:=DataProvider1CanHandle;
DataProvider1.OnGetHtml:=DataProvider1GetHtml; DataProvider1.OnGetHtml:=DataProvider1GetHtml;
DataProvider1.OnGetImage:=DataProvider1GetImage; DataProvider1.OnGetImage:=DataProvider1GetImage;
@ -204,7 +204,7 @@ begin
DataProvider1.OnReportReference:=DataProvider1ReportReference; DataProvider1.OnReportReference:=DataProvider1ReportReference;
IpHtmlPanel1:=TIpHtmlPanel.Create(AOwner); IpHtmlPanel1:=TIpHtmlPanel.Create(AOwner);
IpHtmlPanel1.Name:='IpHtmlPanel1'; //IpHtmlPanel1.Name:='IpHtmlPanel1';
IpHtmlPanel1.Parent:=AParent; IpHtmlPanel1.Parent:=AParent;
IpHtmlPanel1.Align:=alClient; IpHtmlPanel1.Align:=alClient;
IpHtmlPanel1.DefaultFontSize:=10; IpHtmlPanel1.DefaultFontSize:=10;