mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-09-10 03:54:54 -06:00
Bazaar/XMLMenu : updated to new UPP and fixed some bugs
git-svn-id: svn://ultimatepp.org/upp/trunk@12148 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ee1e357fc1
commit
90fa5e186d
6 changed files with 58 additions and 30 deletions
|
|
@ -12,7 +12,7 @@ XMLCommand::XMLCommand(XMLCommand const &c, int)
|
|||
ctrlSize = c.ctrlSize;
|
||||
callback = c.callback;
|
||||
menuCallback = c.menuCallback;
|
||||
menuTb <<= c.menuTb;
|
||||
menuTb = One<XMLToolBar>(new XMLToolBar(*c.menuTb, 1)); // @@ was deep copy operator <<=
|
||||
enabled = c.enabled;
|
||||
custom = c.custom;
|
||||
commandString = c.commandString;
|
||||
|
|
|
|||
|
|
@ -219,15 +219,15 @@ void XMLBarEditor::fieldsModCb(void)
|
|||
return;
|
||||
if(i == 0)
|
||||
{
|
||||
bar->SetName(itemPane.label);
|
||||
bar->SetName(~itemPane.label);
|
||||
barTree.SetRoot(Null, itemPane.label);
|
||||
return;
|
||||
}
|
||||
|
||||
XMLToolBarItem item(ValueTo<XMLToolBarItem>(barTree.Get(i)), 0);
|
||||
item.label = itemPane.label;
|
||||
item.commandId = itemPane.cmdId;
|
||||
item.tooltip = itemPane.tooltip;
|
||||
item.label = ~itemPane.label;
|
||||
item.commandId = ~itemPane.cmdId;
|
||||
item.tooltip = ~itemPane.tooltip;
|
||||
item.icon = curIcon;
|
||||
TreeCtrl::Node node(item.GetIcon(), RawDeepToValue(item), item.GetLabel());
|
||||
barTree.SetNode(i, node);
|
||||
|
|
@ -469,7 +469,7 @@ void XMLBarsEditor::barContextAddCb(void)
|
|||
add.Close();
|
||||
if(res == IDOK)
|
||||
{
|
||||
toolBars.Add(~add.barName, XMLToolBar());
|
||||
toolBars.AddPick(~add.barName, XMLToolBar());
|
||||
barListPane.barList.Add(~add.barName);
|
||||
barListPane.barList.SetCursor(barListPane.barList.GetCount() - 1);
|
||||
}
|
||||
|
|
@ -646,7 +646,7 @@ void XMLMenuEditor::cmdContextAddCb(void)
|
|||
edit.Close();
|
||||
if(res == IDOK)
|
||||
{
|
||||
commands.Add(edit.cmdId, edit.cmdStr);
|
||||
commands.Add(~edit.cmdId, ~edit.cmdStr);
|
||||
FillCmdList();
|
||||
cmdPane.commandList.SetCursor(cmdPane.commandList.Find(~edit.cmdId));
|
||||
}
|
||||
|
|
@ -662,7 +662,7 @@ void XMLMenuEditor::cmdContextEditCb(void)
|
|||
if(res == IDOK)
|
||||
{
|
||||
int idx = commands.Find(~edit.cmdId);
|
||||
commands[idx].SetCommandString(edit.cmdStr);
|
||||
commands[idx].SetCommandString(~edit.cmdStr);
|
||||
FillCmdList();
|
||||
cmdPane.commandList.SetCursor(cmdPane.commandList.Find(~edit.cmdId));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ class XMLBarAdd : public WithBarAddLayout<TopWindow>
|
|||
Exclamation(t_("Invalid empty bar name"));
|
||||
return;
|
||||
}
|
||||
if(bars.Find(barName) >= 0)
|
||||
if(bars.Find(~barName) >= 0)
|
||||
{
|
||||
Exclamation(Format(t_("Bar '%s' already present"), ~barName));
|
||||
return;
|
||||
|
|
@ -191,7 +191,7 @@ class XMLCmdEdit : public WithCmdEditLayout<TopWindow>
|
|||
Exclamation(t_("Invalid empty command Id"));
|
||||
return;
|
||||
}
|
||||
if(adding && cmds.Has(cmdId))
|
||||
if(adding && cmds.Has(~cmdId))
|
||||
{
|
||||
Exclamation(Format(t_("Command '%s' already present"), ~cmdId));
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -13,28 +13,34 @@ XMLToolBarItem::XMLToolBarItem()
|
|||
icon = Null;
|
||||
tooltip = "";
|
||||
isSeparator = false;
|
||||
internalCb.Clear();
|
||||
subMenu.Clear();
|
||||
}
|
||||
|
||||
// copy constructor
|
||||
XMLToolBarItem::XMLToolBarItem(const XMLToolBarItem &item, int dummy)
|
||||
XMLToolBarItem::XMLToolBarItem(const XMLToolBarItem &item, int)
|
||||
{
|
||||
commandId = item.commandId;
|
||||
label = item.label;
|
||||
icon = item.icon;
|
||||
tooltip = item.tooltip;
|
||||
isSeparator = item.isSeparator;
|
||||
subMenu <<= item.subMenu;
|
||||
internalCb = item.internalCb;
|
||||
if(!item.subMenu.IsEmpty())
|
||||
subMenu = One<XMLToolBar>(new XMLToolBar(*item.subMenu, 1)); // @@ it was <<= deep copy....
|
||||
else
|
||||
subMenu.Clear();
|
||||
}
|
||||
|
||||
// pick constructor
|
||||
XMLToolBarItem::XMLToolBarItem(XMLToolBarItem rval_ item)
|
||||
XMLToolBarItem::XMLToolBarItem(XMLToolBarItem &&item)
|
||||
{
|
||||
commandId = item.commandId;
|
||||
label = item.label;
|
||||
icon = item.icon;
|
||||
tooltip = item.tooltip;
|
||||
isSeparator = item.isSeparator;
|
||||
internalCb = item.internalCb;
|
||||
subMenu = pick(item.subMenu);
|
||||
}
|
||||
|
||||
|
|
@ -113,7 +119,7 @@ XMLToolBar::XMLToolBar()
|
|||
}
|
||||
|
||||
// pick constructor
|
||||
XMLToolBar::XMLToolBar(XMLToolBar pick_ &tb)
|
||||
XMLToolBar::XMLToolBar(XMLToolBar &&tb)
|
||||
{
|
||||
name = tb.name;
|
||||
items = pick(tb.items);
|
||||
|
|
@ -122,17 +128,17 @@ XMLToolBar::XMLToolBar(XMLToolBar pick_ &tb)
|
|||
}
|
||||
|
||||
// copy constructor
|
||||
XMLToolBar::XMLToolBar(XMLToolBar const &tb, int dummy)
|
||||
XMLToolBar::XMLToolBar(XMLToolBar const &tb, int)
|
||||
{
|
||||
name = tb.name;
|
||||
items <<= tb.items;
|
||||
items = clone(tb.items);
|
||||
state = tb.state;
|
||||
prevState = tb.prevState;
|
||||
position = tb.position;
|
||||
}
|
||||
|
||||
// copy operator
|
||||
XMLToolBar &XMLToolBar::operator=(XMLToolBar pick_ &tb)
|
||||
// pick operator =
|
||||
XMLToolBar &XMLToolBar::operator=(XMLToolBar &&tb)
|
||||
{
|
||||
name = tb.name;
|
||||
items = pick(tb.items);
|
||||
|
|
@ -142,6 +148,17 @@ XMLToolBar &XMLToolBar::operator=(XMLToolBar pick_ &tb)
|
|||
return *this;
|
||||
}
|
||||
|
||||
// copy operator =
|
||||
XMLToolBar const &XMLToolBar::operator=(XMLToolBar const &tb)
|
||||
{
|
||||
name = tb.name;
|
||||
items = clone(tb.items);
|
||||
state = tb.state;
|
||||
prevState = tb.prevState;
|
||||
position = tb.position;
|
||||
return *this;
|
||||
}
|
||||
|
||||
// add an entry, various ways
|
||||
XMLToolBar &XMLToolBar::Add(String const &commandId)
|
||||
{
|
||||
|
|
@ -228,22 +245,22 @@ XMLToolBar &XMLToolBar::Add(String const &commandId, String const &label, Image
|
|||
}
|
||||
|
||||
// add a submenu entry
|
||||
XMLToolBar &XMLToolBar::Add(String const &subLabel, XMLToolBar pick_ &subMenu)
|
||||
XMLToolBar &XMLToolBar::Add(String const &subLabel, XMLToolBar const &subMenu)
|
||||
{
|
||||
XMLToolBarItem *item = new XMLToolBarItem;
|
||||
item->label = subLabel;
|
||||
item->subMenu = new XMLToolBar(subMenu);
|
||||
item->subMenu = new XMLToolBar(clone(subMenu));
|
||||
item->subMenu->name = subLabel;
|
||||
items.Add(item);
|
||||
return *this;
|
||||
}
|
||||
|
||||
XMLToolBar &XMLToolBar::Add(String const &subLabel, Image const &icon, XMLToolBar pick_ &subMenu)
|
||||
XMLToolBar &XMLToolBar::Add(String const &subLabel, Image const &icon, XMLToolBar const &subMenu)
|
||||
{
|
||||
XMLToolBarItem *item = new XMLToolBarItem;
|
||||
item->label = subLabel;
|
||||
item->icon = icon;
|
||||
item->subMenu = new XMLToolBar(subMenu);
|
||||
item->subMenu = new XMLToolBar(clone(subMenu));
|
||||
item->subMenu->name = subLabel;
|
||||
items.Add(item);
|
||||
return *this;
|
||||
|
|
@ -260,7 +277,7 @@ XMLToolBar &XMLToolBar::Add(Callback1<XMLToolBar &> bar)
|
|||
{
|
||||
XMLToolBar tb;
|
||||
bar(tb);
|
||||
items.Append(tb.items);
|
||||
items.AppendPick(pick(tb.items));
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,13 +100,16 @@ class XMLToolBar : DeepCopyOption<XMLToolBar>
|
|||
XMLToolBar();
|
||||
|
||||
// pick constructor
|
||||
XMLToolBar(XMLToolBar pick_ &tb);
|
||||
XMLToolBar(XMLToolBar &&tb);
|
||||
|
||||
// copy constructor
|
||||
XMLToolBar(XMLToolBar const &tb, int dummy);
|
||||
XMLToolBar(XMLToolBar const &tb, int);
|
||||
|
||||
// copy operator
|
||||
XMLToolBar &operator=(XMLToolBar pick_ &tb);
|
||||
// pick operator =
|
||||
XMLToolBar &operator=(XMLToolBar &&tb);
|
||||
|
||||
// copy operator =
|
||||
XMLToolBar const &operator=(XMLToolBar const &tb);
|
||||
|
||||
// add an entry, various ways
|
||||
XMLToolBar &SetName(String const &_name) { name = _name; return *this; }
|
||||
|
|
@ -123,8 +126,8 @@ class XMLToolBar : DeepCopyOption<XMLToolBar>
|
|||
XMLToolBar &Add(String const &commandId, String const &label, Image const &icon, String const &tooltip);
|
||||
|
||||
// add a submenu entry
|
||||
XMLToolBar &Add(String const &subLabel, XMLToolBar pick_ &subMenu);
|
||||
XMLToolBar &Add(String const &subLabel, Image const &icon, XMLToolBar pick_ &subMenu);
|
||||
XMLToolBar &Add(String const &subLabel, XMLToolBar const &subMenu);
|
||||
XMLToolBar &Add(String const &subLabel, Image const &icon, XMLToolBar const &subMenu);
|
||||
|
||||
// creates a submenu entry
|
||||
XMLToolBar SubMenu(void);
|
||||
|
|
@ -162,7 +165,7 @@ class XMLToolBar : DeepCopyOption<XMLToolBar>
|
|||
// debugging stuff -- dumps bar content
|
||||
void Dump(int level = 0);
|
||||
#endif
|
||||
rval_default(XMLToolBar);
|
||||
// rval_default(XMLToolBar);
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -7,9 +7,17 @@ NAMESPACE_UPP
|
|||
// handler for window drag events
|
||||
void XMLToolBarFloating::WindowDragged(DragWindow::DragEvent e, Point p)
|
||||
{
|
||||
// avoid re-entering - caused a sigseg error
|
||||
static bool inside = false;
|
||||
if(inside)
|
||||
return;
|
||||
inside = true;
|
||||
|
||||
XMLMenuInterface *iFace = toolBar->GetInterface();
|
||||
if(iFace && e == DragWindow::DRAG_DRAG)
|
||||
iFace->FloatingDraggedEvent(*toolBar, p);
|
||||
|
||||
inside = false;
|
||||
}
|
||||
|
||||
XMLToolBarFloating::XMLToolBarFloating(XMLToolBarCtrl &tb, Point p)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue