Skip to content

Commit

Permalink
fix #1170 add multi-column + margin justification options to the pref…
Browse files Browse the repository at this point in the history
…s UI and the per-module font dialog.
  • Loading branch information
karlkleinpaste committed Aug 14, 2024
1 parent 78f15c7 commit 17a47ea
Show file tree
Hide file tree
Showing 11 changed files with 494 additions and 65 deletions.
90 changes: 59 additions & 31 deletions src/gtk/font_dialog.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@

static GtkWidget *dlg;
static GtkWidget *combo_entry_size;
static GtkWidget *combo_entry_columns;
static GtkWidget *font_button;
static GtkWidget *checkbutton_no_font;
static GtkWidget *label_mod;
Expand Down Expand Up @@ -119,12 +120,14 @@ static void ok_clicked(GtkButton *button, gpointer data)
new_gdk_font = "none";
}

mf->new_font_size =
gtk_entry_get_text(GTK_ENTRY(combo_entry_size));
mf->new_font_size = gtk_entry_get_text(GTK_ENTRY(combo_entry_size));

mf->columns = gtk_entry_get_text(GTK_ENTRY(combo_entry_columns));

save_conf_file_item(file, mf->mod_name, "Font", mf->new_font);
save_conf_file_item(file, mf->mod_name, "Fontsize",
mf->new_font_size);
save_conf_file_item(file, mf->mod_name, "Fontsize", mf->new_font_size);
save_conf_file_item(file, mf->mod_name, "Columns",
(strcmp(mf->columns, "default") ? mf->columns : "-1"));

//evidently new_gdk_font is never set on Windows
XI_message(("\nFont: %s\nFontsize: %s\n",
Expand Down Expand Up @@ -282,13 +285,16 @@ static GtkWidget *create_dialog_mod_font()
GtkWidget *dialog_vbox21;
GtkWidget *hbox_picker;
GtkWidget *combo_size;
GtkWidget *combo_count;
GtkWidget *vbox56;
GtkWidget *hbox67;
GtkWidget *pixmap6;
GtkWidget *vbox57;
GtkWidget *label206;
GtkWidget *labelcolumns;
GtkWidget *dialog_action_area21;
GtkWidget *hbuttonbox1;
GtkWidget *hboxcolumns;
GtkWidget *button_cancel;

dialog_mod_font = gtk_dialog_new();
Expand All @@ -298,7 +304,7 @@ static GtkWidget *create_dialog_mod_font()
_("Set Module Font"));
//GTK_WINDOW(dialog_mod_font)->type = GTK_WINDOW_TOPLEVEL; //FIXME:
gtk_window_set_default_size(GTK_WINDOW(dialog_mod_font), 301, 164);
gtk_window_set_resizable(GTK_WINDOW(dialog_mod_font), TRUE);
gtk_window_set_resizable(GTK_WINDOW(dialog_mod_font), FALSE);

dialog_vbox21 =
gtk_dialog_get_content_area(GTK_DIALOG(dialog_mod_font));
Expand Down Expand Up @@ -356,34 +362,22 @@ static GtkWidget *create_dialog_mod_font()
#ifdef USE_GTK_3
combo_size = gtk_combo_box_text_new_with_entry();
gtk_widget_show(combo_size);
gtk_box_pack_start(GTK_BOX(hbox_picker), combo_size, TRUE, TRUE,
0);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"+5");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"+4");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"+3");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"+2");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"+1");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"+0");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"-1");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"-2");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size),
"-3");
gtk_box_pack_start(GTK_BOX(hbox_picker), combo_size, TRUE, TRUE, 0);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "+5");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "+4");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "+3");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "+2");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "+1");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "+0");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "-1");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "-2");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_size), "-3");
combo_entry_size = gtk_bin_get_child(GTK_BIN(combo_size));
gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo_size))),
_("+0"));
gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo_size))), _("+0"));
#else
combo_size = gtk_combo_box_entry_new_text();
gtk_widget_show(combo_size);
gtk_box_pack_start(GTK_BOX(hbox_picker), combo_size, TRUE, TRUE,
0);
gtk_box_pack_start(GTK_BOX(hbox_picker), combo_size, TRUE, TRUE, 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_size), "+5");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_size), "+4");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_size), "+3");
Expand All @@ -396,12 +390,44 @@ static GtkWidget *create_dialog_mod_font()
combo_entry_size = (GTK_WIDGET(GTK_BIN(combo_size)->child));
gtk_entry_set_text(GTK_ENTRY(GTK_BIN(combo_size)->child), _("+0"));
#endif
UI_HBOX(hboxcolumns, FALSE, 0);
gtk_widget_show(hboxcolumns);
gtk_box_pack_start(GTK_BOX(vbox56), hboxcolumns, FALSE, FALSE, 0);

labelcolumns = gtk_label_new(_("Display columns"));
gtk_widget_show(labelcolumns);
gtk_box_pack_start(GTK_BOX(hboxcolumns), labelcolumns, FALSE, FALSE, 0);

#ifdef USE_GTK_3
combo_count = gtk_combo_box_text_new_with_entry();
gtk_widget_set_size_request(combo_count, 240, -1);
gtk_widget_show(combo_count);
gtk_box_pack_start(GTK_BOX(hboxcolumns), combo_count, FALSE, TRUE, 150);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_count), "1");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_count), "2");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_count), "3");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_count), "4");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_count), "default");
combo_entry_columns = gtk_bin_get_child(GTK_BIN(combo_count));
gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo_count))), _("default"));
#else
combo_count = gtk_combo_box_entry_new_text();
gtk_widget_show(combo_count);
gtk_box_pack_start(GTK_BOX(hboxcolumns), combo_count, FALSE, TRUE, 150);
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_count), "1");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_count), "2");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_count), "3");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_count), "4");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_count), "default");
combo_entry_columns = (GTK_WIDGET(GTK_BIN(combo_count)->child));
gtk_entry_set_text(GTK_ENTRY(GTK_BIN(combo_count)->child), _("default"));
#endif

checkbutton_no_font =
gtk_check_button_new_with_label(_("Use the default font for this module"));
gtk_widget_show(checkbutton_no_font);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton_no_font), mf->no_font);
gtk_box_pack_start(GTK_BOX(vbox56), checkbutton_no_font, FALSE,
FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox56), checkbutton_no_font, FALSE, FALSE, 0);

dialog_action_area21 =
#if GTK_CHECK_VERSION(3, 12, 0)
Expand Down Expand Up @@ -457,6 +483,8 @@ static GtkWidget *create_dialog_mod_font()
G_CALLBACK(cancel_clicked), mf);
g_signal_connect(G_OBJECT(combo_size), "changed",
G_CALLBACK(size_changed), NULL);
g_signal_connect(G_OBJECT(combo_count), "changed",
G_CALLBACK(size_changed), NULL); /* dual use */

return dialog_mod_font;
}
Expand Down
77 changes: 75 additions & 2 deletions src/gtk/preferences_dialog.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ struct _preferences_combo
GtkWidget *verse_number_size;
GtkWidget *special_locale;
GtkWidget *font_prefs;
GtkWidget *display_columns;
};

typedef struct _preferences_color_pickers COLOR_PICKERS;
Expand Down Expand Up @@ -113,6 +114,7 @@ struct _preferences_check_buttons
GtkWidget *prayerlist;
GtkWidget *statusbar;
GtkWidget *alternation;
GtkWidget *justify_margins;

GtkWidget *show_in_viewer;
GtkWidget *show_in_dictionary;
Expand Down Expand Up @@ -1185,6 +1187,31 @@ on_checkbutton8_toggled(GtkToggleButton *togglebutton, gpointer user_data)
settings.showsplash = gtk_toggle_button_get_active(togglebutton);
}

/******************************************************************************
* Name
* on_justifybutton_toggled
*
* Synopsis
* #include "preferences_dialog.h"
* void on_justifybutton_toggled(GtkToggleButton * togglebutton, gpointer user_data)
*
* Description
*
* Return value
* void
*/

void
on_justifybutton_toggled(GtkToggleButton *togglebutton, gpointer user_data)
{
xml_set_value("Xiphos", "misc", "justifymargins",
(gtk_toggle_button_get_active(togglebutton) ? "1" : "0"));
settings.justify_margins = gtk_toggle_button_get_active(togglebutton);
char *url = g_strdup_printf("sword:///%s", settings.currentverse);
main_url_handler(url, TRUE);
g_free(url);
}

/******************************************************************************
* Name
* on_checkbutton_scroll_toggled
Expand Down Expand Up @@ -1537,8 +1564,42 @@ void on_combobox1_changed(GtkComboBox *combobox, gpointer user_data)
settings.verse_num_font_size =
atoi(settings.verse_num_font_size_str);
url =
g_strdup_printf("sword://%s/%s", settings.MainWindowModule,
settings.currentverse);
g_strdup_printf("sword:///%s", settings.currentverse);
main_url_handler(url, TRUE);
g_free(url);
g_free(buf);
}

/******************************************************************************
* Name
* on_columncountvalue_changed
*
* Synopsis
* #include "preferences_dialog.h"
* void on_columncountvalue_changed(GtkComboBox *combobox, gpointer user_data)
*
* Description
* display columns has changed
*
* Return value
* void
*/

void on_columncountvalue_changed(GtkComboBox *combobox, gpointer user_data)
{
gchar *buf = NULL;
gchar *url = NULL;
GtkTreeIter iter;
GtkTreeModel *model = gtk_combo_box_get_model(combobox);

gtk_combo_box_get_active_iter(combobox, &iter);
gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 0, &buf, -1);
if (!buf)
return;
xml_set_value("Xiphos", "misc", "displaycolumns", buf);
settings.display_columns = atoi(buf);
url =
g_strdup_printf("sword:///%s", settings.currentverse);
main_url_handler(url, TRUE);
g_free(url);
g_free(buf);
Expand Down Expand Up @@ -2236,6 +2297,8 @@ static void setup_check_buttons(void)
settings.statusbar);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button.alternation),
settings.alternation);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button.justify_margins),
settings.justify_margins);

/* v-- BibleSync --v */
/* toggles */
Expand Down Expand Up @@ -2318,6 +2381,8 @@ static void setup_check_buttons(void)
g_signal_connect(check_button.alternation, "toggled",
G_CALLBACK(on_checkbutton_alternation_toggled),
NULL);
g_signal_connect(check_button.justify_margins, "toggled",
G_CALLBACK(on_justifybutton_toggled), NULL);

/* v-- BibleSync --v */
g_signal_connect(check_button.bs_debug, "toggled",
Expand Down Expand Up @@ -2990,6 +3055,7 @@ static void create_preferences_dialog(void)
check_button.show_devotion = UI_GET_ITEM(gxml, "checkbutton7");
check_button.show_splash_screen = UI_GET_ITEM(gxml, "checkbutton8");
check_button.use_chapter_scroll = UI_GET_ITEM(gxml, "checkbutton_scroll");
check_button.justify_margins = UI_GET_ITEM(gxml, "justifybutton");

check_button.use_imageresize = UI_GET_ITEM(gxml, "checkbutton_imageresize");
#ifdef WIN32
Expand Down Expand Up @@ -3075,6 +3141,13 @@ static void create_preferences_dialog(void)
g_signal_connect(combo.base_font_size, "changed",
G_CALLBACK(on_basecombobox1_changed), NULL);

/* display columns */
combo.display_columns = UI_GET_ITEM(gxml, "columncountvalue");
gtk_combo_box_set_active(GTK_COMBO_BOX(combo.display_columns),
settings.display_columns - 1);
g_signal_connect(combo.display_columns, "changed",
G_CALLBACK(on_columncountvalue_changed), NULL);

/* module combos */
combo.default_dictionary_module = UI_GET_ITEM(gxml, "combobox5");
combo.percomm_module = UI_GET_ITEM(gxml, "combobox6");
Expand Down
9 changes: 9 additions & 0 deletions src/gtk/utilities.c
Original file line number Diff line number Diff line change
Expand Up @@ -749,6 +749,15 @@ MOD_FONT *get_font(const gchar *mod_name)

mf->old_font = get_conf_file_item(file, mod_name, "Font");
mf->old_font_size = get_conf_file_item(file, mod_name, "Fontsize");
mf->columns = get_conf_file_item(file, mod_name, "Columns");
if (mf->columns) {
mf->columns_value = atoi(mf->columns);
if ((mf->columns_value != -1) && /* -1 => use default */
((mf->columns_value < 1) ||
(mf->columns_value > 4)))
mf->columns_value = 1;
} else
mf->columns_value = -1; /* "not used" */

/* 1st try: module pref */
if ((mf->old_font == NULL) || !strcmp(mf->old_font, "none")) {
Expand Down
5 changes: 5 additions & 0 deletions src/gui/preferences_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ void on_checkbutton8_toggled(GtkToggleButton *togglebutton,
gpointer user_data);
void on_checkbutton9_toggled(GtkToggleButton *togglebutton,
gpointer user_data);
void on_justifybutton_toggled(GtkToggleButton *togglebutton,
gpointer user_data);

void on_folder_changed(GtkFileChooser *filechooser,
gpointer user_data);
Expand Down Expand Up @@ -84,6 +86,9 @@ void on_combobox16_changed(GtkComboBox *combobox,
gpointer user_data);
void on_combobox17_changed(GtkComboBox *combobox,
gpointer user_data);
void on_columncountvalue_changed(GtkComboBox *combobox,
gpointer user_data);

void on_colorbutton1_color_set(GtkColorButton *colorbutton,
gpointer user_data);
void on_colorbutton2_color_set(GtkColorButton *colorbutton,
Expand Down
2 changes: 2 additions & 0 deletions src/main/configs.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ struct _mod_font
int old_font_size_value;
const char *new_font_size;
int no_font;
const char *columns;
int columns_value;
};

char *get_conf_file_item(const char *file, const char *mod_name,
Expand Down
Loading

0 comments on commit 17a47ea

Please sign in to comment.