aboutsummaryrefslogtreecommitdiff
path: root/tests/bait.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bait.c')
-rw-r--r--tests/bait.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/bait.c b/tests/bait.c
new file mode 100644
index 0000000..fd6081b
--- /dev/null
+++ b/tests/bait.c
@@ -0,0 +1,63 @@
+// Scintilla "Bait" example to demonstrate various problems with folding
+#include <gtk/gtk.h>
+
+#include <Scintilla.h>
+//#include <SciLexer.h>
+#define PLAT_GTK 1
+#include <ScintillaWidget.h>
+
+static int exit_app(GtkWidget*w, GdkEventAny*e, gpointer p) {
+ gtk_main_quit();
+ return w||e||p||1; // Avoid warnings
+}
+
+int main(int argc, char **argv) {
+ GtkWidget *app;
+ GtkWidget *editor;
+ ScintillaObject *sci;
+
+ gtk_init(&argc, &argv);
+ app = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ editor = scintilla_new();
+ sci = SCINTILLA(editor);
+
+ gtk_container_add(GTK_CONTAINER(app), editor);
+ g_signal_connect(app, "delete_event", G_CALLBACK(exit_app), 0);
+
+ scintilla_set_id(sci, 0);
+ //gtk_widget_set_usize(editor, 500, 300);
+
+#define SSM(m, w, l) scintilla_send_message(sci, m, w, l)
+
+ SSM(SCI_STYLESETBACK, STYLE_DEFAULT, 0x000000);
+ SSM(SCI_STYLESETFORE, STYLE_DEFAULT, 0xFFFFFF);
+ SSM(SCI_STYLECLEARALL, 0, 0);
+
+ SSM(SCI_INSERTTEXT, 0, (sptr_t)
+ "int main(int argc, char **argv) {\n"
+ " // Start up the gnome\n"
+ " gnome_init(\"stest\", \"1.0\", argc, argv);\n}"
+ );
+
+ /*
+ * FIXME: Should enable automatic folding by clicking on the margin.
+ */
+ SSM(SCI_SETAUTOMATICFOLD, SC_AUTOMATICFOLD_CLICK | SC_AUTOMATICFOLD_SHOW | SC_AUTOMATICFOLD_CHANGE, 0);
+
+ SSM(SCI_SETMARGINWIDTHN, 2, SSM(SCI_TEXTWIDTH, 33, (sptr_t)"XX"));
+ SSM(SCI_SETMARGINMASKN, 2, (1 << SC_MARKNUM_FOLDER) | (1 << SC_MARKNUM_FOLDEROPEN));
+ /*
+ * FIXME: Should inherit background color from STYLE_DEFAULT?
+ */
+ SSM(SCI_SETMARGINTYPEN, 2, SC_MARGIN_BACK);
+
+ SSM(SCI_SETFOLDLEVEL, 0, (SC_FOLDLEVELBASE) | SC_FOLDLEVELHEADERFLAG);
+ SSM(SCI_SETFOLDLEVEL, 1, (SC_FOLDLEVELBASE + 1));
+ //SSM(SCI_TOGGLEFOLD, 0, 0);
+
+ gtk_widget_show_all(app);
+ gtk_widget_grab_focus(GTK_WIDGET(editor));
+ gtk_main();
+
+ return 0;
+}