(* Tux Commander - UPreferences - The Preferences dialog Copyright (C) 2006 Tomas Bzatek 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 SysUtils, Classes, lazgdk3, lazgtk3, lazpango1, GTKControls, GTKForms, GTKStdCtrls, GTKExtCtrls, GTKUtils, GTKDialogs, GTKPixbuf, GTKClasses, GTKMenus, ULibc; type TFPreferences = class(TGTKDialog) TitleFrame: 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, 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, DisableFileTipsCheckBox, DisableDirectoryBracketsCheckBox, InsertMovesDownCheckBox, SpaceMovesDownCheckBox, SelectAllDirectoriesCheckBox, ShowFuncButtonsCheckBox, OctalPermissionsCheckBox, FocusRefreshCheckBox, CompatUseLibcSystemCheckBox: TGTKCheckButton; NormalItemFGColorDefault, ActiveItemFGColorDefault, InactiveItemFGColorDefault, LinkItemFGColorDefault, DotFileItemFGColorDefault: TGTKCheckButton; HBox1, HBox2, HBox3, HBox4: TGTKHBox; VBox1: TGTKVBox; ViewerCommandComboBox, EditorCommandComboBox, TerminalCommandComboBox: TGTKComboBoxEntry; ViewerBrowseButton, EditorBrowseButton, TerminalBrowseButton: TGTKButton; NormalItemFGColorButton, ActiveItemFGColorButton, InactiveItemFGColorButton, SelectedItemFGColorButton, LinkItemFGColorButton, DotFileItemFGColorButton, NormalItemBGColorButton, ActiveItemBGColorButton, InactiveItemBGColorButton: TGTKColorButton; Grid1, Grid2, Grid3, Grid4, Grid5, Grid6: TGTKGrid; RowHeightSpinEdit, NumHistoryItemsSpinEdit: TGTKSpinEdit; SizeFormatLabel: TGTKLabel; SizeFormatComboBox: TGTKComboBoxText; UseInternalViewerCheckBox: TGTKCheckButton; ViewerLabel2, EditorLabel2, TerminalLabel2, CmdLineBehaviourLabel: TGTKLabel; ViewerX11AppComboBox, EditorX11AppComboBox, CmdLineBehaviourComboBox: TGTKComboBoxText; ShowTextUIDsCheckBox: TGTKCheckButton; DateFormatLabel: TGTKLabel; DateFormatComboBox: TGTKComboBoxText; CustomDateFormatEntry: TGTKEntry; TimeFormatLabel: TGTKLabel; TimeFormatComboBox: TGTKComboBoxText; CustomTimeFormatEntry: TGTKEntry; DateTimeFormatLabel: TGTKLabel; DateTimeFormatComboBox: TGTKComboBoxText; QuickSearchLabel: TGTKLabel; QuickSearchComboBox: TGTKComboBoxText; SortDirectoriesLikeFilesCheckBox: TGTKCheckButton; TempPathLabel, VFSTempPathLabel: TGTKLabel; VFSTempPathEntry: TGTKEntry; QuickRenameSkipExtCheckBox: TGTKCheckButton; RightClickSelectCheckBox: TGTKCheckButton; ListFontButton: TGTKFontButton; 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 ColorButtonDefaultsToggled(Sender: TObject); procedure DefaultRowHeightCheckBoxToggled(Sender: TObject); procedure UseInternalViewerCheckBoxToggled(Sender: TObject); procedure DateTimeFormatComboBoxChanged(Sender: TObject); procedure ListFontButtonFontNameChanged(Sender: TObject); private DefaultGTKFont, LocalListFont: string; FormatTime: time_t; public RebuildListViews, RebuildIcons: boolean; procedure AssignDefaultValues; procedure SaveSettings; end; var FPreferences: TFPreferences; implementation uses ULocale, UCoreUtils, UConfig; procedure TFPreferences.FormCreate(Sender: TObject); var i: integer; VBox: TGTKVBox; begin SetDefaultSize(450, 600); Caption := LANGPreferences_Caption; Buttons := [mbOK, mbCancel]; TitleEventBox := TGTKEventBox.Create(Self); TitleLabel := TGTKLabel.Create(Self); TitleLabel.Caption := LANGPreferences_TitleLabel_Caption; TitleLabel.UseMarkup := True; TitleLabel.XAlign := 0; TitleLabel.MarginStart := 0; TitleLabel.MarginEnd := 0; TitleLabel.MarginTop := 3; TitleLabel.MarginBottom := 3; TitleEventBox.ControlState := csPrelight; TitleFrame := TGTKFrame.CreateWithoutLabel(Self); TitleFrame.ShadowType := stShadowOut; TitleIcon := TGTKImage.Create(Self); TitleIcon.SetFromIconName('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.MarginStart := 10; GeneralLabel2.MarginEnd := 10; GeneralLabel2.Caption := Format('%s', [LANGPreferences_GeneralPage]); GeneralLabel2.UseMarkup := True; GeneralPage.AddControlEx(GeneralLabel2, False, False, 5); Grid2 := TGTKGrid.Create(Self); GeneralPage.AddControlEx(Grid2, False, False, 0); ClearROAttr := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_ClearReadonlyAttribute); ClearROAttr.MarginTop := 2; ClearROAttr.MarginBottom := 2; Grid2.AddControl(1, 0, 3, 1, ClearROAttr); SelectAllDirectoriesCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesSelectAllDirectoriesCheckBox_Caption); SelectAllDirectoriesCheckBox.MarginTop := 2; SelectAllDirectoriesCheckBox.MarginBottom := 2; Grid2.AddControl(1, 1, 3, 1, SelectAllDirectoriesCheckBox); NewStyleAltOCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesNewStyleAltOCheckBox_Caption); NewStyleAltOCheckBox.Tooltip := LANGPreferencesNewStyleAltOCheckBox_Tooltip; NewStyleAltOCheckBox.MarginTop := 2; NewStyleAltOCheckBox.MarginBottom := 2; Grid2.AddControl(1, 2, 3, 1, NewStyleAltOCheckBox); ShowFuncButtonsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesShowFuncButtonsCheckBox_Caption); ShowFuncButtonsCheckBox.MarginTop := 2; ShowFuncButtonsCheckBox.MarginBottom := 2; Grid2.AddControl(1, 3, 3, 1, ShowFuncButtonsCheckBox); NumHistoryItemsLabel := TGTKLabel.Create(Self); NumHistoryItemsLabel.Caption := LANGPreferences_NumHistoryItems; NumHistoryItemsLabel.XAlign := 0; NumHistoryItemsLabel.MarginTop := 2; NumHistoryItemsLabel.MarginBottom := 2; NumHistoryItemsSpinEdit := TGTKSpinEdit.Create(Self); NumHistoryItemsSpinEdit.Digits := 0; NumHistoryItemsSpinEdit.MarginStart := 10; NumHistoryItemsSpinEdit.MarginEnd := 10; NumHistoryItemsSpinEdit.MarginTop := 2; NumHistoryItemsSpinEdit.MarginBottom := 2; NumHistoryItemsLabel.FocusControl := NumHistoryItemsSpinEdit; NumHistoryItemsLabel.UseUnderline := True; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 15; VBox.MarginEnd := 15; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid2.AddControl(0, 4, 1, 1, VBox); Grid2.AddControl(1, 4, 1, 1, NumHistoryItemsLabel); Grid2.AddControl(2, 4, 1, 1, NumHistoryItemsSpinEdit); RowHeightLabel := TGTKLabel.Create(Self); RowHeightLabel.Caption := LANGPreferences_RowHeight; RowHeightLabel.XAlign := 0; RowHeightLabel.MarginTop := 2; RowHeightLabel.MarginBottom := 2; RowHeightSpinEdit := TGTKSpinEdit.Create(Self); RowHeightSpinEdit.Digits := 0; RowHeightSpinEdit.MarginStart := 10; RowHeightSpinEdit.MarginEnd := 10; RowHeightSpinEdit.MarginTop := 2; RowHeightSpinEdit.MarginBottom := 2; RowHeightLabel.FocusControl := RowHeightSpinEdit; RowHeightLabel.UseUnderline := True; DefaultRowHeightCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default); DefaultRowHeightCheckBox.OnToggled := @DefaultRowHeightCheckBoxToggled; DefaultRowHeightCheckBox.MarginStart := 10; DefaultRowHeightCheckBox.MarginEnd := 10; DefaultRowHeightCheckBox.MarginTop := 2; DefaultRowHeightCheckBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 8; VBox.MarginEnd := 8; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid2.AddControl(1, 5, 1, 1, RowHeightLabel); Grid2.AddControl(2, 5, 1, 1, RowHeightSpinEdit); Grid2.AddControl(3, 5, 1, 1, DefaultRowHeightCheckBox); Grid2.AddControl(4, 5, 1, 1, VBox); SizeFormatLabel := TGTKLabel.Create(Self); SizeFormatLabel.Caption := LANGPreferencesSizeFormatLabel_Caption; SizeFormatLabel.XAlign := 0; SizeFormatLabel.UseUnderline := True; SizeFormatLabel.MarginTop := 2; SizeFormatLabel.MarginBottom := 2; SizeFormatComboBox := TGTKComboBoxText.Create(Self); SizeFormatLabel.FocusControl := SizeFormatComboBox; SizeFormatComboBox.AppendItem(Format('%s (%s)', [LANGPreferencesmiSizeFormat1, FormatSize(123456, 0, 0)])); SizeFormatComboBox.AppendItem(FormatSize(123456, 0, 1)); SizeFormatComboBox.AppendItem(FormatSize(123456, 0, 2)); SizeFormatComboBox.AppendItem(FormatSize(123456, 0, 3)); SizeFormatComboBox.AppendItem(FormatSize(123456, 0, 4)); SizeFormatComboBox.AppendItem(LANGPreferencesmiSizeFormat6); SizeFormatComboBox.MarginStart := 10; SizeFormatComboBox.MarginEnd := 10; SizeFormatComboBox.MarginTop := 2; SizeFormatComboBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 4; VBox.MarginBottom := 4; Grid2.AddControl(0, 7, 1, 1, VBox); Grid2.AddControl(1, 8, 1, 1, SizeFormatLabel); Grid2.AddControl(2, 8, 2, 1, SizeFormatComboBox); CmdLineBehaviourComboBox := TGTKComboBoxText.Create(Self); CmdLineBehaviourComboBox.AppendItem(LANGPreferencesAutodetectXApp); CmdLineBehaviourComboBox.AppendItem(LANGPreferencesAlwaysRunInTerminal); CmdLineBehaviourComboBox.AppendItem(LANGPreferencesNeverRunInTerminal); CmdLineBehaviourComboBox.MarginStart := 10; CmdLineBehaviourComboBox.MarginEnd := 10; CmdLineBehaviourComboBox.MarginTop := 2; CmdLineBehaviourComboBox.MarginBottom := 2; CmdLineBehaviourLabel := TGTKLabel.Create(Self); CmdLineBehaviourLabel.Caption := LANGPreferencesCmdLineBehaviourLabel_Caption; CmdLineBehaviourLabel.XAlign := 0; CmdLineBehaviourLabel.MarginTop := 2; CmdLineBehaviourLabel.MarginBottom := 2; CmdLineBehaviourLabel.FocusControl := CmdLineBehaviourComboBox; CmdLineBehaviourLabel.UseUnderline := True; Grid2.AddControl(1, 6, 1, 1, CmdLineBehaviourLabel); Grid2.AddControl(2, 6, 2, 1, CmdLineBehaviourComboBox); FormatTime := libc_time(nil); DateFormatLabel := TGTKLabel.Create(Self); DateFormatLabel.Caption := LANGPreferences_DateFormatLabel_Caption; DateFormatLabel.XAlign := 0; DateFormatLabel.MarginTop := 2; DateFormatLabel.MarginBottom := 2; DateFormatLabel.UseUnderline := True; DateFormatComboBox := TGTKComboBoxText.Create(Self); DateFormatLabel.FocusControl := DateFormatComboBox; DateFormatComboBox.AppendItem(Format('%s (%s)', [LANGPreferences_System, FormatDate(FormatTime, False, True, -1, 0, -1)])); for i := 1 to 14 do DateFormatComboBox.AppendItem(FormatDate(FormatTime, False, True, -1, i, -1)); DateFormatComboBox.AppendItem(LANGPreferences_Custom); DateFormatComboBox.OnChanged := @DateTimeFormatComboBoxChanged; DateFormatComboBox.MarginStart := 10; DateFormatComboBox.MarginEnd := 10; DateFormatComboBox.MarginTop := 2; DateFormatComboBox.MarginBottom := 2; Grid2.AddControl(1, 9, 1, 1, DateFormatLabel); Grid2.AddControl(2, 9, 2, 1, DateFormatComboBox); CustomDateFormatEntry := TGTKEntry.Create(Self); CustomDateFormatEntry.Enabled := False; CustomDateFormatEntry.Tooltip := LANGPreferences_CustomDateFormatEntry_Tooltip; CustomDateFormatEntry.OnChanged := @DateTimeFormatComboBoxChanged; CustomDateFormatEntry.MarginStart := 10; CustomDateFormatEntry.MarginEnd := 10; CustomDateFormatEntry.MarginTop := 2; CustomDateFormatEntry.MarginBottom := 2; Grid2.AddControl(2, 10, 2, 1, CustomDateFormatEntry); TimeFormatLabel := TGTKLabel.Create(Self); TimeFormatLabel.Caption := LANGPreferences_TimeFormatLabel_Caption; TimeFormatLabel.XAlign := 0; TimeFormatLabel.MarginTop := 2; TimeFormatLabel.MarginBottom := 2; TimeFormatLabel.UseUnderline := True; TimeFormatComboBox := TGTKComboBoxText.Create(Self); TimeFormatLabel.FocusControl := TimeFormatComboBox; TimeFormatComboBox.AppendItem(Format('%s (%s)', [LANGPreferences_System, FormatDate(FormatTime, True, False, 0, -1, -1)])); for i := 1 to 11 do TimeFormatComboBox.AppendItem(FormatDate(FormatTime, True, False, i, -1, -1)); TimeFormatComboBox.AppendItem(LANGPreferences_Custom); TimeFormatComboBox.OnChanged := @DateTimeFormatComboBoxChanged; TimeFormatComboBox.MarginStart := 10; TimeFormatComboBox.MarginEnd := 10; TimeFormatComboBox.MarginTop := 2; TimeFormatComboBox.MarginBottom := 2; Grid2.AddControl(1, 11, 1, 1, TimeFormatLabel); Grid2.AddControl(2, 11, 2, 1, TimeFormatComboBox); CustomTimeFormatEntry := TGTKEntry.Create(Self); CustomTimeFormatEntry.Enabled := False; CustomTimeFormatEntry.Tooltip := LANGPreferences_CustomTimeFormatEntry_Tooltip; CustomTimeFormatEntry.OnChanged := @DateTimeFormatComboBoxChanged; CustomTimeFormatEntry.MarginStart := 10; CustomTimeFormatEntry.MarginEnd := 10; CustomTimeFormatEntry.MarginTop := 2; CustomTimeFormatEntry.MarginBottom := 2; Grid2.AddControl(2, 12, 2, 1, CustomTimeFormatEntry); DateTimeFormatLabel := TGTKLabel.Create(Self); DateTimeFormatLabel.Caption := LANGPreferences_DateTimeFormatLabel_Caption; DateTimeFormatLabel.XAlign := 0; DateTimeFormatLabel.MarginTop := 2; DateTimeFormatLabel.MarginBottom := 2; DateTimeFormatLabel.UseUnderline := True; DateTimeFormatComboBox := TGTKComboBoxText.Create(Self); DateTimeFormatLabel.FocusControl := DateTimeFormatComboBox; DateTimeFormatComboBox.AppendItem(FormatDate(FormatTime, True, True, -1, -1, 0)); DateTimeFormatComboBox.AppendItem(FormatDate(FormatTime, True, True, -1, -1, 1)); DateTimeFormatComboBox.MarginStart := 10; DateTimeFormatComboBox.MarginEnd := 10; DateTimeFormatComboBox.MarginTop := 2; DateTimeFormatComboBox.MarginBottom := 2; Grid2.AddControl(1, 13, 1, 1, DateTimeFormatLabel); Grid2.AddControl(2, 13, 2, 1, DateTimeFormatComboBox); // ********* PAGE Panels PanelsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5); PanelsLabel2 := TGTKLabel.Create(Self); PanelsLabel2.XAlign := 0; PanelsLabel2.MarginStart := 10; PanelsLabel2.MarginEnd := 10; PanelsLabel2.Caption := Format('%s', [LANGPreferencesFeatures]); PanelsLabel2.UseMarkup := True; PanelsPage.AddControlEx(PanelsLabel2, False, False, 5); Grid5 := TGTKGrid.Create(Self); PanelsPage.AddControlEx(Grid5, False, False, 0); DisableMouseRename := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_DisableMouseRenaming); DisableMouseRename.Tooltip := LANGPreferencesDisableMouseRename_Tooltip; DisableMouseRename.MarginStart := 30; DisableMouseRename.MarginEnd := 30; DisableMouseRename.MarginTop := 2; DisableMouseRename.MarginBottom := 2; QuickRenameSkipExtCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_QuickRenameSkipExtCheckBox); QuickRenameSkipExtCheckBox.Tooltip := LANGPreferences_QuickRenameSkipExtCheckBox_Tooltip; QuickRenameSkipExtCheckBox.MarginStart := 30; QuickRenameSkipExtCheckBox.MarginEnd := 30; QuickRenameSkipExtCheckBox.MarginTop := 2; QuickRenameSkipExtCheckBox.MarginBottom := 2; RightClickSelectCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_RightClickSelectCheckBox); RightClickSelectCheckBox.Tooltip := LANGPreferences_RightClickSelectCheckBox_Tooltip; RightClickSelectCheckBox.MarginStart := 30; RightClickSelectCheckBox.MarginEnd := 30; RightClickSelectCheckBox.MarginTop := 2; RightClickSelectCheckBox.MarginBottom := 2; DisableFileTipsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesDisableFileTipsCheckBox_Caption); DisableFileTipsCheckBox.Tooltip := LANGPreferencesDisableFileTipsCheckBox_Tooltip; DisableFileTipsCheckBox.MarginStart := 30; DisableFileTipsCheckBox.MarginEnd := 30; DisableFileTipsCheckBox.MarginTop := 2; DisableFileTipsCheckBox.MarginBottom := 2; SortDirectoriesLikeFilesCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_SortDirectoriesLikeFilesCheckBox); SortDirectoriesLikeFilesCheckBox.Tooltip := LANGPreferences_SortDirectoriesLikeFilesCheckBox_Tooltip; SortDirectoriesLikeFilesCheckBox.MarginStart := 30; SortDirectoriesLikeFilesCheckBox.MarginEnd := 30; SortDirectoriesLikeFilesCheckBox.MarginTop := 2; SortDirectoriesLikeFilesCheckBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 7; VBox.MarginBottom := 7; Grid5.AddControl(0, 0, 2, 1, DisableMouseRename); Grid5.AddControl(0, 1, 2, 1, QuickRenameSkipExtCheckBox); Grid5.AddControl(0, 2, 2, 1, RightClickSelectCheckBox); Grid5.AddControl(0, 3, 2, 1, DisableFileTipsCheckBox); Grid5.AddControl(0, 4, 2, 1, SortDirectoriesLikeFilesCheckBox); Grid5.AddControl(0, 5, 2, 1, VBox); PanelsLabel3 := TGTKLabel.Create(Self); PanelsLabel3.Caption := Format('%s', [LANGPreferencesShow]); PanelsLabel3.UseMarkup := True; PanelsLabel3.XAlign := 0; PanelsLabel3.MarginStart := 10; PanelsLabel3.MarginEnd := 10; PanelsLabel3.MarginTop := 2; PanelsLabel3.MarginBottom := 2; Grid5.AddControl(0, 6, 2, 1, PanelsLabel3); ShowFiletypeIcons := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_ShowFiletypeIconsInList); ShowFiletypeIcons.MarginStart := 30; ShowFiletypeIcons.MarginEnd := 30; ShowFiletypeIcons.MarginTop := 2; ShowFiletypeIcons.MarginBottom := 2; DirsInBoldCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesDirsInBoldCheckBox_Caption); DirsInBoldCheckBox.MarginStart := 30; DirsInBoldCheckBox.MarginEnd := 30; DirsInBoldCheckBox.MarginTop := 2; DirsInBoldCheckBox.MarginBottom := 2; DisableDirectoryBracketsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesDisableDirectoryBracketsCheckBox_Caption); DisableDirectoryBracketsCheckBox.MarginStart := 30; DisableDirectoryBracketsCheckBox.MarginEnd := 30; DisableDirectoryBracketsCheckBox.MarginTop := 2; DisableDirectoryBracketsCheckBox.MarginBottom := 2; OctalPermissionsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesOctalPermissionsCheckBox_Caption); OctalPermissionsCheckBox.Tooltip := LANGPreferencesOctalPermissionsCheckBox_Tooltip; OctalPermissionsCheckBox.MarginStart := 30; OctalPermissionsCheckBox.MarginEnd := 30; OctalPermissionsCheckBox.MarginTop := 2; OctalPermissionsCheckBox.MarginBottom := 2; ShowTextUIDsCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGShowTextUIDsCheckBox_Caption); ShowTextUIDsCheckBox.Tooltip := LANGShowTextUIDsCheckBox_Tooltip; ShowTextUIDsCheckBox.MarginStart := 30; ShowTextUIDsCheckBox.MarginEnd := 30; ShowTextUIDsCheckBox.MarginTop := 2; ShowTextUIDsCheckBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 7; VBox.MarginBottom := 7; Grid5.AddControl(0, 7, 2, 1, ShowFiletypeIcons); Grid5.AddControl(0, 8, 2, 1, DirsInBoldCheckBox); Grid5.AddControl(0, 9, 2, 1, DisableDirectoryBracketsCheckBox); Grid5.AddControl(0, 10, 2, 1, OctalPermissionsCheckBox); Grid5.AddControl(0, 11, 2, 1, ShowTextUIDsCheckBox); Grid5.AddControl(0, 12, 2, 1, VBox); PanelsLabel4 := TGTKLabel.Create(Self); PanelsLabel4.Caption := Format('%s', [LANGPreferencesMovement]); PanelsLabel4.UseMarkup := True; PanelsLabel4.XAlign := 0; PanelsLabel4.MarginStart := 10; PanelsLabel4.MarginEnd := 10; PanelsLabel4.MarginTop := 2; PanelsLabel4.MarginBottom := 2; Grid5.AddControl(0, 13, 2, 1, PanelsLabel4); LynxLikeMotionCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesLynxLikeMotionCheckBox_Caption); LynxLikeMotionCheckBox.MarginStart := 30; LynxLikeMotionCheckBox.MarginEnd := 30; LynxLikeMotionCheckBox.MarginTop := 2; LynxLikeMotionCheckBox.MarginBottom := 2; InsertMovesDownCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesInsertMovesDownCheckBox_Caption); InsertMovesDownCheckBox.MarginStart := 30; InsertMovesDownCheckBox.MarginEnd := 30; InsertMovesDownCheckBox.MarginTop := 2; InsertMovesDownCheckBox.MarginBottom := 2; SpaceMovesDownCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesSpaceMovesDownCheckBox_Caption); SpaceMovesDownCheckBox.MarginStart := 30; SpaceMovesDownCheckBox.MarginEnd := 30; SpaceMovesDownCheckBox.MarginTop := 2; SpaceMovesDownCheckBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid5.AddControl(0, 14, 2, 1, LynxLikeMotionCheckBox); Grid5.AddControl(0, 15, 2, 1, InsertMovesDownCheckBox); Grid5.AddControl(0, 16, 2, 1, SpaceMovesDownCheckBox); Grid5.AddControl(0, 17, 2, 1, VBox); QuickSearchLabel := TGTKLabel.Create(Self); QuickSearchLabel.Caption := LANGPreferences_QuickSearchLabel_Caption; QuickSearchLabel.UseUnderline := True; QuickSearchLabel.XAlign := 0; QuickSearchLabel.MarginStart := 35; QuickSearchLabel.MarginEnd := 35; QuickSearchLabel.MarginTop := 2; QuickSearchLabel.MarginBottom := 2; QuickSearchComboBox := TGTKComboBoxText.Create(Self); QuickSearchComboBox.Tooltip := LANGPreferences_QuickSearchOptionMenu_Tooltip; QuickSearchLabel.FocusControl := QuickSearchComboBox; QuickSearchComboBox.AppendItem(LANGPreferences_QuickSearch_Option1); QuickSearchComboBox.AppendItem(LANGPreferences_QuickSearch_Option2); QuickSearchComboBox.AppendItem(LANGPreferences_QuickSearch_Option3); QuickSearchComboBox.AppendItem(LANGPreferences_QuickSearch_Option4); QuickSearchComboBox.MarginStart := 20; QuickSearchComboBox.MarginEnd := 20; QuickSearchComboBox.MarginTop := 2; QuickSearchComboBox.MarginBottom := 2; Grid5.AddControl(0, 18, 1, 1, QuickSearchLabel); Grid5.AddControl(1, 18, 1, 1, QuickSearchComboBox); // ********* PAGE Applications ApplicationsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5); Grid1 := TGTKGrid.Create(Self); ApplicationsPage.AddControlEx(Grid1, False, True, 5); ViewerLabel := TGTKLabel.Create(Self); ViewerLabel.XAlign := 0; ViewerLabel.MarginStart := 10; ViewerLabel.MarginEnd := 10; ViewerLabel.Caption := Format('%s', [LANGPreferencesViewer]); ViewerLabel.UseMarkup := True; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 0, 5, 1, ViewerLabel); Grid1.AddControl(0, 1, 5, 1, VBox); ViewerCommandComboBox := TGTKComboBoxEntry.Create(Self); for i := 1 to Length(ConfViewersApps) do ViewerCommandComboBox.AppendItem(ConfViewersApps[i]); ViewerCommandComboBox.MarginStart := 10; ViewerCommandComboBox.MarginEnd := 10; ViewerCommandComboBox.MarginTop := 2; ViewerCommandComboBox.MarginBottom := 2; ViewerBrowseButton := TGTKButton.Create(Self); ViewerBrowseButton.Caption := Format(' %s ', [LANGBrowseButton_Caption]); ViewerBrowseButton.OnClick := @ViewerBrowseButtonClick; ViewerBrowseButton.MarginStart := 10; ViewerBrowseButton.MarginEnd := 10; ViewerBrowseButton.MarginTop := 2; ViewerBrowseButton.MarginBottom := 2; ViewerLabel2 := TGTKLabel.Create(Self); ViewerLabel2.Caption := LANGPreferencesCommandSC; ViewerLabel2.FocusControl := ViewerCommandComboBox.Entry; ViewerLabel2.UseUnderline := True; ViewerLabel2.XAlign := 0; ViewerLabel2.MarginTop := 2; ViewerLabel2.MarginBottom := 2; UseInternalViewerCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesUseInternalViewer); UseInternalViewerCheckBox.OnToggled := @UseInternalViewerCheckBoxToggled; UseInternalViewerCheckBox.MarginStart := 30; UseInternalViewerCheckBox.MarginEnd := 30; UseInternalViewerCheckBox.MarginTop := 2; UseInternalViewerCheckBox.MarginBottom := 2; ViewerX11AppComboBox := TGTKComboBoxText.Create(Self); ViewerX11AppComboBox.AppendItem(LANGPreferencesAutodetectXApp); ViewerX11AppComboBox.AppendItem(LANGPreferencesAlwaysRunInTerminal); ViewerX11AppComboBox.AppendItem(LANGPreferencesNeverRunInTerminal); ViewerX11AppComboBox.MarginStart := 10; ViewerX11AppComboBox.MarginEnd := 10; ViewerX11AppComboBox.MarginTop := 2; ViewerX11AppComboBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 12; VBox.MarginEnd := 12; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 2, 1, 1, VBox); Grid1.AddControl(1, 2, 1, 1, ViewerLabel2); Grid1.AddControl(2, 2, 3, 1, ViewerCommandComboBox); Grid1.AddControl(4, 3, 1, 1, ViewerBrowseButton); Grid1.AddControl(3, 3, 1, 1, ViewerX11AppComboBox); Grid1.AddControl(0, 4, 5, 1, UseInternalViewerCheckBox); EditorLabel := TGTKLabel.Create(Self); EditorLabel.Caption := Format('%s', [LANGPreferencesEditor]); EditorLabel.UseMarkup := True; EditorLabel.XAlign := 0; EditorLabel.MarginStart := 10; EditorLabel.MarginEnd := 10; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 13; VBox.MarginBottom := 13; Grid1.AddControl(0, 5, 5, 1, VBox); Grid1.AddControl(0, 6, 5, 1, EditorLabel); VBox := TGTKVBox.Create(Self); VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 7, 5, 1, VBox); EditorCommandComboBox := TGTKComboBoxEntry.Create(Self); for i := 1 to Length(ConfEditorApps) do EditorCommandComboBox.AppendItem(ConfEditorApps[i]); EditorCommandComboBox.MarginStart := 10; EditorCommandComboBox.MarginEnd := 10; EditorCommandComboBox.MarginTop := 2; EditorCommandComboBox.MarginBottom := 2; EditorBrowseButton := TGTKButton.Create(Self); EditorBrowseButton.Caption := Format(' %s ', [LANGBrowseButton_Caption]); EditorBrowseButton.OnClick := @ViewerBrowseButtonClick; EditorBrowseButton.MarginStart := 10; EditorBrowseButton.MarginEnd := 10; EditorBrowseButton.MarginTop := 2; EditorBrowseButton.MarginBottom := 2; EditorLabel2 := TGTKLabel.Create(Self); EditorLabel2.Caption := LANGPreferencesCommandSC; EditorLabel2.FocusControl := EditorCommandComboBox.Entry; EditorLabel2.UseUnderline := True; EditorLabel2.XAlign := 0; EditorLabel2.MarginTop := 2; EditorLabel2.MarginBottom := 2; EditorX11AppComboBox := TGTKComboBoxText.Create(Self); EditorX11AppComboBox.AppendItem(LANGPreferencesAutodetectXApp); EditorX11AppComboBox.AppendItem(LANGPreferencesAlwaysRunInTerminal); EditorX11AppComboBox.AppendItem(LANGPreferencesNeverRunInTerminal); EditorX11AppComboBox.MarginStart := 10; EditorX11AppComboBox.MarginEnd := 10; EditorX11AppComboBox.MarginTop := 2; EditorX11AppComboBox.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 12; VBox.MarginEnd := 12; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 8, 1, 1, VBox); Grid1.AddControl(1, 8, 1, 1, EditorLabel2); Grid1.AddControl(2, 8, 3, 1, EditorCommandComboBox); Grid1.AddControl(4, 9, 1, 1, EditorBrowseButton); Grid1.AddControl(3, 9, 1, 1, EditorX11AppComboBox); TerminalLabel := TGTKLabel.Create(Self); TerminalLabel.Caption := Format('%s', [LANGPreferencesTerminal]); TerminalLabel.UseMarkup := True; TerminalLabel.XAlign := 0; TerminalLabel.MarginStart := 10; TerminalLabel.MarginEnd := 10; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 13; VBox.MarginBottom := 13; Grid1.AddControl(0, 10, 5, 1, VBox); Grid1.AddControl(0, 11, 5, 1, TerminalLabel); VBox := TGTKVBox.Create(Self); VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 12, 5, 1, VBox); TerminalCommandComboBox := TGTKComboBoxEntry.Create(Self); for i := 1 to Length(ConfTerminalApps) do TerminalCommandComboBox.AppendItem(ConfTerminalApps[i]); TerminalCommandComboBox.MarginStart := 10; TerminalCommandComboBox.MarginEnd := 10; TerminalCommandComboBox.MarginTop := 2; TerminalCommandComboBox.MarginBottom := 2; TerminalBrowseButton := TGTKButton.Create(Self); TerminalBrowseButton.Caption := Format(' %s ', [LANGBrowseButton_Caption]); TerminalBrowseButton.OnClick := @ViewerBrowseButtonClick; TerminalBrowseButton.MarginStart := 10; TerminalBrowseButton.MarginEnd := 10; TerminalBrowseButton.MarginTop := 2; TerminalBrowseButton.MarginBottom := 2; TerminalLabel2 := TGTKLabel.Create(Self); TerminalLabel2.Caption := LANGPreferencesCommandSC; TerminalLabel2.XAlign := 0; TerminalLabel2.MarginTop := 2; TerminalLabel2.MarginBottom := 2; TerminalLabel2.FocusControl := TerminalCommandComboBox.Entry; TerminalLabel2.UseUnderline := True; TerminalLabel2.XAlign := 0; TerminalLabel2.MarginTop := 2; TerminalLabel2.MarginBottom := 2; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 12; VBox.MarginEnd := 12; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 13, 1, 1, VBox); Grid1.AddControl(1, 13, 1, 1, TerminalLabel2); Grid1.AddControl(2, 13, 3, 1, TerminalCommandComboBox); Grid1.AddControl(4, 14, 1, 1, TerminalBrowseButton); TempPathLabel := TGTKLabel.Create(Self); TempPathLabel.Caption := Format('%s', [LANGPreferences_TempPathLabel_Caption]); TempPathLabel.UseMarkup := True; TempPathLabel.XAlign := 0; TempPathLabel.MarginStart := 10; TempPathLabel.MarginEnd := 10; VBox := TGTKVBox.Create(Self); VBox.MarginTop := 13; VBox.MarginBottom := 13; Grid1.AddControl(0, 15, 5, 1, VBox); Grid1.AddControl(0, 16, 5, 1, TempPathLabel); VBox := TGTKVBox.Create(Self); VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 17, 5, 1, VBox); VFSTempPathLabel := TGTKLabel.Create(Self); VFSTempPathLabel.Caption := LANGPreferences_VFSTempPathLabel_Caption; VFSTempPathLabel.UseUnderline := True; VFSTempPathLabel.XAlign := 0; VFSTempPathLabel.MarginTop := 2; VFSTempPathLabel.MarginBottom := 2; VFSTempPathEntry := TGTKEntry.Create(Self); VFSTempPathEntry.Tooltip := LANGPreferences_VFSTempPathEntry_Tooltip; VFSTempPathEntry.MarginStart := 10; VFSTempPathEntry.MarginEnd := 10; VFSTempPathEntry.MarginTop := 2; VFSTempPathEntry.MarginBottom := 2; VFSTempPathLabel.FocusControl := VFSTempPathEntry; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 12; VBox.MarginEnd := 12; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid1.AddControl(0, 18, 1, 1, VBox); Grid1.AddControl(1, 18, 1, 1, VFSTempPathLabel); Grid1.AddControl(2, 18, 4, 1, VFSTempPathEntry); // ********* PAGE Fonts FontsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5); FontsLabel2 := TGTKLabel.Create(Self); FontsLabel2.Caption := Format('%s', [LANGPreferences_FontsPage]); FontsLabel2.UseMarkup := True; FontsLabel2.XAlign := 0; FontsLabel2.MarginStart := 10; FontsLabel2.MarginEnd := 10; FontsPage.AddControlEx(FontsLabel2, False, False, 5); Grid3 := TGTKGrid.Create(Self); FontsPage.AddControlEx(Grid3, False, False, 0); ListFontLabel := TGTKLabel.Create(Self); ListFontLabel.Caption := LANGPreferences_ListFont; ListFontLabel.XAlign := 0; ListFontLabel.MarginStart := 5; ListFontLabel.MarginEnd := 5; ListFontLabel.MarginTop := 2; ListFontLabel.MarginBottom := 2; ListFontButton := TGTKFontButton.Create(Self); ListFontButton.OnFontNameChanged := @ListFontButtonFontNameChanged; ListFontButton.MarginStart := 10; ListFontButton.MarginEnd := 10; ListFontButton.MarginTop := 2; ListFontButton.MarginBottom := 2; DefaultFontCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_UseDefaultFont); DefaultFontCheckBox.OnToggled := @DefaultFontCheckBoxToggled; DefaultFontCheckBox.MarginStart := 10; DefaultFontCheckBox.MarginEnd := 10; DefaultFontCheckBox.MarginTop := 4; DefaultFontCheckBox.MarginBottom := 4; VBox := TGTKVBox.Create(Self); VBox.MarginStart := 12; VBox.MarginEnd := 12; VBox.MarginTop := 2; Grid3.AddControl(0, 0, 1, 1, VBox); Grid3.AddControl(1, 0, 1, 1, ListFontLabel); Grid3.AddControl(2, 0, 2, 1, ListFontButton); Grid3.AddControl(1, 1, 3, 1, DefaultFontCheckBox); // ********* PAGE Colors ColorsPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5); ColorsLabel2 := TGTKLabel.Create(Self); ColorsLabel2.Caption := Format('%s', [LANGPreferences_ColorsPage]); ColorsLabel2.UseMarkup := True; ColorsLabel2.XAlign := 0; ColorsLabel2.MarginStart := 10; ColorsLabel2.MarginEnd := 10; ColorsPage.AddControlEx(ColorsLabel2, False, False, 5); Grid4 := TGTKGrid.Create(Self); ColorsPage.AddControlEx(Grid4, False, False, 0); ForegroundLabel := TGTKLabel.Create(Self); ForegroundLabel.Caption := LANGPreferences_Foreground; ForegroundLabel.MarginStart := 5; ForegroundLabel.MarginEnd := 5; ForegroundLabel.MarginTop := 2; ForegroundLabel.MarginBottom := 2; BackgroundLabel := TGTKLabel.Create(Self); BackgroundLabel.Caption := LANGPreferences_Background; BackgroundLabel.MarginStart := 5; BackgroundLabel.MarginEnd := 5; BackgroundLabel.MarginTop := 2; BackgroundLabel.MarginBottom := 2; Grid4.AddControl(1, 0, 3, 1, ForegroundLabel); Grid4.AddControl(4, 0, 3, 1, BackgroundLabel); NormalItemFGColorLabel := TGTKLabel.Create(Self); NormalItemFGColorLabel.Caption := LANGPreferences_NormalItem; NormalItemFGColorLabel.XAlign := 0; NormalItemFGColorLabel.MarginStart := 30; NormalItemFGColorLabel.MarginEnd := 30; NormalItemFGColorLabel.MarginTop := 2; NormalItemFGColorLabel.MarginBottom := 2; NormalItemFGColorButton := TGTKColorButton.Create(Self); NormalItemFGColorButton.SetSizeRequest(30, -1); NormalItemFGColorButton.MarginStart := 5; NormalItemFGColorButton.MarginEnd := 5; NormalItemFGColorButton.MarginTop := 2; NormalItemFGColorButton.MarginBottom := 2; NormalItemBGColorButton := TGTKColorButton.Create(Self); NormalItemBGColorButton.SetSizeRequest(30, -1); NormalItemBGColorButton.MarginStart := 5; NormalItemBGColorButton.MarginEnd := 5; NormalItemBGColorButton.MarginTop := 2; NormalItemBGColorButton.MarginBottom := 2; NormalItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default); NormalItemFGColorDefault.Tooltip := LANGPreferences_SetToDefaultToUseGTKThemeColors; NormalItemFGColorDefault.OnToggled := @ColorButtonDefaultsToggled; NormalItemFGColorDefault.MarginStart := 10; NormalItemFGColorDefault.MarginEnd := 10; NormalItemFGColorDefault.MarginTop := 2; NormalItemFGColorDefault.MarginBottom := 2; Grid4.AddControl(0, 1, 1, 1, NormalItemFGColorLabel); Grid4.AddControl(2, 1, 1, 1, NormalItemFGColorButton); Grid4.AddControl(5, 1, 1, 1, NormalItemBGColorButton); Grid4.AddControl(7, 1, 1, 1, NormalItemFGColorDefault); ActiveItemFGColorLabel := TGTKLabel.Create(Self); ActiveItemFGColorLabel.Caption := LANGPreferences_Cursor; ActiveItemFGColorLabel.XAlign := 0; ActiveItemFGColorLabel.MarginStart := 30; ActiveItemFGColorLabel.MarginEnd := 30; ActiveItemFGColorLabel.MarginTop := 2; ActiveItemFGColorLabel.MarginBottom := 2; ActiveItemFGColorButton := TGTKColorButton.Create(Self); ActiveItemFGColorButton.MarginStart := 5; ActiveItemFGColorButton.MarginEnd := 5; ActiveItemFGColorButton.MarginTop := 2; ActiveItemFGColorButton.MarginBottom := 2; ActiveItemBGColorButton := TGTKColorButton.Create(Self); ActiveItemBGColorButton.MarginStart := 5; ActiveItemBGColorButton.MarginEnd := 5; ActiveItemBGColorButton.MarginTop := 2; ActiveItemBGColorButton.MarginBottom := 2; ActiveItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default); ActiveItemFGColorDefault.Tooltip := LANGPreferences_SetToDefaultToUseGTKThemeColors; ActiveItemFGColorDefault.OnToggled := @ColorButtonDefaultsToggled; ActiveItemFGColorDefault.MarginStart := 10; ActiveItemFGColorDefault.MarginEnd := 10; ActiveItemFGColorDefault.MarginTop := 2; ActiveItemFGColorDefault.MarginBottom := 2; Grid4.AddControl(0, 2, 1, 1, ActiveItemFGColorLabel); Grid4.AddControl(2, 2, 1, 1, ActiveItemFGColorButton); Grid4.AddControl(5, 2, 1, 1, ActiveItemBGColorButton); Grid4.AddControl(7, 2, 1, 1, ActiveItemFGColorDefault); InactiveItemFGColorLabel := TGTKLabel.Create(Self); InactiveItemFGColorLabel.Caption := LANGPreferences_InactiveItem; InactiveItemFGColorLabel.XAlign := 0; InactiveItemFGColorLabel.MarginStart := 30; InactiveItemFGColorLabel.MarginEnd := 30; InactiveItemFGColorLabel.MarginTop := 2; InactiveItemFGColorLabel.MarginBottom := 2; InactiveItemFGColorButton := TGTKColorButton.Create(Self); InactiveItemFGColorButton.MarginStart := 5; InactiveItemFGColorButton.MarginEnd := 5; InactiveItemFGColorButton.MarginTop := 2; InactiveItemFGColorButton.MarginBottom := 2; InactiveItemBGColorButton := TGTKColorButton.Create(Self); InactiveItemBGColorButton.MarginStart := 5; InactiveItemBGColorButton.MarginEnd := 5; InactiveItemBGColorButton.MarginTop := 2; InactiveItemBGColorButton.MarginBottom := 2; InactiveItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default); InactiveItemFGColorDefault.Tooltip := LANGPreferences_SetToDefaultToUseGTKThemeColors; InactiveItemFGColorDefault.OnToggled := @ColorButtonDefaultsToggled; InactiveItemFGColorDefault.MarginStart := 10; InactiveItemFGColorDefault.MarginEnd := 10; InactiveItemFGColorDefault.MarginTop := 2; InactiveItemFGColorDefault.MarginBottom := 2; Grid4.AddControl(0, 3, 1, 1, InactiveItemFGColorLabel); Grid4.AddControl(2, 3, 1, 1, InactiveItemFGColorButton); Grid4.AddControl(5, 3, 1, 1, InactiveItemBGColorButton); Grid4.AddControl(7, 3, 1, 1, InactiveItemFGColorDefault); SelectedItemFGColorLabel := TGTKLabel.Create(Self); SelectedItemFGColorLabel.Caption := LANGPreferences_SelectedItem; SelectedItemFGColorLabel.XAlign := 0; SelectedItemFGColorLabel.MarginStart := 30; SelectedItemFGColorLabel.MarginEnd := 30; SelectedItemFGColorLabel.MarginTop := 2; SelectedItemFGColorLabel.MarginBottom := 2; SelectedItemFGColorButton := TGTKColorButton.Create(Self); SelectedItemFGColorButton.MarginStart := 5; SelectedItemFGColorButton.MarginEnd := 5; SelectedItemFGColorButton.MarginTop := 2; SelectedItemFGColorButton.MarginBottom := 2; Grid4.AddControl(0, 4, 1, 1, SelectedItemFGColorLabel); Grid4.AddControl(2, 4, 1, 1, SelectedItemFGColorButton); LinkItemFGColorLabel := TGTKLabel.Create(Self); LinkItemFGColorLabel.Caption := LANGPreferences_LinkItem; LinkItemFGColorLabel.XAlign := 0; LinkItemFGColorLabel.MarginStart := 30; LinkItemFGColorLabel.MarginEnd := 30; LinkItemFGColorLabel.MarginTop := 2; LinkItemFGColorLabel.MarginBottom := 2; LinkItemFGColorButton := TGTKColorButton.Create(Self); LinkItemFGColorButton.MarginStart := 5; LinkItemFGColorButton.MarginEnd := 5; LinkItemFGColorButton.MarginTop := 2; LinkItemFGColorButton.MarginBottom := 2; LinkItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default); LinkItemFGColorDefault.Tooltip := LANGPreferences_LinkItemHint; LinkItemFGColorDefault.OnToggled := @ColorButtonDefaultsToggled; LinkItemFGColorDefault.MarginStart := 10; LinkItemFGColorDefault.MarginEnd := 10; LinkItemFGColorDefault.MarginTop := 2; LinkItemFGColorDefault.MarginBottom := 2; Grid4.AddControl(0, 5, 1, 1, LinkItemFGColorLabel); Grid4.AddControl(2, 5, 1, 1, LinkItemFGColorButton); Grid4.AddControl(7, 5, 1, 1, LinkItemFGColorDefault); DotFileItemFGColorLabel := TGTKLabel.Create(Self); DotFileItemFGColorLabel.Caption := LANGPreferences_DotFileItem; DotFileItemFGColorLabel.XAlign := 0; DotFileItemFGColorLabel.MarginStart := 30; DotFileItemFGColorLabel.MarginEnd := 30; DotFileItemFGColorLabel.MarginTop := 2; DotFileItemFGColorLabel.MarginBottom := 2; DotFileItemFGColorButton := TGTKColorButton.Create(Self); DotFileItemFGColorButton.MarginStart := 5; DotFileItemFGColorButton.MarginEnd := 5; DotFileItemFGColorButton.MarginTop := 2; DotFileItemFGColorButton.MarginBottom := 2; DotFileItemFGColorDefault := TGTKCheckButton.CreateWithLabel(Self, LANGPreferences_Default); DotFileItemFGColorDefault.Tooltip := LANGPreferences_DotFileItemHint; DotFileItemFGColorDefault.OnToggled := @ColorButtonDefaultsToggled; DotFileItemFGColorDefault.MarginStart := 10; DotFileItemFGColorDefault.MarginEnd := 10; DotFileItemFGColorDefault.MarginTop := 2; DotFileItemFGColorDefault.MarginBottom := 2; Grid4.AddControl(0, 6, 1, 1, DotFileItemFGColorLabel); Grid4.AddControl(2, 6, 1, 1, DotFileItemFGColorButton); Grid4.AddControl(7, 6, 1, 1, DotFileItemFGColorDefault); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 2; VBox.MarginEnd := 2; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid4.AddControl(1, 6, 1, 1, VBox); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 2; VBox.MarginEnd := 2; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid4.AddControl(3, 6, 1, 1, VBox); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 2; VBox.MarginEnd := 2; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid4.AddControl(4, 6, 1, 1, VBox); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 2; VBox.MarginEnd := 2; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid4.AddControl(6, 6, 1, 1, VBox); // ********* PAGE Experimental ExperimentalPage.AddControlEx(TGTKVBox.Create(Self), False, False, 5); ExperimentalLabel2 := TGTKLabel.Create(Self); ExperimentalLabel2.XAlign := 0; ExperimentalLabel2.MarginStart := 10; ExperimentalLabel2.MarginEnd := 10; ExperimentalLabel2.Caption := Format('%s', [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.SetFromIconName('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); Grid6 := TGTKGrid.Create(Self); ExperimentalPage.AddControlEx(Grid6, False, False, 0); FocusRefreshCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesFocusRefreshCheckBox_Caption); FocusRefreshCheckBox.Tooltip := LANGPreferencesFocusRefreshCheckBox_Tooltip; FocusRefreshCheckBox.MarginStart := 30; FocusRefreshCheckBox.MarginEnd := 30; FocusRefreshCheckBox.MarginTop := 2; FocusRefreshCheckBox.MarginBottom := 2; Grid6.AddControl(0, 0, 1, 1, FocusRefreshCheckBox); CompatUseLibcSystemCheckBox := TGTKCheckButton.CreateWithLabel(Self, LANGPreferencesCompatUseLibcSystemCheckBox_Caption); CompatUseLibcSystemCheckBox.Tooltip := LANGPreferencesCompatUseLibcSystemCheckBox_Tooltip; CompatUseLibcSystemCheckBox.MarginStart := 30; CompatUseLibcSystemCheckBox.MarginEnd := 30; CompatUseLibcSystemCheckBox.MarginTop := 2; CompatUseLibcSystemCheckBox.MarginBottom := 2; Grid6.AddControl(0, 2, 1, 1, CompatUseLibcSystemCheckBox); // ****************** OnKeyDown := @FormKeyDown; OnDestroy := @FormDestroy; end; procedure TFPreferences.FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean); begin // if Key = GDK_KEY_Escape then ModalResult := mbCancel; end; procedure TFPreferences.FormDestroy(Sender: TObject); begin end; procedure TFPreferences.DateTimeFormatComboBoxChanged(Sender: TObject); var OldIndex: integer; begin CustomTimeFormatEntry.Enabled := TimeFormatComboBox.ItemIndex = 12; CustomDateFormatEntry.Enabled := DateFormatComboBox.ItemIndex = 15; OldIndex := DateTimeFormatComboBox.ItemIndex; DateTimeFormatComboBox.ClearItems; DateTimeFormatComboBox.AppendItem(FormatDate(FormatTime, True, True, TimeFormatComboBox.ItemIndex, DateFormatComboBox.ItemIndex, 0, CustomDateFormatEntry.Text, CustomTimeFormatEntry.Text)); DateTimeFormatComboBox.AppendItem(FormatDate(FormatTime, True, True, TimeFormatComboBox.ItemIndex, DateFormatComboBox.ItemIndex, 1, CustomDateFormatEntry.Text, CustomTimeFormatEntry.Text)); DateTimeFormatComboBox.ItemIndex := OldIndex; end; (********************************************************************************************************************************) procedure TFPreferences.ViewerBrowseButtonClick(Sender: TObject); procedure BrowseForFile(ToControl: TGTKEntry); var Dialog: TGTKFileChooserDialog; begin Dialog := TGTKFileChooserDialog.CreateWithTitle(Self, LANGPreferences_BrowseForApplication); try 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(ViewerCommandComboBox.Entry) else if Sender = EditorBrowseButton then BrowseForFile(EditorCommandComboBox.Entry) else if Sender = TerminalBrowseButton then BrowseForFile(TerminalCommandComboBox.Entry); end; procedure TFPreferences.DefaultFontCheckBoxToggled(Sender: TObject); var FontDesc: PPangoFontDescription; begin ListFontLabel.Enabled := not DefaultFontCheckBox.Checked; ListFontButton.Enabled := not DefaultFontCheckBox.Checked; if ListFontButton.Enabled then ListFontButton.FontName := LocalListFont else ListFontButton.FontName := DefaultGTKFont; end; procedure TFPreferences.ListFontButtonFontNameChanged(Sender: TObject); begin if ListFontButton.Enabled then LocalListFont := ListFontButton.FontName; end; procedure TFPreferences.ColorButtonDefaultsToggled(Sender: TObject); begin NormalItemFGColorButton.Enabled := not NormalItemFGColorDefault.Checked; NormalItemBGColorButton.Enabled := not NormalItemFGColorDefault.Checked; ActiveItemFGColorButton.Enabled := not ActiveItemFGColorDefault.Checked; ActiveItemBGColorButton.Enabled := not ActiveItemFGColorDefault.Checked; InactiveItemFGColorButton.Enabled := not InactiveItemFGColorDefault.Checked; InactiveItemBGColorButton.Enabled := not InactiveItemFGColorDefault.Checked; LinkItemFGColorButton.Enabled := not LinkItemFGColorDefault.Checked; DotFileItemFGColorButton.Enabled := not DotFileItemFGColorDefault.Checked; end; procedure TFPreferences.DefaultRowHeightCheckBoxToggled(Sender: TObject); begin RowHeightLabel.Enabled := not DefaultRowHeightCheckBox.Checked; RowHeightSpinEdit.Enabled := not DefaultRowHeightCheckBox.Checked; end; procedure TFPreferences.UseInternalViewerCheckBoxToggled(Sender: TObject); begin ViewerCommandComboBox.Enabled := not UseInternalViewerCheckBox.Checked; ViewerLabel2.Enabled := not UseInternalViewerCheckBox.Checked; ViewerBrowseButton.Enabled := not UseInternalViewerCheckBox.Checked; ViewerX11AppComboBox.Enabled := not UseInternalViewerCheckBox.Checked; end; (********************************************************************************************************************************) procedure TFPreferences.AssignDefaultValues; 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; ViewerCommandComboBox.Entry.Text := StrToUTF8(ConfViewer); EditorCommandComboBox.Entry.Text := StrToUTF8(ConfEditor); TerminalCommandComboBox.Entry.Text := StrToUTF8(ConfTerminalCommand); DefaultFontCheckBox.Checked := ConfUseSystemFont; if ValidateColorString(ConfNormalItemFGColor) then NormalItemFGColorButton.Color := ConfNormalItemFGColor else NormalItemFGColorButton.Color := ConfDefaultNormalItemFGColor; if ValidateColorString(ConfNormalItemBGColor) then NormalItemBGColorButton.Color := ConfNormalItemBGColor else NormalItemBGColorButton.Color := ConfDefaultNormalItemBGColor; if ValidateColorString(ConfActiveItemFGColor) then ActiveItemFGColorButton.Color := ConfActiveItemFGColor else ActiveItemFGColorButton.Color := ConfDefaultActiveItemFGColor; if ValidateColorString(ConfActiveItemBGColor) then ActiveItemBGColorButton.Color := ConfActiveItemBGColor else ActiveItemBGColorButton.Color := ConfDefaultActiveItemBGColor; if ValidateColorString(ConfInactiveItemFGColor) then InactiveItemFGColorButton.Color := ConfInactiveItemFGColor else InactiveItemFGColorButton.Color := ConfDefaultInactiveItemFGColor; if ValidateColorString(ConfInactiveItemBGColor) then InactiveItemBGColorButton.Color := ConfInactiveItemBGColor else InactiveItemBGColorButton.Color := ConfDefaultInactiveItemBGColor; if ValidateColorString(ConfSelectedItemFGColor) then SelectedItemFGColorButton.Color := ConfSelectedItemFGColor else SelectedItemFGColorButton.Color := ConfDefaultSelectedItemFGColor; if ValidateColorString(ConfLinkItemFGColor) then LinkItemFGColorButton.Color := ConfLinkItemFGColor else LinkItemFGColorButton.Color := ConfDefaultLinkItemFGColor; if ValidateColorString(ConfDotFileItemFGColor) then DotFileItemFGColorButton.Color := ConfDotFileItemFGColor else DotFileItemFGColorButton.Color := ConfDefaultDotFileItemFGColor; NormalItemFGColorDefault.Checked := ConfNormalItemDefaultColors; ActiveItemFGColorDefault.Checked := ConfCursorDefaultColors; InactiveItemFGColorDefault.Checked := ConfInactiveItemDefaultColors; LinkItemFGColorDefault.Checked := ConfLinkItemDefaultColors; DotFileItemFGColorDefault.Checked := ConfDotFileItemDefaultColors; SelectAllDirectoriesCheckBox.Checked := ConfSelectAllDirs; NewStyleAltOCheckBox.Checked := ConfNewStyleAltO; ShowFuncButtonsCheckBox.Checked := ConfShowFuncButtons; SizeFormatComboBox.ItemIndex := ConfSizeFormat; CmdLineBehaviourComboBox.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; ViewerX11AppComboBox.ItemIndex := ConfViewerTerminalBehaviour; EditorX11AppComboBox.ItemIndex := ConfEditorTerminalBehaviour; FocusRefreshCheckBox.Checked := ConfFocusRefresh; CompatUseLibcSystemCheckBox.Checked := ConfUseLibcSystem; CustomTimeFormatEntry.Text := ConfCustomTimeFormat; CustomDateFormatEntry.Text := ConfCustomDateFormat; DateFormatComboBox.ItemIndex := ConfDateFormat; TimeFormatComboBox.ItemIndex := ConfTimeFormat; DateTimeFormatComboBox.ItemIndex := ConfDateTimeFormat; QuickSearchComboBox.ItemIndex := ConfQuickSearchActivationKey; SortDirectoriesLikeFilesCheckBox.Checked := ConfSortDirectoriesLikeFiles; VFSTempPathEntry.Text := StrToUTF8(ConfTempPath); QuickRenameSkipExtCheckBox.Checked := ConfQuickRenameSkipExt; RightClickSelectCheckBox.Checked := ConfRightClickSelect; DefaultFontCheckBoxToggled(Self); ColorButtonDefaultsToggled(Self); UseInternalViewerCheckBoxToggled(Self); DateTimeFormatComboBoxChanged(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 <> ListFontButton.FontName)); RebuildIcons := ConfRowHeight <> x; ConfRowHeight := x; ConfNumHistoryItems := NumHistoryItemsSpinEdit.AsInteger; ConfClearReadOnlyAttr := ClearROAttr.Checked; ConfDisableMouseRename := DisableMouseRename.Checked; ConfUseFileTypeIcons := ShowFiletypeIcons.Checked; ConfViewer := UTF8ToStr(ViewerCommandComboBox.Entry.Text); ConfEditor := UTF8ToStr(EditorCommandComboBox.Entry.Text); ConfTerminalCommand := UTF8ToStr(TerminalCommandComboBox.Entry.Text); ConfUseSystemFont := DefaultFontCheckBox.Checked; if not ConfUseSystemFont then ConfPanelFont := ListFontButton.FontName; ConfNormalItemFGColor := NormalItemFGColorButton.Color; ConfNormalItemBGColor := NormalItemBGColorButton.Color; ConfActiveItemFGColor := ActiveItemFGColorButton.Color; ConfActiveItemBGColor := ActiveItemBGColorButton.Color; ConfInactiveItemFGColor := InactiveItemFGColorButton.Color; ConfInactiveItemBGColor := InactiveItemBGColorButton.Color; ConfSelectedItemFGColor := SelectedItemFGColorButton.Color; ConfLinkItemFGColor := LinkItemFGColorButton.Color; ConfDotFileItemFGColor := DotFileItemFGColorButton.Color; ConfNormalItemDefaultColors := NormalItemFGColorDefault.Checked; ConfCursorDefaultColors := ActiveItemFGColorDefault.Checked; ConfInactiveItemDefaultColors := InactiveItemFGColorDefault.Checked; ConfLinkItemDefaultColors := LinkItemFGColorDefault.Checked; ConfDotFileItemDefaultColors := DotFileItemFGColorDefault.Checked; ConfSelectAllDirs := SelectAllDirectoriesCheckBox.Checked; ConfNewStyleAltO := NewStyleAltOCheckBox.Checked; ConfSizeFormat := SizeFormatComboBox.ItemIndex; ConfCmdLineTerminalBehaviour := CmdLineBehaviourComboBox.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 := ViewerX11AppComboBox.ItemIndex; ConfEditorTerminalBehaviour := EditorX11AppComboBox.ItemIndex; ConfFocusRefresh := FocusRefreshCheckBox.Checked; ConfUseLibcSystem := CompatUseLibcSystemCheckBox.Checked; ConfDisableFileTips := DisableFileTipsCheckBox.Checked; ConfShowFuncButtons := ShowFuncButtonsCheckBox.Checked; ConfCustomTimeFormat := CustomTimeFormatEntry.Text; ConfCustomDateFormat := CustomDateFormatEntry.Text; ConfDateFormat := DateFormatComboBox.ItemIndex; ConfTimeFormat := TimeFormatComboBox.ItemIndex; ConfDateTimeFormat := DateTimeFormatComboBox.ItemIndex; ConfQuickSearchActivationKey := QuickSearchComboBox.ItemIndex; ConfSortDirectoriesLikeFiles := SortDirectoriesLikeFilesCheckBox.Checked; ConfTempPath := UTF8ToStr(VFSTempPathEntry.Text); ConfQuickRenameSkipExt := QuickRenameSkipExtCheckBox.Checked; ConfRightClickSelect := RightClickSelectCheckBox.Checked; end; (********************************************************************************************************************************) end.