source: trunk/IDE/Forms/UFormProject.pas@ 60

Last change on this file since 60 was 56, checked in by chronos, 13 years ago
  • Modified: Slightly enhanced unfinished interpretter.
File size: 4.3 KB
Line 
1unit UFormProject;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
7 Menus, ActnList, UProject;
8
9type
10
11 { TFormProject }
12
13 TFormProject = class(TForm)
14 AAdd: TAction;
15 AShow: TAction;
16 ARename: TAction;
17 ADelete: TAction;
18 ActionList1: TActionList;
19 MenuItem1: TMenuItem;
20 MenuItem2: TMenuItem;
21 MenuItem3: TMenuItem;
22 MenuItem4: TMenuItem;
23 OpenDialog1: TOpenDialog;
24 PopupMenuFile: TPopupMenu;
25 TreeViewProject: TTreeView;
26 procedure AAddExecute(Sender: TObject);
27 procedure ADeleteExecute(Sender: TObject);
28 procedure ARenameExecute(Sender: TObject);
29 procedure AShowExecute(Sender: TObject);
30 procedure TreeViewProjectChange(Sender: TObject; Node: TTreeNode);
31 private
32 procedure UpdateProjectFiles(Node: TTreeNode; Files: TProjectFileList);
33 public
34 procedure UpdateProjectTree;
35 procedure UpdateInterface;
36 end;
37
38var
39 FormProject: TFormProject;
40
41implementation
42
43{$R *.lfm}
44
45uses
46 UCore, UFormMain, UFormSourceCode, UFormTargetCode, UFormCodeTree;
47
48{ TFormProject }
49
50procedure TFormProject.TreeViewProjectChange(Sender: TObject; Node: TTreeNode
51 );
52begin
53 with FormMain, FormSourceCode do
54 if Assigned(Node) then begin
55 if TProjectFile(Node.Data) is TProjectFile then begin
56 ProjectFile := TProjectFile(Node.Data);
57 SynEditSource.Lines.Assign(TProjectFile(Node.Data).Source);
58(* if FileExists(TProjectFile(Node.Data).ProducedFileName) then
59 CompiledForm.SynEdit1.Lines.LoadFromFile(FileName) else
60 CompiledForm.SynEdit1.Lines.Clear;
61 if ComboBoxTargetSelection.ItemIndex = 0 then
62 CompiledForm.SynEdit1.Highlighter := CompiledForm.SynPasSyn1;
63 if ComboBoxTargetSelection.ItemIndex = 1 then
64 CompiledForm.SynEdit1.Highlighter := CompiledForm.SynCppSyn1;
65 if ComboBoxTargetSelection.ItemIndex = 2 then
66 CompiledForm.SynEdit1.Highlighter := nil;
67 if ComboBoxTargetSelection.ItemIndex = 3 then
68 CompiledForm.SynEdit1.Highlighter := CompiledForm.SynXMLSyn1;
69 *)
70 (*// Load code tree view
71 Compiler.Producer.Free;
72 Compiler.Producer := TProducerTreeView.Create;
73 Compiler.Init;
74 Compiler.Parser.OnGetSource := GetSource;
75 with TProjectFile(Project.Items[0]) do begin
76 Compiler.Compile(Parent.GetDir + Name, Source);
77 end;
78 //CodeTreeForm.TreeView1.Assign(TProducerTreeView(Compiler.Producer).TreeView);
79 *)
80 end;
81 end;
82end;
83
84procedure TFormProject.AAddExecute(Sender: TObject);
85begin
86 if Sender is TMenuItem then
87 with TMenuItem(Sender) do begin
88 if OpenDialog1.Execute then begin
89
90 UpdateProjectTree;
91 end;
92 end;
93end;
94
95procedure TFormProject.ADeleteExecute(Sender: TObject);
96begin
97
98end;
99
100procedure TFormProject.ARenameExecute(Sender: TObject);
101begin
102
103end;
104
105procedure TFormProject.AShowExecute(Sender: TObject);
106begin
107
108end;
109
110procedure TFormProject.UpdateProjectTree;
111var
112 NewNode: TTreeNode;
113begin
114 with Core, TreeViewProject, Items do
115 try
116 BeginUpdate;
117 Clear;
118 if Assigned(Project) then begin
119 NewNode := AddChildObject(nil, ExtractFileNameOnly(Project.FileName), Project);
120 UpdateProjectFiles(NewNode, Project.Files);
121 NewNode.Expand(True);
122 end;
123 if Assigned(TreeViewProject.TopItem) and
124 (TreeViewProject.TopItem.Count > 0) then
125 TreeViewProject.TopItem.Items[0].Selected := True
126 else FormSourceCode.ProjectFile := nil;
127 finally
128 EndUpdate;
129 end;
130end;
131
132procedure TFormProject.UpdateInterface;
133begin
134 UpdateProjectTree;
135end;
136
137procedure TFormProject.UpdateProjectFiles(Node: TTreeNode; Files: TProjectFileList);
138var
139 I: Integer;
140 NewNode: TTreeNode;
141 FileName: string;
142 NamePart: string;
143 SelNode: TTreeNode;
144 SubNode: TTreeNode;
145begin
146 for I := 0 to Files.Count - 1 do begin
147 FileName := TProjectFile(Files[I]).FileName;
148 SelNode := Node;
149 while Pos(DirectorySeparator, FileName) > 0 do begin
150 NamePart := Copy(FileName, 1, Pos(DirectorySeparator, FileName) - 1);
151 Delete(FileName, 1, Length(NamePart) + 1);
152 SubNode := SelNode.FindNode(NamePart);
153 if Assigned(SubNode) then SelNode := SubNode
154 else begin
155 SelNode := TreeViewProject.Items.AddChild(SelNode, NamePart);
156 end;
157 end;
158 NewNode := TreeViewProject.Items.AddChildObject(SelNode, FileName, Pointer(Files[I]));
159 end;
160end;
161
162end.
163
Note: See TracBrowser for help on using the repository browser.