1 | unit UFormProject;
|
---|
2 |
|
---|
3 | interface
|
---|
4 |
|
---|
5 | uses
|
---|
6 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
---|
7 | Menus, ActnList, UProject;
|
---|
8 |
|
---|
9 | type
|
---|
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 |
|
---|
38 | var
|
---|
39 | FormProject: TFormProject;
|
---|
40 |
|
---|
41 | implementation
|
---|
42 |
|
---|
43 | {$R *.lfm}
|
---|
44 |
|
---|
45 | uses
|
---|
46 | UCore, UFormMain, UFormSourceCode, UFormTargetCode, UFormCodeTree;
|
---|
47 |
|
---|
48 | { TFormProject }
|
---|
49 |
|
---|
50 | procedure TFormProject.TreeViewProjectChange(Sender: TObject; Node: TTreeNode
|
---|
51 | );
|
---|
52 | begin
|
---|
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;
|
---|
82 | end;
|
---|
83 |
|
---|
84 | procedure TFormProject.AAddExecute(Sender: TObject);
|
---|
85 | begin
|
---|
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;
|
---|
93 | end;
|
---|
94 |
|
---|
95 | procedure TFormProject.ADeleteExecute(Sender: TObject);
|
---|
96 | begin
|
---|
97 |
|
---|
98 | end;
|
---|
99 |
|
---|
100 | procedure TFormProject.ARenameExecute(Sender: TObject);
|
---|
101 | begin
|
---|
102 |
|
---|
103 | end;
|
---|
104 |
|
---|
105 | procedure TFormProject.AShowExecute(Sender: TObject);
|
---|
106 | begin
|
---|
107 |
|
---|
108 | end;
|
---|
109 |
|
---|
110 | procedure TFormProject.UpdateProjectTree;
|
---|
111 | var
|
---|
112 | NewNode: TTreeNode;
|
---|
113 | begin
|
---|
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;
|
---|
130 | end;
|
---|
131 |
|
---|
132 | procedure TFormProject.UpdateInterface;
|
---|
133 | begin
|
---|
134 | UpdateProjectTree;
|
---|
135 | end;
|
---|
136 |
|
---|
137 | procedure TFormProject.UpdateProjectFiles(Node: TTreeNode; Files: TProjectFileList);
|
---|
138 | var
|
---|
139 | I: Integer;
|
---|
140 | NewNode: TTreeNode;
|
---|
141 | FileName: string;
|
---|
142 | NamePart: string;
|
---|
143 | SelNode: TTreeNode;
|
---|
144 | SubNode: TTreeNode;
|
---|
145 | begin
|
---|
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;
|
---|
160 | end;
|
---|
161 |
|
---|
162 | end.
|
---|
163 |
|
---|