📄 udiagramform.pas
字号:
{ JADD - Just Another DelphiDoc: Documentation from Delphi Source Code
Copyright (C) 2004-2008 Gerold Veith
This file is part of JADD - Just Another DelphiDoc.
DelphiDoc is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as
published by the Free Software Foundation.
DelphiDoc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
}
unit UDiagramForm;
{Contains a form, ~[link TFormDiagram], to create and edit diagrams basing on
the parsed data. }
interface
uses
Windows, SysUtils, Classes, IniFiles,
{$IFNDEF LINUX}
Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, ExtCtrls, ToolWin,
ImgList, StdCtrls, Messages,
{$ELSE}
QForms, QMenus, QTypes, QControls, QGraphics, QDialogs, QComCtrls, QExtCtrls,
QImgList, QStdCtrls, Qt,
{$ENDIF}
UBaseIdents,
UDiagram,
USelectParsedDirectory;
type
{ * * * *** * * * *** TDrawControl *** * * * *** * * * }
{A simple control to paint the current pane of the diagram, but also with the
general events not available in TPaintBox or TImage, like OnResize, and a
handle to drag inside the component. }
TDrawControl = class(TCustomControl)
private
//call-back procedure to call when painting is needed
FOnPaint: TNotifyEvent;
protected
//Calls FOnPaint if painting is needed.
procedure Paint; override;
public
//Creates the control and initializes some options.
constructor Create(AOwner: TComponent); override;
property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
property Canvas;
end;
{ * * * *** * * * *** TFormDiagram *** * * * *** * * * }
//pointer to a method to add or remove a box to/from the diagram, used to
//pass the method of that type with an untyped pointer
PHandleAddRemoveDataProc = ^THandleAddRemoveDataProc;
{A form to show and edit diagrams based on the parsed data. }
TFormDiagram = class(TForm)
ImageList: TImageList;
StatusBar: TStatusBar;
TreeView: TTreeView;
PanelSplit: TPanel;
Panel: TPanel;
ScrollBarVertical: TScrollBar;
ScrollBarHorizontal: TScrollBar;
PopupMenu: TPopupMenu;
MenuItemPopUpRemoveSelected: TMenuItem;
MenuItemPopUpSelectAll: TMenuItem;
MenuItemPopUpSelectNothing: TMenuItem;
MenuItemPopUpInverseSelection: TMenuItem;
MenuItemPopUpByModule: TMenuItem;
MenuItemPopUpRemoveClassesInImplementation: TMenuItem;
MenuItemPopUpSeparator1: TMenuItem;
MenuItemPopUpAddAllFiles: TMenuItem;
MenuItemPopUpAddFile: TMenuItem;
MenuItemPopUpAddAllUsedFilesInInterface: TMenuItem;
MenuItemPopUpAddAllUsedFiles: TMenuItem;
MenuItemPopUpAddClassAndDescendants: TMenuItem;
MenuItemPopUpAddAllClassesInTheFile: TMenuItem;
MenuItemPopUpAddAllClassesInTheFileAndDescendants: TMenuItem;
MenuItemPopUpAddAllClasses: TMenuItem;
MenuItemPopUpAddClass: TMenuItem;
MenuItemPopUpAddImplementedInterfaces: TMenuItem;
MenuItemPopUpAddImplementedAndInheritedInterfaces: TMenuItem;
MenuItemPopUpAddClassesImplementingInterface: TMenuItem;
MenuItemPopUpAddClassesImplementingInterfaceOrDescendant: TMenuItem;
MenuItemPopUpAddAllUsedClasses: TMenuItem;
MenuItemPopUpSeparator2: TMenuItem;
MenuItemPopUpRemoveAllFiles: TMenuItem;
MenuItemPopUpRemoveFile: TMenuItem;
MenuItemPopUpRemoveAllUsedFilesInInterface: TMenuItem;
MenuItemPopUpRemoveAllUsedFiles: TMenuItem;
MenuItemPopUpRemoveAllClassesInTheFile: TMenuItem;
MenuItemPopUpRemoveAllClassesInTheFileAndDescendants: TMenuItem;
MenuItemPopUpRemoveAllClasses: TMenuItem;
MenuItemPopUpRemoveClass: TMenuItem;
MenuItemPopUpRemoveClassAndDescendants: TMenuItem;
MenuItemPopUpRemoveImplementedInterfaces: TMenuItem;
MenuItemPopUpRemoveImplementedAndInheritedInterfaces: TMenuItem;
MenuItemPopUpRemoveClassesImplementingInterface: TMenuItem;
MenuItemPopUpRemoveClassesImplementingInterfaceOrDescendant: TMenuItem;
MenuItemPopUpRemoveAllUsedClasses: TMenuItem;
MenuItemPopUpSeparator3: TMenuItem;
MenuItemPopUpGoToInheritanceTree: TMenuItem;
MenuItemPopUpGoToFile: TMenuItem;
MenuItemPopUpExpandAll: TMenuItem;
MenuItemPopUpCollapseAll: TMenuItem;
MainMenu: TMainMenu;
MenuItemDiagrams: TMenuItem;
MenuItemLoadDiagramLayouts: TMenuItem;
MenuItemSaveDiagramLayouts: TMenuItem;
MenuItemDiagramsSeparator: TMenuItem;
MenuItemClose: TMenuItem;
MenuItemLayout: TMenuItem;
MenuItemNewClassDiagram: TMenuItem;
MenuItemNewFileDiagram: TMenuItem;
MenuItemLayoutSeparator1: TMenuItem;
MenuItemSetLayout: TMenuItem;
MenuItemResetLayout: TMenuItem;
MenuItemRenameLayout: TMenuItem;
MenuItemDeleteLayout: TMenuItem;
MenuItemLayoutSeparator2: TMenuItem;
MenuItemExportAsBitmap: TMenuItem;
MenuItemExportAsPNG: TMenuItem;
MenuItemExportAsWindowsMetaFile: TMenuItem;
MenuItemExportAsScalableVectorGraphics: TMenuItem;
MenuItemLinksInScalableVectorGraphics: TMenuItem;
MenuItemSVGNoLinks: TMenuItem;
MenuItemLinksForHTMLGenerator: TMenuItem;
MenuItemLinksForHTMLGeneratorWithoutSubDirectories: TMenuItem;
MenuItemLinksForHTMLGeneratorWithSubDirectoriesForFiles: TMenuItem;
MenuItemLinksForHTMLGeneratorWithSubDirectoriesForFilesClasses: TMenuItem;
MenuItemLayoutSeparator3: TMenuItem;
MenuItemExportHTMLImageMap: TMenuItem;
MenuItemCopyInlineCommandImage: TMenuItem;
MenuItemDiagramList: TMenuItem;
MenuItemUnsavedLayout: TMenuItem;
MenuItemView: TMenuItem;
MenuItemToolBar: TMenuItem;
MenuItemStatusBar: TMenuItem;
MenuItemZoomWindow: TMenuItem;
ControlBar: TControlBar;
ToolBarGeneral: TToolBar;
ToolButtonZoomWindow: TToolButton;
ToolButtonSeparatorGeneral1: TToolButton;
ToolButtonEditMargin: TToolButton;
ToolButtonFont: TToolButton;
ToolButtonModules: TToolButton;
ToolButtonSeparatorFiles2: TToolButton;
ToolButtonFileNamesInClasses: TToolButton;
ToolButtonAssociations: TToolButton;
ToolButtonUsingImplementation: TToolButton;
ToolButtonSeparatorFiles1: TToolButton;
ToolButtonScopePrivate: TToolButton;
ToolButtonScopeProtected: TToolButton;
ToolButtonScopePublic: TToolButton;
ToolButtonScopePublished: TToolButton;
ToolButtonScopeAutomated: TToolButton;
ToolButtonSeparatorClasses2: TToolButton;
ToolButtonMemberField: TToolButton;
ToolButtonMemberProperty: TToolButton;
ToolButtonMemberMethod: TToolButton;
ToolButtonRecords: TToolButton;
ToolButtonObjects: TToolButton;
ToolButtonClasses: TToolButton;
ToolButtonInterfaces: TToolButton;
ToolButtonDispatchInterfaces: TToolButton;
ToolButtonSeparatorClasses3: TToolButton;
ToolButtonShowFunctionReturnType: TToolButton;
ToolButtonShowMethodParameter: TToolButton;
ToolButtonClassesNotInInterface: TToolButton;
ToolButtonSeparatorGeneral2: TToolButton;
ComboBoxFont: TComboBox;
ToolButtonSeparatorGeneral4: TToolButton;
ComboBoxFontSize: TComboBox;
UpDownFontSize: TUpDown;
ToolButtonSeparatorGeneral3: TToolButton;
ToolButtonAutoLayOut: TToolButton;
ToolButtonAutoSimpleLayOut: TToolButton;
ToolButtonAutoSimpleClassLayOutOptimized: TToolButton;
ToolBarClasses: TToolBar;
ToolBarFiles: TToolBar;
ToolButtonSeparatorClasses1: TToolButton;
procedure FormShow(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure StatusBarDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
procedure TreeViewChange(Sender: TObject; Node: TTreeNode);
procedure TreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure PanelSplitMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure PanelSplitMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure ScrollBarChange(Sender: TObject);
procedure PopupMenuPopup(Sender: TObject);
procedure MenuItemPopUpRemoveSelectedClick(Sender: TObject);
procedure MenuItemPopUpChangeSelectionClick(Sender: TObject);
procedure MenuItemPopUpByModuleClick(Sender: TObject);
procedure MenuItemPopUpRemoveClassesInImplementationClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveAllFilesClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveFileClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveAllUsedFilesClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveAllClassesInTheFileClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveAllClassesInTheFileAndDescendantsClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveAllClassesClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveClassClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveClassAndDescendantsClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveImplementedInterfacesClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveImplementedAndInheritedInterfacesClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveClassesImplementingInterfaceClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveClassesImplementingInterfaceOrDescendantClick(Sender: TObject);
procedure MenuItemPopUpAddRemoveAllUsedClassesClick(Sender: TObject);
procedure MenuItemPopUpGoToInheritanceTreeClick(Sender: TObject);
procedure MenuItemPopUpGoToFileClick(Sender: TObject);
procedure MenuItemPopUpExpandAllClick(Sender: TObject);
procedure MenuItemPopUpCollapseAllClick(Sender: TObject);
procedure ToolButtonZoomWindowClick(Sender: TObject);
procedure ToolButtonEditMarginClick(Sender: TObject);
procedure ToolButtonFontClick(Sender: TObject);
procedure ToolButtonModulesClick(Sender: TObject);
procedure ToolButtonFileNamesInClassesClick(Sender: TObject);
procedure ToolButtonAssociationsClick(Sender: TObject);
procedure ToolButtonUsingImplementationClick(Sender: TObject);
procedure ToolButtonScopeClick(Sender: TObject);
procedure ToolButtonMemberClick(Sender: TObject);
procedure ToolButtonShowClassesClick(Sender: TObject);
procedure ToolButtonShowFunctionReturnTypeClick(Sender: TObject);
procedure ToolButtonShowMethodParameterClick(Sender: TObject);
procedure ToolButtonClassesNotInInterfaceClick(Sender: TObject);
procedure ComboBoxFontChange(Sender: TObject);
procedure ComboBoxFontSizeChange(Sender: TObject);
procedure ToolButtonAutoLayOutClick(Sender: TObject);
procedure ToolButtonAutoSimpleLayOutClick(Sender: TObject);
procedure MenuItemLayoutClick(Sender: TObject);
procedure MenuItemDiagramListClick(Sender: TObject);
procedure MenuItemViewClick(Sender: TObject);
procedure MenuItemLoadDiagramLayoutsClick(Sender: TObject);
procedure MenuItemSaveDiagramLayoutsClick(Sender: TObject);
procedure MenuItemCloseClick(Sender: TObject);
procedure MenuItemNewDiagramClick(Sender: TObject);
procedure MenuItemSetLayoutClick(Sender: TObject);
procedure MenuItemResetLayoutClick(Sender: TObject);
procedure MenuItemRenameLayoutClick(Sender: TObject);
procedure MenuItemDeleteLayoutClick(Sender: TObject);
procedure MenuItemExportAsBitmapClick(Sender: TObject);
procedure MenuItemExportAsPNGClick(Sender: TObject);
procedure MenuItemExportAsWindowsMetaFileClick(Sender: TObject);
procedure MenuItemExportAsScalableVectorGraphicsClick(Sender: TObject);
procedure MenuItemLinksInScalableVectorGraphicsClick(Sender: TObject);
procedure MenuItemLinksInSVGFilesClick(Sender: TObject);
procedure MenuItemExportHTMLImageMapClick(Sender: TObject);
procedure MenuItemCopyInlineCommandImageClick(Sender: TObject);
procedure MenuItemToolBarClick(Sender: TObject);
procedure MenuItemStatusBarClick(Sender: TObject);
private
//the parsed data to use for the diagrams
FFiles: TFileList;
//the current diagram to show and edit
FDiagram: TDiagram;
//what kinds of links should be included in exported SVG image files
FSVGImageLinkKind: TSVGImageLinkKind;
//the control to show and edit the diagram
FDrawControl: TDrawControl;
//position when starting scrolling the diagram with the middle button
FScrollPosition: TPoint;
//the node in the tree view that has been clicked and used to pop-up the
//context menu
FMenuTreeNode: TTreeNode;
//position of the bottom left corner of this formular, used to move the
//zoom window, if this position changes
FOldBottomRight: TPoint;
//the window to show a zoomed map of the diagram for a better overview
FZoomWindow: TForm;
//if one of the diagrams has been changed and so the layouts need to be
//saved
FTotalChanged: Boolean;
//the set of diagrams in the layout
FDiagramSet: TMemIniFile;
//index of the currently selected diagram in ~[link FDiagramSet]
FCurrentDiagramIndex: Integer;
//name of the section of the currently selected diagram to save it
FSaveSectionName: String;
//the action to execute in call back ~[link HandleAction]
FDirectoryAction: TDiagramDirectoryAction;
//the files to handle in call back ~[link HandleAction]
FActionFiles: TList;
{$IFNDEF LINUX}
//Called when the size of the font is changed with the up- or down-button.
procedure UpDownFontSizeClick(Sender: TObject; Button: TUDBtnType);
{$ENDIF}
{$IFNDEF LINUX}
//When minimized minimize the whole application, like the main form does.
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
//Used to keep track of the bottom left corner.
procedure WMMove(var Message: TWMMove); message WM_MOVE;
{$ENDIF}
//Called when the bottom left corner changed its position, used to
//move the zoom window accordingly if needed.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -