1 //---------------------------------------------------------------------------
2 
3 #include <vcl.h>
4 #pragma hdrstop
5 
6 #include "Umain.h"
7 #include "UEditor.h"
8 #include "Application.h"
9 #include "USettings.h"
10 #include "UAbout.h"
11 #include "UPreProcess.h"
12 //---------------------------------------------------------------------------
13 #pragma package(smart_init)
14 #pragma resource "*.dfm"
15 
16 #define SoftNAME        "GVexec"
17 TfrmMain *frmMain;
18 //---------------------------------------------------------------------------
TfrmMain(TComponent * Owner)19 __fastcall TfrmMain::TfrmMain(TComponent* Owner)
20         : TForm(Owner)
21 {
22 }
23 //---------------------------------------------------------------------------
New1Click(TObject * Sender)24 void __fastcall TfrmMain::New1Click(TObject *Sender)
25 {
26         TfrmEditor* Editor=new TfrmEditor(Application);
27         Editor->ChangeFileName("Untitled"+IntToStr(FileSeq++),true);
28 }
29 //---------------------------------------------------------------------------
30 
Label1Click(TObject * Sender)31 void __fastcall TfrmMain::Label1Click(TObject *Sender)
32 {
33         this->ActiveMDIChild->Caption="this is active";
34 
35 }
36 //---------------------------------------------------------------------------
37 
38 
39 
FormCreate(TObject * Sender)40 void __fastcall TfrmMain::FormCreate(TObject *Sender)
41 {
42         FileSeq=1;
43         AnsiString g=SoftNAME;
44 //        ODB->InitialDir=ReadFromRegistry("\\SOFTWARE\\ATT\\GRAPHVIZ\\","InstallPath")+"\\graphs";
45 /*        if (!FileExists(ODB->InitialDir+"\\dot.exe"))
46         {
47                 ShowMessage (ODB->InitialDir+"\\dot.exe");
48                 ShowMessage ("Could not locate dot.exe , please make sure that dot.exe is in the same folder with GVedit");
49                 Application->Terminate();
50         }*/
51 //        ODB->InitialDir=ExtractFilePath(Application->ExeName);
52 }
53 //---------------------------------------------------------------------------
54 
Open1Click(TObject * Sender)55 void __fastcall TfrmMain::Open1Click(TObject *Sender)
56 {
57         if(ODB->Execute())
58         {
59                 if(FileExists(ODB->FileName))
60                 {
61                         TfrmEditor* Editor=new TfrmEditor(Application);
62                         Editor->ChangeFileName(ODB->FileName,false);
63                         FileSeq++;
64                         Editor->R->Lines->LoadFromFile(ODB->FileName);
65                         Editor->modified=false;
66                 }
67         }
68 
69 }
70 //---------------------------------------------------------------------------
71 
72 
SaveAs1Click(TObject * Sender)73 void __fastcall TfrmMain::SaveAs1Click(TObject *Sender)
74 {
75         if(this->ActiveMDIChild)
76         {
77                 TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
78                 if(Ed->isEditor)
79                         Ed->SaveAs();
80                 else
81                         Ed->Editor->SaveAs();
82 
83         }
84 }
85 //---------------------------------------------------------------------------
86 
Save1Click(TObject * Sender)87 void __fastcall TfrmMain::Save1Click(TObject *Sender)
88 {
89         ToolButton5->Click();
90 }
91 //---------------------------------------------------------------------------
92 
ToolButton1Click(TObject * Sender)93 void __fastcall TfrmMain::ToolButton1Click(TObject *Sender)
94 {
95         frmSettings->Init(true);
96 }
97 //---------------------------------------------------------------------------
ReadFromRegistry(AnsiString RBKey,AnsiString RKey)98 AnsiString TfrmMain::ReadFromRegistry(AnsiString RBKey,AnsiString RKey)
99 {
100 
101 /*      example
102         RBKey="\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"
103         RKey="Path"
104 */
105         AnsiString S="";
106         TRegistry *Registry = new TRegistry();
107         try
108         {
109             Registry->RootKey = HKEY_LOCAL_MACHINE;
110           // False because we do not want to create it if it doesn't exist
111             if(Registry->OpenKey(RBKey,false))
112             {
113                     S=Registry->ReadString(RKey);
114             }
115             Registry->CloseKey();
116             delete Registry;
117             return S;
118           }
119           catch(...)
120           {
121             delete Registry;
122             return S;
123           }
124 }
Undo1Click(TObject * Sender)125 void __fastcall TfrmMain::Undo1Click(TObject *Sender)
126 {
127 
128         TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
129         if (Ed)
130         {
131                 if (Ed->isEditor)
132                         Ed->R->Undo();
133         }
134 }
135 //---------------------------------------------------------------------------
136 
137 
Cut1Click(TObject * Sender)138 void __fastcall TfrmMain::Cut1Click(TObject *Sender)
139 {
140         TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
141         if (Ed)
142         {
143                 if (Ed->isEditor)
144                         Ed->R->CutToClipboard();
145         }
146 
147 
148 }
149 //---------------------------------------------------------------------------
150 
Copy1Click(TObject * Sender)151 void __fastcall TfrmMain::Copy1Click(TObject *Sender)
152 {
153         TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
154         if (Ed)
155         {
156                 if (Ed->isEditor)
157                         Ed->R->CopyToClipboard();
158         }
159 
160 
161 }
162 //---------------------------------------------------------------------------
163 
Paste1Click(TObject * Sender)164 void __fastcall TfrmMain::Paste1Click(TObject *Sender)
165 {
166 
167 
168         TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
169         if (Ed)
170         {
171                 if (Ed->isEditor)
172                         Ed->R->PasteFromClipboard();
173         }
174 
175 }
176 //---------------------------------------------------------------------------
177 
178 
SaveCommandlogtofile1Click(TObject * Sender)179 void __fastcall TfrmMain::SaveCommandlogtofile1Click(TObject *Sender)
180 {
181         if( (Memo1->Text.Trim() !="")&& (SDB->Execute()))
182                 Memo1->Lines->SaveToFile(SDB->FileName);
183 }
184 //---------------------------------------------------------------------------
185 
Clear1Click(TObject * Sender)186 void __fastcall TfrmMain::Clear1Click(TObject *Sender)
187 {
188         Memo1->Lines->Clear();
189 }
190 //---------------------------------------------------------------------------
191 
Cascade1Click(TObject * Sender)192 void __fastcall TfrmMain::Cascade1Click(TObject *Sender)
193 {
194         this->Cascade();
195 }
196 //---------------------------------------------------------------------------
197 
Tile1Click(TObject * Sender)198 void __fastcall TfrmMain::Tile1Click(TObject *Sender)
199 {
200         this->Tile();
201 }
202 //---------------------------------------------------------------------------
203 
DotProcess1Click(TObject * Sender)204 void __fastcall TfrmMain::DotProcess1Click(TObject *Sender)
205 {
206         frmSettings->Init(true);
207 
208 }
209 //---------------------------------------------------------------------------
210 
Settings1Click(TObject * Sender)211 void __fastcall TfrmMain::Settings1Click(TObject *Sender)
212 {
213         frmSettings->Init();
214 }
215 //---------------------------------------------------------------------------
216 
ToolButton2Click(TObject * Sender)217 void __fastcall TfrmMain::ToolButton2Click(TObject *Sender)
218 {
219         frmSettings->Init();
220 }
221 //---------------------------------------------------------------------------
222 
223 
ToolButton3Click(TObject * Sender)224 void __fastcall TfrmMain::ToolButton3Click(TObject *Sender)
225 {
226         TfrmEditor* Editor=new TfrmEditor(Application);
227         Editor->ChangeFileName("Untitled"+IntToStr(FileSeq++),true);
228 }
229 //---------------------------------------------------------------------------
230 
ToolButton6Click(TObject * Sender)231 void __fastcall TfrmMain::ToolButton6Click(TObject *Sender)
232 {
233         if(ODB->Execute())
234         {
235                 if(FileExists(ODB->FileName))
236                 {
237                         TfrmEditor* Editor=new TfrmEditor(Application);
238                         Editor->ChangeFileName(ODB->FileName,false);
239                         FileSeq++;
240                         Editor->R->Lines->LoadFromFile(ODB->FileName);
241                         Editor->modified=false;
242                 }
243         }
244 
245 
246 }
247 //---------------------------------------------------------------------------
248 
ToolButton5Click(TObject * Sender)249 void __fastcall TfrmMain::ToolButton5Click(TObject *Sender)
250 {
251         if(this->ActiveMDIChild)
252         {
253                 TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
254                 if(Ed->isEditor)
255                         Ed->Save();
256                 else
257                         Ed->Editor->Save();
258 
259         }
260 }
261 //---------------------------------------------------------------------------
262 
AboutGraphvizEditor1Click(TObject * Sender)263 void __fastcall TfrmMain::AboutGraphvizEditor1Click(TObject *Sender)
264 {
265         frmAbout->ShowModal();
266 }
267 //---------------------------------------------------------------------------
UpdateMainForm()268 void TfrmMain::UpdateMainForm()
269 {
270         //Updates buttons enabled/disabled respectively to active editor
271         TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
272         if(Ed)
273         {
274                 ToolButton1->Enabled=true;
275                 ToolButton2->Enabled=true;
276 
277                 ToolButton5->Enabled=Ed->modified;
278                 Save1->Enabled=Ed->modified;
279                 SaveAs1->Enabled=Ed->modified;
280         }
281         else
282         {
283                 ToolButton1->Enabled=false;
284                 ToolButton2->Enabled=false;
285 
286                 ToolButton5->Enabled=false;
287                 Save1->Enabled=false;
288                 SaveAs1->Enabled=false;
289 
290         }
291 
292 
293 }
294 
FormClose(TObject * Sender,TCloseAction & Action)295 void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
296 {
297         //check all editors before closing
298         TfrmEditor* EdStart=((TfrmEditor*)this->ActiveMDIChild);
299         if(EdStart)
300         {
301                 TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
302                 do
303                 {
304                         Ed->Close();
305                         Ed=((TfrmEditor*)this->ActiveMDIChild);
306                 }while (Ed);
307 
308 
309         }
310 }
311 //---------------------------------------------------------------------------
312 
Find1Click(TObject * Sender)313 void __fastcall TfrmMain::Find1Click(TObject *Sender)
314 {
315         if(this->ActiveMDIChild)
316         {
317                 TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
318                 if(!Ed->isEditor)
319                         Ed=Ed->Editor;
320                 Ed->FindDialog1->Position = Point(0, 0);
321                 Ed->FindDialog1->Execute();
322 
323         }
324 
325 
326 }
327 //---------------------------------------------------------------------------
328 
Replace1Click(TObject * Sender)329 void __fastcall TfrmMain::Replace1Click(TObject *Sender)
330 {
331         if(this->ActiveMDIChild)
332         {
333                 TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
334                 if(!Ed->isEditor)
335                         Ed=Ed->Editor;
336                 Ed->ReplaceDialog1->Position = Point(0, 0);
337                 Ed->ReplaceDialog1->Execute();
338 
339         }
340 
341 
342 }
343 //---------------------------------------------------------------------------
344 
Timer1Timer(TObject * Sender)345 void __fastcall TfrmMain::Timer1Timer(TObject *Sender)
346 {
347         static int ct=0;
348         Panel1->Color= (Panel1->Color==clRed)? clBtnFace:clRed;
349         ct++;
350         if(ct==10)
351         {
352                 ct=0;
353                 Timer1->Enabled=false;
354                 Panel1->Color=clBtnFace;
355         }
356 }
357 //---------------------------------------------------------------------------
358 
Close1Click(TObject * Sender)359 void __fastcall TfrmMain::Close1Click(TObject *Sender)
360 {
361         if(this->ActiveMDIChild)
362         {
363                 TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
364                 if(Ed->isEditor)
365                         Ed->Close();
366                 else
367                         Ed->Editor->Close();
368 
369         }
370 }
371 //---------------------------------------------------------------------------
372 
Help2Click(TObject * Sender)373 void __fastcall TfrmMain::Help2Click(TObject *Sender)
374 {
375                 AnsiString FileName="GVedit.html";
376                 AnsiString action="open";
377                 ShellExecute(NULL, action.c_str(),FileName.c_str(), NULL, NULL, SW_SHOW); //read me file, if exists it shows
378 
379 }
380 //---------------------------------------------------------------------------
381 
Graphvizonnet1Click(TObject * Sender)382 void __fastcall TfrmMain::Graphvizonnet1Click(TObject *Sender)
383 {
384                 AnsiString FileName="http://www.graphviz.org";
385                 AnsiString action="open";
386                 ShellExecute(NULL, action.c_str(),FileName.c_str(), NULL, NULL, SW_SHOW); //read me file, if exists it shows
387 
388 }
389 //---------------------------------------------------------------------------
390 
391 
PreprocessorSettings1Click(TObject * Sender)392 void __fastcall TfrmMain::PreprocessorSettings1Click(TObject *Sender)
393 {
394         frmPre->ShowModal();
395 }
396 //---------------------------------------------------------------------------
397 
398 
Button1Click(TObject * Sender)399 void __fastcall TfrmMain::Button1Click(TObject *Sender)
400 {
401         try{
402                 Image1->Picture->LoadFromFile("c:/gg.jpg");
403         }
404         catch(...)
405         {
406                 ;
407         }
408 }
409 //---------------------------------------------------------------------------
410 
411 
412