SourceWindow() { GtkPP::ScrolledWindow::Init(); auto sview = gtk_source_view_new(); Add(sview); ShowAll(); }
/* * Class method: new(buffer=nil) * buffer: a Gtk::SourceBuffer object. * * Creates a new Gtk::SourceView. If buffer is not provided or nil, an empty * buffer will be created for you. Note that one buffer can be shared among * many widgets. * * Returns: a newly created Gtk::SourceView object. */ static VALUE rg_initialize(int argc, VALUE *argv, VALUE self) { VALUE buffer; GtkWidget *widget; rb_scan_args(argc, argv, "01", &buffer); if (NIL_P(buffer)) widget = gtk_source_view_new(); else widget = gtk_source_view_new_with_buffer(RVAL2GTKSOURCEBUFFER(buffer)); RBGTK_INITIALIZE(self, widget); return self; }
SourceView::SourceView(): Gtk::ScrolledWindow(), source_view(GTK_SOURCE_VIEW(gtk_source_view_new())) { add(*Glib::wrap(GTK_WIDGET(source_view))); completion = gtk_source_view_get_completion(source_view); completion_words = gtk_source_completion_words_new("Suggestions", nullptr); gtk_source_completion_words_register(completion_words, gtk_text_view_get_buffer(GTK_TEXT_VIEW(source_view))); gtk_source_completion_add_provider(completion, GTK_SOURCE_COMPLETION_PROVIDER(completion_words), nullptr); gtk_source_buffer_set_highlight_matching_brackets(GetSourceBuffer(), TRUE); gtk_source_view_set_show_line_marks(source_view, TRUE); ShowLineNumbers(true); show_all(); }
static void test_buffer_view_ref (void) { GtkSourcePrintCompositor *compositor; GtkWidget *view = NULL; GtkSourceBuffer *buffer = NULL; view = gtk_source_view_new (); compositor = gtk_source_print_compositor_new_from_view (GTK_SOURCE_VIEW (view)); buffer = gtk_source_print_compositor_get_buffer (compositor); g_assert (GTK_SOURCE_IS_BUFFER (buffer)); gtk_widget_destroy (view); buffer = gtk_source_print_compositor_get_buffer (compositor); g_assert (GTK_SOURCE_IS_BUFFER (buffer)); g_object_unref (G_OBJECT (compositor)); }
GtkWidget* create_window (void) { GtkWidget *window; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_resize(GTK_WINDOW(window),800,600); view = gtk_source_view_new(); GtkWidget *scroll = gtk_scrolled_window_new(NULL,NULL); gtk_container_add(GTK_CONTAINER(scroll),view); gtk_container_add(GTK_CONTAINER(window),scroll); gtk_widget_set_has_tooltip(view,TRUE); g_signal_connect(view, "key-release-event", G_CALLBACK(key_press), NULL); g_signal_connect(window, "destroy", G_CALLBACK(destroy_cb), NULL); return window; }
static void test_get_buffer (void) { GtkWidget* view; GtkSourceBuffer* buffer; view = gtk_source_view_new (); buffer = GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view))); g_assert (buffer != NULL); g_assert (GTK_SOURCE_IS_BUFFER (buffer)); if (g_object_is_floating (view)) { g_object_ref_sink (view); } /* Here we check if notify_buffer recreates the buffer while view is being * destroyed, which causes assertion failure in GtkTextView's finalize () * function. * Please see: https://bugzilla.gnome.org/show_bug.cgi?id=634510 */ g_object_unref (view); }
MapeEditView* mape_edit_view_new(MapePreView* pre_view, MapeStatusbar* statusbar, GError** error) { MapeEditView* view; GtkSourceBuffer* buf; GPtrArray* search_dirs; const gchar* const* data_dirs; const gchar* const* dir; view = malloc(sizeof(MapeEditView) ); view->pre_view = pre_view; view->statusbar = statusbar; view->file_path = NULL; view->encoding = "UTF-8"; view->type = MAPE_MAPGEN_NONE; view->render_thread = NULL; view->rerender = FALSE; view->fixed_seed = FALSE; view->view = gtk_source_view_new(); buf = GTK_SOURCE_BUFFER( gtk_text_view_get_buffer(GTK_TEXT_VIEW(view->view) ) ); g_signal_connect_after( G_OBJECT(buf), "changed", G_CALLBACK(mape_edit_view_cb_changed), view ); g_signal_connect( G_OBJECT(pre_view->event_box), "button-press-event", G_CALLBACK(mape_edit_view_cb_update), view ); view->font_desc = pango_font_description_new(); pango_font_description_set_family(view->font_desc, "monospace"); gtk_widget_modify_font(view->view, view->font_desc); search_dirs = g_ptr_array_new(); #ifdef G_OS_WIN32 g_ptr_array_add( search_dirs, g_win32_get_package_installation_subdirectory(NULL, NULL, "mape-syntax") ); #endif g_ptr_array_add( search_dirs, g_build_filename(g_get_home_dir(), ".mape-syntax", NULL) ); g_ptr_array_add( search_dirs, g_strdup("./mape-syntax") ); g_ptr_array_add( search_dirs, g_strdup("./src/mape/mape-syntax") ); data_dirs = g_get_system_data_dirs(); for(dir = data_dirs; *dir != NULL; ++ dir) g_ptr_array_add(search_dirs, g_build_filename(*dir, "mape", NULL)); g_ptr_array_add(search_dirs, NULL); view->lang_manager = gtk_source_language_manager_new(); gtk_source_language_manager_set_search_path( view->lang_manager, (gchar**)search_dirs->pdata ); view->style_manager = gtk_source_style_scheme_manager_new(); gtk_source_style_scheme_manager_set_search_path( view->style_manager, (gchar**)search_dirs->pdata ); g_ptr_array_foreach(search_dirs, (GFunc)g_free, NULL); g_ptr_array_free(search_dirs, TRUE); mape_edit_view_set_filename(view, NULL); gtk_widget_show(view->view); view->window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(view->window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(view->window), GTK_SHADOW_IN ); gtk_container_add( GTK_CONTAINER(view->window), view->view ); gtk_widget_show(view->window); return view; }
NetlistEditor * netlist_editor_new (GtkSourceBuffer * textbuffer) { NetlistEditor * nle; GtkBuilder *gui; GError *perror = NULL; GtkWidget * toplevel; GtkScrolledWindow * scroll; GtkSourceView * source_view; GtkSourceLanguageManager * lm; GtkButton * save, * close; GtkSourceLanguage *lang=NULL; if (!textbuffer) return NULL; if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_("Could not create the netlist dialog")); return NULL; } gtk_builder_set_translation_domain (gui, NULL); nle = NETLIST_EDITOR (g_object_new (netlist_editor_get_type (), NULL)); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/view-netlist.ui", &perror) <= 0) { gchar *msg; msg = perror->message; oregano_error_with_title (_("Could not create the netlist dialog"), msg); g_error_free (perror); return NULL; } toplevel = GTK_WIDGET (gtk_builder_get_object (gui, "toplevel")); gtk_window_set_default_size (GTK_WINDOW (toplevel), 800, 600); gtk_window_set_title (GTK_WINDOW (toplevel), "Net List Editor\n"); scroll = GTK_SCROLLED_WINDOW (gtk_builder_get_object (gui, "netlist-scrolled-window")); source_view = GTK_SOURCE_VIEW (gtk_source_view_new ()); lm = GTK_SOURCE_LANGUAGE_MANAGER (gtk_source_language_manager_new ()); setup_language_manager_path (lm); g_object_set_data_full (G_OBJECT (source_view), "language-manager", lm, (GDestroyNotify) g_object_unref); lang = gtk_source_language_manager_get_language (lm, "netlist"); if (lang) { NG_DEBUG ("\"%s\" from \"%s\"", gtk_source_language_get_name (lang), OREGANO_LANGDIR "/netlist.lang"); gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (textbuffer), lang); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (textbuffer), TRUE); gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (textbuffer), TRUE); } else { g_warning ("Can't load netlist.lang in %s", OREGANO_LANGDIR "/netlist.lang"); } gtk_text_view_set_editable (GTK_TEXT_VIEW (source_view), TRUE); gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view), GTK_TEXT_BUFFER (textbuffer)); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (source_view)); close = GTK_BUTTON (gtk_builder_get_object (gui, "btn_close")); g_signal_connect_swapped (G_OBJECT (close), "clicked", G_CALLBACK (g_object_unref), G_OBJECT (nle)); save = GTK_BUTTON (gtk_builder_get_object (gui, "btn_save")); g_signal_connect (G_OBJECT (save), "clicked", G_CALLBACK (netlist_editor_save), nle); // Set tab, fonts, wrap mode, colors, etc. according // to preferences nle->priv->view = GTK_TEXT_VIEW (source_view); nle->priv->toplevel = GTK_WINDOW (toplevel); nle->priv->save = save; nle->priv->close = close; nle->priv->buffer = textbuffer; gtk_widget_show_all (GTK_WIDGET (toplevel)); return nle; }
static void create_window (void) { GtkWidget *window; GtkWidget *hgrid; GtkWidget *panel_grid; GtkWidget *scrolled_window; GtkWidget *gsv_checkbutton; GtkWidget *tag_set_checkbutton; GtkWidget *tag_checkbutton; GtkSourceView *view; GtkSourceBuffer *buffer; GtkTextTag *tag; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); g_signal_connect (window, "destroy", gtk_main_quit, NULL); hgrid = gtk_grid_new (); gtk_orientable_set_orientation (GTK_ORIENTABLE (hgrid), GTK_ORIENTATION_HORIZONTAL); view = GTK_SOURCE_VIEW (gtk_source_view_new ()); g_object_set (view, "expand", TRUE, NULL); gtk_text_view_set_monospace (GTK_TEXT_VIEW (view), TRUE); buffer = GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view))); tag = gtk_source_buffer_create_source_tag (buffer, NULL, "draw-spaces", FALSE, NULL); fill_buffer (GTK_TEXT_BUFFER (buffer), tag); gtk_source_view_set_draw_spaces (view, GTK_SOURCE_DRAW_SPACES_ALL); panel_grid = gtk_grid_new (); gtk_orientable_set_orientation (GTK_ORIENTABLE (panel_grid), GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (hgrid), panel_grid); gtk_grid_set_row_spacing (GTK_GRID (panel_grid), 6); g_object_set (panel_grid, "margin", 6, NULL); gsv_checkbutton = gtk_check_button_new_with_label ("GtkSourceView draw-spaces"); gtk_container_add (GTK_CONTAINER (panel_grid), gsv_checkbutton); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gsv_checkbutton), TRUE); g_signal_connect (gsv_checkbutton, "toggled", G_CALLBACK (gsv_checkbutton_toggled_cb), view); tag_set_checkbutton = gtk_check_button_new_with_label ("GtkSourceTag draw-spaces-set"); gtk_container_add (GTK_CONTAINER (panel_grid), tag_set_checkbutton); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tag_set_checkbutton), TRUE); g_object_bind_property (tag_set_checkbutton, "active", tag, "draw-spaces-set", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); tag_checkbutton = gtk_check_button_new_with_label ("GtkSourceTag draw-spaces"); gtk_container_add (GTK_CONTAINER (panel_grid), tag_checkbutton); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tag_checkbutton), FALSE); g_object_bind_property (tag_checkbutton, "active", tag, "draw-spaces", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (view)); gtk_container_add (GTK_CONTAINER (hgrid), scrolled_window); gtk_container_add (GTK_CONTAINER (window), hgrid); gtk_widget_show_all (window); }
NetlistEditor * netlist_editor_new (GtkSourceBuffer * textbuffer) { gchar** lang_files; NetlistEditor * nle; GladeXML * gui; GtkWidget * toplevel; GtkScrolledWindow * scroll; GtkSourceView * source_view; GtkSourceLanguageManager * lm; GtkButton * save, * sim, * close, * print; GtkSourceLanguage *lang=NULL; const GSList *list; if (!textbuffer) return NULL; nle = NETLIST_EDITOR (g_object_new (netlist_editor_get_type (), NULL)); netlist_editor_get_config (nle); if (!g_file_test (OREGANO_GLADEDIR "/view-netlist.glade2", G_FILE_TEST_EXISTS)) { gchar *msg; msg = g_strdup_printf ( _("The file %s could not be found. You might need to reinstall Oregano to fix this."), OREGANO_GLADEDIR "/view-netlist.glade2"); oregano_error_with_title (_("Could not create the netlist dialog"), msg); g_free (msg); return NULL; } gui = glade_xml_new (OREGANO_GLADEDIR "/view-netlist.glade2", NULL, NULL); toplevel = glade_xml_get_widget (gui, "toplevel"); gtk_window_set_default_size (GTK_WINDOW (toplevel), 800, 600); gtk_window_set_title (GTK_WINDOW (toplevel), "Net List Editor\n"); scroll = GTK_SCROLLED_WINDOW (glade_xml_get_widget (gui, "netlist-scrolled-window")); source_view = GTK_SOURCE_VIEW (gtk_source_view_new ()); lm = GTK_SOURCE_LANGUAGE_MANAGER (gtk_source_language_manager_new ()); setup_language_manager_path (lm); g_object_set_data_full (G_OBJECT (source_view), "language-manager", lm, (GDestroyNotify) g_object_unref); lang = gtk_source_language_manager_get_language (lm, "netlist"); if (lang) { gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (textbuffer), lang); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (textbuffer), TRUE); gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (textbuffer), TRUE); } else { g_warning ("Can't load netlist.lang in %s", OREGANO_LANGDIR "/netlist.lang"); } gtk_text_view_set_editable (GTK_TEXT_VIEW (source_view), TRUE); gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view), GTK_TEXT_BUFFER (textbuffer)); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (source_view)); close = GTK_BUTTON (glade_xml_get_widget (gui, "btn_close")); g_signal_connect_swapped (G_OBJECT (close), "clicked", G_CALLBACK (g_object_unref), G_OBJECT (nle)); save = GTK_BUTTON (glade_xml_get_widget (gui, "btn_save")); g_signal_connect (G_OBJECT (save), "clicked", G_CALLBACK (netlist_editor_save), nle); sim = GTK_BUTTON (glade_xml_get_widget (gui, "btn_sim")); g_signal_connect (G_OBJECT (sim), "clicked", G_CALLBACK (netlist_editor_simulate), nle); print = GTK_BUTTON (glade_xml_get_widget (gui, "btn_print")); g_signal_connect (G_OBJECT (print), "clicked", G_CALLBACK (netlist_editor_print), nle); /* * Set tab, fonts, wrap mode, colors, etc. according * to preferences */ nle->priv->lm = lm; nle->priv->view = GTK_TEXT_VIEW (source_view); nle->priv->toplevel = GTK_WINDOW (toplevel); nle->priv->sim = sim; nle->priv->save = save; nle->priv->close = close; nle->priv->buffer = textbuffer; gtk_widget_show_all (GTK_WIDGET (toplevel)); return nle; }
int main(int argc, char **argv) { BrailleMusicEditor *editor; // allocate the memory needed by our BrailleMusicEditor struct editor = g_slice_new (BrailleMusicEditor); //initialize GTK+ libraries gtk_init(&argc, &argv); ev_init(); // Creation of the main window create_window("BMC",600,400, editor); editor->vbox = gtk_vbox_new(FALSE, 2); gtk_container_add(GTK_CONTAINER(editor->window), editor->vbox); //Creation of the menubar create_menubar(editor); gtk_box_pack_start(GTK_BOX(editor->vbox), editor->menubar, FALSE, FALSE, 0); // Creation of the toolbar create_toolbar(editor); gtk_box_pack_start(GTK_BOX(editor->vbox), editor->toolbar, FALSE, FALSE, 2); //Creation of the two text views with scrollbars editor->hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(editor->vbox), editor->hbox); editor->edit_scrollbar = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(editor->edit_scrollbar), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(editor->hbox),editor->edit_scrollbar, TRUE, TRUE, 5); editor->textview=gtk_source_view_new(); //show line number gtk_source_view_set_show_line_numbers(GTK_SOURCE_VIEW(editor->textview), TRUE); g_signal_connect(gtk_text_view_get_buffer(GTK_TEXT_VIEW(editor->textview)), "changed", G_CALLBACK(on_text_changed), editor); gtk_container_add(GTK_CONTAINER(editor->edit_scrollbar), editor->textview); //lexical coloration auto update g_signal_connect(gtk_text_view_get_buffer(GTK_TEXT_VIEW(editor->textview)), "changed", G_CALLBACK(coloration_update), editor); //score view editor->score_scrollbar = gtk_scrolled_window_new(NULL, NULL); gtk_box_pack_start(GTK_BOX(editor->hbox),editor->score_scrollbar, TRUE, TRUE, 5); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(editor->score_scrollbar), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); editor->score_view = ev_view_new(); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(editor->score_scrollbar), editor->score_view); show_score(editor); gtk_widget_grab_focus(editor->textview); //Creation of the message error views with scrollbar editor->error_scrollbar = gtk_scrolled_window_new(NULL, NULL); gtk_box_pack_start(GTK_BOX(editor->vbox),editor->error_scrollbar, FALSE, TRUE, 0); gtk_widget_set_size_request (editor->error_scrollbar, -1, 100); gtk_container_set_border_width(GTK_CONTAINER(editor->error_scrollbar), 5); editor->error_view = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(editor->error_view), FALSE); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(editor->error_scrollbar), editor->error_view); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(editor->error_scrollbar), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); // show the window gtk_widget_show_all(editor->window); // enter GTK+ main loop gtk_main(); // free memory we allocated for BrailleMusicEditor struct g_slice_free (BrailleMusicEditor, editor); return EXIT_SUCCESS; }