aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface.cpp')
-rw-r--r--src/interface.cpp114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/interface.cpp b/src/interface.cpp
new file mode 100644
index 0000000..aecba4e
--- /dev/null
+++ b/src/interface.cpp
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2012-2014 Robin Haberkorn
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <glib/gstdio.h>
+
+#include <Scintilla.h>
+#include <SciLexer.h>
+
+#include "sciteco.h"
+#include "interface.h"
+
+namespace SciTECO {
+
+void
+View::set_representations(void)
+{
+ static const char *reps[] = {
+ "^@", "^A", "^B", "^C", "^D", "^E", "^F", "^G",
+ "^H", "TAB" /* ^I */, "LF" /* ^J */, "^K", "^L", "CR" /* ^M */, "^N", "^O",
+ "^P", "^Q", "^R", "^S", "^T", "^U", "^V", "^W",
+ "^X", "^Y", "^Z", "$" /* ^[ */, "^\\", "^]", "^^", "^_"
+ };
+
+ for (guint cc = 0; cc < G_N_ELEMENTS(reps); cc++) {
+ gchar buf[] = {(gchar)cc, '\0'};
+ ssm(SCI_SETREPRESENTATION, (uptr_t)buf, (sptr_t)reps[cc]);
+ }
+}
+
+void
+View::initialize(void)
+{
+ ssm(SCI_SETFOCUS, TRUE);
+
+ ssm(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK);
+ ssm(SCI_SETCARETFORE, 0xFFFFFF);
+
+ /*
+ * FIXME: Default styles should probably be set interface-based
+ * (system defaults)
+ */
+ ssm(SCI_STYLESETFORE, STYLE_DEFAULT, 0xFFFFFF);
+ ssm(SCI_STYLESETBACK, STYLE_DEFAULT, 0x000000);
+ ssm(SCI_STYLESETFONT, STYLE_DEFAULT, (sptr_t)"Courier");
+ ssm(SCI_STYLECLEARALL);
+
+ ssm(SCI_STYLESETBACK, STYLE_LINENUMBER, 0x000000);
+}
+
+void
+Interface::UndoTokenShowView::run(void)
+{
+ /*
+ * Implementing this here allows us to reference
+ * `interface`
+ */
+ interface.show_view(view);
+}
+
+void
+Interface::stdio_vmsg(MessageType type, const gchar *fmt, va_list ap)
+{
+ gchar buf[255];
+
+ g_vsnprintf(buf, sizeof(buf), fmt, ap);
+
+ switch (type) {
+ case MSG_USER:
+ g_printf("%s\n", buf);
+ break;
+ case MSG_INFO:
+ g_printf("Info: %s\n", buf);
+ break;
+ case MSG_WARNING:
+ g_fprintf(stderr, "Warning: %s\n", buf);
+ break;
+ case MSG_ERROR:
+ g_fprintf(stderr, "Error: %s\n", buf);
+ break;
+ }
+}
+
+void
+Interface::process_notify(SCNotification *notify)
+{
+#ifdef DEBUG
+ g_printf("SCINTILLA NOTIFY: code=%d\n", notify->nmhdr.code);
+#endif
+}
+
+} /* namespace SciTECO */