frmMain.pas
上传用户:youjie821
上传日期:2013-01-27
资源大小:459k
文件大小:6k
源码类别:

PlugIns编程

开发平台:

Delphi

  1. unit frmMain;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, hxUpdate, ActnList, StdCtrls, ComCtrls, RzButton, ImgList,
  6.   RzListVw, ExtCtrls, RzPanel, RzTreeVw, Mask, RzEdit, RzBtnEdt, FileCtrl,
  7.   Menus, RzTray, IniFiles;
  8. type
  9.   TMainForm = class(TForm)
  10.     ActionList1: TActionList;
  11.     actStart: TAction;
  12.     actStop: TAction;
  13.     RzToolbar1: TRzToolbar;
  14.     lvProjects: TRzListView;
  15.     ImageList1: TImageList;
  16.     actQuit: TAction;
  17.     BtnPlay: TRzToolButton;
  18.     BtnStop: TRzToolButton;
  19.     BtnInsertRecord: TRzToolButton;
  20.     BtnDeleteRecord: TRzToolButton;
  21.     RzSpacer1: TRzSpacer;
  22.     actAdd: TAction;
  23.     actDelete: TAction;
  24.     MainMenu1: TMainMenu;
  25.     N1: TMenuItem;
  26.     N2: TMenuItem;
  27.     N3: TMenuItem;
  28.     N4: TMenuItem;
  29.     N5: TMenuItem;
  30.     N6: TMenuItem;
  31.     N7: TMenuItem;
  32.     N8: TMenuItem;
  33.     actConfig: TAction;
  34.     BtnUtilities: TRzToolButton;
  35.     N9: TMenuItem;
  36.     PopupMenu1: TPopupMenu;
  37.     N10: TMenuItem;
  38.     N11: TMenuItem;
  39.     actModify: TAction;
  40.     RzToolButton1: TRzToolButton;
  41.     N12: TMenuItem;
  42.     N13: TMenuItem;
  43.     TrayIcon: TRzTrayIcon;
  44.     ImageList2: TImageList;
  45.     PopupMenu2: TPopupMenu;
  46.     N14: TMenuItem;
  47.     N15: TMenuItem;
  48.     actShow: TAction;
  49.     actHide: TAction;
  50.     RzToolButton2: TRzToolButton;
  51.     N16: TMenuItem;
  52.     N17: TMenuItem;
  53.     RzSpacer2: TRzSpacer;
  54.     N18: TMenuItem;
  55.     N19: TMenuItem;
  56.     procedure FormCreate(Sender: TObject);
  57.     procedure FormDestroy(Sender: TObject);
  58.     procedure actStartUpdate(Sender: TObject);
  59.     procedure actStopUpdate(Sender: TObject);
  60.     procedure actStartExecute(Sender: TObject);
  61.     procedure actStopExecute(Sender: TObject);
  62.     procedure actQuitExecute(Sender: TObject);
  63.     procedure actAddExecute(Sender: TObject);
  64.     procedure actModifyExecute(Sender: TObject);
  65.     procedure actDeleteExecute(Sender: TObject);
  66.     procedure actDeleteUpdate(Sender: TObject);
  67.     procedure actConfigExecute(Sender: TObject);
  68.     procedure actModifyUpdate(Sender: TObject);
  69.     procedure actShowExecute(Sender: TObject);
  70.     procedure actHideExecute(Sender: TObject);
  71.   private
  72.     { Private declarations }
  73.     FUpdateServer: ThxUpdateServer;
  74.     procedure RefreshProjects;
  75.   public
  76.     { Public declarations }
  77.   end;
  78. var
  79.   MainForm: TMainForm;
  80. implementation
  81. uses Types, frmConfig, hxSysUtils, ConvUtils, frmInfo;
  82. {$R *.dfm}
  83. procedure TMainForm.FormCreate(Sender: TObject);
  84. var
  85.   Ini: TIniFile;
  86.   Port: Integer;
  87. begin
  88.   RefreshProjects;
  89.   Ini:= TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'main.ini');
  90.   try
  91.     Port:= Ini.ReadInteger('Server', 'Port', 9901);
  92.   finally
  93.     Ini.Free;
  94.   end;
  95.   FUpdateServer:= ThxUpdateServer.Create(Port);
  96. end;
  97. procedure TMainForm.FormDestroy(Sender: TObject);
  98. begin
  99.   FUpdateServer.Free;
  100.   GetProjectCollection.Free;
  101. end;
  102. procedure TMainForm.actStartUpdate(Sender: TObject);
  103. begin
  104.   (Sender as TAction).Enabled:= not FUpdateServer.Active;
  105. end;
  106. procedure TMainForm.actStopUpdate(Sender: TObject);
  107. begin
  108.   (Sender as TAction).Enabled:= FUpdateServer.Active;
  109. end;
  110. procedure TMainForm.actStartExecute(Sender: TObject);
  111. begin
  112.   FUpdateServer.StartService;
  113. end;
  114. procedure TMainForm.actStopExecute(Sender: TObject);
  115. begin
  116.   FUpdateServer.StopServerice;
  117. end;
  118. procedure TMainForm.actQuitExecute(Sender: TObject);
  119. begin
  120.   Close;
  121. end;
  122. procedure TMainForm.actModifyExecute(Sender: TObject);
  123. var
  124.   szProjectName, szRootDir, szDescription: string;
  125. begin
  126.   with lvProjects.Selected do
  127.   begin
  128.     szProjectName:= Caption;
  129.     szRootDir:= SubItems[0];
  130.     szDescription:= SubItems[1];
  131.   end;
  132.   if ShowInfoForm(szProjectName, szRootDir, szDescription) then
  133.   begin
  134.     with lvProjects.Selected do
  135.     begin
  136.       Caption:= szProjectName;
  137.       SubItems[0]:= szRootDir;
  138.       SubItems[1]:= szDescription;
  139.     end;
  140.   end;
  141. end;
  142. procedure TMainForm.actDeleteUpdate(Sender: TObject);
  143. begin
  144.   (Sender as TAction).Enabled:= lvProjects.Selected <> nil;
  145. end;
  146. procedure TMainForm.actDeleteExecute(Sender: TObject);
  147. var
  148.   Index: Integer;
  149. begin
  150.   if MessageBox(0, '是否删除选择的项目?', '提示', MB_YESNO + MB_ICONWARNING) = IDYES then
  151.   begin
  152.     Index:= GetProjectCollection.IndexOf(lvProjects.Selected.Caption);
  153.     if Index <> -1 then
  154.     begin
  155.       GetProjectCollection.Items[Index].RemoveResTree;
  156.       GetProjectCollection.Delete(Index);
  157.       lvProjects.DeleteSelected;
  158.     end;
  159.   end;
  160. end;
  161. procedure TMainForm.actAddExecute(Sender: TObject);
  162. var
  163.   szProjectName, szRootDir, szDescription: string;
  164. begin
  165.   szProjectName:= '';
  166.   szRootDir:= '';
  167.   szDescription:= '';
  168.   if ShowInfoForm(szProjectName, szRootDir, szDescription) then
  169.   begin
  170.     with lvProjects.Items.Add do
  171.     begin
  172.       Caption:= szProjectName;
  173.       SubItems.Add(szRootDir);
  174.       SubItems.Add(szDescription);
  175.     end;
  176.   end;
  177. end;
  178. procedure TMainForm.actConfigExecute(Sender: TObject);
  179. begin
  180.   ShowConfigForm;
  181. end;
  182. { TProjectMgr }
  183. procedure TMainForm.RefreshProjects;
  184. var
  185.   I: Integer;
  186.   AItem: TProjectItem;
  187. begin
  188.   lvProjects.Clear;
  189.   for I:= 0 to GetProjectCollection.Count - 1 do
  190.   begin
  191.     AItem:= TProjectItem(GetProjectCollection[I]);
  192.     with lvProjects.Items.Add do
  193.     begin
  194.       Caption:= AItem.ProjectName;
  195.       SubItems.Add(AItem.RootDir);
  196.       SubItems.Add(AItem.Description);
  197.       ImageIndex:= -1;
  198.     end;
  199.   end;
  200. end;
  201. procedure TMainForm.actModifyUpdate(Sender: TObject);
  202. begin
  203.   (Sender as TAction).Enabled:= lvProjects.Selected <> nil;
  204. end;
  205. procedure TMainForm.actShowExecute(Sender: TObject);
  206. begin
  207.   TrayIcon.RestoreApp;
  208. end;
  209. procedure TMainForm.actHideExecute(Sender: TObject);
  210. begin
  211.   TrayIcon.MinimizeApp;
  212. end;
  213. end.