mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-05 14:21:38 +02:00
MG: added filters and history to TOpenDialog
git-svn-id: trunk@1713 -
This commit is contained in:
parent
d277ae8f38
commit
9217c2841c
@ -62,8 +62,8 @@ type
|
||||
TCommonDialog = class(TComponent)
|
||||
private
|
||||
FHandle : integer;
|
||||
FInitialHeight: integer;
|
||||
FInitialWidth: integer;
|
||||
FHeight: integer;
|
||||
FWidth: integer;
|
||||
FOnCanClose: TCloseQueryEvent;
|
||||
FOnShow, FOnClose : TNotifyEvent;
|
||||
FTitle : string;
|
||||
@ -85,8 +85,8 @@ type
|
||||
property OnCanClose: TCloseQueryEvent read FOnCanClose write FOnCanClose;
|
||||
property OnShow : TNotifyEvent read FOnShow write FOnShow;
|
||||
property HelpContext: THelpContext read FHelpContext write FHelpContext default 0;
|
||||
property InitialWidth: integer read FInitialWidth write FInitialWidth;
|
||||
property InitialHeight: integer read FInitialHeight write FInitialHeight;
|
||||
property Width: integer read FWidth write FWidth;
|
||||
property Height: integer read FHeight write FHeight;
|
||||
end;
|
||||
|
||||
|
||||
@ -305,6 +305,9 @@ end.
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.13 2002/05/30 14:11:11 lazarus
|
||||
MG: added filters and history to TOpenDialog
|
||||
|
||||
Revision 1.12 2002/05/29 21:44:37 lazarus
|
||||
MG: improved TCommon/File/OpenDialog, fixed TListView scrolling and broder
|
||||
|
||||
|
@ -77,9 +77,6 @@ end;
|
||||
{------------------------------------------------------------------------------}
|
||||
function TFileDialog.DoExecute : boolean;
|
||||
begin
|
||||
CNSendMessage(LM_SETFILTER, Self, nil);
|
||||
CNSendMessage(LM_SETFILENAME, Self, nil);
|
||||
|
||||
Result:= inherited DoExecute;
|
||||
end;
|
||||
|
||||
@ -115,10 +112,12 @@ function TOpenDialog.DoExecute: boolean;
|
||||
procedure DereferenceLinks;
|
||||
var i: integer;
|
||||
begin
|
||||
Filename:=ExpandFilename(Filename);
|
||||
if Filename<>'' then
|
||||
Filename:=ExpandFilename(Filename);
|
||||
if Files<>nil then begin
|
||||
for i:=0 to Files.Count-1 do begin
|
||||
Files[i]:=ExpandFilename(Files[i]);
|
||||
if Files[i]<>'' then
|
||||
Files[i]:=ExpandFilename(Files[i]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -128,9 +127,11 @@ begin
|
||||
if (not (ofNoDereferenceLinks in Options)) then begin
|
||||
DereferenceLinks;
|
||||
end;
|
||||
if (not (ofNoChangeDir in Options)) and (ExtractFilePath(Filename)<>'') then
|
||||
begin
|
||||
InitialDir:=ExtractFilePath(Filename);
|
||||
if (not (ofNoChangeDir in Options)) then begin
|
||||
if (ExtractFilePath(Filename)<>'') then
|
||||
InitialDir:=ExtractFilePath(Filename)
|
||||
else if (Files.Count>0) and (ExtractFilePath(Files[0])<>'') then
|
||||
InitialDir:=ExtractFilePath(Files[0]);
|
||||
end;
|
||||
if Result then begin
|
||||
if (DefaultExt<>'') and (ExtractFileExt(Filename)='')
|
||||
@ -202,6 +203,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.6 2002/05/30 14:11:11 lazarus
|
||||
MG: added filters and history to TOpenDialog
|
||||
|
||||
Revision 1.5 2002/05/29 21:44:38 lazarus
|
||||
MG: improved TCommon/File/OpenDialog, fixed TListView scrolling and broder
|
||||
|
||||
|
@ -860,7 +860,10 @@ begin
|
||||
CanClose:=True;
|
||||
theDialog.OnCanClose(theDialog,CanClose);
|
||||
Result:=not CanClose;
|
||||
if CanClose then StoreCommonDialogSetup(theDialog);
|
||||
end;
|
||||
if not Result then begin
|
||||
StoreCommonDialogSetup(theDialog);
|
||||
DestroyCommonDialogAddOns(theDialog);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -894,7 +897,7 @@ begin
|
||||
if FileExists(Filename) then begin
|
||||
Details:=GetFileDescription(Filename);
|
||||
end else begin
|
||||
Details:='(file does not exist)';
|
||||
Details:='(file not found: "'+Filename+'")';
|
||||
end;
|
||||
gtk_label_set_text(PGtkLabel(FileDetailLabel),PChar(Details));
|
||||
end;
|
||||
@ -991,16 +994,48 @@ function GTKDialogMenuActivateCB(widget: PGtkWidget; data: gPointer): GBoolean;
|
||||
cdecl;
|
||||
var
|
||||
theDialog: TCommonDialog;
|
||||
//NewFilename: string;
|
||||
|
||||
procedure CheckFilterActivated(FilterWidget: PGtkWidget);
|
||||
var AFilterEntry: PFileSelFilterEntry;
|
||||
begin
|
||||
if FilterWidget=nil then exit;
|
||||
AFilterEntry:=gtk_object_get_data(PGtkObject(FilterWidget),
|
||||
'LCLIsFilterMenuItem');
|
||||
if (AFilterEntry<>nil) and (AFilterEntry^.Mask<>nil) then begin
|
||||
gtk_file_selection_complete(GTK_FILE_SELECTION(theDialog.Handle),
|
||||
AFilterEntry^.Mask);
|
||||
UpdateDetailView(TOpenDialog(theDialog));
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
AHistoryEntry: PFileSelHistoryEntry;
|
||||
FilterMenu, ActiveFilterMenuItem: PGtkWidget;
|
||||
begin
|
||||
Result:=false;
|
||||
theDialog:=TCommonDialog(GetLCLObject(Widget));
|
||||
if (theDialog is TOpenDialog) then begin
|
||||
if gtk_object_get_data(PGtkObject(Widget), 'IsHistoryMenuItem')<>nil then
|
||||
begin
|
||||
|
||||
//UpdateDetailView(TOpenDialog(theDialog));
|
||||
// check if history activated
|
||||
AHistoryEntry:=gtk_object_get_data(PGtkObject(Widget),
|
||||
'LCLIsHistoryMenuItem');
|
||||
if (AHistoryEntry<>nil) and (AHistoryEntry^.Filename<>nil) then begin
|
||||
// use has choosen a history file
|
||||
// -> select it in the filedialog
|
||||
gtk_file_selection_complete(GTK_FILE_SELECTION(theDialog.Handle),
|
||||
AHistoryEntry^.Filename);
|
||||
// restore filter
|
||||
if DirectoryExists(AHistoryEntry^.Filename) then begin
|
||||
FilterMenu:=gtk_object_get_data(PGtkObject(theDialog.Handle),
|
||||
'LCLFilterMenu');
|
||||
if FilterMenu<>nil then begin
|
||||
ActiveFilterMenuItem:=gtk_menu_get_active(GTK_MENU(FilterMenu));
|
||||
CheckFilterActivated(ActiveFilterMenuItem);
|
||||
end;
|
||||
end;
|
||||
UpdateDetailView(TOpenDialog(theDialog));
|
||||
end;
|
||||
// check if filter activated
|
||||
CheckFilterActivated(Widget);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1946,6 +1981,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.77 2002/05/30 14:11:12 lazarus
|
||||
MG: added filters and history to TOpenDialog
|
||||
|
||||
Revision 1.76 2002/05/29 21:44:38 lazarus
|
||||
MG: improved TCommon/File/OpenDialog, fixed TListView scrolling and broder
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user