diff options
Diffstat (limited to 'UMain.pas')
| -rw-r--r-- | UMain.pas | 532 |
1 files changed, 210 insertions, 322 deletions
@@ -22,7 +22,7 @@ unit UMain; interface uses - gtk2, gdk2, gdk2pixbuf, glib2, pango, StrUtils, SysUtils, Types, Classes, DateUtils, + gtk2, gdk2, gdk2pixbuf, lazglib2, lazgobject2, pango, StrUtils, SysUtils, Types, Classes, DateUtils, GTKForms, GTKControls, GTKMenus, GTKStdCtrls, GTKExtCtrls, GTKView, GTKConsts, GTKUtils, GTKClasses, GTKPixbuf, UEngines, UConfig, UGnome, UVFSCore, UCoreClasses; @@ -175,7 +175,6 @@ type function NotebookFindNotebookAtPointerEvent(Sender: TObject; const AbsX, AbsY: integer): TEphyNotebook; function NotebookMoveTabToAnotherNotebook(Sender: TObject; Destination: TEphyNotebook; const SourceTabNo, DestTabNo: integer): boolean; procedure NotebookTabFocusOnlyEvent(Sender: TObject; const TabNum: integer); - procedure miFilePropertiesClick(Sender: TObject); procedure PasswordButtonClick(Sender: TObject); procedure miPathBoxCopyPathClick(Sender: TObject); procedure miCopyNamesClick(Sender: TObject); @@ -221,22 +220,22 @@ type procedure EditViewFile(LeftPanel: boolean; AListView: TGTKListView; View, NewFile: boolean); procedure RunFile(Path: string; Engine: TPanelEngine; CustomAction: integer); function ActivateCommandLine(Key: word; const ActualPosition: boolean = False): boolean; - procedure ApplySettings(RebuildListViews, RebuildIcons, Startup: boolean); + procedure ApplySettings(RebuildListViews, RebuildIcons, AStartup: boolean); procedure RefreshBookmarksMenu; procedure PopupFileMenuPos; procedure HandleFormFocusIn; procedure SwitchPanelCtrlLeftRight(LeftPanel, LeftArrowPressed: boolean); procedure FillMounterBar; - procedure RebuildListViews(DoRefresh: boolean); + procedure RebuildListViews(ADoRefresh: boolean); procedure FillPluginMenu; procedure NewTab(LeftPanel, SendSelectedDirToBg: boolean; CustomPath: string = ''); - procedure SwitchTab(TabNo: integer; LeftPanel, SetFocus: boolean); + procedure SwitchTab(TabNo: integer; LeftPanel, ASetFocus: boolean); procedure CloseTab(TabNo: integer; LeftPanel, CloseVFSEngine: boolean); procedure AddTabs(LeftPanel: boolean; TabList: TStringList; TabSortIDs, TabSortTypes: TList; SetTabActive: integer); function HandleVFSArchive(LeftPanel: boolean; const FullPath, HighlightItem, TargetPath: string): boolean; function CloseVFS(LeftPanel, SuppressRefresh: boolean): string; procedure ShowBookmarkQuick(LeftPanel: boolean); - procedure SetTabLabel(Notebook: TEphyNotebook; PageIndex: integer; ALabel, Tooltip: string); + procedure SetTabLabel(Notebook: TEphyNotebook; PageIndex: integer; ALabel, ATooltip: string); procedure NewTabInternal(LeftPanel: boolean; _Engine: TPanelEngine; _Path: string; NewTabPosition: integer; SwitchToNewTab: boolean); procedure CopyFilenamesToClipboard(FullPaths, LeftPanel: boolean); function HandleRunFromArchive(var APath: string; Engine: TPanelEngine; Command, FileTypeDesc: string; BypassDialog: boolean): boolean; @@ -263,7 +262,7 @@ uses ULibc, UCoreUtils, ULocale, UChecksum, UChecksumDruid, USplitFile, UFileTypeSettings, UFileAssoc, UChmod, UChown, USymlink, UPreferences, UViewer, UToolTips, UMounterPrefs, UColumns, - UTestPlugin, UConnectionManager, USearch, UProperties, + UTestPlugin, UConnectionManager, USearch, URunFromVFS, uVFSprototypes, UQuickConnect, UConnectionProperties, UError; @@ -309,13 +308,13 @@ begin ConstructMenu; InplaceEditTimer := TGTKTimer.Create(Self); InplaceEditTimer.Enabled := False; - InplaceEditTimer.OnTimer := InplaceEditTimerTimer; + InplaceEditTimer.OnTimer := @InplaceEditTimerTimer; RebuildListViewsTimer := TGTKTimer.Create(Self); RebuildListViewsTimer.Enabled := False; - RebuildListViewsTimer.OnTimer := RebuildListViewsTimerTimer; + RebuildListViewsTimer.OnTimer := @RebuildListViewsTimerTimer; RightMouseSelectPopupTimer := TGTKTimer.Create(Self); RightMouseSelectPopupTimer.Enabled := False; - RightMouseSelectPopupTimer.OnTimer := RightMouseSelectPopupTimerTimer; + RightMouseSelectPopupTimer.OnTimer := @RightMouseSelectPopupTimerTimer; MounterBarHandleBox := TGTKHandleBox.Create(Self); MounterBarHandleBox.SetSizeRequest(10, -1); MainVBox.AddControlEx(MounterBarHandleBox, False, True, 0); @@ -344,7 +343,7 @@ begin OpenTerminalButton.BorderStyle := bsNone; OpenTerminalButton.CanFocus := False; OpenTerminalButton.Tooltip := LANGOpenTerminalButton_Tooltip; - OpenTerminalButton.OnClick := OpenTerminalButtonClick; + OpenTerminalButton.OnClick := @OpenTerminalButtonClick; CommandLineHBox.AddControlEx(CommandLineLabel, False, False, 0); CommandLineHBox.AddControlEx(CommandLineCombo, True, True, 5); CommandLineHBox.AddControlEx(TGTKVSeparator.Create(Self), False, False, 2); @@ -391,13 +390,13 @@ begin F6Button.Caption := LANGF6Button_Caption; F7Button.Caption := LANGF7Button_Caption; F8Button.Caption := LANGF8Button_Caption; - F2Button.OnClick := F6ButtonClick; - F3Button.OnClick := F3F4ButtonClick; - F4Button.OnClick := F3F4ButtonClick; - F5Button.OnClick := F5ButtonClick; - F6Button.OnClick := F6ButtonClick; - F7Button.OnClick := F7ButtonClick; - F8Button.OnClick := F8ButtonClick; + F2Button.OnClick := @F6ButtonClick; + F3Button.OnClick := @F3F4ButtonClick; + F4Button.OnClick := @F3F4ButtonClick; + F5Button.OnClick := @F5ButtonClick; + F6Button.OnClick := @F6ButtonClick; + F7Button.OnClick := @F7ButtonClick; + F8Button.OnClick := @F8ButtonClick; F2Button.CanFocus := False; F3Button.CanFocus := False; F4Button.CanFocus := False; @@ -405,51 +404,51 @@ begin F6Button.CanFocus := False; F7Button.CanFocus := False; F8Button.CanFocus := False; - PanelSeparator.OnMouseUp := PanelSeparatorMouseUp; + PanelSeparator.OnMouseUp := @PanelSeparatorMouseUp; // Events - OnResize := FormResize; - OnDestroy := FormDestroy; - OnKeyDown := FormKeyDown; - OnClose := FormClose; - g_signal_connect_after(FWidget, 'event-after', G_CALLBACK(@form_event_handler), nil); - PanelSeparator.OnResize := PanelSeparatorResize; - LeftListView.OnKeyDown := ListViewKeyDown; - RightListView.OnKeyDown := ListViewKeyDown; - LeftListView.OnEnter := ListViewEnter; - RightListView.OnEnter := ListViewEnter; - LeftPathLabelEventBox.OnMouseDown := PathLabelMouseDown; - RightPathLabelEventBox.OnMouseDown := PathLabelMouseDown; - LeftUpButton.OnClick := PathButtonClick; - LeftRootButton.OnClick := PathButtonClick; - LeftHomeButton.OnClick := PathButtonClick; - RightUpButton.OnClick := PathButtonClick; - RightRootButton.OnClick := PathButtonClick; - RightHomeButton.OnClick := PathButtonClick; - LeftEqualButton.OnClick := miTargetSourceClick; - RightEqualButton.OnClick := miTargetSourceClick; - LeftDisconnectButton.OnClick := DisconnectButtonClick; - RightDisconnectButton.OnClick := DisconnectButtonClick; - LeftLeaveArchiveButton.OnClick := LeaveArchiveButtonClick; - RightLeaveArchiveButton.OnClick := LeaveArchiveButtonClick; - LeftListView.CompareFunc := CompareFunc; - RightListView.CompareFunc := CompareFunc; - LeftListView.CellDataFunc := ListViewCellDataFunc; - RightListView.CellDataFunc := ListViewCellDataFunc; - LeftListView.OnMouseDown := ListViewMouseDown; - RightListView.OnMouseDown := ListViewMouseDown; - LeftListView.OnMouseUp := ListViewMouseUp; - RightListView.OnMouseUp := ListViewMouseUp; -{ LeftListView.OnDblClick := ListViewDblClick; - RightListView.OnDblClick := ListViewDblClick;} - LeftListView.OnSelectionChanged := ListViewSelectionChanged; - RightListView.OnSelectionChanged := ListViewSelectionChanged; - LeftListView.OnMouseMove := ListViewMouseMove; - RightListView.OnMouseMove := ListViewMouseMove; - LeftQuickFindEntry.OnEnter := QuickFindEntryEnter; - RightQuickFindEntry.OnEnter := QuickFindEntryEnter; - LeftPanelNotebook.OnTabSwitched := TabNotebookSwitchPage; - RightPanelNotebook.OnTabSwitched := TabNotebookSwitchPage; + OnResize := @FormResize; + OnDestroy := @FormDestroy; + OnKeyDown := @FormKeyDown; + OnClose := @FormClose; + g_signal_connect_data(PGObject(FWidget), 'event-after', TGCallback(@form_event_handler), nil, nil, [G_CONNECT_AFTER]); + PanelSeparator.OnResize := @PanelSeparatorResize; + LeftListView.OnKeyDown := @ListViewKeyDown; + RightListView.OnKeyDown := @ListViewKeyDown; + LeftListView.OnEnter := @ListViewEnter; + RightListView.OnEnter := @ListViewEnter; + LeftPathLabelEventBox.OnMouseDown := @PathLabelMouseDown; + RightPathLabelEventBox.OnMouseDown := @PathLabelMouseDown; + LeftUpButton.OnClick := @PathButtonClick; + LeftRootButton.OnClick := @PathButtonClick; + LeftHomeButton.OnClick := @PathButtonClick; + RightUpButton.OnClick := @PathButtonClick; + RightRootButton.OnClick := @PathButtonClick; + RightHomeButton.OnClick := @PathButtonClick; + LeftEqualButton.OnClick := @miTargetSourceClick; + RightEqualButton.OnClick := @miTargetSourceClick; + LeftDisconnectButton.OnClick := @DisconnectButtonClick; + RightDisconnectButton.OnClick := @DisconnectButtonClick; + LeftLeaveArchiveButton.OnClick := @LeaveArchiveButtonClick; + RightLeaveArchiveButton.OnClick := @LeaveArchiveButtonClick; + LeftListView.CompareFunc := @CompareFunc; + RightListView.CompareFunc := @CompareFunc; + LeftListView.CellDataFunc := @ListViewCellDataFunc; + RightListView.CellDataFunc := @ListViewCellDataFunc; + LeftListView.OnMouseDown := @ListViewMouseDown; + RightListView.OnMouseDown := @ListViewMouseDown; + LeftListView.OnMouseUp := @ListViewMouseUp; + RightListView.OnMouseUp := @ListViewMouseUp; +{ LeftListView.OnDblClick := @ListViewDblClick; + RightListView.OnDblClick := @ListViewDblClick;} + LeftListView.OnSelectionChanged := @ListViewSelectionChanged; + RightListView.OnSelectionChanged := @ListViewSelectionChanged; + LeftListView.OnMouseMove := @ListViewMouseMove; + RightListView.OnMouseMove := @ListViewMouseMove; + LeftQuickFindEntry.OnEnter := @QuickFindEntryEnter; + RightQuickFindEntry.OnEnter := @QuickFindEntryEnter; + LeftPanelNotebook.OnTabSwitched := @TabNotebookSwitchPage; + RightPanelNotebook.OnTabSwitched := @TabNotebookSwitchPage; LeftPanelNotebook.PopupMenu := TabPopupMenu; RightPanelNotebook.PopupMenu := TabPopupMenu; AfterStart; @@ -495,10 +494,10 @@ begin RightBookmarkButton.CanFocus := False; LeftPasswordButton.CanFocus := False; RightPasswordButton.CanFocus := False; - LeftBookmarkButton.OnClick := BookmarkButtonClick; - RightBookmarkButton.OnClick := BookmarkButtonClick; - LeftPasswordButton.OnClick := PasswordButtonClick; - RightPasswordButton.OnClick := PasswordButtonClick; + LeftBookmarkButton.OnClick := @BookmarkButtonClick; + RightBookmarkButton.OnClick := @BookmarkButtonClick; + LeftPasswordButton.OnClick := @PasswordButtonClick; + RightPasswordButton.OnClick := @PasswordButtonClick; LeftScrolledWindow := TGTKScrolledWindow.Create(Self); RightScrolledWindow := TGTKScrolledWindow.Create(Self); LeftListView := TGTKListView.CreateTyped(Self, True, [lcPointer]); @@ -577,12 +576,12 @@ begin LeftPanelNotebook.AllowDragDrop := True; LeftPanelNotebook.AllowDragOutside := True; LeftPanelNotebook.ShowTooltips := True; - LeftPanelNotebook.OnNotebookReordered := NotebookReordered; - LeftPanelNotebook.OnTabClose := NotebookTabClosed; - LeftPanelNotebook.OnTabDoubleClick := NotebookTabDoubleClick; - LeftPanelNotebook.OnFindNotebookAtPointer := NotebookFindNotebookAtPointerEvent; - LeftPanelNotebook.OnMoveTabToAnotherNotebook := NotebookMoveTabToAnotherNotebook; - LeftPanelNotebook.OnTabFocusOnlyEvent := NotebookTabFocusOnlyEvent; + LeftPanelNotebook.OnNotebookReordered := @NotebookReordered; + LeftPanelNotebook.OnTabClose := @NotebookTabClosed; + LeftPanelNotebook.OnTabDoubleClick := @NotebookTabDoubleClick; + LeftPanelNotebook.OnFindNotebookAtPointer := @NotebookFindNotebookAtPointerEvent; + LeftPanelNotebook.OnMoveTabToAnotherNotebook := @NotebookMoveTabToAnotherNotebook; + LeftPanelNotebook.OnTabFocusOnlyEvent := @NotebookTabFocusOnlyEvent; RightPanelNotebook := TEphyNotebook.Create(Self); RightPanelNotebook.Visible := False; RightPanelNotebook.SetSizeRequest(10, -1); @@ -593,12 +592,12 @@ begin RightPanelNotebook.AllowDragDrop := True; RightPanelNotebook.AllowDragOutside := True; RightPanelNotebook.ShowTooltips := True; - RightPanelNotebook.OnNotebookReordered := NotebookReordered; - RightPanelNotebook.OnTabClose := NotebookTabClosed; - RightPanelNotebook.OnTabDoubleClick := NotebookTabDoubleClick; - RightPanelNotebook.OnFindNotebookAtPointer := NotebookFindNotebookAtPointerEvent; - RightPanelNotebook.OnMoveTabToAnotherNotebook := NotebookMoveTabToAnotherNotebook; - RightPanelNotebook.OnTabFocusOnlyEvent := NotebookTabFocusOnlyEvent; + RightPanelNotebook.OnNotebookReordered := @NotebookReordered; + RightPanelNotebook.OnTabClose := @NotebookTabClosed; + RightPanelNotebook.OnTabDoubleClick := @NotebookTabDoubleClick; + RightPanelNotebook.OnFindNotebookAtPointer := @NotebookFindNotebookAtPointerEvent; + RightPanelNotebook.OnMoveTabToAnotherNotebook := @NotebookMoveTabToAnotherNotebook; + RightPanelNotebook.OnTabFocusOnlyEvent := @NotebookTabFocusOnlyEvent; LeftListBox := TGTKVBox.Create(Self); LeftListBox.AddControlEx(LeftScrolledWindow, True, True, 0); RightListBox := TGTKVBox.Create(Self); @@ -702,54 +701,54 @@ begin miChangePermissions := TGTKMenuItem.CreateTyped(Self, itImageText); miChangePermissions.Caption := LANGmiChangePermissions_Caption; miChangePermissions.StockIcon := 'gtk-convert'; - miChangePermissions.OnClick := miChangePermissionsClick; + miChangePermissions.OnClick := @miChangePermissionsClick; mnuFile.Add(miChangePermissions); miChangeOwner := TGTKMenuItem.Create(Self); miChangeOwner.Caption := LANGmiChangeOwner_Caption; - miChangeOwner.OnClick := miChangeOwnerClick; + miChangeOwner.OnClick := @miChangeOwnerClick; mnuFile.Add(miChangeOwner); mnuFile.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miCreateSymlink := TGTKMenuItem.CreateTyped(Self, itImageText); miCreateSymlink.Caption := LANGmiCreateSymlink_Caption; miCreateSymlink.StockIcon := 'gtk-jump-to'; - miCreateSymlink.OnClick := miCreateSymlinkClick; + miCreateSymlink.OnClick := @miCreateSymlinkClick; mnuFile.Add(miCreateSymlink); miEditSymlink := TGTKMenuItem.Create(Self); miEditSymlink.Caption := LANGmiEditSymlink_Caption; - miEditSymlink.OnClick := miEditSymlinkClick; + miEditSymlink.OnClick := @miEditSymlinkClick; mnuFile.Add(miEditSymlink); mnuFile.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miSplitFile := TGTKMenuItem.Create(Self); miSplitFile.Caption := LANGmiSplitFileCaption; - miSplitFile.OnClick := miSplitFileClick; + miSplitFile.OnClick := @miSplitFileClick; mnuFile.Add(miSplitFile); miMergeFiles := TGTKMenuItem.Create(Self); miMergeFiles.Caption := LANGmiMergeFilesCaption; - miMergeFiles.OnClick := miMergeFilesClick; + miMergeFiles.OnClick := @miMergeFilesClick; mnuFile.Add(miMergeFiles); mnuFile.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miVerifyChecksums := TGTKMenuItem.Create(Self); miVerifyChecksums.Caption := LANGmiVerifyChecksums; - miVerifyChecksums.OnClick := miVerifyChecksumsClick; + miVerifyChecksums.OnClick := @miVerifyChecksumsClick; mnuFile.Add(miVerifyChecksums); miCreateChecksums := TGTKMenuItem.Create(Self); miCreateChecksums.Caption := LANGmiCreateChecksumsCaption; - miCreateChecksums.OnClick := miCreateChecksumsClick; + miCreateChecksums.OnClick := @miCreateChecksumsClick; mnuFile.Add(miCreateChecksums); mnuFile.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miDiff := TGTKMenuItem.Create(Self); miDiff.Caption := '_Diff'; - miDiff.OnClick := miDiffClick; + miDiff.OnClick := @miDiffClick; mnuFile.Add(miDiff); miSynchronizeDirs := TGTKMenuItem.Create(Self); miSynchronizeDirs.Caption := 'S_ynchronize directories'; - miSynchronizeDirs.OnClick := miSynchronizeDirsClick; + miSynchronizeDirs.OnClick := @miSynchronizeDirsClick; mnuFile.Add(miSynchronizeDirs); mnuFile.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miExit := TGTKMenuItem.CreateTyped(Self, itImageText); miExit.Caption := LANGmiExit_Caption; miExit.StockIcon := 'gtk-quit'; - miExit.OnClick := miExitClick; + miExit.OnClick := @miExitClick; mnuFile.Add(miExit); mnuMark := TGTKMenuItem.Create(Self); @@ -760,28 +759,28 @@ begin miSelectGroup.Caption := LANGmiSelectGroup_Caption; miSelectGroup.ShortCuts.Add(MakeGDKShortCut(GDK_KP_PLUS, False, False, False, False)); miSelectGroup.StockIcon := 'gtk-add'; - miSelectGroup.OnClick := mnuMarkClick; + miSelectGroup.OnClick := @mnuMarkClick; mnuMark.Add(miSelectGroup); miUnselectGroup := TGTKMenuItem.CreateTyped(Self, itImageText); miUnselectGroup.Caption := LANGmiUnselectGroup_Caption; miUnselectGroup.ShortCuts.Add(MakeGDKShortCut(GDK_KP_MINUS, False, False, False, False)); miUnselectGroup.StockIcon := 'gtk-remove'; - miUnselectGroup.OnClick := mnuMarkClick; + miUnselectGroup.OnClick := @mnuMarkClick; mnuMark.Add(miUnselectGroup); miSelectAll := TGTKMenuItem.Create(Self); miSelectAll.Caption := LANGmiSelectAll_Caption; miSelectAll.ShortCuts.Add(MakeGDKShortCut(GDK_KP_PLUS, False, False, False, True)); - miSelectAll.OnClick := mnuMarkClick; + miSelectAll.OnClick := @mnuMarkClick; mnuMark.Add(miSelectAll); miUnselectAll := TGTKMenuItem.Create(Self); miUnselectAll.Caption := LANGmiUnselectAll_Caption; miUnselectAll.ShortCuts.Add(MakeGDKShortCut(GDK_KP_MINUS, False, False, False, True)); - miUnselectAll.OnClick := mnuMarkClick; + miUnselectAll.OnClick := @mnuMarkClick; mnuMark.Add(miUnselectAll); miInvertSelection := TGTKMenuItem.Create(Self); miInvertSelection.Caption := LANGmiInvertSelection_Caption; miInvertSelection.ShortCuts.Add(MakeGDKShortCut(GDK_KP_ASTERISK, False, False, False, False)); - miInvertSelection.OnClick := mnuMarkClick; + miInvertSelection.OnClick := @mnuMarkClick; mnuMark.Add(miInvertSelection); mnuCommands := TGTKMenuItem.Create(Self); @@ -792,43 +791,43 @@ begin miSearch.StockIcon := 'gtk-find'; miSearch.Caption := LANGmiSearchCaption2; miSearch.ShortCuts.AddName('<Alt>F7'); - miSearch.OnClick := miSearchClick; + miSearch.OnClick := @miSearchClick; mnuCommands.Add(miSearch); mnuCommands.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miRefresh := TGTKMenuItem.CreateTyped(Self, itImageText); miRefresh.Caption := LANGmiRefresh_Caption; miRefresh.StockIcon := 'gtk-refresh'; miRefresh.ShortCuts.AddName('<Control>R'); - miRefresh.OnClick := miRefreshClick; + miRefresh.OnClick := @miRefreshClick; mnuCommands.Add(miRefresh); miShowDirectorySizes := TGTKMenuItem.CreateTyped(Self, itImageText); miShowDirectorySizes.Caption := LANGmiShowDirectorySizes_Caption; - miShowDirectorySizes.OnClick := miShowDirectorySizesClick; + miShowDirectorySizes.OnClick := @miShowDirectorySizesClick; mnuCommands.Add(miShowDirectorySizes); mnuCommands.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miCopyNames := TGTKMenuItem.CreateTyped(Self, itImageText); miCopyNames.Caption := LANGCopyFileNamesToClipboard; miCopyNames.ShortCuts.AddName('<Shift>F2'); - miCopyNames.OnClick := miCopyNamesClick; + miCopyNames.OnClick := @miCopyNamesClick; mnuCommands.Add(miCopyNames); miCopyFullPaths := TGTKMenuItem.CreateTyped(Self, itImageText); miCopyFullPaths.Caption := LANGCopyFullPathNamesToClipboard; miCopyFullPaths.ShortCuts.AddName('<Control>F2'); miCopyFullPaths.StockIcon := 'gtk-copy'; - miCopyFullPaths.OnClick := miCopyNamesClick; + miCopyFullPaths.OnClick := @miCopyNamesClick; mnuCommands.Add(miCopyFullPaths); mnuCommands.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miNewTab := TGTKMenuItem.CreateTyped(Self, itImageText); miNewTab.Caption := LANGmiNewTab_Caption; miNewTab.ShortCuts.AddName('<Control>T'); - miNewTab.OnClick := miDuplicateTabClick; + miNewTab.OnClick := @miDuplicateTabClick; miNewTab.StockIcon := 'gtk-index'; mnuCommands.Add(miNewTab); mnuCommands.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miTargetSource := TGTKMenuItem.CreateTyped(Self, itImageText); miTargetSource.Caption := LANGmiTargetSource_Caption; // miTargetSource.ShortCuts.AddName('<Alt>O'); - miTargetSource.OnClick := miTargetSourceClick; + miTargetSource.OnClick := @miTargetSourceClick; mnuCommands.Add(miTargetSource); mnuShow := TGTKMenuItem.Create(Self); @@ -838,7 +837,7 @@ begin miShowDotFiles := TGTKMenuItem.CreateTyped(Self, itCheck); miShowDotFiles.Caption := LANGmiShowDotFiles_Caption; miShowDotFiles.Checked := ConfShowDotFiles; - miShowDotFiles.OnClick := miShowDotFilesClick; + miShowDotFiles.OnClick := @miShowDotFilesClick; miShowDotFiles.ShortCuts.Add(ShowDotFilesShortcut); mnuShow.Add(miShowDotFiles); mnuShow.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); @@ -857,20 +856,20 @@ begin miShowTwoMounterBar.Checked := ConfShowMounterBar = 2; mnuShow.Add(miShowTwoMounterBar); // Assign of the events has to be done after all radio items are created - miNoMounterBar.OnClick := miShowMounterBarClick; - miShowOneMounterBar.OnClick := miShowMounterBarClick; - miShowTwoMounterBar.OnClick := miShowMounterBarClick; + miNoMounterBar.OnClick := @miShowMounterBarClick; + miShowOneMounterBar.OnClick := @miShowMounterBarClick; + miShowTwoMounterBar.OnClick := @miShowMounterBarClick; mnuBookmarks := TGTKMenuItem.Create(Self); mnuBookmarks.Caption := LANGmnuBookmarks_Caption; - mnuBookmarks.OnPopup := mnuBookmarksPopup; - mnuBookmarks.OnClick := mnuBookmarksPopup; + mnuBookmarks.OnPopup := @mnuBookmarksPopup; + mnuBookmarks.OnClick := @mnuBookmarksPopup; MainMenu.Items.Add(mnuBookmarks); // mnuBookmarks.Add(TGTKMenuItem.CreateTyped(Self, itTearOff)); miAddBookmark := TGTKMenuItem.CreateTyped(Self, itImageText); miAddBookmark.Caption := LANGmiAddBookmark_Caption; miAddBookmark.StockIcon := 'gtk-add'; - miAddBookmark.OnClick := miAddBookmarkClick; + miAddBookmark.OnClick := @miAddBookmarkClick; mnuBookmarks.Add(miAddBookmark); miEditBookmarks := TGTKMenuItem.CreateTyped(Self, itImageText); miEditBookmarks.Caption := LANGmiEditBookmarks_Caption; @@ -884,7 +883,7 @@ begin BookmarkPopup := TGTKMenuItem.Create(Self); BookmarkPopupDelete := TGTKMenuItem.Create(Self); BookmarkPopupDelete.Caption := LANGBookmarkPopupDelete_Caption; - BookmarkPopupDelete.OnClick := BookmarkPopupDeleteClick; + BookmarkPopupDelete.OnClick := @BookmarkPopupDeleteClick; BookmarkPopup.Add(BookmarkPopupDelete); mnuNetwork := TGTKMenuItem.Create(Self); @@ -899,13 +898,13 @@ begin mnuNetwork.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miOpenConnection := TGTKMenuItem.CreateTyped(Self, itImageText); miOpenConnection.Caption := LANGmiOpenConnectionCaption; - miOpenConnection.OnClick := miOpenConnectionClick; + miOpenConnection.OnClick := @miOpenConnectionClick; miOpenConnection.StockIcon := 'gtk-connect'; miOpenConnection.ShortCuts.AddName('<Control>F'); mnuNetwork.Add(miOpenConnection); miQuickConnect := TGTKMenuItem.CreateTyped(Self, itImageText); miQuickConnect.Caption := LANGmiQuickConnectCaption; - miQuickConnect.OnClick := miQuickConnectClick; + miQuickConnect.OnClick := @miQuickConnectClick; miQuickConnect.ShortCuts.AddName('<Control>N'); mnuNetwork.Add(miQuickConnect); mnuNetwork.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); @@ -914,7 +913,7 @@ begin miDisconnect.Enabled := False; miDisconnect.ShortCuts.AddName('<Shift><Control>F'); miDisconnect.StockIcon := 'gtk-disconnect'; - miDisconnect.OnClick := miDisconnectClick; + miDisconnect.OnClick := @miDisconnectClick; mnuNetwork.Add(miDisconnect); mnuPlugins := TGTKMenuItem.Create(Self); @@ -923,7 +922,7 @@ begin // mnuPlugins.Add(TGTKMenuItem.CreateTyped(Self, itTearOff)); miTestPlugin := TGTKMenuItem.CreateTyped(Self, itImageText); miTestPlugin.Caption := LANGmiTestPluginCaption; - miTestPlugin.OnClick := miTestPluginClick; + miTestPlugin.OnClick := @miTestPluginClick; mnuPlugins.Add(miTestPlugin); mnuPlugins.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); @@ -934,24 +933,24 @@ begin miPreferences := TGTKMenuItem.CreateTyped(Self, itImageText); miPreferences.Caption := LANGmiPreferences_Caption; miPreferences.StockIcon := 'gtk-preferences'; - miPreferences.OnClick := miPreferencesClick; + miPreferences.OnClick := @miPreferencesClick; mnuSettings.Add(miPreferences); miFileTypes := TGTKMenuItem.CreateTyped(Self, itImageText); miFileTypes.Caption := LANGmiFileTypes_Caption; - miFileTypes.OnClick := miFileTypesClick; + miFileTypes.OnClick := @miFileTypesClick; mnuSettings.Add(miFileTypes); miMounterSettings := TGTKMenuItem.CreateTyped(Self, itImageText); miMounterSettings.Caption := LANGmiMounterSettingsCaption; - miMounterSettings.OnClick := miMounterSettingsClick; + miMounterSettings.OnClick := @miMounterSettingsClick; mnuSettings.Add(miMounterSettings); miColumns := TGTKMenuItem.CreateTyped(Self, itImageText); miColumns.Caption := LANGmiColumnsCaption; - miColumns.OnClick := miColumnsClick; + miColumns.OnClick := @miColumnsClick; mnuSettings.Add(miColumns); mnuSettings.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miSavePosition := TGTKMenuItem.CreateTyped(Self, itImageText); miSavePosition.Caption := LANGmiSavePositionCaption; - miSavePosition.OnClick := miSavePositionClick; + miSavePosition.OnClick := @miSavePositionClick; mnuSettings.Add(miSavePosition); mnuHelp := TGTKMenuItem.Create(Self); @@ -961,7 +960,7 @@ begin miAbout := TGTKMenuItem.CreateTyped(Self, itImageText); miAbout.Caption := LANGmiAbout_Caption; miAbout.StockIcon := 'gtk-about'; - miAbout.OnClick := miAboutClick; + miAbout.OnClick := @miAboutClick; mnuHelp.Add(miAbout); // Splitter popup menu @@ -971,52 +970,52 @@ begin Item := TGTKMenuItem.Create(Self); Item.Caption := Format('%d - %d', [i * 10, (10 - i) * 10]); Item.Data := Pointer(i * 10); - Item.OnClick := SplitterPopupMenuClick; + Item.OnClick := @SplitterPopupMenuClick; SplitterPopupMenu.Add(Item); end; // Files popup menu FilePopupMenu := TGTKMenuItem.Create(Self); - FilePopupMenu.OnPopup := FilePopupMenuPopup; + FilePopupMenu.OnPopup := @FilePopupMenuPopup; // Mounter popup menu MounterButtonPopupMenu := TGTKMenuItem.Create(Self); - MounterButtonPopupMenu.OnPopup := MounterButtonPopupMenuPopup; + MounterButtonPopupMenu.OnPopup := @MounterButtonPopupMenuPopup; miMount := TGTKMenuItem.CreateTyped(Self, itImageText); miMount.Caption := LANGmiMountCaption; miMount.StockIcon := 'gtk-connect'; - miMount.OnClick := miMountClick; + miMount.OnClick := @miMountClick; MounterButtonPopupMenu.Add(miMount); miUmount := TGTKMenuItem.CreateTyped(Self, itImageText); miUmount.Caption := LANGmiUmountCaption; miUmount.StockIcon := 'gtk-disconnect'; - miUmount.OnClick := miUmountClick; + miUmount.OnClick := @miUmountClick; MounterButtonPopupMenu.Add(miUmount); miEject := TGTKMenuItem.CreateTyped(Self, itImageText); miEject.Caption := LANGmiEjectCaption; // miEject.StockIcon := 'gtk-cdrom'; - miEject.OnClick := miEjectClick; + miEject.OnClick := @miEjectClick; MounterButtonPopupMenu.Add(miEject); // Tab popup menu TabPopupMenu := TGTKMenuItem.Create(Self); - TabPopupMenu.OnPopup := TabPopupMenuPopup; + TabPopupMenu.OnPopup := @TabPopupMenuPopup; miDuplicateTab := TGTKMenuItem.CreateTyped(Self, itImageText); miDuplicateTab.Caption := LANGmiDuplicateTabCaption; miDuplicateTab.ShortCuts.AddName('<Control>T'); - miDuplicateTab.OnClick := miDuplicateTabClick; + miDuplicateTab.OnClick := @miDuplicateTabClick; miDuplicateTab.StockIcon := 'gtk-index'; TabPopupMenu.Add(miDuplicateTab); TabPopupMenu.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miCloseTab := TGTKMenuItem.CreateTyped(Self, itImageText); miCloseTab.Caption := LANGmiCloseTabCaption; miCloseTab.ShortCuts.AddName('<Control>W'); - miCloseTab.OnClick := miCloseTabClick; + miCloseTab.OnClick := @miCloseTabClick; miCloseTab.StockIcon := 'gtk-close'; TabPopupMenu.Add(miCloseTab); miCloseAllTabs := TGTKMenuItem.CreateTyped(Self, itImageText); miCloseAllTabs.Caption := LANGmiCloseAllTabsCaption; - miCloseAllTabs.OnClick := miCloseAllTabsClick; + miCloseAllTabs.OnClick := @miCloseAllTabsClick; TabPopupMenu.Add(miCloseAllTabs); // Path box popup menu @@ -1025,13 +1024,13 @@ begin miPathBoxRefresh.Caption := LANGmiRefresh_Caption; miPathBoxRefresh.StockIcon := 'gtk-refresh'; miPathBoxRefresh.ShortCuts.AddName('<Control>R'); - miPathBoxRefresh.OnClick := miRefreshClick; + miPathBoxRefresh.OnClick := @miRefreshClick; PathBoxPopupMenu.Add(miPathBoxRefresh); PathBoxPopupMenu.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); miPathBoxCopyPath := TGTKMenuItem.CreateTyped(Self, itImageText); miPathBoxCopyPath.Caption := LANGCopyPathToClipboard; miPathBoxCopyPath.StockIcon := 'gtk-copy'; - miPathBoxCopyPath.OnClick := miPathBoxCopyPathClick; + miPathBoxCopyPath.OnClick := @miPathBoxCopyPathClick; PathBoxPopupMenu.Add(miPathBoxCopyPath); end; @@ -1056,10 +1055,10 @@ begin // Apply on the other side if LeftLV then AListView := FMain.RightListView else AListView := FMain.LeftListView; - HandlerID := gulong(g_object_get_data(G_OBJECT(AListView.Columns[i].FColumn), 'Width_Notify_Handler')); - g_signal_handler_block(AListView.Columns[i].FColumn, HandlerID); + HandlerID := gulong(g_object_get_data(PGObject(AListView.Columns[i].FColumn), 'Width_Notify_Handler')); + g_signal_handler_block(PGObject(AListView.Columns[i].FColumn), HandlerID); AListView.Columns[i].FixedWidth := ConfColumnSizes[AListView.Columns[i].Tag]; - g_signal_handler_unblock(AListView.Columns[i].FColumn, HandlerID); + g_signal_handler_unblock(PGObject(AListView.Columns[i].FColumn), HandlerID); break; end; end; @@ -1074,7 +1073,7 @@ begin GetFirstLastPanelColumn(FirstColumn, LastColumn); // Temporarily disable the fixed height mode to be able to add columns the Pascal way - g_object_set(ListView.FWidget, 'fixed_height_mode', 0, nil); + g_object_set(PGObject(ListView.FWidget), 'fixed_height_mode', [0, nil]); for i := 1 to ConstNumPanelColumns do if ConfColumnVisible[i] then begin @@ -1095,7 +1094,7 @@ begin Column.Caption := ConfColumnTitlesShort[ConfColumnIDs[i]]; - g_object_set(G_OBJECT(Column.FColumn), 'sizing', 2, 'fixed-width', ConfColumnSizes[i], nil); + g_object_set(PGObject(Column.FColumn), 'sizing', [2, 'fixed-width', ConfColumnSizes[i], nil]); gtk_tree_view_column_set_spacing(Column.FColumn, 1); // Bug with column spacing? @@ -1105,7 +1104,7 @@ begin Column.SetProperty('ypad', 0); Column.SetProperty('yalign', 0.5); Column.Tag := i; - g_object_set_data(G_OBJECT(Column.FColumn), 'Column_ID', Pointer(i)); + g_object_set_data(PGObject(Column.FColumn), 'Column_ID', Pointer(i)); if ConfRowHeight > 0 then Column.SetProperty('height', ConfRowHeight); Column.SortID := ListView.Columns.Count - 1; ColumnSortIDs[Column.SortID + 1] := ConfColumnIDs[i]; @@ -1113,7 +1112,7 @@ begin { gtk_cell_renderer_text_set_fixed_height_from_font(PGtkCellRendererText(Column.FRenderer), 1); gtk_cell_renderer_set_fixed_size(PGtkCellRenderer(Column.FRenderer), ConfColumnSizes[i], ConfRowHeight); } if ConfColumnIDs[i] < 3 then begin // Filename column - Column.OnEdited := ListViewEdited; + Column.OnEdited := @ListViewEdited; Column.SetProperty('ellipsize', 3); end; if ConfColumnIDs[i] in [4, 8, 9] then begin @@ -1121,9 +1120,9 @@ begin Column.Alignment := 1; end; Column.SetProperty('single-paragraph-mode', 1); - Column.OnClicked := ListViewColumnClicked; - HandlerID := g_signal_connect(Column.FColumn, 'notify::width', G_CALLBACK(@ListViewColumnResized), ListView); - g_object_set_data(G_OBJECT(Column.FColumn), 'Width_Notify_Handler', Pointer(HandlerID)); + Column.OnClicked := @ListViewColumnClicked; + HandlerID := g_signal_connect_data(PGObject(Column.FColumn), 'notify::width', TGCallback(@ListViewColumnResized), ListView, nil, G_CONNECT_DEFAULT); + g_object_set_data(PGObject(Column.FColumn), 'Width_Notify_Handler', Pointer(HandlerID)); end; // Set the list font @@ -1131,7 +1130,7 @@ begin FontDesc := pango_font_description_from_string(PChar(ConfPanelFont)); gtk_widget_modify_font(ListView.FWidget, FontDesc); end else gtk_widget_modify_font(ListView.FWidget, nil); - g_object_set(ListView.FWidget, 'fixed_height_mode', 1, nil); + g_object_set(PGObject(ListView.FWidget), 'fixed_height_mode', [1, nil]); end; procedure TFMain.FormDestroy(Sender: TObject); @@ -1205,7 +1204,7 @@ begin end else while Assigned(LeftTabEngines[i]) and (TPanelEngine(LeftTabEngines[i]) is TVFSEngine) do begin s := TPanelEngine(LeftTabEngines[i]).SavePath; - LeftTabEngines[i] := InternalCloseEngine(LeftTabEngines[i], LeftLocalEngine); + LeftTabEngines[i] := InternalCloseEngine(TPanelEngine(LeftTabEngines[i]), LeftLocalEngine); if s <> '' then LeftPanelTabs[i] := s else LeftPanelTabs[i] := TPanelEngine(LeftTabEngines[i]).Path; end; @@ -1224,7 +1223,7 @@ begin end else while Assigned(RightTabEngines[i]) and (TPanelEngine(RightTabEngines[i]) is TVFSEngine) do begin s := TPanelEngine(RightTabEngines[i]).SavePath; - RightTabEngines[i] := InternalCloseEngine(RightTabEngines[i], RightLocalEngine); + RightTabEngines[i] := InternalCloseEngine(TPanelEngine(RightTabEngines[i]), RightLocalEngine); if s <> '' then RightPanelTabs[i] := s else RightPanelTabs[i] := TPanelEngine(RightTabEngines[i]).Path; end; @@ -1347,8 +1346,8 @@ begin Application.ProcessMessages; // Need to process all messages before unlocking InternalLockInit(False); - LeftListView.OnColumnsChanged := ListViewColumnsChanged; - RightListView.OnColumnsChanged := ListViewColumnsChanged; + LeftListView.OnColumnsChanged := @ListViewColumnsChanged; + RightListView.OnColumnsChanged := @ListViewColumnsChanged; LeftListView.SetFocus; end; @@ -1720,7 +1719,6 @@ var Data: PDataItem; LeftPanel: boolean; DataList: TList; Engine: TPanelEngine; - AListView: TGTKListView; Ext: string; begin if LeftListView.Focused then LeftPanel := True @@ -1729,11 +1727,9 @@ begin if LeftPanel then begin DataList := LeftPanelData; Engine := LeftPanelEngine; - AListView := LeftListView; end else begin DataList := RightPanelData; Engine := RightPanelEngine; - AListView := RightListView; end; DeactivateQuickFind(LeftPanel); Data := DataList[ItemIndex]; @@ -2306,24 +2302,24 @@ begin if Editing and (InplaceEditItem.Data = Data) and (ColumnID < 3) and ((ColumnID = 0) or (ColumnID = 1) or Assigned(tree_column^.editable_widget)) then begin if (ColumnID = 0) or (ColumnID = 1) then s := FDisplayName else s := nil; - g_object_set(cell, 'text', s, 'foreground-gdk', AFGColor, nil); - g_object_set(cell, 'background-gdk', ABGColor, nil); + g_object_set(PGObject(cell), 'text', [s, 'foreground-gdk', AFGColor, nil]); + g_object_set(PGObject(cell), 'background-gdk', [ABGColor, nil]); end else begin // not editing if ConfDirsInBold then begin - if IsDir or UpDir then g_object_set(cell, 'markup', PChar(Format('<span weight="bold">%s</span>', [QuoteMarkupStr(ColumnData[ColumnID])])), 'foreground-gdk', AFGColor, nil) - else g_object_set(cell, 'markup', PChar(QuoteMarkupStr(ColumnData[ColumnID])), 'foreground-gdk', AFGColor, nil); - end else g_object_set(cell, 'text', ColumnData[ColumnID], 'foreground-gdk', AFGColor, nil); - g_object_set(cell, 'background-gdk', ABGColor, nil); + if IsDir or UpDir then g_object_set(PGObject(cell), 'markup', [PChar(Format('<span weight="bold">%s</span>', [QuoteMarkupStr(ColumnData[ColumnID])])), 'foreground-gdk', AFGColor, nil]) + else g_object_set(PGObject(cell), 'markup', [PChar(QuoteMarkupStr(ColumnData[ColumnID])), 'foreground-gdk', AFGColor, nil]); + end else g_object_set(PGObject(cell), 'text', [ColumnData[ColumnID], 'foreground-gdk', AFGColor, nil]); + g_object_set(PGObject(cell), 'background-gdk', [ABGColor, nil]); end; end else // this is the image column if ConfUseFileTypeIcons then begin // Assign icons - g_object_set(cell, 'cell-background-gdk', ABGColor, nil); + g_object_set(PGObject(cell), 'cell-background-gdk', [ABGColor, nil]); if Sel and (not (Sender as TGTKView).Focused) then begin if Sender = LeftListView then RedrawLeftInactive := True else RedrawRightInactive := True; end; - if Icon <> nil then g_object_set(cell, 'pixbuf', Icon, nil); + if Icon <> nil then g_object_set(PGObject(cell), 'pixbuf', [Icon, nil]); end; end; end; @@ -3530,7 +3526,7 @@ begin FFileTypeSettings.CleanItems; x := AssocList; AssocList := FFileTypeSettings.IntAssocList; - FFileTypeSettings.IntAssocList := x; + FFileTypeSettings.IntAssocList := TList(x); RecreateIcons(AssocList); DoRefresh(True, True, True); DoRefresh(False, True, True); @@ -4103,7 +4099,7 @@ begin Item.Caption := Format(LANGPopupRunS, [QuoteMarkupStr(StrToUTF8(ShortFName), True)]); Item.StockIcon := 'gtk-execute'; Item.Data := Pointer(1); - Item.OnClick := FilePopupMenuItemClick; + Item.OnClick := @FilePopupMenuItemClick; Item.Enabled := Engine.FileCanRun(FileName); FilePopupMenu.Add(Item); end else begin @@ -4113,7 +4109,7 @@ begin else Item.Caption := Format(LANGPopupOpenS, [QuoteMarkupStr(StrToUTF8(ShortFName), True)]); Item.StockIcon := 'gtk-open'; Item.Data := Pointer(1); - Item.OnClick := FilePopupMenuItemClick; + Item.OnClick := @FilePopupMenuItemClick; FilePopupMenu.Add(Item); // Open directory in background tab @@ -4121,7 +4117,7 @@ begin Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGOpenDirectoryInBackgroundTab; Item.Data := Pointer(3); - Item.OnClick := FilePopupMenuItemClick; + Item.OnClick := @FilePopupMenuItemClick; FilePopupMenu.Add(Item); end; end; @@ -4138,7 +4134,7 @@ begin Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := Format(LANGPopupOpenWithS, [TAssocAction(ActionList[j]).ActionName]); Item.Data := ActionList[j]; - Item.OnClick := FilePopupMenuItemClick; + Item.OnClick := @FilePopupMenuItemClick; FilePopupMenu.Add(Item); end; Break; @@ -4156,7 +4152,7 @@ begin if ((j = 0) and (Assoc.DefaultAction > Assoc.ActionList.Count - 1)) or (j = Assoc.DefaultAction) then Item.Caption := Item.Caption + LANGPopupDefault; Item.Data := Assoc.ActionList[j]; - Item.OnClick := FilePopupMenuItemClick; + Item.OnClick := @FilePopupMenuItemClick; FilePopupMenu.Add(Item); end; end; @@ -4165,7 +4161,7 @@ begin Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGPopupOpenWith; Item.Data := Pointer(2); - Item.OnClick := FilePopupMenuItemClick; + Item.OnClick := @FilePopupMenuItemClick; FilePopupMenu.Add(Item); end; @@ -4176,59 +4172,50 @@ begin Item.Caption := LANGPopupViewFile; Item.StockIcon := 'gtk-find'; Item.Data := Pointer(200); // This number HAVE to be here due to F3F4ButtonClick method using - Item.OnClick := F3F4ButtonClick; + Item.OnClick := @F3F4ButtonClick; FilePopupMenu.Add(Item); Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGPopupEditFile; Item.Data := Pointer(201); // Here too - Item.OnClick := F3F4ButtonClick; + Item.OnClick := @F3F4ButtonClick; FilePopupMenu.Add(Item); end; if not DataItem^.IsDir then FilePopupMenu.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGPopupMakeSymlink; Item.StockIcon := 'gtk-jump-to'; - Item.OnClick := miCreateSymlinkClick; + Item.OnClick := @miCreateSymlinkClick; FilePopupMenu.Add(Item); if DataItem^.IsLnk then begin Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGmiEditSymlink_Caption; - Item.OnClick := miEditSymlinkClick; + Item.OnClick := @miEditSymlinkClick; FilePopupMenu.Add(Item); end; FilePopupMenu.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGmiChangePermissions_Caption; Item.StockIcon := 'gtk-convert'; - Item.OnClick := miChangePermissionsClick; + Item.OnClick := @miChangePermissionsClick; Item.Enabled := not UpDir; FilePopupMenu.Add(Item); Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGmiChangeOwner_Caption; - Item.OnClick := miChangeOwnerClick; + Item.OnClick := @miChangeOwnerClick; Item.Enabled := not UpDir; FilePopupMenu.Add(Item); FilePopupMenu.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGPopupRename; - Item.OnClick := F6ButtonClick; + Item.OnClick := @F6ButtonClick; Item.Enabled := not UpDir; FilePopupMenu.Add(Item); Item := TGTKMenuItem.CreateTyped(Self, itImageText); Item.Caption := LANGPopupDelete; Item.StockIcon := 'gtk-delete'; - Item.OnClick := F8ButtonClick; + Item.OnClick := @F8ButtonClick; Item.Enabled := not UpDir; FilePopupMenu.Add(Item); -// FilePopupMenu.Add(TGTKMenuItem.CreateTyped(Self, itSeparator)); - Item := TGTKMenuItem.CreateTyped(Self, itImageText); - Item.Caption := LANGFilePopupMenu_Properties; - Item.StockIcon := 'gtk-properties'; - Item.OnClick := miFilePropertiesClick; - Item.Enabled := False; - Item.Visible := False; -// Item.Enabled := not UpDir; - FilePopupMenu.Add(Item); FreeDataItem(DataItem); end; @@ -4363,7 +4350,7 @@ begin end; end; -procedure TFMain.ApplySettings(RebuildListViews, RebuildIcons, Startup: boolean); +procedure TFMain.ApplySettings(RebuildListViews, RebuildIcons, AStartup: boolean); var i: integer; begin ButtonsBox.Visible := ConfShowFuncButtons; @@ -4419,7 +4406,7 @@ begin end; // Refresh the lists - if not Startup then begin + if not AStartup then begin DoRefresh(True, True, True); DoRefresh(False, True, True); if RebuildListViews then begin @@ -4451,8 +4438,8 @@ begin Item := TGTKMenuItem.CreateTyped(Self, itLabel); Item.Caption := Format('_%s %s', [Chr(Ord('a') + i), StrToUTF8(QuoteMarkupStr(Bookmarks[i]))]); Item.Data := Pointer(i); - Item.OnClick := miBookmarkClick; - Item.OnMouseUp := BookmarkItemMouseUp; + Item.OnClick := @miBookmarkClick; + Item.OnMouseUp := @BookmarkItemMouseUp; if i < Length(ShortcutKeys) - 1 then Item.ShortCuts.AddName(Format('<Alt>%s', [ShortcutKeys[i + 1]])); mnuBookmarks.Add(Item); end; @@ -4602,9 +4589,9 @@ var menu_requisition: TGtkRequisition; max_x, max_y: integer; begin (* Calculate our preferred position. *) - gdk_window_get_origin(PGtkWidget(user_data).Window, x, y); - x^ := x^ + PGtkWidget(user_data).allocation.x + PGtkWidget(user_data).allocation.width; - y^ := y^ + PGtkWidget(user_data).allocation.y + PGtkWidget(user_data).allocation.height; + gdk_window_get_origin(PGtkWidget(user_data)^.Window, x, y); + x^ := x^ + PGtkWidget(user_data)^.allocation.x + PGtkWidget(user_data)^.allocation.width; + y^ := y^ + PGtkWidget(user_data)^.allocation.y + PGtkWidget(user_data)^.allocation.height; (* Now make sure we are on the screen. *) gtk_widget_size_request(PGtkWidget(menu), @menu_requisition); @@ -4621,7 +4608,7 @@ begin miAddBookmark.Visible := True; miEditBookmarks.Visible := False; miBookmarksSeparator.Visible := mnuBookmarks.Count > 3; - gtk_menu_popup(PGtkMenu(mnuBookmarks.FMenu), nil, nil, menu_position_cb, (Sender as TGTKControl).FWidget, 1, GDK_CURRENT_TIME); + gtk_menu_popup(PGtkMenu(mnuBookmarks.FMenu), nil, nil, @menu_position_cb, (Sender as TGTKControl).FWidget, 1, GDK_CURRENT_TIME); if (Sender = LeftBookmarkButton) {and (not LeftLastFocused)} then LeftListView.SetFocus else if (Sender = RightBookmarkButton) {and LeftLastFocused} then RightListView.SetFocus; end; @@ -4667,7 +4654,7 @@ begin if LeftPanel then AListView := LeftListView else AListView := RightListView; FilePopupMenuPopup(AListView); - gtk_menu_popup(PGtkMenu(FilePopupMenu.FMenu), nil, nil, file_popup_position_cb, AListView, 0, gtk_get_current_event_time()); + gtk_menu_popup(PGtkMenu(FilePopupMenu.FMenu), nil, nil, @file_popup_position_cb, AListView, 0, gtk_get_current_event_time()); end; (********************************************************************************************************************************) @@ -4782,7 +4769,7 @@ procedure TFMain.FillMounterBar; Button.Tooltip := Format(LANGMountPointDevice, [StrToUTF8(MountPath), StrToUTF8(Device)]); Button.BorderStyle := bsNone; Button.PopupMenu := MounterButtonPopupMenu; - Button.OnMouseDown := MounterButtonMouseDown; + Button.OnMouseDown := @MounterButtonMouseDown; // Check the icon b := FileExists(IconPath); @@ -4806,7 +4793,7 @@ procedure TFMain.FillMounterBar; (Button as TGTKImageToggleButton).Checked := Mounted; end else (Button as TGTKImageButton).Icon := Pixmap; - Button.OnClick := MounterButtonClick; // It has to be here because setting the Checked property causes the signal emitting + Button.OnClick := @MounterButtonClick; // It has to be here because setting the Checked property causes the signal emitting Table.AddControlEx(2*i + 1, 0, 1, 1, Button, [taoShrink, taoFill], [taoShrink, taoExpand, taoFill], 0, 1); List.Add(Button); @@ -4850,7 +4837,7 @@ var Item: TMounterItem; begin if not (Sender is TGTKButton) then Exit; try - Item := Pointer((Sender as TGTKButton).Tag); + Item := TMounterItem((Sender as TGTKButton).Tag); if (not Assigned(Item)) or (Item.MountPath = '') then DebugMsg(['*** Error in mounter button: incorrect data']) else begin if MounterTableListLeft.IndexOf(Sender) > -1 then LeftPanel := True else if MounterTableListRight.IndexOf(Sender) > -1 then LeftPanel := False else LeftPanel := LeftLastFocused; @@ -4867,7 +4854,7 @@ begin if Pos(Item.MountPath, Engine.Path) = 1 then b := Item.Eject; (Sender as TGTKToggleButton).OnClick := nil; (Sender as TGTKToggleButton).Checked := Item.Mounted; - (Sender as TGTKToggleButton).OnClick := MounterButtonClick; + (Sender as TGTKToggleButton).OnClick := @MounterButtonClick; end else if not b then b := Item.Mount; if b then begin @@ -4929,7 +4916,7 @@ begin if ConfMounterPushDown then begin (LastMounterButton as TGTKToggleButton).OnClick := nil; (LastMounterButton as TGTKToggleButton).Checked := TMounterItem(LastMounterButton.Tag).Mounted; - (LastMounterButton as TGTKToggleButton).OnClick := MounterButtonClick; + (LastMounterButton as TGTKToggleButton).OnClick := @MounterButtonClick; end; end; @@ -4941,7 +4928,7 @@ begin if ConfMounterPushDown then begin (LastMounterButton as TGTKToggleButton).OnClick := nil; (LastMounterButton as TGTKToggleButton).Checked := TMounterItem(LastMounterButton.Tag).Mounted; - (LastMounterButton as TGTKToggleButton).OnClick := MounterButtonClick; + (LastMounterButton as TGTKToggleButton).OnClick := @MounterButtonClick; end; end; @@ -4953,7 +4940,7 @@ begin if ConfMounterPushDown then begin (LastMounterButton as TGTKToggleButton).OnClick := nil; (LastMounterButton as TGTKToggleButton).Checked := TMounterItem(LastMounterButton.Tag).Mounted; - (LastMounterButton as TGTKToggleButton).OnClick := MounterButtonClick; + (LastMounterButton as TGTKToggleButton).OnClick := @MounterButtonClick; end; end; @@ -5060,7 +5047,7 @@ begin gtk_tree_view_set_headers_visible(PGtkTreeView(SourceListView.FWidget), True); end; -procedure TFMain.RebuildListViews(DoRefresh: boolean); +procedure TFMain.RebuildListViews(ADoRefresh: boolean); begin LeftListView.OnColumnsChanged := nil; RightListView.OnColumnsChanged := nil; @@ -5074,23 +5061,23 @@ begin RightListView.Columns.Clear; ConstructColumns(LeftListView); ConstructColumns(RightListView); - if DoRefresh then begin + if ADoRefresh then begin Application.ProcessMessages; FMain.DoRefresh(True, True, True); FMain.DoRefresh(False, True, True); LeftListView.SetSortInfo(ConfMainWindowLeftSortColumn, TGTKTreeViewSortOrder(ConfMainWindowLeftSortType)); RightListView.SetSortInfo(ConfMainWindowRightSortColumn, TGTKTreeViewSortOrder(ConfMainWindowRightSortType)); end; - LeftListView.OnColumnsChanged := ListViewColumnsChanged; - RightListView.OnColumnsChanged := ListViewColumnsChanged; + LeftListView.OnColumnsChanged := @ListViewColumnsChanged; + RightListView.OnColumnsChanged := @ListViewColumnsChanged; end; procedure TFMain.RebuildListViewsTimerTimer(Sender: TObject); begin RebuildListViewsTimer.Enabled := False; RebuildListViews(True); - LeftListView.OnMouseUp := ListViewMouseUp; - RightListView.OnMouseUp := ListViewMouseUp; + LeftListView.OnMouseUp := @ListViewMouseUp; + RightListView.OnMouseUp := @ListViewMouseUp; end; (********************************************************************************************************************************) @@ -5111,7 +5098,7 @@ begin MenuItem2 := TGTKMenuItem.CreateTyped(Self, itImageText); MenuItem2.Caption := LANGPluginAbout; MenuItem2.Tag := i; - MenuItem2.OnClick := miPluginAboutClick; + MenuItem2.OnClick := @miPluginAboutClick; mnuPlugins.Add(MenuItem1); MenuItem1.Add(MenuItem2); end; @@ -5125,7 +5112,7 @@ begin InternalLock; FTestPlugin := TFTestPlugin.Create(Self); if (FTestPlugin.Run = mbOK) and (PluginList.Count > 0) then begin - Engine := TVFSEngine.Create(PluginList[FTestPlugin.PluginOptionMenu.ItemIndex]); + Engine := TVFSEngine.Create(TVFSPlugin(PluginList[FTestPlugin.PluginOptionMenu.ItemIndex])); if not Engine.VFSOpenURI(FTestPlugin.CommandEntry.Text, nil, nil, nil, nil, nil) then begin Application.MessageBox(LANGCouldntOpenURI, [mbOK], mbError, mbOK, mbOK); Exit; @@ -5151,9 +5138,9 @@ const Authors : array[0..1] of PChar = ('', nil); var AboutBox: PGtkWidget; VFSItem: TVFSPlugin; begin - VFSItem := PluginList[(Sender as TGTKMenuItem).Tag]; + VFSItem := TVFSPlugin(PluginList[(Sender as TGTKMenuItem).Tag]); InternalLock; - if (libGnomeUI2Handle = nil) or (@gnome_about_new = nil) then + if (libGnomeUI2Handle = nil) or (gnome_about_new = nil) then Application.MessageBox(Format(LANGPluginAboutInside, [VFSItem.ModuleName, VFSItem.ModuleAbout, VFSItem.ModuleCopyright])) else begin AboutBox := gnome_about_new(PChar(VFSItem.ModuleName), nil, PChar(VFSItem.ModuleCopyright), PChar(VFSItem.ModuleAbout), @Authors, nil, nil, AppIcon64.FPixbuf); @@ -5235,7 +5222,7 @@ begin end; if not DockedToNotebook then begin - ANotebook.InsertPage(0, AVBoxList[0], StrToUTF8(APathSave)); + ANotebook.InsertPage(0, TGTKControl(AVBoxList[0]), StrToUTF8(APathSave)); SetTabLabel(ANotebook, 0, StrToUTF8(APathSave), StrToUTF8(ATabList[0])); end; @@ -5290,7 +5277,7 @@ begin NewTabInternal(LeftPanel, AEngine, APath, NewTabPosition, not SendSelectedDirToBg); end; -procedure TFMain.SwitchTab(TabNo: integer; LeftPanel, SetFocus: boolean); +procedure TFMain.SwitchTab(TabNo: integer; LeftPanel, ASetFocus: boolean); var ANotebook: TEphyNotebook; AListView: TGTKListView; AVBoxList: TList; @@ -5315,7 +5302,7 @@ begin if (AVBoxList.Count < TabNo) or (TabNo < -1) then Exit; // Remove any objects - g_object_ref(AScrolledWindow.FWidget); + g_object_ref(PGObject(AScrolledWindow.FWidget)); if ListBox.ChildrenCount > 0 then ListBox.RemoveControl(AScrolledWindow); if AVBoxList.Count > 0 then for i := 0 to AVBoxList.Count - 1 do @@ -5330,8 +5317,8 @@ begin ListBox.Visible := True; ANotebook.Visible := False; end; - g_object_unref(AScrolledWindow.FWidget); - if SetFocus then AListView.SetFocus; + g_object_unref(PGObject(AScrolledWindow.FWidget)); + if ASetFocus then AListView.SetFocus; end; procedure TFMain.TabNotebookSwitchPage(Sender: TObject; const NewTabNum: integer; const ShouldFocus: boolean); @@ -5361,8 +5348,8 @@ begin AListView := RightListView; end; SwitchTab(NewTabNum, LeftPanel, ShouldFocus); - if LeftPanel then LeftPanelEngine := TabEngines[NewTabNum] - else RightPanelEngine := TabEngines[NewTabNum]; + if LeftPanel then LeftPanelEngine := TPanelEngine(TabEngines[NewTabNum]) + else RightPanelEngine := TPanelEngine(TabEngines[NewTabNum]); ChangingDir(LeftPanel, ATabList[NewTabNum], PathsHighlight[NewTabNum], '', False, True); AListView.SetSortInfo(Integer(TabSortIDs[NewTabNum]), TGTKTreeViewSortOrder(Integer(TabSortTypes[NewTabNum]))); @@ -5435,13 +5422,13 @@ begin end; if TabNo > 0 then begin - Engine := TabEngines[TabNo]; + Engine := TPanelEngine(TabEngines[TabNo]); if (Engine is TVFSEngine) and CloseVFSEngine and (not CheckForUnsavedConnection(Engine as TVFSEngine, True)) then Exit; end; if (ANotebook.ChildrenCount > 2) and (TabNo >= 0) then begin // Close one tab, leave tab bar visible - Engine := TabEngines[TabNo]; + Engine := TPanelEngine(TabEngines[TabNo]); // !!!!!!!! NewPageIndex := ANotebook.PageIndex - Ord((TabNo = ANotebook.PageIndex) and (TabNo = ANotebook.ChildrenCount - 1)) + Ord((TabNo = ANotebook.PageIndex) and (ANotebook.ChildrenCount > TabNo + 1)); @@ -5471,8 +5458,8 @@ begin // Change dir to the opposite if (TabNo >= 0) and (TabNo = ANotebook.PageIndex) then begin // we should not change directory while closing all tabs... i := Ord(not Boolean(ANotebook.PageIndex)); - if LeftPanel then LeftPanelEngine := TabEngines[i] - else RightPanelEngine := TabEngines[i]; + if LeftPanel then LeftPanelEngine := TPanelEngine(TabEngines[i]) + else RightPanelEngine := TPanelEngine(TabEngines[i]); ChangingDir(LeftPanel, ATabList[i], PathsHighlight[i]); AListView.SetSortInfo(Integer(TabSortIDs[i]), TGTKTreeViewSortOrder(Integer(TabSortTypes[i]))); end; @@ -5482,10 +5469,10 @@ begin ATabList.Clear; PathsHighlight.Clear; for i := 0 to TabEngines.Count - 1 do - if (TPanelEngine(TabEngines[i]) is TVFSEngine) and CloseVFSEngine and ((LeftPanel and (LeftPanelEngine <> TabEngines[i])) or - ((not LeftPanel) and (RightPanelEngine <> TabEngines[i]))) + if (TPanelEngine(TabEngines[i]) is TVFSEngine) and CloseVFSEngine and ((LeftPanel and (LeftPanelEngine <> TPanelEngine(TabEngines[i]))) or + ((not LeftPanel) and (RightPanelEngine <> TPanelEngine(TabEngines[i])))) then begin - Engine := TabEngines[i]; + Engine := TPanelEngine(TabEngines[i]); while Engine is TVFSEngine do try if (i <> TabNo) and (not CheckForUnsavedConnection(Engine as TVFSEngine, False)) then Exit; @@ -5569,7 +5556,7 @@ begin TabNotebookSwitchPage(ANotebook, SetTabActive, True); end; -procedure TFMain.SetTabLabel(Notebook: TEphyNotebook; PageIndex: integer; ALabel, Tooltip: string); +procedure TFMain.SetTabLabel(Notebook: TEphyNotebook; PageIndex: integer; ALabel, ATooltip: string); var g: PChar; begin if (ConfTabMaxLength > 0) and (g_utf8_strlen(PChar(ALabel), -1) > ConfTabMaxLength) then begin @@ -5580,7 +5567,7 @@ begin libc_free(g); end; Notebook.SetTabCaption(PageIndex, ALabel); - Notebook.SetTabTooltip(PageIndex, Tooltip); + Notebook.SetTabTooltip(PageIndex, ATooltip); end; procedure TFMain.NotebookReordered(Sender: TObject; const Source, Dest: integer); @@ -5889,7 +5876,7 @@ begin miEditBookmarks.Visible := False; miBookmarksSeparator.Visible := False; - gtk_menu_popup(PGtkMenu(mnuBookmarks.FMenu), nil, nil, menu_position_cb, SenderControl.FWidget, 1, GDK_CURRENT_TIME); + gtk_menu_popup(PGtkMenu(mnuBookmarks.FMenu), nil, nil, @menu_position_cb, SenderControl.FWidget, 1, GDK_CURRENT_TIME); if LeftPanel then LeftListView.SetFocus else RightListView.SetFocus; end; @@ -6053,105 +6040,6 @@ begin libc_chdir('/'); end; - -(********************************************************************************************************************************) -procedure TFMain.miFilePropertiesClick(Sender: TObject); -var LeftPanel: boolean; - AListView: TGTKListView; - Engine: TPanelEngine; - DataList: TList; - i: integer; - SelCount: longint; - AFile, NextItem1, NextItem2: string; - Stat: PDataItem; -{ AWorkingThread: TWorkerThread; - AFProgress: TFProgress; } -begin - try - InternalLock; - Stat := nil; - if LeftListView.Focused then LeftPanel := True else - if RightListView.Focused then LeftPanel := False else - LeftPanel := LeftLastFocused; - if LeftPanel then begin - AListView := LeftListView; - Engine := LeftPanelEngine; - DataList := LeftPanelData; - end else begin - AListView := RightListView; - Engine := RightPanelEngine; - DataList := RightPanelData; - end; - - SelCount := 0; - if DataList.Count > 0 then - for i := 0 to DataList.Count - 1 do - with PDataItem(DataList[i])^ do - if Selected and (not UpDir) then Inc(SelCount); - if (SelCount = 0) and ((not Assigned(AListView.Selected)) {or PDataItem(AListView.Selected.Data)^.UpDir}) then begin - Application.MessageBox(LANGNoFilesSelected, [mbOK], mbInfo, mbNone, mbOK); - Exit; - end; - - AFile := ''; - if SelCount = 0 then AFile := PDataItem(AListView.Selected.Data)^.FName else - for i := 0 to DataList.Count - 1 do - with PDataItem(DataList[i])^ do - if Selected and (not UpDir) then begin - AFile := FName; - Break; - end; - - if AFile <> '' then - try - FProperties := TFProperties.Create(Self); - Stat := Engine.GetFileInfo(IncludeTrailingPathDelimiter(Engine.Path) + AFile, True, True, nil); - if not Assigned(Stat) then Exit; -// FProperties.AssignMode(Stat^.Mode, AFile, Stat^.UID, Stat^.GID); - FProperties.DisplayFileName := AFile; - if FProperties.Run = mbOK then begin -{ FindNextSelected(AListView, DataList, NextItem1, NextItem2); - - AWorkingThread := TWorkerThread.Create; - AFProgress := TFProgress.Create(Self); - try - AFProgress.SetNumBars(False); - AFProgress.ProgressBar.Value := 0; - AFProgress.Label1.Caption := LANGChownProgress; - AWorkingThread.ProgressForm := AFProgress; - if Assigned(AListView.Selected) then AWorkingThread.SelectedItem := AListView.Selected.Data; - AWorkingThread.ParamBool1 := FChown.RecursiveCheckButton.Checked; - AWorkingThread.ParamCardinal1 := FChown.LastUID; - AWorkingThread.ParamCardinal2 := FChown.LastGID; - AWorkingThread.Engine := Engine; - AWorkingThread.LeftPanel := LeftPanel; - AWorkingThread.DataList := DataList; - AWorkingThread.WorkerProcedure := ChownFilesWorker; - AWorkingThread.Resume; - AFProgress.ParentForm := FMain; - if (SelCount > 1) or FChown.RecursiveCheckButton.Checked then AFProgress.ShowModal; - ProcessProgressThread(AWorkingThread, AFProgress); - AFProgress.Close; - finally - AFProgress.Free; - AWorkingThread.Free; - end; } - - NextItem1 := ''; - NextItem2 := ''; - ChangingDir(LeftPanel, Engine.Path, NextItem1, NextItem2); - DoRefresh(not LeftPanel, True, True); - end; - finally - FreeDataItem(Stat); - FProperties.Free; - end; - finally - Application.ProcessMessages; - InternalLockInit(False); - end; -end; - (********************************************************************************************************************************) procedure TFMain.CopyFilenamesToClipboard(FullPaths, LeftPanel: boolean); var DataList: TList; |
