summaryrefslogtreecommitdiff
path: root/examples/apps/uidesigner
diff options
context:
space:
mode:
authorgraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2007-09-17 14:02:43 +0000
committergraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2007-09-17 14:02:43 +0000
commit64721019859c52c10e0d2d5ad8e4ce56985088cd (patch)
tree8e869a5a6ba05d5c8814a2b16a242851344aa66a /examples/apps/uidesigner
parentd585f7ec074b0ba0e97e2d9b528a18f96337c30e (diff)
downloadfpGUI-64721019859c52c10e0d2d5ad8e4ce56985088cd.tar.xz
* Experimental: started a implementation where the TfpgMemo can
handle and render text containing Tab characters. * GUI: Implemented a new MRU (Most Recently Used) component. * Designer: Modifiend the designer to have a new MRU menu. * Designer: Extended the designer setup screen so the user can adjust more options. The designer also saves and restores those options. * Designer: The designer now defaults to saving the Name property of components as well. This might end up being a user selectable option in the setup screen.
Diffstat (limited to 'examples/apps/uidesigner')
-rw-r--r--examples/apps/uidesigner/newformdesigner.pas39
-rw-r--r--examples/apps/uidesigner/vfddesigner.pas15
-rw-r--r--examples/apps/uidesigner/vfdforms.pas102
-rw-r--r--examples/apps/uidesigner/vfdmain.pas32
-rw-r--r--examples/apps/uidesigner/vfdresizer.pas5
5 files changed, 130 insertions, 63 deletions
diff --git a/examples/apps/uidesigner/newformdesigner.pas b/examples/apps/uidesigner/newformdesigner.pas
index 42a437a6..90c1ca3a 100644
--- a/examples/apps/uidesigner/newformdesigner.pas
+++ b/examples/apps/uidesigner/newformdesigner.pas
@@ -34,6 +34,7 @@ uses
gui_memo,
gui_combobox,
gui_menu,
+ gui_mru,
vfdwidgetclass,
vfdwidgets;
@@ -54,9 +55,9 @@ type
TfrmMain = class(TfpgForm)
private
FFileOpenRecent: TfpgMenuItem;
- procedure OpenRecentFileClick(Sender: TObject);
procedure miHelpAboutClick(Sender: TObject);
procedure miHelpAboutGUI(Sender: TObject);
+ procedure miMRUClick(Sender: TObject; const FileName: string);
public
{@VFD_HEAD_BEGIN: frmMain}
MainMenu: TfpgMenuBar;
@@ -72,12 +73,12 @@ type
helpmenu: TfpgPopupMenu;
previewmenu: TfpgPopupMenu;
{@VFD_HEAD_END: frmMain}
+ mru: TfpgMRU;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetSelectedWidget: TVFDWidgetClass;
procedure SetSelectedWidget(wgc: TVFDWidgetClass);
- procedure AddRecentFile(AFilename: string);
procedure AfterCreate; override;
procedure OnPaletteClick(Sender: TObject);
property SelectedWidget: TVFDWidgetClass read GetSelectedWidget write SetSelectedWidget;
@@ -337,8 +338,8 @@ begin
SetPosition(464, 64, 120, 20);
AddMenuItem('New', '', @(maindsgn.OnNewFile));
AddMenuItem('Open', '', @(maindsgn.OnLoadFile));
- // FFileOpenRecent := AddMenuItem('Open Recent...', '', nil);
- // FFileOpenRecent.Enabled := False;
+ FFileOpenRecent := AddMenuItem('Open Recent...', '', nil);
+// FFileOpenRecent.Enabled := False;
AddMenuItem('Save', '', @(maindsgn.OnSaveFile));
AddMenuItem('-', '', nil);
AddMenuItem('New Form...', '', @(maindsgn.OnNewForm));
@@ -415,7 +416,14 @@ begin
MainMenu.AddMenuItem('&Preview', nil).SubMenu := previewmenu;
MainMenu.AddMenuItem('&Help', nil).SubMenu := helpmenu;
-// FFileOpenRecent.SubMenu := miOpenRecentMenu;
+ FFileOpenRecent.SubMenu := miOpenRecentMenu;
+
+ mru := TfpgMRU.Create(self);
+ mru.ParentMenuItem := miOpenRecentMenu;
+ mru.OnClick := @miMRUClick;
+ mru.MaxItems := gINI.ReadInteger('Options', 'MRUFileCount', 4);
+ mru.ShowFullPath := gINI.ReadBool('Options', 'ShowFullPath', True);
+ mru.LoadMRU;
end;
procedure TfrmMain.OnPaletteClick(Sender: TObject);
@@ -808,12 +816,6 @@ begin
editor.SetPosition(x, editor.Top, Width - ScrollBarWidth - x, editor.Height);
end;
-procedure TfrmMain.OpenRecentFileClick(Sender: TObject);
-begin
- if Sender is TfpgMenuItem then
- writeln(TfpgMenuItem(Sender).Text + ' clicked...');
-end;
-
procedure TfrmMain.miHelpAboutClick(Sender: TObject);
begin
TfrmAbout.Execute;
@@ -824,6 +826,12 @@ begin
ShowMessage('This product was created using fpGUI v0.5', 'About fpGUI');
end;
+procedure TfrmMain.miMRUClick(Sender: TObject; const FileName: string);
+begin
+ maindsgn.EditedFileName := FileName;
+ maindsgn.OnLoadFile(maindsgn);
+end;
+
constructor TfrmMain.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
@@ -858,15 +866,6 @@ begin
end;
end;
-procedure TfrmMain.AddRecentFile(AFilename: string);
-var
- mi: TfpgMenuItem;
-begin
- gINI.WriteString('RecentFiles', ExtractFileName(AFileName), AFileName);
- FFileOpenRecent.Enabled := True;
- mi := miOpenRecentMenu.AddMenuItem(AFileName, '', @OpenRecentFileClick);
-end;
-
procedure TwgPropertyList.ReleaseEditor;
begin
self.ActiveWidget := nil;
diff --git a/examples/apps/uidesigner/vfddesigner.pas b/examples/apps/uidesigner/vfddesigner.pas
index b6ee116d..30fce227 100644
--- a/examples/apps/uidesigner/vfddesigner.pas
+++ b/examples/apps/uidesigner/vfddesigner.pas
@@ -331,10 +331,10 @@ begin
x := msg.Params.mouse.x;
y := msg.Params.mouse.y;
- if GridResolution > 1 then
+ if maindsgn.GridResolution > 1 then
begin
- x := x - x mod GridResolution;
- y := y - y mod GridResolution;
+ x := x - x mod maindsgn.GridResolution;
+ y := y - y mod maindsgn.GridResolution;
end;
InsertWidget(pwg, x, y, wgc);
@@ -386,10 +386,10 @@ begin
if (wgd = nil) or (not wgd.Selected) then
Exit;
- if GridResolution > 1 then
+ if maindsgn.GridResolution > 1 then
begin
- dx := dx - (dx mod GridResolution);
- dy := dy - (dy mod GridResolution);
+ dx := dx - (dx mod maindsgn.GridResolution);
+ dy := dy - (dy mod maindsgn.GridResolution);
end;
MoveResizeWidgets(dx, dy, 0, 0);
@@ -580,8 +580,7 @@ begin
cd := TWidgetDesigner(FWidgets.Items[n]);
if cd.Selected then
begin
- if GridResolution > 1 then
- ;
+// if maindsgn.GridResolution > 1 then;
cd.Widget.MoveAndResizeBy(dx, dy, dw, dh);
cd.UpdateResizerPositions;
end;
diff --git a/examples/apps/uidesigner/vfdforms.pas b/examples/apps/uidesigner/vfdforms.pas
index 6454dff2..61b33b29 100644
--- a/examples/apps/uidesigner/vfdforms.pas
+++ b/examples/apps/uidesigner/vfdforms.pas
@@ -31,7 +31,9 @@ uses
gui_edit,
gui_button,
gui_listbox,
- gui_combobox;
+ gui_combobox,
+ gui_trackbar,
+ gui_checkbox;
type
@@ -102,12 +104,21 @@ type
TfrmVFDSetup = class(TfpgForm)
+ private
+ procedure LoadSettings;
+ procedure SaveSettings;
+ procedure btnOKClick(Sender: TObject);
public
{@VFD_HEAD_BEGIN: frmVFDSetup}
lb1: TfpgLabel;
chlGrid: TfpgComboBox;
btnOK: TfpgButton;
btnCancel: TfpgButton;
+ lblRecentFiles: TfpgLabel;
+ tbMRUFileCount: TfpgTrackBar;
+ cbFullPath: TfpgCheckBox;
+ lblName1: TfpgLabel;
+ lblName2: TfpgLabel;
{@VFD_HEAD_END: frmVFDSetup}
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -118,8 +129,6 @@ type
var
PaletteForm: TPaletteForm;
-function GridResolution: integer;
-
implementation
uses
@@ -127,10 +136,6 @@ uses
fpgfx,
gui_iniutils;
-function GridResolution: integer;
-begin
- Result := maindsgn.GridResolution;
-end;
{ TPaletteForm }
@@ -425,11 +430,32 @@ begin
inherited HandleKeyPress(keycode, shiftstate, consumed);
end;
+procedure TfrmVFDSetup.LoadSettings;
+begin
+ chlGrid.FocusItem := gINI.ReadInteger('Options', 'GridResolution', 2);
+ tbMRUFileCount.Position := gINI.ReadInteger('Options', 'MRUFileCount', 4);
+ cbFullPath.Checked := gINI.ReadBool('Options', 'ShowFullPath', True);
+end;
+
+procedure TfrmVFDSetup.SaveSettings;
+begin
+ gINI.WriteInteger('Options', 'GridResolution', chlGrid.FocusItem);
+ gINI.WriteInteger('Options', 'MRUFileCount', tbMRUFileCount.Position);
+ gINI.WriteBool('Options', 'ShowFullPath', cbFullPath.Checked);
+end;
+
+procedure TfrmVFDSetup.btnOKClick(Sender: TObject);
+begin
+ SaveSettings;
+ ModalResult := 1;
+end;
+
constructor TfrmVFDSetup.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Name := 'frmVFDSetup';
gINI.ReadFormState(self);
+ LoadSettings;
end;
destructor TfrmVFDSetup.Destroy;
@@ -441,14 +467,14 @@ end;
procedure TfrmVFDSetup.AfterCreate;
begin
{@VFD_BODY_BEGIN: frmVFDSetup}
- SetPosition(394, 399, 237, 70);
+ SetPosition(394, 399, 252, 184);
WindowTitle := 'General settings';
WindowPosition := wpScreenCenter;
lb1 := TfpgLabel.Create(self);
with lb1 do
begin
- SetPosition(8, 8, 116, 16);
+ SetPosition(28, 28, 116, 16);
Text := 'Grid resolution:';
FontDesc := '#Label1';
end;
@@ -456,36 +482,80 @@ begin
chlGrid := TfpgComboBox.Create(self);
with chlGrid do
begin
- SetPosition(128, 4, 56, 22);
+ SetPosition(140, 24, 88, 22);
Items.Add('1');
Items.Add('4');
Items.Add('8');
FontDesc := '#List';
- FocusItem := 2;
+ FocusItem := 0;
end;
btnOK := TfpgButton.Create(self);
with btnOK do
begin
- SetPosition(77, 40, 75, 24);
+ SetPosition(92, 154, 75, 24);
Anchors := [anRight,anBottom];
Text := 'OK';
FontDesc := '#Label1';
ImageName := 'stdimg.ok';
- ModalResult := 1;
- ShowImage := True;
+ ModalResult := 0;
+ ShowImage := True;
+ OnClick := @btnOKClick;
end;
btnCancel := TfpgButton.Create(self);
with btnCancel do
begin
- SetPosition(156, 40, 75, 24);
+ SetPosition(171, 154, 75, 24);
Anchors := [anRight,anBottom];
Text := 'Cancel';
FontDesc := '#Label1';
ImageName := 'stdimg.cancel';
ModalResult := -1;
- ShowImage := True;
+ ShowImage := True;
+ end;
+
+ lblRecentFiles := TfpgLabel.Create(self);
+ with lblRecentFiles do
+ begin
+ SetPosition(28, 88, 136, 16);
+ Text := 'Recent files count:';
+ FontDesc := '#Label1';
+ end;
+
+ tbMRUFileCount := TfpgTrackBar.Create(self);
+ with tbMRUFileCount do
+ begin
+ SetPosition(156, 80, 76, 30);
+ Min := 2;
+ Max := 10;
+ Position := 4;
+ Orientation := orHorizontal;
+ ShowPosition := True;
+ end;
+
+ cbFullPath := TfpgCheckBox.Create(self);
+ with cbFullPath do
+ begin
+ SetPosition(24, 108, 204, 20);
+ Text := 'Show the full file path';
+ FontDesc := '#Label1';
+ end;
+
+ lblName1 := TfpgLabel.Create(self);
+ with lblName1 do
+ begin
+ SetPosition(8, 8, 176, 16);
+ Text := 'Form designer';
+ FontDesc := '#Label2';
+ end;
+
+ lblName2 := TfpgLabel.Create(self);
+ with lblName2 do
+ begin
+ SetPosition(8, 64, 232, 16);
+ Text := 'Open Recent menu settings';
+ FontDesc := '#Label2';
end;
{@VFD_BODY_END: frmVFDSetup}
diff --git a/examples/apps/uidesigner/vfdmain.pas b/examples/apps/uidesigner/vfdmain.pas
index cead1ede..cd3413e4 100644
--- a/examples/apps/uidesigner/vfdmain.pas
+++ b/examples/apps/uidesigner/vfdmain.pas
@@ -80,7 +80,8 @@ var
implementation
uses
- vfdformparser;
+ vfdformparser,
+ gui_iniutils;
{ TMainDesigner }
@@ -156,6 +157,8 @@ begin
CreateParseForm(bl.FormName, bl.Data, bl2.Data); // pair was found
end;
end;
+
+ frmMain.mru.AddItem(fname);
end;
procedure TMainDesigner.OnSaveFile(Sender: TObject);
@@ -303,8 +306,8 @@ begin
FFile := TVFDFile.Create;
// options
- SaveComponentNames := False;
- GridResolution := 4;
+ SaveComponentNames := True;
+ GridResolution := gINI.ReadInteger('Options', 'GridResolution', 4);
FEditedFileName := '';
end;
@@ -402,21 +405,16 @@ var
frm: TfrmVFDSetup;
begin
frm := TfrmVFDSetup.Create(nil);
-
- case GridResolution of
- 1: frm.chlGrid.FocusItem := 1;
- 4: frm.chlGrid.FocusItem := 2;
- 8: frm.chlGrid.FocusItem := 3;
- end;
-
- if frm.ShowModal > 0 then
- case frm.chlGrid.FocusItem of
- 1: GridResolution := 1;
- 2: GridResolution := 4;
- 3: GridResolution := 8;
+ try
+ if frm.ShowModal = 1 then
+ begin
+ GridResolution := gINI.ReadInteger('Options', 'GridResolution', 4);
+ frmMain.mru.MaxItems := gINI.ReadInteger('Options', 'MRUFileCount', 4);
+ frmMain.mru.ShowFullPath := gINI.ReadBool('Options', 'ShowFullPath', True);
end;
-
- frm.Free;
+ finally
+ frm.Free;
+ end;
end;
procedure TMainDesigner.SetEditedFileName(const Value: string);
diff --git a/examples/apps/uidesigner/vfdresizer.pas b/examples/apps/uidesigner/vfdresizer.pas
index 5c4185b3..2faccfe8 100644
--- a/examples/apps/uidesigner/vfdresizer.pas
+++ b/examples/apps/uidesigner/vfdresizer.pas
@@ -49,7 +49,8 @@ implementation
uses
vfddesigner,
- vfdforms;
+ vfdforms,
+ vfdmain;
{ TwgResizer }
@@ -91,7 +92,7 @@ begin
dy := y - FDragPosY;
wgd := TWidgetDesigner(wgdesigner);
- gridc := GridResolution;
+ gridc := maindsgn.GridResolution;
dx := dx - dx mod gridc;
dy := dy - dy mod gridc;