View Issue Details

IDProjectCategoryView StatusLast Update
0025409LazarusWidgetsetpublic2013-12-11 12:16
ReporteraccSoneAssigned ToPaul Ishenin 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version1.3 (SVN)Product Build 
Target VersionFixed in Version1.4 
Summary0025409: TOpenDialog and TSaveDialog dialogs doesn't work (is not implemented) in Cocoa widgetset
DescriptionTFileOpen and TSaveDialog are not implemented in Cocoa widgetset
Steps To ReproduceOpen attached project. Compile with Carbon32. Press Open or Save button -> File dialogs are working. Compile with Cocoa32 or Cocoa64 -> File dialogs doesn't work -> has to be implemented.
TagsNo tags attached.
Fixed in Revision43523
LazTarget-
WidgetsetCocoa
Attached Files
  • testAppFileDialog.zip (5,885 bytes)
  • cocoawsdialogs.pp (7,132 bytes)
    {
     *****************************************************************************
     *                              CocoaWSDialogs.pp                           *
     *                              --------------                               * 
     *                                                                           *
     *                                                                           *
     *****************************************************************************
    
     *****************************************************************************
      This file is part of the Lazarus Component Library (LCL)
    
      See the file COPYING.modifiedLGPL.txt, included in this distribution,
      for details about the license.
     *****************************************************************************
    }
    unit CocoaWSDialogs;
    
    {$mode objfpc}{$H+}
    {$modeswitch objectivec1}
    
    interface
    
    
    uses
      // RTL,FCL
      MacOSAll, CocoaAll, Classes,
      // LCL
      Controls, StrUtils, SysUtils, Forms, Dialogs, Graphics, Masks, LCLType, LMessages, LCLProc,
      // Widgetset
      WSForms, WSLCLClasses, WSProc, WSDialogs, LCLMessageGlue,
      // LCL Cocoa
      CocoaPrivate, CocoaUtils, CocoaWSCommon, CocoaWSStdCtrls;
      
    type
    
      { TCocoaWSCommonDialog }
    
      TCocoaWSCommonDialog = class(TWSCommonDialog)
      published
      end;
    
      { TCocoaWSFileDialog }
    
      TCocoaWSFileDialog = class(TWSFileDialog)
      published
        class procedure ShowModal(const ACommonDialog: TCommonDialog); override;
      end;
    
      { TCocoaWSOpenDialog }
    
      TCocoaWSOpenDialog = class(TWSOpenDialog)
      published
      end;
    
      { TCocoaWSSaveDialog }
    
      TCocoaWSSaveDialog = class(TWSSaveDialog)
      published
      end;
    
      { TCocoaWSSelectDirectoryDialog }
    
      TCocoaWSSelectDirectoryDialog = class(TWSSelectDirectoryDialog)
      published
      end;
    
      { TCocoaWSColorDialog }
    
      TCocoaWSColorDialog = class(TWSColorDialog)
      published
        class procedure ShowModal(const ACommonDialog: TCommonDialog); override;
      end;
    
      { TCocoaWSColorButton }
    
      TCocoaWSColorButton = class(TWSColorButton)
      published
      end;
    
      { TCocoaWSFontDialog }
    
      TCocoaWSFontDialog = class(TWSFontDialog)
      published
        class procedure ShowModal(const ACommonDialog: TCommonDialog); override;
      end;
    
    
    implementation
    
    
    
    { TCocoaWSFileDialog }
    
    
    {------------------------------------------------------------------------------
      Method:  TCocoaWSFileDialog.ShowModal
      Params:  ACommonDialog - LCL common dialog
    
     ------------------------------------------------------------------------------}
    class procedure TCocoaWSFileDialog.ShowModal(const ACommonDialog: TCommonDialog);
     {
      Called by Execute method of TOpenDialog, TSaveDialog and TSelectDirectoryDialog.
     }
    var
      FileDialog: TFileDialog;
      i,m:integer;
      openDlg:NSOpenPanel;
      saveDlg:NSSavePanel;
      nsfilter:NSMutableArray;
      Filters:TStringList;
      ParsedFilter: TParseStringList;
      filterext: String;
      Masks: TParseStringList;
      Extensions: TParseStringList;
      extension:string;
      LocalPool: NSAutoReleasePool;
    
    begin
    
      {$IFDEF VerboseWSClass}
        DebugLn('TCocoaWSFileDialog.ShowModal for ' + ACommonDialog.Name);
      {$ENDIF}
    
    LocalPool := NSAutoReleasePool.alloc.init;
    
      FileDialog := ACommonDialog as TFileDialog;
    
      Filters := TStringList.Create;
    
      // Cocoa doesn't supports a filter list selector like we know from windows. So we add all the masks into one filter list.
    
      ParsedFilter := TParseStringList.Create(FileDialog.Filter, '|');
    
        for i := 1 to ParsedFilter.Count div 2 do
        begin
        filterext:=ParsedFilter[i * 2 - 1];
        Masks := TParseStringList.Create(filterext,';');
        for m:=0 to Masks.Count-1 do
            begin
            if Masks[m]='*.*' then
               continue;
    
            Extensions:=TParseStringList.Create(Masks[m],'.');
    
            if Extensions.Count>0 then
               extension:=Extensions[Extensions.Count-1]
             else
               extension:=Masks[m];
    
             Filters.Add(lowercase(extension));
             Filters.Add(uppercase(extension));
             debugln('Filters: '+extension);
            Extensions.Free;
            end;
    
          Masks.Free;
          end;
    
      ParsedFilter.Free;
    
    
      nsfilter:=nil;
        if Filters.Count>0 then
            begin
            nsfilter:=NSMutableArray.alloc.init;
            for i:=0 to Filters.Count-1 do
                nsfilter.addObject(NSStringUtf8(Filters.Strings[i]));
            end;
    
      Filters.Free;
    
      FileDialog.UserChoice:=mrCancel;
    
      //todo: Options
    
      if FileDialog.FCompStyle=csOpenFileDialog then
         begin
         openDlg:=NSOpenPanel.openPanel;
         openDlg.setAllowsMultipleSelection(ofAllowMultiSelect in TOpenDialog(FileDialog).Options);
         openDlg.setCanChooseFiles(True);
         openDlg.setTitle(NSStringUtf8(FileDialog.Title));
         openDlg.setAllowedFileTypes(nsfilter);
         openDlg.setDirectoryURL(NSURL.fileURLWithPath(NSStringUtf8(FileDialog.InitialDir)));
    
         if openDlg.runModal = NSOKButton then
            begin
            FileDialog.FileName:=NSStringToString(openDlg.URL.path);
            FileDialog.Files.Clear;
            for i:=0 to openDlg.filenames.count-1 do
                FileDialog.Files.Add(NSStringToString(NSURL(openDlg.URLs.objectAtIndex(i)).path));
            FileDialog.UserChoice:=mrOk;
            end;
    
         end else
       if FileDialog.FCompStyle=csSaveFileDialog then
          begin
          saveDlg:=NSSavePanel.savePanel;
          saveDlg.setCanCreateDirectories(true);
          saveDlg.setTitle(NSStringUtf8(FileDialog.Title));
          saveDlg.setAllowedFileTypes(nsfilter);
          saveDlg.setDirectoryURL(NSURL.fileURLWithPath(NSStringUtf8(FileDialog.InitialDir)));
          saveDlg.setNameFieldStringValue(NSStringUtf8(FileDialog.FileName));
          if saveDlg.runModal  = NSOKButton then
             begin
             FileDialog.FileName:=NSStringToString(saveDlg.URL.path);
             FileDialog.Files.Clear;
             FileDialog.UserChoice:=mrOk;
             end;
          end;
    
    // release everything
    LocalPool.release;
    
    end;  {TCocoaWSFileDialog.ShowModal}
    
    { TCocoaWSColorDialog }
    
    {------------------------------------------------------------------------------
      Method:  TCocoaWSColorDialog.ShowModal
      Params:  ACommonDialog - LCL color dialog
    
      Shows Cocoa interface color picker
     ------------------------------------------------------------------------------}
    class procedure TCocoaWSColorDialog.ShowModal(
      const ACommonDialog: TCommonDialog);
    var
    
      ColorDialog: TColorDialog;
    
    begin
      {$IFDEF VerboseWSClass}
        DebugLn('TCocoaWSColorDialog.ShowModal for ' + ACommonDialog.Name);
      {$ENDIF}
      
      ACommonDialog.UserChoice := mrCancel;
      ColorDialog := ACommonDialog as TColorDialog;
    
    end;
    
    
    { TCocoaWSFontDialog }
    
    
    {------------------------------------------------------------------------------
      Method:  TCocoaWSFontDialog.ShowModal
      Params:  ACommonDialog - LCL font dialog
    
      Shows Cocoa interface font panel
     ------------------------------------------------------------------------------}
    class procedure TCocoaWSFontDialog.ShowModal(const ACommonDialog: TCommonDialog);
    var
      AFontDialog: TFontDialog;
    
    begin
      {$IFDEF VerboseWSClass}
        DebugLn('TCocoaWSFontDialog.ShowModal for ' + ACommonDialog.Name);
      {$ENDIF}
      
      AFontDialog := ACommonDialog as TFontDialog;
      AFontDialog.UserChoice := mrCancel;
    
    
    end;
    
    end.
    
    cocoawsdialogs.pp (7,132 bytes)
  • fix_ 0025409.patch (39,410 bytes)
    Index: /Developer/lazarus_trunc/lcl/interfaces/lcl.lpk
    ===================================================================
    --- /Developer/lazarus_trunc/lcl/interfaces/lcl.lpk	(revision 43444)
    +++ /Developer/lazarus_trunc/lcl/interfaces/lcl.lpk	(working copy)
    @@ -1325,804 +1325,805 @@
             <UnitName Value="WinCEDef"/>
           </Item257>
           <Item258>
    -        <Filename Value="wince/wincedialogs.lrs"/>
    -        <Type Value="LRS"/>
    -      </Item258>
    -      <Item259>
             <Filename Value="wince/winceextra.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEExtra"/>
    -      </Item259>
    -      <Item260>
    +      </Item258>
    +      <Item259>
             <Filename Value="wince/winceint.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEInt"/>
    +      </Item259>
    +      <Item260>
    +        <Filename Value="wince/wincelclintf.inc"/>
    +        <Type Value="Include"/>
           </Item260>
           <Item261>
    -        <Filename Value="wince/wincelclintf.inc"/>
    +        <Filename Value="wince/wincelclintfh.inc"/>
             <Type Value="Include"/>
           </Item261>
           <Item262>
    -        <Filename Value="wince/wincelclintfh.inc"/>
    +        <Filename Value="wince/wincelistsl.inc"/>
             <Type Value="Include"/>
           </Item262>
           <Item263>
    -        <Filename Value="wince/wincelistsl.inc"/>
    +        <Filename Value="wince/wincelistslh.inc"/>
             <Type Value="Include"/>
           </Item263>
           <Item264>
    -        <Filename Value="wince/wincelistslh.inc"/>
    +        <Filename Value="wince/wincememostrings.inc"/>
             <Type Value="Include"/>
           </Item264>
           <Item265>
    -        <Filename Value="wince/wincememostrings.inc"/>
    +        <Filename Value="wince/winceobject.inc"/>
             <Type Value="Include"/>
           </Item265>
           <Item266>
    -        <Filename Value="wince/winceobject.inc"/>
    -        <Type Value="Include"/>
    -      </Item266>
    -      <Item267>
             <Filename Value="wince/winceproc.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="winceproc"/>
    +      </Item266>
    +      <Item267>
    +        <Filename Value="wince/wincewinapi.inc"/>
    +        <Type Value="Include"/>
           </Item267>
           <Item268>
    -        <Filename Value="wince/wincewinapi.inc"/>
    +        <Filename Value="wince/wincewinapih.inc"/>
             <Type Value="Include"/>
           </Item268>
           <Item269>
    -        <Filename Value="wince/wincewinapih.inc"/>
    -        <Type Value="Include"/>
    -      </Item269>
    -      <Item270>
             <Filename Value="wince/wincewsbuttons.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEWSButtons"/>
    -      </Item270>
    -      <Item271>
    +      </Item269>
    +      <Item270>
             <Filename Value="wince/wincewscalendar.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEWSCalendar"/>
    -      </Item271>
    -      <Item272>
    +      </Item270>
    +      <Item271>
             <Filename Value="wince/wincewschecklst.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEWSCheckLst"/>
    -      </Item272>
    -      <Item273>
    +      </Item271>
    +      <Item272>
             <Filename Value="wince/wincewscomctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEWSComCtrls"/>
    -      </Item273>
    -      <Item274>
    +      </Item272>
    +      <Item273>
             <Filename Value="wince/wincewscontrols.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="WinCEWSControls"/>
    +      </Item273>
    +      <Item274>
    +        <Filename Value="wince/wincewscustomlistview.inc"/>
    +        <Type Value="Include"/>
           </Item274>
           <Item275>
    -        <Filename Value="wince/wincewscustomlistview.inc"/>
    -        <Type Value="Include"/>
    +        <Filename Value="wince/wincewsdialogs.pp"/>
    +        <AddToUsesPkgSection Value="False"/>
    +        <UnitName Value="WinCEWSDialogs"/>
           </Item275>
           <Item276>
    -        <Filename Value="wince/wincewsdialogs.pp"/>
    +        <Filename Value="wince/wincewsextctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSDialogs"/>
    +        <UnitName Value="WinCEWSExtCtrls"/>
           </Item276>
           <Item277>
    -        <Filename Value="wince/wincewsextctrls.pp"/>
    +        <Filename Value="wince/wincewsfactory.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSExtCtrls"/>
    +        <UnitName Value="WinCEWSFactory"/>
           </Item277>
           <Item278>
    -        <Filename Value="wince/wincewsfactory.pas"/>
    +        <Filename Value="wince/wincewsforms.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSFactory"/>
    +        <UnitName Value="WinCEWSForms"/>
           </Item278>
           <Item279>
    -        <Filename Value="wince/wincewsforms.pp"/>
    +        <Filename Value="wince/wincewsgrids.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSForms"/>
    +        <UnitName Value="WinCEWSGrids"/>
           </Item279>
           <Item280>
    -        <Filename Value="wince/wincewsgrids.pp"/>
    +        <Filename Value="wince/wincewsimglist.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSGrids"/>
    +        <UnitName Value="wincewsimglist"/>
           </Item280>
           <Item281>
    -        <Filename Value="wince/wincewsimglist.pp"/>
    +        <Filename Value="wince/wincewsmenus.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="wincewsimglist"/>
    +        <UnitName Value="WinCEWSMenus"/>
           </Item281>
           <Item282>
    -        <Filename Value="wince/wincewsmenus.pp"/>
    +        <Filename Value="wince/wincewsspin.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSMenus"/>
    +        <UnitName Value="WinCEWSSpin"/>
           </Item282>
           <Item283>
    -        <Filename Value="wince/wincewsspin.pp"/>
    +        <Filename Value="wince/wincewsstdctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSSpin"/>
    +        <UnitName Value="WinCEWSStdCtrls"/>
           </Item283>
           <Item284>
    -        <Filename Value="wince/wincewsstdctrls.pp"/>
    +        <Filename Value="wince/winext.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinCEWSStdCtrls"/>
    +        <UnitName Value="WinExt"/>
           </Item284>
           <Item285>
    -        <Filename Value="wince/winext.pas"/>
    +        <Filename Value="wince/alllclintfunits.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="WinExt"/>
    +        <UnitName Value="AllLCLIntfUnits"/>
           </Item285>
           <Item286>
    -        <Filename Value="wince/alllclintfunits.pas"/>
    +        <Filename Value="qt/alllclintfunits.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="AllLCLIntfUnits"/>
           </Item286>
           <Item287>
    -        <Filename Value="qt/alllclintfunits.pas"/>
    +        <Filename Value="qt/interfaces.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="AllLCLIntfUnits"/>
    +        <UnitName Value="interfaces"/>
           </Item287>
           <Item288>
    -        <Filename Value="qt/interfaces.pp"/>
    +        <Filename Value="qt/qt4.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="interfaces"/>
    +        <UnitName Value="qt4"/>
           </Item288>
           <Item289>
    -        <Filename Value="qt/qt4.pas"/>
    +        <Filename Value="qt/qt45.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="qt4"/>
    +        <UnitName Value="qt45"/>
           </Item289>
           <Item290>
    -        <Filename Value="qt/qt45.pas"/>
    +        <Filename Value="qt/qtcaret.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="qt45"/>
    +        <UnitName Value="QtCaret"/>
           </Item290>
           <Item291>
    -        <Filename Value="qt/qtcaret.pas"/>
    -        <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="QtCaret"/>
    +        <Filename Value="qt/qtdefines.inc"/>
    +        <Type Value="Include"/>
           </Item291>
           <Item292>
    -        <Filename Value="qt/qtdefines.inc"/>
    -        <Type Value="Include"/>
    -      </Item292>
    -      <Item293>
             <Filename Value="qt/qtint.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="qtint"/>
    +      </Item292>
    +      <Item293>
    +        <Filename Value="qt/qtlclintf.inc"/>
    +        <Type Value="Include"/>
           </Item293>
           <Item294>
    -        <Filename Value="qt/qtlclintf.inc"/>
    +        <Filename Value="qt/qtlclintfh.inc"/>
             <Type Value="Include"/>
           </Item294>
           <Item295>
    -        <Filename Value="qt/qtlclintfh.inc"/>
    +        <Filename Value="qt/qtobject.inc"/>
             <Type Value="Include"/>
           </Item295>
           <Item296>
    -        <Filename Value="qt/qtobject.inc"/>
    -        <Type Value="Include"/>
    -      </Item296>
    -      <Item297>
             <Filename Value="qt/qtobjects.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="qtobjects"/>
    -      </Item297>
    -      <Item298>
    +      </Item296>
    +      <Item297>
             <Filename Value="qt/qtprivate.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="qtprivate"/>
    -      </Item298>
    -      <Item299>
    +      </Item297>
    +      <Item298>
             <Filename Value="qt/qtproc.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="qtproc"/>
    -      </Item299>
    -      <Item300>
    +      </Item298>
    +      <Item299>
             <Filename Value="qt/qtthemes.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtThemes"/>
    -      </Item300>
    -      <Item301>
    +      </Item299>
    +      <Item300>
             <Filename Value="qt/qtwidgets.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="qtwidgets"/>
    +      </Item300>
    +      <Item301>
    +        <Filename Value="qt/qtwinapi.inc"/>
    +        <Type Value="Include"/>
           </Item301>
           <Item302>
    -        <Filename Value="qt/qtwinapi.inc"/>
    +        <Filename Value="qt/qtwinapih.inc"/>
             <Type Value="Include"/>
           </Item302>
           <Item303>
    -        <Filename Value="qt/qtwinapih.inc"/>
    -        <Type Value="Include"/>
    -      </Item303>
    -      <Item304>
             <Filename Value="qt/qtwsbuttons.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSButtons"/>
    -      </Item304>
    -      <Item305>
    +      </Item303>
    +      <Item304>
             <Filename Value="qt/qtwscalendar.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSCalendar"/>
    -      </Item305>
    -      <Item306>
    +      </Item304>
    +      <Item305>
             <Filename Value="qt/qtwschecklst.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSCheckLst"/>
    -      </Item306>
    -      <Item307>
    +      </Item305>
    +      <Item306>
             <Filename Value="qt/qtwscomctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSComCtrls"/>
    +      </Item306>
    +      <Item307>
    +        <Filename Value="qt/qtpagecontrol.inc"/>
    +        <Type Value="Include"/>
           </Item307>
           <Item308>
    -        <Filename Value="qt/qtpagecontrol.inc"/>
    -        <Type Value="Include"/>
    -      </Item308>
    -      <Item309>
             <Filename Value="qt/qtwscontrols.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSControls"/>
    -      </Item309>
    -      <Item310>
    +      </Item308>
    +      <Item309>
             <Filename Value="qt/qtwsdesigner.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSDesigner"/>
    -      </Item310>
    -      <Item311>
    +      </Item309>
    +      <Item310>
             <Filename Value="qt/qtwsdialogs.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSDialogs"/>
    -      </Item311>
    -      <Item312>
    +      </Item310>
    +      <Item311>
             <Filename Value="qt/qtwsextctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSExtCtrls"/>
    -      </Item312>
    -      <Item313>
    +      </Item311>
    +      <Item312>
             <Filename Value="qt/qtwsextdlgs.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSExtDlgs"/>
    -      </Item313>
    -      <Item314>
    +      </Item312>
    +      <Item313>
             <Filename Value="qt/qtwsfactory.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSFactory"/>
    -      </Item314>
    -      <Item315>
    +      </Item313>
    +      <Item314>
             <Filename Value="qt/qtwsforms.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSForms"/>
    -      </Item315>
    -      <Item316>
    +      </Item314>
    +      <Item315>
             <Filename Value="qt/qtwsgrids.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSGrids"/>
    -      </Item316>
    -      <Item317>
    +      </Item315>
    +      <Item316>
             <Filename Value="qt/qtwsimglist.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSImgList"/>
    -      </Item317>
    -      <Item318>
    +      </Item316>
    +      <Item317>
             <Filename Value="qt/qtwsmenus.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSMenus"/>
    -      </Item318>
    -      <Item319>
    +      </Item317>
    +      <Item318>
             <Filename Value="qt/qtwspairsplitter.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSPairSplitter"/>
    -      </Item319>
    -      <Item320>
    +      </Item318>
    +      <Item319>
             <Filename Value="qt/qtwsspin.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSSpin"/>
    -      </Item320>
    -      <Item321>
    +      </Item319>
    +      <Item320>
             <Filename Value="qt/qtwsstdctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="QtWSStdCtrls"/>
    +      </Item320>
    +      <Item321>
    +        <Filename Value="qt/qtx11.inc"/>
    +        <Type Value="Include"/>
           </Item321>
           <Item322>
    -        <Filename Value="qt/qtx11.inc"/>
    -        <Type Value="Include"/>
    -      </Item322>
    -      <Item323>
             <Filename Value="cocoa/cocoawsbuttons.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="cocoawsbuttons"/>
    +      </Item322>
    +      <Item323>
    +        <Filename Value="customdrawn/wincallback.inc"/>
    +        <Type Value="Include"/>
           </Item323>
           <Item324>
    -        <Filename Value="customdrawn/wincallback.inc"/>
    -        <Type Value="Include"/>
    -      </Item324>
    -      <Item325>
             <Filename Value="customdrawn/customdrawn_winproc.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawn_winproc"/>
    +      </Item324>
    +      <Item325>
    +        <Filename Value="customdrawn/alllclintfunits.pas"/>
    +        <UnitName Value="AllLCLIntfUnits"/>
           </Item325>
           <Item326>
    -        <Filename Value="customdrawn/alllclintfunits.pas"/>
    -        <UnitName Value="AllLCLIntfUnits"/>
    +        <Filename Value="customdrawn/customdrawndefines.inc"/>
    +        <Type Value="Include"/>
           </Item326>
           <Item327>
    -        <Filename Value="customdrawn/customdrawndefines.inc"/>
    -        <Type Value="Include"/>
    -      </Item327>
    -      <Item328>
             <Filename Value="customdrawn/customdrawnint.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnInt"/>
    +      </Item327>
    +      <Item328>
    +        <Filename Value="customdrawn/customdrawnobject.inc"/>
    +        <Type Value="Include"/>
           </Item328>
           <Item329>
    -        <Filename Value="customdrawn/customdrawnobject.inc"/>
    +        <Filename Value="customdrawn/customdrawnobject_cocoa.inc"/>
             <Type Value="Include"/>
           </Item329>
           <Item330>
    -        <Filename Value="customdrawn/customdrawnobject_cocoa.inc"/>
    +        <Filename Value="customdrawn/customdrawnobject_win.inc"/>
             <Type Value="Include"/>
           </Item330>
           <Item331>
    -        <Filename Value="customdrawn/customdrawnobject_win.inc"/>
    -        <Type Value="Include"/>
    -      </Item331>
    -      <Item332>
             <Filename Value="customdrawn/customdrawnwscontrols.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSControls"/>
    -      </Item332>
    -      <Item333>
    +      </Item331>
    +      <Item332>
             <Filename Value="customdrawn/customdrawnwsfactory.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSFactory"/>
    -      </Item333>
    -      <Item334>
    +      </Item332>
    +      <Item333>
             <Filename Value="customdrawn/customdrawnwsforms.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSForms"/>
    -      </Item334>
    -      <Item335>
    +      </Item333>
    +      <Item334>
             <Filename Value="customdrawn/interfaces.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Interfaces"/>
    -      </Item335>
    -      <Item336>
    +      </Item334>
    +      <Item335>
             <Filename Value="customdrawn/customdrawnwsforms_win.inc"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawnwsforms_win"/>
    -      </Item336>
    -      <Item337>
    +      </Item335>
    +      <Item336>
             <Filename Value="customdrawn/customdrawnwsforms_x11.inc"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawnwsforms_x11"/>
    -      </Item337>
    -      <Item338>
    +      </Item336>
    +      <Item337>
             <Filename Value="customdrawn/customdrawnobject_x11.inc"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawnobject_x11"/>
    -      </Item338>
    -      <Item339>
    +      </Item337>
    +      <Item338>
             <Filename Value="customdrawn/cocoagdiobjects.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CocoaGDIObjects"/>
    -      </Item339>
    -      <Item340>
    +      </Item338>
    +      <Item339>
             <Filename Value="customdrawn/customdrawn_cocoaproc.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawn_cocoaproc"/>
    -      </Item340>
    -      <Item341>
    +      </Item339>
    +      <Item340>
             <Filename Value="customdrawn/cocoautils.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CocoaUtils"/>
    +      </Item340>
    +      <Item341>
    +        <Filename Value="customdrawn/customdrawnlclintf.inc"/>
    +        <Type Value="Include"/>
           </Item341>
           <Item342>
    -        <Filename Value="customdrawn/customdrawnlclintf.inc"/>
    +        <Filename Value="customdrawn/customdrawnlclintfh.inc"/>
             <Type Value="Include"/>
           </Item342>
           <Item343>
    -        <Filename Value="customdrawn/customdrawnlclintfh.inc"/>
    +        <Filename Value="customdrawn/customdrawnwinapi_cocoa.inc"/>
             <Type Value="Include"/>
           </Item343>
           <Item344>
    -        <Filename Value="customdrawn/customdrawnwinapi_cocoa.inc"/>
    +        <Filename Value="customdrawn/customdrawnwinapi_win.inc"/>
             <Type Value="Include"/>
           </Item344>
           <Item345>
    -        <Filename Value="customdrawn/customdrawnwinapi_win.inc"/>
    +        <Filename Value="customdrawn/customdrawnwinapi.inc"/>
             <Type Value="Include"/>
           </Item345>
           <Item346>
    -        <Filename Value="customdrawn/customdrawnwinapi.inc"/>
    +        <Filename Value="customdrawn/customdrawnwinapih.inc"/>
             <Type Value="Include"/>
           </Item346>
           <Item347>
    -        <Filename Value="customdrawn/customdrawnwinapih.inc"/>
    +        <Filename Value="customdrawn/customdrawnwsforms_cocoa.inc"/>
             <Type Value="Include"/>
           </Item347>
           <Item348>
    -        <Filename Value="customdrawn/customdrawnwsforms_cocoa.inc"/>
    -        <Type Value="Include"/>
    -      </Item348>
    -      <Item349>
             <Filename Value="customdrawn/customdrawnproc.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawnproc"/>
    -      </Item349>
    -      <Item350>
    +      </Item348>
    +      <Item349>
             <Filename Value="customdrawn/customdrawn_x11proc.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawn_x11proc"/>
    +      </Item349>
    +      <Item350>
    +        <Filename Value="customdrawn/customdrawnwinapi_x11.inc"/>
    +        <Type Value="Include"/>
           </Item350>
           <Item351>
    -        <Filename Value="customdrawn/customdrawnwinapi_x11.inc"/>
    -        <Type Value="Include"/>
    -      </Item351>
    -      <Item352>
             <Filename Value="customdrawn/customdrawn_androidproc.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawn_androidproc"/>
    +      </Item351>
    +      <Item352>
    +        <Filename Value="customdrawn/customdrawnobject_android.inc"/>
    +        <Type Value="Include"/>
           </Item352>
           <Item353>
    -        <Filename Value="customdrawn/customdrawnobject_android.inc"/>
    +        <Filename Value="customdrawn/customdrawnwinapi_android.inc"/>
             <Type Value="Include"/>
           </Item353>
           <Item354>
    -        <Filename Value="customdrawn/customdrawnwinapi_android.inc"/>
    +        <Filename Value="customdrawn/customdrawnwsforms_android.inc"/>
             <Type Value="Include"/>
           </Item354>
           <Item355>
    -        <Filename Value="customdrawn/customdrawnwsforms_android.inc"/>
    -        <Type Value="Include"/>
    -      </Item355>
    -      <Item356>
             <Filename Value="customdrawn/android/android_native_app_glue.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="android_native_app_glue"/>
    -      </Item356>
    -      <Item357>
    +      </Item355>
    +      <Item356>
             <Filename Value="customdrawn/android/asset_manager.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="asset_manager"/>
    -      </Item357>
    -      <Item358>
    +      </Item356>
    +      <Item357>
             <Filename Value="customdrawn/android/configuration.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="configuration"/>
    -      </Item358>
    -      <Item359>
    +      </Item357>
    +      <Item358>
             <Filename Value="customdrawn/android/egl.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="egl"/>
    -      </Item359>
    -      <Item360>
    +      </Item358>
    +      <Item359>
             <Filename Value="customdrawn/android/gles.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gles"/>
    -      </Item360>
    -      <Item361>
    +      </Item359>
    +      <Item360>
             <Filename Value="customdrawn/android/input.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="input"/>
    -      </Item361>
    -      <Item362>
    +      </Item360>
    +      <Item361>
             <Filename Value="customdrawn/android/jni.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="jni"/>
    -      </Item362>
    -      <Item363>
    +      </Item361>
    +      <Item362>
             <Filename Value="customdrawn/android/keycodes.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="keycodes"/>
    -      </Item363>
    -      <Item364>
    +      </Item362>
    +      <Item363>
             <Filename Value="customdrawn/android/log.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="log"/>
    -      </Item364>
    -      <Item365>
    +      </Item363>
    +      <Item364>
             <Filename Value="customdrawn/android/looper.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="looper"/>
    -      </Item365>
    -      <Item366>
    +      </Item364>
    +      <Item365>
             <Filename Value="customdrawn/android/native_activity.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="native_activity"/>
    -      </Item366>
    -      <Item367>
    +      </Item365>
    +      <Item366>
             <Filename Value="customdrawn/android/native_window.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="native_window"/>
    -      </Item367>
    -      <Item368>
    +      </Item366>
    +      <Item367>
             <Filename Value="customdrawn/android/rect.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="rect"/>
    -      </Item368>
    -      <Item369>
    +      </Item367>
    +      <Item368>
             <Filename Value="customdrawn/android/bitmap.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="bitmap"/>
    -      </Item369>
    -      <Item370>
    +      </Item368>
    +      <Item369>
             <Filename Value="customdrawn/customdrawnwsstdctrls.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSStdCtrls"/>
    -      </Item370>
    -      <Item371>
    +      </Item369>
    +      <Item370>
             <Filename Value="customdrawn/customdrawnwscomctrls.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSComCtrls"/>
    -      </Item371>
    -      <Item372>
    +      </Item370>
    +      <Item371>
             <Filename Value="customdrawn/customdrawnwsextctrls.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSExtCtrls"/>
    -      </Item372>
    -      <Item373>
    +      </Item371>
    +      <Item372>
             <Filename Value="customdrawn/customdrawnprivate.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="customdrawnprivate"/>
    +      </Item372>
    +      <Item373>
    +        <Filename Value="customdrawn/customdrawnlclintf_android.inc"/>
    +        <Type Value="Include"/>
           </Item373>
           <Item374>
    -        <Filename Value="customdrawn/customdrawnlclintf_android.inc"/>
    +        <Filename Value="customdrawn/customdrawnlclintf_cocoa.inc"/>
             <Type Value="Include"/>
           </Item374>
           <Item375>
    -        <Filename Value="customdrawn/customdrawnlclintf_cocoa.inc"/>
    +        <Filename Value="customdrawn/customdrawnlclintf_win.inc"/>
             <Type Value="Include"/>
           </Item375>
           <Item376>
    -        <Filename Value="customdrawn/customdrawnlclintf_win.inc"/>
    +        <Filename Value="customdrawn/customdrawnlclintf_x11.inc"/>
             <Type Value="Include"/>
           </Item376>
           <Item377>
    -        <Filename Value="customdrawn/customdrawnlclintf_x11.inc"/>
    +        <Filename Value="customdrawn/customdrawntrayicon_android.inc"/>
             <Type Value="Include"/>
           </Item377>
           <Item378>
    -        <Filename Value="customdrawn/customdrawntrayicon_android.inc"/>
    +        <Filename Value="customdrawn/customdrawntrayicon_cocoa.inc"/>
             <Type Value="Include"/>
           </Item378>
           <Item379>
    -        <Filename Value="customdrawn/customdrawntrayicon_cocoa.inc"/>
    +        <Filename Value="customdrawn/customdrawntrayicon_win.inc"/>
             <Type Value="Include"/>
           </Item379>
           <Item380>
    -        <Filename Value="customdrawn/customdrawntrayicon_win.inc"/>
    -        <Type Value="Include"/>
    +        <Filename Value="cocoa/cocoacaret.pas"/>
    +        <AddToUsesPkgSection Value="False"/>
    +        <UnitName Value="CocoaCaret"/>
           </Item380>
           <Item381>
             <Filename Value="customdrawn/customdrawntrayicon_x11.inc"/>
             <Type Value="Include"/>
           </Item381>
           <Item382>
    -        <Filename Value="cocoa/cocoacaret.pas"/>
    +        <Filename Value="customdrawn/customdrawnwslazdeviceapis.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="CocoaCaret"/>
    +        <UnitName Value="CustomDrawnWSLazDeviceAPIS"/>
           </Item382>
           <Item383>
    -        <Filename Value="customdrawn/customdrawnwslazdeviceapis.pas"/>
    +        <Filename Value="nogui/alllclintfunits.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="CustomDrawnWSLazDeviceAPIS"/>
    +        <UnitName Value="AllLCLIntfUnits"/>
           </Item383>
           <Item384>
    -        <Filename Value="nogui/alllclintfunits.pas"/>
    +        <Filename Value="nogui/interfaces.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="AllLCLIntfUnits"/>
    +        <UnitName Value="Interfaces"/>
           </Item384>
           <Item385>
    -        <Filename Value="nogui/interfaces.pp"/>
    +        <Filename Value="nogui/noguiint.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="Interfaces"/>
    +        <UnitName Value="NoGUIInt"/>
           </Item385>
           <Item386>
    -        <Filename Value="nogui/noguiint.pp"/>
    +        <Filename Value="nogui/noguiwsfactory.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="NoGUIInt"/>
    +        <UnitName Value="NoGUIWSFactory"/>
           </Item386>
           <Item387>
    -        <Filename Value="nogui/noguiwsfactory.pas"/>
    +        <Filename Value="customdrawn/customdrawnwsspin.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="NoGUIWSFactory"/>
    +        <UnitName Value="customdrawnwsspin"/>
           </Item387>
           <Item388>
    -        <Filename Value="customdrawn/customdrawnwsspin.pas"/>
    +        <Filename Value="customdrawn/customdrawnwsbuttons.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="customdrawnwsspin"/>
    +        <UnitName Value="customdrawnwsbuttons"/>
           </Item388>
           <Item389>
    -        <Filename Value="customdrawn/customdrawnwsbuttons.pas"/>
    +        <Filename Value="customdrawn/customdrawnwsdialogs.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="customdrawnwsbuttons"/>
    +        <UnitName Value="customdrawnwsdialogs"/>
           </Item389>
           <Item390>
    -        <Filename Value="customdrawn/customdrawnwsdialogs.pas"/>
    -        <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="customdrawnwsdialogs"/>
    +        <Filename Value="customdrawn/customdrawnwsmenus_cocoa.inc"/>
    +        <Type Value="Include"/>
           </Item390>
           <Item391>
    -        <Filename Value="customdrawn/customdrawnwsmenus_cocoa.inc"/>
    -        <Type Value="Include"/>
    -      </Item391>
    -      <Item392>
             <Filename Value="customdrawn/customdrawnwsmenus.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="CustomDrawnWSMenus"/>
    -      </Item392>
    -      <Item393>
    +      </Item391>
    +      <Item392>
             <Filename Value="gtk2/gtk2disableliboverlay.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gtk2disableliboverlay"/>
    -      </Item393>
    -      <Item394>
    +      </Item392>
    +      <Item393>
             <Filename Value="gtk3/gtk3int.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gtk3int"/>
    +      </Item393>
    +      <Item394>
    +        <Filename Value="gtk3/gtk3winapih.inc"/>
    +        <Type Value="Include"/>
           </Item394>
           <Item395>
    -        <Filename Value="gtk3/gtk3winapih.inc"/>
    -        <Type Value="Include"/>
    -      </Item395>
    -      <Item396>
             <Filename Value="gtk3/interfaces.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="interfaces"/>
    -      </Item396>
    -      <Item397>
    +      </Item395>
    +      <Item396>
             <Filename Value="gtk3/gtk3cellrenderer.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3CellRenderer"/>
    +      </Item396>
    +      <Item397>
    +        <Filename Value="gtk3/gtk3lclintf.inc"/>
    +        <Type Value="Include"/>
           </Item397>
           <Item398>
    -        <Filename Value="gtk3/gtk3lclintf.inc"/>
    +        <Filename Value="gtk3/gtk3lclintfh.inc"/>
             <Type Value="Include"/>
           </Item398>
           <Item399>
    -        <Filename Value="gtk3/gtk3lclintfh.inc"/>
    +        <Filename Value="gtk3/gtk3object.inc"/>
             <Type Value="Include"/>
           </Item399>
           <Item400>
    -        <Filename Value="gtk3/gtk3object.inc"/>
    -        <Type Value="Include"/>
    -      </Item400>
    -      <Item401>
             <Filename Value="gtk3/gtk3objects.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gtk3objects"/>
    -      </Item401>
    -      <Item402>
    +      </Item400>
    +      <Item401>
             <Filename Value="gtk3/gtk3private.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gtk3private"/>
    -      </Item402>
    -      <Item403>
    +      </Item401>
    +      <Item402>
             <Filename Value="gtk3/gtk3procs.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gtk3procs"/>
    -      </Item403>
    -      <Item404>
    +      </Item402>
    +      <Item403>
             <Filename Value="gtk3/gtk3widgets.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="gtk3widgets"/>
    +      </Item403>
    +      <Item404>
    +        <Filename Value="gtk3/gtk3winapi.inc"/>
    +        <Type Value="Include"/>
           </Item404>
           <Item405>
    -        <Filename Value="gtk3/gtk3winapi.inc"/>
    -        <Type Value="Include"/>
    -      </Item405>
    -      <Item406>
             <Filename Value="gtk3/gtk3wsbuttons.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSButtons"/>
    -      </Item406>
    -      <Item407>
    +      </Item405>
    +      <Item406>
             <Filename Value="gtk3/gtk3wschecklst.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSCheckLst"/>
    -      </Item407>
    -      <Item408>
    +      </Item406>
    +      <Item407>
             <Filename Value="gtk3/gtk3wscomctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSComCtrls"/>
    -      </Item408>
    -      <Item409>
    +      </Item407>
    +      <Item408>
             <Filename Value="gtk3/gtk3wscontrols.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSControls"/>
    -      </Item409>
    -      <Item410>
    +      </Item408>
    +      <Item409>
             <Filename Value="gtk3/gtk3wsextctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSExtCtrls"/>
    -      </Item410>
    -      <Item411>
    +      </Item409>
    +      <Item410>
             <Filename Value="gtk3/gtk3wsfactory.pas"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSFactory"/>
    -      </Item411>
    -      <Item412>
    +      </Item410>
    +      <Item411>
             <Filename Value="gtk3/gtk3wsforms.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSForms"/>
    -      </Item412>
    -      <Item413>
    +      </Item411>
    +      <Item412>
             <Filename Value="gtk3/gtk3wsimglist.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSImgList"/>
    -      </Item413>
    -      <Item414>
    +      </Item412>
    +      <Item413>
             <Filename Value="gtk3/gtk3wsmenus.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSMenus"/>
    -      </Item414>
    -      <Item415>
    +      </Item413>
    +      <Item414>
             <Filename Value="gtk3/gtk3wsspin.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSSpin"/>
    -      </Item415>
    -      <Item416>
    +      </Item414>
    +      <Item415>
             <Filename Value="gtk3/gtk3wsstdctrls.pp"/>
             <AddToUsesPkgSection Value="False"/>
             <UnitName Value="Gtk3WSStdCtrls"/>
    +      </Item415>
    +      <Item416>
    +        <Filename Value="gtk3/gtk3defines.inc"/>
    +        <Type Value="Include"/>
           </Item416>
           <Item417>
    -        <Filename Value="gtk3/gtk3defines.inc"/>
    -        <Type Value="Include"/>
    +        <Filename Value="gtk3/gtk3wscalendar.pp"/>
    +        <AddToUsesPkgSection Value="False"/>
    +        <UnitName Value="Gtk3WSCalendar"/>
           </Item417>
           <Item418>
    -        <Filename Value="gtk3/gtk3wscalendar.pp"/>
    +        <Filename Value="gtk3/gtk3bindings/lazatk1.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="Gtk3WSCalendar"/>
    +        <UnitName Value="LazAtk1"/>
           </Item418>
           <Item419>
    -        <Filename Value="gtk3/gtk3bindings/lazatk1.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazcairo1.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazAtk1"/>
    +        <UnitName Value="LazCairo1"/>
           </Item419>
           <Item420>
    -        <Filename Value="gtk3/gtk3bindings/lazcairo1.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazgdk3.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazCairo1"/>
    +        <UnitName Value="LazGdk3"/>
           </Item420>
           <Item421>
    -        <Filename Value="gtk3/gtk3bindings/lazgdk3.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazgdkpixbuf2.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGdk3"/>
    +        <UnitName Value="LazGdkPixbuf2"/>
           </Item421>
           <Item422>
    -        <Filename Value="gtk3/gtk3bindings/lazgdkpixbuf2.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazgio2.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGdkPixbuf2"/>
    +        <UnitName Value="LazGio2"/>
           </Item422>
           <Item423>
    -        <Filename Value="gtk3/gtk3bindings/lazgio2.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazglib2.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGio2"/>
    +        <UnitName Value="LazGLib2"/>
           </Item423>
           <Item424>
    -        <Filename Value="gtk3/gtk3bindings/lazglib2.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazgmodule2.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGLib2"/>
    +        <UnitName Value="LazGModule2"/>
           </Item424>
           <Item425>
    -        <Filename Value="gtk3/gtk3bindings/lazgmodule2.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazgobject2.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGModule2"/>
    +        <UnitName Value="LazGObject2"/>
           </Item425>
           <Item426>
    -        <Filename Value="gtk3/gtk3bindings/lazgobject2.pas"/>
    +        <Filename Value="gtk3/gtk3bindings/lazgtk3.pas"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGObject2"/>
    +        <UnitName Value="LazGtk3"/>
           </Item426>
           <Item427>
    -        <Filename Value="gtk3/gtk3bindings/lazgtk3.pas"/>
    +        <Filename Value="cocoa/cocoawsdialogs.pp"/>
             <AddToUsesPkgSection Value="False"/>
    -        <UnitName Value="LazGtk3"/>
    +        <UnitName Value="CocoaWSDialogs"/>
           </Item427>
           <Item428>
             <Filename Value="gtk3/gtk3bindings/lazpango1.pas"/>
    Index: /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas
    ===================================================================
    --- /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas	(revision 43475)
    +++ /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas	(working copy)
    @@ -14,7 +14,8 @@
       CocoaWSForms,
       CocoaWSMenus,
       CocoaWSStdCtrls,
    -  CocoaWSComCtrls;
    +  CocoaWSComCtrls,
    +  CocoaWSDialogs;
     
     // imglist
     function RegisterCustomImageList: Boolean;
    @@ -216,7 +217,8 @@
     
     function RegisterFileDialog: Boolean; alias : 'WSRegisterFileDialog';
     begin
    -  Result := False;
    +  RegisterWSComponent(TFileDialog, TCocoaWSFileDialog);
    +  Result := True;
     end;
     
    Index: /Developer/lazarus_trunc/lcl/interfaces/cocoa/alllclintfunits.pas
    ===================================================================
    --- /Developer/lazarus_trunc/lcl/interfaces/cocoa/alllclintfunits.pas	(revision 43475)
    +++ /Developer/lazarus_trunc/lcl/interfaces/cocoa/alllclintfunits.pas	(working copy)
    @@ -13,6 +13,7 @@
       cocoawsforms,
       cocoaint,
       cocoawscommon,
    -  cocoawscomctrls;
    +  cocoawscomctrls,
    +  cocoawsdialogs;
     implementation
     end.
    
    fix_ 0025409.patch (39,410 bytes)

Activities

accSone

2013-12-08 11:15

developer  

testAppFileDialog.zip (5,885 bytes)

accSone

2013-12-08 15:47

developer  

cocoawsdialogs.pp (7,132 bytes)
{
 *****************************************************************************
 *                              CocoaWSDialogs.pp                           *
 *                              --------------                               * 
 *                                                                           *
 *                                                                           *
 *****************************************************************************

 *****************************************************************************
  This file is part of the Lazarus Component Library (LCL)

  See the file COPYING.modifiedLGPL.txt, included in this distribution,
  for details about the license.
 *****************************************************************************
}
unit CocoaWSDialogs;

{$mode objfpc}{$H+}
{$modeswitch objectivec1}

interface


uses
  // RTL,FCL
  MacOSAll, CocoaAll, Classes,
  // LCL
  Controls, StrUtils, SysUtils, Forms, Dialogs, Graphics, Masks, LCLType, LMessages, LCLProc,
  // Widgetset
  WSForms, WSLCLClasses, WSProc, WSDialogs, LCLMessageGlue,
  // LCL Cocoa
  CocoaPrivate, CocoaUtils, CocoaWSCommon, CocoaWSStdCtrls;
  
type

  { TCocoaWSCommonDialog }

  TCocoaWSCommonDialog = class(TWSCommonDialog)
  published
  end;

  { TCocoaWSFileDialog }

  TCocoaWSFileDialog = class(TWSFileDialog)
  published
    class procedure ShowModal(const ACommonDialog: TCommonDialog); override;
  end;

  { TCocoaWSOpenDialog }

  TCocoaWSOpenDialog = class(TWSOpenDialog)
  published
  end;

  { TCocoaWSSaveDialog }

  TCocoaWSSaveDialog = class(TWSSaveDialog)
  published
  end;

  { TCocoaWSSelectDirectoryDialog }

  TCocoaWSSelectDirectoryDialog = class(TWSSelectDirectoryDialog)
  published
  end;

  { TCocoaWSColorDialog }

  TCocoaWSColorDialog = class(TWSColorDialog)
  published
    class procedure ShowModal(const ACommonDialog: TCommonDialog); override;
  end;

  { TCocoaWSColorButton }

  TCocoaWSColorButton = class(TWSColorButton)
  published
  end;

  { TCocoaWSFontDialog }

  TCocoaWSFontDialog = class(TWSFontDialog)
  published
    class procedure ShowModal(const ACommonDialog: TCommonDialog); override;
  end;


implementation



{ TCocoaWSFileDialog }


{------------------------------------------------------------------------------
  Method:  TCocoaWSFileDialog.ShowModal
  Params:  ACommonDialog - LCL common dialog

 ------------------------------------------------------------------------------}
class procedure TCocoaWSFileDialog.ShowModal(const ACommonDialog: TCommonDialog);
 {
  Called by Execute method of TOpenDialog, TSaveDialog and TSelectDirectoryDialog.
 }
var
  FileDialog: TFileDialog;
  i,m:integer;
  openDlg:NSOpenPanel;
  saveDlg:NSSavePanel;
  nsfilter:NSMutableArray;
  Filters:TStringList;
  ParsedFilter: TParseStringList;
  filterext: String;
  Masks: TParseStringList;
  Extensions: TParseStringList;
  extension:string;
  LocalPool: NSAutoReleasePool;

begin

  {$IFDEF VerboseWSClass}
    DebugLn('TCocoaWSFileDialog.ShowModal for ' + ACommonDialog.Name);
  {$ENDIF}

LocalPool := NSAutoReleasePool.alloc.init;

  FileDialog := ACommonDialog as TFileDialog;

  Filters := TStringList.Create;

  // Cocoa doesn't supports a filter list selector like we know from windows. So we add all the masks into one filter list.

  ParsedFilter := TParseStringList.Create(FileDialog.Filter, '|');

    for i := 1 to ParsedFilter.Count div 2 do
    begin
    filterext:=ParsedFilter[i * 2 - 1];
    Masks := TParseStringList.Create(filterext,';');
    for m:=0 to Masks.Count-1 do
        begin
        if Masks[m]='*.*' then
           continue;

        Extensions:=TParseStringList.Create(Masks[m],'.');

        if Extensions.Count>0 then
           extension:=Extensions[Extensions.Count-1]
         else
           extension:=Masks[m];

         Filters.Add(lowercase(extension));
         Filters.Add(uppercase(extension));
         debugln('Filters: '+extension);
        Extensions.Free;
        end;

      Masks.Free;
      end;

  ParsedFilter.Free;


  nsfilter:=nil;
    if Filters.Count>0 then
        begin
        nsfilter:=NSMutableArray.alloc.init;
        for i:=0 to Filters.Count-1 do
            nsfilter.addObject(NSStringUtf8(Filters.Strings[i]));
        end;

  Filters.Free;

  FileDialog.UserChoice:=mrCancel;

  //todo: Options

  if FileDialog.FCompStyle=csOpenFileDialog then
     begin
     openDlg:=NSOpenPanel.openPanel;
     openDlg.setAllowsMultipleSelection(ofAllowMultiSelect in TOpenDialog(FileDialog).Options);
     openDlg.setCanChooseFiles(True);
     openDlg.setTitle(NSStringUtf8(FileDialog.Title));
     openDlg.setAllowedFileTypes(nsfilter);
     openDlg.setDirectoryURL(NSURL.fileURLWithPath(NSStringUtf8(FileDialog.InitialDir)));

     if openDlg.runModal = NSOKButton then
        begin
        FileDialog.FileName:=NSStringToString(openDlg.URL.path);
        FileDialog.Files.Clear;
        for i:=0 to openDlg.filenames.count-1 do
            FileDialog.Files.Add(NSStringToString(NSURL(openDlg.URLs.objectAtIndex(i)).path));
        FileDialog.UserChoice:=mrOk;
        end;

     end else
   if FileDialog.FCompStyle=csSaveFileDialog then
      begin
      saveDlg:=NSSavePanel.savePanel;
      saveDlg.setCanCreateDirectories(true);
      saveDlg.setTitle(NSStringUtf8(FileDialog.Title));
      saveDlg.setAllowedFileTypes(nsfilter);
      saveDlg.setDirectoryURL(NSURL.fileURLWithPath(NSStringUtf8(FileDialog.InitialDir)));
      saveDlg.setNameFieldStringValue(NSStringUtf8(FileDialog.FileName));
      if saveDlg.runModal  = NSOKButton then
         begin
         FileDialog.FileName:=NSStringToString(saveDlg.URL.path);
         FileDialog.Files.Clear;
         FileDialog.UserChoice:=mrOk;
         end;
      end;

// release everything
LocalPool.release;

end;  {TCocoaWSFileDialog.ShowModal}

{ TCocoaWSColorDialog }

{------------------------------------------------------------------------------
  Method:  TCocoaWSColorDialog.ShowModal
  Params:  ACommonDialog - LCL color dialog

  Shows Cocoa interface color picker
 ------------------------------------------------------------------------------}
class procedure TCocoaWSColorDialog.ShowModal(
  const ACommonDialog: TCommonDialog);
var

  ColorDialog: TColorDialog;

begin
  {$IFDEF VerboseWSClass}
    DebugLn('TCocoaWSColorDialog.ShowModal for ' + ACommonDialog.Name);
  {$ENDIF}
  
  ACommonDialog.UserChoice := mrCancel;
  ColorDialog := ACommonDialog as TColorDialog;

end;


{ TCocoaWSFontDialog }


{------------------------------------------------------------------------------
  Method:  TCocoaWSFontDialog.ShowModal
  Params:  ACommonDialog - LCL font dialog

  Shows Cocoa interface font panel
 ------------------------------------------------------------------------------}
class procedure TCocoaWSFontDialog.ShowModal(const ACommonDialog: TCommonDialog);
var
  AFontDialog: TFontDialog;

begin
  {$IFDEF VerboseWSClass}
    DebugLn('TCocoaWSFontDialog.ShowModal for ' + ACommonDialog.Name);
  {$ENDIF}
  
  AFontDialog := ACommonDialog as TFontDialog;
  AFontDialog.UserChoice := mrCancel;


end;

end.
cocoawsdialogs.pp (7,132 bytes)

accSone

2013-12-08 15:49

developer  

fix_ 0025409.patch (39,410 bytes)
Index: /Developer/lazarus_trunc/lcl/interfaces/lcl.lpk
===================================================================
--- /Developer/lazarus_trunc/lcl/interfaces/lcl.lpk	(revision 43444)
+++ /Developer/lazarus_trunc/lcl/interfaces/lcl.lpk	(working copy)
@@ -1325,804 +1325,805 @@
         <UnitName Value="WinCEDef"/>
       </Item257>
       <Item258>
-        <Filename Value="wince/wincedialogs.lrs"/>
-        <Type Value="LRS"/>
-      </Item258>
-      <Item259>
         <Filename Value="wince/winceextra.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEExtra"/>
-      </Item259>
-      <Item260>
+      </Item258>
+      <Item259>
         <Filename Value="wince/winceint.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEInt"/>
+      </Item259>
+      <Item260>
+        <Filename Value="wince/wincelclintf.inc"/>
+        <Type Value="Include"/>
       </Item260>
       <Item261>
-        <Filename Value="wince/wincelclintf.inc"/>
+        <Filename Value="wince/wincelclintfh.inc"/>
         <Type Value="Include"/>
       </Item261>
       <Item262>
-        <Filename Value="wince/wincelclintfh.inc"/>
+        <Filename Value="wince/wincelistsl.inc"/>
         <Type Value="Include"/>
       </Item262>
       <Item263>
-        <Filename Value="wince/wincelistsl.inc"/>
+        <Filename Value="wince/wincelistslh.inc"/>
         <Type Value="Include"/>
       </Item263>
       <Item264>
-        <Filename Value="wince/wincelistslh.inc"/>
+        <Filename Value="wince/wincememostrings.inc"/>
         <Type Value="Include"/>
       </Item264>
       <Item265>
-        <Filename Value="wince/wincememostrings.inc"/>
+        <Filename Value="wince/winceobject.inc"/>
         <Type Value="Include"/>
       </Item265>
       <Item266>
-        <Filename Value="wince/winceobject.inc"/>
-        <Type Value="Include"/>
-      </Item266>
-      <Item267>
         <Filename Value="wince/winceproc.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="winceproc"/>
+      </Item266>
+      <Item267>
+        <Filename Value="wince/wincewinapi.inc"/>
+        <Type Value="Include"/>
       </Item267>
       <Item268>
-        <Filename Value="wince/wincewinapi.inc"/>
+        <Filename Value="wince/wincewinapih.inc"/>
         <Type Value="Include"/>
       </Item268>
       <Item269>
-        <Filename Value="wince/wincewinapih.inc"/>
-        <Type Value="Include"/>
-      </Item269>
-      <Item270>
         <Filename Value="wince/wincewsbuttons.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEWSButtons"/>
-      </Item270>
-      <Item271>
+      </Item269>
+      <Item270>
         <Filename Value="wince/wincewscalendar.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEWSCalendar"/>
-      </Item271>
-      <Item272>
+      </Item270>
+      <Item271>
         <Filename Value="wince/wincewschecklst.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEWSCheckLst"/>
-      </Item272>
-      <Item273>
+      </Item271>
+      <Item272>
         <Filename Value="wince/wincewscomctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEWSComCtrls"/>
-      </Item273>
-      <Item274>
+      </Item272>
+      <Item273>
         <Filename Value="wince/wincewscontrols.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="WinCEWSControls"/>
+      </Item273>
+      <Item274>
+        <Filename Value="wince/wincewscustomlistview.inc"/>
+        <Type Value="Include"/>
       </Item274>
       <Item275>
-        <Filename Value="wince/wincewscustomlistview.inc"/>
-        <Type Value="Include"/>
+        <Filename Value="wince/wincewsdialogs.pp"/>
+        <AddToUsesPkgSection Value="False"/>
+        <UnitName Value="WinCEWSDialogs"/>
       </Item275>
       <Item276>
-        <Filename Value="wince/wincewsdialogs.pp"/>
+        <Filename Value="wince/wincewsextctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSDialogs"/>
+        <UnitName Value="WinCEWSExtCtrls"/>
       </Item276>
       <Item277>
-        <Filename Value="wince/wincewsextctrls.pp"/>
+        <Filename Value="wince/wincewsfactory.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSExtCtrls"/>
+        <UnitName Value="WinCEWSFactory"/>
       </Item277>
       <Item278>
-        <Filename Value="wince/wincewsfactory.pas"/>
+        <Filename Value="wince/wincewsforms.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSFactory"/>
+        <UnitName Value="WinCEWSForms"/>
       </Item278>
       <Item279>
-        <Filename Value="wince/wincewsforms.pp"/>
+        <Filename Value="wince/wincewsgrids.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSForms"/>
+        <UnitName Value="WinCEWSGrids"/>
       </Item279>
       <Item280>
-        <Filename Value="wince/wincewsgrids.pp"/>
+        <Filename Value="wince/wincewsimglist.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSGrids"/>
+        <UnitName Value="wincewsimglist"/>
       </Item280>
       <Item281>
-        <Filename Value="wince/wincewsimglist.pp"/>
+        <Filename Value="wince/wincewsmenus.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="wincewsimglist"/>
+        <UnitName Value="WinCEWSMenus"/>
       </Item281>
       <Item282>
-        <Filename Value="wince/wincewsmenus.pp"/>
+        <Filename Value="wince/wincewsspin.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSMenus"/>
+        <UnitName Value="WinCEWSSpin"/>
       </Item282>
       <Item283>
-        <Filename Value="wince/wincewsspin.pp"/>
+        <Filename Value="wince/wincewsstdctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSSpin"/>
+        <UnitName Value="WinCEWSStdCtrls"/>
       </Item283>
       <Item284>
-        <Filename Value="wince/wincewsstdctrls.pp"/>
+        <Filename Value="wince/winext.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinCEWSStdCtrls"/>
+        <UnitName Value="WinExt"/>
       </Item284>
       <Item285>
-        <Filename Value="wince/winext.pas"/>
+        <Filename Value="wince/alllclintfunits.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="WinExt"/>
+        <UnitName Value="AllLCLIntfUnits"/>
       </Item285>
       <Item286>
-        <Filename Value="wince/alllclintfunits.pas"/>
+        <Filename Value="qt/alllclintfunits.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="AllLCLIntfUnits"/>
       </Item286>
       <Item287>
-        <Filename Value="qt/alllclintfunits.pas"/>
+        <Filename Value="qt/interfaces.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="AllLCLIntfUnits"/>
+        <UnitName Value="interfaces"/>
       </Item287>
       <Item288>
-        <Filename Value="qt/interfaces.pp"/>
+        <Filename Value="qt/qt4.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="interfaces"/>
+        <UnitName Value="qt4"/>
       </Item288>
       <Item289>
-        <Filename Value="qt/qt4.pas"/>
+        <Filename Value="qt/qt45.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="qt4"/>
+        <UnitName Value="qt45"/>
       </Item289>
       <Item290>
-        <Filename Value="qt/qt45.pas"/>
+        <Filename Value="qt/qtcaret.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="qt45"/>
+        <UnitName Value="QtCaret"/>
       </Item290>
       <Item291>
-        <Filename Value="qt/qtcaret.pas"/>
-        <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="QtCaret"/>
+        <Filename Value="qt/qtdefines.inc"/>
+        <Type Value="Include"/>
       </Item291>
       <Item292>
-        <Filename Value="qt/qtdefines.inc"/>
-        <Type Value="Include"/>
-      </Item292>
-      <Item293>
         <Filename Value="qt/qtint.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="qtint"/>
+      </Item292>
+      <Item293>
+        <Filename Value="qt/qtlclintf.inc"/>
+        <Type Value="Include"/>
       </Item293>
       <Item294>
-        <Filename Value="qt/qtlclintf.inc"/>
+        <Filename Value="qt/qtlclintfh.inc"/>
         <Type Value="Include"/>
       </Item294>
       <Item295>
-        <Filename Value="qt/qtlclintfh.inc"/>
+        <Filename Value="qt/qtobject.inc"/>
         <Type Value="Include"/>
       </Item295>
       <Item296>
-        <Filename Value="qt/qtobject.inc"/>
-        <Type Value="Include"/>
-      </Item296>
-      <Item297>
         <Filename Value="qt/qtobjects.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="qtobjects"/>
-      </Item297>
-      <Item298>
+      </Item296>
+      <Item297>
         <Filename Value="qt/qtprivate.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="qtprivate"/>
-      </Item298>
-      <Item299>
+      </Item297>
+      <Item298>
         <Filename Value="qt/qtproc.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="qtproc"/>
-      </Item299>
-      <Item300>
+      </Item298>
+      <Item299>
         <Filename Value="qt/qtthemes.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtThemes"/>
-      </Item300>
-      <Item301>
+      </Item299>
+      <Item300>
         <Filename Value="qt/qtwidgets.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="qtwidgets"/>
+      </Item300>
+      <Item301>
+        <Filename Value="qt/qtwinapi.inc"/>
+        <Type Value="Include"/>
       </Item301>
       <Item302>
-        <Filename Value="qt/qtwinapi.inc"/>
+        <Filename Value="qt/qtwinapih.inc"/>
         <Type Value="Include"/>
       </Item302>
       <Item303>
-        <Filename Value="qt/qtwinapih.inc"/>
-        <Type Value="Include"/>
-      </Item303>
-      <Item304>
         <Filename Value="qt/qtwsbuttons.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSButtons"/>
-      </Item304>
-      <Item305>
+      </Item303>
+      <Item304>
         <Filename Value="qt/qtwscalendar.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSCalendar"/>
-      </Item305>
-      <Item306>
+      </Item304>
+      <Item305>
         <Filename Value="qt/qtwschecklst.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSCheckLst"/>
-      </Item306>
-      <Item307>
+      </Item305>
+      <Item306>
         <Filename Value="qt/qtwscomctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSComCtrls"/>
+      </Item306>
+      <Item307>
+        <Filename Value="qt/qtpagecontrol.inc"/>
+        <Type Value="Include"/>
       </Item307>
       <Item308>
-        <Filename Value="qt/qtpagecontrol.inc"/>
-        <Type Value="Include"/>
-      </Item308>
-      <Item309>
         <Filename Value="qt/qtwscontrols.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSControls"/>
-      </Item309>
-      <Item310>
+      </Item308>
+      <Item309>
         <Filename Value="qt/qtwsdesigner.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSDesigner"/>
-      </Item310>
-      <Item311>
+      </Item309>
+      <Item310>
         <Filename Value="qt/qtwsdialogs.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSDialogs"/>
-      </Item311>
-      <Item312>
+      </Item310>
+      <Item311>
         <Filename Value="qt/qtwsextctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSExtCtrls"/>
-      </Item312>
-      <Item313>
+      </Item311>
+      <Item312>
         <Filename Value="qt/qtwsextdlgs.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSExtDlgs"/>
-      </Item313>
-      <Item314>
+      </Item312>
+      <Item313>
         <Filename Value="qt/qtwsfactory.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSFactory"/>
-      </Item314>
-      <Item315>
+      </Item313>
+      <Item314>
         <Filename Value="qt/qtwsforms.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSForms"/>
-      </Item315>
-      <Item316>
+      </Item314>
+      <Item315>
         <Filename Value="qt/qtwsgrids.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSGrids"/>
-      </Item316>
-      <Item317>
+      </Item315>
+      <Item316>
         <Filename Value="qt/qtwsimglist.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSImgList"/>
-      </Item317>
-      <Item318>
+      </Item316>
+      <Item317>
         <Filename Value="qt/qtwsmenus.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSMenus"/>
-      </Item318>
-      <Item319>
+      </Item317>
+      <Item318>
         <Filename Value="qt/qtwspairsplitter.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSPairSplitter"/>
-      </Item319>
-      <Item320>
+      </Item318>
+      <Item319>
         <Filename Value="qt/qtwsspin.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSSpin"/>
-      </Item320>
-      <Item321>
+      </Item319>
+      <Item320>
         <Filename Value="qt/qtwsstdctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="QtWSStdCtrls"/>
+      </Item320>
+      <Item321>
+        <Filename Value="qt/qtx11.inc"/>
+        <Type Value="Include"/>
       </Item321>
       <Item322>
-        <Filename Value="qt/qtx11.inc"/>
-        <Type Value="Include"/>
-      </Item322>
-      <Item323>
         <Filename Value="cocoa/cocoawsbuttons.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="cocoawsbuttons"/>
+      </Item322>
+      <Item323>
+        <Filename Value="customdrawn/wincallback.inc"/>
+        <Type Value="Include"/>
       </Item323>
       <Item324>
-        <Filename Value="customdrawn/wincallback.inc"/>
-        <Type Value="Include"/>
-      </Item324>
-      <Item325>
         <Filename Value="customdrawn/customdrawn_winproc.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawn_winproc"/>
+      </Item324>
+      <Item325>
+        <Filename Value="customdrawn/alllclintfunits.pas"/>
+        <UnitName Value="AllLCLIntfUnits"/>
       </Item325>
       <Item326>
-        <Filename Value="customdrawn/alllclintfunits.pas"/>
-        <UnitName Value="AllLCLIntfUnits"/>
+        <Filename Value="customdrawn/customdrawndefines.inc"/>
+        <Type Value="Include"/>
       </Item326>
       <Item327>
-        <Filename Value="customdrawn/customdrawndefines.inc"/>
-        <Type Value="Include"/>
-      </Item327>
-      <Item328>
         <Filename Value="customdrawn/customdrawnint.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnInt"/>
+      </Item327>
+      <Item328>
+        <Filename Value="customdrawn/customdrawnobject.inc"/>
+        <Type Value="Include"/>
       </Item328>
       <Item329>
-        <Filename Value="customdrawn/customdrawnobject.inc"/>
+        <Filename Value="customdrawn/customdrawnobject_cocoa.inc"/>
         <Type Value="Include"/>
       </Item329>
       <Item330>
-        <Filename Value="customdrawn/customdrawnobject_cocoa.inc"/>
+        <Filename Value="customdrawn/customdrawnobject_win.inc"/>
         <Type Value="Include"/>
       </Item330>
       <Item331>
-        <Filename Value="customdrawn/customdrawnobject_win.inc"/>
-        <Type Value="Include"/>
-      </Item331>
-      <Item332>
         <Filename Value="customdrawn/customdrawnwscontrols.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSControls"/>
-      </Item332>
-      <Item333>
+      </Item331>
+      <Item332>
         <Filename Value="customdrawn/customdrawnwsfactory.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSFactory"/>
-      </Item333>
-      <Item334>
+      </Item332>
+      <Item333>
         <Filename Value="customdrawn/customdrawnwsforms.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSForms"/>
-      </Item334>
-      <Item335>
+      </Item333>
+      <Item334>
         <Filename Value="customdrawn/interfaces.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Interfaces"/>
-      </Item335>
-      <Item336>
+      </Item334>
+      <Item335>
         <Filename Value="customdrawn/customdrawnwsforms_win.inc"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawnwsforms_win"/>
-      </Item336>
-      <Item337>
+      </Item335>
+      <Item336>
         <Filename Value="customdrawn/customdrawnwsforms_x11.inc"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawnwsforms_x11"/>
-      </Item337>
-      <Item338>
+      </Item336>
+      <Item337>
         <Filename Value="customdrawn/customdrawnobject_x11.inc"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawnobject_x11"/>
-      </Item338>
-      <Item339>
+      </Item337>
+      <Item338>
         <Filename Value="customdrawn/cocoagdiobjects.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CocoaGDIObjects"/>
-      </Item339>
-      <Item340>
+      </Item338>
+      <Item339>
         <Filename Value="customdrawn/customdrawn_cocoaproc.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawn_cocoaproc"/>
-      </Item340>
-      <Item341>
+      </Item339>
+      <Item340>
         <Filename Value="customdrawn/cocoautils.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CocoaUtils"/>
+      </Item340>
+      <Item341>
+        <Filename Value="customdrawn/customdrawnlclintf.inc"/>
+        <Type Value="Include"/>
       </Item341>
       <Item342>
-        <Filename Value="customdrawn/customdrawnlclintf.inc"/>
+        <Filename Value="customdrawn/customdrawnlclintfh.inc"/>
         <Type Value="Include"/>
       </Item342>
       <Item343>
-        <Filename Value="customdrawn/customdrawnlclintfh.inc"/>
+        <Filename Value="customdrawn/customdrawnwinapi_cocoa.inc"/>
         <Type Value="Include"/>
       </Item343>
       <Item344>
-        <Filename Value="customdrawn/customdrawnwinapi_cocoa.inc"/>
+        <Filename Value="customdrawn/customdrawnwinapi_win.inc"/>
         <Type Value="Include"/>
       </Item344>
       <Item345>
-        <Filename Value="customdrawn/customdrawnwinapi_win.inc"/>
+        <Filename Value="customdrawn/customdrawnwinapi.inc"/>
         <Type Value="Include"/>
       </Item345>
       <Item346>
-        <Filename Value="customdrawn/customdrawnwinapi.inc"/>
+        <Filename Value="customdrawn/customdrawnwinapih.inc"/>
         <Type Value="Include"/>
       </Item346>
       <Item347>
-        <Filename Value="customdrawn/customdrawnwinapih.inc"/>
+        <Filename Value="customdrawn/customdrawnwsforms_cocoa.inc"/>
         <Type Value="Include"/>
       </Item347>
       <Item348>
-        <Filename Value="customdrawn/customdrawnwsforms_cocoa.inc"/>
-        <Type Value="Include"/>
-      </Item348>
-      <Item349>
         <Filename Value="customdrawn/customdrawnproc.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawnproc"/>
-      </Item349>
-      <Item350>
+      </Item348>
+      <Item349>
         <Filename Value="customdrawn/customdrawn_x11proc.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawn_x11proc"/>
+      </Item349>
+      <Item350>
+        <Filename Value="customdrawn/customdrawnwinapi_x11.inc"/>
+        <Type Value="Include"/>
       </Item350>
       <Item351>
-        <Filename Value="customdrawn/customdrawnwinapi_x11.inc"/>
-        <Type Value="Include"/>
-      </Item351>
-      <Item352>
         <Filename Value="customdrawn/customdrawn_androidproc.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawn_androidproc"/>
+      </Item351>
+      <Item352>
+        <Filename Value="customdrawn/customdrawnobject_android.inc"/>
+        <Type Value="Include"/>
       </Item352>
       <Item353>
-        <Filename Value="customdrawn/customdrawnobject_android.inc"/>
+        <Filename Value="customdrawn/customdrawnwinapi_android.inc"/>
         <Type Value="Include"/>
       </Item353>
       <Item354>
-        <Filename Value="customdrawn/customdrawnwinapi_android.inc"/>
+        <Filename Value="customdrawn/customdrawnwsforms_android.inc"/>
         <Type Value="Include"/>
       </Item354>
       <Item355>
-        <Filename Value="customdrawn/customdrawnwsforms_android.inc"/>
-        <Type Value="Include"/>
-      </Item355>
-      <Item356>
         <Filename Value="customdrawn/android/android_native_app_glue.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="android_native_app_glue"/>
-      </Item356>
-      <Item357>
+      </Item355>
+      <Item356>
         <Filename Value="customdrawn/android/asset_manager.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="asset_manager"/>
-      </Item357>
-      <Item358>
+      </Item356>
+      <Item357>
         <Filename Value="customdrawn/android/configuration.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="configuration"/>
-      </Item358>
-      <Item359>
+      </Item357>
+      <Item358>
         <Filename Value="customdrawn/android/egl.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="egl"/>
-      </Item359>
-      <Item360>
+      </Item358>
+      <Item359>
         <Filename Value="customdrawn/android/gles.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gles"/>
-      </Item360>
-      <Item361>
+      </Item359>
+      <Item360>
         <Filename Value="customdrawn/android/input.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="input"/>
-      </Item361>
-      <Item362>
+      </Item360>
+      <Item361>
         <Filename Value="customdrawn/android/jni.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="jni"/>
-      </Item362>
-      <Item363>
+      </Item361>
+      <Item362>
         <Filename Value="customdrawn/android/keycodes.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="keycodes"/>
-      </Item363>
-      <Item364>
+      </Item362>
+      <Item363>
         <Filename Value="customdrawn/android/log.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="log"/>
-      </Item364>
-      <Item365>
+      </Item363>
+      <Item364>
         <Filename Value="customdrawn/android/looper.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="looper"/>
-      </Item365>
-      <Item366>
+      </Item364>
+      <Item365>
         <Filename Value="customdrawn/android/native_activity.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="native_activity"/>
-      </Item366>
-      <Item367>
+      </Item365>
+      <Item366>
         <Filename Value="customdrawn/android/native_window.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="native_window"/>
-      </Item367>
-      <Item368>
+      </Item366>
+      <Item367>
         <Filename Value="customdrawn/android/rect.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="rect"/>
-      </Item368>
-      <Item369>
+      </Item367>
+      <Item368>
         <Filename Value="customdrawn/android/bitmap.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="bitmap"/>
-      </Item369>
-      <Item370>
+      </Item368>
+      <Item369>
         <Filename Value="customdrawn/customdrawnwsstdctrls.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSStdCtrls"/>
-      </Item370>
-      <Item371>
+      </Item369>
+      <Item370>
         <Filename Value="customdrawn/customdrawnwscomctrls.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSComCtrls"/>
-      </Item371>
-      <Item372>
+      </Item370>
+      <Item371>
         <Filename Value="customdrawn/customdrawnwsextctrls.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSExtCtrls"/>
-      </Item372>
-      <Item373>
+      </Item371>
+      <Item372>
         <Filename Value="customdrawn/customdrawnprivate.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="customdrawnprivate"/>
+      </Item372>
+      <Item373>
+        <Filename Value="customdrawn/customdrawnlclintf_android.inc"/>
+        <Type Value="Include"/>
       </Item373>
       <Item374>
-        <Filename Value="customdrawn/customdrawnlclintf_android.inc"/>
+        <Filename Value="customdrawn/customdrawnlclintf_cocoa.inc"/>
         <Type Value="Include"/>
       </Item374>
       <Item375>
-        <Filename Value="customdrawn/customdrawnlclintf_cocoa.inc"/>
+        <Filename Value="customdrawn/customdrawnlclintf_win.inc"/>
         <Type Value="Include"/>
       </Item375>
       <Item376>
-        <Filename Value="customdrawn/customdrawnlclintf_win.inc"/>
+        <Filename Value="customdrawn/customdrawnlclintf_x11.inc"/>
         <Type Value="Include"/>
       </Item376>
       <Item377>
-        <Filename Value="customdrawn/customdrawnlclintf_x11.inc"/>
+        <Filename Value="customdrawn/customdrawntrayicon_android.inc"/>
         <Type Value="Include"/>
       </Item377>
       <Item378>
-        <Filename Value="customdrawn/customdrawntrayicon_android.inc"/>
+        <Filename Value="customdrawn/customdrawntrayicon_cocoa.inc"/>
         <Type Value="Include"/>
       </Item378>
       <Item379>
-        <Filename Value="customdrawn/customdrawntrayicon_cocoa.inc"/>
+        <Filename Value="customdrawn/customdrawntrayicon_win.inc"/>
         <Type Value="Include"/>
       </Item379>
       <Item380>
-        <Filename Value="customdrawn/customdrawntrayicon_win.inc"/>
-        <Type Value="Include"/>
+        <Filename Value="cocoa/cocoacaret.pas"/>
+        <AddToUsesPkgSection Value="False"/>
+        <UnitName Value="CocoaCaret"/>
       </Item380>
       <Item381>
         <Filename Value="customdrawn/customdrawntrayicon_x11.inc"/>
         <Type Value="Include"/>
       </Item381>
       <Item382>
-        <Filename Value="cocoa/cocoacaret.pas"/>
+        <Filename Value="customdrawn/customdrawnwslazdeviceapis.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="CocoaCaret"/>
+        <UnitName Value="CustomDrawnWSLazDeviceAPIS"/>
       </Item382>
       <Item383>
-        <Filename Value="customdrawn/customdrawnwslazdeviceapis.pas"/>
+        <Filename Value="nogui/alllclintfunits.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="CustomDrawnWSLazDeviceAPIS"/>
+        <UnitName Value="AllLCLIntfUnits"/>
       </Item383>
       <Item384>
-        <Filename Value="nogui/alllclintfunits.pas"/>
+        <Filename Value="nogui/interfaces.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="AllLCLIntfUnits"/>
+        <UnitName Value="Interfaces"/>
       </Item384>
       <Item385>
-        <Filename Value="nogui/interfaces.pp"/>
+        <Filename Value="nogui/noguiint.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="Interfaces"/>
+        <UnitName Value="NoGUIInt"/>
       </Item385>
       <Item386>
-        <Filename Value="nogui/noguiint.pp"/>
+        <Filename Value="nogui/noguiwsfactory.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="NoGUIInt"/>
+        <UnitName Value="NoGUIWSFactory"/>
       </Item386>
       <Item387>
-        <Filename Value="nogui/noguiwsfactory.pas"/>
+        <Filename Value="customdrawn/customdrawnwsspin.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="NoGUIWSFactory"/>
+        <UnitName Value="customdrawnwsspin"/>
       </Item387>
       <Item388>
-        <Filename Value="customdrawn/customdrawnwsspin.pas"/>
+        <Filename Value="customdrawn/customdrawnwsbuttons.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="customdrawnwsspin"/>
+        <UnitName Value="customdrawnwsbuttons"/>
       </Item388>
       <Item389>
-        <Filename Value="customdrawn/customdrawnwsbuttons.pas"/>
+        <Filename Value="customdrawn/customdrawnwsdialogs.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="customdrawnwsbuttons"/>
+        <UnitName Value="customdrawnwsdialogs"/>
       </Item389>
       <Item390>
-        <Filename Value="customdrawn/customdrawnwsdialogs.pas"/>
-        <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="customdrawnwsdialogs"/>
+        <Filename Value="customdrawn/customdrawnwsmenus_cocoa.inc"/>
+        <Type Value="Include"/>
       </Item390>
       <Item391>
-        <Filename Value="customdrawn/customdrawnwsmenus_cocoa.inc"/>
-        <Type Value="Include"/>
-      </Item391>
-      <Item392>
         <Filename Value="customdrawn/customdrawnwsmenus.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CustomDrawnWSMenus"/>
-      </Item392>
-      <Item393>
+      </Item391>
+      <Item392>
         <Filename Value="gtk2/gtk2disableliboverlay.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gtk2disableliboverlay"/>
-      </Item393>
-      <Item394>
+      </Item392>
+      <Item393>
         <Filename Value="gtk3/gtk3int.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gtk3int"/>
+      </Item393>
+      <Item394>
+        <Filename Value="gtk3/gtk3winapih.inc"/>
+        <Type Value="Include"/>
       </Item394>
       <Item395>
-        <Filename Value="gtk3/gtk3winapih.inc"/>
-        <Type Value="Include"/>
-      </Item395>
-      <Item396>
         <Filename Value="gtk3/interfaces.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="interfaces"/>
-      </Item396>
-      <Item397>
+      </Item395>
+      <Item396>
         <Filename Value="gtk3/gtk3cellrenderer.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3CellRenderer"/>
+      </Item396>
+      <Item397>
+        <Filename Value="gtk3/gtk3lclintf.inc"/>
+        <Type Value="Include"/>
       </Item397>
       <Item398>
-        <Filename Value="gtk3/gtk3lclintf.inc"/>
+        <Filename Value="gtk3/gtk3lclintfh.inc"/>
         <Type Value="Include"/>
       </Item398>
       <Item399>
-        <Filename Value="gtk3/gtk3lclintfh.inc"/>
+        <Filename Value="gtk3/gtk3object.inc"/>
         <Type Value="Include"/>
       </Item399>
       <Item400>
-        <Filename Value="gtk3/gtk3object.inc"/>
-        <Type Value="Include"/>
-      </Item400>
-      <Item401>
         <Filename Value="gtk3/gtk3objects.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gtk3objects"/>
-      </Item401>
-      <Item402>
+      </Item400>
+      <Item401>
         <Filename Value="gtk3/gtk3private.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gtk3private"/>
-      </Item402>
-      <Item403>
+      </Item401>
+      <Item402>
         <Filename Value="gtk3/gtk3procs.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gtk3procs"/>
-      </Item403>
-      <Item404>
+      </Item402>
+      <Item403>
         <Filename Value="gtk3/gtk3widgets.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="gtk3widgets"/>
+      </Item403>
+      <Item404>
+        <Filename Value="gtk3/gtk3winapi.inc"/>
+        <Type Value="Include"/>
       </Item404>
       <Item405>
-        <Filename Value="gtk3/gtk3winapi.inc"/>
-        <Type Value="Include"/>
-      </Item405>
-      <Item406>
         <Filename Value="gtk3/gtk3wsbuttons.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSButtons"/>
-      </Item406>
-      <Item407>
+      </Item405>
+      <Item406>
         <Filename Value="gtk3/gtk3wschecklst.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSCheckLst"/>
-      </Item407>
-      <Item408>
+      </Item406>
+      <Item407>
         <Filename Value="gtk3/gtk3wscomctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSComCtrls"/>
-      </Item408>
-      <Item409>
+      </Item407>
+      <Item408>
         <Filename Value="gtk3/gtk3wscontrols.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSControls"/>
-      </Item409>
-      <Item410>
+      </Item408>
+      <Item409>
         <Filename Value="gtk3/gtk3wsextctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSExtCtrls"/>
-      </Item410>
-      <Item411>
+      </Item409>
+      <Item410>
         <Filename Value="gtk3/gtk3wsfactory.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSFactory"/>
-      </Item411>
-      <Item412>
+      </Item410>
+      <Item411>
         <Filename Value="gtk3/gtk3wsforms.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSForms"/>
-      </Item412>
-      <Item413>
+      </Item411>
+      <Item412>
         <Filename Value="gtk3/gtk3wsimglist.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSImgList"/>
-      </Item413>
-      <Item414>
+      </Item412>
+      <Item413>
         <Filename Value="gtk3/gtk3wsmenus.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSMenus"/>
-      </Item414>
-      <Item415>
+      </Item413>
+      <Item414>
         <Filename Value="gtk3/gtk3wsspin.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSSpin"/>
-      </Item415>
-      <Item416>
+      </Item414>
+      <Item415>
         <Filename Value="gtk3/gtk3wsstdctrls.pp"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="Gtk3WSStdCtrls"/>
+      </Item415>
+      <Item416>
+        <Filename Value="gtk3/gtk3defines.inc"/>
+        <Type Value="Include"/>
       </Item416>
       <Item417>
-        <Filename Value="gtk3/gtk3defines.inc"/>
-        <Type Value="Include"/>
+        <Filename Value="gtk3/gtk3wscalendar.pp"/>
+        <AddToUsesPkgSection Value="False"/>
+        <UnitName Value="Gtk3WSCalendar"/>
       </Item417>
       <Item418>
-        <Filename Value="gtk3/gtk3wscalendar.pp"/>
+        <Filename Value="gtk3/gtk3bindings/lazatk1.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="Gtk3WSCalendar"/>
+        <UnitName Value="LazAtk1"/>
       </Item418>
       <Item419>
-        <Filename Value="gtk3/gtk3bindings/lazatk1.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazcairo1.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazAtk1"/>
+        <UnitName Value="LazCairo1"/>
       </Item419>
       <Item420>
-        <Filename Value="gtk3/gtk3bindings/lazcairo1.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazgdk3.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazCairo1"/>
+        <UnitName Value="LazGdk3"/>
       </Item420>
       <Item421>
-        <Filename Value="gtk3/gtk3bindings/lazgdk3.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazgdkpixbuf2.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGdk3"/>
+        <UnitName Value="LazGdkPixbuf2"/>
       </Item421>
       <Item422>
-        <Filename Value="gtk3/gtk3bindings/lazgdkpixbuf2.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazgio2.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGdkPixbuf2"/>
+        <UnitName Value="LazGio2"/>
       </Item422>
       <Item423>
-        <Filename Value="gtk3/gtk3bindings/lazgio2.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazglib2.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGio2"/>
+        <UnitName Value="LazGLib2"/>
       </Item423>
       <Item424>
-        <Filename Value="gtk3/gtk3bindings/lazglib2.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazgmodule2.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGLib2"/>
+        <UnitName Value="LazGModule2"/>
       </Item424>
       <Item425>
-        <Filename Value="gtk3/gtk3bindings/lazgmodule2.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazgobject2.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGModule2"/>
+        <UnitName Value="LazGObject2"/>
       </Item425>
       <Item426>
-        <Filename Value="gtk3/gtk3bindings/lazgobject2.pas"/>
+        <Filename Value="gtk3/gtk3bindings/lazgtk3.pas"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGObject2"/>
+        <UnitName Value="LazGtk3"/>
       </Item426>
       <Item427>
-        <Filename Value="gtk3/gtk3bindings/lazgtk3.pas"/>
+        <Filename Value="cocoa/cocoawsdialogs.pp"/>
         <AddToUsesPkgSection Value="False"/>
-        <UnitName Value="LazGtk3"/>
+        <UnitName Value="CocoaWSDialogs"/>
       </Item427>
       <Item428>
         <Filename Value="gtk3/gtk3bindings/lazpango1.pas"/>
Index: /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas
===================================================================
--- /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas	(revision 43475)
+++ /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas	(working copy)
@@ -14,7 +14,8 @@
   CocoaWSForms,
   CocoaWSMenus,
   CocoaWSStdCtrls,
-  CocoaWSComCtrls;
+  CocoaWSComCtrls,
+  CocoaWSDialogs;
 
 // imglist
 function RegisterCustomImageList: Boolean;
@@ -216,7 +217,8 @@
 
 function RegisterFileDialog: Boolean; alias : 'WSRegisterFileDialog';
 begin
-  Result := False;
+  RegisterWSComponent(TFileDialog, TCocoaWSFileDialog);
+  Result := True;
 end;
 
Index: /Developer/lazarus_trunc/lcl/interfaces/cocoa/alllclintfunits.pas
===================================================================
--- /Developer/lazarus_trunc/lcl/interfaces/cocoa/alllclintfunits.pas	(revision 43475)
+++ /Developer/lazarus_trunc/lcl/interfaces/cocoa/alllclintfunits.pas	(working copy)
@@ -13,6 +13,7 @@
   cocoawsforms,
   cocoaint,
   cocoawscommon,
-  cocoawscomctrls;
+  cocoawscomctrls,
+  cocoawsdialogs;
 implementation
 end.
fix_ 0025409.patch (39,410 bytes)

accSone

2013-12-08 15:51

developer   ~0071822

Attached you find the additional cocoawsdialogs.pp that contains the dialogs implementation. The patch contains the additional changes to make the save and open dialogs alive. todos: not all filedialog options are implemented

Paul Ishenin

2013-12-09 00:42

manager   ~0071825

Thanks, applied.

Please close if ok.

accSone

2013-12-09 09:23

developer   ~0071832

Thanks Paul. I forgot to remove debugln in cocoawsdialogs.pp line 152. Please uncomment it.

Paul Ishenin

2013-12-09 14:10

manager   ~0071836

Commented.

accSone

2013-12-11 12:16

developer   ~0071866

Paul, patch doesn't work because you forgot to add the registering in:

--- /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas (revision 43475)
+++ /Developer/lazarus_trunc/lcl/interfaces/cocoa/cocoawsfactory.pas (working copy)
 function RegisterFileDialog: Boolean; alias : 'WSRegisterFileDialog';
 begin
- Result := False;
+ RegisterWSComponent(TFileDialog, TCocoaWSFileDialog);
+ Result := True;
 end;

Issue History

Date Modified Username Field Change
2013-12-08 11:15 accSone New Issue
2013-12-08 11:15 accSone File Added: testAppFileDialog.zip
2013-12-08 15:47 accSone File Added: cocoawsdialogs.pp
2013-12-08 15:49 accSone File Added: fix_ 0025409.patch
2013-12-08 15:51 accSone Note Added: 0071822
2013-12-09 00:42 Paul Ishenin Fixed in Revision => 43523
2013-12-09 00:42 Paul Ishenin LazTarget => -
2013-12-09 00:42 Paul Ishenin Note Added: 0071825
2013-12-09 00:42 Paul Ishenin Status new => resolved
2013-12-09 00:42 Paul Ishenin Fixed in Version => 1.4
2013-12-09 00:42 Paul Ishenin Resolution open => fixed
2013-12-09 00:42 Paul Ishenin Assigned To => Paul Ishenin
2013-12-09 09:23 accSone Note Added: 0071832
2013-12-09 14:10 Paul Ishenin Note Added: 0071836
2013-12-11 12:16 accSone Note Added: 0071866