339 lines
8.3 KiB
ObjectPascal
339 lines
8.3 KiB
ObjectPascal
unit Unit1;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ActnList,
|
|
StdActns, StdCtrls, Menus, ComCtrls, ExtCtrls,
|
|
SpkToolbar, spkt_Buttons, spkt_Checkboxes, spkt_Pane, spkt_Tab, spkt_Appearance;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
AcOpen: TAction;
|
|
AcClassicalGUI: TAction;
|
|
AcRibbonGUI: TAction;
|
|
AcSave: TAction;
|
|
AcQuit: TAction;
|
|
AcAutoSave: TAction;
|
|
AcSaveNow: TAction;
|
|
AcBold: TAction;
|
|
AcItalic: TAction;
|
|
AcLeftJustify: TAction;
|
|
AcCenter: TAction;
|
|
AcRightJustify: TAction;
|
|
AcAbout: TAction;
|
|
AcUnderline: TAction;
|
|
ActionList: TActionList;
|
|
AcEditCopy: TEditCopy;
|
|
AcEditCut: TEditCut;
|
|
AcEditPaste: TEditPaste;
|
|
ImageList: TImageList;
|
|
HiResImages: TImageList;
|
|
Label1: TLabel;
|
|
LargeImageList: TImageList;
|
|
MainMenu: TMainMenu;
|
|
MenuItem1: TMenuItem;
|
|
MenuItem10: TMenuItem;
|
|
MenuItem11: TMenuItem;
|
|
MenuItem12: TMenuItem;
|
|
MenuItem13: TMenuItem;
|
|
MenuItem14: TMenuItem;
|
|
MenuItem15: TMenuItem;
|
|
MenuItem16: TMenuItem;
|
|
MenuItem17: TMenuItem;
|
|
MenuItem18: TMenuItem;
|
|
MenuItem19: TMenuItem;
|
|
MenuItem2: TMenuItem;
|
|
MenuItem20: TMenuItem;
|
|
MenuItem21: TMenuItem;
|
|
MenuItem22: TMenuItem;
|
|
MenuItem23: TMenuItem;
|
|
MenuItem24: TMenuItem;
|
|
MenuItem25: TMenuItem;
|
|
MenuItem26: TMenuItem;
|
|
MenuItem27: TMenuItem;
|
|
MenuItem28: TMenuItem;
|
|
MenuItem29: TMenuItem;
|
|
MenuItem3: TMenuItem;
|
|
MenuItem30: TMenuItem;
|
|
MenuItem31: TMenuItem;
|
|
MenuItem4: TMenuItem;
|
|
MenuItem5: TMenuItem;
|
|
MenuItem6: TMenuItem;
|
|
MenuItem7: TMenuItem;
|
|
MenuItem8: TMenuItem;
|
|
MenuItem9: TMenuItem;
|
|
Panel1: TPanel;
|
|
SpkLargeButton4: TSpkLargeButton;
|
|
SpkPane2: TSpkPane;
|
|
SpkPane4: TSpkPane;
|
|
SpkSmallButton10: TSpkSmallButton;
|
|
SpkSmallButton11: TSpkSmallButton;
|
|
SpkSmallButton4: TSpkSmallButton;
|
|
SpkSmallButton6: TSpkSmallButton;
|
|
SpkSmallButton8: TSpkSmallButton;
|
|
SpkSmallButton9: TSpkSmallButton;
|
|
SpkTab4: TSpkTab;
|
|
SpkTab5: TSpkTab;
|
|
StyleMenu: TPopupMenu;
|
|
SpkCheckbox1: TSpkCheckbox;
|
|
SpkLargeButton1: TSpkLargeButton;
|
|
SpkLargeButton2: TSpkLargeButton;
|
|
SpkLargeButton3: TSpkLargeButton;
|
|
SpkPane1: TSpkPane;
|
|
SpkPane3: TSpkPane;
|
|
SpkPane5: TSpkPane;
|
|
SpkPane6: TSpkPane;
|
|
SpkRadioButton1: TSpkRadioButton;
|
|
SpkRadioButton2: TSpkRadioButton;
|
|
SpkSmallButton1: TSpkSmallButton;
|
|
SpkSmallButton2: TSpkSmallButton;
|
|
SpkSmallButton3: TSpkSmallButton;
|
|
SpkSmallButton5: TSpkSmallButton;
|
|
SpkSmallButton7: TSpkSmallButton;
|
|
SpkTab1: TSpkTab;
|
|
SpkTab2: TSpkTab;
|
|
SpkTab3: TSpkTab;
|
|
SpkToolbar1: TSpkToolbar;
|
|
ToolBar1: TToolBar;
|
|
ToolButton1: TToolButton;
|
|
ToolButton10: TToolButton;
|
|
ToolButton11: TToolButton;
|
|
ToolButton12: TToolButton;
|
|
ToolButton13: TToolButton;
|
|
ToolButton14: TToolButton;
|
|
ToolButton15: TToolButton;
|
|
ToolButton2: TToolButton;
|
|
ToolButton3: TToolButton;
|
|
ToolButton4: TToolButton;
|
|
ToolButton5: TToolButton;
|
|
ToolButton6: TToolButton;
|
|
ToolButton7: TToolButton;
|
|
ToolButton8: TToolButton;
|
|
ToolButton9: TToolButton;
|
|
procedure AcAboutExecute(Sender: TObject);
|
|
procedure AcAutoSaveExecute(Sender: TObject);
|
|
procedure AcBoldExecute(Sender: TObject);
|
|
procedure AcCenterExecute(Sender: TObject);
|
|
procedure AcClassicalGUIExecute(Sender: TObject);
|
|
procedure AcEditCopyExecute(Sender: TObject);
|
|
procedure AcEditCutExecute(Sender: TObject);
|
|
procedure AcEditPasteExecute(Sender: TObject);
|
|
procedure AcItalicExecute(Sender: TObject);
|
|
procedure AcLeftJustifyExecute(Sender: TObject);
|
|
procedure AcOpenExecute(Sender: TObject);
|
|
procedure AcQuitExecute(Sender: TObject);
|
|
procedure AcRibbonGUIExecute(Sender: TObject);
|
|
procedure AcRightJustifyExecute(Sender: TObject);
|
|
procedure AcSaveExecute(Sender: TObject);
|
|
procedure AcSaveNowExecute(Sender: TObject);
|
|
procedure AcUnderlineExecute(Sender: TObject);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure StyleMenuClick(Sender: TObject);
|
|
private
|
|
{ private declarations }
|
|
procedure LoadFromIni;
|
|
procedure SaveToIni;
|
|
procedure SetStyle(AStyle: TSpkStyle);
|
|
procedure SetUserInterface(Ribbon:boolean);
|
|
public
|
|
{ public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
inifiles, unit2;
|
|
|
|
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.AcClassicalGUIExecute(Sender: TObject);
|
|
begin
|
|
SetUserInterface(false);
|
|
end;
|
|
|
|
procedure TForm1.AcAboutExecute(Sender: TObject);
|
|
var
|
|
F: TAboutForm;
|
|
begin
|
|
F := TAboutForm.Create(nil);
|
|
try
|
|
F.ShowModal;
|
|
finally
|
|
F.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.AcAutoSaveExecute(Sender: TObject);
|
|
begin
|
|
// Checked is handled by "AutoCheck". Need this method to have the action enabled.
|
|
end;
|
|
|
|
procedure TForm1.AcBoldExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Bold" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcCenterExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Center" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcEditCopyExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Copy" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcEditCutExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Cut" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcEditPasteExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Paste" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcItalicExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Italic" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcLeftJustifyExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Left-justify" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcOpenExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Open" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcQuitExecute(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TForm1.AcRibbonGUIExecute(Sender: TObject);
|
|
begin
|
|
SetUserInterface(true);
|
|
end;
|
|
|
|
procedure TForm1.AcRightJustifyExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Right-justify" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcSaveExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Save" clicked';
|
|
end;
|
|
|
|
procedure TForm1.AcSaveNowExecute(Sender: TObject);
|
|
begin
|
|
SaveToIni;
|
|
end;
|
|
|
|
procedure TForm1.AcUnderlineExecute(Sender: TObject);
|
|
begin
|
|
Label1.Caption := '"Underline" clicked';
|
|
end;
|
|
|
|
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
begin
|
|
if CanClose then
|
|
if MessageDlg('Do you really want to close this application?', mtConfirmation,
|
|
[mbYes, mbNo], 0) <> mrYes
|
|
then
|
|
CanClose := false;
|
|
if CanClose then
|
|
if AcAutoSave.Checked then
|
|
SaveToIni;
|
|
end;
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
SetUserInterface(true);
|
|
Label1.Caption := '';
|
|
LoadFromIni;
|
|
end;
|
|
|
|
procedure TForm1.LoadFromIni;
|
|
var
|
|
ini: TCustomIniFile;
|
|
begin
|
|
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
|
|
try
|
|
SetUserInterface(ini.ReadBool('MainForm', 'RibbonInterface', AcRibbonGUI.Checked));
|
|
SpkToolbar1.Style := TSpkStyle(ini.ReadInteger('MainForm', 'RibbonStyle', 0));
|
|
SetStyle(SpkToolbar1.Style);
|
|
finally
|
|
ini.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.StyleMenuClick(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
// SpkToolbar1.Style := TSpkStyle((Sender as TMenuItem).Tag);
|
|
for i:=0 to StyleMenu.Items.Count-1 do
|
|
StyleMenu.Items[i].Checked := StyleMenu.Items[i] = TMenuItem(Sender);
|
|
SetStyle(TSpkStyle((Sender as TMenuItem).Tag));
|
|
end;
|
|
|
|
procedure TForm1.SetStyle(AStyle: TSpkStyle);
|
|
begin
|
|
SpkToolbar1.Style := AStyle;
|
|
case SpkToolbar1.Style of
|
|
spkOffice2007Blue : SpkToolbar1.Color := clSkyBlue;
|
|
spkOffice2007Silver : SpkToolbar1.Color := clWhite;
|
|
spkOffice2007SilverTurquoise : SpkToolbar1.Color := clWhite;
|
|
spkMetroLight : SpkToolbar1.Color := clSilver;
|
|
spkMetroDark : SpkToolbar1.Color := $080808;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.SaveToIni;
|
|
var
|
|
ini: TCustomIniFile;
|
|
begin
|
|
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
|
|
try
|
|
ini.WriteBool('MainForm', 'RibbonInterface', AcRibbonGUI.Checked);
|
|
ini.WriteInteger('MainForm', 'RibbonStyle', ord(SpkToolbar1.Style));
|
|
finally
|
|
ini.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.SetUserInterface(Ribbon: boolean);
|
|
begin
|
|
if Ribbon then begin
|
|
Menu := nil;
|
|
Toolbar1.Hide;
|
|
SpkToolbar1.Show;
|
|
AcRibbonGUI.Checked := true;
|
|
end else begin
|
|
SpkToolbar1.Hide;
|
|
Menu := MainMenu;
|
|
Toolbar1.Show;
|
|
AcClassicalGUI.Checked := true;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|