// Scintilla "Bait" example to demonstrate various problems with folding #include #include //#include #define PLAT_GTK 1 #include 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; }