aboutsummaryrefslogtreecommitdiffhomepage
path: root/interface-gtk.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-12-04 17:29:01 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-12-04 22:07:08 +0100
commitd8a316514c03d85b771a9dce4a8a51b875d955b3 (patch)
tree8966c29db767a155848f6d90f76771ce5b9de32e /interface-gtk.cpp
parentb120616b6da52e951097f69ad267de06081d218a (diff)
downloadsciteco-d8a316514c03d85b771a9dce4a8a51b875d955b3.tar.gz
autoconf preparation: move everything into src/ subdir
Diffstat (limited to 'interface-gtk.cpp')
-rw-r--r--interface-gtk.cpp248
1 files changed, 0 insertions, 248 deletions
diff --git a/interface-gtk.cpp b/interface-gtk.cpp
deleted file mode 100644
index 7515b2f..0000000
--- a/interface-gtk.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-#include <stdarg.h>
-
-#include <glib.h>
-#include <glib/gprintf.h>
-#include <glib/gstdio.h>
-
-#include <gdk/gdk.h>
-#include <gdk/gdkkeysyms.h>
-
-#include <gtk/gtk.h>
-#include "gtk-info-popup.h"
-
-#include <Scintilla.h>
-#include <ScintillaWidget.h>
-
-#include "sciteco.h"
-#include "qregisters.h"
-#include "ring.h"
-#include "interface.h"
-#include "interface-gtk.h"
-
-InterfaceGtk interface;
-
-extern "C" {
-static void scintilla_notify(ScintillaObject *sci, uptr_t idFrom,
- SCNotification *notify, gpointer user_data);
-static gboolean cmdline_key_pressed(GtkWidget *widget, GdkEventKey *event,
- gpointer user_data);
-static gboolean exit_app(GtkWidget *w, GdkEventAny *e, gpointer p);
-}
-
-#define UNNAMED_FILE "(Unnamed)"
-
-InterfaceGtk::InterfaceGtk()
-{
- GtkWidget *vbox;
- GtkWidget *info_content;
-
- gtk_init(NULL, NULL);
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window), PACKAGE_NAME);
- g_signal_connect(G_OBJECT(window), "delete-event",
- G_CALLBACK(exit_app), NULL);
-
- vbox = gtk_vbox_new(FALSE, 0);
-
- editor_widget = scintilla_new();
- scintilla_set_id(SCINTILLA(editor_widget), 0);
- gtk_widget_set_usize(editor_widget, 500, 300);
- gtk_widget_set_can_focus(editor_widget, FALSE);
- g_signal_connect(G_OBJECT(editor_widget), SCINTILLA_NOTIFY,
- G_CALLBACK(scintilla_notify), NULL);
- gtk_box_pack_start(GTK_BOX(vbox), editor_widget, TRUE, TRUE, 0);
-
- info_widget = gtk_info_bar_new();
- info_content = gtk_info_bar_get_content_area(GTK_INFO_BAR(info_widget));
- message_widget = gtk_label_new("");
- gtk_misc_set_alignment(GTK_MISC(message_widget), 0., 0.);
- gtk_container_add(GTK_CONTAINER(info_content), message_widget);
- gtk_box_pack_start(GTK_BOX(vbox), info_widget, FALSE, FALSE, 0);
-
- cmdline_widget = gtk_entry_new();
- gtk_entry_set_has_frame(GTK_ENTRY(cmdline_widget), FALSE);
- gtk_editable_set_editable(GTK_EDITABLE(cmdline_widget), FALSE);
- widget_set_font(cmdline_widget, "Courier");
- g_signal_connect(G_OBJECT(cmdline_widget), "key-press-event",
- G_CALLBACK(cmdline_key_pressed), NULL);
- gtk_box_pack_start(GTK_BOX(vbox), cmdline_widget, FALSE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(window), vbox);
-
- popup_widget = gtk_info_popup_new(cmdline_widget);
-
- gtk_widget_grab_focus(cmdline_widget);
-
- ssm(SCI_SETFOCUS, TRUE);
-
- cmdline_update("");
-}
-
-void
-InterfaceGtk::vmsg(MessageType type, const gchar *fmt, va_list ap)
-{
- static const GtkMessageType type2gtk[] = {
- /* [MSG_USER] = */ GTK_MESSAGE_OTHER,
- /* [MSG_INFO] = */ GTK_MESSAGE_INFO,
- /* [MSG_WARNING] = */ GTK_MESSAGE_WARNING,
- /* [MSG_ERROR] = */ GTK_MESSAGE_ERROR
- };
-
- va_list aq;
- gchar buf[255];
-
- va_copy(aq, ap);
- stdio_vmsg(type, fmt, ap);
- g_vsnprintf(buf, sizeof(buf), fmt, aq);
- va_end(aq);
-
- gtk_info_bar_set_message_type(GTK_INFO_BAR(info_widget),
- type2gtk[type]);
- gtk_label_set_text(GTK_LABEL(message_widget), buf);
-}
-
-void
-InterfaceGtk::msg_clear(void)
-{
- gtk_info_bar_set_message_type(GTK_INFO_BAR(info_widget),
- GTK_MESSAGE_OTHER);
- gtk_label_set_text(GTK_LABEL(message_widget), "");
-}
-
-void
-InterfaceGtk::info_update(QRegister *reg)
-{
- gchar buf[255];
-
- g_snprintf(buf, sizeof(buf), "%s - <QRegister> %s", PACKAGE_NAME,
- reg->name);
- gtk_window_set_title(GTK_WINDOW(window), buf);
-}
-
-void
-InterfaceGtk::info_update(Buffer *buffer)
-{
- gchar buf[255];
-
- g_snprintf(buf, sizeof(buf), "%s - <Buffer> %s%s", PACKAGE_NAME,
- buffer->filename ? : UNNAMED_FILE,
- buffer->dirty ? "*" : "");
- gtk_window_set_title(GTK_WINDOW(window), buf);
-}
-
-void
-InterfaceGtk::cmdline_update(const gchar *cmdline)
-{
- gint pos = 1;
-
- if (!cmdline)
- /* widget automatically redrawn */
- return;
-
- gtk_entry_set_text(GTK_ENTRY(cmdline_widget), "*");
- gtk_editable_insert_text(GTK_EDITABLE(cmdline_widget),
- cmdline, -1, &pos);
- gtk_editable_set_position(GTK_EDITABLE(cmdline_widget), pos);
-}
-
-void
-InterfaceGtk::popup_add(PopupEntryType type,
- const gchar *name, bool highlight)
-{
- static const GtkInfoPopupEntryType type2gtk[] = {
- /* [POPUP_PLAIN] = */ GTK_INFO_POPUP_PLAIN,
- /* [POPUP_FILE] = */ GTK_INFO_POPUP_FILE,
- /* [POPUP_DIRECTORY] = */ GTK_INFO_POPUP_DIRECTORY
- };
-
- gtk_info_popup_add(GTK_INFO_POPUP(popup_widget),
- type2gtk[type], name, highlight);
-}
-
-void
-InterfaceGtk::popup_clear(void)
-{
- if (gtk_widget_get_visible(popup_widget)) {
- gtk_widget_hide(popup_widget);
- gtk_info_popup_clear(GTK_INFO_POPUP(popup_widget));
- }
-}
-
-void
-InterfaceGtk::widget_set_font(GtkWidget *widget, const gchar *font_name)
-{
- PangoFontDescription *font_desc;
-
- font_desc = pango_font_description_from_string(font_name);
- gtk_widget_modify_font(widget, font_desc);
- pango_font_description_free(font_desc);
-}
-
-InterfaceGtk::~InterfaceGtk()
-{
- gtk_widget_destroy(popup_widget);
- gtk_widget_destroy(window);
-
- scintilla_release_resources();
-}
-
-/*
- * GTK+ callbacks
- */
-
-static void
-scintilla_notify(ScintillaObject *sci __attribute__((unused)),
- uptr_t idFrom __attribute__((unused)),
- SCNotification *notify,
- gpointer user_data __attribute__((unused)))
-{
- interface.process_notify(notify);
-}
-
-static gboolean
-cmdline_key_pressed(GtkWidget *widget, GdkEventKey *event,
- gpointer user_data __attribute__((unused)))
-{
-#ifdef DEBUG
- g_printf("KEY \"%s\" (%d) SHIFT=%d CNTRL=%d\n",
- event->string, *event->string,
- event->state & GDK_SHIFT_MASK, event->state & GDK_CONTROL_MASK);
-#endif
-
- switch (event->keyval) {
- case GDK_BackSpace:
- cmdline_keypress('\b');
- break;
- case GDK_Tab:
- cmdline_keypress('\t');
- break;
- case GDK_Return:
- switch (interface.ssm(SCI_GETEOLMODE)) {
- case SC_EOL_CR:
- cmdline_keypress('\r');
- break;
- case SC_EOL_CRLF:
- cmdline_keypress('\r');
- /* fall through */
- case SC_EOL_LF:
- default:
- cmdline_keypress('\n');
- }
- break;
- default:
- if (*event->string)
- cmdline_keypress(*event->string);
- }
-
- return TRUE;
-}
-
-static gboolean
-exit_app(GtkWidget *w __attribute__((unused)),
- GdkEventAny *e __attribute__((unused)),
- gpointer p __attribute__((unused)))
-{
- gtk_main_quit();
- return TRUE;
-}