(* Tux Commander - URunFromVFS - The file properties dialog for VFS filesystems Copyright (C) 2007 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 URunFromVFS; interface uses SysUtils, Classes, lazgdk3, lazgtk3, GTKControls, GTKForms, GTKStdCtrls, GTKExtCtrls, GTKPixbuf, UCoreClasses; type TFRunFromVFS = class(TGTKDialog) TitleFrame, ListFontFrame: TGTKFrame; TitleLabel: TGTKLabel; TitleEventBox: TGTKEventBox; TitleIcon: TGTKImage; TitleHBox: TGTKHBox; ButtonBox: TGTKHButtonBox; CloseButton: TGTKButton; Grid: TGTKGrid; ExecuteButton, ExecuteAllButton: TGTKButton; FileNameLabel, FileNameLabel2, FileTypeLabel, FileTypeLabel2, SizeLabel, SizeLabel2, PackedSizeLabel, PackedSizeLabel2, DateLabel, DateLabel2: TGTKLabel; OpensWithLabel, OpensWithLabel2, InfoLabel: TGTKLabel; InfoIcon: TGTKImage; HBox1, HBox2: TGTKHBox; procedure FormCreate(Sender: TObject); override; procedure FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean); procedure ExecuteButtonClick(Sender: TObject); procedure ExecuteAllButtonClick(Sender: TObject); procedure CloseButtonClick(Sender: TObject); end; var FRunFromVFS: TFRunFromVFS; implementation uses ULocale; procedure TFRunFromVFS.FormCreate(Sender: TObject); var VBox: TGTKVBox; begin // SetDefaultSize(55, 40); Caption := LANGFRunFromVFS_Caption; Buttons := []; TitleEventBox := TGTKEventBox.Create(Self); TitleLabel := TGTKLabel.Create(Self); TitleLabel.Caption := Format('%s', [LANGFRunFromVFS_TitleLabel]); 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-properties', 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); CloseButton := TGTKButton.CreateFromIconName(Self, GTK_STOCK_CLOSE); CloseButton.Caption := 'Close'; // CloseButton.Default := True; // Default := CloseButton; CloseButton.OnClick := @CloseButtonClick; ButtonBox := TGTKHButtonBox.Create(Self); ButtonBox.Layout := blEnd; ButtonBox.Spacing := 0; ButtonBox.BorderWidth := 0; FileNameLabel := TGTKLabel.Create(Self); FileNameLabel.Caption := Format('%s', [LANGFRunFromVFS_FileNameLabel]); FileNameLabel.UseMarkup := True; FileNameLabel.XAlign := 1; FileNameLabel.YAlign := 0; FileNameLabel.MarginStart := 10; FileNameLabel.MarginEnd := 10; FileNameLabel.MarginTop := 2; FileNameLabel.MarginBottom := 2; FileNameLabel2 := TGTKLabel.Create(Self); FileNameLabel2.Caption := Format('%s ', ['/tmp/t/bbbbb.txt']); FileNameLabel2.UseMarkup := True; FileNameLabel2.Selectable := True; FileNameLabel2.CanFocus := False; FileNameLabel2.LineWrap := True; FileNameLabel2.XAlign := 0; FileNameLabel2.MarginStart := 10; FileNameLabel2.MarginEnd := 10; FileNameLabel2.MarginTop := 2; FileNameLabel2.MarginBottom := 2; FileTypeLabel := TGTKLabel.Create(Self); FileTypeLabel.XAlign := 1; FileTypeLabel.MarginStart := 10; FileTypeLabel.MarginEnd := 10; FileTypeLabel.MarginTop := 2; FileTypeLabel.MarginBottom := 2; FileTypeLabel.Caption := Format('%s', [LANGFRunFromVFS_FileTypeLabel]); FileTypeLabel.UseMarkup := True; FileTypeLabel2 := TGTKLabel.Create(Self); FileTypeLabel2.Caption := Format('%s ', ['HTML page']); FileTypeLabel2.XAlign := 0; FileTypeLabel2.MarginStart := 10; FileTypeLabel2.MarginEnd := 10; FileTypeLabel2.MarginTop := 2; FileTypeLabel2.MarginBottom := 2; FileTypeLabel2.UseMarkup := True; SizeLabel := TGTKLabel.Create(Self); SizeLabel.Caption := Format('%s', [LANGFRunFromVFS_SizeLabel]); SizeLabel.UseMarkup := True; SizeLabel.XAlign := 1; SizeLabel.MarginStart := 10; SizeLabel.MarginEnd := 10; SizeLabel.MarginTop := 2; SizeLabel.MarginBottom := 2; SizeLabel2 := TGTKLabel.Create(Self); SizeLabel2.Caption := Format('%s ', ['192 168 bytes']); SizeLabel2.UseMarkup := True; SizeLabel2.XAlign := 0; SizeLabel2.MarginStart := 10; SizeLabel2.MarginEnd := 10; SizeLabel2.MarginTop := 2; SizeLabel2.MarginBottom := 2; PackedSizeLabel := TGTKLabel.Create(Self); PackedSizeLabel.Caption := Format('%s', [LANGFRunFromVFS_PackedSizeLabel]); PackedSizeLabel.UseMarkup := True; PackedSizeLabel.XAlign := 1; PackedSizeLabel.MarginStart := 10; PackedSizeLabel.MarginEnd := 10; PackedSizeLabel.MarginTop := 2; PackedSizeLabel.MarginBottom := 2; PackedSizeLabel2 := TGTKLabel.Create(Self); PackedSizeLabel2.Caption := Format('%s ', ['168 192 bytes']); PackedSizeLabel2.UseMarkup := True; PackedSizeLabel2.XAlign := 0; PackedSizeLabel2.MarginStart := 10; PackedSizeLabel2.MarginEnd := 10; PackedSizeLabel2.MarginTop := 2; PackedSizeLabel2.MarginBottom := 2; DateLabel := TGTKLabel.Create(Self); DateLabel.Caption := Format('%s', [LANGFRunFromVFS_DateLabel]); DateLabel.UseMarkup := True; DateLabel.XAlign := 1; DateLabel.MarginStart := 10; DateLabel.MarginEnd := 10; DateLabel.MarginTop := 2; DateLabel.MarginBottom := 2; DateLabel2 := TGTKLabel.Create(Self); DateLabel2.Caption := Format('%s ', ['2007-01-01']); DateLabel2.UseMarkup := True; DateLabel2.XAlign := 0; DateLabel2.MarginStart := 10; DateLabel2.MarginEnd := 10; DateLabel2.MarginTop := 2; DateLabel2.MarginBottom := 2; HBox1 := TGTKHBox.Create(Self); HBox1.Homogeneous := False; HBox1.MarginTop := 2; HBox1.MarginBottom := 2; InfoLabel := TGTKLabel.Create(Self); InfoLabel.Caption := LANGFRunFromVFS_InfoLabel; InfoLabel.UseMarkup := True; InfoLabel.LineWrap := True; InfoLabel.SetSizeRequest(400, -1); InfoIcon := TGTKImage.Create(Self); InfoIcon.SetFromIconName('gtk-dialog-info', isDialog); HBox1.AddControlEx(TGTKVBox.Create(Self), False, False, 12); HBox1.AddControlEx(InfoIcon, False, False, 7); HBox1.AddControlEx(InfoLabel, True, True, 0); HBox1.AddControlEx(TGTKVBox.Create(Self), False, False, 8); OpensWithLabel := TGTKLabel.Create(Self); OpensWithLabel.Caption := Format('%s', [LANGFRunFromVFS_OpensWithLabel]); OpensWithLabel.UseMarkup := True; OpensWithLabel.XAlign := 1; OpensWithLabel.YAlign := 0; OpensWithLabel.MarginStart := 10; OpensWithLabel.MarginEnd := 10; OpensWithLabel.MarginTop := 10; OpensWithLabel.MarginBottom := 10; OpensWithLabel2 := TGTKLabel.Create(Self); OpensWithLabel2.Caption := Format('%s ', ['galeon']); OpensWithLabel2.Selectable := True; OpensWithLabel2.CanFocus := False; OpensWithLabel2.UseMarkup := True; OpensWithLabel2.XAlign := 0; OpensWithLabel2.MarginStart := 10; OpensWithLabel2.MarginEnd := 10; OpensWithLabel2.MarginTop := 10; OpensWithLabel2.MarginBottom := 10; ExecuteButton := TGTKButton.CreateFromIconName(Self, 'gtk-execute'); ExecuteButton.Caption := LANGFRunFromVFS_ExecuteButton; ExecuteButton.OnClick := @ExecuteButtonClick; // ExecuteButton.Spacing := 7; ExecuteAllButton := TGTKButton.Create(Self); ExecuteAllButton.Caption := LANGFRunFromVFS_ExecuteAllButton; ExecuteAllButton.OnClick := @ExecuteAllButtonClick; // ExecuteAllButton.Spacing := 7; Grid := TGTKGrid.Create(Self); ClientArea.AddControlEx(Grid, True, True, 12); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 10; VBox.MarginEnd := 10; VBox.MarginTop := 6; VBox.MarginBottom := 6; Grid.AddControl(0, 0, 1, 1, VBox); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 12; VBox.MarginEnd := 12; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid.AddControl(0, 1, 1, 1, VBox); Grid.AddControl(1, 1, 1, 1, FileNameLabel); Grid.AddControl(3, 1, 2, 1, FileNameLabel2); Grid.AddControl(1, 2, 1, 1, FileTypeLabel); Grid.AddControl(3, 2, 2, 1, FileTypeLabel2); Grid.AddControl(1, 3, 1, 1, SizeLabel); Grid.AddControl(3, 3, 2, 1, SizeLabel2); Grid.AddControl(1, 4, 1, 1, PackedSizeLabel); Grid.AddControl(3, 4, 2, 1, PackedSizeLabel2); Grid.AddControl(1, 5, 1, 1, DateLabel); Grid.AddControl(3, 5, 2, 1, DateLabel2); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 50; VBox.MarginEnd := 50; VBox.MarginTop := 17; VBox.MarginBottom := 17; Grid.AddControl(0, 6, 5, 1, VBox); Grid.AddControl(0, 7, 5, 1, HBox1); Grid.AddControl(1, 8, 1, 1, OpensWithLabel); Grid.AddControl(3, 8, 2, 1, OpensWithLabel2); // Grid.AddControlEx(3, 9, 1, 1, ExecuteButton, [taoFill], [taoShrink], 10, 2); // Grid.AddControlEx(3, 10, 1, 1, ExecuteAllButton, [taoFill], [taoShrink], 10, 2); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 30; VBox.MarginEnd := 30; VBox.MarginTop := 2; VBox.MarginBottom := 2; Grid.AddControl(4, 11, 1, 1, VBox); VBox := TGTKVBox.Create(Self); VBox.MarginStart := 30; VBox.MarginEnd := 30; VBox.MarginTop := 10; VBox.MarginBottom := 10; Grid.AddControl(0, 12, 4, 1, VBox); HBox2 := TGTKHBox.Create(Self); HBox2.BorderWidth := 3; HBox2.Homogeneous := False; HBox2.AddControlEx(ExecuteButton, False, False, 2); HBox2.AddControlEx(ExecuteAllButton, False, False, 2); HBox2.AddControlEx(TGTKEventBox.Create(Self), False, False, 4); ButtonBox.AddControlEnd(CloseButton); HBox2.AddControlEx(ButtonBox, False, False, 2); ActionArea.AddControlEx(HBox2, False, False, 0); CloseButton.SetFocus; OnKeyDown := @FormKeyDown; end; procedure TFRunFromVFS.FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean); begin if Key = GDK_KEY_Escape then begin ModalResult := mbClose; Accept := False; end else if Key = GDK_KEY_Right then begin if ExecuteButton.Focused then ExecuteAllButton.SetFocus else if ExecuteAllButton.Focused then CloseButton.SetFocus else ExecuteButton.SetFocus; Accept := False; end else if Key = GDK_KEY_Left then begin if ExecuteButton.Focused then CloseButton.SetFocus else if ExecuteAllButton.Focused then ExecuteButton.SetFocus else ExecuteAllButton.SetFocus; Accept := False; end; end; procedure TFRunFromVFS.ExecuteButtonClick(Sender: TObject); begin ModalResult := mbYes; end; procedure TFRunFromVFS.ExecuteAllButtonClick(Sender: TObject); begin ModalResult := mbNo; end; procedure TFRunFromVFS.CloseButtonClick(Sender: TObject); begin ModalResult := mbClose; end; end.