aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/interface-gtk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface-gtk.h')
-rw-r--r--src/interface-gtk.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/interface-gtk.h b/src/interface-gtk.h
new file mode 100644
index 0000000..b46f821
--- /dev/null
+++ b/src/interface-gtk.h
@@ -0,0 +1,73 @@
+#ifndef __INTERFACE_GTK_H
+#define __INTERFACE_GTK_H
+
+#include <stdarg.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <Scintilla.h>
+#include <ScintillaWidget.h>
+
+#include "interface.h"
+
+extern class InterfaceGtk : public Interface {
+ GtkWidget *window;
+ GtkWidget *editor_widget;
+ GtkWidget *cmdline_widget;
+ GtkWidget *info_widget, *message_widget;
+
+ GtkWidget *popup_widget;
+
+public:
+ InterfaceGtk();
+ ~InterfaceGtk();
+
+ inline GOptionGroup *
+ get_options(void)
+ {
+ return gtk_get_option_group(TRUE);
+ }
+ inline void
+ parse_args(int &argc, char **&argv)
+ {
+ gtk_parse_args(&argc, &argv);
+ }
+
+ void vmsg(MessageType type, const gchar *fmt, va_list ap);
+ void msg_clear(void);
+
+ inline sptr_t
+ ssm(unsigned int iMessage, uptr_t wParam = 0, sptr_t lParam = 0)
+ {
+ return scintilla_send_message(SCINTILLA(editor_widget),
+ iMessage, wParam, lParam);
+ }
+
+ void info_update(QRegister *reg);
+ void info_update(Buffer *buffer);
+
+ void cmdline_update(const gchar *cmdline = NULL);
+
+ void popup_add(PopupEntryType type,
+ const gchar *name, bool highlight = false);
+ inline void
+ popup_show(void)
+ {
+ gtk_widget_show(popup_widget);
+ }
+ void popup_clear(void);
+
+ /* main entry point */
+ inline void
+ event_loop(void)
+ {
+ gtk_widget_show_all(window);
+ gtk_main();
+ }
+
+private:
+ static void widget_set_font(GtkWidget *widget, const gchar *font_name);
+} interface;
+
+#endif