| 1 |  | 
|---|
| 2 | {*****************************************************************************} | 
|---|
| 3 | {                                                                             } | 
|---|
| 4 | {    Tnt Delphi Unicode Controls                                              } | 
|---|
| 5 | {      http://www.tntware.com/delphicontrols/unicode/                         } | 
|---|
| 6 | {        Version: 2.3.0                                                       } | 
|---|
| 7 | {                                                                             } | 
|---|
| 8 | {    Copyright (c) 2002-2007, Troy Wolbrink (troy.wolbrink@tntware.com)       } | 
|---|
| 9 | {                                                                             } | 
|---|
| 10 | {*****************************************************************************} | 
|---|
| 11 |  | 
|---|
| 12 | unit TntActions_Design; | 
|---|
| 13 |  | 
|---|
| 14 | {$INCLUDE ..\Source\TntCompilers.inc} | 
|---|
| 15 |  | 
|---|
| 16 | interface | 
|---|
| 17 |  | 
|---|
| 18 | procedure Register; | 
|---|
| 19 |  | 
|---|
| 20 | implementation | 
|---|
| 21 |  | 
|---|
| 22 | uses | 
|---|
| 23 | Classes, ActnList, TntActnList, StdActns, TntStdActns, | 
|---|
| 24 | ExtActns, TntExtActns, ListActns, TntListActns, BandActn, TntBandActn, | 
|---|
| 25 | DBActns, TntDBActns, TntDesignEditors_Design; | 
|---|
| 26 |  | 
|---|
| 27 | procedure Register; | 
|---|
| 28 | begin | 
|---|
| 29 | RegisterClass(TTntAction); | 
|---|
| 30 | // StdActns | 
|---|
| 31 | RegisterClass(TTntEditAction); | 
|---|
| 32 | RegisterClass(TTntEditCut); | 
|---|
| 33 | RegisterClass(TTntEditCopy); | 
|---|
| 34 | RegisterClass(TTntEditPaste); | 
|---|
| 35 | RegisterClass(TTntEditSelectAll); | 
|---|
| 36 | RegisterClass(TTntEditUndo); | 
|---|
| 37 | RegisterClass(TTntEditDelete); | 
|---|
| 38 | RegisterClass(TTntWindowAction); | 
|---|
| 39 | RegisterClass(TTntWindowClose); | 
|---|
| 40 | RegisterClass(TTntWindowCascade); | 
|---|
| 41 | RegisterClass(TTntWindowTileHorizontal); | 
|---|
| 42 | RegisterClass(TTntWindowTileVertical); | 
|---|
| 43 | RegisterClass(TTntWindowMinimizeAll); | 
|---|
| 44 | RegisterClass(TTntWindowArrange); | 
|---|
| 45 | RegisterClass(TTntHelpAction); | 
|---|
| 46 | RegisterClass(TTntHelpContents); | 
|---|
| 47 | RegisterClass(TTntHelpTopicSearch); | 
|---|
| 48 | RegisterClass(TTntHelpOnHelp); | 
|---|
| 49 | RegisterClass(TTntHelpContextAction); | 
|---|
| 50 | RegisterClass(TTntFileOpen); | 
|---|
| 51 | RegisterClass(TTntFileOpenWith); | 
|---|
| 52 | RegisterClass(TTntFileSaveAs); | 
|---|
| 53 | RegisterClass(TTntFilePrintSetup); | 
|---|
| 54 | RegisterClass(TTntFileExit); | 
|---|
| 55 | RegisterClass(TTntSearchFind); | 
|---|
| 56 | RegisterClass(TTntSearchReplace); | 
|---|
| 57 | RegisterClass(TTntSearchFindFirst); | 
|---|
| 58 | RegisterClass(TTntSearchFindNext); | 
|---|
| 59 | RegisterClass(TTntFontEdit); | 
|---|
| 60 | RegisterClass(TTntColorSelect); | 
|---|
| 61 | RegisterClass(TTntPrintDlg); | 
|---|
| 62 | // ExtActns | 
|---|
| 63 | RegisterClass(TTntFileRun); | 
|---|
| 64 | RegisterClass(TTntRichEditAction); | 
|---|
| 65 | RegisterClass(TTntRichEditBold); | 
|---|
| 66 | RegisterClass(TTntRichEditItalic); | 
|---|
| 67 | RegisterClass(TTntRichEditUnderline); | 
|---|
| 68 | RegisterClass(TTntRichEditStrikeOut); | 
|---|
| 69 | RegisterClass(TTntRichEditBullets); | 
|---|
| 70 | RegisterClass(TTntRichEditAlignLeft); | 
|---|
| 71 | RegisterClass(TTntRichEditAlignRight); | 
|---|
| 72 | RegisterClass(TTntRichEditAlignCenter); | 
|---|
| 73 | RegisterClass(TTntPreviousTab); | 
|---|
| 74 | RegisterClass(TTntNextTab); | 
|---|
| 75 | RegisterClass(TTntOpenPicture); | 
|---|
| 76 | RegisterClass(TTntSavePicture); | 
|---|
| 77 | RegisterClass(TTntURLAction); | 
|---|
| 78 | RegisterClass(TTntBrowseURL); | 
|---|
| 79 | RegisterClass(TTntDownLoadURL); | 
|---|
| 80 | RegisterClass(TTntSendMail); | 
|---|
| 81 | RegisterClass(TTntListControlCopySelection); | 
|---|
| 82 | RegisterClass(TTntListControlDeleteSelection); | 
|---|
| 83 | RegisterClass(TTntListControlSelectAll); | 
|---|
| 84 | RegisterClass(TTntListControlClearSelection); | 
|---|
| 85 | RegisterClass(TTntListControlMoveSelection); | 
|---|
| 86 | // ListActns | 
|---|
| 87 | RegisterClass(TTntStaticListAction); | 
|---|
| 88 | RegisterClass(TTntVirtualListAction); | 
|---|
| 89 | {$IFDEF COMPILER_7_UP} | 
|---|
| 90 | RegisterClass(TTntFilePageSetup); | 
|---|
| 91 | {$ENDIF} | 
|---|
| 92 | // DBActns | 
|---|
| 93 | RegisterClass(TTntDataSetAction); | 
|---|
| 94 | RegisterClass(TTntDataSetFirst); | 
|---|
| 95 | RegisterClass(TTntDataSetPrior); | 
|---|
| 96 | RegisterClass(TTntDataSetNext); | 
|---|
| 97 | RegisterClass(TTntDataSetLast); | 
|---|
| 98 | RegisterClass(TTntDataSetInsert); | 
|---|
| 99 | RegisterClass(TTntDataSetDelete); | 
|---|
| 100 | RegisterClass(TTntDataSetEdit); | 
|---|
| 101 | RegisterClass(TTntDataSetPost); | 
|---|
| 102 | RegisterClass(TTntDataSetCancel); | 
|---|
| 103 | RegisterClass(TTntDataSetRefresh); | 
|---|
| 104 | // BandActn | 
|---|
| 105 | RegisterClass(TTntCustomizeActionBars); | 
|---|
| 106 | end; | 
|---|
| 107 |  | 
|---|
| 108 | //------------------------ | 
|---|
| 109 |  | 
|---|
| 110 | function GetTntActionClass(OldActionClass: TContainedActionClass): TContainedActionClass; | 
|---|
| 111 | begin | 
|---|
| 112 | Result := TContainedActionClass(GetClass('TTnt' + Copy(OldActionClass.ClassName, 2, Length(OldActionClass.ClassName)))); | 
|---|
| 113 | end; | 
|---|
| 114 |  | 
|---|
| 115 | type | 
|---|
| 116 | TAccessContainedAction = class(TContainedAction); | 
|---|
| 117 |  | 
|---|
| 118 | function UpgradeAction(ActionList: TTntActionList; OldAction: TContainedAction): TContainedAction; | 
|---|
| 119 | var | 
|---|
| 120 | Name: TComponentName; | 
|---|
| 121 | i: integer; | 
|---|
| 122 | NewActionClass: TContainedActionClass; | 
|---|
| 123 | begin | 
|---|
| 124 | Result := nil; | 
|---|
| 125 | if (OldAction = nil) or (OldAction.Owner = nil) or (OldAction.Name = '') then | 
|---|
| 126 | Exit; | 
|---|
| 127 |  | 
|---|
| 128 | NewActionClass := GetTntActionClass(TContainedActionClass(OldAction.ClassType)); | 
|---|
| 129 | if NewActionClass <> nil then begin | 
|---|
| 130 | // create new action | 
|---|
| 131 | Result := NewActionClass.Create(OldAction.Owner) as TContainedAction; | 
|---|
| 132 | Include(TAccessContainedAction(Result).FComponentStyle, csTransient); | 
|---|
| 133 | // copy base class info | 
|---|
| 134 | Result.ActionComponent := OldAction.ActionComponent; | 
|---|
| 135 | Result.Category := OldAction.Category; { Assign Category before ActionList/Index to avoid flicker. } | 
|---|
| 136 | Result.ActionList := ActionList; | 
|---|
| 137 | Result.Index := OldAction.Index; | 
|---|
| 138 | // assign props | 
|---|
| 139 | Result.Assign(OldAction); | 
|---|
| 140 | // point all links to this new action | 
|---|
| 141 | for i := TAccessContainedAction(OldAction).FClients.Count - 1 downto 0 do | 
|---|
| 142 | TBasicActionLink(TAccessContainedAction(OldAction).FClients[i]).Action := Result; | 
|---|
| 143 | // free old object, preserve name... | 
|---|
| 144 | Name := OldAction.Name; | 
|---|
| 145 | OldAction.Free; | 
|---|
| 146 | Result.Name := Name; { link up to old name } | 
|---|
| 147 | Exclude(TAccessContainedAction(Result).FComponentStyle, csTransient); | 
|---|
| 148 | end; | 
|---|
| 149 | end; | 
|---|
| 150 |  | 
|---|
| 151 | procedure TntActionList_UpgradeActionListItems(ActionList: TTntActionList); | 
|---|
| 152 | var | 
|---|
| 153 | DesignerNotify: IDesignerNotify; | 
|---|
| 154 | Designer: ITntDesigner; | 
|---|
| 155 | TntSelections: TTntDesignerSelections; | 
|---|
| 156 | i: integer; | 
|---|
| 157 | OldAction, NewAction: TContainedAction; | 
|---|
| 158 | begin | 
|---|
| 159 | DesignerNotify := FindRootDesigner(ActionList); | 
|---|
| 160 | if (DesignerNotify <> nil) then begin | 
|---|
| 161 | DesignerNotify.QueryInterface(ITntDesigner, Designer); | 
|---|
| 162 | if (Designer <> nil) then begin | 
|---|
| 163 | TntSelections := TTntDesignerSelections.Create; | 
|---|
| 164 | try | 
|---|
| 165 | Designer.GetSelections(TntSelections); | 
|---|
| 166 | for i := ActionList.ActionCount - 1 downto 0 do begin | 
|---|
| 167 | OldAction := ActionList.Actions[i]; | 
|---|
| 168 | NewAction := UpgradeAction(ActionList, OldAction); | 
|---|
| 169 | if (NewAction <> nil) then | 
|---|
| 170 | TntSelections.ReplaceSelection(OldAction, NewAction); | 
|---|
| 171 | end; | 
|---|
| 172 | Designer.SetSelections(TntSelections); | 
|---|
| 173 | finally | 
|---|
| 174 | TntSelections.Free; | 
|---|
| 175 | end; | 
|---|
| 176 | end; | 
|---|
| 177 | end; | 
|---|
| 178 | end; | 
|---|
| 179 |  | 
|---|
| 180 | initialization | 
|---|
| 181 | UpgradeActionListItemsProc := TntActionList_UpgradeActionListItems; | 
|---|
| 182 |  | 
|---|
| 183 | end. | 
|---|