Add a convenience MenuHelper c'tor
authorRobin Gareus <robin@gareus.org>
Wed, 28 Jun 2017 21:24:06 +0000 (23:24 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 28 Jun 2017 22:22:34 +0000 (00:22 +0200)
This is pretty much Gtkmm's
  * CheckMenuElem::CheckMenuElem
  * MenuElem::MenuElem
except MenuItems are created with bool mnemonic = false;

libs/gtkmm2ext/gtkmm2ext/menu_elems.h [new file with mode: 0644]
libs/gtkmm2ext/menu_elems.cc [new file with mode: 0644]
libs/gtkmm2ext/wscript

diff --git a/libs/gtkmm2ext/gtkmm2ext/menu_elems.h b/libs/gtkmm2ext/gtkmm2ext/menu_elems.h
new file mode 100644 (file)
index 0000000..6079c3c
--- /dev/null
@@ -0,0 +1,42 @@
+/* menu_elems.h
+ *
+ * Copyright (C) 2017 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _gtkmm2ext_menu_elems_h_
+#define _gtkmm2ext_menu_elems_h_
+
+#include <gtkmm/menu_elems.h>
+#include "gtkmm2ext/visibility.h"
+
+namespace Gtkmm2ext {
+
+class LIBGTKMM2EXT_API MenuElemNoMnemonic : public Gtk::Menu_Helpers::Element
+{
+public:
+       MenuElemNoMnemonic (const Glib::ustring& label, const CallSlot& slot);
+};
+
+class LIBGTKMM2EXT_API CheckMenuElemNoMnemonic : public Gtk::Menu_Helpers::Element
+{
+public:
+       CheckMenuElemNoMnemonic (const Glib::ustring& label, const CallSlot& slot = CallSlot());
+};
+
+}
+#endif
diff --git a/libs/gtkmm2ext/menu_elems.cc b/libs/gtkmm2ext/menu_elems.cc
new file mode 100644 (file)
index 0000000..5de5ac9
--- /dev/null
@@ -0,0 +1,44 @@
+/* menu_elems.h
+ *
+ * Copyright (C) 2017 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gtk/gtk.h>
+#include "gtkmm2ext/menu_elems.h"
+
+using namespace Gtkmm2ext;
+using namespace Gtk;
+
+MenuElemNoMnemonic::MenuElemNoMnemonic (const Glib::ustring& label, const CallSlot& slot)
+{
+       set_child (manage (new MenuItem (label, false)));
+       if(slot) {
+               child_->signal_activate().connect(slot);
+       }
+       child_->show();
+}
+
+CheckMenuElemNoMnemonic::CheckMenuElemNoMnemonic (const Glib::ustring& label, const CallSlot& slot)
+{
+       CheckMenuItem* item = manage (new CheckMenuItem (label, false));
+       set_child (item);
+       if(slot) {
+               item->signal_toggled().connect(slot);
+       }
+       child_->show();
+}
index 78a84d544e8b7368672c887cbdf3ee64f0028997..d97d6a1e8eb26deecf39f891a886e238362012e5 100644 (file)
@@ -51,6 +51,7 @@ gtkmm2ext_sources = [
         'gtkapplication.c',
         'idle_adjustment.cc',
         'keyboard.cc',
+        'menu_elems.cc',
         'pane.cc',
         'paths_dialog.cc',
         'persistent_tooltip.cc',