home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kompon / d123456 / CHEMPLOT.ZIP / TPlot / Plottooledit.pas < prev    next >
Pascal/Delphi Source File  |  2001-07-24  |  9KB  |  295 lines

  1. unit Plottooledit;
  2.  
  3. {$I Plot.inc}
  4.  
  5. {-----------------------------------------------------------------------------
  6. The contents of this file are subject to the Q Public License
  7. ("QPL"); you may not use this file except in compliance
  8. with the QPL. You may obtain a copy of the QPL from 
  9. the file QPL.html in this distribution, derived from:
  10.  
  11. http://www.trolltech.com/products/download/freelicense/license.html
  12.  
  13. The QPL prohibits development of proprietary software. 
  14. There is a Professional Version of this software available for this.
  15. Contact sales@chemware.hypermart.net for more information.
  16.  
  17. Software distributed under the QPL is distributed on an "AS IS" basis,
  18. WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the QPL for
  19. the specific language governing rights and limitations under the QPL.
  20.  
  21. The Original Code is: ToolEdit.pas, released 12 May 2001.
  22.  
  23. The Initial Developer of the Original Code is Mat Ballard.
  24. Portions created by Mat Ballard are Copyright (C) 1999 Mat Ballard.
  25. Portions created by Microsoft are Copyright (C) 1998, 1999 Microsoft Corp.
  26. All Rights Reserved.
  27.  
  28. Contributor(s): Mat Ballard                 e-mail: mat.ballard@chemware.hypermart.net.
  29.  
  30. Last Modified: 04/19/2001
  31. Current Version: 2.00
  32.  
  33. You may retrieve the latest version of this file from:
  34.  
  35.         http://Chemware.hypermart.net/
  36.  
  37. This work was created with the Project JEDI VCL guidelines:
  38.  
  39.         http://www.delphi-jedi.org/Jedi:VCLVCL
  40.  
  41. in mind.
  42.  
  43. Purpose:
  44. To facilitate user manipluation of the TPlot ToolBar.
  45.  
  46. Known Issues:
  47.         - renamed to Plottooledit.pas to avoid namespace clash with RXLib
  48. -----------------------------------------------------------------------------}
  49.  
  50. interface
  51.  
  52. uses
  53.   Classes, SysUtils,
  54. {$IFDEF WINDOWS}
  55.   WinTypes, WinProcs,
  56.   Buttons, Controls, Forms, Graphics, StdCtrls,
  57.   ExtCtrls, ToolWin, ComCtrls,
  58. {$ENDIF}
  59. {$IFDEF WIN32}
  60.   Windows,
  61.   Buttons, Controls, Forms, {Graphics, }StdCtrls,
  62.   ExtCtrls, ToolWin, ComCtrls,
  63. {$ENDIF}
  64. {$IFDEF LINUX}
  65.   QButtons, QControls, QForms, QGraphics, QStdCtrls,
  66.   QExtCtrls, QComCtrls,
  67. {$ENDIF}
  68.  
  69.   Misc, Plotdefs;
  70.  
  71. type
  72.   TToolBarEditForm = class(TForm)
  73.     HelpBitBtn: TBitBtn;
  74.     CancelBitBtn: TBitBtn;
  75.     OKBitBtn: TBitBtn;
  76.     ApplyBitBtn: TBitBtn;
  77.     {DisplayToolBar: TToolBar;}
  78.     MiddlePanel: TPanel;
  79.     {ControlToolBar: TToolBar;  }
  80.     TopPanel: TPanel;
  81.     DisplayedLabel: TLabel;
  82.     AvailableLabel: TLabel;
  83.     DisplayToolBar: TToolBar;
  84.     ControlToolBar: TToolBar;
  85.     procedure FormCreate(Sender: TObject);
  86.     procedure FormResize(Sender: TObject);
  87.     procedure ApplyBitBtnClick(Sender: TObject);
  88.   private
  89.     OriginalHeight: Integer;
  90.     FMaster: TToolBar;
  91.  
  92.     procedure ControlClick(Sender: TObject);
  93.     {procedure DisplayMouseDown(Sender: TObject;
  94.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);}
  95.  
  96.   public
  97.     procedure SetupButtons(Master: TToolBar);
  98. {$IFNDEF LANG_ENGLISH}
  99.     procedure DoCaptionsFromResource;
  100. {$ENDIF}
  101.     procedure DoHintsFromResource;
  102.   end;
  103.  
  104. var
  105.   ToolBarEditForm: TToolBarEditForm;
  106.  
  107. implementation
  108.  
  109. {$R *.dfm}
  110.  
  111. uses
  112.   Plottoolbar;
  113.  
  114. {------------------------------------------------------------------------------
  115.     Procedure: TToolBarEditForm.FormCreate
  116.   Description: standard FormCreate procedure
  117.        Author: Mat Ballard
  118.  Date created: 04/25/2001
  119. Date modified: 04/25/2001 by Mat Ballard
  120.       Purpose: sets the position
  121.  Known Issues:
  122.  ------------------------------------------------------------------------------}
  123. procedure TToolBarEditForm.FormCreate(Sender: TObject);
  124. begin
  125. {$IFNDEF LANG_ENGLISH}
  126.   DoCaptionsFromResource;
  127. {$ENDIF}
  128.   DoHintsFromResource;
  129. {$IFDEF MSWINDOWS}
  130.   Self.BorderStyle := bsSizeable;
  131. {$ENDIF}
  132. {$IFDEF LINUX}
  133.   Self.BorderStyle := fbsSizeable;
  134. {$ENDIF}
  135.   Self.Scaled := FALSE;
  136.   Self.HorzScrollBar.Visible := FALSE;
  137.   Self.VertScrollBar.Visible := FALSE;
  138.  
  139.   Self.Left := 10;
  140.   Self.Top := 10;
  141.   Self.ClientWidth := ApplyBitBtn.Left + ApplyBitBtn.Width + OkBitBtn.Left;
  142.   OriginalHeight := ApplyBitBtn.Top + 3*ApplyBitBtn.Height div 2;
  143.   Self.ClientHeight := OriginalHeight;
  144. end;
  145.  
  146. {------------------------------------------------------------------------------
  147.     Procedure: TToolBarEditForm.DoCaptionsFromResource
  148.   Description: standard loading of labels from resources
  149.        Author: Mat Ballard
  150.  Date created: 06/25/2001
  151. Date modified: 06/25/2001 by Mat Ballard
  152.       Purpose: display in different languages
  153.  Known Issues:
  154.  ------------------------------------------------------------------------------}
  155. {$IFNDEF LANG_ENGLISH}
  156. procedure TToolBarEditForm.DoCaptionsFromResource;
  157. begin
  158.   Self.Caption := sToolbar + ' ' + sEditor;
  159.   DisplayedLabel.Caption := sDisplayedButtons;
  160.   AvailableLabel.Caption := sAvailableButtons;
  161.   HelpBitBtn.Caption := sHelp;
  162.   OKBitBtn.Caption := sOK;
  163.   CancelBitBtn.Caption := sCancel;
  164.   ApplyBitBtn.Caption := sApply;
  165. end;
  166. {$ENDIF}
  167.  
  168. {------------------------------------------------------------------------------
  169.     Procedure: TToolBarEditForm.DoHintsFromResource
  170.   Description: standard loading of hints from resources
  171.        Author: Mat Ballard
  172.  Date created: 06/25/2001
  173. Date modified: 06/25/2001 by Mat Ballard
  174.       Purpose: display in different languages
  175.  Known Issues:
  176.  ------------------------------------------------------------------------------}
  177. procedure TToolBarEditForm.DoHintsFromResource;
  178. begin
  179.   ApplyBitBtn.Hint := sApplyHint;
  180. end;
  181.  
  182.  
  183. procedure TToolBarEditForm.SetupButtons(Master: TToolBar);
  184. var
  185.   i: Integer;
  186.   TempToolButton: TToolButton;
  187. begin
  188.   FMaster := Master;
  189.   DisplayToolBar.Images := FMaster.Images;
  190.   ControlToolBar.Images := FMaster.Images;
  191. {$IFDEF MSWINDOWS}
  192.   for i := FMaster.ButtonCount-1 downto 0 do
  193. {$ENDIF}
  194. {$IFDEF LINUX}
  195.   for i := 0 to FMaster.ButtonCount-1 do
  196. {$ENDIF}
  197.   begin
  198.     TempToolButton := TToolButton.Create(DisplayToolBar);
  199.     {TempToolButton.OnMouseDown := DisplayMouseDown;}
  200. {$IFDEF MSWINDOWS}
  201.     TempToolButton.Caption := FMaster.Buttons[i].Caption;
  202.     TempToolButton.Hint := FMaster.Buttons[i].Hint;
  203.     TempToolButton.ImageIndex := FMaster.Buttons[i].ImageIndex;
  204.     TempToolButton.Style := FMaster.Buttons[i].Style;
  205.     TempToolButton.Tag := i;
  206.     TempToolButton.Width := FMaster.Buttons[i].Width;
  207. {$ENDIF}
  208. {$IFDEF LINUX}
  209.     TempToolButton.Caption := TToolButton(FMaster.Controls[i]).Caption;
  210.     TempToolButton.Hint := TToolButton(FMaster.Controls[i]).Hint;
  211.     TempToolButton.ImageIndex := TToolButton(FMaster.Controls[i]).ImageIndex;
  212.     TempToolButton.Style := TToolButton(FMaster.Controls[i]).Style;
  213.     TempToolButton.Tag := TToolButton(FMaster.Controls[i]).Tag;
  214.     TempToolButton.Width := TToolButton(FMaster.Controls[i]).Width;
  215. {$ENDIF}
  216.     TempToolButton.Parent := DisplayToolBar;
  217.   end;
  218.  
  219. {$IFDEF MSWINDOWS}
  220.   for i := FMaster.ButtonCount-1 downto 0 do
  221. {$ENDIF}
  222. {$IFDEF LINUX}
  223.   for i := 0 to FMaster.ButtonCount-1 do
  224. {$ENDIF}
  225.   begin
  226.     TempToolButton := TToolButton.Create(ControlToolBar);
  227. {$IFDEF MSWINDOWS}
  228.     TempToolButton.Caption := FMaster.Buttons[i].Caption;
  229.     TempToolButton.Hint := FMaster.Buttons[i].Hint;
  230.     TempToolButton.ImageIndex := FMaster.Buttons[i].ImageIndex;
  231.     TempToolButton.Style := FMaster.Buttons[i].Style;
  232.     TempToolButton.Tag := i;
  233.     TempToolButton.Width := FMaster.Buttons[i].Width;
  234. {$ENDIF}
  235. {$IFDEF LINUX}
  236.     TempToolButton.Caption := TToolButton(FMaster.Controls[i]).Caption;
  237.     TempToolButton.Hint := TToolButton(FMaster.Controls[i]).Hint;
  238.     TempToolButton.ImageIndex := TToolButton(FMaster.Controls[i]).ImageIndex;
  239.     TempToolButton.Style := TToolButton(FMaster.Controls[i]).Style;
  240.     TempToolButton.Tag := TToolButton(FMaster.Controls[i]).Tag;
  241.     TempToolButton.Width := TToolButton(FMaster.Controls[i]).Width;
  242. {$ENDIF}
  243.     if (TempToolButton.Style = tbsButton) then
  244.       TempToolButton.Style := tbsCheck;
  245.     TempToolButton.OnClick := ControlClick;
  246.     TempToolButton.Parent := ControlToolBar;
  247.   end;
  248. end;
  249.  
  250. procedure TToolBarEditForm.ControlClick(Sender: TObject);
  251. {$IFDEF LINUX}
  252. var
  253.   TargetIndex: Integer;
  254.   i,
  255.   TheTag: Integer;
  256. {$ENDIF}
  257. begin
  258. {$IFDEF LINUX}
  259.   TargetIndex := -1;
  260. {Why do it on tags ? Because Linux does amazing things to the order !}
  261.   TheTag := TToolButton(Sender).Tag;
  262.   for i := 0 to DisplayToolBar.ButtonCount-1 do
  263.   begin
  264.     if (TToolButton(DisplayToolBar.Controls[i]).Tag = TheTag) then
  265.     begin
  266.       TargetIndex := i;
  267.       break;
  268.     end;
  269.   end;
  270.   DisplayToolBar.Controls[TargetIndex].Visible :=
  271. {$ENDIF}
  272.  
  273. {$IFDEF MSWINDOWS}
  274.   DisplayToolBar.Buttons[TToolButton(Sender).Tag].Visible :=
  275. {$ENDIF}
  276.     not TToolButton(Sender).Down;
  277. end;
  278.  
  279. procedure TToolBarEditForm.FormResize(Sender: TObject);
  280. begin
  281.   Self.ClientHeight := OriginalHeight;
  282. end;
  283.  
  284. {procedure TToolBarEditForm.DisplayMouseDown(Sender: TObject;
  285.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  286. begin
  287. end;}
  288.  
  289. procedure TToolBarEditForm.ApplyBitBtnClick(Sender: TObject);
  290. begin
  291.   TPlotToolBar(FMaster).ApplyChanges(DisplayToolBar);
  292. end;
  293.  
  294. end.
  295.