1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-03 10:15:45 +00:00

fewer redundant gobject dynamic casts

This commit is contained in:
Jordan Lee 2012-12-13 03:00:57 +00:00
parent 104d4aa772
commit 61bc1eabd6
3 changed files with 142 additions and 109 deletions

View file

@ -482,36 +482,40 @@ category_combo_box_new (GtkTreeModel * tmodel)
GtkWidget * c; GtkWidget * c;
GtkCellRenderer * r; GtkCellRenderer * r;
GtkTreeModel * cat_model; GtkTreeModel * cat_model;
GtkCellLayout * c_cell_layout;
GtkComboBox * c_combo_box;
/* create the category combobox */ /* create the category combobox */
cat_model = category_filter_model_new (tmodel); cat_model = category_filter_model_new (tmodel);
c = gtk_combo_box_new_with_model (cat_model); c = gtk_combo_box_new_with_model (cat_model);
c_combo_box = GTK_COMBO_BOX (c);
c_cell_layout = GTK_CELL_LAYOUT (c);
g_object_unref (cat_model); g_object_unref (cat_model);
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (c), gtk_combo_box_set_row_separator_func (c_combo_box,
is_it_a_separator, NULL, NULL); is_it_a_separator, NULL, NULL);
gtk_combo_box_set_active (GTK_COMBO_BOX (c), 0); gtk_combo_box_set_active (c_combo_box, 0);
r = gtk_cell_renderer_pixbuf_new (); r = gtk_cell_renderer_pixbuf_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (c), r, FALSE); gtk_cell_layout_pack_start (c_cell_layout, r, FALSE);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_cell_data_func (c_cell_layout, r,
render_pixbuf_func, NULL, NULL); render_pixbuf_func, NULL, NULL);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_attributes (c_cell_layout, r,
"pixbuf", CAT_FILTER_COL_PIXBUF, "pixbuf", CAT_FILTER_COL_PIXBUF,
NULL); NULL);
r = gtk_cell_renderer_text_new (); r = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (c), r, FALSE); gtk_cell_layout_pack_start (c_cell_layout, r, FALSE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_attributes (c_cell_layout, r,
"text", CAT_FILTER_COL_NAME, "text", CAT_FILTER_COL_NAME,
NULL); NULL);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_cell_data_func (c_cell_layout, r,
is_capital_sensitive, is_capital_sensitive,
NULL, NULL); NULL, NULL);
r = number_renderer_new (); r = number_renderer_new ();
gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (c), r, TRUE); gtk_cell_layout_pack_end (c_cell_layout, r, TRUE);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_cell_data_func (c_cell_layout, r,
render_number_func, NULL, NULL); render_number_func, NULL, NULL);
g_object_weak_ref (G_OBJECT (cat_model), disconnect_cat_model_callbacks, tmodel); g_object_weak_ref (G_OBJECT (cat_model), disconnect_cat_model_callbacks, tmodel);
@ -788,31 +792,35 @@ activity_combo_box_new (GtkTreeModel * tmodel)
GtkWidget * c; GtkWidget * c;
GtkCellRenderer * r; GtkCellRenderer * r;
GtkTreeModel * activity_model; GtkTreeModel * activity_model;
GtkComboBox * c_combo_box;
GtkCellLayout * c_cell_layout;
activity_model = activity_filter_model_new (tmodel); activity_model = activity_filter_model_new (tmodel);
c = gtk_combo_box_new_with_model (activity_model); c = gtk_combo_box_new_with_model (activity_model);
c_combo_box = GTK_COMBO_BOX (c);
c_cell_layout = GTK_CELL_LAYOUT (c);
g_object_unref (activity_model); g_object_unref (activity_model);
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (c), gtk_combo_box_set_row_separator_func (c_combo_box,
activity_is_it_a_separator, NULL, NULL); activity_is_it_a_separator, NULL, NULL);
gtk_combo_box_set_active (GTK_COMBO_BOX (c), 0); gtk_combo_box_set_active (c_combo_box, 0);
r = gtk_cell_renderer_pixbuf_new (); r = gtk_cell_renderer_pixbuf_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (c), r, FALSE); gtk_cell_layout_pack_start (c_cell_layout, r, FALSE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_attributes (c_cell_layout, r,
"stock-id", ACTIVITY_FILTER_COL_STOCK_ID, "stock-id", ACTIVITY_FILTER_COL_STOCK_ID,
NULL); NULL);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_cell_data_func (c_cell_layout, r,
render_activity_pixbuf_func, NULL, NULL); render_activity_pixbuf_func, NULL, NULL);
r = gtk_cell_renderer_text_new (); r = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (c), r, TRUE); gtk_cell_layout_pack_start (c_cell_layout, r, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_attributes (c_cell_layout, r,
"text", ACTIVITY_FILTER_COL_NAME, "text", ACTIVITY_FILTER_COL_NAME,
NULL); NULL);
r = number_renderer_new (); r = number_renderer_new ();
gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (c), r, TRUE); gtk_cell_layout_pack_end (c_cell_layout, r, TRUE);
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (c), r, gtk_cell_layout_set_cell_data_func (c_cell_layout, r,
render_number_func, NULL, NULL); render_number_func, NULL, NULL);
g_object_weak_ref (G_OBJECT (activity_model), disconnect_activity_model_callbacks, tmodel); g_object_weak_ref (G_OBJECT (activity_model), disconnect_activity_model_callbacks, tmodel);
@ -963,6 +971,7 @@ gtr_filter_bar_new (tr_session * session, GtkTreeModel * tmodel, GtkTreeModel **
GtkWidget * s; GtkWidget * s;
GtkWidget * activity; GtkWidget * activity;
GtkWidget * category; GtkWidget * category;
GtkBox * h_box;
const char * str; const char * str;
struct filter_data * data; struct filter_data * data;
@ -989,6 +998,7 @@ gtr_filter_bar_new (tr_session * session, GtkTreeModel * tmodel, GtkTreeModel **
h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, GUI_PAD_SMALL); h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, GUI_PAD_SMALL);
h_box = GTK_BOX (h);
/* add the activity combobox */ /* add the activity combobox */
str = _("_Show:"); str = _("_Show:");
@ -996,28 +1006,28 @@ gtr_filter_bar_new (tr_session * session, GtkTreeModel * tmodel, GtkTreeModel **
l = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_markup_with_mnemonic (GTK_LABEL (l), str); gtk_label_set_markup_with_mnemonic (GTK_LABEL (l), str);
gtk_label_set_mnemonic_widget (GTK_LABEL (l), w); gtk_label_set_mnemonic_widget (GTK_LABEL (l), w);
gtk_box_pack_start (GTK_BOX (h), l, FALSE, FALSE, 0); gtk_box_pack_start (h_box, l, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (h), w, TRUE, TRUE, 0); gtk_box_pack_start (h_box, w, TRUE, TRUE, 0);
/* add a spacer */ /* add a spacer */
w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f); w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, 0u, GUI_PAD_BIG); gtk_widget_set_size_request (w, 0u, GUI_PAD_BIG);
gtk_box_pack_start (GTK_BOX (h), w, FALSE, FALSE, 0); gtk_box_pack_start (h_box, w, FALSE, FALSE, 0);
/* add the category combobox */ /* add the category combobox */
w = category; w = category;
gtk_box_pack_start (GTK_BOX (h), w, TRUE, TRUE, 0); gtk_box_pack_start (h_box, w, TRUE, TRUE, 0);
/* add a spacer */ /* add a spacer */
w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f); w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, 0u, GUI_PAD_BIG); gtk_widget_set_size_request (w, 0u, GUI_PAD_BIG);
gtk_box_pack_start (GTK_BOX (h), w, FALSE, FALSE, 0); gtk_box_pack_start (h_box, w, FALSE, FALSE, 0);
/* add the entry field */ /* add the entry field */
s = gtk_entry_new (); s = gtk_entry_new ();
gtk_entry_set_icon_from_stock (GTK_ENTRY (s), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); gtk_entry_set_icon_from_stock (GTK_ENTRY (s), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
g_signal_connect (s, "icon-release", G_CALLBACK (entry_clear), NULL); g_signal_connect (s, "icon-release", G_CALLBACK (entry_clear), NULL);
gtk_box_pack_start (GTK_BOX (h), s, TRUE, TRUE, 0); gtk_box_pack_start (h_box, s, TRUE, TRUE, 0);
g_signal_connect (s, "changed", G_CALLBACK (filter_entry_changed), data->filter_model); g_signal_connect (s, "changed", G_CALLBACK (filter_entry_changed), data->filter_model);
selection_changed_cb (NULL, data); selection_changed_cb (NULL, data);

View file

@ -20,36 +20,39 @@
enum enum
{ {
TR_RESPONSE_RESET = 1 TR_RESPONSE_RESET = 1
}; };
struct stat_ui struct stat_ui
{ {
GtkWidget * one_up_lb; GtkLabel * one_up_lb;
GtkWidget * one_down_lb; GtkLabel * one_down_lb;
GtkWidget * one_ratio_lb; GtkLabel * one_ratio_lb;
GtkWidget * one_time_lb; GtkLabel * one_time_lb;
GtkWidget * all_up_lb;
GtkWidget * all_down_lb; GtkLabel * all_up_lb;
GtkWidget * all_ratio_lb; GtkLabel * all_down_lb;
GtkWidget * all_time_lb; GtkLabel * all_ratio_lb;
GtkWidget * all_sessions_lb; GtkLabel * all_time_lb;
TrCore * core;
GtkLabel * all_sessions_lb;
TrCore * core;
}; };
static void static void
setLabel (GtkWidget * w, const char * str) setLabel (GtkLabel * l, const char * str)
{ {
gtr_label_set_text (GTK_LABEL (w), str); gtr_label_set_text (l, str);
} }
static void static void
setLabelFromRatio (GtkWidget * w, double d) setLabelFromRatio (GtkLabel * l, double d)
{ {
char buf[128]; char buf[128];
tr_strlratio (buf, d, sizeof (buf)); tr_strlratio (buf, d, sizeof (buf));
setLabel (w, buf); setLabel (l, buf);
} }
static gboolean static gboolean
@ -147,34 +150,43 @@ gtr_stats_dialog_new (GtkWindow * parent, TrCore * core)
ui->core = core; ui->core = core;
hig_workarea_add_section_title (t, &row, _("Current Session")); hig_workarea_add_section_title (t, &row, _("Current Session"));
l = ui->one_up_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->one_up_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->one_up_lb, TRUE);
hig_workarea_add_row (t, &row, _("Uploaded:"), l, NULL); hig_workarea_add_row (t, &row, _("Uploaded:"), l, NULL);
l = ui->one_down_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->one_down_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->one_down_lb, TRUE);
hig_workarea_add_row (t, &row, _("Downloaded:"), l, NULL); hig_workarea_add_row (t, &row, _("Downloaded:"), l, NULL);
l = ui->one_ratio_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->one_ratio_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->one_ratio_lb, TRUE);
hig_workarea_add_row (t, &row, _("Ratio:"), l, NULL); hig_workarea_add_row (t, &row, _("Ratio:"), l, NULL);
l = ui->one_time_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->one_time_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->one_time_lb, TRUE);
hig_workarea_add_row (t, &row, _("Duration:"), l, NULL); hig_workarea_add_row (t, &row, _("Duration:"), l, NULL);
hig_workarea_add_section_divider (t, &row); hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Total")); hig_workarea_add_section_title (t, &row, _("Total"));
l = ui->all_sessions_lb = gtk_label_new (_("Started %'d time")); l = gtk_label_new (_("Started %'d time"));
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->all_sessions_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->all_sessions_lb, TRUE);
hig_workarea_add_label_w (t, row++, l); hig_workarea_add_label_w (t, row++, l);
l = ui->all_up_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->all_up_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->all_up_lb, TRUE);
hig_workarea_add_row (t, &row, _("Uploaded:"), l, NULL); hig_workarea_add_row (t, &row, _("Uploaded:"), l, NULL);
l = ui->all_down_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->all_down_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->all_down_lb, TRUE);
hig_workarea_add_row (t, &row, _("Downloaded:"), l, NULL); hig_workarea_add_row (t, &row, _("Downloaded:"), l, NULL);
l = ui->all_ratio_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->all_ratio_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->all_ratio_lb, TRUE);
hig_workarea_add_row (t, &row, _("Ratio:"), l, NULL); hig_workarea_add_row (t, &row, _("Ratio:"), l, NULL);
l = ui->all_time_lb = gtk_label_new (NULL); l = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (l), TRUE); ui->all_time_lb = GTK_LABEL (l);
gtk_label_set_single_line_mode (ui->all_time_lb, TRUE);
hig_workarea_add_row (t, &row, _("Duration:"), l, NULL); hig_workarea_add_row (t, &row, _("Duration:"), l, NULL);
gtr_dialog_set_content (GTK_DIALOG (d), t); gtr_dialog_set_content (GTK_DIALOG (d), t);

View file

@ -51,10 +51,10 @@ typedef struct
GtkWidget * filter; GtkWidget * filter;
GtkWidget * status; GtkWidget * status;
GtkWidget * status_menu; GtkWidget * status_menu;
GtkWidget * ul_lb; GtkLabel * ul_lb;
GtkWidget * dl_lb; GtkLabel * dl_lb;
GtkWidget * stats_lb; GtkLabel * stats_lb;
GtkWidget * gutter_lb; GtkLabel * gutter_lb;
GtkWidget * alt_speed_image; GtkWidget * alt_speed_image;
GtkWidget * alt_speed_button; GtkWidget * alt_speed_button;
GtkWidget * options_menu; GtkWidget * options_menu;
@ -412,26 +412,28 @@ createSpeedMenu (PrivateData * p, tr_direction dir)
{ {
int i, n; int i, n;
GtkWidget *w, *m; GtkWidget *w, *m;
GtkMenuShell * menu_shell;
const int speeds_KBps[] = { 5, 10, 20, 30, 40, 50, 75, 100, 150, 200, 250, 500, 750 }; const int speeds_KBps[] = { 5, 10, 20, 30, 40, 50, 75, 100, 150, 200, 250, 500, 750 };
m = gtk_menu_new (); m = gtk_menu_new ();
menu_shell = GTK_MENU_SHELL (m);
w = gtk_radio_menu_item_new_with_label (NULL, _("Unlimited")); w = gtk_radio_menu_item_new_with_label (NULL, _("Unlimited"));
p->speedlimit_off_item[dir] = w; p->speedlimit_off_item[dir] = w;
g_object_set_data (G_OBJECT (w), DIRECTION_KEY, GINT_TO_POINTER (dir)); g_object_set_data (G_OBJECT (w), DIRECTION_KEY, GINT_TO_POINTER (dir));
g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (FALSE)); g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (FALSE));
g_signal_connect (w, "toggled", G_CALLBACK (onSpeedToggled), p); g_signal_connect (w, "toggled", G_CALLBACK (onSpeedToggled), p);
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
w = gtk_radio_menu_item_new_with_label_from_widget (GTK_RADIO_MENU_ITEM (w), ""); w = gtk_radio_menu_item_new_with_label_from_widget (GTK_RADIO_MENU_ITEM (w), "");
p->speedlimit_on_item[dir] = w; p->speedlimit_on_item[dir] = w;
g_object_set_data (G_OBJECT (w), DIRECTION_KEY, GINT_TO_POINTER (dir)); g_object_set_data (G_OBJECT (w), DIRECTION_KEY, GINT_TO_POINTER (dir));
g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (TRUE)); g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (TRUE));
g_signal_connect (w, "toggled", G_CALLBACK (onSpeedToggled), p); g_signal_connect (w, "toggled", G_CALLBACK (onSpeedToggled), p);
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
w = gtk_separator_menu_item_new (); w = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
for (i=0, n=G_N_ELEMENTS (speeds_KBps); i<n; ++i) for (i=0, n=G_N_ELEMENTS (speeds_KBps); i<n; ++i)
{ {
@ -441,7 +443,7 @@ createSpeedMenu (PrivateData * p, tr_direction dir)
g_object_set_data (G_OBJECT (w), DIRECTION_KEY, GINT_TO_POINTER (dir)); g_object_set_data (G_OBJECT (w), DIRECTION_KEY, GINT_TO_POINTER (dir));
g_object_set_data (G_OBJECT (w), SPEED_KEY, GINT_TO_POINTER (speeds_KBps[i])); g_object_set_data (G_OBJECT (w), SPEED_KEY, GINT_TO_POINTER (speeds_KBps[i]));
g_signal_connect (w, "activate", G_CALLBACK (onSpeedSet), p); g_signal_connect (w, "activate", G_CALLBACK (onSpeedSet), p);
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
} }
return m; return m;
@ -479,24 +481,26 @@ static GtkWidget*
createRatioMenu (PrivateData * p) createRatioMenu (PrivateData * p)
{ {
int i, n; int i, n;
GtkWidget *m, *w; GtkWidget *m, *w;
GtkMenuShell * menu_shell;
m = gtk_menu_new (); m = gtk_menu_new ();
menu_shell = GTK_MENU_SHELL (m);
w = gtk_radio_menu_item_new_with_label (NULL, _("Seed Forever")); w = gtk_radio_menu_item_new_with_label (NULL, _("Seed Forever"));
p->ratio_off_item = w; p->ratio_off_item = w;
g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (FALSE)); g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (FALSE));
g_signal_connect (w, "toggled", G_CALLBACK (onRatioToggled), p); g_signal_connect (w, "toggled", G_CALLBACK (onRatioToggled), p);
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
w = gtk_radio_menu_item_new_with_label_from_widget (GTK_RADIO_MENU_ITEM (w), ""); w = gtk_radio_menu_item_new_with_label_from_widget (GTK_RADIO_MENU_ITEM (w), "");
p->ratio_on_item = w; p->ratio_on_item = w;
g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (TRUE)); g_object_set_data (G_OBJECT (w), ENABLED_KEY, GINT_TO_POINTER (TRUE));
g_signal_connect (w, "toggled", G_CALLBACK (onRatioToggled), p); g_signal_connect (w, "toggled", G_CALLBACK (onRatioToggled), p);
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
w = gtk_separator_menu_item_new (); w = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
for (i=0, n=G_N_ELEMENTS (stockRatios); i<n; ++i) for (i=0, n=G_N_ELEMENTS (stockRatios); i<n; ++i)
{ {
@ -505,7 +509,7 @@ createRatioMenu (PrivateData * p)
w = gtk_menu_item_new_with_label (buf); w = gtk_menu_item_new_with_label (buf);
g_object_set_data (G_OBJECT (w), RATIO_KEY, GINT_TO_POINTER (i)); g_object_set_data (G_OBJECT (w), RATIO_KEY, GINT_TO_POINTER (i));
g_signal_connect (w, "activate", G_CALLBACK (onRatioSet), p); g_signal_connect (w, "activate", G_CALLBACK (onRatioSet), p);
gtk_menu_shell_append (GTK_MENU_SHELL (m), w); gtk_menu_shell_append (menu_shell, w);
} }
return m; return m;
@ -520,21 +524,22 @@ createOptionsMenu (PrivateData * p)
{ {
GtkWidget * m; GtkWidget * m;
GtkWidget * top = gtk_menu_new (); GtkWidget * top = gtk_menu_new ();
GtkMenuShell * menu_shell = GTK_MENU_SHELL (top);
m = gtk_menu_item_new_with_label (_("Limit Download Speed")); m = gtk_menu_item_new_with_label (_("Limit Download Speed"));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (m), createSpeedMenu (p, TR_DOWN)); gtk_menu_item_set_submenu (GTK_MENU_ITEM (m), createSpeedMenu (p, TR_DOWN));
gtk_menu_shell_append (GTK_MENU_SHELL (top), m); gtk_menu_shell_append (menu_shell, m);
m = gtk_menu_item_new_with_label (_("Limit Upload Speed")); m = gtk_menu_item_new_with_label (_("Limit Upload Speed"));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (m), createSpeedMenu (p, TR_UP)); gtk_menu_item_set_submenu (GTK_MENU_ITEM (m), createSpeedMenu (p, TR_UP));
gtk_menu_shell_append (GTK_MENU_SHELL (top), m); gtk_menu_shell_append (menu_shell, m);
m = gtk_separator_menu_item_new (); m = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (top), m); gtk_menu_shell_append (menu_shell, m);
m = gtk_menu_item_new_with_label (_("Stop Seeding at Ratio")); m = gtk_menu_item_new_with_label (_("Stop Seeding at Ratio"));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (m), createRatioMenu (p)); gtk_menu_item_set_submenu (GTK_MENU_ITEM (m), createRatioMenu (p));
gtk_menu_shell_append (GTK_MENU_SHELL (top), m); gtk_menu_shell_append (menu_shell, m);
gtk_widget_show_all (top); gtk_widget_show_all (top);
return top; return top;
@ -585,6 +590,7 @@ gtr_window_new (GtkApplication * app, GtkUIManager * ui_mgr, TrCore * core)
int i, n; int i, n;
const char * pch; const char * pch;
PrivateData * p; PrivateData * p;
GtkWidget * ul_lb, * dl_lb;
GtkWidget * mainmenu, *toolbar, *filter, *list, *status; GtkWidget * mainmenu, *toolbar, *filter, *list, *status;
GtkWidget * vbox, *w, *self, *h, *hbox, *menu; GtkWidget * vbox, *w, *self, *h, *hbox, *menu;
GtkWindow * win; GtkWindow * win;
@ -668,16 +674,18 @@ gtr_window_new (GtkApplication * app, GtkUIManager * ui_mgr, TrCore * core)
g_signal_connect (w, "toggled", G_CALLBACK (alt_speed_toggled_cb), p); g_signal_connect (w, "toggled", G_CALLBACK (alt_speed_toggled_cb), p);
gtk_box_pack_start (GTK_BOX (h), w, 0, 0, 0); gtk_box_pack_start (GTK_BOX (h), w, 0, 0, 0);
w = p->gutter_lb = gtk_label_new ("N Torrents"); w = gtk_label_new ("N Torrents");
gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE); p->gutter_lb = GTK_LABEL (w);
gtk_label_set_single_line_mode (p->gutter_lb, TRUE);
gtk_box_pack_start (GTK_BOX (h), w, 1, 1, GUI_PAD); gtk_box_pack_start (GTK_BOX (h), w, 1, 1, GUI_PAD);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, GUI_PAD); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, GUI_PAD);
w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f); w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, GUI_PAD, 0u); gtk_widget_set_size_request (w, GUI_PAD, 0u);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
w = p->ul_lb = gtk_label_new (NULL); w = ul_lb = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE); p->ul_lb = GTK_LABEL (w);
gtk_label_set_single_line_mode (p->ul_lb, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
w = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU); w = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
@ -687,8 +695,9 @@ gtr_window_new (GtkApplication * app, GtkUIManager * ui_mgr, TrCore * core)
w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f); w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, GUI_PAD, 0u); gtk_widget_set_size_request (w, GUI_PAD, 0u);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
w = p->dl_lb = gtk_label_new (NULL); w = dl_lb = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE); p->dl_lb = GTK_LABEL (w);
gtk_label_set_single_line_mode (p->dl_lb, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
w = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU); w = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
@ -701,8 +710,9 @@ gtr_window_new (GtkApplication * app, GtkUIManager * ui_mgr, TrCore * core)
gtk_button_set_relief (GTK_BUTTON (w), GTK_RELIEF_NONE); gtk_button_set_relief (GTK_BUTTON (w), GTK_RELIEF_NONE);
g_signal_connect (w, "clicked", G_CALLBACK (onYinYangReleased), p); g_signal_connect (w, "clicked", G_CALLBACK (onYinYangReleased), p);
gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
w = p->stats_lb = gtk_label_new (NULL); w = gtk_label_new (NULL);
gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE); p->stats_lb = GTK_LABEL (w);
gtk_label_set_single_line_mode (p->stats_lb, TRUE);
gtk_box_pack_end (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_box_pack_end (GTK_BOX (hbox), w, FALSE, FALSE, 0);
gtk_box_pack_end (GTK_BOX (h), hbox, FALSE, FALSE, 0); gtk_box_pack_end (GTK_BOX (h), hbox, FALSE, FALSE, 0);
@ -727,12 +737,12 @@ gtr_window_new (GtkApplication * app, GtkUIManager * ui_mgr, TrCore * core)
/* this is to determine the maximum width/height for the label */ /* this is to determine the maximum width/height for the label */
int w=0, h=0; int w=0, h=0;
PangoLayout * pango_layout; PangoLayout * pango_layout;
pango_layout = gtk_widget_create_pango_layout (p->ul_lb, "999.99 kB/s"); pango_layout = gtk_widget_create_pango_layout (ul_lb, "999.99 kB/s");
pango_layout_get_pixel_size (pango_layout, &w, &h); pango_layout_get_pixel_size (pango_layout, &w, &h);
gtk_widget_set_size_request (p->ul_lb, w, h); gtk_widget_set_size_request (ul_lb, w, h);
gtk_widget_set_size_request (p->dl_lb, w, h); gtk_widget_set_size_request (dl_lb, w, h);
gtk_misc_set_alignment (GTK_MISC (p->ul_lb), 1.0, 0.5); gtk_misc_set_alignment (GTK_MISC (ul_lb), 1.0, 0.5);
gtk_misc_set_alignment (GTK_MISC (p->dl_lb), 1.0, 0.5); gtk_misc_set_alignment (GTK_MISC (dl_lb), 1.0, 0.5);
g_object_unref (G_OBJECT (pango_layout)); g_object_unref (G_OBJECT (pango_layout));
} }
@ -758,25 +768,26 @@ gtr_window_new (GtkApplication * app, GtkUIManager * ui_mgr, TrCore * core)
static void static void
updateTorrentCount (PrivateData * p) updateTorrentCount (PrivateData * p)
{ {
if (p && p->core) if (p && p->core)
{ {
char buf[512]; char buf[512];
const int torrentCount = gtk_tree_model_iter_n_children (gtr_core_model (p->core), NULL); const int torrentCount = gtk_tree_model_iter_n_children (gtr_core_model (p->core), NULL);
const int visibleCount = gtk_tree_model_iter_n_children (p->filter_model, NULL); const int visibleCount = gtk_tree_model_iter_n_children (p->filter_model, NULL);
if (!torrentCount) if (!torrentCount)
*buf = '\0'; *buf = '\0';
else if (torrentCount != visibleCount) else if (torrentCount != visibleCount)
g_snprintf (buf, sizeof (buf), g_snprintf (buf, sizeof (buf),
ngettext ("%1$'d of %2$'d Torrent", ngettext ("%1$'d of %2$'d Torrent",
"%1$'d of %2$'d Torrents", "%1$'d of %2$'d Torrents",
torrentCount), torrentCount),
visibleCount, torrentCount); visibleCount, torrentCount);
else else
g_snprintf (buf, sizeof (buf), g_snprintf (buf, sizeof (buf),
ngettext ("%'d Torrent", "%'d Torrents", torrentCount), ngettext ("%'d Torrent", "%'d Torrents", torrentCount),
torrentCount); torrentCount);
gtr_label_set_text (GTK_LABEL (p->gutter_lb), buf);
gtr_label_set_text (p->gutter_lb, buf);
} }
} }
@ -824,7 +835,7 @@ updateStats (PrivateData * p)
tr_strlratio (ratio, stats.ratio, sizeof (ratio)); tr_strlratio (ratio, stats.ratio, sizeof (ratio));
g_snprintf (buf, sizeof (buf), _("Ratio: %s"), ratio); g_snprintf (buf, sizeof (buf), _("Ratio: %s"), ratio);
} }
gtr_label_set_text (GTK_LABEL (p->stats_lb), buf); gtr_label_set_text (p->stats_lb, buf);
} }
static void static void
@ -851,10 +862,10 @@ updateSpeeds (PrivateData * p)
while (gtk_tree_model_iter_next (model, &iter)); while (gtk_tree_model_iter_next (model, &iter));
tr_formatter_speed_KBps (buf, down, sizeof (buf)); tr_formatter_speed_KBps (buf, down, sizeof (buf));
gtr_label_set_text (GTK_LABEL (p->dl_lb), buf); gtr_label_set_text (p->dl_lb, buf);
tr_formatter_speed_KBps (buf, up, sizeof (buf)); tr_formatter_speed_KBps (buf, up, sizeof (buf));
gtr_label_set_text (GTK_LABEL (p->ul_lb), buf); gtr_label_set_text (p->ul_lb, buf);
} }
} }