aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-15 01:45:32 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-15 01:45:32 +0100
commit905e69b74fe6e822e0d00245e2c210e9aadb6437 (patch)
treea41c2e3c248c81306ac5ab2b2d583e2b5efeb341
parent8c264612fd7056e1d47dedc2a245e4deb83cc552 (diff)
downloadsciteco-905e69b74fe6e822e0d00245e2c210e9aadb6437.tar.gz
make it possible for interface classes to define a get_options() method to add an options group to the help menu
-rw-r--r--interface-gtk.h5
-rw-r--r--interface.h5
-rw-r--r--main.cpp9
3 files changed, 17 insertions, 2 deletions
diff --git a/interface-gtk.h b/interface-gtk.h
index 76868fd..e6b9166 100644
--- a/interface-gtk.h
+++ b/interface-gtk.h
@@ -20,6 +20,11 @@ public:
InterfaceGtk();
//~InterfaceGtk();
+ inline GOptionGroup *
+ get_options(void)
+ {
+ return gtk_get_option_group(TRUE);
+ }
inline void
parse_args(int &argc, char **&argv)
{
diff --git a/interface.h b/interface.h
index a67fbfa..cf261fb 100644
--- a/interface.h
+++ b/interface.h
@@ -15,6 +15,11 @@
*/
class Interface {
public:
+ virtual GOptionGroup *
+ get_options(void)
+ {
+ return NULL;
+ }
virtual void parse_args(int &argc, char **&argv) {}
enum MessageType {
diff --git a/main.cpp b/main.cpp
index 179d896..60e4c62 100644
--- a/main.cpp
+++ b/main.cpp
@@ -28,15 +28,20 @@ process_options(int &argc, char **&argv)
{NULL}
};
- GOptionContext *options;
+ GOptionContext *options;
+ GOptionGroup *interface_group = interface.get_options();
options = g_option_context_new("- Advanced interactive TECO");
+
g_option_context_add_main_entries(options, option_entries, NULL);
- g_option_context_add_group(options, gtk_get_option_group(TRUE));
+ if (interface_group)
+ g_option_context_add_group(options, interface_group);
+
if (!g_option_context_parse(options, &argc, &argv, NULL)) {
g_printf("Option parsing failed!\n");
exit(EXIT_FAILURE);
}
+
g_option_context_free(options);
if (mung_file) {