Changeset 4


Ignore:
Timestamp:
Feb 9, 2012, 1:43:33 PM (12 years ago)
Author:
chronos
Message:
  • Fixed: New, open, save, save as, close project now working.
Location:
trunk
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LazFuckIDE.lpi

    r2 r4  
    3939      </Item2>
    4040    </RequiredPackages>
    41     <Units Count="4">
     41    <Units Count="5">
    4242      <Unit0>
    4343        <Filename Value="LazFuckIDE.lpr"/>
     
    6464        <UnitName Value="UInterpreterForm"/>
    6565      </Unit3>
     66      <Unit4>
     67        <Filename Value="UApplicationInfo.pas"/>
     68        <IsPartOfProject Value="True"/>
     69        <UnitName Value="UApplicationInfo"/>
     70      </Unit4>
    6671    </Units>
    6772  </ProjectOptions>
  • trunk/LazFuckIDE.lpr

    r2 r4  
    88  {$ENDIF}{$ENDIF}
    99  Interfaces, // this includes the LCL widgetset
    10   Forms, UMainForm, UBrainFuck, UInterpreterForm
     10  Forms, UMainForm, UBrainFuck, UInterpreterForm, UApplicationInfo
    1111  { you can add units after this };
    1212
  • trunk/LazFuckIDE.lps

    r3 r4  
    55    <Version Value="9"/>
    66    <BuildModes Active="Default"/>
    7     <Units Count="6">
     7    <Units Count="7">
    88      <Unit0>
    99        <Filename Value="LazFuckIDE.lpr"/>
     
    1818        <ResourceBaseClass Value="Form"/>
    1919        <UnitName Value="UMainForm"/>
     20        <IsVisibleTab Value="True"/>
    2021        <EditorIndex Value="0"/>
    2122        <WindowIndex Value="0"/>
    22         <TopLine Value="40"/>
    23         <CursorPos X="35" Y="98"/>
     23        <TopLine Value="133"/>
     24        <CursorPos X="10" Y="146"/>
    2425        <UsageCount Value="23"/>
    2526        <Loaded Value="True"/>
     
    3031        <IsPartOfProject Value="True"/>
    3132        <UnitName Value="UBrainFuck"/>
    32         <IsVisibleTab Value="True"/>
    33         <EditorIndex Value="2"/>
    34         <WindowIndex Value="0"/>
    35         <TopLine Value="67"/>
    36         <CursorPos X="42" Y="71"/>
     33        <EditorIndex Value="3"/>
     34        <WindowIndex Value="0"/>
     35        <TopLine Value="104"/>
     36        <CursorPos X="1" Y="117"/>
    3737        <UsageCount Value="23"/>
    3838        <Loaded Value="True"/>
     
    4444        <ResourceBaseClass Value="Form"/>
    4545        <UnitName Value="UInterpreterForm"/>
    46         <EditorIndex Value="1"/>
     46        <EditorIndex Value="2"/>
    4747        <WindowIndex Value="0"/>
    4848        <TopLine Value="11"/>
     
    5454      <Unit4>
    5555        <Filename Value="H:\Lazarus\0.9.31_2.7.1\fpc\2.7.1\source\rtl\objpas\classes\classesh.inc"/>
    56         <EditorIndex Value="3"/>
     56        <EditorIndex Value="4"/>
    5757        <WindowIndex Value="0"/>
    5858        <TopLine Value="636"/>
    5959        <CursorPos X="14" Y="649"/>
    60         <UsageCount Value="11"/>
     60        <UsageCount Value="12"/>
    6161        <Loaded Value="True"/>
    6262      </Unit4>
    6363      <Unit5>
    6464        <Filename Value="H:\Lazarus\0.9.31_2.7.1\fpc\2.7.1\source\rtl\objpas\classes\stringl.inc"/>
    65         <EditorIndex Value="4"/>
     65        <EditorIndex Value="5"/>
    6666        <WindowIndex Value="0"/>
    6767        <TopLine Value="434"/>
    6868        <CursorPos X="3" Y="441"/>
    69         <UsageCount Value="11"/>
     69        <UsageCount Value="12"/>
    7070        <Loaded Value="True"/>
    7171      </Unit5>
     72      <Unit6>
     73        <Filename Value="UApplicationInfo.pas"/>
     74        <IsPartOfProject Value="True"/>
     75        <UnitName Value="UApplicationInfo"/>
     76        <EditorIndex Value="1"/>
     77        <WindowIndex Value="0"/>
     78        <TopLine Value="46"/>
     79        <CursorPos X="47" Y="65"/>
     80        <UsageCount Value="20"/>
     81        <Loaded Value="True"/>
     82      </Unit6>
    7283    </Units>
    7384    <General>
     
    89100      <Position4>
    90101        <Filename Value="UBrainFuck.pas"/>
    91         <Caret Line="125" Column="1" TopLine="104"/>
     102        <Caret Line="123" Column="1" TopLine="104"/>
    92103      </Position4>
    93104      <Position5>
    94105        <Filename Value="UBrainFuck.pas"/>
    95         <Caret Line="121" Column="1" TopLine="104"/>
     106        <Caret Line="125" Column="1" TopLine="104"/>
    96107      </Position5>
    97108      <Position6>
    98109        <Filename Value="UBrainFuck.pas"/>
    99         <Caret Line="125" Column="1" TopLine="104"/>
     110        <Caret Line="130" Column="1" TopLine="117"/>
    100111      </Position6>
    101112      <Position7>
    102113        <Filename Value="UBrainFuck.pas"/>
    103         <Caret Line="121" Column="1" TopLine="104"/>
     114        <Caret Line="123" Column="14" TopLine="117"/>
    104115      </Position7>
    105116      <Position8>
    106117        <Filename Value="UBrainFuck.pas"/>
    107         <Caret Line="125" Column="1" TopLine="104"/>
     118        <Caret Line="117" Column="1" TopLine="104"/>
    108119      </Position8>
    109120      <Position9>
    110121        <Filename Value="UBrainFuck.pas"/>
    111         <Caret Line="121" Column="1" TopLine="104"/>
     122        <Caret Line="123" Column="1" TopLine="104"/>
    112123      </Position9>
    113124      <Position10>
     
    117128      <Position11>
    118129        <Filename Value="UBrainFuck.pas"/>
    119         <Caret Line="121" Column="1" TopLine="104"/>
     130        <Caret Line="71" Column="42" TopLine="67"/>
    120131      </Position11>
    121132      <Position12>
    122         <Filename Value="UBrainFuck.pas"/>
    123         <Caret Line="125" Column="1" TopLine="104"/>
     133        <Filename Value="UMainForm.pas"/>
     134        <Caret Line="98" Column="35" TopLine="40"/>
    124135      </Position12>
    125136      <Position13>
    126         <Filename Value="UBrainFuck.pas"/>
    127         <Caret Line="121" Column="1" TopLine="104"/>
     137        <Filename Value="UMainForm.pas"/>
     138        <Caret Line="99" Column="35" TopLine="74"/>
    128139      </Position13>
    129140      <Position14>
    130         <Filename Value="UBrainFuck.pas"/>
    131         <Caret Line="125" Column="1" TopLine="104"/>
     141        <Filename Value="UMainForm.pas"/>
     142        <Caret Line="101" Column="35" TopLine="76"/>
    132143      </Position14>
    133144      <Position15>
    134         <Filename Value="UBrainFuck.pas"/>
    135         <Caret Line="121" Column="1" TopLine="104"/>
     145        <Filename Value="UMainForm.pas"/>
     146        <Caret Line="114" Column="1" TopLine="91"/>
    136147      </Position15>
    137148      <Position16>
    138         <Filename Value="UBrainFuck.pas"/>
    139         <Caret Line="125" Column="1" TopLine="104"/>
     149        <Filename Value="UMainForm.pas"/>
     150        <Caret Line="68" Column="31" TopLine="48"/>
    140151      </Position16>
    141152      <Position17>
    142         <Filename Value="UBrainFuck.pas"/>
    143         <Caret Line="121" Column="1" TopLine="104"/>
     153        <Filename Value="UMainForm.pas"/>
     154        <Caret Line="90" Column="29" TopLine="77"/>
    144155      </Position17>
    145156      <Position18>
    146         <Filename Value="UBrainFuck.pas"/>
    147         <Caret Line="125" Column="1" TopLine="104"/>
     157        <Filename Value="UMainForm.pas"/>
     158        <Caret Line="79" Column="37" TopLine="61"/>
    148159      </Position18>
    149160      <Position19>
    150         <Filename Value="UBrainFuck.pas"/>
    151         <Caret Line="121" Column="1" TopLine="104"/>
     161        <Filename Value="UMainForm.pas"/>
     162        <Caret Line="70" Column="13" TopLine="63"/>
    152163      </Position19>
    153164      <Position20>
    154         <Filename Value="UBrainFuck.pas"/>
    155         <Caret Line="125" Column="1" TopLine="104"/>
     165        <Filename Value="UMainForm.pas"/>
     166        <Caret Line="118" Column="1" TopLine="116"/>
    156167      </Position20>
    157168      <Position21>
    158         <Filename Value="UBrainFuck.pas"/>
    159         <Caret Line="121" Column="1" TopLine="104"/>
     169        <Filename Value="UMainForm.pas"/>
     170        <Caret Line="130" Column="1" TopLine="124"/>
    160171      </Position21>
    161172      <Position22>
    162         <Filename Value="UBrainFuck.pas"/>
    163         <Caret Line="125" Column="1" TopLine="104"/>
     173        <Filename Value="UMainForm.pas"/>
     174        <Caret Line="140" Column="3" TopLine="132"/>
    164175      </Position22>
    165176      <Position23>
    166         <Filename Value="UBrainFuck.pas"/>
    167         <Caret Line="121" Column="1" TopLine="104"/>
     177        <Filename Value="UMainForm.pas"/>
     178        <Caret Line="129" Column="10" TopLine="126"/>
    168179      </Position23>
    169180      <Position24>
    170         <Filename Value="UBrainFuck.pas"/>
    171         <Caret Line="123" Column="1" TopLine="104"/>
     181        <Filename Value="UMainForm.pas"/>
     182        <Caret Line="72" Column="15" TopLine="59"/>
    172183      </Position24>
    173184      <Position25>
    174         <Filename Value="UBrainFuck.pas"/>
    175         <Caret Line="125" Column="1" TopLine="104"/>
     185        <Filename Value="UMainForm.pas"/>
     186        <Caret Line="130" Column="3" TopLine="127"/>
    176187      </Position25>
    177188      <Position26>
    178         <Filename Value="UBrainFuck.pas"/>
    179         <Caret Line="130" Column="1" TopLine="117"/>
     189        <Filename Value="UMainForm.pas"/>
     190        <Caret Line="157" Column="42" TopLine="132"/>
    180191      </Position26>
    181192      <Position27>
    182         <Filename Value="UBrainFuck.pas"/>
    183         <Caret Line="123" Column="14" TopLine="117"/>
     193        <Filename Value="UMainForm.pas"/>
     194        <Caret Line="59" Column="15" TopLine="46"/>
    184195      </Position27>
    185196      <Position28>
    186         <Filename Value="UBrainFuck.pas"/>
    187         <Caret Line="117" Column="1" TopLine="104"/>
     197        <Filename Value="UMainForm.pas"/>
     198        <Caret Line="106" Column="24" TopLine="89"/>
    188199      </Position28>
    189200      <Position29>
    190         <Filename Value="UBrainFuck.pas"/>
    191         <Caret Line="123" Column="1" TopLine="104"/>
     201        <Filename Value="UMainForm.pas"/>
     202        <Caret Line="97" Column="19" TopLine="94"/>
    192203      </Position29>
    193204      <Position30>
    194         <Filename Value="UBrainFuck.pas"/>
    195         <Caret Line="125" Column="1" TopLine="104"/>
     205        <Filename Value="UMainForm.pas"/>
     206        <Caret Line="110" Column="54" TopLine="100"/>
    196207      </Position30>
    197208    </JumpHistory>
    198209  </ProjectSession>
    199   <Debugging>
    200     <BreakPoints Count="2">
    201       <Item1>
    202         <Kind Value="bpkSource"/>
    203         <WatchScope Value="wpsLocal"/>
    204         <WatchKind Value="wpkWrite"/>
    205         <Source Value="UBrainFuck.pas"/>
    206         <Line Value="117"/>
    207       </Item1>
    208       <Item2>
    209         <Kind Value="bpkSource"/>
    210         <WatchScope Value="wpsLocal"/>
    211         <WatchKind Value="wpkWrite"/>
    212         <Source Value="UBrainFuck.pas"/>
    213         <Line Value="123"/>
    214       </Item2>
    215     </BreakPoints>
    216   </Debugging>
    217210</CONFIG>
  • trunk/UMainForm.lfm

    r3 r4  
    88  ClientWidth = 643
    99  Menu = MainMenu1
     10  OnCloseQuery = FormCloseQuery
    1011  OnCreate = FormCreate
    1112  OnDestroy = FormDestroy
     
    1819    Width = 643
    1920    Align = alClient
    20     Lines.Strings = (
    21       '++++++++++[>+++++++>++++++++++>+++>+<<<<'
    22       '-]>++.>+.+++++++..+++.>++.<<++++++++++++'
    23       '+++.>.+++.------.--------.>+.>.'
    24     )
     21    OnChange = MemoSourceChange
    2522    TabOrder = 0
    2623  end
     
    465462      Caption = 'Open'
    466463      ImageIndex = 7
     464      OnExecute = AProjectOpenExecute
    467465      ShortCut = 16463
    468466    end
     
    470468      Caption = 'Save'
    471469      ImageIndex = 0
     470      OnExecute = AProjectSaveExecute
    472471      ShortCut = 16467
    473472    end
     
    475474      Caption = 'Close'
    476475      ImageIndex = 4
     476      OnExecute = AProjectCloseExecute
    477477      ShortCut = 16465
    478478    end
     
    480480      Caption = 'Save as...'
    481481      ImageIndex = 0
     482      OnExecute = AProjectSaveAsExecute
    482483      ShortCut = 24659
    483484    end
     
    485486      Caption = 'New'
    486487      ImageIndex = 9
     488      OnExecute = AProjectNewExecute
    487489      ShortCut = 16462
    488490    end
     
    837839    }
    838840  end
     841  object OpenDialog1: TOpenDialog
     842    DefaultExt = '.bf'
     843    Filter = 'BrainFuck (*.bf)|*.bf|Any file (*.*)|*.*'
     844    left = 192
     845    top = 157
     846  end
     847  object SaveDialog1: TSaveDialog
     848    DefaultExt = '.bf'
     849    Filter = 'BrainFuck (*.bf)|*.bf|Any file (*.*)|*.*'
     850    left = 192
     851    top = 208
     852  end
    839853end
  • trunk/UMainForm.pas

    r3 r4  
    4242    MenuItem8: TMenuItem;
    4343    MenuItem9: TMenuItem;
     44    OpenDialog1: TOpenDialog;
     45    SaveDialog1: TSaveDialog;
    4446    StatusBar1: TStatusBar;
    4547    TabControl1: TTabControl;
     
    5355    ToolButton7: TToolButton;
    5456    procedure AExitExecute(Sender: TObject);
     57    procedure AProjectCloseExecute(Sender: TObject);
     58    procedure AProjectNewExecute(Sender: TObject);
     59    procedure AProjectOpenExecute(Sender: TObject);
     60    procedure AProjectSaveAsExecute(Sender: TObject);
     61    procedure AProjectSaveExecute(Sender: TObject);
    5562    procedure ARunExecute(Sender: TObject);
     63    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    5664    procedure FormCreate(Sender: TObject);
    5765    procedure FormDestroy(Sender: TObject);
    5866    procedure FormShow(Sender: TObject);
     67    procedure MemoSourceChange(Sender: TObject);
    5968  private
    6069    { private declarations }
    6170  public
     71    Modified: Boolean;
     72    ProjectFileName: string;
    6273    BrainFuckInterpreter: TBrainFuckInterpreter;
     74    procedure UpdateInterface;
    6375  end;
    6476
     
    7183
    7284uses
    73   UInterpreterForm;
     85  UInterpreterForm, UApplicationInfo;
    7486
    7587{ TMainForm }
     
    7789procedure TMainForm.FormShow(Sender: TObject);
    7890begin
     91  UpdateInterface;
     92end;
    7993
     94procedure TMainForm.MemoSourceChange(Sender: TObject);
     95begin
     96  Modified := True;
     97  UpdateInterface;
     98end;
     99
     100procedure TMainForm.UpdateInterface;
     101var
     102  Title: string;
     103begin
     104  AProjectSave.Enabled := Modified;
     105  Title := ApplicationInfo.Name;
     106  if ProjectFileName <> '' then Title := ProjectFileName + ' - ' + Title;
     107  if Modified then Title := Title + ' *';
     108  Caption := Title;
     109  MemoSource.Enabled := ProjectFileName <> '';
     110  AProjectClose.Enabled := ProjectFileName <> '';
     111  ARun.Enabled := ProjectFileName <> '';
     112  ACompile.Enabled := ProjectFileName <> '';
    80113end;
    81114
     
    99132end;
    100133
     134procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
     135begin
     136end;
     137
    101138procedure TMainForm.AExitExecute(Sender: TObject);
    102139begin
     
    104141end;
    105142
     143procedure TMainForm.AProjectCloseExecute(Sender: TObject);
     144begin
     145  Modified := False;
     146  ProjectFileName := '';
     147  MemoSource.Clear;
     148  UpdateInterface;
     149end;
     150
     151procedure TMainForm.AProjectNewExecute(Sender: TObject);
     152begin
     153  ProjectFileName := 'Project.bf';
     154  MemoSource.Clear;
     155  UpdateInterface;
     156end;
     157
     158procedure TMainForm.AProjectOpenExecute(Sender: TObject);
     159begin
     160  OpenDialog1.FileName := ProjectFileName;
     161  if OpenDialog1.Execute then begin
     162    MemoSource.Lines.LoadFromFile(OpenDialog1.FileName);
     163    ProjectFileName := OpenDialog1.FileName;
     164    UpdateInterface;
     165  end;
     166end;
     167
     168procedure TMainForm.AProjectSaveAsExecute(Sender: TObject);
     169begin
     170  SaveDialog1.FileName := ProjectFileName;
     171  if SaveDialog1.Execute then begin
     172    MemoSource.Lines.SaveToFile(SaveDialog1.FileName);
     173    ProjectFileName := SaveDialog1.FileName;
     174    Modified := False;
     175    UpdateInterface;
     176  end;
     177end;
     178
     179procedure TMainForm.AProjectSaveExecute(Sender: TObject);
     180begin
     181  if Modified then AProjectSaveAs.Execute;
     182end;
     183
    106184end.
    107185
Note: See TracChangeset for help on using the changeset viewer.