summaryrefslogtreecommitdiff
path: root/UPreferences.pas
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2008-06-07 20:34:49 +0200
committerTomas Bzatek <tbzatek@users.sourceforge.net>2008-06-07 20:34:49 +0200
commitecde167da74c86bc047aaf84c5e548cf65a5da98 (patch)
treea015dfda84f28a65811e3aa0d369f8f211ec8c60 /UPreferences.pas
downloadtuxcmd-ecde167da74c86bc047aaf84c5e548cf65a5da98.tar.xz
Diffstat (limited to 'UPreferences.pas')
-rw-r--r--UPreferences.pas822
1 files changed, 822 insertions, 0 deletions
diff --git a/UPreferences.pas b/UPreferences.pas
new file mode 100644
index 0000000..ca4733f
--- /dev/null
+++ b/UPreferences.pas
@@ -0,0 +1,822 @@
+(*
+ Tux Commander - UPreferences - The Preferences dialog
+ Copyright (C) 2006 Tomas Bzatek <tbzatek@users.sourceforge.net>
+ Check for updates on tuxcmd.sourceforge.net
+
+ 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*)
+unit UPreferences;
+
+interface
+
+uses
+ glib2, gtk2, pango, SysUtils, Types, Classes, Variants, GTKControls, GTKForms, GTKStdCtrls, GTKExtCtrls, GTKConsts, GTKView,
+ GTKUtils, GTKDialogs, GTKPixbuf, GTKClasses, GTKMenus,
+ UCoreClasses, UGnome;
+
+type
+ TFPreferences = class(TGTKDialog)
+ TitleFrame, ListFontFrame: TGTKFrame;
+ TitleLabel: TGTKLabel;
+ TitleEventBox: TGTKEventBox;
+ TitleIcon: TGTKImage;
+ TitleHBox: TGTKHBox;
+ Notebook: TGTKNotebook;
+ GeneralPage, ColorsPage, FontsPage, PanelsPage, ApplicationsPage, ExperimentalPage: TGTKVBox;
+ RowHeightLabel, NumHistoryItemsLabel, ViewerLabel, EditorLabel, TerminalLabel, GeneralLabel2, ExternalAppsLabel, FontsLabel2,
+ ListFontLabel, ListFontPreview, ColorsLabel2, ForegroundLabel, BackgroundLabel, PanelsLabel2, ApplicationsLabel2,
+ ExperimentalLabel2, PanelsLabel3, PanelsLabel4: TGTKLabel;
+ NormalItemFGColorLabel, ActiveItemFGColorLabel, InactiveItemFGColorLabel, SelectedItemFGColorLabel, LinkItemFGColorLabel,
+ DotFileItemFGColorLabel: TGTKLabel;
+ ExperimentalWarningLabel: TGTKLabel;
+ ExperimentalWarningIcon: TGTKImage;
+ ClearROAttr, DisableMouseRename, ShowFiletypeIcons, DefaultFontCheckBox, DefaultRowHeightCheckBox, LynxLikeMotionCheckBox,
+ DirsInBoldCheckBox, NewStyleAltOCheckBox, WMCompatModeCheckBox, DisableFileTipsCheckBox, DisableDirectoryBracketsCheckBox,
+ InsertMovesDownCheckBox, SpaceMovesDownCheckBox, SelectAllDirectoriesCheckBox, ShowFuncButtonsCheckBox,
+ OctalPermissionsCheckBox, FocusRefreshCheckBox, CompatUseLibcSystemCheckBox: TGTKCheckButton;
+ NormalItemFGColorDefault, ActiveItemFGColorDefault, InactiveItemFGColorDefault,
+ LinkItemFGColorDefault, DotFileItemFGColorDefault: TGTKCheckButton;
+ HBox1, HBox2, HBox3, HBox4: TGTKHBox;
+ VBox1: TGTKVBox;
+ ViewerCombo, EditorCombo, TerminalCombo: TGTKCombo;
+ ViewerBrowseButton, EditorBrowseButton, TerminalBrowseButton, ChangeFontButton: TGTKButton;
+ NormalItemFGColorButton, ActiveItemFGColorButton, InactiveItemFGColorButton, SelectedItemFGColorButton, LinkItemFGColorButton,
+ DotFileItemFGColorButton, NormalItemBGColorButton, ActiveItemBGColorButton, InactiveItemBGColorButton: TGnomeColorButton;
+ Table1, Table2, Table3, Table4, Table5, Table6: TGTKTable;
+ RowHeightSpinEdit, NumHistoryItemsSpinEdit: TGTKSpinEdit;
+ SizeFormatLabel: TGTKLabel;
+ SizeFormatOptionMenu: TGTKOptionMenu;
+ miSizeFormat1, miSizeFormat2, miSizeFormat3, miSizeFormat4, miSizeFormat5, miSizeFormat6: TGTKMenuItem;
+ UseInternalViewerCheckBox: TGTKCheckButton;
+ ViewerLabel2, EditorLabel2, TerminalLabel2, CmdLineBehaviourLabel: TGTKLabel;
+ ViewerOptionMenu, EditorOptionMenu, TerminalOptionMenu: TGTKOptionMenu;
+ miViewerTerminalDetect, miViewerAlwaysTerminal, miViewerNoTerminal,
+ miEditorTerminalDetect, miEditorAlwaysTerminal, miEditorNoTerminal,
+ miTerminalDetect, miAlwaysTerminal, miNoTerminal: TGTKMenuItem;
+ ShowTextUIDsCheckBox: TGTKCheckButton;
+ procedure FormCreate(Sender: TObject); override;
+ procedure FormDestroy(Sender: TObject);
+ procedure FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);
+ procedure ViewerBrowseButtonClick(Sender: TObject);
+ procedure DefaultFontCheckBoxToggled(Sender: TObject);
+ procedure ChangeFontButtonClick(Sender: TObject);
+ procedure ColorButtonDefaultsToggled(Sender: TObject);
+ procedure DefaultRowHeightCheckBoxToggled(Sender: TObject);
+ procedure UseInternalViewerCheckBoxToggled(Sender: TObject);
+ private
+ DefaultGTKFont, LocalListFont: string;
+ public
+ RebuildListViews, RebuildIcons: boolean;
+ procedure AssignDefaultValues;
+ procedure SaveSettings;
+ end;
+
+var
+ FPreferences: TFPreferences;
+
+implementation
+
+uses ULocale, UFileAssoc, UCoreUtils, UConfig;
+
+
+procedure TFPreferences.FormCreate(Sender: TObject);
+var i: integer;
+begin
+ SetDefaultSize(450, 500);
+ Caption := LANGPreferences_Caption;
+ Buttons := [mbOK, mbCancel];
+ ShowSeparator := False;
+ TitleEventBox := TGTKEventBox.Create(Self);
+ TitleLabel := TGTKLabel.Create(Self);
+ TitleLabel.Caption := LANGPreferences_TitleLabel_Caption;
+ TitleLabel.UseMarkup := True;
+ TitleLabel.XAlign := 0;
+ TitleLabel.XPadding := 0;
+ TitleLabel.YPadding := 3;
+ TitleEventBox.ControlState := csPrelight;
+ TitleFrame := TGTKFrame.CreateWithoutLabel(Self);
+ TitleFrame.ShadowType := stShadowOut;
+ TitleIcon := TGTKImage.Create(Self);
+ TitleIcon.SetFromStock('gtk-preferences', isLargeToolbar);
+ TitleHBox := TGTKHBox.Create(Self);
+ TitleHBox.Homogeneous := False;
+ TitleHBox.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ TitleHBox.AddControlEx(TitleIcon, False, False, 0);
+ TitleHBox.AddControlEx(TitleLabel, True, True, 10);
+ TitleEventBox.AddControl(TitleHBox);
+ TitleFrame.AddControl(TitleEventBox);
+ ClientArea.AddControlEx(TitleFrame, False, True, 0);
+
+ Notebook := TGTKNotebook.Create(Self);
+ Notebook.BorderWidth := 10;
+ ClientArea.AddControlEx(Notebook, True, True, 0);
+
+ GeneralPage := TGTKVBox.Create(Notebook);
+ Notebook.AppendPage(GeneralPage, LANGPreferences_GeneralPage);
+
+ PanelsPage := TGTKVBox.Create(Notebook);
+ Notebook.AppendPage(PanelsPage, LANGPreferencesPanelsPage);
+
+ ApplicationsPage := TGTKVBox.Create(Notebook);
+ Notebook.AppendPage(ApplicationsPage, LANGPreferencesApplicationsPage);
+
+ FontsPage := TGTKVBox.Create(Notebook);
+ Notebook.AppendPage(FontsPage, LANGPreferences_FontsPage);
+
+ ColorsPage := TGTKVBox.Create(Notebook);
+ Notebook.AppendPage(ColorsPage, LANGPreferences_ColorsPage);
+
+ ExperimentalPage := TGTKVBox.Create(Notebook);
+ Notebook.AppendPage(ExperimentalPage, LANGPreferencesExperimentalPage);
+
+
+ // ********* PAGE General
+
+ GeneralPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ GeneralLabel2 := TGTKLabel.Create(Self);
+ GeneralLabel2.XAlign := 0;
+ GeneralLabel2.XPadding := 10;
+ GeneralLabel2.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferences_GeneralPage]);
+ GeneralLabel2.UseMarkup := True;
+ GeneralPage.AddControlEx(GeneralLabel2, False, False, 5);
+ Table2 := TGTKTable.Create(Self);
+ Table2.SetRowColCount(8, 5);
+ GeneralPage.AddControlEx(Table2, False, False, 0);
+
+ ClearROAttr := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_ClearReadonlyAttribute);
+ Table2.AddControlEx(1, 0, 3, 1, ClearROAttr, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ SelectAllDirectoriesCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesSelectAllDirectoriesCheckBox_Caption);
+ Table2.AddControlEx(1, 1, 3, 1, SelectAllDirectoriesCheckBox, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ NewStyleAltOCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesNewStyleAltOCheckBox_Caption);
+ NewStyleAltOCheckBox.Tooltip := LANGPreferencesNewStyleAltOCheckBox_Tooltip;
+ Table2.AddControlEx(1, 2, 3, 1, NewStyleAltOCheckBox, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ ShowFuncButtonsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesShowFuncButtonsCheckBox_Caption);
+ Table2.AddControlEx(1, 3, 3, 1, ShowFuncButtonsCheckBox, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+
+ NumHistoryItemsLabel := TGTKLabel.Create(Self);
+ NumHistoryItemsLabel.Caption := LANGPreferences_NumHistoryItems;
+ NumHistoryItemsLabel.XAlign := 0;
+ NumHistoryItemsSpinEdit := TGTKSpinEdit.Create(Self);
+ NumHistoryItemsSpinEdit.Digits := 0;
+ NumHistoryItemsLabel.FocusControl := NumHistoryItemsSpinEdit;
+ NumHistoryItemsLabel.UseUnderline := True;
+ Table2.AddControlEx(0, 4, 1, 1, TGTKVBox.Create(Self), [taoShrink], [taoShrink, taoExpand, taoFill], 15, 2);
+ Table2.AddControlEx(1, 4, 1, 1, NumHistoryItemsLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table2.AddControlEx(2, 4, 1, 1, NumHistoryItemsSpinEdit, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+
+ RowHeightLabel := TGTKLabel.Create(Self);
+ RowHeightLabel.Caption := LANGPreferences_RowHeight;
+ RowHeightLabel.XAlign := 0;
+ RowHeightSpinEdit := TGTKSpinEdit.Create(Self);
+ RowHeightSpinEdit.Digits := 0;
+ RowHeightLabel.FocusControl := RowHeightSpinEdit;
+ RowHeightLabel.UseUnderline := True;
+ DefaultRowHeightCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default);
+ DefaultRowHeightCheckBox.OnToggled := DefaultRowHeightCheckBoxToggled;
+ Table2.AddControlEx(1, 5, 1, 1, RowHeightLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table2.AddControlEx(2, 5, 1, 1, RowHeightSpinEdit, [taoFill, taoExpand], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table2.AddControlEx(3, 5, 1, 1, DefaultRowHeightCheckBox, [taoFill, taoExpand], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table2.AddControlEx(4, 5, 1, 1, TGTKVBox.Create(Self), [taoShrink], [taoShrink, taoExpand, taoFill], 8, 2);
+
+ SizeFormatLabel := TGTKLabel.Create(Self);
+ SizeFormatLabel.Caption := LANGPreferencesSizeFormatLabel_Caption;
+ SizeFormatLabel.XAlign := 0;
+ SizeFormatLabel.UseUnderline := True;
+ SizeFormatOptionMenu := TGTKOptionMenu.Create(Self);
+ SizeFormatLabel.FocusControl := SizeFormatOptionMenu;
+ miSizeFormat1 := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miSizeFormat1.Caption := Format('%s %s', [LANGPreferencesmiSizeFormat1, ANSIToUTF8(FormatFloat('(###,###,###)', 123456))]);
+ miSizeFormat2 := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miSizeFormat2.Caption := '123456';
+ miSizeFormat3 := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miSizeFormat3.Caption := '123,456';
+ miSizeFormat4 := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miSizeFormat4.Caption := '123 456';
+ miSizeFormat5 := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miSizeFormat5.Caption := '123''456';
+ miSizeFormat6 := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miSizeFormat6.Caption := LANGPreferencesmiSizeFormat6;
+ SizeFormatOptionMenu.Items.Add(miSizeFormat1);
+ SizeFormatOptionMenu.Items.Add(miSizeFormat2);
+ SizeFormatOptionMenu.Items.Add(miSizeFormat3);
+ SizeFormatOptionMenu.Items.Add(miSizeFormat4);
+ SizeFormatOptionMenu.Items.Add(miSizeFormat5);
+ SizeFormatOptionMenu.Items.Add(miSizeFormat6);
+ Table2.AddControlEx(1, 6, 1, 1, SizeFormatLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table2.AddControlEx(2, 6, 2, 1, SizeFormatOptionMenu, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+
+ TerminalOptionMenu := TGTKOptionMenu.Create(Self);
+ miTerminalDetect := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miTerminalDetect.Caption := LANGPreferencesAutodetectXApp;
+ miAlwaysTerminal := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miAlwaysTerminal.Caption := LANGPreferencesAlwaysRunInTerminal;
+ miNoTerminal := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miNoTerminal.Caption := LANGPreferencesNeverRunInTerminal;
+ TerminalOptionMenu.Items.Add(miTerminalDetect);
+ TerminalOptionMenu.Items.Add(miAlwaysTerminal);
+ TerminalOptionMenu.Items.Add(miNoTerminal);
+ CmdLineBehaviourLabel := TGTKLabel.Create(Self);
+ CmdLineBehaviourLabel.Caption := LANGPreferencesCmdLineBehaviourLabel_Caption;
+ CmdLineBehaviourLabel.XAlign := 0;
+ CmdLineBehaviourLabel.FocusControl := TerminalOptionMenu;
+ CmdLineBehaviourLabel.UseUnderline := True;
+ Table2.AddControlEx(1, 7, 1, 1, CmdLineBehaviourLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table2.AddControlEx(2, 7, 2, 1, TerminalOptionMenu, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+
+
+ // ********* PAGE Panels
+
+ PanelsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ PanelsLabel2 := TGTKLabel.Create(Self);
+ PanelsLabel2.XAlign := 0;
+ PanelsLabel2.XPadding := 10;
+ PanelsLabel2.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesFeatures]);
+ PanelsLabel2.UseMarkup := True;
+ PanelsPage.AddControlEx(PanelsLabel2, False, False, 5);
+
+ Table5 := TGTKTable.Create(Self);
+ Table5.SetRowColCount(14, 1);
+ PanelsPage.AddControlEx(Table5, False, False, 0);
+
+ DisableMouseRename := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_DisableMouseRenaming);
+ DisableMouseRename.Tooltip := LANGPreferencesDisableMouseRename_Tooltip;
+ Table5.AddControl(0, 0, 1, 1, DisableMouseRename, 30, 2);
+ DisableFileTipsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesDisableFileTipsCheckBox_Caption);
+ DisableFileTipsCheckBox.Tooltip := LANGPreferencesDisableFileTipsCheckBox_Tooltip;
+ Table5.AddControl(0, 1, 1, 1, DisableFileTipsCheckBox, 30, 2);
+ Table5.AddControl(0, 2, 1, 1, TGTKVBox.Create(Self), 0, 7);
+
+ PanelsLabel3 := TGTKLabel.Create(Self);
+ PanelsLabel3.XAlign := 0;
+ PanelsLabel3.XPadding := 0;
+ PanelsLabel3.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesShow]);
+ PanelsLabel3.UseMarkup := True;
+ Table5.AddControl(0, 3, 1, 1, PanelsLabel3, 10, 2);
+
+ ShowFiletypeIcons := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_ShowFiletypeIconsInList);
+ Table5.AddControl(0, 4, 1, 1, ShowFiletypeIcons, 30, 2);
+ DirsInBoldCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesDirsInBoldCheckBox_Caption);
+ Table5.AddControl(0, 5, 1, 1, DirsInBoldCheckBox, 30, 2);
+ DisableDirectoryBracketsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesDisableDirectoryBracketsCheckBox_Caption);
+ Table5.AddControl(0, 6, 1, 1, DisableDirectoryBracketsCheckBox, 30, 2);
+ OctalPermissionsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesOctalPermissionsCheckBox_Caption);
+ OctalPermissionsCheckBox.Tooltip := LANGPreferencesOctalPermissionsCheckBox_Tooltip;
+ Table5.AddControl(0, 7, 1, 1, OctalPermissionsCheckBox, 30, 2);
+ ShowTextUIDsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGShowTextUIDsCheckBox_Caption);
+ ShowTextUIDsCheckBox.Tooltip := LANGShowTextUIDsCheckBox_Tooltip;
+ Table5.AddControl(0, 8, 1, 1, ShowTextUIDsCheckBox, 30, 2);
+ Table5.AddControl(0, 9, 1, 1, TGTKVBox.Create(Self), 0, 7);
+
+ PanelsLabel4 := TGTKLabel.Create(Self);
+ PanelsLabel4.XAlign := 0;
+ PanelsLabel4.XPadding := 0;
+ PanelsLabel4.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesMovement]);
+ PanelsLabel4.UseMarkup := True;
+ Table5.AddControl(0, 10, 1, 1, PanelsLabel4, 10, 2);
+
+ LynxLikeMotionCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesLynxLikeMotionCheckBox_Caption);
+ Table5.AddControl(0, 11, 1, 1, LynxLikeMotionCheckBox, 30, 2);
+ InsertMovesDownCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesInsertMovesDownCheckBox_Caption);
+ Table5.AddControl(0, 12, 1, 1, InsertMovesDownCheckBox, 30, 2);
+ SpaceMovesDownCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesSpaceMovesDownCheckBox_Caption);
+ Table5.AddControl(0, 13, 1, 1, SpaceMovesDownCheckBox, 30, 2);
+
+
+ // ********* PAGE Applications
+
+ ApplicationsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ Table1 := TGTKTable.Create(Self);
+ Table1.SetRowColCount(5, 5);
+ ApplicationsPage.AddControlEx(Table1, False, True, 5);
+
+ ViewerLabel := TGTKLabel.Create(Self);
+ ViewerLabel.XAlign := 0;
+ ViewerLabel.XPadding := 10;
+ ViewerLabel.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesViewer]);
+ ViewerLabel.UseMarkup := True;
+ Table1.AddControlEx(0, 0, 5, 1, ViewerLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 0);
+ Table1.AddControlEx(0, 1, 5, 1, TGTKVBox.Create(Self), [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+
+ ViewerCombo := TGTKCombo.Create(Self);
+ for i := 1 to Length(ConfViewersApps) do
+ ViewerCombo.Items.Append(ConfViewersApps[i]);
+ ViewerBrowseButton := TGTKButton.Create(Self);
+ ViewerBrowseButton.Caption := LANGBrowseButton_Caption;
+ ViewerBrowseButton.OnClick := ViewerBrowseButtonClick;
+ ViewerLabel2 := TGTKLabel.Create(Self);
+ ViewerLabel2.Caption := LANGPreferencesCommandSC;
+ ViewerLabel2.XAlign := 0;
+ ViewerLabel2.FocusControl := ViewerCombo.Entry;
+ ViewerLabel2.UseUnderline := True;
+ UseInternalViewerCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesUseInternalViewer);
+ UseInternalViewerCheckBox.OnToggled := UseInternalViewerCheckBoxToggled;
+ ViewerOptionMenu := TGTKOptionMenu.Create(Self);
+ miViewerTerminalDetect := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miViewerTerminalDetect.Caption := LANGPreferencesAutodetectXApp;
+ miViewerAlwaysTerminal := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miViewerAlwaysTerminal.Caption := LANGPreferencesAlwaysRunInTerminal;
+ miViewerNoTerminal := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miViewerNoTerminal.Caption := LANGPreferencesNeverRunInTerminal;
+ ViewerOptionMenu.Items.Add(miViewerTerminalDetect);
+ ViewerOptionMenu.Items.Add(miViewerAlwaysTerminal);
+ ViewerOptionMenu.Items.Add(miViewerNoTerminal);
+
+ Table1.AddControlEx(0, 2, 1, 1, TGTKVBox.Create(Self), [taoShrink], [taoShrink, taoExpand, taoFill], 12, 2);
+ Table1.AddControlEx(1, 2, 1, 1, ViewerLabel2, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table1.AddControlEx(2, 2, 3, 1, ViewerCombo, [taoExpand, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table1.AddControlEx(4, 3, 1, 1, ViewerBrowseButton, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table1.AddControlEx(3, 3, 1, 1, ViewerOptionMenu, [taoExpand, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table1.AddControlEx(0, 4, 5, 1, UseInternalViewerCheckBox, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 30, 2);
+
+ EditorLabel := TGTKLabel.Create(Self);
+ EditorLabel.XAlign := 0;
+ EditorLabel.XPadding := 10;
+ EditorLabel.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesEditor]);
+ EditorLabel.UseMarkup := True;
+ Table1.AddControlEx(0, 5, 5, 1, TGTKVBox.Create(Self), [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 13);
+ Table1.AddControlEx(0, 6, 5, 1, EditorLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 0);
+ Table1.AddControlEx(0, 7, 5, 1, TGTKVBox.Create(Self), [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+
+ EditorCombo := TGTKCombo.Create(Self);
+ for i := 1 to Length(ConfEditorApps) do
+ EditorCombo.Items.Append(ConfEditorApps[i]);
+ EditorBrowseButton := TGTKButton.Create(Self);
+ EditorBrowseButton.Caption := LANGBrowseButton_Caption;
+ EditorBrowseButton.OnClick := ViewerBrowseButtonClick;
+ EditorLabel2 := TGTKLabel.Create(Self);
+ EditorLabel2.Caption := LANGPreferencesCommandSC;
+ EditorLabel2.XAlign := 0;
+ EditorLabel2.FocusControl := EditorCombo.Entry;
+ EditorLabel2.UseUnderline := True;
+ EditorOptionMenu := TGTKOptionMenu.Create(Self);
+ miEditorTerminalDetect := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miEditorTerminalDetect.Caption := LANGPreferencesAutodetectXApp;
+ miEditorAlwaysTerminal := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miEditorAlwaysTerminal.Caption := LANGPreferencesAlwaysRunInTerminal;
+ miEditorNoTerminal := TGTKMenuItem.CreateTyped(Self, itLabel);
+ miEditorNoTerminal.Caption := LANGPreferencesNeverRunInTerminal;
+ EditorOptionMenu.Items.Add(miEditorTerminalDetect);
+ EditorOptionMenu.Items.Add(miEditorAlwaysTerminal);
+ EditorOptionMenu.Items.Add(miEditorNoTerminal);
+
+ Table1.AddControlEx(0, 8, 1, 1, TGTKVBox.Create(Self), [taoShrink], [taoShrink, taoExpand, taoFill], 12, 2);
+ Table1.AddControlEx(1, 8, 1, 1, EditorLabel2, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table1.AddControlEx(2, 8, 3, 1, EditorCombo, [taoExpand, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table1.AddControlEx(4, 9, 1, 1, EditorBrowseButton, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table1.AddControlEx(3, 9, 1, 1, EditorOptionMenu, [taoExpand, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+
+ TerminalLabel := TGTKLabel.Create(Self);
+ TerminalLabel.XAlign := 0;
+ TerminalLabel.XPadding := 10;
+ TerminalLabel.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesTerminal]);
+ TerminalLabel.UseMarkup := True;
+ Table1.AddControlEx(0, 10, 5, 1, TGTKVBox.Create(Self), [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 13);
+ Table1.AddControlEx(0, 11, 5, 1, TerminalLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 0);
+ Table1.AddControlEx(0, 12, 5, 1, TGTKVBox.Create(Self), [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+
+ TerminalCombo := TGTKCombo.Create(Self);
+ for i := 1 to Length(ConfTerminalApps) do
+ TerminalCombo.Items.Append(ConfTerminalApps[i]);
+ TerminalBrowseButton := TGTKButton.Create(Self);
+ TerminalBrowseButton.Caption := LANGBrowseButton_Caption;
+ TerminalBrowseButton.OnClick := ViewerBrowseButtonClick;
+ TerminalLabel2 := TGTKLabel.Create(Self);
+ TerminalLabel2.Caption := LANGPreferencesCommandSC;
+ TerminalLabel2.XAlign := 0;
+ TerminalLabel2.FocusControl := TerminalCombo.Entry;
+ TerminalLabel2.UseUnderline := True;
+
+ Table1.AddControlEx(0, 13, 1, 1, TGTKVBox.Create(Self), [taoShrink], [taoShrink, taoExpand, taoFill], 12, 2);
+ Table1.AddControlEx(1, 13, 1, 1, TerminalLabel2, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 2);
+ Table1.AddControlEx(2, 13, 3, 1, TerminalCombo, [taoExpand, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table1.AddControlEx(4, 14, 1, 1, TerminalBrowseButton, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+
+
+ // ********* PAGE Fonts
+
+ FontsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ FontsLabel2 := TGTKLabel.Create(Self);
+ FontsLabel2.XAlign := 0;
+ FontsLabel2.XPadding := 10;
+ FontsLabel2.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferences_FontsPage]);
+ FontsLabel2.UseMarkup := True;
+ FontsPage.AddControlEx(FontsLabel2, False, False, 5);
+
+ Table3 := TGTKTable.Create(Self);
+ Table3.SetRowColCount(2, 4);
+ FontsPage.AddControlEx(Table3, False, False, 0);
+ ListFontLabel := TGTKLabel.Create(Self);
+ ListFontLabel.Caption := LANGPreferences_ListFont;
+ ListFontLabel.XAlign := 0;
+ ListFontFrame := TGTKFrame.CreateWithoutLabel(Self);
+ ListFontFrame.ShadowType := stEtchedIn;
+ ListFontPreview := TGTKLabel.Create(Self);
+ ListFontPreview.Caption := 'Luxi Sans, 10';
+ ListFontFrame.AddControl(ListFontPreview);
+ ChangeFontButton := TGTKButton.Create(Self);
+ ChangeFontButton.Caption := LANGPreferences_Change;
+ ChangeFontButton.OnClick := ChangeFontButtonClick;
+ DefaultFontCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_UseDefaultFont);
+ DefaultFontCheckBox.OnToggled := DefaultFontCheckBoxToggled;
+
+ Table3.AddControlEx(0, 0, 1, 1, TGTKVBox.Create(Self), [taoShrink], [taoShrink, taoExpand, taoFill], 12, 2);
+ Table3.AddControlEx(1, 0, 1, 1, ListFontLabel, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 5, 2);
+ Table3.AddControlEx(2, 0, 1, 1, ListFontFrame, [taoExpand, taoFill], [taoShrink, taoExpand, taoFill], 2, 2);
+ Table3.AddControlEx(3, 0, 1, 1, ChangeFontButton, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 2);
+ Table3.AddControlEx(1, 1, 3, 1, DefaultFontCheckBox, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 10, 4);
+
+
+ // ********* PAGE Colors
+
+ ColorsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ ColorsLabel2 := TGTKLabel.Create(Self);
+ ColorsLabel2.XAlign := 0;
+ ColorsLabel2.XPadding := 10;
+ ColorsLabel2.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferences_ColorsPage]);
+ ColorsLabel2.UseMarkup := True;
+ ColorsPage.AddControlEx(ColorsLabel2, False, False, 5);
+
+ Table4 := TGTKTable.Create(Self);
+ Table4.SetRowColCount(7, 8);
+ ColorsPage.AddControlEx(Table4, False, False, 0);
+ ForegroundLabel := TGTKLabel.Create(Self);
+ ForegroundLabel.Caption := LANGPreferences_Foreground;
+ BackgroundLabel := TGTKLabel.Create(Self);
+ BackgroundLabel.Caption := LANGPreferences_Background;
+ Table4.AddControl(1, 0, 3, 1, ForegroundLabel, 5, 2);
+ Table4.AddControl(4, 0, 3, 1, BackgroundLabel, 5, 2);
+
+ NormalItemFGColorLabel := TGTKLabel.Create(Self);
+ NormalItemFGColorLabel.XAlign := 0;
+ NormalItemFGColorLabel.Caption := LANGPreferences_NormalItem;
+ NormalItemFGColorButton := TGnomeColorButton.Create(Self);
+ NormalItemFGColorButton.SetSizeRequest(30, -1);
+ NormalItemBGColorButton := TGnomeColorButton.Create(Self);
+ NormalItemBGColorButton.SetSizeRequest(30, -1);
+ NormalItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default);
+ NormalItemFGColorDefault.Tooltip := LANGPreferences_SetToDefaultToUseGTKThemeColors;
+ NormalItemFGColorDefault.OnToggled := ColorButtonDefaultsToggled;
+ Table4.AddControl(0, 1, 1, 1, NormalItemFGColorLabel, 30, 2);
+ Table4.AddControl(2, 1, 1, 1, NormalItemFGColorButton, 5, 2);
+ Table4.AddControl(5, 1, 1, 1, NormalItemBGColorButton, 5, 2);
+ Table4.AddControl(7, 1, 1, 1, NormalItemFGColorDefault, 10, 2);
+
+ ActiveItemFGColorLabel := TGTKLabel.Create(Self);
+ ActiveItemFGColorLabel.Caption := LANGPreferences_Cursor;
+ ActiveItemFGColorLabel.XAlign := 0;
+ ActiveItemFGColorButton := TGnomeColorButton.Create(Self);
+ ActiveItemBGColorButton := TGnomeColorButton.Create(Self);
+ ActiveItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default);
+ ActiveItemFGColorDefault.Tooltip := LANGPreferences_SetToDefaultToUseGTKThemeColors;
+ ActiveItemFGColorDefault.OnToggled := ColorButtonDefaultsToggled;
+ Table4.AddControl(0, 2, 1, 1, ActiveItemFGColorLabel, 30, 2);
+ Table4.AddControl(2, 2, 1, 1, ActiveItemFGColorButton, 5, 2);
+ Table4.AddControl(5, 2, 1, 1, ActiveItemBGColorButton, 5, 2);
+ Table4.AddControl(7, 2, 1, 1, ActiveItemFGColorDefault, 10, 2);
+
+ InactiveItemFGColorLabel := TGTKLabel.Create(Self);
+ InactiveItemFGColorLabel.Caption := LANGPreferences_InactiveItem;
+ InactiveItemFGColorLabel.XAlign := 0;
+ InactiveItemFGColorButton := TGnomeColorButton.Create(Self);
+ InactiveItemBGColorButton := TGnomeColorButton.Create(Self);
+ InactiveItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default);
+ InactiveItemFGColorDefault.Tooltip := LANGPreferences_SetToDefaultToUseGTKThemeColors;
+ InactiveItemFGColorDefault.OnToggled := ColorButtonDefaultsToggled;
+ Table4.AddControl(0, 3, 1, 1, InactiveItemFGColorLabel, 30, 2);
+ Table4.AddControl(2, 3, 1, 1, InactiveItemFGColorButton, 5, 2);
+ Table4.AddControl(5, 3, 1, 1, InactiveItemBGColorButton, 5, 2);
+ Table4.AddControl(7, 3, 1, 1, InactiveItemFGColorDefault, 10, 2);
+
+ SelectedItemFGColorLabel := TGTKLabel.Create(Self);
+ SelectedItemFGColorLabel.Caption := LANGPreferences_SelectedItem;
+ SelectedItemFGColorLabel.XAlign := 0;
+ SelectedItemFGColorButton := TGnomeColorButton.Create(Self);
+ Table4.AddControl(0, 4, 1, 1, SelectedItemFGColorLabel, 30, 2);
+ Table4.AddControl(2, 4, 1, 1, SelectedItemFGColorButton, 5, 2);
+
+ LinkItemFGColorLabel := TGTKLabel.Create(Self);
+ LinkItemFGColorLabel.Caption := LANGPreferences_LinkItem;
+ LinkItemFGColorLabel.XAlign := 0;
+ LinkItemFGColorButton := TGnomeColorButton.Create(Self);
+ LinkItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default);
+ LinkItemFGColorDefault.Tooltip := LANGPreferences_LinkItemHint;
+ LinkItemFGColorDefault.OnToggled := ColorButtonDefaultsToggled;
+ Table4.AddControl(0, 5, 1, 1, LinkItemFGColorLabel, 30, 2);
+ Table4.AddControl(2, 5, 1, 1, LinkItemFGColorButton, 5, 2);
+ Table4.AddControl(7, 5, 1, 1, LinkItemFGColorDefault, 10, 2);
+
+ DotFileItemFGColorLabel := TGTKLabel.Create(Self);
+ DotFileItemFGColorLabel.Caption := LANGPreferences_DotFileItem;
+ DotFileItemFGColorLabel.XAlign := 0;
+ DotFileItemFGColorButton := TGnomeColorButton.Create(Self);
+ DotFileItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default);
+ DotFileItemFGColorDefault.Tooltip := LANGPreferences_DotFileItemHint;
+ DotFileItemFGColorDefault.OnToggled := ColorButtonDefaultsToggled;
+ Table4.AddControl(0, 6, 1, 1, DotFileItemFGColorLabel, 30, 2);
+ Table4.AddControl(2, 6, 1, 1, DotFileItemFGColorButton, 5, 2);
+ Table4.AddControl(7, 6, 1, 1, DotFileItemFGColorDefault, 10, 2);
+
+ Table4.AddControl(1, 6, 1, 1, TGTKVBox.Create(Self), 2, 2);
+ Table4.AddControl(3, 6, 1, 1, TGTKVBox.Create(Self), 2, 2);
+ Table4.AddControl(4, 6, 1, 1, TGTKVBox.Create(Self), 2, 2);
+ Table4.AddControl(6, 6, 1, 1, TGTKVBox.Create(Self), 2, 2);
+
+
+ // ********* PAGE Experimental
+
+ ExperimentalPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5);
+ ExperimentalLabel2 := TGTKLabel.Create(Self);
+ ExperimentalLabel2.XAlign := 0;
+ ExperimentalLabel2.XPadding := 10;
+ ExperimentalLabel2.Caption := Format('<span weight="ultrabold">%s</span>', [LANGPreferencesExperimentalFeatures]);
+ ExperimentalLabel2.UseMarkup := True;
+ ExperimentalPage.AddControlEx(ExperimentalLabel2, False, False, 5);
+
+ HBox4 := TGTKHBox.Create(Self);
+ HBox4.Homogeneous := False;
+ ExperimentalWarningLabel := TGTKLabel.Create(Self);
+ ExperimentalWarningLabel.Caption := LANGPreferencesExperimentalWarningLabel_Caption;
+ ExperimentalWarningLabel.UseMarkup := True;
+ ExperimentalWarningLabel.LineWrap := True;
+ ExperimentalWarningLabel.SetSizeRequest(300, -1);
+ ExperimentalWarningIcon := TGTKImage.Create(Self);
+ ExperimentalWarningIcon.SetFromStock('gtk-dialog-warning', isDialog);
+ HBox4.AddControlEx(TGTKVBox.Create(Self), False, False, 12);
+ HBox4.AddControlEx(ExperimentalWarningIcon, False, False, 7);
+ HBox4.AddControlEx(ExperimentalWarningLabel, True, True, 7);
+ HBox4.AddControlEx(TGTKVBox.Create(Self), False, False, 8);
+ ExperimentalPage.AddControlEx(HBox4, False, False, 5);
+ ExperimentalPage.AddControlEx(TGTKVBox.Create(Self), False, False, 10);
+
+ Table6 := TGTKTable.Create(Self);
+ Table6.SetRowColCount(3, 1);
+ ExperimentalPage.AddControlEx(Table6, False, False, 0);
+
+ FocusRefreshCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesFocusRefreshCheckBox_Caption);
+ FocusRefreshCheckBox.Tooltip := LANGPreferencesFocusRefreshCheckBox_Tooltip;
+ Table6.AddControl(0, 0, 1, 1, FocusRefreshCheckBox, 30, 2);
+ WMCompatModeCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesWMCompatModeCheckBox_Caption);
+ WMCompatModeCheckBox.Tooltip := LANGPreferencesWMCompatModeCheckBox_Tooltip;
+ Table6.AddControl(0, 1, 1, 1, WMCompatModeCheckBox, 30, 2);
+ CompatUseLibcSystemCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesCompatUseLibcSystemCheckBox_Caption);
+ CompatUseLibcSystemCheckBox.Tooltip := LANGPreferencesCompatUseLibcSystemCheckBox_Tooltip;
+ Table6.AddControl(0, 2, 1, 1, CompatUseLibcSystemCheckBox, 30, 2);
+
+ // ******************
+
+ OnKeyDown := FormKeyDown;
+ OnDestroy := FormDestroy;
+end;
+
+procedure TFPreferences.FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);
+begin
+// if Key = GDK_ESCAPE then ModalResult := mbCancel;
+end;
+
+procedure TFPreferences.FormDestroy(Sender: TObject);
+begin
+
+end;
+
+(********************************************************************************************************************************)
+procedure TFPreferences.ViewerBrowseButtonClick(Sender: TObject);
+
+ procedure BrowseForFile(ToControl: TGTKEntry);
+ var Dialog: TGTKFileSelectionDialog;
+ begin
+ Dialog := TGTKFileSelectionDialog.CreateWithTitle(Self, LANGPreferences_BrowseForApplication);
+ try
+ Dialog.ShowFileOpButtons := False;
+ Dialog.FileName := ToControl.Text;
+ if Byte(Dialog.Run) = 251 then ToControl.Text := Dialog.FileName;
+ finally
+ Dialog.Free;
+ end;
+ end;
+
+begin
+ if Sender = ViewerBrowseButton then BrowseForFile(ViewerCombo.Entry)
+ else if Sender = EditorBrowseButton then BrowseForFile(EditorCombo.Entry)
+ else if Sender = TerminalBrowseButton then BrowseForFile(TerminalCombo.Entry);
+end;
+
+procedure TFPreferences.DefaultFontCheckBoxToggled(Sender: TObject);
+var FontDesc: PPangoFontDescription;
+begin
+ ListFontLabel.Enabled := not DefaultFontCheckBox.Checked;
+ ChangeFontButton.Enabled := not DefaultFontCheckBox.Checked;
+ ListFontFrame.Enabled := not DefaultFontCheckBox.Checked;
+ if DefaultFontCheckBox.Checked then begin
+ gtk_widget_modify_font(ListFontPreview.FWidget, nil);
+ ListFontPreview.Caption := Format(LANGPreferences_DefaultS, [DefaultGTKFont]);
+ end else begin
+ FontDesc := pango_font_description_from_string(StringToPgchar(LocalListFont));
+ gtk_widget_modify_font(ListFontPreview.FWidget, FontDesc);
+ ListFontPreview.Caption := LocalListFont;
+ end;
+end;
+
+procedure TFPreferences.ChangeFontButtonClick(Sender: TObject);
+
+ procedure ChangeFont(ToControl: TGTKLabel);
+ var Dialog: TGTKFontSelectionDialog;
+ FontDesc: PPangoFontDescription;
+ begin
+ Dialog := TGTKFontSelectionDialog.CreateWithTitle(Self, LANGPreferences_SelectFont);
+ try
+ Dialog.FontName := ToControl.Caption;
+ if Byte(Dialog.Run) = 251 then begin
+ ToControl.Caption := Dialog.FontName;
+ FontDesc := pango_font_description_from_string(StringToPgchar(Dialog.FontName));
+ gtk_widget_modify_font(ToControl.FWidget, FontDesc);
+// g_object_unref(FontDesc); // *** - cannot unref, causes SIGSEGV
+ LocalListFont := Dialog.FontName;
+ end;
+ finally
+ Dialog.Free;
+ end;
+ end;
+
+begin
+ if Sender = ChangeFontButton then ChangeFont(ListFontPreview);
+end;
+
+procedure TFPreferences.ColorButtonDefaultsToggled(Sender: TObject);
+begin
+ if NormalItemFGColorDefault.Checked then NormalItemFGColorButton.SetDefaultColor
+ else NormalItemFGColorButton.UnsetDefaultColor;
+ if NormalItemFGColorDefault.Checked then NormalItemBGColorButton.SetDefaultColor
+ else NormalItemBGColorButton.UnsetDefaultColor;
+ if ActiveItemFGColorDefault.Checked then ActiveItemFGColorButton.SetDefaultColor
+ else ActiveItemFGColorButton.UnsetDefaultColor;
+ if ActiveItemFGColorDefault.Checked then ActiveItemBGColorButton.SetDefaultColor
+ else ActiveItemBGColorButton.UnsetDefaultColor;
+ if InactiveItemFGColorDefault.Checked then InactiveItemFGColorButton.SetDefaultColor
+ else InactiveItemFGColorButton.UnsetDefaultColor;
+ if InactiveItemFGColorDefault.Checked then InactiveItemBGColorButton.SetDefaultColor
+ else InactiveItemBGColorButton.UnsetDefaultColor;
+ if LinkItemFGColorDefault.Checked then LinkItemFGColorButton.SetDefaultColor
+ else LinkItemFGColorButton.UnsetDefaultColor;
+ if DotFileItemFGColorDefault.Checked then DotFileItemFGColorButton.SetDefaultColor
+ else DotFileItemFGColorButton.UnsetDefaultColor;
+end;
+
+procedure TFPreferences.DefaultRowHeightCheckBoxToggled(Sender: TObject);
+begin
+ RowHeightLabel.Enabled := not DefaultRowHeightCheckBox.Checked;
+ RowHeightSpinEdit.Enabled := not DefaultRowHeightCheckBox.Checked;
+end;
+
+procedure TFPreferences.UseInternalViewerCheckBoxToggled(Sender: TObject);
+begin
+ ViewerCombo.Enabled := not UseInternalViewerCheckBox.Checked;
+ ViewerLabel2.Enabled := not UseInternalViewerCheckBox.Checked;
+ ViewerBrowseButton.Enabled := not UseInternalViewerCheckBox.Checked;
+ ViewerOptionMenu.Enabled := not UseInternalViewerCheckBox.Checked;
+end;
+
+(********************************************************************************************************************************)
+procedure TFPreferences.AssignDefaultValues;
+var AColor: TGDKColor;
+begin
+ DefaultGTKFont := pango_font_description_to_string(pango_context_get_font_description(gtk_widget_get_pango_context(FWidget)));
+ LocalListFont := ConfPanelFont;
+
+ RowHeightSpinEdit.Min := 6;
+ RowHeightSpinEdit.Max := 128;
+ RowHeightSpinEdit.AsInteger := ConfRowHeightReal;
+ DefaultRowHeightCheckBox.Checked := ConfRowHeight < 0;
+ NumHistoryItemsSpinEdit.Min := 1;
+ NumHistoryItemsSpinEdit.Max := 512;
+ NumHistoryItemsSpinEdit.AsInteger := ConfNumHistoryItems;
+ ClearROAttr.Checked := ConfClearReadOnlyAttr;
+ DisableMouseRename.Checked := ConfDisableMouseRename;
+ ShowFiletypeIcons.Checked := ConfUseFileTypeIcons;
+ ViewerCombo.Entry.Text := ANSIToUTF8(ConfViewer);
+ EditorCombo.Entry.Text := ANSIToUTF8(ConfEditor);
+ TerminalCombo.Entry.Text := ANSIToUTF8(ConfTerminalCommand);
+ DefaultFontCheckBox.Checked := ConfUseSystemFont;
+
+ if not StringToGDKColor(ConfNormalItemFGColor, AColor) then StringToGDKColor(ConfDefaultNormalItemFGColor, AColor);
+ NormalItemFGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfNormalItemBGColor, AColor) then StringToGDKColor(ConfDefaultNormalItemBGColor, AColor);
+ NormalItemBGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfActiveItemFGColor, AColor) then StringToGDKColor(ConfDefaultActiveItemFGColor, AColor);
+ ActiveItemFGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfActiveItemBGColor, AColor) then StringToGDKColor(ConfDefaultActiveItemBGColor, AColor);
+ ActiveItemBGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfInactiveItemFGColor, AColor) then StringToGDKColor(ConfDefaultInactiveItemFGColor, AColor);
+ InactiveItemFGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfInactiveItemBGColor, AColor) then StringToGDKColor(ConfDefaultInactiveItemBGColor, AColor);
+ InactiveItemBGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfSelectedItemFGColor, AColor) then StringToGDKColor(ConfDefaultSelectedItemFGColor, AColor);
+ SelectedItemFGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfLinkItemFGColor, AColor) then StringToGDKColor(ConfDefaultLinkItemFGColor, AColor);
+ LinkItemFGColorButton.Color := AColor;
+ if not StringToGDKColor(ConfDotFileItemFGColor, AColor) then StringToGDKColor(ConfDefaultDotFileItemFGColor, AColor);
+ DotFileItemFGColorButton.Color := AColor;
+
+ NormalItemFGColorDefault.Checked := ConfNormalItemDefaultColors;
+ ActiveItemFGColorDefault.Checked := ConfCursorDefaultColors;
+ InactiveItemFGColorDefault.Checked := ConfInactiveItemDefaultColors;
+ LinkItemFGColorDefault.Checked := ConfLinkItemDefaultColors;
+ DotFileItemFGColorDefault.Checked := ConfDotFileItemDefaultColors;
+
+ SelectAllDirectoriesCheckBox.Checked := ConfSelectAllDirs;
+ NewStyleAltOCheckBox.Checked := ConfNewStyleAltO;
+ ShowFuncButtonsCheckBox.Checked := ConfShowFuncButtons;
+ SizeFormatOptionMenu.ItemIndex := ConfSizeFormat;
+ TerminalOptionMenu.ItemIndex := ConfCmdLineTerminalBehaviour;
+ DisableFileTipsCheckBox.Checked := ConfDisableFileTips;
+ DirsInBoldCheckBox.Checked := ConfDirsInBold;
+ DisableDirectoryBracketsCheckBox.Checked := ConfDisableDirectoryBrackets;
+ OctalPermissionsCheckBox.Checked := ConfOctalPerm;
+ ShowTextUIDsCheckBox.Checked := ConfShowTextUIDs;
+ LynxLikeMotionCheckBox.Checked := ConfLynxLikeMotion;
+ InsertMovesDownCheckBox.Checked := ConfInsMoveDown;
+ SpaceMovesDownCheckBox.Checked := ConfSpaceMovesDown;
+ UseInternalViewerCheckBox.Checked := ConfUseInternalViewer;
+ ViewerOptionMenu.ItemIndex := ConfViewerTerminalBehaviour;
+ EditorOptionMenu.ItemIndex := ConfEditorTerminalBehaviour;
+ FocusRefreshCheckBox.Checked := ConfFocusRefresh;
+ WMCompatModeCheckBox.Checked := ConfWMCompatMode;
+ CompatUseLibcSystemCheckBox.Checked := ConfUseLibcSystem;
+
+ DefaultFontCheckBoxToggled(Self);
+ ColorButtonDefaultsToggled(Self);
+ UseInternalViewerCheckBoxToggled(Self);
+end;
+
+procedure TFPreferences.SaveSettings;
+var x: integer;
+begin
+ if not DefaultRowHeightCheckBox.Checked then x := RowHeightSpinEdit.AsInteger
+ else x := -1;
+ RebuildListViews := (ConfRowHeight <> x) or (ConfUseFileTypeIcons <> ShowFiletypeIcons.Checked) or
+ (ConfUseSystemFont <> DefaultFontCheckBox.Checked) or
+ ((not DefaultFontCheckBox.Checked) and (ConfPanelFont <> ListFontPreview.Caption));
+ RebuildIcons := ConfRowHeight <> x;
+
+ ConfRowHeight := x;
+ ConfNumHistoryItems := NumHistoryItemsSpinEdit.AsInteger;
+ ConfClearReadOnlyAttr := ClearROAttr.Checked;
+ ConfDisableMouseRename := DisableMouseRename.Checked;
+ ConfUseFileTypeIcons := ShowFiletypeIcons.Checked;
+ ConfViewer := UTF8ToANSI(ViewerCombo.Entry.Text);
+ ConfEditor := UTF8ToANSI(EditorCombo.Entry.Text);
+ ConfTerminalCommand := UTF8ToANSI(TerminalCombo.Entry.Text);
+ ConfUseSystemFont := DefaultFontCheckBox.Checked;
+ if not ConfUseSystemFont then ConfPanelFont := ListFontPreview.Caption;
+
+ ConfNormalItemFGColor := GDKColorToString(NormalItemFGColorButton.Color);
+ ConfNormalItemBGColor := GDKColorToString(NormalItemBGColorButton.Color);
+ ConfActiveItemFGColor := GDKColorToString(ActiveItemFGColorButton.Color);
+ ConfActiveItemBGColor := GDKColorToString(ActiveItemBGColorButton.Color);
+ ConfInactiveItemFGColor := GDKColorToString(InactiveItemFGColorButton.Color);
+ ConfInactiveItemBGColor := GDKColorToString(InactiveItemBGColorButton.Color);
+ ConfSelectedItemFGColor := GDKColorToString(SelectedItemFGColorButton.Color);
+ ConfLinkItemFGColor := GDKColorToString(LinkItemFGColorButton.Color);
+ ConfDotFileItemFGColor := GDKColorToString(DotFileItemFGColorButton.Color);
+
+ ConfNormalItemDefaultColors := NormalItemFGColorDefault.Checked;
+ ConfCursorDefaultColors := ActiveItemFGColorDefault.Checked;
+ ConfInactiveItemDefaultColors := InactiveItemFGColorDefault.Checked;
+ ConfLinkItemDefaultColors := LinkItemFGColorDefault.Checked;
+ ConfDotFileItemDefaultColors := DotFileItemFGColorDefault.Checked;
+
+ ConfSelectAllDirs := SelectAllDirectoriesCheckBox.Checked;
+ ConfNewStyleAltO := NewStyleAltOCheckBox.Checked;
+ ConfSizeFormat := SizeFormatOptionMenu.ItemIndex;
+ ConfCmdLineTerminalBehaviour := TerminalOptionMenu.ItemIndex;
+ ConfDirsInBold := DirsInBoldCheckBox.Checked;
+ ConfDisableDirectoryBrackets := DisableDirectoryBracketsCheckBox.Checked;
+ ConfOctalPerm := OctalPermissionsCheckBox.Checked;
+ ConfShowTextUIDs := ShowTextUIDsCheckBox.Checked;
+ ConfLynxLikeMotion := LynxLikeMotionCheckBox.Checked;
+ ConfInsMoveDown := InsertMovesDownCheckBox.Checked;
+ ConfSpaceMovesDown := SpaceMovesDownCheckBox.Checked;
+ ConfUseInternalViewer := UseInternalViewerCheckBox.Checked;
+ ConfViewerTerminalBehaviour := ViewerOptionMenu.ItemIndex;
+ ConfEditorTerminalBehaviour := EditorOptionMenu.ItemIndex;
+ ConfFocusRefresh := FocusRefreshCheckBox.Checked;
+ ConfWMCompatMode := WMCompatModeCheckBox.Checked;
+ ConfUseLibcSystem := CompatUseLibcSystemCheckBox.Checked;
+ ConfDisableFileTips := DisableFileTipsCheckBox.Checked;
+ ConfShowFuncButtons := ShowFuncButtonsCheckBox.Checked;
+end;
+
+(********************************************************************************************************************************)
+end.
+