Removed custom editor styles

This commit is contained in:
Jesse van den Kieboom 2005-11-19 13:10:25 +00:00
parent 3388a3436b
commit b944e69010
1 changed files with 3 additions and 380 deletions

View File

@ -19,6 +19,7 @@
#include "../gm-app.h"
#include "gm-preferences-dialog.h"
#include "../widgets/gm-editor-view.h"
#include "../gm-support.h"
#include "../gm-debug.h"
#include "../gm-options.h"
@ -98,13 +99,6 @@ static const GmKeyValuePair color_schemes[] = {
static GmPreferencesDialog *preferences = NULL;
enum {
EDITOR_NAME,
EDITOR_STYLE,
EDITOR_ID,
EDITOR_N_COLUMNS
};
enum {
SCHEME_NAME,
SCHEME_OPTION,
@ -152,88 +146,6 @@ gm_preferences_dialog_init_combo_box_scheme() {
gtk_combo_box_set_active(box, select);
}
void
gm_preferences_dialog_init_editor_colors_tree() {
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeView *tv = GTK_TREE_VIEW(
gm_preferences_dialog_widget("tree_view_editor_colors"));
GtkListStore *store = gtk_list_store_new(EDITOR_N_COLUMNS, G_TYPE_STRING,
GTK_TYPE_SOURCE_TAG_STYLE, G_TYPE_STRING);
GtkTreeModel *model =
gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(store));
GtkTreeSelection *select;
gtk_tree_view_set_model(tv, model);
select = gtk_tree_view_get_selection(tv);
g_signal_connect(select, "changed", G_CALLBACK(
on_gm_preferences_dialog_tree_view_editor_colors_row_changed),
NULL);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Tag"), renderer,
"text", EDITOR_NAME, NULL);
gtk_tree_view_append_column(tv, column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Style"), renderer,
NULL);
gtk_tree_view_column_set_visible(column, FALSE);
gtk_tree_view_append_column(tv, column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Id"), renderer, NULL);
gtk_tree_view_column_set_visible(column, FALSE);
gtk_tree_view_append_column(tv, column);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), EDITOR_NAME,
GTK_SORT_ASCENDING);
}
void
gm_preferences_dialog_init_editor_colors() {
GtkSourceTag *st;
GtkSourceTagStyle *sty;
GSList *tags, *tag;
gchar *name, *id;
GtkTreeIter iter;
GtkListStore *store;
GtkSourceLanguage *lang = NULL;
// TODO: Fix this!
// lang = editor_get_language();
// Create column ed
gm_preferences_dialog_init_editor_colors_tree();
store = GTK_LIST_STORE(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(
gtk_tree_view_get_model(GTK_TREE_VIEW(
gm_preferences_dialog_widget("tree_view_editor_colors"))))));
if (lang) {
tags = gtk_source_language_get_tags(lang);
for (tag = tags; tag; tag = tag->next) {
st = GTK_SOURCE_TAG(tag->data);
sty = gtk_source_tag_get_style(st);
g_object_get(G_OBJECT(st), "name", &name, "id", &id, NULL);
gtk_list_store_prepend(store, &iter);
gtk_list_store_set(store, &iter, EDITOR_NAME, name,
EDITOR_STYLE, sty, EDITOR_ID, id, -1);
g_free(name);
g_free(id);
}
g_slist_free(tags);
}
}
#define GM_PREFERENCES_DIALOG_XML \
PACKAGE_DATA_DIR "/" PACKAGE "/ui/gm-preferences.glade"
@ -253,7 +165,7 @@ gm_preferences_dialog_run() {
"gm_preferences_dialog", NULL);
preferences->dialog =
gm_preferences_dialog_widget("gm_preferences_dialog");
gm_preferences_dialog_init_editor_colors();
gm_preferences_dialog_load_colors();
gm_preferences_dialog_init_combo_box_scheme();
@ -298,34 +210,11 @@ gm_preferences_dialog_run() {
glade_xml_signal_connect(preferences->xml,
"on_check_button_embed_editor_clicked", G_CALLBACK(
on_gm_preferences_dialog_check_button_embed_editor_clicked));
glade_xml_signal_connect(preferences->xml,
"on_check_button_fg_clicked", G_CALLBACK(
on_gm_preferences_dialog_check_button_fg_clicked));
glade_xml_signal_connect(preferences->xml,
"on_check_button_bg_clicked", G_CALLBACK(
on_gm_preferences_dialog_check_button_bg_clicked));
glade_xml_signal_connect(preferences->xml,
"on_combo_box_scheme_changed", G_CALLBACK(
on_gm_preferences_dialog_combo_box_scheme_changed));
glade_xml_signal_connect_data(preferences->xml,
"on_toggle_button_bold_clicked", G_CALLBACK(
on_gm_preferences_dialog_toggle_button_style_clicked),
GINT_TO_POINTER(1));
glade_xml_signal_connect_data(preferences->xml,
"on_toggle_button_style_clicked", G_CALLBACK(
on_gm_preferences_dialog_toggle_button_style_clicked),
GINT_TO_POINTER(2));
glade_xml_signal_connect_data(preferences->xml,
"on_toggle_button_underline_clicked", G_CALLBACK(
on_gm_preferences_dialog_toggle_button_style_clicked),
GINT_TO_POINTER(3));
glade_xml_signal_connect_data(preferences->xml,
"on_toggle_button_strike_trough_clicked", G_CALLBACK(
on_gm_preferences_dialog_toggle_button_style_clicked),
GINT_TO_POINTER(4));
glade_xml_signal_connect(preferences->xml,
"on_color_button_fg_color_set", G_CALLBACK(
on_gm_preferences_dialog_color_button_fg_color_set));
@ -373,70 +262,6 @@ gm_preferences_dialog_save_colors() {
}
}
void
gm_preferences_dialog_save_editor_color(GtkTreeModel *model,
GtkTreeIter *iter) {
gchar *name, *id, *opt_key, *opt_value, *fg, *bg;
GtkSourceTagStyle *style;
GmOptions *options = gm_app_options(gm_app_instance());
gtk_tree_model_get(model, iter, EDITOR_NAME, &name, EDITOR_STYLE, &style,
EDITOR_ID, &id, -1);
opt_key = g_strconcat("editor_", name, NULL);
if (!(style->mask & GTK_SOURCE_TAG_STYLE_USE_FOREGROUND)) {
fg = g_strdup("0");
} else {
fg = g_strdup_printf("#%04X%04X%04X", style->foreground.red,
style->foreground.green, style->foreground.blue);
}
if (!(style->mask & GTK_SOURCE_TAG_STYLE_USE_BACKGROUND)) {
bg = g_strdup("0");
} else {
bg = g_strdup_printf("#%04X%04X%04X", style->background.red,
style->background.green, style->background.blue);
}
opt_value = g_strdup_printf("%s,%s,%d,%d,%d,%d", fg, bg, style->bold,
style->italic, style->underline,
style->strikethrough);
gm_debug_msg(DEBUG_DEFAULT, "GmPreferencesDialog.SaveEditorColor %s to %s", opt_key,
opt_value);
gm_options_set(options, opt_key, opt_value);
// TODO: do something about this
//gtk_source_language_set_tag_style(editor_get_language(), id, style);
g_free(opt_key);
g_free(opt_value);
g_free(id);
g_free(fg);
g_free(bg);
g_free(name);
// CHECK this:
//gtk_source_tag_style_free(style);
}
void
gm_preferences_dialog_save_editor_colors() {
GtkTreeIter iter;
GtkTreeView *vw = GTK_TREE_VIEW(
gm_preferences_dialog_widget("tree_view_editor_colors"));
GtkTreeModelSort *model = GTK_TREE_MODEL_SORT(gtk_tree_view_get_model(vw));
GtkTreeModel *store = gtk_tree_model_sort_get_model(model);
if (gtk_tree_model_get_iter_first(store, &iter)) {
do {
gm_preferences_dialog_save_editor_color(store, &iter);
} while (gtk_tree_model_iter_next(store, &iter));
}
}
gboolean
gm_preferences_dialog_check_values() {
const gchar *alt_editor = gtk_entry_get_text(GTK_ENTRY(
@ -447,7 +272,7 @@ gm_preferences_dialog_check_values() {
gm_preferences_dialog_widget("check_button_alt_editor")));
GmOptions *options = gm_app_options(gm_app_instance());
if (use_alt_editor && alt_editor[0] != '\0') {
if (use_alt_editor && *alt_editor == '\0') {
gm_error_dialog(_("Editor can't be empty, enter a non empty command"),
GTK_WINDOW(preferences->dialog));
gm_notebook_focus_from_label(GTK_NOTEBOOK(gm_preferences_dialog_widget(
@ -472,7 +297,6 @@ gm_preferences_dialog_check_values() {
gm_options_set(options, "font-family", font_description);
gm_preferences_dialog_save_colors();
gm_preferences_dialog_save_editor_colors();
return TRUE;
}
@ -560,207 +384,6 @@ on_gm_preferences_dialog_check_button_alt_editor_clicked(
"check_button_needs_terminal"), active);
}
void
gm_preferences_dialog_editor_style_do_enable() {
gtk_widget_set_sensitive(gm_preferences_dialog_widget("check_button_fg"),
TRUE);
gtk_widget_set_sensitive(gm_preferences_dialog_widget("check_button_bg"),
TRUE);
gtk_widget_set_sensitive(gm_preferences_dialog_widget("toggle_button_bold"),
TRUE);
gtk_widget_set_sensitive(gm_preferences_dialog_widget(
"toggle_button_style"), TRUE);
gtk_widget_set_sensitive(gm_preferences_dialog_widget(
"toggle_button_underline"), TRUE);
gtk_widget_set_sensitive(gm_preferences_dialog_widget(
"toggle_button_strike_through"), TRUE);
}
void
on_gm_preferences_dialog_tree_view_editor_colors_row_changed(
GtkTreeSelection *selection, gpointer data) {
GtkTreeIter iter;
GtkTreeModel *model;
GtkSourceTagStyle *style;
GtkColorButton *fg, *bg;
GtkToggleButton *fgt, *bgt;
GdkColor empty_col;
gdk_color_parse("black", &empty_col);
gtk_tree_selection_get_selected(selection, &model, &iter);
gtk_tree_model_get(model, &iter, EDITOR_STYLE, &style, -1);
fg = GTK_COLOR_BUTTON(gm_preferences_dialog_widget("color_button_fg"));
bg = GTK_COLOR_BUTTON(gm_preferences_dialog_widget("color_button_bg"));
fgt = GTK_TOGGLE_BUTTON(gm_preferences_dialog_widget("check_button_fg"));
bgt = GTK_TOGGLE_BUTTON(gm_preferences_dialog_widget("check_button_bg"));
if (style->mask & GTK_SOURCE_TAG_STYLE_USE_FOREGROUND) {
gtk_color_button_set_color(fg, &(style->foreground));
gtk_widget_set_sensitive(GTK_WIDGET(fg), TRUE);
gtk_toggle_button_set_active(fgt, TRUE);
} else {
gtk_color_button_set_color(fg, &empty_col);
gtk_widget_set_sensitive(GTK_WIDGET(fg), FALSE);
gtk_toggle_button_set_active(fgt, FALSE);
}
if (style->mask & GTK_SOURCE_TAG_STYLE_USE_BACKGROUND) {
gtk_color_button_set_color(bg, &(style->background));
gtk_widget_set_sensitive(GTK_WIDGET(bg), TRUE);
gtk_toggle_button_set_active(bgt, TRUE);
} else {
gtk_color_button_set_color(bg, &empty_col);
gtk_widget_set_sensitive(GTK_WIDGET(bg), FALSE);
gtk_toggle_button_set_active(bgt, FALSE);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gm_preferences_dialog_widget(
"check_button_bold")), style->bold);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gm_preferences_dialog_widget(
"check_button_style")), style->italic);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gm_preferences_dialog_widget(
"check_button_underline")), style->underline);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gm_preferences_dialog_widget(
"check_button_strike_through")), style->strikethrough);
gm_preferences_dialog_editor_style_do_enable();
}
typedef struct _GmSelectionInfo {
GtkTreeIter siter;
GtkTreeIter iter;
GtkListStore *store;
GtkTreeModel *model;
GtkSourceTagStyle *style;
} GmSelectionInfo;
GmSelectionInfo
gm_preferences_dialog_get_selection_info() {
GtkTreeSelection *selection;
GmSelectionInfo info;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(
gm_preferences_dialog_widget("tree_view_editor_colors")));
gtk_tree_selection_get_selected(selection, &(info.model), &(info.siter));
gtk_tree_model_get(info.model, &(info.siter), EDITOR_STYLE, &(info.style),
-1);
gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(
info.model), &(info.iter), &(info.siter));
info.store = GTK_LIST_STORE(gtk_tree_model_sort_get_model(
GTK_TREE_MODEL_SORT(info.model)));
return info;
}
void
on_gm_preferences_dialog_check_button_fg_clicked(GtkButton *button,
gpointer user_data) {
GmSelectionInfo info;
gboolean tog = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
GtkWidget *clb = gm_preferences_dialog_widget("color_button_fg");
GdkColor empty_col;
info = gm_preferences_dialog_get_selection_info();
gdk_color_parse("black", &empty_col);
if (tog) {
info.style->mask = info.style->mask |
GTK_SOURCE_TAG_STYLE_USE_FOREGROUND;
} else {
info.style->mask = info.style->mask &
~GTK_SOURCE_TAG_STYLE_USE_FOREGROUND;
gtk_color_button_set_color(GTK_COLOR_BUTTON(clb), &empty_col);
info.style->foreground = empty_col;
}
gtk_list_store_set(info.store, &(info.iter), EDITOR_STYLE, info.style, -1);
gtk_source_tag_style_free(info.style);
gtk_widget_set_sensitive(clb, tog);
}
void
on_gm_preferences_dialog_check_button_bg_clicked(GtkButton *button,
gpointer user_data) {
GmSelectionInfo info;
gboolean tog = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
GtkWidget *clb = gm_preferences_dialog_widget("color_button_bg");
GdkColor empty_col;
info = gm_preferences_dialog_get_selection_info();
gdk_color_parse("black", &empty_col);
if (tog) {
info.style->mask = info.style->mask |
GTK_SOURCE_TAG_STYLE_USE_BACKGROUND;
} else {
info.style->mask = info.style->mask &
~GTK_SOURCE_TAG_STYLE_USE_BACKGROUND;
gtk_color_button_set_color(GTK_COLOR_BUTTON(clb), &empty_col);
info.style->background = empty_col;
}
gtk_list_store_set(info.store, &(info.iter), EDITOR_STYLE, info.style, -1);
gtk_source_tag_style_free(info.style);
gtk_widget_set_sensitive(clb, tog);
}
void
on_gm_preferences_dialog_toggle_button_style_clicked(GtkButton *button,
gpointer user_data) {
GmSelectionInfo info;
int type = GPOINTER_TO_INT(user_data);
gboolean tog = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
info = gm_preferences_dialog_get_selection_info();
switch (type) {
case 1: /* bold */
info.style->bold = tog;
break;
case 2: /* italic */
info.style->italic = tog;
break;
case 3: /* underline */
info.style->underline = tog;
break;
case 4:
info.style->strikethrough = tog;
break;
}
gtk_list_store_set(info.store, &(info.iter), EDITOR_STYLE, info.style, -1);
gtk_source_tag_style_free(info.style);
}
void
on_gm_preferences_dialog_color_button_fg_color_set(GtkColorButton *widget,
gpointer user_data) {
GmSelectionInfo info;
info = gm_preferences_dialog_get_selection_info();
gtk_color_button_get_color(widget, &(info.style->foreground));
gtk_list_store_set(info.store, &(info.iter), EDITOR_STYLE, info.style, -1);
gtk_source_tag_style_free(info.style);
}
void
on_gm_preferences_dialog_color_button_bg_color_set(GtkColorButton *widget,
gpointer user_data) {
GmSelectionInfo info;
info = gm_preferences_dialog_get_selection_info();
gtk_color_button_get_color(widget, &(info.style->background));
gtk_list_store_set(info.store, &(info.iter), EDITOR_STYLE, info.style, -1);
gtk_source_tag_style_free(info.style);
}
void
on_gm_preferences_dialog_combo_box_scheme_changed(GtkComboBox *box,
gpointer user_data) {