IDE: menu designer:

- The Checkmark and RadioItem dialog has been removed.
- A new groupbox in the side panel reports on GroupIndex values for each submenu (if relevant).
- Unnecessary resourcestrings in the original patch have been removed.
- Fake insertion entry has been implemented with self-descriptive texts and removal of the patterned background.
Issue #29205, by Howard Page-Clark

git-svn-id: trunk@51252 -
This commit is contained in:
ondrej 2016-01-11 15:04:44 +00:00
parent 12677f044a
commit d1790be9f0
4 changed files with 418 additions and 719 deletions

View File

@ -1,12 +1,12 @@
object MenuDesigner: TMenuDesigner
Left = 846
Height = 345
Top = 497
Left = 504
Height = 400
Top = 291
Width = 730
Caption = 'MenuDesigner'
ClientHeight = 345
ClientHeight = 400
ClientWidth = 730
Constraints.MinHeight = 345
Constraints.MinHeight = 400
Constraints.MinWidth = 730
KeyPreview = True
OnCreate = FormCreate
@ -16,12 +16,12 @@ object MenuDesigner: TMenuDesigner
LCLVersion = '1.7'
object LeftPanel: TPanel
Left = 0
Height = 345
Height = 400
Top = 0
Width = 204
Align = alLeft
AutoSize = True
ClientHeight = 345
ClientHeight = 400
ClientWidth = 204
Constraints.MinHeight = 345
Constraints.MinWidth = 204
@ -258,16 +258,64 @@ object MenuDesigner: TMenuDesigner
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = LeftPanel
AnchorSideBottom.Side = asrBottom
Left = 13
Left = 7
Height = 25
Top = 307
Top = 368
Width = 75
Anchors = [akLeft, akBottom]
BorderSpacing.Around = 12
BorderSpacing.Around = 6
DefaultCaption = True
Kind = bkHelp
OnClick = HelpButtonClick
TabOrder = 2
end
object SubmenuGroupBox: TGroupBox
AnchorSideLeft.Control = LeftPanel
AnchorSideTop.Control = StatisticsGroupBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = LeftPanel
AnchorSideRight.Side = asrBottom
Left = 7
Height = 64
Top = 254
Width = 190
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
Caption = 'SubmenuGroupBox'
ClientHeight = 44
ClientWidth = 186
TabOrder = 3
object GroupIndexLabel: TLabel
AnchorSideLeft.Control = SubmenuGroupBox
AnchorSideTop.Control = RadioGroupsLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = SubmenuGroupBox
AnchorSideRight.Side = asrBottom
Left = 12
Height = 15
Top = 27
Width = 168
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
Caption = 'GroupIndexLabel'
ParentColor = False
end
object RadioGroupsLabel: TLabel
AnchorSideLeft.Control = SubmenuGroupBox
AnchorSideTop.Control = SubmenuGroupBox
AnchorSideRight.Control = SubmenuGroupBox
AnchorSideRight.Side = asrBottom
Left = 12
Height = 15
Top = 6
Width = 168
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
Caption = 'RadioGroupsLabel'
ParentColor = False
end
end
end
end

View File

@ -44,14 +44,17 @@ type
CaptionedItemsCountLabel: TLabel;
DeepestNestingLevelLabel: TLabel;
DeleteItemButton: TSpeedButton;
GroupIndexLabel: TLabel;
HelpButton: TBitBtn;
IconCountLabel: TLabel;
LeftPanel:TPanel;
MoveItemDownButton: TSpeedButton;
MoveItemUpButton: TSpeedButton;
PopupAssignmentsCountLabel: TLabel;
RadioGroupsLabel: TLabel;
ShortcutItemsCountLabel: TLabel;
LeftPanel:TPanel;
StatisticsGroupBox: TGroupBox;
SubmenuGroupBox: TGroupBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure HelpButtonClick(Sender: TObject);
@ -78,13 +81,13 @@ type
anIconCount, anAccelCount: integer): integer;
function GetPopupAssignmentCount: integer;
function GetSelectedMenuComponent(const aSelection: TPersistentSelectionList;
out isTMenu: boolean; out selCount: integer): TPersistent;
out isTMenu: boolean; out isTMenuItem: boolean): TPersistent;
procedure DisableGUI;
procedure EnableGUI(selectedIsNil: boolean);
procedure HidePopupAssignmentsInfo;
procedure InitializeStatisticVars;
procedure LoadFixedButtonGlyphs;
procedure OnDesignerSetSelection(const ASelection: TPersistentSelectionList);
procedure HidePopupAssignmentsInfo;
procedure SetupPopupAssignmentsDisplay;
public
procedure LoadVariableButtonGlyphs(isInMenubar: boolean);
@ -93,6 +96,7 @@ type
procedure UpdateShortcutList(includeAccelerators: boolean=False);
procedure UpdateStatistics;
procedure UpdateTemplatesCount;
procedure UpdateSubmenuGroupBox(selMI: TMenuItem; selBox: TShadowBox; boxIsRoot:boolean);
procedure BeginUpdate;
procedure EndUpdate;
function IsUpdate: Boolean;
@ -203,35 +207,32 @@ procedure TMenuDesigner.OnDesignerSetSelection(const ASelection: TPersistentSele
var
mnu: TMenu;
mi, tmp: TMenuItem;
selCount: integer;
isTMenu: boolean;
isTMenu, isTMenuItem: boolean;
persist: TPersistent;
begin
if FUpdateCount > 0 then
Exit; // This event will be executed after all updates, look at EndUpdate
persist:=GetSelectedMenuComponent(ASelection, isTMenu, selCount);
persist:=GetSelectedMenuComponent(ASelection, isTMenu, isTMenuItem);
if (persist <> nil) then
begin
case isTMenu of
True: SetMenu(TMenu(persist), nil);
False:begin
mi:=TMenuItem(persist);
tmp:=mi;
while (tmp.Parent <> nil) do
tmp:=tmp.Parent;
mnu:=tmp.Menu;
if (mnu = nil) then
mnu:=mi.GetParentMenu;
if (mnu = FEditedMenu) and (FShadowMenu <> nil) then
FShadowMenu.SetSelectedMenuItem(mi, True, False)
else if (mnu <> nil) then
SetMenu(mnu, mi);
end;
if isTMenu then
SetMenu(TMenu(persist), nil)
else if isTMenuItem then begin
mi:=TMenuItem(persist);
tmp:=mi;
while (tmp.Parent <> nil) do
tmp:=tmp.Parent;
mnu:=tmp.Menu;
if (mnu = nil) then
mnu:=mi.GetParentMenu;
if (mnu = FEditedMenu) and (FShadowMenu <> nil) then
FShadowMenu.SetSelectedMenuItem(mi, True, False)
else if (mnu <> nil) then
SetMenu(mnu, mi);
end;
end
else if (selCount = 1) then // persist = nil, i.e. no menu component selected, maybe this never happens?
SetMenu(nil, nil);
else SetMenu(nil, nil);
end;
procedure TMenuDesigner.ShowPopupAssignmentsInfo;
@ -245,8 +246,8 @@ begin
PopupAssignmentsCountLabel.BorderSpacing.Bottom:=0
else PopupAssignmentsCountLabel.BorderSpacing.Bottom:=Double_Margin;
if (count= -1) then
PopupAssignmentsCountLabel.Caption:=lisMenuEditorPopupAssignmentsNA
else PopupAssignmentsCountLabel.Caption:=Format(lisMenuEditorPopupAssignmentsD, [count]);
PopupAssignmentsCountLabel.Caption:=Format(lisMenuEditorPopupAssignmentsS,[lisMenuEditorNA])
else PopupAssignmentsCountLabel.Caption:=Format(lisMenuEditorPopupAssignmentsS, [IntToStr(count)]);
if (count > 0) then begin
FPopupAssignmentsListBox.Items.Assign(FPopupAssignments);
FPopupAssignmentsListBox.Visible:=True;
@ -258,7 +259,7 @@ end;
procedure TMenuDesigner.HidePopupAssignmentsInfo;
begin
if (FEditedMenu <> nil) and (FEditedMenu is TMainMenu) then begin
PopupAssignmentsCountLabel.Caption:=lisMenuEditorPopupAssignmentsNA;
PopupAssignmentsCountLabel.Caption:=Format(lisMenuEditorPopupAssignmentsS,[lisMenuEditorNA]);
PopupAssignmentsCountLabel.Enabled:=False;
FPopupAssignmentsListBox.Visible:=False;
end;
@ -334,24 +335,29 @@ begin
end;
function TMenuDesigner.GetSelectedMenuComponent(const aSelection: TPersistentSelectionList;
out isTMenu: boolean; out selCount: integer): TPersistent;
out isTMenu: boolean; out isTMenuItem: boolean): TPersistent;
begin
Result:=nil;
selCount:=aSelection.Count;
if (selCount = 1) then
begin
if (aSelection.Items[0] is TMenu) then
begin
isTMenu:=True;
Result:=aSelection.Items[0];
end
else
if (aSelection.Items[0] is TMenuItem) then
begin
isTMenu:=False;
Result:=aSelection.Items[0];
end
if (aSelection.Count = 1) then begin
if (aSelection.Items[0] is TMenu) then
begin
isTMenu:=True;
isTMenuItem:=False;
Result:=aSelection.Items[0];
end
else
if (aSelection.Items[0] is TMenuItem) then
begin
isTMenu:=False;
isTMenuItem:=True;
Result:=aSelection.Items[0];
end
else begin
isTMenu:=False;
isTMenuItem:=False;
Result:=nil;
end;
end
else Result:=nil;
end;
function TMenuDesigner.GetPopupAssignmentCount: integer;
@ -399,22 +405,22 @@ end;
procedure TMenuDesigner.LoadVariableButtonGlyphs(isInMenubar: boolean);
begin
case isInMenubar of
True: begin
MoveItemUpButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_left');
MoveItemDownButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_right');
AddItemAboveButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_left');
AddItemBelowButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_right');
AddSubMenuButton.LoadGlyphFromResourceName(HINSTANCE,'add_submenu_below');
end;
False: begin
MoveItemUpButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_up');
MoveItemDownButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_down');
AddItemAboveButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_above');
AddItemBelowButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_below');
AddSubMenuButton.LoadGlyphFromResourceName(HINSTANCE,'add_submenu_right');
end;
if isInMenubar then
begin
MoveItemUpButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_left');
MoveItemDownButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_right');
AddItemAboveButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_left');
AddItemBelowButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_right');
AddSubMenuButton.LoadGlyphFromResourceName(HINSTANCE,'add_submenu_below');
end else
begin
MoveItemUpButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_up');
MoveItemDownButton.LoadGlyphFromResourceName(HINSTANCE,'arrow_down');
AddItemAboveButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_above');
AddItemBelowButton.LoadGlyphFromResourceName(HINSTANCE,'add_item_below');
AddSubMenuButton.LoadGlyphFromResourceName(HINSTANCE,'add_submenu_right');
end;
UpdateSubmenuGroupBox(nil, nil, False);
FVariableGlyphsInMenuBar:=isInMenubar;
end;
@ -461,17 +467,18 @@ begin
if FGUIEnabled then begin
StatisticsGroupBox.Font.Style:=[];
StatisticsGroupBox.Caption:=lisMenuEditorNoMenuSelected;
CaptionedItemsCountLabel.Caption:=lisMenuEditorCaptionedItemsNA;
ShortcutItemsCountLabel.Caption:=lisMenuEditorShortcutItemsNA;
IconCountLabel.Caption:=lisMenuEditorItemsWithIconNA;
DeepestNestingLevelLabel.Caption:=lisMenuEditorDeepestNestedMenuLevelNA;
PopupAssignmentsCountLabel.Caption:=lisMenuEditorPopupAssignmentsNA;
CaptionedItemsCountLabel.Caption:=Format(lisMenuEditorCaptionedItemsS,[lisMenuEditorNA]);
ShortcutItemsCountLabel.Caption:=Format(lisMenuEditorShortcutItemsS,[lisMenuEditorNA]);
IconCountLabel.Caption:=Format(lisMenuEditorItemsWithIconS, [lisMenuEditorNA]);
DeepestNestingLevelLabel.Caption:=Format(lisMenuEditorDeepestNestedMenuLevelS, [lisMenuEditorNA]);
PopupAssignmentsCountLabel.Caption:=Format(lisMenuEditorPopupAssignmentsS,[lisMenuEditorNA]);
StatisticsGroupBox.Enabled:=False;
UpdateSubmenuGroupBox(nil, nil, False);
ButtonsGroupBox.Enabled:=False;
FPopupAssignmentsListBox.Visible:=False;
FGUIEnabled:=False;
InitializeStatisticVars;
Caption:=lisMenuEditorMenuEditorNoMenuIsSelected;
Caption:=Format('%s - %s',[lisMenuEditorMenuEditor, lisMenuEditorNoMenuSelected]);
end;
end;
@ -482,8 +489,12 @@ var
begin
if (aMenu = nil) then begin
DisableGUI;
FShadowMenu.SelectedMenuItem:=nil;
if Assigned(GlobalDesignHook) then
GlobalDesignHook.RemoveAllHandlersForObject(FShadowMenu);
FreeAndNil(FShadowMenu);
FEditedMenu:=nil;
Application.ProcessMessages;
end
else
begin
@ -528,24 +539,24 @@ begin
if (FCaptionedItemsCount <> captions) then begin
FCaptionedItemsCount:=captions;
CaptionedItemsCountLabel.Caption:=
Format(lisMenuEditorCaptionedItemsD, [FCaptionedItemsCount]);
Format(lisMenuEditorCaptionedItemsS, [IntToStr(captions)]);
end;
if (FShortcutMenuItemsCount <> shortcuts) then begin
FShortcutMenuItemsCount:=shortcuts;
ShortcutItemsCountLabel.Caption:=
Format(lisMenuEditorShortcutItemsD, [FShortcutMenuItemsCount]);
Format(lisMenuEditorShortcutItemsS, [IntToStr(FShortcutMenuItemsCount)]);
end;
if (FIconsCount <> icons) then begin
FIconsCount:=icons;
IconCountLabel.Caption:=
Format(lisMenuEditorItemsWithIconD, [FIconsCount]);
Format(lisMenuEditorItemsWithIconS, [IntToStr(FIconsCount)]);
end;
if (FAcceleratorMenuItemsCount <> accels) then
FAcceleratorMenuItemsCount:=accels;
tmp:=GetNestingLevelDepth(FEditedMenu);
if (FDeepestNestingLevel <> tmp) then begin
DeepestNestingLevelLabel.Caption:=
Format(lisMenuEditorDeepestNestedMenuLevelD, [tmp]);
Format(lisMenuEditorDeepestNestedMenuLevelS, [IntToStr(tmp)]);
FDeepestNestingLevel:=tmp;
end;
StatisticsGroupBox.Invalidate;
@ -587,6 +598,47 @@ begin
Result := FUpdateCount > 0;
end;
procedure TMenuDesigner.UpdateSubmenuGroupBox(selMI: TMenuItem;
selBox: TShadowBox; boxIsRoot: boolean);
begin
if SubmenuGroupBox = nil then
Exit;
if (selMI = nil) then begin
SubmenuGroupBox.Caption:=lisMenuEditorNoMenuSelected;
RadioGroupsLabel.Caption:='';
GroupIndexLabel.Caption:='';
end
else begin
selBox.LastRIValue:=selMI.RadioItem;
if boxIsRoot then
SubmenuGroupBox.Caption:=Format('%s',[lisMenuEditorRootMenu])
else SubmenuGroupBox.Caption:=Format('%s %s',[selBox.ParentMenuItem.Name, lisMenuEditorSubmenu]);
if selMI.RadioItem then begin
GroupIndexLabel.Caption:=Format(lisMenuEditorSGroupIndexD,
[selMI.Name, selMI.GroupIndex]);
GroupIndexLabel.Enabled:=True;
end
else begin
GroupIndexLabel.Caption:=Format(lisMenuEditorSIsNotARadioitem,
[selMI.Name]);
GroupIndexLabel.Enabled:=False;
end;
if selBox.HasRadioItems then begin
RadioGroupsLabel.Caption:=Format(lisMenuEditorGroupIndexValueSS,
[selBox.RadioGroupsString]);
RadioGroupsLabel.Enabled:=True;
end
else begin
RadioGroupsLabel.Caption:=lisMenuEditorNoRadioitemsInThisMenu;
RadioGroupsLabel.Enabled:=False;
RadioGroupsLabel.Invalidate; //for some reason this seems necessary
end;
end;
end;
{ TMainMenuComponentEditor}
procedure TMainMenuComponentEditor.Edit;
@ -602,7 +654,7 @@ end;
function TMainMenuComponentEditor.GetVerb(Index: Integer): string;
begin
case Index of
0: Result:=lisMenuEditor;
0: Result:=lisMenuEditorMenuEditor + ' ...';
else Result:='';
end;
end;

File diff suppressed because it is too large Load Diff

View File

@ -52,6 +52,10 @@ resourcestring
lisChange = 'Change';
lisDelete = 'Delete';
lisBtnDelete = '&Delete';
lisMenuEditorGroupIndexValueSS = 'GroupIndex value(s): %s';
lisMenuEditorNoRadioitemsInThisMenu = 'no radioitems in this menu';
lisMenuEditorSGroupIndexD = '%s.GroupIndex: %d';
lisMenuEditorSIsNotARadioitem = '%s is not a radioitem';
lisRemove = 'Remove';
lisBtnRemove = '&Remove';
lisRename = 'Rename';
@ -4660,7 +4664,6 @@ resourcestring
lisSuccessfullyExported = 'Successfully exported to "%s".';
// menu editor
lisMenuEditor = 'Menu Editor ...';
lisMenuEditorMenuEditor = 'Menu Editor';
lisMenuEditorAcceleratorKeySNeedsChanging = 'Accelerator(&&) key "%s" needs changing ';
lisMenuEditorAComponentWithNameExists = 'A component with the name %s already exists';
@ -4668,17 +4671,11 @@ resourcestring
lisMenuEditorAddANewItemAfterSelectedItem = 'Add a new item after selected item';
lisMenuEditorAddANewItemBeforeSelectedItem = 'Add a new item before selected item';
lisMenuEditorAddANewItemBelowSelectedItem = 'Add a new item below selected item';
lisMenuEditorAddAnIconFromTheMenuSImageList = 'Add an icon from the menu''s ImageList';
lisMenuEditorAddAnOnClickEventToSelectedItem = 'Add an OnClick event to selected item';
lisMenuEditorAddASeparatorAfterSelectedItem = 'Add a separator after selected item';
lisMenuEditorAddASeparatorBeforeSelectedItem = 'Add a separator before selected item';
lisMenuEditorAddASubmenuAtTheRightOfSelectedItem = 'Add a submenu at the right of selected item';
lisMenuEditorAddASubmenuBelowSelectedItem = 'Add a submenu below selected item';
lisMenuEditorAddFromTemplate = '&Add from template ...';
lisMenuEditorAddIconFromS = 'Add icon from %s';
lisMenuEditorAddIconFromS2 = 'Add icon from %s ...';
lisMenuEditorAddImagelistIcon = 'Add imagelist &icon';
lisMenuEditorAddImagelistIcon2 = 'Add imagelist icon';
lisMenuEditorAddNewItemAbove = '&Add new item above';
lisMenuEditorAddNeWItemAfter = 'Add ne&w item after';
lisMenuEditorAddNewItemBefore = '&Add new item before';
@ -4701,9 +4698,7 @@ resourcestring
lisMenuEditorBasicWindowMenuTemplate = '&Window,Basic window menu,' +
'&New Window,,&Tile,,&Cascade,,&Arrange all,,-,,&Hide,,&Show,,';
lisMenuEditorCaption = 'Caption';
lisMenuEditorCaptionCannotBeBlank = 'Caption cannot be blank';
lisMenuEditorCaptionedItemsD = 'Captioned items: %d';
lisMenuEditorCaptionedItemsNA = 'Captioned items: n/a';
lisMenuEditorCaptionedItemsS = 'Captioned items: %s';
lisMenuEditorCaptionShouldNotBeBlank = 'Caption should not be blank';
lisMenuEditorChangeConflictingAcceleratorS = 'Change conflicting accelerator "%s"';
lisMenuEditorChangeImagelistIcon = 'Change imagelist &icon';
@ -4711,42 +4706,28 @@ resourcestring
lisMenuEditorChangeShortcutConflictS = 'Change shortcut conflict "%s"';
lisMenuEditorChangeTheShortCutForS = 'Change the shortCut for %s';
lisMenuEditorChangeTheShortCutKey2ForS = 'Change the shortCutKey2 for %s';
lisMenuEditorCheckMarkAndRadioItemProps = '%s "%s" - Check mark and RadioItem properties';
lisMenuEditorCheckmarkRadioitem = 'Checkmark && &radioitem ...';
lisMenuEditorChooseTemplateToDelete = 'Choose template to delete';
lisMenuEditorChooseTemplateToInsert = 'Choose template to insert';
lisMenuEditorChooseTemplateTo = 'Choose template to';
lisMenuEditorClickANonGreyedItemToEditItsShortcut = 'Click a non-greyed item '
+'to edit its shortcut';
lisMenuEditorClose = '&Close';
lisMenuEditorComponentIsUnexpectedKind = 'Component is unexpected kind';
lisMenuEditorComponentIsUnnamed = 'component is unnamed';
lisMenuEditorConflictResolutionComplete = '<conflict resolution complete>';
lisMenuEditorDDItems = '%d (%d items)';
lisMenuEditorDeepestNestedMenuLevelD = 'Deepest nested menu level: %d';
lisMenuEditorDeepestNestedMenuLevelNA = 'Deepest nested menu level: n/a';
lisMenuEditorDeleteItem = '&Delete item';
lisMenuEditorDeepestNestedMenuLevelS = 'Deepest nested menu level: %s';
lisMenuEditorDeleteMenuTemplate = '&Delete menu template ...';
lisMenuEditorDeletePreviouslySavedMenuTemplate = 'Delete previously saved menu template';
lisMenuEditorDeleteSavedMenuTemplate = 'Delete saved menu template';
lisMenuEditorDeleteSelectedMenuTemplate = 'Delete selected menu template';
lisMenuEditorDeleteTheSelecteditem = 'Delete the selected item';
lisMenuEditorDeleteThisItemAndItsSubitems = 'Delete this item and its subitems?';
lisMenuEditorDeletingItemWithASubmenu = 'Deleting item with a submenu';
lisMenuEditorDeletingThisItemWillDeleteAllSubitemsToo = 'Deleting this item '
+'will delete all subitems too.';
lisMenuEditorDiscoverAndResolveAnyConflictingShortcuts = 'Discover and '
+'resolve any conflicting shortcuts';
lisMenuEditorDisplayAListOfBothShortcutsAndAcceleratorKeys = 'Display a list '
+'of both shortcuts and accelerator keys';
lisMenuEditorDisplayAListOfMenuitemShortcuts = 'Display a list of menuitem shortcuts';
lisMenuEditorDisplayPreviewAsPopupMenu = 'Display preview as &Popup menu';
lisMenuEditorEditCaption = 'Edit &Caption';
lisMenuEditorEditingCaptionOfS = 'Editing Caption of %s';
lisMenuEditorEditingSForS = 'Editing %s for %s';
lisMenuEditorEditingSdotS = 'To resolve conflict edit %s.%s';
lisMenuEditorEditingSSNoMenuItemSelected = 'Editing %s.%s - no menu item selected';
lisMenuEditorEditingSSNoMenuitemSelected2 = 'Editing %s.%s - no menuitem selected';
lisMenuEditorEditTheSelectedItemSCaption = 'Edit the selected item''s Caption';
lisMenuEditorEditingSSNoMenuItemSelected = 'Editing %s.%s - no menuitem selected';
lisMenuEditorEnterAMenuDescription = 'Enter a menu &Description:';
lisMenuEditorEnterANewShortCutForS = 'Enter a new ShortCut for %s';
lisMenuEditorEnterANewShortCutKey2ForS = 'Enter a new ShortCutKey2 for %s';
@ -4761,12 +4742,9 @@ resourcestring
lisMenuEditorInsertMenuTemplateInto = 'Insert menu template into ';
lisMenuEditorInsertSelectedMenuTemplate = 'Insert selected menu template';
lisMenuEditorIsNotAssigned = 'is not assigned';
lisMenuEditorItemsWithIconD = 'Items with icon: %d';
lisMenuEditorItemsWithIconNA = 'Items with icon: n/a';
lisMenuEditorItemsWithIconS = 'Items with icon: %s';
lisMenuEditorListShortcutsAndAccelerators = 'List shortcuts and &accelerators for %s ...';
lisMenuEditorListShortcutsForS = 'List shortcuts for %s ...';
lisMenuEditorManageCheckMarksAndRadiogroups = 'Manage check marks and radiogroups';
lisMenuEditorMenuEditorNoMenuIsSelected = 'Menu Editor - no menu is selected';
lisMenuEditorMenuitemShortcutConflictsIn = 'Menuitem shortcut conflicts in ';
lisMenuEditorMoveDown = 'Move Down (or right)';
lisMenuEditorMoVeItemDown = 'Mo&ve item down';
@ -4779,41 +4757,33 @@ resourcestring
lisMenuEditorMoveSelectedItemUp = 'Move selected item up';
lisMenuEditorMoveSeparateDeleteInsertItems = 'Move Divide Delete Add items';
lisMenuEditorMoveUp = 'Move Up (or left)';
lisMenuEditorNA = 'n/a';
lisMenuEditorNoMenuSelected = '(no menu selected)';
lisMenuEditorNone = '<none>';
lisMenuEditorNoneNone = '<none>,<none>';
lisMenuEditorNoShortcutConflictsFound = '<no shortcut conflicts found>';
lisMenuEditorNoShortcutConflictsRemain = '<no shortcut conflicts remain>';
lisMenuEditorNoShortcutConflictsToResolve = '<no shortcut conflicts to resolve>';
lisMenuEditorNoteGroupIndexDHasOnlyOneRadioItemItIsNotYetAGroup = ' Note: '
+'GroupIndex %d has only one RadioItem (it is not yet a group)';
lisMenuEditorNoShortcutConflictsS = '<no shortcut conflicts%s';
lisMenuEditorNoUserSavedTemplates = 'No user-saved templates';
lisMenuEditorOnlyStandardDefaultTemplatesAreAvailable = 'Only standard '
+'default templates are available.';
lisMenuEditorOrClickHeaderToSortByThatColumn = ' or click header to sort by that column';
lisMenuEditorPickAnIconFromS = 'Pick an icon from %s';
lisMenuEditorPopupAssignmentsD = 'Popup assignments: %d';
lisMenuEditorPopupAssignmentsNA = 'Popup assignments n/a';
lisMenuEditorRemainingConflicts0 = 'Remaining conflicts: 0';
lisMenuEditorRemainingConflictsD = 'Remaining conflicts: %d';
lisMenuEditorPopupAssignmentsS = 'Popup assignments: %s';
lisMenuEditorRemain = ' remain>';
lisMenuEditorRemainingConflictsS = 'Remaining conflicts: %s';
lisMenuEditorRemoveAllSeparators = '&Remove all separators';
lisMenuEditorRemoveEverySeparatorinThisSubmenu = 'Remove every separator in this submenu';
lisMenuEditorResolvedConflicts0 = 'Resolved conflicts: 0';
lisMenuEditorResolvedConflictsD = 'Resolved conflicts: %d';
lisMenuEditorResolvedConflictsS = 'Resolved conflicts: %s';
lisMenuEditorShortcutItemsS = 'Shortcut items: %s';
lisMenuEditorResolveSelectedConflict = 'Resolve selected conflict';
lisMenuEditorResolveShortcutConflicts = '&Resolve shortcut conflicts ...';
lisMenuEditorRootMenu = 'root menu';
lisMenuEditorSavedTemplates = 'Saved templates';
lisMenuEditorSaveMenuAsATemplate = '&Save menu as a template ...';
lisMenuEditorSaveMenuAsTemplate = 'Save menu as template';
lisMenuEditorSaveMenuAsTemplateForFutureUse = 'Save menu as template for future use';
lisMenuEditorSaveMenuShownAsANewTemplate = 'Save menu shown as a new template';
lisMenuEditorEditCheckmarkProps = 'Edit Check mark and RadioItem properties';
lisMenuEditorSaveThisMenuLayoutForFutureReuse = 'Save this menu layout for future reuse';
lisMenuEditorSConflictsWithS = '%s conflicts with %s';
lisMenuEditorSeParators = 'Se&parators';
lisMenuEditorShortcutConflictsFoundInitiallyD = 'Shortcut conflicts found initially: %d';
lisMenuEditorShortcutItemsD = 'Shortcut items: %d';
lisMenuEditorShortcutItemsNA = 'Shortcut items: n/a';
lisMenuEditorShortcutNotYetChanged = 'Shortcut not yet changed';
lisMenuEditorShortcutPropertyWithShortcut = 'Shortcut,Property with shortcut';
lisMenuEditorShortcutPropertyWithShortcutAccelerator = 'Shortcut,Property '
@ -4834,19 +4804,19 @@ resourcestring
lisMenuEditorSomeWidgetsetsDoNotAllowSeparatorsInTheMainMenubar = 'Some '
+'widgetsets do not allow separators in the main menubar';
lisMenuEditorSShortcuts = '%s: Shortcuts';
lisMenuEditorSShortcutsAcceleratorKeys = '%s: Shortcuts & accelerator keys';
lisMenuEditorSShortcutsAndAcceleratorKeys = '%s: Shortcuts and accelerator keys';
lisMenuEditorSShortcutSummary = '%s: Shortcut summary';
lisMenuEditorSSSOnClickS = '%s.%s.%s - OnClick: %s';
lisMenuEditorStandardTemplates = 'Standard templates';
lisMenuEditorMenuItem = 'menu item';
lisMenuEditorSubmenu = 'submenu';
lisMenuEditorTemplateDescription = 'Template description:';
lisMenuEditorTemplates = '&Templates';
lisMenuEditorTemplateSaved = 'Template saved';
lisMenuEditorThereAreNoUserSavedMenuTemplates = 'There are no user-saved menu templates.';
lisMenuEditorToResolve = ' to resolve>';
lisMenuEditorTSCListGetScanListCompNameInvalidIndexDForFScanLis = 'TSCList.'
+'GetScanListCompName: invalid index %d for FScanList';
lisMenuEditorUseAMenuTemplateToConstructMenuItemsHere = 'Use a menu template '
+'to construct menu items here';
lisMenuEditorYouHaveToChangeTheShortcutFromSStoAvoidAConflict = 'You have to'
+' change the shortcut from %s%sto avoid a conflict';
lisMenuEditorYouMustEnterTextForTheCaption = 'You must enter text for the Caption';