⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cpp

📁 用于开发Atmel的AVR系列单片机的GCC集成开发环境
💻 CPP
📖 第 1 页 / 共 4 页
字号:
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DocumentOpen(void)
{
 Search1->Enabled = true;
 SearchReplace1->Enabled = true;
 Undo1->Enabled = true;
 Redo1->Enabled = true;
 Cut1->Enabled = true;
 Copy1->Enabled = true;
 if (cliphastext)
 {
  Paste1->Enabled = true;
  ToolButton11->Enabled = true;
 }
 Save->Enabled = true;
 Saveas->Enabled = true;
 Close->Enabled = true;
 Compile1->Enabled = true;
 ToolButton4->Enabled = true;
 ToolButton6->Enabled = true;
 ToolButton7->Enabled = true;
 ToolButton9->Enabled = true;
 ToolButton10->Enabled = true;
 ToolButton13->Enabled = true;
 ToolButton15->Enabled = true;
 ToolButton17->Enabled = true;
 Print1->Enabled = true;
 PrintPreview1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
 AnsiString temp;

 SearchText = FindDialog1->FindTextA;
 if (!FindDialog1->Options.Contains(frDown)) Options << ssoBackwards;
 if (FindDialog1->Options.Contains(frMatchCase)) Options << ssoMatchCase;
 if (FindDialog1->Options.Contains(frWholeWord)) Options << ssoWholeWord;
 SearchAgain1Click (Sender);
 SearchAgain1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SearchAgain1Click(TObject *Sender)
{
 AnsiString temp;

 TTabSheet *ActTabSheet = PageControl1->ActivePage;
 temp = ActTabSheet->Name;
 temp.Delete (1, 3);
 temp = "Syn" + temp;
 ActSynEdit = (TSynEdit *)ActTabSheet->FindComponent(temp);
 if (!ActSynEdit->SearchReplace(SearchText, ReplaceText, Options))
 {
  Application->MessageBox ("Not found", "Info", MB_OK | MB_ICONINFORMATION);
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceDialog1Find(TObject *Sender)
{
 SearchText = ReplaceDialog1->FindText;
 SearchAgain1Click (Sender);
 SearchAgain1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender)
{
 AnsiString temp;

 SearchText = ReplaceDialog1->FindText;
 ReplaceText = ReplaceDialog1->ReplaceText;
 TTabSheet *ActTabSheet = PageControl1->ActivePage;
 temp = ActTabSheet->Name;
 temp.Delete (1, 3);
 temp = "Syn" + temp;
 ActSynEdit = (TSynEdit *)ActTabSheet->FindComponent(temp);
 ActSynEdit->SelStart = ActSynEdit->SelStart - 1;
 ActSynEdit->SelEnd = ActSynEdit->SelStart;
 if (!ReplaceDialog1->Options.Contains(frDown)) Options << ssoBackwards;
 if (ReplaceDialog1->Options.Contains(frMatchCase)) Options << ssoMatchCase;
 if (ReplaceDialog1->Options.Contains(frWholeWord)) Options << ssoWholeWord;
 if (ReplaceDialog1->Options.Contains(frReplace)) Options << ssoReplace;
 if (ReplaceDialog1->Options.Contains(frReplaceAll)) Options << ssoReplaceAll;
 SearchAgain1Click (Sender);
 Options >> ssoReplace >> ssoReplaceAll;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::New1Click(TObject *Sender)
{
 TTreeNode *Node, *RootNode;
 int i;

 if (CheckForUnsavedFiles (true) == IDCANCEL) return;
 CList->Clear ();
 for (i = 0;i < HList->Count;i++)
 {
  if (HList->Objects[i] != NULL) delete HList->Objects[i];
 }
 HList->Clear ();
 TreeView1->Items->Clear ();
 TreeView1->Items->Add (NULL, "New Project");
 Node = TreeView1->Items->Item[0];
 TreeView1->Items->AddChild (Node, "C Files");
 TreeView1->Items->AddChild (Node, "Header");
 CNode = TreeView1->Items->Item[1];
 HNode = TreeView1->Items->Item[2];
 TreeView1->FullExpand ();
 
 if (OptDlg->hasChanged)
 if (Application->MessageBox ("Keep actual Compiler Settings ?",
                              "Info", MB_YESNO | MB_ICONINFORMATION) == IDNO)
 {
  ProjectPath = IncludeTrailingBackslash (GetCurrentDir ());
  PgmDlg->LoadSettings (EnvIni);
  OptDlg->LoadSettings (EnvIni);
 }
 OptDlg->OutputName = "";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 AnsiString apppath;
 bool t;

 Application->OnIdle = AppIdle;
 TreeView1->FullExpand ();
 clipbrd = Clipboard ();
 apppath = IncludeTrailingBackslash (ExtractFilePath (Application->ExeName));
 apppath += "winavr.ini";
 EnvIni = new TIniFile (apppath);

 // Restore Window Positions
 if (EnvIni->ReadBool ("Environment", "FormMax", true))
 {
  WindowState = wsMaximized;
 }
 else
 {
  Top = EnvIni->ReadInteger ("Environment", "FormTop", 10);
  Left = EnvIni->ReadInteger ("Environment", "FormLeft", 10);
  Height = EnvIni->ReadInteger ("Environment", "FormHeight", 500);
  Width = EnvIni->ReadInteger ("Environment", "FormWidth", 700);
 }
 // Restore Component Positions
 TreeView1->Width = EnvIni->ReadInteger ("Environment", "TreeWidth", 185);
 PageControl1->Width = EnvIni->ReadInteger ("Environment", "TabWidth", 833);
 Panel1->Height = EnvIni->ReadInteger ("Environment", "PanelHeight", 141);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AddFile1Click(TObject *Sender)
{
 AnsiString fName, RelName, fullname;
 TTreeNode *NewNode;
 TStringList *depList;

 OpenDialog1->Title = "Add File to Project";
 OpenDialog1->Filter = "C Files,Header (*.c,*.h)|*.c;*.h";
 OpenDialog1->DefaultExt = "c";
 OpenDialog1->FileName = "";
 if (OpenDialog1->Execute ())
 {
  fName = ExtractFileName (OpenDialog1->FileName);
  RelName = ExtractRelativePath (ProjectPath, OpenDialog1->FileName);
  fullname = OpenDialog1->FileName;
  if (ExtractFileExt (fullname) == ".c")
  {
   if (CheckIfInList (CList, &fullname))
   {
    Application->MessageBox ("File already in Project", "Info", MB_OK | MB_ICONINFORMATION);
    return;
   }
   TreeView1->Items->AddChild (CNode, fName);
   CList->Add (RelName);
  }
  else
  {
   if (CheckIfInList (HList, &fullname))
   {
    Application->MessageBox ("File already in Project", "Info", MB_OK | MB_ICONINFORMATION);
    return;
   }
   TreeView1->Items->AddChild (HNode, fName);
   depList = new TStringList;
   HList->AddObject (RelName, (TObject *)depList);
  }
  TreeView1->FullExpand ();
  if (!TreeView1->Items->Item[0]->Text.Pos (" *"))
  {
   TreeView1->Items->Item[0]->Text += " *";
  }
 }
 TreeView1->Invalidate ();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1ContextPopup(TObject *Sender,
      TPoint &MousePos, bool &Handled)
{
 ActTreeNode = TreeView1->GetNodeAt (MousePos.x, MousePos.y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RemoveFile1Click(TObject *Sender)
{
 if (ActTreeNode == NULL) return; // No Node selected
 if (ActTreeNode->Parent == NULL) return; // Root Node
 if (ActTreeNode == CNode || ActTreeNode == HNode) return;
 if (ActTreeNode->Text.Pos (".c"))
 {
  CList->Delete (ActTreeNode->Index);
 }
 else
 {
  delete HList->Objects[ActTreeNode->Index];
  HList->Delete (ActTreeNode->Index);
 }
 ActTreeNode->Delete ();
 if (!TreeView1->Items->Item[0]->Text.Pos (" *"))
 {
  TreeView1->Items->Item[0]->Text += " *";
 }
 TreeView1->Invalidate ();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Save1Click(TObject *Sender)
{
 AnsiString temp;
 TTreeNode *RootNode;

 RootNode = TreeView1->Items->Item[0];
 if (RootNode->Text == "New Project" || RootNode->Text == "New Project *")
 {
  SaveDialog1->Title = "Save Project as...";
  SaveDialog1->Filter = "Project Files (*.prj)|*.prj";
  SaveDialog1->DefaultExt = "prj";
  SaveDialog1->FileName = "";
  if (SaveDialog1->Execute ())
  {
   if (FileExists (SaveDialog1->FileName))
   {
    if (Application->MessageBox ("File already exists.\nOverwrite it ?",
                      "Info", MB_OKCANCEL | MB_ICONINFORMATION) != IDOK) return;
   }
  }
  else return;
  temp = SaveDialog1->FileName;
 }
 else
 {
  SetCurrentDir (ProjectPath);
  temp = ExpandFileName (RootNode->Text);
 }
 SaveProjectFile (&temp);
 RootNode->Text = ExtractFileName (temp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SaveProjectFile (AnsiString *fName)
{
 AnsiString temp, t;
 TStringList *depList;
 int i, d;
 TIniFile *prj;

 if (fName->Pos (" *")) fName->SetLength (fName->Length () - 2);
 if (FileExists (*fName)) DeleteFile (*fName);
 OptDlg->SetOutputName (*fName);
 prj = new TIniFile (*fName);
 if (prj == NULL) Application->MessageBox ("Can't create Project File", "Error",
                                              MB_OK | MB_ICONINFORMATION);
 RedoRelPaths (&ExtractFileDir (*fName));
 prj->WriteString ("WinAVRIDE", "Version", PROG_VER);
 prj->WriteInteger ("C Files", "Count", CList->Count);
 for (i = 0;i < CList->Count;i++)
 {
  temp = "File" + AnsiString ((int)i);
  prj->WriteString ("C Files", temp, CList->Strings[i].c_str ());
 }
 prj->WriteInteger ("Header", "Count", HList->Count);
 for (i = 0;i < HList->Count;i++)
 {
  temp = "File" + AnsiString ((int)i);
  prj->WriteString ("Header", temp, HList->Strings[i].c_str ());
 }
 for (i = 0;i < HList->Count;i++)
 {
  depList = (TStringList *)HList->Objects[i];
  t = "File" + AnsiString ((int)i);
  prj->WriteInteger (t, "Count", depList->Count);
  for (d = 0;d < depList->Count;d++)
  {
   temp = "File" + AnsiString ((int)d);
   prj->WriteString (t, temp, depList->Strings[d].c_str ());
  }
 }
 OptDlg->SaveSettings (prj);
 TermForm->SaveSettings (prj);
 PgmDlg->SaveSettings (prj);
 delete prj;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RedoRelPaths (AnsiString *NewBasePath)
{
 int i, d;
 AnsiString temp;
 TStringList *dlist;

 *NewBasePath = IncludeTrailingBackslash (*NewBasePath);
 SetCurrentDir (ProjectPath);
 for (i = 0;i < CList->Count;i++)
 {
  temp = ExpandFileName (CList->Strings[i]);
  CList->Strings[i] = ExtractRelativePath (*NewBasePath, temp);
 }
 for (i = 0;i < HList->Count;i++)
 {
  temp = ExpandFileName (HList->Strings[i]);
  HList->Strings[i] = ExtractRelativePath (*NewBasePath, temp);
  dlist = (TStringList *)HList->Objects[i];
  for (d = 0;d < dlist->Count;d++)
  {
   temp = ExpandFileName (dlist->Strings[d]);
   dlist->Strings[d] = ExtractRelativePath (*NewBasePath, temp);
  }
 }
 ProjectPath = IncludeTrailingBackslash (*NewBasePath);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Open1Click(TObject *Sender)
{
 TIniFile *prj;
 TStringList *depList;
 AnsiString temp, t, te;
 int cnt, i, d, c;

 if (CheckForUnsavedFiles (true) == IDCANCEL) return;
 OpenDialog1->Title = "Load Project...";
 OpenDialog1->Filter = "Project Files (*.prj)|*.prj";
 OpenDialog1->DefaultExt = "prj";
 OpenDialog1->FileName = "";
 if (OpenDialog1->Execute ())
 {
  CloseAllTabs ();
  prj = new TIniFile (OpenDialog1->FileName);
  if (prj == NULL) return;
  TreeView1->Items->Item[0]->Text = "New";
  OptDlg->hasChanged = false; // Suppress 'Keep Compiler Settings' Dialog
  New1Click (Sender);
  ProjectPath = ExtractFileDir (OpenDialog1->FileName);
  ProjectPath = IncludeTrailingBackslash (ProjectPath);
  cnt = prj->ReadInteger ("C Files", "Count", 0);
  for (i = 0;i < cnt;i++)
  {
   temp = "File" + AnsiString ((int)i);
   t = prj->ReadString ("C Files", temp, NULL);
   TreeView1->Items->AddChild (CNode, ExtractFileName (t));
   CList->Add (t);
  }
  cnt = prj->ReadInteger ("Header", "Count", 0);
  for (i = 0;i < cnt;i++)
  {
   temp = "File" + AnsiString ((int)i);
   t = prj->ReadString ("Header", temp, NULL);
   TreeView1->Items->AddChild (HNode, ExtractFileName (t));
   depList = new TStringList;
   HList->AddObject (t, (TObject *)depList);
   c = prj->ReadInteger (temp, "Count", 0);
   for (d = 0;d < c;d++)
   {
    t = "File" + AnsiString ((int)d);
    te = prj->ReadString (temp, t, NULL);
    depList->Add (te);
   }
  }
  OptDlg->LoadSettings (prj);
  OptDlg->SetOutputName (OpenDialog1->FileName);
  TermForm->LoadSettings (prj);
  PgmDlg->LoadSettings (prj);
  delete prj;
  TreeView1->Items->Item[0]->Text = ExtractFileName (OpenDialog1->FileName);
  TreeView1->FullExpand ();
  OptDlg->hasChanged = true;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Saveas1Click(TObject *Sender)
{
 AnsiString temp;
 TTreeNode *RootNode;

 RootNode = TreeView1->Items->Item[0];
 SaveDialog1->Title = "Save Project as...";
 SaveDialog1->Filter = "Project Files (*.prj)|*.prj";
 SaveDialog1->DefaultExt = "prj";
 SaveDialog1->FileName = "";
 if (SaveDialog1->Execute ())
 {
  if (FileExists (SaveDialog1->FileName))
  {
   if (Application->MessageBox ("File already exists.\nOverwrite it ?",
                      "Info", MB_OKCANCEL | MB_ICONINFORMATION) != IDOK) return;
  }
  temp = SaveDialog1->FileName;
  SaveProjectFile (&temp);
  RootNode->Text = ExtractFileName (temp);
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1DblClick(TObject *Sender)
{
 int index;
 AnsiString temp;

 if (TreeView1->Selected == NULL) return;
 if (ExtractFileExt (TreeView1->Selected->Text) == ".c" ||
     ExtractFileExt (TreeView1->Selected->Text) == ".h")
 {
  index = TreeView1->Selected->Index;
  SetCurrentDir (ProjectPath);
  if (ExtractFileExt (TreeView1->Selected->Text) == ".c")
       temp = ExpandFileName (CList->Strings[index]);

  if (ExtractFileExt (TreeView1->Selected->Text) == ".h")
       temp = ExpandFileName (HList->Strings[index]);

  for (index = 0;index < EdList->Count;index++)
  {
   if (EdList->Strings[index] == temp)
   {
    PageControl1->ActivePageIndex = index;
    return;
   }
  }
  LoadFileToEdit (temp);
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1ContextPopup(TObject *Sender,
      TPoint &MousePos, bool &Handled)
{
 Handled = true;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::CheckIfInList (TStringList *lst, AnsiString *file)
{
 AnsiString temp;
 int i;

 SetCurrentDir (ProjectPath);
 for (i = 0;i < lst->Count;i++)
 {
  temp = ExpandFileName (lst->Strings[i]);
  if (temp == *file) return true;
 }
 return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AddtoProject1Click(TObject *Sender)
{
 AnsiString temp, fName, RelName;
 TStringList *depList;
 int c;

 if (PageControl1->PageCount == 0) return;
 TTabSheet *ActTabSheet = PageControl1->ActivePage;
 temp = ActTabSheet->Name;
 temp.Delete (1, 3);
 temp = "Syn" + temp;
 ActSynEdit = (TSynEdit *)ActTabSheet->FindComponent(temp);
 if (ActTabSheet->Caption == "New File *" || ActTabSheet->Caption == "New File")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -