123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- {
- TIGCC IDE
- Copyright (C) 2000-2004 Sebastian Reichelt
- Copyright (C) 2006 Kevin Kofler
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- }
- unit PreferencesUnit;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ExtCtrls, ComCtrls, SourceEditUnit{$IFDEF CODINGEXT}, PrefFrame{$ENDIF};
- type
- TPreferencesForm = class(TForm)
- OKButton: TButton;
- CancelButton: TButton;
- ColorDlg: TColorDialog;
- FontDlg: TFontDialog;
- PageController: TPageControl;
- GeneralSheet: TTabSheet;
- StopCompilationBox: TCheckBox;
- FlatButtonsCheckBox: TCheckBox;
- MenuBitmapsCheckBox: TCheckBox;
- AutoSaveCheckBox: TCheckBox;
- EditorSheet: TTabSheet;
- Label2: TLabel;
- CTabSizeEdit: TEdit;
- ColorCheckBox: TCheckBox;
- ChangeColorButton: TButton;
- Label3: TLabel;
- ChangeFontButton: TButton;
- FontLabel: TPanel;
- SyntaxHighlightingSheet: TTabSheet;
- Label4: TLabel;
- ASMTabSizeEdit: TEdit;
- LanguageSelectionBox: TComboBox;
- Label5: TLabel;
- SyntaxEnabledBox: TCheckBox;
- Button1: TButton;
- Button2: TButton;
- Button3: TButton;
- Button4: TButton;
- Button5: TButton;
- Button6: TButton;
- ObjectTree: TTreeView;
- Button7: TButton;
- Button8: TButton;
- Button9: TButton;
- OKTimer: TTimer;
- OpenFolderBox: TCheckBox;
- DeleteObjectFilesBox: TCheckBox;
- ResetButton: TButton;
- OnFlyCheckBox: TCheckBox;
- DeleteErrorsCheckBox: TCheckBox;
- AutoBlockCheckBox: TCheckBox;
- SplitFilesCheckBox: TCheckBox;
- DeleteAssemblyFilesBox: TCheckBox;
- AllowImplicitCheckBox: TCheckBox;
- AutoNewsCheckBox: TCheckBox;
- TransferSheet: TTabSheet;
- TargetBox: TGroupBox;
- VTIBox: TRadioButton;
- TIEmuBox: TRadioButton;
- RealCalcBox: TRadioButton;
- PortBox: TGroupBox;
- PortCOM1Box: TRadioButton;
- PortCOM2Box: TRadioButton;
- PortCOM3Box: TRadioButton;
- PortCOM4Box: TRadioButton;
- CableBox: TGroupBox;
- CableBlackBox: TRadioButton;
- CableGrayBox: TRadioButton;
- NoneBox: TRadioButton;
- VTIPathEdit: TEdit;
- VTIPathBrowseButton: TButton;
- TIEmuPathEdit: TEdit;
- TIEmuPathBrowseButton: TButton;
- BrowseDlg: TOpenDialog;
- DragDropEditCheckBox: TCheckBox;
- RemoveTrailingSpcCheckBox: TCheckBox;
- JumpToErrorBox: TCheckBox;
- procedure ColorCheckBoxClick(Sender: TObject);
- procedure ChangeColorButtonClick(Sender: TObject);
- procedure ChangeFontButtonClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure LanguageSelectionBoxChange(Sender: TObject);
- procedure ObjectTreeChange(Sender: TObject; Node: TTreeNode);
- procedure SyntaxEnabledBoxClick(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure Button6Click(Sender: TObject);
- procedure Button5Click(Sender: TObject);
- procedure ObjectTreeKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure EditItem(Sender: TObject);
- procedure Button7Click(Sender: TObject);
- procedure Button8Click(Sender: TObject);
- procedure ObjectTreeEdited(Sender: TObject; Node: TTreeNode;
- var S: String);
- procedure ObjectTreeEditing(Sender: TObject; Node: TTreeNode;
- var AllowEdit: Boolean);
- procedure OKTimerTimer(Sender: TObject);
- procedure ResetButtonClick(Sender: TObject);
- procedure PageControllerChange(Sender: TObject);
- procedure TargetBoxClick(Sender: TObject);
- procedure VTIPathBrowseButtonClick(Sender: TObject);
- procedure TIEmuPathBrowseButtonClick(Sender: TObject);
- private
- public
- BackColor: TColor;
- EditorFont: TFont;
- SyntaxC: TSyntaxColoring;
- SyntaxAsmGNU: TSyntaxColoring;
- SyntaxAsm: TSyntaxColoring;
- SyntaxQuill: TSyntaxColoring;
- Syntax: TSyntaxColoring;
- SyntaxTabClicked: Boolean;
- {$IFDEF CODINGEXT}
- procedure InitCodingExt;
- {$ENDIF}
- end;
- implementation
- {$R *.DFM}
- uses
- MasterUnit,
- UtilsDos, UtilsWin,
- MainUnit, StyleSelectionUnit, ColorsUnit, CustomStyleUnit, WordListUnit;
- procedure TPreferencesForm.ColorCheckBoxClick(Sender: TObject);
- begin
- ChangeColorButton.Enabled := ColorCheckBox.Checked;
- end;
- procedure TPreferencesForm.ChangeColorButtonClick(Sender: TObject);
- begin
- with ColorDlg do begin
- Color := BackColor;
- if Execute then
- BackColor := Color;
- end;
- end;
- procedure TPreferencesForm.ChangeFontButtonClick(Sender: TObject);
- begin
- with FontDlg do begin
- Font.Assign (EditorFont);
- if Execute then begin
- EditorFont.Assign (Font);
- FontLabel.Caption := EditorFont.Name;
- FontLabel.Font.Assign (EditorFont);
- end;
- end;
- end;
- procedure TPreferencesForm.FormCreate(Sender: TObject);
- begin
- EditorFont := TFont.Create;
- SyntaxC := TSyntaxColoring.Create (nil);
- SyntaxAsm := TSyntaxColoring.Create (nil);
- SyntaxAsmGNU := TSyntaxColoring.Create (nil);
- SyntaxQuill := TSyntaxColoring.Create (nil);
- if ssA68k in SpecialSupport then
- LanguageSelectionBox.Items.Add ('A68k ASM Files');
- if ssQuill in SpecialSupport then
- LanguageSelectionBox.Items.Add ('Quill Files');
- LanguageSelectionBox.ItemIndex := 0;
- {$IFDEF CODINGEXT}
- InitCodingExt;
- {$ENDIF}
- end;
- procedure TPreferencesForm.FormDestroy(Sender: TObject);
- begin
- SyntaxQuill.Free;
- SyntaxAsmGNU.Free;
- SyntaxAsm.Free;
- SyntaxC.Free;
- EditorFont.Free;
- end;
- procedure TPreferencesForm.FormShow(Sender: TObject);
- begin
- SyntaxTabClicked := PageController.ActivePage = SyntaxHighlightingSheet;
- TargetBoxClick (Sender);
- ColorCheckBoxClick (Sender);
- FontLabel.Caption := EditorFont.Name;
- FontLabel.Font.Assign (EditorFont);
- LanguageSelectionBoxChange (Sender);
- end;
- procedure TPreferencesForm.LanguageSelectionBoxChange(Sender: TObject);
- label
- Done;
- var
- I: Integer;
- begin
- I := LanguageSelectionBox.ItemIndex;
- if I <= 0 then begin
- Syntax := SyntaxC;
- goto Done;
- end;
- Dec (I);
- if I <= 0 then begin
- Syntax := SyntaxAsmGNU;
- goto Done;
- end;
- if ssA68k in SpecialSupport then begin
- Dec (I);
- if I <= 0 then begin
- Syntax := SyntaxAsm;
- goto Done;
- end;
- end;
- if ssQuill in SpecialSupport then begin
- Dec (I);
- if I <= 0 then begin
- Syntax := SyntaxQuill;
- goto Done;
- end;
- end;
- Done:
- SyntaxEnabledBox.Checked := Syntax.Enabled;
- SyntaxEnabledBoxClick (Sender);
- ObjectTree.Items.BeginUpdate;
- with ObjectTree.Items [0] do begin
- Item[0].DeleteChildren;
- Item[1].DeleteChildren;
- end;
- with Syntax do begin
- with CustomStyles do
- for I := 0 to Count - 1 do
- ObjectTree.Items.AddChildObject (ObjectTree.Items[0].Item[0], Items[I].Caption, Pointer (Items [I]));
- with WordLists do
- for I := 0 to Count - 1 do
- ObjectTree.Items.AddChildObject (ObjectTree.Items[0].Item[1], Items[I].Caption, Pointer (Items [I]));
- end;
- ObjectTree.FullExpand;
- ObjectTree.Items.EndUpdate;
- ObjectTreeChange (Sender, nil);
- end;
- procedure TPreferencesForm.ObjectTreeChange(Sender: TObject;
- Node: TTreeNode);
- begin
- Button9.Enabled := SyntaxEnabledBox.Checked and Assigned (ObjectTree.Selected) and Assigned (ObjectTree.Selected.Data);
- end;
- procedure TPreferencesForm.SyntaxEnabledBoxClick(Sender: TObject);
- begin
- Syntax.Enabled := SyntaxEnabledBox.Checked;
- Button1.Enabled := SyntaxEnabledBox.Checked;
- Button2.Enabled := SyntaxEnabledBox.Checked;
- Button3.Enabled := SyntaxEnabledBox.Checked;
- Button4.Enabled := SyntaxEnabledBox.Checked;
- Button5.Enabled := SyntaxEnabledBox.Checked;
- Button6.Enabled := SyntaxEnabledBox.Checked;
- Button7.Enabled := SyntaxEnabledBox.Checked;
- Button8.Enabled := SyntaxEnabledBox.Checked;
- ObjectTree.Enabled := SyntaxEnabledBox.Checked;
- ObjectTreeChange (Sender, nil);
- end;
- procedure TPreferencesForm.Button1Click(Sender: TObject);
- begin
- ColorDlg.Color := Syntax.NumberColor;
- if ColorDlg.Execute then
- Syntax.NumberColor := ColorDlg.Color;
- end;
- procedure TPreferencesForm.Button3Click(Sender: TObject);
- begin
- ColorDlg.Color := Syntax.SymbolColor;
- if ColorDlg.Execute then
- Syntax.SymbolColor := ColorDlg.Color;
- end;
- procedure TPreferencesForm.Button2Click(Sender: TObject);
- begin
- with TStyleSelectionForm.Create (Self) do try
- CustomStyle := Syntax.NumberCustomStyle;
- Style := Syntax.NumberStyle;
- if ShowModal = mrOK then begin
- Syntax.NumberCustomStyle := CustomStyle;
- Syntax.NumberStyle := Style;
- end;
- finally
- Free;
- end;
- end;
- procedure TPreferencesForm.Button4Click(Sender: TObject);
- begin
- with TStyleSelectionForm.Create (Self) do try
- CustomStyle := Syntax.SymbolCustomStyle;
- Style := Syntax.SymbolStyle;
- if ShowModal = mrOK then begin
- Syntax.SymbolCustomStyle := CustomStyle;
- Syntax.SymbolStyle := Style;
- end;
- finally
- Free;
- end;
- end;
- procedure TPreferencesForm.Button6Click(Sender: TObject);
- begin
- with TStyleSelectionForm.Create (Self) do try
- CustomStyle := Syntax.ParenthesisCustomStyle;
- Style := Syntax.ParenthesisStyle;
- if ShowModal = mrOK then begin
- Syntax.ParenthesisCustomStyle := CustomStyle;
- Syntax.ParenthesisStyle := Style;
- end;
- finally
- Free;
- end;
- end;
- procedure TPreferencesForm.Button5Click(Sender: TObject);
- begin
- with TMultipleColorsForm.Create (Self) do try
- ColorBox.Items.Assign (Syntax.ParenthesisColors);
- if ShowModal = mrOK then
- Syntax.ParenthesisColors.Assign (ColorBox.Items);
- finally
- Free;
- end;
- end;
- procedure TPreferencesForm.ObjectTreeKeyDown(Sender: TObject;
- var Key: Word; Shift: TShiftState);
- var
- ItemData: TCollectionItem;
- begin
- if Key = vk_Delete then begin
- if Assigned (ObjectTree.Selected) and Assigned (ObjectTree.Selected.Data) then begin
- ItemData := TCollectionItem (ObjectTree.Selected.Data);
- ObjectTree.Selected.Delete;
- ItemData.Free;
- end;
- end;
- end;
- procedure TPreferencesForm.EditItem(Sender: TObject);
- var
- ItemData: TCollectionItem;
- begin
- if Assigned (ObjectTree.Selected) and Assigned (ObjectTree.Selected.Data) then begin
- ItemData := TCollectionItem (ObjectTree.Selected.Data);
- if ItemData is TCustomStyle then
- with TCustomStyleForm.Create (Self) do try
- Style.Assign (ItemData);
- if ShowModal = mrOK then
- ItemData.Assign (Style);
- finally
- Free;
- end
- else if ItemData is TWordList then
- with TWordListForm.Create (Self) do try
- List.Assign (ItemData);
- if ShowModal = mrOK then
- ItemData.Assign (List);
- finally
- Free;
- end;
- end;
- end;
- procedure TPreferencesForm.Button7Click(Sender: TObject);
- var
- ItemData: TCustomStyle;
- begin
- if ObjectTree.Enabled then
- ObjectTree.SetFocus;
- ItemData := Syntax.CustomStyles.Add;
- ItemData.Caption := 'New Style';
- with ObjectTree.Items.AddChildObject (ObjectTree.Items[0].Item[0], ItemData.Caption, Pointer (ItemData)) do begin
- MakeVisible;
- EditText;
- end;
- end;
- procedure TPreferencesForm.Button8Click(Sender: TObject);
- var
- ItemData: TWordList;
- begin
- if ObjectTree.Enabled then
- ObjectTree.SetFocus;
- ItemData := Syntax.WordLists.Add;
- ItemData.Caption := 'New List';
- with ObjectTree.Items.AddChildObject (ObjectTree.Items[0].Item[1], ItemData.Caption, Pointer (ItemData)) do begin
- MakeVisible;
- EditText;
- end;
- end;
- procedure TPreferencesForm.ObjectTreeEdited(Sender: TObject;
- Node: TTreeNode; var S: String);
- var
- ItemData: TCollectionItem;
- begin
- OKButton.Enabled := True;
- if Assigned (Node.Data) then begin
- ItemData := TCollectionItem (Node.Data);
- if ItemData is TCustomStyle then
- TCustomStyle(ItemData).Caption := S;
- if ItemData is TWordList then
- TWordList(ItemData).Caption := S;
- end;
- ObjectTree.Selected := Node;
- end;
- procedure TPreferencesForm.ObjectTreeEditing(Sender: TObject;
- Node: TTreeNode; var AllowEdit: Boolean);
- begin
- AllowEdit := Assigned (Node.Data);
- if AllowEdit then begin
- OKButton.Enabled := False;
- OKTimer.Enabled := True;
- end;
- end;
- procedure TPreferencesForm.OKTimerTimer(Sender: TObject);
- begin
- if not ObjectTree.IsEditing then begin
- OKButton.Enabled := True;
- OKTimer.Enabled := False;
- end;
- end;
- procedure TPreferencesForm.ResetButtonClick(Sender: TObject);
- begin
- if Syntax = SyntaxC then
- Syntax.Assign (MainForm.SyntaxCBackup)
- else if Syntax = SyntaxAsmGNU then
- Syntax.Assign (MainForm.SyntaxAsmGNUBackup)
- else if Syntax = SyntaxAsm then
- Syntax.Assign (MainForm.SyntaxAsmBackup)
- else if Syntax = SyntaxQuill then
- Syntax.Assign (MainForm.SyntaxQuillBackup);
- LanguageSelectionBoxChange (Sender);
- end;
- procedure TPreferencesForm.PageControllerChange(Sender: TObject);
- begin
- if PageController.ActivePage = SyntaxHighlightingSheet then
- SyntaxTabClicked := True;
- end;
- procedure TPreferencesForm.TargetBoxClick(Sender: TObject);
- begin
- VTIPathEdit.Enabled := VTIBox.Checked;
- VTIPathBrowseButton.Enabled := VTIPathEdit.Enabled;
- TIEmuPathEdit.Enabled := TIEmuBox.Checked;
- TIEmuPathBrowseButton.Enabled := TIEmuPathEdit.Enabled;
- PortBox.Enabled := RealCalcBox.Checked;
- PortCOM1Box.Enabled := PortBox.Enabled;
- PortCOM2Box.Enabled := PortBox.Enabled;
- PortCOM3Box.Enabled := PortBox.Enabled;
- PortCOM4Box.Enabled := PortBox.Enabled;
- CableBox.Enabled := PortBox.Enabled;
- CableBlackBox.Enabled := CableBox.Enabled;
- CableGrayBox.Enabled := CableBox.Enabled;
- end;
- procedure TPreferencesForm.VTIPathBrowseButtonClick(Sender: TObject);
- begin
- with BrowseDlg do begin
- FileName := VTIPathEdit.Text;
- if Execute then
- VTIPathEdit.Text := FileName;
- end;
- end;
- procedure TPreferencesForm.TIEmuPathBrowseButtonClick(Sender: TObject);
- begin
- with BrowseDlg do begin
- FileName := TIEmuPathEdit.Text;
- if Execute then
- TIEmuPathEdit.Text := FileName;
- end;
- end;
- {$IFDEF CODINGEXT}
- procedure TPreferencesForm.InitCodingExt;
- var
- Tab: TTabSheet;
- Frame: TCodingExt;
- begin
- Tab := TTabSheet.Create(Self);
- Tab.PageControl := PageController;
- Tab.Caption := 'Co&ding';
- Frame := TCodingExt.Create(Self);
- Frame.Parent := Tab;
- Tab.OnShow := Frame.OnShow;
- end;
- {$ENDIF}
- end.
|