| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- MODULE sourceview ;
- (*
- m2-GTK4 example - a small source-code editor built from
- GtkSourceView 5:
- GtkApplicationWindow > GtkScrolledWindow > GtkSourceView
- driven by a GtkSourceBuffer with the "C" language definition and
- the "Adwaita" style scheme, line numbers, current-line highlight
- and a 4-column tab width.
- Build: make examples
- Run: ./build/examples/sourceview
- *)
- FROM Gio IMPORT g_application_run;
- FROM GtkApplication IMPORT gtk_application_new;
- FROM GtkWindow IMPORT gtk_application_window_new, gtk_window_set_title,
- gtk_window_set_default_size, gtk_window_set_child, gtk_window_present;
- FROM GtkScrolledWindow IMPORT gtk_scrolled_window_new,
- gtk_scrolled_window_set_child;
- FROM GtkWidget IMPORT gtk_widget_set_vexpand;
- FROM GtkTextBuffer IMPORT gtk_text_buffer_set_text;
- FROM GtkUtils IMPORT Connect;
- FROM GtkSourceFunctions IMPORT gtk_source_init;
- FROM GtkSourceBuffer IMPORT gtk_source_buffer_new,
- gtk_source_buffer_set_language, gtk_source_buffer_set_style_scheme;
- FROM GtkSourceLanguageManager IMPORT gtk_source_language_manager_get_default,
- gtk_source_language_manager_get_language;
- FROM GtkSourceStyleSchemeManager IMPORT
- gtk_source_style_scheme_manager_get_default,
- gtk_source_style_scheme_manager_get_scheme;
- FROM GtkSourceView IMPORT gtk_source_view_new_with_buffer,
- gtk_source_view_set_show_line_numbers,
- gtk_source_view_set_highlight_current_line, gtk_source_view_set_tab_width;
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM libc IMPORT printf;
- CONST
- AppId = "org.example.m2gtk4.SourceView";
- Sample =
- "/* hello.c - a tiny C program */\n" +
- "#include <stdio.h>\n" +
- "\n" +
- "int main (int argc, char **argv)\n" +
- "{\n" +
- " for (int i = 0; i < 3; i++)\n" +
- " printf ('Hello, GNU Modula-2 + GtkSourceView! (%d)\\n', i);\n" +
- " return 0;\n" +
- "}\n";
- PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
- VAR
- window, sw, view, buffer, lang, scheme: ADDRESS;
- BEGIN
- buffer := gtk_source_buffer_new(NIL);
- lang := gtk_source_language_manager_get_language
- (gtk_source_language_manager_get_default(), "c");
- IF lang # NIL THEN
- gtk_source_buffer_set_language(buffer, lang)
- END;
- scheme := gtk_source_style_scheme_manager_get_scheme
- (gtk_source_style_scheme_manager_get_default(), "Adwaita");
- IF scheme # NIL THEN
- gtk_source_buffer_set_style_scheme(buffer, scheme)
- END;
- gtk_text_buffer_set_text(buffer, Sample, -1);
- view := gtk_source_view_new_with_buffer(buffer);
- gtk_source_view_set_show_line_numbers(view, 1);
- gtk_source_view_set_highlight_current_line(view, 1);
- gtk_source_view_set_tab_width(view, 4);
- sw := gtk_scrolled_window_new();
- gtk_scrolled_window_set_child(sw, view);
- gtk_widget_set_vexpand(sw, 1);
- window := gtk_application_window_new(application);
- gtk_window_set_title(window, "m2-GTK4 - GtkSourceView");
- gtk_window_set_default_size(window, 640, 480);
- gtk_window_set_child(window, sw);
- gtk_window_present(window)
- END OnActivate;
- VAR
- app: ADDRESS;
- BEGIN
- gtk_source_init();
- app := gtk_application_new(AppId, 0);
- IF app = NIL THEN
- printf("gtk_application_new failed\n");
- HALT(1)
- END;
- Connect(app, "activate", ADR(OnActivate), NIL);
- g_application_run(app, 0, NIL)
- END sourceview.
|