diff options
Diffstat (limited to 'src/interface-gtk.h')
-rw-r--r-- | src/interface-gtk.h | 73 |
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 |