Changeset 15


Ignore:
Timestamp:
Aug 6, 2012, 2:35:22 PM (12 years ago)
Author:
chronos
Message:
  • Added: Registration of new file templates for modules.
  • Added: Program stores last opened file list in registry.
Location:
trunk
Files:
15 added
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/Studio/LibreDevelopStudio.lpi

    r11 r15  
    3333      </local>
    3434    </RunParams>
    35     <RequiredPackages Count="6">
     35    <RequiredPackages Count="7">
    3636      <Item1>
    37         <PackageName Value="LDModuleProject"/>
     37        <PackageName Value="LDStudioCommon"/>
    3838      </Item1>
    3939      <Item2>
    40         <PackageName Value="LDModulePascal"/>
     40        <PackageName Value="LDModuleProject"/>
    4141      </Item2>
    4242      <Item3>
    43         <PackageName Value="LDModuleBrainfuck"/>
     43        <PackageName Value="LDModulePascal"/>
    4444      </Item3>
    4545      <Item4>
    46         <PackageName Value="LDModuleDebug"/>
     46        <PackageName Value="LDModuleBrainfuck"/>
    4747      </Item4>
    4848      <Item5>
    49         <PackageName Value="LibreDevelopStudio"/>
     49        <PackageName Value="LDModuleDebug"/>
    5050      </Item5>
    5151      <Item6>
     52        <PackageName Value="LibreDevelopStudio"/>
     53      </Item6>
     54      <Item7>
    5255        <PackageName Value="LCL"/>
    53       </Item6>
     56      </Item7>
    5457    </RequiredPackages>
    5558    <Units Count="2">
  • trunk/Studio/UCore.pas

    r11 r15  
    4747begin
    4848  with DataModule1.ModuleManager do begin
     49    RegisterModule(TLDModuleProject.Create, True);
     50    RegisterModule(TLDModulePascal.Create, True);
     51    RegisterModule(TLDModuleBrainfuck.Create, True);
    4952    RegisterModule(TLDModuleDebug.Create, True);
    50     RegisterModule(TLDModuleBrainfuck.Create, True);
    51     RegisterModule(TLDModulePascal.Create, True);
    52     RegisterModule(TLDModuleProject.Create, True);
    5353    InstallMarked;
    5454  end;
  • trunk/StudioCommon/LDStudioCommon.lpk

    r14 r15  
    2828      </Item2>
    2929    </Files>
     30    <i18n>
     31      <EnableI18N Value="True"/>
     32      <OutDir Value="Languages"/>
     33      <EnableI18NForLFM Value="True"/>
     34    </i18n>
    3035    <Type Value="RunAndDesignTime"/>
    31     <RequiredPkgs Count="4">
     36    <RequiredPkgs Count="5">
    3237      <Item1>
    33         <PackageName Value="TemplateGenerics"/>
     38        <PackageName Value="Common"/>
    3439      </Item1>
    3540      <Item2>
    36         <PackageName Value="LCL"/>
     41        <PackageName Value="TemplateGenerics"/>
    3742      </Item2>
    3843      <Item3>
    39         <PackageName Value="ModularSystem"/>
     44        <PackageName Value="LCL"/>
    4045      </Item3>
    4146      <Item4>
     47        <PackageName Value="ModularSystem"/>
     48      </Item4>
     49      <Item5>
    4250        <PackageName Value="FCL"/>
    43       </Item4>
     51      </Item5>
    4452    </RequiredPkgs>
    4553    <UsageOptions>
  • trunk/StudioCommon/ULDStudioAPI.pas

    r14 r15  
    77uses
    88  Classes, SysUtils, UModularSystem, ActnList, Menus, Forms, USource,
    9   SpecializedList;
     9  SpecializedList, URegistry;
    1010
    1111type
     
    1919  TUnregisterMainMenuItemEvent = procedure (MenuItem: TMenuItem) of object;
    2020  TDockFormEvent = procedure (Form: TForm; Target: TDockTarget) of object;
     21  TGetRegistryContextEvent = function: TRegistryContext of object;
     22  TRegisterFileTemplateEvent = procedure (Template: TFileTemplate) of object;
    2123
    2224  { TLDStudioAPI }
     
    2527  private
    2628    FOnDockForm: TDockFormEvent;
     29    FOnGetRegistryContext: TGetRegistryContextEvent;
    2730    FOnOpenFile: TOpenFileEvent;
    2831    FOnRegisterAction: TRegisterActionEvent;
     32    FOnRegisterFileTemplate: TRegisterFileTemplateEvent;
    2933    FOnRegisterFileType: TRegisterFileTypeEvent;
    3034    FOnRegisterForm: TRegisterFormEvent;
    3135    FOnRegisterMainMenuItem: TRegisterMainMenuItemEvent;
    3236    FOnUnregisterAction: TRegisterActionEvent;
     37    FOnUnregisterFileTemplate: TRegisterFileTemplateEvent;
    3338    FOnUnregisterFileType: TRegisterFileTypeEvent;
    3439    FOnUnregisterForm: TRegisterFormEvent;
     
    4247    procedure RegisterFileType(FileType: TSourceType);
    4348    procedure UnregisterFileType(FileType: TSourceType);
     49    procedure RegisterFileTemplate(Template: TFileTemplate);
     50    procedure UnregisterFileTemplate(Template: TFileTemplate);
    4451    procedure RegisterForm(Form: TForm);
    4552    procedure UnregisterForm(Form: TForm);
     
    5057    procedure UnregisterMainMenuItem(MenuItem: TMenuItem);
    5158    procedure DockForm(Form: TForm; Target: TDockTarget);
    52 
     59    function GetRegistryContext: TRegistryContext;
    5360  published
    5461    // API handling
     
    7178      read FOnUnregisterMainMenuItem write FOnUnregisterMainMenuItem;
    7279    property OnDockForm: TDockFormEvent read FOnDockForm write FOnDockForm;
     80    property OnGetRegistryContext: TGetRegistryContextEvent
     81      read FOnGetRegistryContext write FOnGetRegistryContext;
     82    property OnRegisterFileTemplate: TRegisterFileTemplateEvent
     83      read FOnRegisterFileTemplate write FOnRegisterFileTemplate;
     84    property OnUnregisterFileTemplate: TRegisterFileTemplateEvent
     85      read FOnUnregisterFileTemplate write FOnUnregisterFileTemplate;
    7386  end;
    7487
     
    110123  if Assigned(FOnUnregisterFileType) then
    111124    FOnUnregisterFileType(FileType);
     125end;
     126
     127procedure TLDStudioAPI.RegisterFileTemplate(Template: TFileTemplate);
     128begin
     129  if Assigned(FOnRegisterFileTemplate) then
     130    FOnRegisterFileTemplate(Template);
     131end;
     132
     133procedure TLDStudioAPI.UnregisterFileTemplate(Template: TFileTemplate);
     134begin
     135  if Assigned(FOnUnregisterFileTemplate) then
     136    FOnUnregisterFileTemplate(Template);
    112137end;
    113138
     
    155180end;
    156181
     182function TLDStudioAPI.GetRegistryContext: TRegistryContext;
     183begin
     184  if Assigned(FOnGetRegistryContext) then
     185    Result := FOnGetRegistryContext();
     186end;
     187
    157188end.
    158189
  • trunk/StudioCommon/USource.pas

    r8 r15  
    66
    77uses
    8   Classes, SysUtils, SpecializedList;
     8  Classes, SysUtils, SpecializedList, Forms;
    99
    1010type
     11
     12  { TSourceType }
     13
    1114  TSourceType = class
    1215    Extension: string;
    1316    Title: string;
     17    Form: TForm;
     18    constructor Create; virtual;
    1419  end;
     20
     21  TFileTypeClass = class of TSourceType;
    1522
    1623  { TFileTypes }
     
    2027  end;
    2128
     29  { TSource }
     30
    2231  TSource = class
    23     Name: string;
     32  private
     33    FName: string;
     34    procedure SetName(AValue: string);
     35  public
     36    Modified: Boolean;
     37    Form: TForm;
     38    property Name: string read FName write SetName;
    2439  end;
    2540
     
    2944    Items: TListObject; // TListObject<TSource>
    3045    Main: TSource;
     46  end;
     47
     48  { TFileTemplate }
     49
     50  TFileTemplate = class
     51  public
     52    Name: string;
     53    Description: TStringList;
     54    FileTypeClass: TSourceType;
     55    constructor Create; virtual;
     56    destructor Destroy; override;
     57    function Execute: TSource; virtual;
     58  end;
     59
     60  TFileTemplates = class(TListObject)
    3161  end;
    3262
     
    5484  TConvertorClass = class of TConvertor;
    5585
     86  { TSourceText }
     87
    5688  TSourceText = class(TSource)
    57     Content: string;
    58     InMemory: Boolean;
     89  private
     90  public
     91    Loaded: Boolean;
     92    Content: TStringList;
     93    constructor Create;
     94    destructor Destroy; override;
    5995  end;
     96
    6097
    6198
     
    64101resourcestring
    65102  SAllFiles = 'All files';
     103
     104{ TSourceType }
     105
     106constructor TSourceType.Create;
     107begin
     108  inherited;
     109end;
     110
     111procedure TSource.SetName(AValue: string);
     112begin
     113  if FName = AValue then Exit;
     114  FName := AValue;
     115  if Assigned(Form) then
     116    Form.Caption := ExtractFileName(FName);
     117end;
     118
     119
     120{ TFileTemplate }
     121
     122constructor TFileTemplate.Create;
     123begin
     124  Description := TStringList.Create;
     125end;
     126
     127destructor TFileTemplate.Destroy;
     128begin
     129  Description.Free;
     130  inherited Destroy;
     131end;
     132
     133function TFileTemplate.Execute: TSource;
     134begin
     135
     136end;
     137
    66138
    67139{ TFileTypes }
     
    97169end;
    98170
     171{ TSourceText }
     172
     173constructor TSourceText.Create;
     174begin
     175  Content := TStringList.Create;
     176end;
     177
     178destructor TSourceText.Destroy;
     179begin
     180  Content.Free;
     181  inherited Destroy;
     182end;
     183
    99184end.
    100185
  • trunk/StudioModules/LDModuleBrainfuck/UBrainfuckCode.pas

    r7 r15  
    6262  TSourceBrainFuck(Output).Code.Clear;
    6363  Index := 0;
    64   Code := TSourceText(Input).Content;
     64  Code := TSourceText(Input).Content.Text;
    6565  for I := 1 to Length(Code) do begin
    6666    case Code[I] of
  • trunk/StudioModules/LDModuleDebug/LDModuleDebug.lpk

    r5 r15  
    3939      </Item5>
    4040    </Files>
     41    <i18n>
     42      <EnableI18N Value="True"/>
     43      <OutDir Value="Languages"/>
     44      <EnableI18NForLFM Value="True"/>
     45    </i18n>
    4146    <Type Value="RunAndDesignTime"/>
    4247    <RequiredPkgs Count="3">
  • trunk/StudioModules/LDModulePascal/LDModulePascal.lpk

    r8 r15  
    88      <PathDelim Value="\"/>
    99      <SearchPaths>
    10         <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)\"/>
     10        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
    1111      </SearchPaths>
    1212      <Other>
     
    2424    </Files>
    2525    <Type Value="RunAndDesignTime"/>
    26     <RequiredPkgs Count="2">
     26    <RequiredPkgs Count="3">
    2727      <Item1>
    28         <PackageName Value="LDStudioCommon"/>
     28        <PackageName Value="LDModuleProject"/>
    2929      </Item1>
    3030      <Item2>
     31        <PackageName Value="LDStudioCommon"/>
     32      </Item2>
     33      <Item3>
    3134        <PackageName Value="FCL"/>
    32       </Item2>
     35      </Item3>
    3336    </RequiredPkgs>
    3437    <UsageOptions>
  • trunk/StudioModules/LDModulePascal/ULDModulePascal.pas

    r12 r15  
    66
    77uses
    8   Classes, SysUtils, UModularSystem, USource;
     8  Classes, SysUtils, UModularSystem, USource, UProject;
    99
    1010type
     11  { TProjectTemplateConsoleApp }
     12
     13  TProjectTemplateConsoleApp = class(TFileTemplate)
     14    constructor Create; override;
     15    function Execute: TSource; override;
     16  end;
     17
     18  { TProjectTemplateGUIApp }
     19
     20  TProjectTemplateGUIApp = class(TFileTemplate)
     21    constructor Create; override;
     22    function Execute: TSource; override;
     23  end;
     24
     25  { TProjectTemplatePackage }
     26
     27  TProjectTemplatePackage = class(TFileTemplate)
     28    constructor Create; override;
     29    function Execute: TSource; override;
     30  end;
     31
     32  { TProjectTemplateUnit }
     33
     34  TProjectTemplateUnit = class(TFileTemplate)
     35    constructor Create; override;
     36    function Execute: TSource; override;
     37  end;
    1138
    1239  { TLDModulePascal }
     
    1542  private
    1643    PasFileType: TSourceType;
     44    ProjectTemplateConsoleApp: TProjectTemplateConsoleApp;
     45    ProjectTemplateGUIApp: TProjectTemplateGUIApp;
     46    ProjectTemplateUnit: TProjectTemplateUnit;
    1747  public
    1848    constructor Create; override;
     
    4878    PasFileType.Title := 'Pascal source';
    4979    RegisterFileType(PasFileType);
     80    ProjectTemplateConsoleApp := TProjectTemplateConsoleApp.Create;
     81    RegisterFileTemplate(ProjectTemplateConsoleApp);
     82    ProjectTemplateGUIApp := TProjectTemplateGUIApp.Create;
     83    RegisterFileTemplate(ProjectTemplateGUIApp);
     84    ProjectTemplateUnit := TProjectTemplateUnit.Create;
     85    RegisterFileTemplate(ProjectTemplateUnit);
    5086  end;
    5187  inherited Install;
     
    5692  inherited Uninstall;
    5793  with TLDStudioAPI(API) do begin
     94    RegisterFileTemplate(ProjectTemplateUnit);
     95    FreeAndNil(ProjectTemplateUnit);
     96    UnregisterFileTemplate(ProjectTemplateGUIApp);
     97    FreeAndNil(ProjectTemplateGUIApp);
     98    UnregisterFileTemplate(ProjectTemplateConsoleApp);
     99    FreeAndNil(ProjectTemplateConsoleApp);
    58100    UnregisterFileType(PasFileType);
    59     PasFileType.Free;
    60   end;
     101    FreeAndNil(PasFileType);
     102  end;
     103end;
     104
     105resourcestring
     106  SConsoleApplication = 'Console application';
     107  SUnit = 'Unit';
     108  SPackage = 'Package';
     109  SGUIApplication = 'GUI application';
     110
     111{ TProjectTemplateUnit }
     112
     113constructor TProjectTemplateUnit.Create;
     114begin
     115  inherited Create;
     116  Name := SUnit;
     117  //FileTypeClass := TSourceText;
     118end;
     119
     120function TProjectTemplateUnit.Execute: TSource;
     121var
     122  NewFile: TSource;
     123begin
     124  //inherited InitProject(Project);
     125  Result := TSourceText.Create;
     126  Result.Name := 'Unit1.pas';
     127  with TSourceText(Result).Content do begin
     128    Add('unit Unit1;');
     129    Add('');
     130    Add('interface');
     131    Add('');
     132    Add('implementation');
     133    Add('');
     134    Add('end.');
     135  end;
     136end;
     137
     138{ TProjectTemplatePackage }
     139
     140constructor TProjectTemplatePackage.Create;
     141begin
     142  inherited Create;
     143  Name := SPackage;
     144end;
     145
     146function TProjectTemplatePackage.Execute: TSource;
     147var
     148  NewFile: TSourceText;
     149begin
     150{  Result := TProject.Create;
     151  Result.Name := 'Package1';
     152  NewFile := TSourceText.Create;
     153  NewFile.Name := 'Package1.bpl';
     154  with NewFile.Content do begin
     155    Add('package Package1;');
     156    Add('');
     157    Add('requires');
     158    Add('  RTL;');
     159    Add('');
     160    Add('end.');
     161  end;
     162  TProject(Result).Files.Add();
     163  TProject(Result).MainSource := NewFile;
     164}end;
     165
     166{ TProjectTemplateGUIApp }
     167
     168constructor TProjectTemplateGUIApp.Create;
     169begin
     170  inherited Create;
     171  Name := SGUIApplication;
     172end;
     173
     174function TProjectTemplateGUIApp.Execute: TSource;
     175var
     176  NewFile: TProjectFile;
     177begin
     178{  inherited InitProject(Project);
     179  NewFile := Project.Files.AddFile('Project1.dpr');
     180  with NewFile.Source do begin
     181    Add('program Project1;');
     182    Add('');
     183    Add('uses');
     184    Add('  GUI;');
     185    Add('');
     186    Add('var');
     187    Add('  Application: TApplication');
     188    Add('begin');
     189    Add('  Application := TApplication.Create;');
     190    Add('  Application.Run;');
     191    Add('  Application.Free;');
     192    Add('end.');
     193  end;
     194  Project.MainSource := NewFile;
     195}end;
     196
     197{ TProjectTemplateConsoleApp }
     198
     199constructor TProjectTemplateConsoleApp.Create;
     200begin
     201  inherited Create;
     202  Name := SConsoleApplication;
     203end;
     204
     205function TProjectTemplateConsoleApp.Execute: TSource;
     206var
     207  NewFile: TProjectFile;
     208begin
     209{  inherited InitProject(Project);
     210  NewFile := Project.Files.AddFile('Project1.dpr');
     211  with NewFile.Source do begin
     212    Add('program Project1;');
     213    Add('');
     214    Add('begin');
     215    Add('end.');
     216  end;
     217  Project.MainSource := NewFile;}
    61218end;
    62219
  • trunk/StudioModules/LDModuleProject/LDModuleProject.lpk

    r11 r15  
    3131      </Item3>
    3232    </Files>
     33    <i18n>
     34      <EnableI18N Value="True"/>
     35      <OutDir Value="Languages"/>
     36      <EnableI18NForLFM Value="True"/>
     37    </i18n>
    3338    <Type Value="RunAndDesignTime"/>
    34     <RequiredPkgs Count="2">
     39    <RequiredPkgs Count="3">
    3540      <Item1>
    36         <PackageName Value="LDStudioCommon"/>
     41        <PackageName Value="Common"/>
    3742      </Item1>
    3843      <Item2>
     44        <PackageName Value="LDStudioCommon"/>
     45      </Item2>
     46      <Item3>
    3947        <PackageName Value="FCL"/>
    40       </Item2>
     48      </Item3>
    4149    </RequiredPkgs>
    4250    <UsageOptions>
  • trunk/StudioModules/LDModuleProject/ULDModuleProject.lfm

    r12 r15  
    11object DataModuleProject: TDataModuleProject
     2  OnCreate = DataModuleCreate
    23  OnDestroy = DataModuleDestroy
    34  OldCreateOrder = False
    45  Height = 328
    5   HorizontalOffset = 255
    6   VerticalOffset = 75
     6  HorizontalOffset = 390
     7  VerticalOffset = 142
    78  Width = 409
    89  object ActionList1: TActionList
     
    1920    object AOpenRecent: TAction
    2021      Caption = 'Open recent'
     22      OnExecute = AOpenRecentExecute
    2123    end
    2224    object ASave: TAction
     
    4648      Action = AOpen
    4749    end
    48     object MenuItem3: TMenuItem
     50    object MenuItemOpenRecent: TMenuItem
    4951      Action = AOpenRecent
    5052    end
     
    7375    top = 120
    7476  end
     77  object LastOpenedList1: TLastOpenedList
     78    MaxCount = 10
     79    OnChange = LastOpenedList1Change
     80    left = 125
     81    top = 64
     82  end
    7583end
  • trunk/StudioModules/LDModuleProject/ULDModuleProject.pas

    r14 r15  
    77uses
    88  Classes, SysUtils, FileUtil, ActnList, Menus, Dialogs, UModularSystem,
    9   UProject;
     9  ULastOpenedList, UProject, URegistry, USource;
    1010
    1111type
     
    2222    ANew: TAction;
    2323    ActionList1: TActionList;
     24    LastOpenedList1: TLastOpenedList;
    2425    MenuItem1: TMenuItem;
    2526    MenuItem2: TMenuItem;
    26     MenuItem3: TMenuItem;
     27    MenuItemOpenRecent: TMenuItem;
    2728    MenuItem4: TMenuItem;
    2829    MenuItem5: TMenuItem;
     
    3637    procedure ANewExecute(Sender: TObject);
    3738    procedure AOpenExecute(Sender: TObject);
     39    procedure AOpenRecentExecute(Sender: TObject);
    3840    procedure AProjectManagerExecute(Sender: TObject);
    3941    procedure ASaveAsExecute(Sender: TObject);
    4042    procedure ASaveExecute(Sender: TObject);
     43    procedure DataModuleCreate(Sender: TObject);
    4144    procedure DataModuleDestroy(Sender: TObject);
     45    procedure LastOpenedList1Change(Sender: TObject);
    4246  private
    4347    { private declarations }
     
    4549    Project: TProject;
    4650    procedure UpdateInterface;
     51    procedure LoadFromRegistry(Context: TRegistryContext);
     52    procedure SaveToRegistry(Context: TRegistryContext);
    4753  end;
    4854
     
    5157  TLDModuleProject = class(TModule)
    5258  private
     59    ProjectFileType: TSourceType;
    5360  public
    5461    constructor Create; override;
     
    93100end;
    94101
     102procedure TDataModuleProject.DataModuleCreate(Sender: TObject);
     103begin
     104
     105end;
     106
    95107procedure TDataModuleProject.DataModuleDestroy(Sender: TObject);
    96108begin
    97109  AClose.Execute;
     110end;
     111
     112procedure TDataModuleProject.LastOpenedList1Change(Sender: TObject);
     113begin
     114  LastOpenedList1.LoadToMenuItem(MenuItemOpenRecent, AOpenRecentExecute);
    98115end;
    99116
     
    103120  ASaveAs.Enabled := Assigned(Project);
    104121  AClose.Enabled := Assigned(Project);
     122end;
     123
     124procedure TDataModuleProject.LoadFromRegistry(Context: TRegistryContext);
     125begin
     126  LastOpenedList1.LoadFromRegistry(Context.RootKey, Context.Key + '\RecentFile');
     127end;
     128
     129procedure TDataModuleProject.SaveToRegistry(Context: TRegistryContext);
     130begin
     131  LastOpenedList1.SaveToRegistry(Context.RootKey, Context.Key + '\RecentFile');
    105132end;
    106133
     
    122149procedure TDataModuleProject.AOpenExecute(Sender: TObject);
    123150begin
    124   OpenDialog1.FileName := Project.FileName;
     151  if Assigned(Project) then
     152    OpenDialog1.FileName := Project.FileName;
    125153  if OpenDialog1.Execute then begin
    126154    Project.FileName := OpenDialog1.FileName;
     
    128156    UpdateInterface;
    129157  end;
     158end;
     159
     160procedure TDataModuleProject.AOpenRecentExecute(Sender: TObject);
     161begin
     162
    130163end;
    131164
     
    150183    DataModuleProject.PopupMenu1.Items.Caption := SProject;
    151184    RegisterMainMenuItem(DataModuleProject.PopupMenu1.Items, nil, 1);
     185    DataModuleProject.LoadFromRegistry(RegContext(GetRegistryContext.RootKey,
     186      GetRegistryContext.Key + '\Project'));
     187    DataModuleProject.UpdateInterface;
     188    ProjectFileType := TSourceType.Create;
     189    ProjectFileType.Extension := '.ldp';
     190    ProjectFileType.Title := 'LibreDevelop project';
     191    RegisterFileType(ProjectFileType);
    152192  end;
    153193  inherited;
     
    158198  inherited;
    159199  with TLDStudioAPI(API) do begin
     200    UnregisterFileType(ProjectFileType);
     201    DataModuleProject.SaveToRegistry(RegContext(GetRegistryContext.RootKey,
     202      GetRegistryContext.Key + '\Project'));
    160203    UnregisterMainMenuItem(DataModuleProject.PopupMenu1.Items);
    161204    FreeAndNil(DataModuleProject);
  • trunk/StudioModules/LDModuleProject/UProject.pas

    r11 r15  
    77uses
    88  Classes, SysUtils, Dialogs, DOM, XMLWrite, XMLRead, FileUtil,
    9   SpecializedList;
     9  SpecializedList, USource;
    1010
    1111const
     
    7171  end;
    7272
    73   TProject = class
     73  TProject = class(TSource)
    7474  private
    7575    FModified: Boolean;
  • trunk/StudioPackage/Forms/UFormMain.lfm

    r14 r15  
    11object FormMain: TFormMain
    2   Left = 150
     2  Left = 240
    33  Height = 520
    4   Top = 112
     4  Top = 108
    55  Width = 747
    66  Caption = 'LibreDevelop Studio'
     
    2727    Width = 747
    2828    Caption = 'ToolBar1'
     29    Images = DataModule1.ImageListMain
    2930    TabOrder = 1
    3031    object ToolButton1: TToolButton
    3132      Left = 1
    32       Hint = 'New project'
    3333      Top = 2
    34       Caption = 'New...'
    35       ImageIndex = 4
     34      Action = AFileNew
    3635    end
    3736    object ToolButton2: TToolButton
    3837      Left = 24
    39       Hint = 'Open project'
    4038      Top = 2
    41       Caption = 'Open...'
    42       ImageIndex = 8
     39      Action = AFileOpen
     40      DropdownMenu = PopupMenuRecentFiles
     41      Style = tbsDropDown
    4342    end
    4443    object ToolButton3: TToolButton
    45       Left = 47
    46       Hint = 'Save project'
     44      Left = 59
    4745      Top = 2
    48       Caption = 'Save'
    49       ImageIndex = 13
     46      Action = AFileSaveAs
    5047    end
    5148    object ToolButton4: TToolButton
    52       Left = 70
    53       Hint = 'Close project'
     49      Left = 82
    5450      Top = 2
    55       Caption = 'Close'
    56       ImageIndex = 3
     51      Action = AFileClose
    5752    end
    5853  end
     
    117112        Action = AFileOpen
    118113      end
    119       object MenuItem29: TMenuItem
    120         Action = AFileOpenRecent
     114      object MenuItemFileOpenRecent: TMenuItem
     115        Caption = 'Open recent'
     116        ImageIndex = 8
     117        OnClick = MenuItemFileOpenRecentClick
    121118      end
    122119      object MenuItem30: TMenuItem
     
    313310      Caption = 'Open recent'
    314311      ImageIndex = 8
     312      OnExecute = AFileOpenRecentExecute
    315313    end
    316314    object AFileSave: TAction
     
    318316      Caption = 'Save'
    319317      ImageIndex = 13
     318      OnExecute = AFileSaveExecute
    320319      ShortCut = 16467
    321320    end
     
    324323      Caption = 'Save as...'
    325324      ImageIndex = 13
     325      OnExecute = AFileSaveAsExecute
    326326      ShortCut = 24659
    327327    end
     
    387387    top = 272
    388388  end
     389  object LastOpenedList1: TLastOpenedList
     390    MaxCount = 10
     391    OnChange = LastOpenedList1Change
     392    left = 80
     393    top = 160
     394  end
     395  object PopupMenuRecentFiles: TPopupMenu
     396    Images = DataModule1.ImageListMain
     397    left = 259
     398    top = 69
     399  end
    389400end
  • trunk/StudioPackage/Forms/UFormMain.lrt

    r14 r15  
    11TFORMMAIN.CAPTION=LibreDevelop Studio
    22TFORMMAIN.TOOLBAR1.CAPTION=ToolBar1
    3 TFORMMAIN.TOOLBUTTON1.HINT=New project
    4 TFORMMAIN.TOOLBUTTON1.CAPTION=New...
    5 TFORMMAIN.TOOLBUTTON2.HINT=Open project
    6 TFORMMAIN.TOOLBUTTON2.CAPTION=Open...
    7 TFORMMAIN.TOOLBUTTON3.HINT=Save project
    8 TFORMMAIN.TOOLBUTTON3.CAPTION=Save
    9 TFORMMAIN.TOOLBUTTON4.HINT=Close project
    10 TFORMMAIN.TOOLBUTTON4.CAPTION=Close
    113TFORMMAIN.MENUITEM26.CAPTION=File
     4TFORMMAIN.MENUITEMFILEOPENRECENT.CAPTION=Open recent
    125TFORMMAIN.MENUITEM33.CAPTION=-
    136TFORMMAIN.MENUITEM2.CAPTION=Edit
  • trunk/StudioPackage/Forms/UFormMain.pas

    r14 r15  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
    9   ActnList, ComCtrls, ExtCtrls, UDataModule;
     9  ActnList, ComCtrls, ExtCtrls, ULastOpenedList, UCoolTranslator, UDataModule,
     10  URegistry;
    1011
    1112type
     
    4445    AClipboardCut: TAction;
    4546    ActionListMain: TActionList;
     47    LastOpenedList1: TLastOpenedList;
    4648    MainMenu: TMainMenu;
    4749    MenuItem15: TMenuItem;
     
    6062    MenuItem27: TMenuItem;
    6163    MenuItem28: TMenuItem;
    62     MenuItem29: TMenuItem;
     64    MenuItemFileOpenRecent: TMenuItem;
    6365    MenuItem30: TMenuItem;
    6466    MenuItem31: TMenuItem;
     
    8991    PageControlBottom: TPageControl;
    9092    PageControlCenter: TPageControl;
     93    PopupMenuRecentFiles: TPopupMenu;
    9194    SaveDialogFile: TSaveDialog;
    9295    Splitter1: TSplitter;
     
    102105    procedure AFileNewExecute(Sender: TObject);
    103106    procedure AFileOpenExecute(Sender: TObject);
     107    procedure AFileOpenRecentExecute(Sender: TObject);
     108    procedure AFileSaveAsExecute(Sender: TObject);
     109    procedure AFileSaveExecute(Sender: TObject);
    104110    procedure AViewModulesExecute(Sender: TObject);
    105111    procedure AViewSettingsExecute(Sender: TObject);
     
    108114    procedure FormDestroy(Sender: TObject);
    109115    procedure FormShow(Sender: TObject);
     116    procedure LastOpenedList1Change(Sender: TObject);
     117    procedure MenuItemFileOpenRecentClick(Sender: TObject);
    110118  private
    111119    procedure DockInit;
    112120  public
     121    procedure UpdateInterface;
    113122    procedure OpenedFileChange(Sender: TObject);
     123    procedure LoadFromRegistry(Context: TRegistryContext);
     124    procedure SaveToRegistry(Context: TRegistryContext);
    114125  end;
    115126
     
    117128  FormMain: TFormMain;
    118129
     130
    119131implementation
    120132
     
    122134
    123135uses
    124   UFormSourceCode, UFormSettings, UFormModuleList;
     136  UFormSourceCode, UFormSettings, UFormModuleList, UFormNewFile, USource;
    125137
    126138{ TFormMain }
     
    133145procedure TFormMain.AFileCloseExecute(Sender: TObject);
    134146begin
    135   DataModule1.OpenedFiles.CloseFile(DataModule1.OpenedFiles.Selected.FileName);
     147  DataModule1.OpenedFiles.CloseFile(DataModule1.OpenedFiles.Selected);
    136148end;
    137149
    138150procedure TFormMain.AFileNewExecute(Sender: TObject);
    139 begin
    140   DataModule1.OpenedFiles.NewFile;
     151var
     152  NewFile: TSource;
     153begin
     154  if FormNewFile.ShowModal = mrOk then
     155    if Assigned(FormNewFile.ListView1.Selected) then begin
     156      NewFile := TFileTemplate(FormNewFile.ListView1.Selected.Data).Execute;
     157      DataModule1.OpenedFiles.OpenFile(NewFile);
     158    end;
    141159end;
    142160
     
    145163  OpenDialogFile.Filter := DataModule1.FileTypes.GetDialogFilter;
    146164  if OpenDialogFile.Execute then begin
    147     DataModule1.OpenedFiles.OpenFile(OpenDialogFile.FileName);
    148   end;
     165    LastOpenedList1.AddItem(OpenDialogFile.FileName);
     166    DataModule1.OpenedFiles.OpenFileName(OpenDialogFile.FileName);
     167  end;
     168end;
     169
     170procedure TFormMain.AFileOpenRecentExecute(Sender: TObject);
     171begin
     172  if Sender is TMenuItem then
     173    DataModule1.OpenedFiles.OpenFileName(TMenuItem(Sender).Caption);
     174end;
     175
     176procedure TFormMain.AFileSaveAsExecute(Sender: TObject);
     177begin
     178  SaveDialogFile.FileName := DataModule1.OpenedFiles.Selected.Name;
     179  if SaveDialogFile.Execute then begin
     180    LastOpenedList1.AddItem(SaveDialogFile.FileName);
     181    DataModule1.OpenedFiles.Selected.Name := SaveDialogFile.FileName;
     182  end;
     183end;
     184
     185procedure TFormMain.AFileSaveExecute(Sender: TObject);
     186begin
     187
    149188end;
    150189
     
    177216begin
    178217  DockInit;
     218  UpdateInterface;
     219end;
     220
     221procedure TFormMain.LastOpenedList1Change(Sender: TObject);
     222begin
     223  LastOpenedList1.LoadToMenuItem(PopupMenuRecentFiles.Items, AFileOpenRecentExecute);
     224  LastOpenedList1.LoadToMenuItem(MenuItemFileOpenRecent, AFileOpenRecentExecute);
     225end;
     226
     227procedure TFormMain.MenuItemFileOpenRecentClick(Sender: TObject);
     228begin
     229
    179230end;
    180231
     
    186237}end;
    187238
     239procedure TFormMain.UpdateInterface;
     240begin
     241  AFileClose.Enabled := Assigned(DataModule1.OpenedFiles.Selected);
     242  AFileSave.Enabled := Assigned(DataModule1.OpenedFiles.Selected);
     243  AFileSaveAs.Enabled := Assigned(DataModule1.OpenedFiles.Selected);
     244end;
     245
    188246procedure TFormMain.OpenedFileChange(Sender: TObject);
    189247var
     
    193251  with DataModule1.OpenedFiles do begin
    194252    for I := 0 to Count - 1 do
    195     with TOpenedFile(Items[I]) do begin
     253    with TSource(Items[I]) do begin
    196254      if not Assigned(Form.Parent) then begin
    197255        NewTabSheet := PageControlCenter.AddTabSheet;
    198         NewTabSheet.Caption := ExtractFileName(FileName);
     256        NewTabSheet.Caption := ExtractFileName(Name);
    199257        //NewTabSheet.PopupMenu := ;
    200258        Form.ManualDock(NewTabSheet, nil, alClient);
     
    206264end;
    207265
     266procedure TFormMain.LoadFromRegistry(Context: TRegistryContext);
     267begin
     268  LastOpenedList1.LoadFromRegistry(Context.RootKey, Context.Key + '\RecentFiles');
     269end;
     270
     271procedure TFormMain.SaveToRegistry(Context: TRegistryContext);
     272begin
     273  LastOpenedList1.SaveToRegistry(Context.RootKey, Context.Key + '\RecentFiles');
     274end;
     275
    208276end.
    209277
  • trunk/StudioPackage/Languages/UDataModule.po

    r13 r15  
    66msgstr ""
    77
     8#: udatamodule.stextfile
     9msgid "Text file"
     10msgstr ""
     11
  • trunk/StudioPackage/LibreDevelopStudio.lpk

    r11 r15  
    2323      </Other>
    2424    </CompilerOptions>
    25     <Files Count="5">
     25    <Files Count="6">
    2626      <Item1>
    2727        <Filename Value="Forms\UFormMain.pas"/>
     
    4444        <UnitName Value="UFormModuleList"/>
    4545      </Item5>
     46      <Item6>
     47        <Filename Value="Forms\UFormNewFile.pas"/>
     48        <UnitName Value="UFormNewFile"/>
     49      </Item6>
    4650    </Files>
    4751    <i18n>
     
    5155    </i18n>
    5256    <Type Value="RunAndDesignTime"/>
    53     <RequiredPkgs Count="5">
     57    <RequiredPkgs Count="7">
    5458      <Item1>
    55         <PackageName Value="LDStudioCommon"/>
     59        <PackageName Value="CoolTranslator"/>
    5660      </Item1>
    5761      <Item2>
    58         <PackageName Value="synedit"/>
     62        <PackageName Value="Common"/>
    5963      </Item2>
    6064      <Item3>
    61         <PackageName Value="TemplateGenerics"/>
     65        <PackageName Value="LDStudioCommon"/>
    6266      </Item3>
    6367      <Item4>
    64         <PackageName Value="LCL"/>
     68        <PackageName Value="synedit"/>
    6569      </Item4>
    6670      <Item5>
     71        <PackageName Value="TemplateGenerics"/>
     72      </Item5>
     73      <Item6>
     74        <PackageName Value="LCL"/>
     75      </Item6>
     76      <Item7>
    6777        <PackageName Value="FCL"/>
    68       </Item5>
     78      </Item7>
    6979    </RequiredPkgs>
    7080    <UsageOptions>
  • trunk/StudioPackage/LibreDevelopStudio.pas

    r11 r15  
    99uses
    1010  UFormMain, UDataModule, UFormSourceCode, UFormSettings, UFormModuleList,
    11   LazarusPackageIntf;
     11  UFormNewFile, LazarusPackageIntf;
    1212
    1313implementation
  • trunk/StudioPackage/UDataModule.lfm

    r14 r15  
    733733    OnUnregisterMainMenuItem = APIUnregisterMainMenuItem
    734734    OnDockForm = APIDockForm
     735    OnGetRegistryContext = APIGetRegistryContext
     736    OnRegisterFileTemplate = APIRegisterFileTemplate
     737    OnUnregisterFileTemplate = APIUnregisterFileTemplate
    735738    left = 92
    736739    top = 168
    737740  end
     741  object CoolTranslator1: TCoolTranslator
     742    POFilesFolder = 'Languages'
     743    left = 92
     744    top = 8
     745  end
     746  object ApplicationInfo1: TApplicationInfo
     747    Identification = 1
     748    VersionMajor = 1
     749    VersionMinor = 0
     750    VersionBugFix = 0
     751    VersionSuffix = 'alfa'
     752    HomePage = 'http://svn.zdechov.net/trac/LibreDevelop'
     753    AuthorsName = 'Chronos'
     754    EmailContact = 'robie@centrum.cz'
     755    AppName = 'LibreDevelop Studio'
     756    ReleaseDate = 41096
     757    RegistryKey = '\Software\LibreDevelop\Studio'
     758    RegistryRoot = rrKeyCurrentUser
     759    left = 92
     760    top = 224
     761  end
    738762end
  • trunk/StudioPackage/UDataModule.pas

    r14 r15  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, ActnList, Controls, SpecializedList,
    9   USource, UModularSystem, ULDStudioAPI, Menus, ComCtrls;
     9  USource, UModularSystem, UCoolTranslator, ULDStudioAPI, Menus, ComCtrls,
     10  Registry, URegistry, UApplicationInfo;
    1011
    1112type
    1213
    13   { TOpenedFile }
    14 
    15   TOpenedFile = class
    16   private
    17     FFileName: string;
    18     procedure SetFileName(AValue: string);
    19   public
    20     Modified: Boolean;
    21     Form: TForm;
    22     property FileName: string read FFileName write SetFileName;
     14  { TTextTemplate }
     15
     16  TTextTemplate = class(TFileTemplate)
     17    constructor Create; override;
     18  end;
     19
     20  { TTextFileType }
     21
     22  TTextFileType = class(TSourceType)
     23    constructor Create; override;
    2324  end;
    2425
     
    2930    FOnChange: TNotifyEvent;
    3031  public
    31     Selected: TOpenedFile;
    32     function FindByFileName(Value: string): TOpenedFile;
    33     procedure CloseFile(FileName: string);
    34     procedure OpenFile(FileName: string);
     32    Selected: TSource;
     33    function FindByFileName(Value: string): TSource;
     34    procedure CloseFile(Source: TSource);
     35    procedure OpenFileName(FileName: string);
     36    procedure OpenFile(Source: TSource);
    3537    procedure NewFile;
    3638    property OnChange: TNotifyEvent read FOnChange write FOnChange;
     
    4244  published
    4345    ActionListRegistred: TActionList;
     46    ApplicationInfo1: TApplicationInfo;
     47    CoolTranslator1: TCoolTranslator;
    4448    ImageListMain: TImageList;
    4549    API: TLDStudioAPI;
    4650    procedure APIDockForm(Form: TForm; Target: TDockTarget);
     51    function APIGetRegistryContext: TRegistryContext;
     52    procedure APIRegisterFileTemplate(Template: TFileTemplate);
    4753    procedure APIRegisterFileType(FileType: TSourceType);
    4854    procedure APIRegisterForm(Form: TForm);
     
    5056      ParentItem: TMenuItem; Index: Integer);
    5157    procedure APIUnregisterAction(Action: TAction);
     58    procedure APIUnregisterFileTemplate(Template: TFileTemplate);
    5259    procedure APIUnregisterFileType(FileType: TSourceType);
    5360    procedure APIUnregisterForm(Form: TForm);
    5461    procedure APIUnregisterMainMenuItem(MenuItem: TMenuItem);
     62    procedure APIOpenFile(FileName: string);
     63    procedure APIRegisterAction(Action: TAction);
    5564    procedure DataModuleCreate(Sender: TObject);
    5665    procedure DataModuleDestroy(Sender: TObject);
    57     procedure APIOpenFile(FileName: string);
    58     procedure APIRegisterAction(Action: TAction);
    5966  private
     67    TextFileType: TSourceType;
     68    TextFileTemplate: TTextTemplate;
     69    procedure AutoOpen;
    6070    procedure DockToPageControl(PageControl: TPageControl; Form: TForm);
    6171  public
    6272    ModuleManager: TModuleManager;
    6373    FileTypes: TFileTypes;
     74    FileTemplates: TFileTemplates;
    6475    OpenedFiles: TOpenedFiles;
    65   end;
     76    procedure LoadFromRegistry(Context: TRegistryContext);
     77    procedure SaveToRegistry(Context: TRegistryContext);
     78  end;
     79
    6680
    6781var
     
    7488
    7589uses
    76   UFormSourceCode, UFormMain, UFormSettings, UFormModuleList;
     90  UFormSourceCode, UFormMain, UFormSettings, UFormModuleList, UFormNewFile;
    7791
    7892resourcestring
    7993  SNewFile = 'New file';
    80 
    81 procedure TOpenedFile.SetFileName(AValue: string);
    82 begin
    83   if FFileName = AValue then Exit;
    84   FFileName := AValue;
    85   if Assigned(Form) then
    86     Form.Caption := ExtractFileName(FFileName);
    87 end;
     94  STextFile = 'Text file';
     95
     96{ TTextFileType }
     97
     98constructor TTextFileType.Create;
     99begin
     100  inherited Create;
     101  Extension := '.txt';
     102  Title := 'Text file';;
     103end;
     104
     105{ TTextTemplate }
     106
     107constructor TTextTemplate.Create;
     108begin
     109  inherited Create;
     110  Name := STextFile;
     111end;
     112
    88113
    89114{ TOpenedFiles }
    90115
    91 function TOpenedFiles.FindByFileName(Value: string): TOpenedFile;
     116function TOpenedFiles.FindByFileName(Value: string): TSource;
    92117var
    93118  I: Integer;
    94119begin
    95120  I := 0;
    96   while (I < Count) and (TOpenedFile(Items[I]).FileName <> Value) do Inc(I);
    97   if I < Count then Result := TOpenedFile(Items[I])
     121  while (I < Count) and (TSource(Items[I]).Name <> Value) do Inc(I);
     122  if I < Count then Result := TSource(Items[I])
    98123    else Result := nil;
    99124end;
    100125
    101 procedure TOpenedFiles.CloseFile(FileName: string);
    102 var
    103   OpenedFile: TOpenedFile;
    104 begin
    105   OpenedFile := FindByFileName(FileName);
    106   FreeAndNil(OpenedFile.Form);
    107   Remove(OpenedFile);
     126procedure TOpenedFiles.CloseFile(Source: TSource);
     127begin
     128  FreeAndNil(Source.Form);
     129  Remove(Source);
    108130  if Assigned(FOnChange) then FOnChange(Self);
    109131end;
    110132
    111 procedure TOpenedFiles.OpenFile(FileName: string);
    112 var
    113   NewFile: TOpenedFile;
    114 begin
    115   NewFile := TOpenedFile(AddNew(TOpenedFile.Create));
    116   NewFile.FileName := FileName;
     133procedure TOpenedFiles.OpenFileName(FileName: string);
     134var
     135  NewFile: TSourceText;
     136begin
     137  NewFile := TSourceText.Create;
     138  NewFile.Name := FileName;
     139  OpenFile(NewFile);
     140end;
     141
     142procedure TOpenedFiles.OpenFile(Source: TSource);
     143begin
     144  AddNew(Source);
     145  Source.Form := TFormSourceCode.Create(nil);
     146  Source.Form.Caption := ExtractFileName(Source.Name);
     147  Source.Form.Visible := True;
     148  Selected := Source;
     149  if Assigned(FOnChange) then FOnChange(Self);
     150end;
     151
     152procedure TOpenedFiles.NewFile;
     153var
     154  NewFile: TSource;
     155begin
     156  NewFile := TSourceText(AddNew(TSource.Create));
     157  NewFile.Name := SNewFile;
    117158  NewFile.Form := TFormSourceCode.Create(nil);
    118   NewFile.Form.Caption := ExtractFileName(NewFile.FileName);
     159  NewFile.Form.Caption := ExtractFileName(NewFile.Name);
    119160  NewFile.Form.Visible := True;
    120161  Selected := NewFile;
     
    122163end;
    123164
    124 procedure TOpenedFiles.NewFile;
    125 var
    126   NewFile: TOpenedFile;
    127 begin
    128   NewFile := TOpenedFile(AddNew(TOpenedFile.Create));
    129   NewFile.FileName := SNewFile;
    130   NewFile.Form := TFormSourceCode.Create(nil);
    131   NewFile.Form.Caption := ExtractFileName(NewFile.FileName);
    132   NewFile.Form.Visible := True;
    133   Selected := NewFile;
    134   if Assigned(FOnChange) then FOnChange(Self);
    135 end;
    136 
    137165{ TDataModule1 }
    138166
    139167procedure TDataModule1.DataModuleCreate(Sender: TObject);
    140168begin
     169  FileTemplates := TFileTemplates.Create;
     170  FileTemplates.OwnsObjects := False;
    141171  FileTypes := TFileTypes.Create;
    142172  FileTypes.OwnsObjects := False;
     
    144174  ModuleManager := TModuleManager.Create(nil);
    145175  ModuleManager.API := API;
     176
     177  TextFileType := TTextFileType.Create;
     178  API.RegisterFileType(TextFileType);
     179  TextFileTemplate := TTextTemplate.Create;
     180  API.RegisterFileTemplate(TextFileTemplate);
    146181
    147182  FormMain := TFormMain.Create(nil);
     
    151186  FormSettings := TFormSettings.Create(nil);
    152187  FormModuleList := TFormModuleList.Create(nil);
    153 
     188  FormNewFile := TFormNewFile.Create(nil);
     189
     190  LoadFromRegistry(RegContext(HKEY(ApplicationInfo1.RegistryRoot), ApplicationInfo1.RegistryKey));
     191
     192  DataModule1 := Self;
    154193  FormMain.Show;
     194  AutoOpen;
    155195end;
    156196
     
    191231end;
    192232
     233procedure TDataModule1.LoadFromRegistry(Context: TRegistryContext);
     234begin
     235  with TRegistryEx.Create do
     236  try
     237    RootKey := Context.RootKey;
     238    OpenKey(Context.Key, True);
     239
     240  finally
     241    Free;
     242  end;
     243  FormMain.LoadFromRegistry(Context);
     244end;
     245
     246procedure TDataModule1.SaveToRegistry(Context: TRegistryContext);
     247begin
     248  with TRegistryEx.Create do
     249  try
     250    RootKey := Context.RootKey;
     251    OpenKey(Context.Key, True);
     252
     253  finally
     254    Free;
     255  end;
     256  FormMain.SaveToRegistry(Context);
     257end;
     258
    193259procedure TDataModule1.APIDockForm(Form: TForm; Target: TDockTarget);
    194260begin
     
    203269end;
    204270
     271function TDataModule1.APIGetRegistryContext: TRegistryContext;
     272begin
     273  Result := RegContext(HKEY(ApplicationInfo1.RegistryRoot), ApplicationInfo1.RegistryKey);
     274end;
     275
     276procedure TDataModule1.APIRegisterFileTemplate(Template: TFileTemplate);
     277begin
     278  FileTemplates.Add(Template);
     279end;
     280
    205281procedure TDataModule1.APIUnregisterAction(Action: TAction);
    206282begin
     
    208284end;
    209285
     286procedure TDataModule1.APIUnregisterFileTemplate(Template: TFileTemplate);
     287begin
     288  FileTemplates.Remove(Template);
     289end;
     290
    210291procedure TDataModule1.APIUnregisterFileType(FileType: TSourceType);
    211292begin
     
    220301procedure TDataModule1.DataModuleDestroy(Sender: TObject);
    221302begin
     303  API.UnregisterFileType(TextFileType);
     304  FreeAndNil(TextFileType);
     305  API.UnregisterFileTemplate(TextFileTemplate);
     306  FreeAndNil(TextFileTemplate);
     307
     308  SaveToRegistry(RegContext(HKEY(ApplicationInfo1.RegistryRoot), ApplicationInfo1.RegistryKey));
    222309  FreeAndNil(ModuleManager);
     310  FreeAndNil(FormNewFile);
    223311  FreeAndNil(FormMain);
    224312  FreeAndNil(FormSourceCode);
     
    227315  FreeAndNil(OpenedFiles);
    228316  FreeAndNil(FileTypes);
     317  FreeAndNil(FileTemplates);
     318end;
     319
     320procedure TDataModule1.AutoOpen;
     321var
     322  FileName: string;
     323begin
     324  if (ParamCount > 0) then begin
     325    FileName := UTF8Encode(ParamStr(1));
     326    if FileExistsUTF8(FileName) then begin
     327      OpenedFiles.OpenFileName(FileName);
     328    end;
     329  end;
    229330end;
    230331
    231332procedure TDataModule1.APIOpenFile(FileName: string);
    232333begin
    233   OpenedFiles.OpenFile(FileName);
     334  OpenedFiles.OpenFileName(FileName);
    234335end;
    235336
Note: See TracChangeset for help on using the changeset viewer.