2000-08-09 13:51:59 +00:00
|
|
|
/* This file is part of
|
|
|
|
* ======================================================
|
|
|
|
*
|
|
|
|
* LyX, The Document Processor
|
|
|
|
*
|
|
|
|
* Copyright 2000 The LyX Team.
|
|
|
|
*
|
|
|
|
* ====================================================== */
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma implementation
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
#include <cctype>
|
|
|
|
#include "support/lstrings.h"
|
|
|
|
#include "support/filetools.h"
|
|
|
|
#include "support/StrPool.h"
|
|
|
|
#include "support/LAssert.h"
|
|
|
|
#include "debug.h"
|
|
|
|
#include "LyXAction.h"
|
|
|
|
#include "lyxfunc.h"
|
2002-01-09 09:36:35 +00:00
|
|
|
#include "FuncStatus.h"
|
2000-08-09 13:51:59 +00:00
|
|
|
#include "kbmap.h"
|
|
|
|
#include "bufferlist.h"
|
|
|
|
#include "lastfiles.h"
|
|
|
|
#include "LyXView.h"
|
|
|
|
#include "MenuBackend.h"
|
|
|
|
#include "Menubar_pimpl.h"
|
2000-09-19 13:50:47 +00:00
|
|
|
#include "lyxtext.h"
|
|
|
|
#include "exporter.h"
|
2000-08-09 13:51:59 +00:00
|
|
|
|
|
|
|
#include "mainapp.h"
|
|
|
|
|
2000-09-19 13:50:47 +00:00
|
|
|
#include <gtk--/menu.h>
|
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
using std::endl;
|
|
|
|
|
|
|
|
// temporary solution for LyXView
|
|
|
|
extern GLyxAppWin * mainAppWin;
|
|
|
|
|
|
|
|
// Some constants
|
2001-03-07 16:18:05 +00:00
|
|
|
extern boost::scoped_ptr<kb_keymap> toplevel_keymap;
|
2000-08-09 13:51:59 +00:00
|
|
|
extern LyXAction lyxaction;
|
|
|
|
extern BufferList bufferlist;
|
|
|
|
extern LastFiles * lastfiles;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mb)
|
|
|
|
: owner_(view), menubackend_(&mb), ignore_action_(false)
|
|
|
|
{
|
2000-09-19 13:50:47 +00:00
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Menubar::Pimpl::~Pimpl()
|
|
|
|
{
|
2000-09-19 13:50:47 +00:00
|
|
|
if (utoc_.connected()) utoc_.disconnect();
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Menubar::Pimpl::set(string const & menu_name)
|
|
|
|
{
|
|
|
|
// if (current_menu_name_ != menu_name) // disabled until Lastfiles and Documents are added dynamically to menu
|
2001-03-15 18:21:56 +00:00
|
|
|
//{
|
2000-08-09 13:51:59 +00:00
|
|
|
current_menu_name_ = menu_name;
|
2000-09-19 13:50:47 +00:00
|
|
|
|
|
|
|
// clean up the lists
|
|
|
|
toc_.clear();
|
|
|
|
if (utoc_.connected()) utoc_.disconnect();
|
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
// compose new menu
|
|
|
|
vector<Gnome::UI::Info> menus;
|
2000-09-19 13:50:47 +00:00
|
|
|
composeUIInfo(current_menu_name_, menus, "");
|
2000-08-09 13:51:59 +00:00
|
|
|
|
|
|
|
// set menu
|
|
|
|
Menu_ = menus;
|
|
|
|
mainAppWin->set_menu(Menu_);
|
|
|
|
|
|
|
|
// connect all menu items to correspoding action
|
|
|
|
wid_act_.clear();
|
|
|
|
ignore_action_ = true;
|
|
|
|
connectWidgetToAction(Menu_.gtkobj());
|
|
|
|
ignore_action_ = false;
|
|
|
|
|
|
|
|
// update state of the items
|
|
|
|
update();
|
2000-09-19 13:50:47 +00:00
|
|
|
updateAllLists();
|
2001-03-15 18:21:56 +00:00
|
|
|
//}
|
2000-09-19 13:50:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Menubar::Pimpl::updateAllLists()
|
|
|
|
{
|
2001-04-17 00:19:49 +00:00
|
|
|
#ifdef WITH_WARNINGS
|
2001-03-28 11:14:05 +00:00
|
|
|
#warning Implement me! (be 20010324)
|
2001-04-17 00:19:49 +00:00
|
|
|
#endif
|
2001-03-28 11:14:05 +00:00
|
|
|
#if 0
|
2000-09-19 13:50:47 +00:00
|
|
|
// update lists
|
|
|
|
if (toc_.size() > 0)
|
|
|
|
{
|
|
|
|
vector<Buffer::TocItem> toclist = (owner_->view()->buffer()->getTocList())[Buffer::TOC_TOC];
|
|
|
|
updateList(&toclist, &toc_);
|
|
|
|
}
|
2001-03-28 11:14:05 +00:00
|
|
|
#endif
|
2000-09-19 13:50:47 +00:00
|
|
|
}
|
|
|
|
|
2000-09-25 11:10:15 +00:00
|
|
|
int const max_number_of_items = 25;
|
2001-03-15 18:21:56 +00:00
|
|
|
|
2000-09-19 13:50:47 +00:00
|
|
|
void Menubar::Pimpl::updateList(vector<Buffer::TocItem> * toclist, vector<ListsHolder> * pgui)
|
|
|
|
{
|
|
|
|
vector<ListsHolder> & gui = *pgui;
|
|
|
|
int szGui = gui.size();
|
|
|
|
int i;
|
|
|
|
for (i=0; i < szGui; ++i)
|
|
|
|
{
|
|
|
|
int oldsz = gui[i].lst.size();
|
|
|
|
vector<Gnome::UI::Info> menu;
|
|
|
|
string label;
|
|
|
|
|
|
|
|
menu.push_back(Gnome::UI::Item(Gnome::UI::Icon(GNOME_STOCK_MENU_REFRESH),
|
2001-03-15 18:21:56 +00:00
|
|
|
_("Refresh"), SigC::slot(this, &Menubar::Pimpl::updateAllLists)));
|
2000-09-25 11:10:15 +00:00
|
|
|
|
|
|
|
if (toclist->size() > max_number_of_items)
|
|
|
|
composeTocUIInfo(menu, *toclist, toclist->begin(), 0);
|
|
|
|
else
|
|
|
|
{
|
|
|
|
vector<Buffer::TocItem>::const_iterator end = toclist->end();
|
|
|
|
for (vector<Buffer::TocItem>::const_iterator it = toclist->begin();
|
|
|
|
it != end; ++it)
|
|
|
|
|
|
|
|
{
|
|
|
|
label = string(4*(*it).depth,' ')+(*it).str;
|
|
|
|
|
|
|
|
menu.push_back(Gnome::UI::Item(label,
|
2001-03-15 18:21:56 +00:00
|
|
|
SigC::bind<Buffer::TocItem>(SigC::slot(this, &Menubar::Pimpl::callbackToc), (*it)),
|
2000-09-25 11:10:15 +00:00
|
|
|
label));
|
|
|
|
}
|
|
|
|
}
|
2000-09-19 13:50:47 +00:00
|
|
|
|
2000-09-25 11:10:15 +00:00
|
|
|
gui[i].lst = menu;
|
|
|
|
mainAppWin->update_menu(gui[i].path, oldsz, gui[i].lst);
|
|
|
|
}
|
|
|
|
}
|
2000-09-19 13:50:47 +00:00
|
|
|
|
2000-09-25 11:10:15 +00:00
|
|
|
vector<Buffer::TocItem>::const_iterator
|
|
|
|
Menubar::Pimpl::composeTocUIInfo(vector<Gnome::UI::Info> & menu,
|
|
|
|
vector<Buffer::TocItem> const & toclist,
|
|
|
|
vector<Buffer::TocItem>::const_iterator begin,
|
|
|
|
int mylevel)
|
|
|
|
{
|
2000-10-13 12:20:38 +00:00
|
|
|
string label = _("<No Name>");
|
2000-09-25 11:10:15 +00:00
|
|
|
|
|
|
|
vector<Buffer::TocItem>::const_iterator end = toclist.end();
|
|
|
|
vector<Buffer::TocItem>::const_iterator it;
|
|
|
|
for (it = begin; it != end && (*it).depth >= mylevel; ++it)
|
|
|
|
{
|
|
|
|
if ( (*it).depth == mylevel &&
|
|
|
|
(it+1 == end || (*(it+1)).depth <= mylevel) )
|
2000-09-19 13:50:47 +00:00
|
|
|
{
|
2000-09-25 11:10:15 +00:00
|
|
|
label = (*it).str;
|
2000-09-19 13:50:47 +00:00
|
|
|
menu.push_back(Gnome::UI::Item(label,
|
2001-03-15 18:21:56 +00:00
|
|
|
SigC::bind<Buffer::TocItem>(SigC::slot(this, &Menubar::Pimpl::callbackToc), (*it)),
|
2000-09-19 13:50:47 +00:00
|
|
|
label));
|
|
|
|
}
|
2000-09-25 11:10:15 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
vector<Gnome::UI::Info> submenu;
|
|
|
|
if ( (*it).depth == mylevel )
|
|
|
|
{
|
|
|
|
label = (*it).str;
|
|
|
|
submenu.push_back(Gnome::UI::Item(label,
|
2001-03-15 18:21:56 +00:00
|
|
|
SigC::bind<Buffer::TocItem>(SigC::slot(this, &Menubar::Pimpl::callbackToc), (*it)),
|
2000-09-25 11:10:15 +00:00
|
|
|
label));
|
|
|
|
++it;
|
|
|
|
}
|
|
|
|
it = composeTocUIInfo(submenu, toclist, it, mylevel+1);
|
|
|
|
menu.push_back(Gnome::UI::Menu(label,submenu,label));
|
|
|
|
}
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
2000-09-25 11:10:15 +00:00
|
|
|
--it;
|
|
|
|
return it;
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Menubar::Pimpl::callback(int action)
|
|
|
|
{
|
|
|
|
// Dispatch action OR record action to local variable (see connectWidgetToAction)
|
2000-08-17 15:20:30 +00:00
|
|
|
if (!ignore_action_) {
|
|
|
|
Pimpl::update();
|
2001-07-19 09:26:56 +00:00
|
|
|
owner_->getLyXFunc()->dispatch(action);
|
2000-08-17 15:20:30 +00:00
|
|
|
} else
|
|
|
|
action_ = action;
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
|
|
|
|
2000-09-19 13:50:47 +00:00
|
|
|
void Menubar::Pimpl::callbackToc(Buffer::TocItem tg)
|
2000-08-09 13:51:59 +00:00
|
|
|
{
|
2001-03-08 12:58:40 +00:00
|
|
|
#if 0
|
2000-09-19 13:50:47 +00:00
|
|
|
if (!owner_->view()->available()) return;
|
|
|
|
|
|
|
|
owner_->view()->beforeChange();
|
|
|
|
owner_->view()->text->SetCursor( owner_->view(), tg.par, 0 );
|
|
|
|
owner_->view()->text->sel_cursor = owner_->view()->text->cursor;
|
|
|
|
owner_->view()->update(BufferView::SELECT|BufferView::FITCUR);
|
2001-03-08 12:58:40 +00:00
|
|
|
#endif
|
|
|
|
|
2001-07-19 09:26:56 +00:00
|
|
|
owner_->getLyXFunc()->dispatch(LFUN_GOTO_PARAGRAPH, tg.str);
|
2000-09-19 13:50:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Menubar::Pimpl::composeUIInfo(string const & menu_name, vector<Gnome::UI::Info> & Menus, string rootpath)
|
|
|
|
{
|
|
|
|
string path = rootpath;
|
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
if (!menubackend_->hasMenu(menu_name))
|
|
|
|
{
|
|
|
|
cout << "ERROR:composeUIInfo: Unknown menu `" << menu_name
|
|
|
|
<< "'" << endl;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2000-10-13 12:20:38 +00:00
|
|
|
Menu menu = Menu();
|
|
|
|
menubackend_->getMenu(menu_name).expand(menu, owner_->buffer());
|
2000-08-09 13:51:59 +00:00
|
|
|
|
|
|
|
for (Menu::const_iterator i = menu.begin(); i != menu.end(); ++i)
|
|
|
|
{
|
|
|
|
MenuItem item = (*i);
|
|
|
|
switch(item.kind()) {
|
|
|
|
|
|
|
|
case MenuItem::Command: {
|
|
|
|
string label = item.label();
|
2000-09-19 13:50:47 +00:00
|
|
|
|
|
|
|
path = rootpath + label;
|
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
if (label.find(item.shortcut()) != string::npos)
|
|
|
|
label.insert(label.find(item.shortcut()), "_");
|
|
|
|
|
2002-01-09 09:36:35 +00:00
|
|
|
FuncStatus flag = owner_->getLyXFunc()->getStatus(item.action());
|
2000-08-09 13:51:59 +00:00
|
|
|
|
|
|
|
Gnome::UI::Info gitem;
|
2001-03-15 18:21:56 +00:00
|
|
|
SigC::Slot0<void> cback = SigC::bind<int>(SigC::slot(this, &Menubar::Pimpl::callback),item.action());
|
2000-08-09 13:51:59 +00:00
|
|
|
|
|
|
|
{
|
|
|
|
using namespace Gnome::MenuItems;
|
2000-08-23 15:18:19 +00:00
|
|
|
int ac = item.action();
|
|
|
|
kb_action action;
|
|
|
|
string argument;
|
|
|
|
if (lyxaction.isPseudoAction(ac))
|
|
|
|
action = lyxaction.retrieveActionArg(ac, argument);
|
|
|
|
else
|
|
|
|
action = static_cast<kb_action>(ac);
|
|
|
|
|
|
|
|
switch(action) {
|
2001-03-12 11:22:26 +00:00
|
|
|
case LFUN_FILE_OPEN:
|
2000-08-23 15:18:19 +00:00
|
|
|
gitem = Open(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_QUIT:
|
|
|
|
gitem = Exit(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_CLOSEBUFFER:
|
|
|
|
gitem = Close(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_MENUWRITE:
|
|
|
|
gitem = Save(cback);
|
|
|
|
break;
|
2001-03-12 11:22:26 +00:00
|
|
|
case LFUN_WRITEAS:
|
2000-08-23 15:18:19 +00:00
|
|
|
gitem = SaveAs(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_BUFFER_PRINT:
|
|
|
|
gitem = Print(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_CUT:
|
|
|
|
gitem = Cut(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_COPY:
|
|
|
|
gitem = Copy(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_PASTE:
|
|
|
|
gitem = Paste(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_UNDO:
|
|
|
|
gitem = Gnome::MenuItems::Undo(cback); // confused with class Undo
|
|
|
|
break;
|
|
|
|
case LFUN_REDO:
|
|
|
|
gitem = Redo(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_DIALOG_PREFERENCES:
|
|
|
|
gitem = Preferences(cback);
|
|
|
|
break;
|
|
|
|
case LFUN_MENUNEW:
|
2000-08-09 13:51:59 +00:00
|
|
|
gitem = Gnome::UI::Item(Gnome::UI::Icon(GNOME_STOCK_MENU_NEW),
|
|
|
|
label, cback, lyxaction.helpText(item.action()));
|
2000-08-23 15:18:19 +00:00
|
|
|
break;
|
|
|
|
case LFUN_MENUNEWTMPLT:
|
2000-08-09 13:51:59 +00:00
|
|
|
gitem = Gnome::UI::Item(Gnome::UI::Icon(GNOME_STOCK_MENU_NEW),
|
|
|
|
label, cback, lyxaction.helpText(item.action()));
|
2000-08-23 15:18:19 +00:00
|
|
|
break;
|
|
|
|
case LFUN_MENUSEARCH:
|
2000-08-09 13:51:59 +00:00
|
|
|
gitem = Gnome::UI::Item(Gnome::UI::Icon(GNOME_STOCK_MENU_SRCHRPL),
|
|
|
|
label, cback, lyxaction.helpText(item.action()));
|
2000-08-23 15:18:19 +00:00
|
|
|
break;
|
|
|
|
case LFUN_SPELLCHECK:
|
2000-08-09 13:51:59 +00:00
|
|
|
gitem = Gnome::UI::Item(Gnome::UI::Icon(GNOME_STOCK_MENU_SPELLCHECK),
|
|
|
|
label, cback, lyxaction.helpText(item.action()));
|
2000-08-23 15:18:19 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
gitem = Gnome::UI::Item(label, cback, lyxaction.helpText(item.action()));
|
|
|
|
break;
|
|
|
|
}
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
|
|
|
|
2000-08-17 15:20:30 +00:00
|
|
|
// first handle optional entries.
|
2002-01-09 09:36:35 +00:00
|
|
|
if (item.optional() && (flag.disabled())) {
|
2000-08-17 15:20:30 +00:00
|
|
|
lyxerr[Debug::GUI]
|
|
|
|
<< "Skipping optional item " << item.label() << endl;
|
|
|
|
break;
|
|
|
|
}
|
2002-01-09 09:36:35 +00:00
|
|
|
if ((flag.onoff(true)) ||
|
|
|
|
(flag.onoff(false)))
|
2000-08-09 13:51:59 +00:00
|
|
|
gitem = Gnome::UI::ToggleItem(label, cback, lyxaction.helpText(item.action()));
|
2000-08-23 15:18:19 +00:00
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
Menus.push_back(gitem);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
case MenuItem::Submenu: {
|
|
|
|
vector<Gnome::UI::Info> submenu;
|
|
|
|
string label = item.label();
|
2000-09-19 13:50:47 +00:00
|
|
|
|
|
|
|
path = rootpath + label;
|
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
if (label.find(item.shortcut()) != string::npos)
|
|
|
|
label.insert(label.find(item.shortcut()), "_");
|
2000-09-19 13:50:47 +00:00
|
|
|
composeUIInfo(item.submenu(), submenu, path + "/");
|
2000-08-09 13:51:59 +00:00
|
|
|
Menus.push_back(Gnome::UI::Menu(label,submenu,label));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
case MenuItem::Separator: {
|
2000-09-19 13:50:47 +00:00
|
|
|
|
|
|
|
path = rootpath + "<Separator>";
|
|
|
|
|
2000-08-09 13:51:59 +00:00
|
|
|
Menus.push_back(Gnome::UI::Separator());
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2000-09-19 13:50:47 +00:00
|
|
|
case MenuItem::Toc: {
|
|
|
|
ListsHolder t;
|
|
|
|
t.path = path;
|
|
|
|
toc_.push_back(t);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2000-10-13 12:20:38 +00:00
|
|
|
case MenuItem::Documents:
|
|
|
|
case MenuItem::Lastfiles:
|
|
|
|
case MenuItem::ViewFormats:
|
|
|
|
case MenuItem::UpdateFormats:
|
|
|
|
case MenuItem::ExportFormats:
|
|
|
|
lyxerr << "Menubar::Pimpl::create_submenu: "
|
|
|
|
"this should not happen" << endl;
|
|
|
|
break;
|
2000-08-09 13:51:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void Menubar::Pimpl::connectWidgetToAction(GnomeUIInfo * guinfo)
|
|
|
|
{
|
|
|
|
for (; guinfo->type != GnomeUIInfoType(GNOME_APP_UI_ENDOFINFO); ++guinfo)
|
|
|
|
{
|
2000-09-19 13:50:47 +00:00
|
|
|
if ( ( guinfo->type == GnomeUIInfoType(GNOME_APP_UI_ITEM) ||
|
|
|
|
guinfo->type == GnomeUIInfoType(GNOME_APP_UI_TOGGLEITEM) ) &&
|
2000-10-30 11:33:05 +00:00
|
|
|
guinfo->moreinfo != 0 )
|
2000-08-09 13:51:59 +00:00
|
|
|
{
|
2000-10-30 11:33:05 +00:00
|
|
|
(*((void(*)(void *, void *))(guinfo->moreinfo)))(0, guinfo->user_data);
|
2000-08-09 13:51:59 +00:00
|
|
|
wid_act_.push_back( GtkWidgetToAction( guinfo->widget, action_ ) );
|
|
|
|
}
|
|
|
|
else if ( guinfo->type == GnomeUIInfoType(GNOME_APP_UI_SUBTREE) ||
|
|
|
|
guinfo->type == GnomeUIInfoType(GNOME_APP_UI_RADIOITEMS) )
|
|
|
|
{
|
|
|
|
connectWidgetToAction( (GnomeUIInfo *)(guinfo->moreinfo) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void Menubar::Pimpl::update()
|
|
|
|
{
|
|
|
|
vector<GtkWidgetToAction>::const_iterator end=wid_act_.end();
|
|
|
|
for (vector<GtkWidgetToAction>::const_iterator i = wid_act_.begin(); i != end; ++i)
|
|
|
|
{
|
|
|
|
GtkWidgetToAction wa = (*i);
|
2002-01-09 09:36:35 +00:00
|
|
|
FuncStatus flag = owner_->getLyXFunc()->getStatus(wa.action_);
|
2000-08-09 13:51:59 +00:00
|
|
|
|
2002-01-09 09:36:35 +00:00
|
|
|
if ( flag.disabled() || flag.unknown()) gtk_widget_set_sensitive(wa.widget_, false);
|
2000-08-09 13:51:59 +00:00
|
|
|
else gtk_widget_set_sensitive(wa.widget_, true);
|
|
|
|
|
2002-01-09 09:36:35 +00:00
|
|
|
if ( flag.onoff(true))
|
2000-08-09 13:51:59 +00:00
|
|
|
{
|
|
|
|
ignore_action_=true;
|
|
|
|
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wa.widget_), true);
|
|
|
|
ignore_action_=false;
|
|
|
|
}
|
|
|
|
|
2002-01-09 09:36:35 +00:00
|
|
|
if ( flag.onoff(false))
|
2000-08-09 13:51:59 +00:00
|
|
|
{
|
|
|
|
ignore_action_=true;
|
|
|
|
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wa.widget_), false);
|
|
|
|
ignore_action_=false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2000-08-17 15:20:30 +00:00
|
|
|
|
2000-08-23 15:18:19 +00:00
|
|
|
void Menubar::Pimpl::openByName(string const &)
|
2000-08-17 15:20:30 +00:00
|
|
|
{
|
|
|
|
// Pimpl::update();
|
|
|
|
}
|