static gint
schemes_compare(GtkSourceStyleScheme *a, GtkSourceStyleScheme *b)
{
	const gchar *name_a = gtk_source_style_scheme_get_name(a);
	const gchar *name_b = gtk_source_style_scheme_get_name(b);
	return g_utf8_collate(name_a, name_b);
}
static gint
schemes_compare (gconstpointer a, gconstpointer b)
{
	GtkSourceStyleScheme *scheme_a = (GtkSourceStyleScheme *)a;
	GtkSourceStyleScheme *scheme_b = (GtkSourceStyleScheme *)b;

	const gchar *name_a = gtk_source_style_scheme_get_name (scheme_a);
	const gchar *name_b = gtk_source_style_scheme_get_name (scheme_b);

	return g_utf8_collate (name_a, name_b);
}
示例#3
0
/* Helper function: enumeration callback for each color scheme */
static void
store_color_scheme(GtkSourceStyleScheme *scheme, GtkListStore *list)
{
	const char *id = gtk_source_style_scheme_get_id(scheme);
	const char *name = gtk_source_style_scheme_get_name(scheme);
	const char *description = gtk_source_style_scheme_get_description(scheme);

	/* We pick up system color schemes as well. These won't have translations in
	the gnome-inform7 domain, so if we can't get a translation then we try it
	again in GtkSourceView's translation domain. */
	const char *try_name = gettext(name);
	if (try_name == name) {  /* Pointer equality, not strcmp */
		char *save_domain = g_strdup(textdomain(NULL));
		textdomain(DOMAIN_FOR_GTKSOURCEVIEW_COLOR_SCHEMES);
		bind_textdomain_codeset(DOMAIN_FOR_GTKSOURCEVIEW_COLOR_SCHEMES, "UTF-8");
		name = gettext(name);
		description = gettext(description);
		textdomain(save_domain);
		g_free(save_domain);
	} else {
		name = try_name;
		description = gettext(description);
	}

	GtkTreeIter iter;
	gtk_list_store_append(list, &iter);
	gtk_list_store_set(list, &iter,
		ID_COLUMN, id,
		NAME_COLUMN, name,
		DESC_COLUMN, description,
		-1);
}
示例#4
0
static GtkTreeModel*
create_style_model (GSettings* settings, GtkTreeIter** current)
{
	GtkListStore* model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING,
											  G_TYPE_STRING);
	GtkSourceStyleSchemeManager* manager = gtk_source_style_scheme_manager_get_default();
	const gchar* const *styles = gtk_source_style_scheme_manager_get_scheme_ids (manager);
	const gchar* const *style;
	gchar* current_style = g_settings_get_string (settings, SOURCEVIEW_STYLE);
	*current = NULL;
	for (style = styles; *style != NULL; style++)
	{
		GtkTreeIter iter;
		GtkSourceStyleScheme* scheme =
			gtk_source_style_scheme_manager_get_scheme (manager, *style);
		const gchar* id = gtk_source_style_scheme_get_id (scheme);
		gtk_list_store_append (model, &iter);
		gtk_list_store_set (model, &iter,
							COLUMN_NAME, gtk_source_style_scheme_get_name (scheme),
							COLUMN_DESC, gtk_source_style_scheme_get_description (scheme),
							COLUMN_ID, id, -1);
		if (current_style && g_str_equal (id, current_style))
		{
			*current = gtk_tree_iter_copy (&iter);
		}
	}
	g_free (current_style);
	return GTK_TREE_MODEL (model);
}
static void
gtk_source_style_scheme_chooser_button_update_label (GtkSourceStyleSchemeChooserButton *button)
{
	GtkSourceStyleSchemeChooserButtonPrivate *priv = GET_PRIV (button);
	const gchar *label;

	label = priv->scheme != NULL ? gtk_source_style_scheme_get_name (priv->scheme) : NULL;
	gtk_button_set_label (GTK_BUTTON (button), label);
}
示例#6
0
/* Helper function: enumeration callback for each color scheme */
static void
store_color_scheme(GtkSourceStyleScheme *scheme, GtkListStore *list)
{
	const char *id = gtk_source_style_scheme_get_id(scheme);
	const char *name = gtk_source_style_scheme_get_name(scheme);
	const char *description = gtk_source_style_scheme_get_description(scheme);

	GtkTreeIter iter;
	gtk_list_store_append(list, &iter);
	gtk_list_store_set(list, &iter,
		ID_COLUMN, id,
		NAME_COLUMN, name,
		DESC_COLUMN, description,
		-1);
}
static void
ide_preferences_builtin_register_appearance (IdePreferences *preferences)
{
  GtkSourceStyleSchemeManager *manager;
  const gchar * const *scheme_ids;
  gint i;

  ide_preferences_add_page (preferences, "appearance", _("Appearance"), 0);

  ide_preferences_add_list_group (preferences, "appearance", "basic", _("Themes"), 0);
  ide_preferences_add_switch (preferences, "appearance", "basic", "org.gnome.builder", "night-mode", NULL, NULL, _("Dark Theme"), _("Whether Builder should use a dark theme"), _("dark theme"), 0);
  ide_preferences_add_switch (preferences, "appearance", "basic", "org.gnome.builder.editor", "show-grid-lines", NULL, NULL, _("Grid Pattern"), _("Display a grid pattern underneath source code"), NULL, 0);

  ide_preferences_add_list_group (preferences, "appearance", "schemes", NULL, 100);

  manager = gtk_source_style_scheme_manager_get_default ();
  scheme_ids = gtk_source_style_scheme_manager_get_scheme_ids (manager);

  for (i = 0; scheme_ids [i]; i++)
    {
      g_autofree gchar *variant_str = NULL;
      GtkSourceStyleScheme *scheme;
      const gchar *title;

      variant_str = g_strdup_printf ("\"%s\"", scheme_ids [i]);
      scheme = gtk_source_style_scheme_manager_get_scheme (manager, scheme_ids [i]);
      title = gtk_source_style_scheme_get_name (scheme);

      ide_preferences_add_radio (preferences, "appearance", "schemes", "org.gnome.builder.editor", "style-scheme-name", NULL, variant_str, title, NULL, title, i);
    }

  ide_preferences_add_list_group (preferences, "appearance", "font", _("Font"), 200);
  ide_preferences_add_font_button (preferences, "appearance", "font", "org.gnome.builder.editor", "font-name", _("Editor"), C_("Keywords", "editor font monospace"), 0);
  /* XXX: This belongs in terminal addin */
  ide_preferences_add_font_button (preferences, "appearance", "font", "org.gnome.builder.terminal", "font-name", _("Terminal"), C_("Keywords", "terminal font monospace"), 0);
}
示例#8
0
Gobby::PreferencesDialog::Appearance::Appearance(Preferences& preferences):
	m_group_toolbar(_("Toolbar") ),
	m_group_font(_("Font") ),
	m_group_scheme(_("Color Scheme")),
	m_cmb_toolbar_style(preferences.appearance.toolbar_style),
	m_conn_font(m_btn_font, preferences.appearance.font),
	m_list(Gtk::ListStore::create(m_columns)),
	m_tree(m_list)
{
	const Pango::FontDescription& font = preferences.appearance.font;

	m_cmb_toolbar_style.add(_("Show text only"),
	                        Gtk::TOOLBAR_TEXT);
	m_cmb_toolbar_style.add(_("Show icons only"),
	                        Gtk::TOOLBAR_ICONS);
	m_cmb_toolbar_style.add(_("Show both icons and text"),
	                        Gtk::TOOLBAR_BOTH );
	m_cmb_toolbar_style.add(_("Show text besides icons"),
	                        Gtk::TOOLBAR_BOTH_HORIZ );
	m_cmb_toolbar_style.show();

	m_conn_font.block();
	m_btn_font.set_font_name(font.to_string());
	m_btn_font.show();
	m_conn_font.unblock();

	m_group_toolbar.add(m_cmb_toolbar_style);
	m_group_toolbar.show();

	m_group_font.add(m_btn_font);
	m_group_font.show();

	Gtk::TreeViewColumn column_name;
	Gtk::CellRendererText renderer_name;
	column_name.pack_start(renderer_name, false);
	column_name.add_attribute(renderer_name.property_text(), m_columns.name);

	m_tree.append_column(column_name);//"Scheme Name", m_columns.name);
	m_tree.append_column("Scheme description", m_columns.description);

	Pango::AttrList list;
	Pango::Attribute attr(Pango::Attribute::create_attr_weight(Pango::WEIGHT_BOLD));
	list.insert(attr);
	renderer_name.property_attributes() = list;

	m_tree.set_headers_visible(false);
	m_tree.show();

	Gtk::ScrolledWindow* scroll = Gtk::manage(new Gtk::ScrolledWindow);
	scroll->set_shadow_type(Gtk::SHADOW_IN);
	scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
	scroll->add(m_tree);
	scroll->show();

	m_group_scheme.add(*scroll);
	m_group_scheme.show();

	GtkSourceStyleSchemeManager* manager = gtk_source_style_scheme_manager_get_default();
	const gchar* const* ids = gtk_source_style_scheme_manager_get_scheme_ids(manager);

	Glib::ustring current_scheme = preferences.appearance.scheme_id;

	for (const gchar* const* id = ids; *id != NULL; ++id)
	{
		GtkSourceStyleScheme* scheme = gtk_source_style_scheme_manager_get_scheme(manager, *id);
		const gchar* name = gtk_source_style_scheme_get_name(scheme);
		const gchar* desc = gtk_source_style_scheme_get_description(scheme);

		Gtk::TreeIter iter = m_list->append();
		(*iter)[m_columns.name] = name;
		(*iter)[m_columns.description] = desc;
		(*iter)[m_columns.scheme] = scheme;

		if (current_scheme == gtk_source_style_scheme_get_id(scheme))
			m_tree.get_selection()->select(iter);
	}

	m_tree.get_selection()->signal_changed().connect(
		sigc::bind(
			sigc::mem_fun(*this, &Appearance::on_scheme_changed),
			sigc::ref(preferences)));

#ifdef USE_GTKMM3
	m_list->set_sort_column(m_columns.name, Gtk::SORT_ASCENDING);
#else
	m_list->set_sort_column_id(m_columns.name, Gtk::SORT_ASCENDING);
#endif

	add(m_group_toolbar, false);
	add(m_group_font, false);
	add(m_group_scheme, true);
}
示例#9
0
Gobby::PreferencesDialog::Appearance::Appearance(
	const Glib::RefPtr<Gtk::Builder>& builder,
	Preferences& preferences)
:
	m_scheme_list(Gtk::ListStore::create(m_scheme_columns))
{
	builder->get_widget_derived("toolbar-style", m_cmb_toolbar_style);
	builder->get_widget("font", m_btn_font);
	builder->get_widget("color-scheme-treeview", m_scheme_tree);

	const Pango::FontDescription& font = preferences.appearance.font;

	m_cmb_toolbar_style->set_option(preferences.appearance.toolbar_style);
	m_cmb_toolbar_style->add(_("Show text only"),
	                         Gtk::TOOLBAR_TEXT);
	m_cmb_toolbar_style->add(_("Show icons only"),
	                         Gtk::TOOLBAR_ICONS);
	m_cmb_toolbar_style->add(_("Show both icons and text"),
	                         Gtk::TOOLBAR_BOTH );
	m_cmb_toolbar_style->add(_("Show text besides icons"),
	                         Gtk::TOOLBAR_BOTH_HORIZ );

	m_btn_font->set_font_name(font.to_string());
	m_conn_font.reset(new FontConnection(
		*m_btn_font, preferences.appearance.font));

	Gtk::TreeViewColumn column_name;
	Gtk::CellRendererText renderer_name;
	column_name.pack_start(renderer_name, false);
	column_name.add_attribute(renderer_name.property_text(),
	                          m_scheme_columns.name);

	Pango::AttrList list;
	Pango::Attribute attr(Pango::Attribute::create_attr_weight(
		Pango::WEIGHT_BOLD));
	list.insert(attr);
	renderer_name.property_attributes() = list;

	m_scheme_tree->append_column(column_name);
	m_scheme_tree->append_column(_("Scheme Description"),
	                             m_scheme_columns.description);
	m_scheme_tree->set_model(m_scheme_list);

	// Populate scheme list
	GtkSourceStyleSchemeManager* manager =
		gtk_source_style_scheme_manager_get_default();
	const gchar* const* ids =
		gtk_source_style_scheme_manager_get_scheme_ids(manager);

	const Glib::ustring current_scheme = preferences.appearance.scheme_id;

	for (const gchar* const* id = ids; *id != NULL; ++id)
	{
		GtkSourceStyleScheme* scheme =
			gtk_source_style_scheme_manager_get_scheme(
				manager, *id);
		const gchar* name =
			gtk_source_style_scheme_get_name(scheme);
		const gchar* desc =
			gtk_source_style_scheme_get_description(scheme);

		Gtk::TreeIter iter = m_scheme_list->append();
		(*iter)[m_scheme_columns.name] = name;
		(*iter)[m_scheme_columns.description] = desc;
		(*iter)[m_scheme_columns.scheme] = scheme;

		if (current_scheme == gtk_source_style_scheme_get_id(scheme))
			m_scheme_tree->get_selection()->select(iter);
	}

	m_scheme_tree->get_selection()->signal_changed().connect(
		sigc::bind(
			sigc::mem_fun(*this, &Appearance::on_scheme_changed),
			sigc::ref(preferences)));

	m_scheme_list->set_sort_column(m_scheme_columns.name,
	                               Gtk::SORT_ASCENDING);
}
示例#10
0
GuPrefsGui* prefsgui_init(GtkWindow* mainwindow)
{
  GuPrefsGui* p = g_new0(GuPrefsGui, 1);
  GtkBuilder* builder = gtk_builder_new();
  gchar* ui = g_build_filename(GUMMI_DATA, "ui", "prefs.glade", NULL);
  gtk_builder_add_from_file(builder, ui, NULL);
  gtk_builder_set_translation_domain(builder, PACKAGE);
  g_free(ui);

  p->prefwindow =
    GTK_WIDGET(gtk_builder_get_object(builder, "prefwindow"));
  p->notebook =
    GTK_NOTEBOOK(gtk_builder_get_object(builder, "notebook1"));
  p->textwrap_button =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "textwrapping"));
  p->wordwrap_button =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "wordwrapping"));
  p->line_numbers =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "line_numbers"));
  p->highlighting =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "highlighting"));
  p->tabwidth =
    GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "tabwidth"));
  p->spaces_instof_tabs =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "spaces_instof_tabs"));
  p->autoindentation =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "autoindentation"));
  p->autosaving =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "autosaving"));
  p->compile_status =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "compile_status"));
  p->autosave_timer =
    GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "autosave_timer"));
  p->combo_languages =
    GTK_COMBO_BOX_TEXT(gtk_builder_get_object(builder, "combo_languages"));
  p->styleschemes_treeview =
    GTK_TREE_VIEW(gtk_builder_get_object(builder, "styleschemes_treeview"));
  p->list_styleschemes =
    GTK_LIST_STORE(gtk_builder_get_object(builder, "list_styleschemes"));
  p->default_textview =
    GTK_TEXT_VIEW(gtk_builder_get_object(builder, "default_textview"));
  p->default_buffer =
    gtk_text_view_get_buffer(p->default_textview);
  p->editor_font =
    GTK_FONT_BUTTON(gtk_builder_get_object(builder, "editor_font"));
  p->compile_scheme =
    GTK_COMBO_BOX(gtk_builder_get_object(builder, "combo_compilescheme"));
  p->compile_timer =
    GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "compile_timer"));
  p->autoexport =
    GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "auto_export"));

  p->typ_pdflatex =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "typ_pdflatex"));
  p->typ_xelatex =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "typ_xelatex"));
  p->typ_rubber =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "typ_rubber"));
  p->typ_latexmk =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "typ_latexmk"));

  p->method_texpdf =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "method_texpdf"));
  p->method_texdvipdf =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "method_texdvipdf"));
  p->method_texdvipspdf =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "method_texdvipspdf"));

  p->opt_shellescape =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "opt_shellescape"));
  p->opt_synctex =
    GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "opt_synctex"));

  p->combo_animated_scroll =
    GTK_COMBO_BOX(gtk_builder_get_object(builder, "combo_animated_scroll"));
  p->spin_cache_size =
    GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "spin_cache_size"));

  p->view_box = GTK_BOX(gtk_builder_get_object(builder, "view_box"));
  p->editor_box = GTK_BOX(gtk_builder_get_object(builder, "editor_box"));
  p->compile_box = GTK_BOX(gtk_builder_get_object(builder, "compile_box"));

  gtk_window_set_transient_for(GTK_WINDOW(p->prefwindow), mainwindow);

#ifdef USE_GTKSPELL
  /* list available languages */
  if (g_file_test(
        g_find_program_in_path("enchant-lsmod"), G_FILE_TEST_EXISTS)) {

    Tuple2 pret = utils_popen_r("enchant-lsmod -list-dicts", NULL);
    if (pret.second != NULL) {
      gchar** output = g_strsplit((gchar*)pret.second, "\n", BUFSIZ);
      gchar** elems = NULL;
      int i;

      for (i = 0; output[i] != NULL; i++) {
        elems = g_strsplit(output[i], " ", BUFSIZ);
        if (elems[0] != NULL) {
          gtk_combo_box_text_append_text(p->combo_languages, elems[0]);
        }
      }
      g_strfreev(output);
      g_strfreev(elems);
    }
    gtk_combo_box_set_active(GTK_COMBO_BOX(p->combo_languages), 0);
    g_free((gchar*)pret.second);
  }
#else
  /* desensitise gtkspell related GUI elements if not used */
  GtkWidget* box = GTK_WIDGET(
                     gtk_builder_get_object(builder, "box_spellcheck"));
  gtk_widget_set_sensitive(box, FALSE);
#endif
  GList* schemes = editor_list_style_scheme_sorted();
  GList* schemes_iter = schemes;
  gchar* desc = NULL;
  GtkTreeIter iter;
  while (schemes_iter) {
    desc = g_markup_printf_escaped("<b>%s</b> - %s",
                                   gtk_source_style_scheme_get_name(schemes_iter->data),
                                   gtk_source_style_scheme_get_description(schemes_iter->data));
    gtk_list_store_append(p->list_styleschemes, &iter);
    gtk_list_store_set(p->list_styleschemes, &iter,
                       0, desc,
                       1, gtk_source_style_scheme_get_id(schemes_iter->data), -1);
    schemes_iter = g_list_next(schemes_iter);
    g_free(desc);
  }
  g_list_free(schemes);

  gtk_builder_connect_signals(builder, NULL);

  return p;
}