Re: [gtkmm] Access CheckMenuItem after inserted into menu?
- From: D Bently <dbently bigpond com>
- To: gtkmm-list gnome org
- Subject: Re: [gtkmm] Access CheckMenuItem after inserted into menu?
- Date: Sun, 19 Jan 2003 07:23:28 +1100
Thanks Bryan, a bit of playing around and that worked. What I have done
is create an array:
struct {
CheckMenuItem *item;
const char *str;
} data[MAX_CITEMS];
At run time I open the configuration file, and load in the items,
filling in the array as you have suggested. Then when one of the items
is changed I simply go through the array, and can identify exactly which
items are currently set. It is actually a better solution than I
expected to find.
Thanks.
Bryan Forbes wrote:
I had this problem trying to implement a message in a status bar when the user moves
his/her mouse over the menu item (yeah, I reimplemented something from libgnomeuimm... oh
well), but I found a solution that I've adapted to your problem:
1. Make some pointers to Gtk::CheckMenuItem (the number depends on how many
CheckMenuElems you have and/or how many you want to access. For our example, we'll use
m_abc, m_def, and m_ghi (remember, this is in your class):
Gtk::CheckMenuItem *m_abc, *m_def, *m_ghi;
2. After push_back'ing the CheckMenuElems into the menu, assign one of your pointers the
address (I think) of the back method of menulist. Here's an example using your code:
ClassTest::ClassTest() : somelabel("fred") {
/* Construct the popup menu */
Menu::MenuList &menulist = popup.items();
menulist.push_back(Menu_Helpers::CheckMenuElem("abc",
SigC::slot(*this, &ClassTest::ChangeLabel)));
m_abc = &menulist.back();
menulist.push_back(Menu_Helpers::CheckMenuElem("def",
SigC::slot(*this, &ClassTest::ChangeLabel)));
m_def = &menulist.back();
menulist.push_back(Menu_Helpers::CheckMenuElem("ghi",
SigC::slot(*this, &ClassTest::ChangeLabel)));
m_ghi = &menulist.back();
/* ... could be any number of elements added ... */
popup.accelerate(*this);
...
3. Now access the check menu items by dereferencing them (->)
m_abc->toggled();
Disclaimer: I've only used this to check if the menu item (Gtk::MenuItem) has the mouse
over it, so this should work (given my limited experience) with Gtk::CheckMenuItem. I
hope this helps. If I'm wrong, someone please correct me :).
-Bryan
> <original message snipped>
--------------------------------------------------------------------------
Damian (Winter)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]