| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 | 
							- unit TB2DsgnConverter;
 
- {
 
-   Toolbar2000
 
-   Copyright (C) 1998-2005 by Jordan Russell
 
-   All rights reserved.
 
-   The contents of this file are subject to the "Toolbar2000 License"; you may
 
-   not use or distribute this file except in compliance with the
 
-   "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in
 
-   TB2k-LICENSE.txt or at:
 
-     http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt
 
-   Alternatively, the contents of this file may be used under the terms of the
 
-   GNU General Public License (the "GPL"), in which case the provisions of the
 
-   GPL are applicable instead of those in the "Toolbar2000 License". A copy of
 
-   the GPL may be found in GPL-LICENSE.txt or at:
 
-     http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt
 
-   If you wish to allow use of your version of this file only under the terms of
 
-   the GPL and not to allow others to use your version of this file under the
 
-   "Toolbar2000 License", indicate your decision by deleting the provisions
 
-   above and replace them with the notice and other provisions required by the
 
-   GPL. If you do not delete the provisions above, a recipient may use your
 
-   version of this file under either the "Toolbar2000 License" or the GPL.
 
-   $jrsoftware: tb2k/Source/TB2DsgnConverter.pas,v 1.16 2005/01/06 03:56:50 jr Exp $
 
- }
 
- interface
 
- {$I TB2Ver.inc}
 
- uses
 
-   Windows, SysUtils, Classes, Controls, Forms, Menus, StdCtrls,
 
-   TB2Item;
 
- type
 
-   TTBConverterForm = class(TForm)
 
-     MessageList: TListBox;
 
-     CloseButton: TButton;
 
-     CopyButton: TButton;
 
-     procedure CloseButtonClick(Sender: TObject);
 
-     procedure CopyButtonClick(Sender: TObject);
 
-     procedure FormClose(Sender: TObject; var Action: TCloseAction);
 
-   end;
 
- procedure DoConvert(const ParentItem: TTBCustomItem; const Owner: TComponent);
 
- implementation
 
- {$R *.DFM}
 
- uses
 
-   Clipbrd, TB2DsgnConvertOptions;
 
- procedure DoConvert(const ParentItem: TTBCustomItem; const Owner: TComponent);
 
- const
 
-   SPropNotTransferred = 'Warning: %s property not transferred on ''%s''.';
 
- var
 
-   ConverterForm: TTBConverterForm;
 
-   procedure Log(const S: String);
 
-   begin
 
-     ConverterForm.MessageList.Items.Add(S);
 
-     ConverterForm.MessageList.TopIndex := ConverterForm.MessageList.Items.Count-1;
 
-     ConverterForm.Update;
 
-   end;
 
-   procedure Recurse(MenuItem: TMenuItem; TBItem: TTBCustomItem);
 
-   var
 
-     I: Integer;
 
-     Src: TMenuItem;
 
-     IsSep, IsSubmenu: Boolean;
 
-     Dst: TTBCustomItem;
 
-     N: String;
 
-   begin
 
-     for I := 0 to MenuItem.Count-1 do begin
 
-       Src := MenuItem[I];
 
-       IsSep := (Src.Caption = '-');
 
-       IsSubmenu := False;
 
-       if not IsSep then begin
 
-         if Src.Count > 0 then
 
-           IsSubmenu := True;
 
-         if not IsSubmenu then
 
-           Dst := TTBItem.Create(Owner)
 
-         else
 
-           Dst := TTBSubmenuItem.Create(Owner);
 
-         Dst.Action := Src.Action;
 
-         Dst.AutoCheck := Src.AutoCheck;
 
-         Dst.Caption := Src.Caption;
 
-         Dst.Checked := Src.Checked;
 
-         if Src.Default then
 
-           Dst.Options := Dst.Options + [tboDefault];
 
-         Dst.Enabled := Src.Enabled;
 
-         Dst.GroupIndex := Src.GroupIndex;
 
-         Dst.HelpContext := Src.HelpContext;
 
-         Dst.ImageIndex := Src.ImageIndex;
 
-         Dst.RadioItem := Src.RadioItem;
 
-         Dst.ShortCut := Src.ShortCut;
 
-         Dst.SubMenuImages := Src.SubMenuImages;
 
-         Dst.OnClick := Src.OnClick;
 
-       end
 
-       else begin
 
-         Dst := TTBSeparatorItem.Create(Owner);
 
-       end;
 
-       Dst.Hint := Src.Hint;
 
-       Dst.Tag := Src.Tag;
 
-       Dst.Visible := Src.Visible;
 
-       if not IsSep then
 
-         { Temporarily clear the menu item's OnClick property, so that renaming
 
-           the menu item doesn't cause the function name to change }
 
-         Src.OnClick := nil;
 
-       try
 
-         N := Src.Name;
 
-         Src.Name := N + '_OLD';
 
-         Dst.Name := N;
 
-       finally
 
-         if not IsSep then
 
-           Src.OnClick := Dst.OnClick;
 
-       end;
 
-       TBItem.Add(Dst);
 
-       if @Src.OnAdvancedDrawItem <> nil then
 
-         Log(Format(SPropNotTransferred, ['OnAdvancedDrawItem', Dst.Name]));
 
-       if @Src.OnDrawItem <> nil then
 
-         Log(Format(SPropNotTransferred, ['OnDrawItem', Dst.Name]));
 
-       if @Src.OnMeasureItem <> nil then
 
-         Log(Format(SPropNotTransferred, ['OnMeasureItem', Dst.Name]));
 
-       if IsSubmenu then
 
-         Recurse(Src, Dst);
 
-     end;
 
-   end;
 
- var
 
-   OptionsForm: TTBConvertOptionsForm;
 
-   I: Integer;
 
-   C: TComponent;
 
-   Menu: TMenu;
 
- begin
 
-   Menu := nil;
 
-   OptionsForm := TTBConvertOptionsForm.Create(Application);
 
-   try
 
-     for I := 0 to Owner.ComponentCount-1 do begin
 
-       C := Owner.Components[I];
 
-       if (C is TMenu) and not(C is TTBPopupMenu) then
 
-         OptionsForm.MenuCombo.Items.AddObject(C.Name, C);
 
-     end;
 
-     if OptionsForm.MenuCombo.Items.Count = 0 then
 
-       raise Exception.Create('Could not find any menus on the form to convert');
 
-     OptionsForm.MenuCombo.ItemIndex := 0;
 
-     if (OptionsForm.ShowModal <> mrOK) or (OptionsForm.MenuCombo.ItemIndex < 0) then
 
-       Exit;
 
-     Menu := TMenu(OptionsForm.MenuCombo.Items.Objects[OptionsForm.MenuCombo.ItemIndex]);
 
-   finally
 
-     OptionsForm.Free;
 
-   end;
 
-   ParentItem.SubMenuImages := Menu.Images;
 
-   ConverterForm := TTBConverterForm.Create(Application);
 
-   ConverterForm.Show;
 
-   ConverterForm.Update;
 
-   Log(Format('Converting ''%s'', please wait...', [Menu.Name]));
 
-   ParentItem.ViewBeginUpdate;
 
-   try
 
-     Recurse(Menu.Items, ParentItem);
 
-   finally
 
-     ParentItem.ViewEndUpdate;
 
-   end;
 
-   Log('Done!');
 
-   ConverterForm.CloseButton.Enabled := True;
 
-   ConverterForm.CopyButton.Enabled := True;
 
- end;
 
- { TTBConverterForm }
 
- procedure TTBConverterForm.FormClose(Sender: TObject;
 
-   var Action: TCloseAction);
 
- begin
 
-   Action := caFree;
 
- end;
 
- procedure TTBConverterForm.CloseButtonClick(Sender: TObject);
 
- begin
 
-   Close;
 
- end;
 
- procedure TTBConverterForm.CopyButtonClick(Sender: TObject);
 
- begin
 
-   Clipboard.AsText := MessageList.Items.Text;
 
- end;
 
- procedure FreeConverterForms;
 
- var
 
-   I: Integer;
 
-   Form: TCustomForm;
 
- label Restart;
 
- begin
 
-   Restart:
 
-   for I := 0 to Screen.CustomFormCount-1 do begin
 
-     Form := Screen.CustomForms[I];
 
-     if Form is TTBConverterForm then begin
 
-       Form.Free;
 
-       goto Restart;
 
-     end;
 
-   end;
 
- end;
 
- initialization
 
- finalization
 
-   FreeConverterForms;
 
- end.
 
 
  |