From 834a3f2151dd8738a1f878489f6207664c4af5aa Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sun, 14 Jul 2013 17:14:53 -0700 Subject: Imported Upstream version 1.1.1 --- src/hig.c | 213 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 src/hig.c (limited to 'src/hig.c') diff --git a/src/hig.c b/src/hig.c new file mode 100644 index 0000000..32432fe --- /dev/null +++ b/src/hig.c @@ -0,0 +1,213 @@ +/* + * This file Copyright (C) 2007-2010 Mnemosyne LLC + * + * This file is licensed by the GPL version 2. Works owned by the + * Transmission project are granted a special exemption to clause 2(b) + * so that the bulk of its code can remain under the MIT license. + * This exemption does not extend to derived works not owned by + * the Transmission project. + * + * $Id: hig.c 9868 2010-01-04 21:00:47Z charles $ + */ + +#include +#include "hig.h" +#include "util.h" + +GtkWidget *hig_workarea_create(void) +{ + GtkWidget *t = gtk_table_new(1, 2, FALSE); + + gtk_container_set_border_width(GTK_CONTAINER(t), GUI_PAD_BIG); + gtk_table_set_col_spacing(GTK_TABLE(t), 0, GUI_PAD_BIG); + gtk_table_set_row_spacings(GTK_TABLE(t), GUI_PAD); + return t; +} + +void hig_workarea_add_section_divider(GtkWidget * t, guint * row) +{ + GtkWidget *w = gtk_alignment_new(0.0f, 0.0f, 0.0f, 0.0f); + + gtk_widget_set_size_request(w, 0u, 6u); + gtk_table_attach(GTK_TABLE(t), w, 0, 2, *row, *row + 1, 0, 0, 0, 0); + ++*row; +} + +void +hig_workarea_add_section_title_widget(GtkWidget * t, guint * row, + GtkWidget * w) +{ + gtk_table_attach(GTK_TABLE(t), w, 0, 2, *row, *row + 1, ~0, 0, 0, 0); + ++*row; +} + +void +hig_workarea_add_section_title(GtkWidget * t, + guint * row, const char *section_title) +{ + char buf[512]; + GtkWidget *l; + + g_snprintf(buf, sizeof(buf), "%s", section_title); + l = gtk_label_new(buf); + gtk_misc_set_alignment(GTK_MISC(l), 0.0f, 0.5f); + gtk_label_set_use_markup(GTK_LABEL(l), TRUE); + hig_workarea_add_section_title_widget(t, row, l); +} + +static GtkWidget *rowNew(GtkWidget * w) +{ + GtkWidget *a; + GtkWidget *h = trg_hbox_new(FALSE, 0); + + /* spacer */ + a = gtk_alignment_new(0.0f, 0.0f, 0.0f, 0.0f); + gtk_widget_set_size_request(a, 18u, 0u); + gtk_box_pack_start(GTK_BOX(h), a, FALSE, FALSE, 0); + + /* lhs widget */ + if (GTK_IS_MISC(w)) + gtk_misc_set_alignment(GTK_MISC(w), 0.0f, 0.5f); + if (GTK_IS_LABEL(w)) + gtk_label_set_use_markup(GTK_LABEL(w), TRUE); + gtk_box_pack_start(GTK_BOX(h), w, TRUE, TRUE, 0); + + return h; +} + +void hig_workarea_add_wide_control(GtkWidget * t, guint * row, + GtkWidget * w) +{ + GtkWidget *r = rowNew(w); + + gtk_table_attach(GTK_TABLE(t), r, 0, 2, *row, *row + 1, GTK_FILL, + 0, 0, 0); + ++*row; +} + +void +hig_workarea_add_wide_tall_control(GtkWidget * t, guint * row, + GtkWidget * w) +{ + GtkWidget *r = rowNew(w); + + gtk_table_attach(GTK_TABLE(t), r, 0, 2, *row, *row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); + + ++*row; +} + +GtkWidget *hig_workarea_add_wide_checkbutton(GtkWidget * t, + guint * row, + const char *mnemonic_string, + gboolean is_active) +{ + GtkWidget *w = gtk_check_button_new_with_mnemonic(mnemonic_string); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), is_active); + hig_workarea_add_wide_control(t, row, w); + return w; +} + +void hig_workarea_add_label_w(GtkWidget * t, guint row, GtkWidget * l) +{ + GtkWidget *w = rowNew(l); + + gtk_table_attach(GTK_TABLE(t), w, 0, 1, row, row + 1, GTK_FILL, + GTK_FILL, 0, 0); +} + +GtkWidget *hig_workarea_add_label(GtkWidget * t, guint row, + const char *mnemonic_string) +{ + GtkWidget *l = gtk_label_new_with_mnemonic(mnemonic_string); + + hig_workarea_add_label_w(t, row, l); + return l; +} + +static void +hig_workarea_add_tall_control(GtkWidget * t, guint row, + GtkWidget * control) +{ + if (GTK_IS_MISC(control)) + gtk_misc_set_alignment(GTK_MISC(control), 0.0f, 0.5f); + + gtk_table_attach(GTK_TABLE(t), control, + 1, 2, row, row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); +} + +void hig_workarea_add_control(GtkWidget * t, guint row, + GtkWidget * control) +{ + if (GTK_IS_MISC(control)) + gtk_misc_set_alignment(GTK_MISC(control), 0.0f, 0.5f); + + gtk_table_attach(GTK_TABLE(t), control, + 1, 2, row, row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0); +} + +void +hig_workarea_add_row_w(GtkWidget * t, + guint * row, + GtkWidget * label, + GtkWidget * control, GtkWidget * mnemonic) +{ + hig_workarea_add_label_w(t, *row, label); + hig_workarea_add_control(t, *row, control); + if (GTK_IS_LABEL(label)) + gtk_label_set_mnemonic_widget(GTK_LABEL(label), + mnemonic ? mnemonic : control); + ++*row; +} + +GtkWidget *hig_workarea_add_row(GtkWidget * t, + guint * row, + const char *mnemonic_string, + GtkWidget * control, GtkWidget * mnemonic) +{ + GtkWidget *l = gtk_label_new_with_mnemonic(mnemonic_string); + + hig_workarea_add_row_w(t, row, l, control, mnemonic); + return l; +} + +GtkWidget *hig_workarea_add_tall_row(GtkWidget * table, + guint * row, + const char *mnemonic_string, + GtkWidget * control, + GtkWidget * mnemonic) +{ + GtkWidget *l = gtk_label_new_with_mnemonic(mnemonic_string); + GtkWidget *h = trg_hbox_new(FALSE, 0); + GtkWidget *v = trg_vbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(h), l, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(v), h, FALSE, FALSE, GUI_PAD_SMALL); + + hig_workarea_add_label_w(table, *row, v); + hig_workarea_add_tall_control(table, *row, control); + + if (GTK_IS_LABEL(l)) + gtk_label_set_mnemonic_widget(GTK_LABEL(l), + mnemonic ? mnemonic : control); + + ++*row; + return l; +} + +void hig_workarea_finish(GtkWidget * t, guint * row) +{ + gtk_table_resize(GTK_TABLE(t), *row, 2); +} + +void +hig_message_dialog_set_text(GtkMessageDialog * dialog, + const char *primary, const char *secondary) +{ + gtk_message_dialog_set_markup(dialog, primary); + gtk_message_dialog_format_secondary_text(dialog, "%s", secondary); +} -- cgit v1.2.3