Changeset 15 for trunk/StudioModules


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/StudioModules
Files:
9 added
8 edited

Legend:

Unmodified
Added
Removed
  • 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;
Note: See TracChangeset for help on using the changeset viewer.