2007-06-06 00:30:13 +00:00
|
|
|
/*
|
2011-01-19 13:48:47 +00:00
|
|
|
* This file Copyright (C) Mnemosyne LLC
|
2007-06-06 00:30:13 +00:00
|
|
|
*
|
2010-12-27 19:18:17 +00:00
|
|
|
* This file is licensed by the GPL version 2. Works owned by the
|
2012-12-05 17:29:46 +00:00
|
|
|
* Transmission project are granted a special exemption to clause 2 (b)
|
2008-09-23 19:11:04 +00:00
|
|
|
* so that the bulk of its code can remain under the MIT license.
|
2007-06-18 03:40:41 +00:00
|
|
|
* This exemption does not extend to derived works not owned by
|
|
|
|
* the Transmission project.
|
2008-09-23 19:11:04 +00:00
|
|
|
*
|
2007-08-18 17:19:49 +00:00
|
|
|
* $Id$
|
2007-06-06 00:30:13 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
#include "hig.h"
|
|
|
|
|
|
|
|
GtkWidget*
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_create (void)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * grid = gtk_grid_new ();
|
2008-09-23 19:11:04 +00:00
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (grid), GUI_PAD_BIG);
|
|
|
|
gtk_grid_set_row_spacing (GTK_GRID (grid), GUI_PAD);
|
|
|
|
gtk_grid_set_column_spacing (GTK_GRID (grid), GUI_PAD_BIG);
|
2012-07-14 19:26:55 +00:00
|
|
|
|
|
|
|
return grid;
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_section_divider (GtkWidget * t, guint * row)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
|
2008-09-23 19:11:04 +00:00
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_widget_set_size_request (w, 0u, 6u);
|
|
|
|
gtk_grid_attach (GTK_GRID (t), w, 0, *row, 2, 1);
|
2008-09-23 19:11:04 +00:00
|
|
|
++ * row;
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
2008-06-02 04:41:55 +00:00
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_section_title_widget (GtkWidget * t, guint * row, GtkWidget * w)
|
2008-06-02 04:41:55 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_widget_set_hexpand (w, TRUE);
|
|
|
|
gtk_grid_attach (GTK_GRID (t), w, 0, *row, 2, 1);
|
2008-09-23 19:11:04 +00:00
|
|
|
++ * row;
|
2008-06-02 04:41:55 +00:00
|
|
|
}
|
|
|
|
|
2007-06-06 00:30:13 +00:00
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_section_title (GtkWidget * t, guint * row, const char * section_title)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2011-08-13 21:08:53 +00:00
|
|
|
char buf[512];
|
2008-02-12 16:56:44 +00:00
|
|
|
GtkWidget * l;
|
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
g_snprintf (buf, sizeof (buf), "<b>%s</b>", 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);
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_wide_control (GtkWidget * t, guint * row, GtkWidget * w)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_widget_set_hexpand (w, TRUE);
|
|
|
|
gtk_widget_set_margin_left (w, 18);
|
|
|
|
gtk_grid_attach (GTK_GRID (t), w, 0, *row, 2, 1);
|
2008-09-23 19:11:04 +00:00
|
|
|
++ * row;
|
2007-12-13 19:54:24 +00:00
|
|
|
}
|
2009-10-28 03:54:36 +00:00
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_wide_tall_control (GtkWidget * t, guint * row, GtkWidget * w)
|
2009-10-28 03:54:36 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_widget_set_hexpand (w, TRUE);
|
2012-12-16 22:51:29 +00:00
|
|
|
gtk_widget_set_vexpand (w, TRUE);
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_wide_control (t, row, w);
|
2009-10-28 03:54:36 +00:00
|
|
|
}
|
|
|
|
|
2007-06-06 00:30:13 +00:00
|
|
|
GtkWidget *
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_wide_checkbutton (GtkWidget * t,
|
2011-08-13 21:08:53 +00:00
|
|
|
guint * row,
|
2008-09-23 19:11:04 +00:00
|
|
|
const char * mnemonic_string,
|
2012-12-05 17:29:46 +00:00
|
|
|
gboolean is_active)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * w = gtk_check_button_new_with_mnemonic (mnemonic_string);
|
2008-09-23 19:11:04 +00:00
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), is_active);
|
|
|
|
hig_workarea_add_wide_control (t, row, w);
|
2008-02-12 16:56:44 +00:00
|
|
|
return w;
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_label_w (GtkWidget * t, guint row, GtkWidget * w)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_widget_set_margin_left (w, 18);
|
|
|
|
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_grid_attach (GTK_GRID (t), w, 0, row, 1, 1);
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
2009-09-17 01:21:49 +00:00
|
|
|
static void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_tall_control (GtkWidget * t, guint row, GtkWidget * control)
|
2009-09-17 01:21:49 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
if (GTK_IS_MISC (control))
|
|
|
|
gtk_misc_set_alignment (GTK_MISC (control), 0.0f, 0.5f);
|
2009-09-17 01:21:49 +00:00
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
g_object_set (control, "expand", TRUE, NULL);
|
|
|
|
gtk_grid_attach (GTK_GRID (t), control, 1, row, 1, 1);
|
2009-09-17 01:21:49 +00:00
|
|
|
}
|
|
|
|
|
2010-12-21 17:22:37 +00:00
|
|
|
static void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_control (GtkWidget * t, guint row, GtkWidget * control)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
if (GTK_IS_MISC (control))
|
|
|
|
gtk_misc_set_alignment (GTK_MISC (control), 0.0f, 0.5f);
|
2007-06-07 17:53:54 +00:00
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
gtk_widget_set_hexpand (control, TRUE);
|
|
|
|
gtk_grid_attach (GTK_GRID (t), control, 1, row, 1, 1);
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_row_w (GtkWidget * t,
|
2011-08-13 21:08:53 +00:00
|
|
|
guint * row,
|
2008-09-23 19:11:04 +00:00
|
|
|
GtkWidget * label,
|
|
|
|
GtkWidget * control,
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * mnemonic)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
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);
|
2008-09-23 19:11:04 +00:00
|
|
|
++ * row;
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
GtkWidget*
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_row (GtkWidget * t,
|
2011-08-13 21:08:53 +00:00
|
|
|
guint * row,
|
2008-09-23 19:11:04 +00:00
|
|
|
const char * mnemonic_string,
|
2011-08-13 21:08:53 +00:00
|
|
|
GtkWidget * control,
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * mnemonic)
|
2007-06-06 00:30:13 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * l = gtk_label_new_with_mnemonic (mnemonic_string);
|
2008-09-23 19:11:04 +00:00
|
|
|
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_row_w (t, row, l, control, mnemonic);
|
2008-02-12 16:56:44 +00:00
|
|
|
return l;
|
2007-06-06 00:30:13 +00:00
|
|
|
}
|
|
|
|
|
2009-09-17 01:21:49 +00:00
|
|
|
GtkWidget*
|
2012-12-05 17:29:46 +00:00
|
|
|
hig_workarea_add_tall_row (GtkWidget * table,
|
2011-08-13 21:08:53 +00:00
|
|
|
guint * row,
|
2009-09-17 01:21:49 +00:00
|
|
|
const char * mnemonic_string,
|
2011-08-13 21:08:53 +00:00
|
|
|
GtkWidget * control,
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * mnemonic)
|
2009-09-17 01:21:49 +00:00
|
|
|
{
|
2012-12-05 17:29:46 +00:00
|
|
|
GtkWidget * l = gtk_label_new_with_mnemonic (mnemonic_string);
|
|
|
|
GtkWidget * h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
|
|
|
GtkWidget * v = gtk_box_new (GTK_ORIENTATION_VERTICAL, 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);
|
2009-09-17 01:21:49 +00:00
|
|
|
|
|
|
|
++ * row;
|
|
|
|
return l;
|
|
|
|
}
|