From aff982298fb16ef8bbf32697df59965def50eb5d Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Wed, 26 Oct 2011 18:55:21 +0000 Subject: closer to gtk3 support, I think just the graph needs doing now. --- src/trg-about-window.c | 2 +- src/trg-destination-combo.c | 4 ++ src/trg-destination-combo.h | 4 +- src/trg-main-window.c | 34 +++++++++++-- src/trg-preferences-dialog.c | 4 ++ src/trg-remote-prefs-dialog.c | 110 ++++++++++++++++++++++++----------------- src/trg-stats-dialog.c | 2 +- src/trg-torrent-add-dialog.c | 31 ------------ src/trg-torrent-props-dialog.c | 14 ++---- src/util.c | 31 ++++++++++++ src/util.h | 1 + 11 files changed, 143 insertions(+), 94 deletions(-) diff --git a/src/trg-about-window.c b/src/trg-about-window.c index 3e4f66d..392d2a1 100644 --- a/src/trg-about-window.c +++ b/src/trg-about-window.c @@ -65,7 +65,7 @@ GtkWidget *trg_about_window_new(GtkWindow * parent) gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(dialog), "GPL2"); } - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(dialog), PACKAGE_NAME); + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(dialog), PACKAGE_NAME); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), PACKAGE_VERSION); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), diff --git a/src/trg-destination-combo.c b/src/trg-destination-combo.c index db9fd31..2ab5048 100644 --- a/src/trg-destination-combo.c +++ b/src/trg-destination-combo.c @@ -128,9 +128,13 @@ static void gtk_combo_box_entry_active_changed(GtkComboBox *combo_box, } } +#if GTK_CHECK_VERSION( 3, 0, 0 ) + gtk_editable_set_editable(GTK_EDITABLE(trg_destination_combo_get_entry(TRG_DESTINATION_COMBO(combo_box))), editableEntry); +#else gtk_entry_set_editable( trg_destination_combo_get_entry(TRG_DESTINATION_COMBO(combo_box)), editableEntry); +#endif } gboolean trg_destination_combo_has_text(TrgDestinationCombo *combo) { diff --git a/src/trg-destination-combo.h b/src/trg-destination-combo.h index a132aab..a5ce9d3 100644 --- a/src/trg-destination-combo.h +++ b/src/trg-destination-combo.h @@ -38,11 +38,11 @@ G_BEGIN_DECLS #define TRG_DESTINATION_COMBO_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), TRG_TYPE_DESTINATION_COMBO, TrgDestinationComboClass)) typedef struct { - GtkComboBoxEntry parent; + GtkComboBox parent; } TrgDestinationCombo; typedef struct { - GtkComboBoxEntryClass parent_class; + GtkComboBoxClass parent_class; } TrgDestinationComboClass; GType trg_destination_combo_get_type(void); diff --git a/src/trg-main-window.c b/src/trg-main-window.c index a12fe61..d4a67e3 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -31,6 +31,9 @@ #include #include #include +#if GTK_CHECK_VERSION( 3,0, 0 ) +#include +#endif #include #ifdef HAVE_LIBNOTIFY #include @@ -58,7 +61,9 @@ #include "trg-trackers-tree-view.h" #include "trg-trackers-model.h" #include "trg-state-selector.h" +#ifndef TRG_NO_GRAPH #include "trg-torrent-graph.h" +#endif #include "trg-torrent-move-dialog.h" #include "trg-torrent-props-dialog.h" #include "trg-torrent-add-url-dialog.h" @@ -199,7 +204,9 @@ struct _TrgMainWindowPrivate { TrgPeersModel *peersModel; TrgPeersTreeView *peersTreeView; +#ifndef TRG_NO_GRAPH TrgTorrentGraph *graph; +#endif gint graphNotebookIndex; GtkWidget *hpaned, *vpaned; @@ -741,6 +748,7 @@ static void view_notebook_toggled_cb(GtkCheckMenuItem * w, gpointer data) { trg_widget_set_visible(priv->notebook, gtk_check_menu_item_get_active(w)); } +#ifndef TRG_NO_GRAPH static void trg_main_window_toggle_graph_cb(GtkCheckMenuItem * w, gpointer win) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); if (gtk_check_menu_item_get_active(w)) { @@ -751,6 +759,7 @@ static void trg_main_window_toggle_graph_cb(GtkCheckMenuItem * w, gpointer win) trg_main_window_remove_graph(TRG_MAIN_WINDOW(win)); } } +#endif void trg_main_window_notebook_set_visible(TrgMainWindow *win, gboolean visible) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); @@ -788,10 +797,12 @@ static GtkWidget *trg_main_window_notebook_new(TrgMainWindow * win) { my_scrolledwin_new(GTK_WIDGET (priv->peersTreeView)), gtk_label_new(_("Peers"))); +#ifndef TRG_NO_GRAPH if (trg_prefs_get_bool(prefs, TRG_PREFS_KEY_SHOW_GRAPH, TRG_PREFS_GLOBAL)) trg_main_window_add_graph(win, FALSE); else priv->graphNotebookIndex = -1; +#endif return notebook; } @@ -929,8 +940,10 @@ static gboolean on_torrent_get(gpointer data, int mode) { g_free(iconText); } +#ifndef TRG_NO_GRAPH if (priv->graphNotebookIndex >= 0) trg_torrent_graph_set_speed(priv->graph, &stats); +#endif if (mode != TORRENT_GET_MODE_INTERACTION) priv->timerId = g_timeout_add_seconds(interval, trg_update_torrents_timerfunc, win); @@ -1205,8 +1218,10 @@ void trg_main_window_conn_changed(TrgMainWindow * win, gboolean connected) { trg_main_window_torrent_scrub(win); trg_state_selector_disconnect(priv->stateSelector); +#ifndef TRG_NO_GRAPH if (priv->graphNotebookIndex >= 0) trg_torrent_graph_set_nothing(priv->graph); +#endif trg_torrent_model_remove_all(priv->torrentModel); @@ -1262,8 +1277,11 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) { *b_remove, *b_delete, *b_props, *b_local_prefs, *b_remote_prefs, *b_about, *b_view_states, *b_view_notebook, *b_view_stats, *b_add_url, *b_quit, *b_move, *b_reannounce, *b_pause_all, - *b_resume_all, *b_dir_filters, *b_tracker_filters, *b_show_graph, + *b_resume_all, *b_dir_filters, *b_tracker_filters, *b_up_queue, *b_down_queue, *b_top_queue, *b_bottom_queue, +#ifndef TRG_NO_GRAPH + *b_show_graph, +#endif *b_start_now; TrgMenuBar *menuBar; @@ -1281,8 +1299,11 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) { "view-states-button", &b_view_states, "view-stats-button", &b_view_stats, "about-button", &b_about, "quit-button", &b_quit, "dir-filters", &b_dir_filters, "tracker-filters", - &b_tracker_filters, "show-graph", &b_show_graph, "up-queue", - &b_up_queue, "down-queue", &b_down_queue, "top-queue", + &b_tracker_filters, +#ifndef TRG_NO_GRAPH + "show-graph", &b_show_graph, +#endif + "up-queue", &b_up_queue, "down-queue", &b_down_queue, "top-queue", &b_top_queue, "bottom-queue", &b_bottom_queue, "start-now", &b_start_now, NULL); @@ -1318,15 +1339,18 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) { G_CALLBACK(main_window_toggle_filter_dirs), win); g_signal_connect(b_tracker_filters, "toggled", G_CALLBACK(main_window_toggle_filter_trackers), win); +#ifndef TRG_NO_GRAPH g_signal_connect(b_tracker_filters, "toggled", G_CALLBACK(trg_main_window_toggle_graph_cb), win); +#endif g_signal_connect(b_view_states, "toggled", G_CALLBACK(view_states_toggled_cb), win); g_signal_connect(b_view_stats, "activate", G_CALLBACK(view_stats_toggled_cb), win); +#ifndef TRG_NO_GRAPH g_signal_connect(b_show_graph, "toggled", G_CALLBACK(trg_main_window_toggle_graph_cb), win); - +#endif g_signal_connect(b_props, "activate", G_CALLBACK(open_props_cb), win); g_signal_connect(b_quit, "activate", G_CALLBACK(quit_cb), win); @@ -1779,6 +1803,7 @@ void trg_main_window_remove_status_icon(TrgMainWindow * win) { priv->statusIcon = NULL; } +#ifndef TRG_NO_GRAPH void trg_main_window_add_graph(TrgMainWindow * win, gboolean show) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); @@ -1802,6 +1827,7 @@ void trg_main_window_remove_graph(TrgMainWindow * win) { priv->graphNotebookIndex = -1; } } +#endif void trg_main_window_add_status_icon(TrgMainWindow * win) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c index 331f60e..1f24106 100644 --- a/src/trg-preferences-dialog.c +++ b/src/trg-preferences-dialog.c @@ -280,12 +280,14 @@ static void toggle_filter_trackers(GtkToggleButton * w, gpointer win) { gtk_toggle_button_get_active(w)); } +#ifndef TRG_NO_GRAPH static void toggle_graph(GtkToggleButton * w, gpointer win) { if (gtk_toggle_button_get_active(w)) trg_main_window_add_graph(TRG_MAIN_WINDOW(win), TRUE); else trg_main_window_remove_graph(TRG_MAIN_WINDOW(win)); } +#endif static void toggle_tray_icon(GtkToggleButton * w, gpointer win) { if (gtk_toggle_button_get_active(w)) @@ -348,11 +350,13 @@ static GtkWidget *trg_prefs_desktopPage(TrgPreferencesDialog *dlg) { G_CALLBACK(notebook_toggled_cb), priv->win); hig_workarea_add_wide_control(t, &row, w); +#ifndef TRG_NO_GRAPH w = trgp_check_new(dlg, _("Show graph"), TRG_PREFS_KEY_SHOW_GRAPH, TRG_PREFS_GLOBAL, GTK_TOGGLE_BUTTON(w)); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(toggle_graph), priv->win); hig_workarea_add_wide_control(t, &row, w); +#endif hig_workarea_add_section_title(t, &row, _("System Tray")); diff --git a/src/trg-remote-prefs-dialog.c b/src/trg-remote-prefs-dialog.c index 47124cb..c706b72 100644 --- a/src/trg-remote-prefs-dialog.c +++ b/src/trg-remote-prefs-dialog.c @@ -141,54 +141,66 @@ static GtkWidget *trg_rprefs_limitsPage(TrgRemotePrefsDialog * win, hig_workarea_add_section_title(t, &row, _("Bandwidth")); - tb = trg_json_widget_check_new( - &priv->widgets, json, SGET_SPEED_LIMIT_DOWN_ENABLED, _("Limit download speed (KB/s)"), NULL); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_SPEED_LIMIT_DOWN, tb, 0, INT_MAX, 1); + tb = trg_json_widget_check_new(&priv->widgets, json, + SGET_SPEED_LIMIT_DOWN_ENABLED, _("Limit download speed (KB/s)"), + NULL); + w = trg_json_widget_spin_new_int(&priv->widgets, json, + SGET_SPEED_LIMIT_DOWN, tb, 0, INT_MAX, 1); hig_workarea_add_row_w(t, &row, tb, w, NULL); - tb = trg_json_widget_check_new(&priv->widgets, json, SGET_SPEED_LIMIT_UP_ENABLED, _("Limit upload speed (KB/s)"), NULL); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_SPEED_LIMIT_UP, tb, 0, INT_MAX, 1); + tb = trg_json_widget_check_new(&priv->widgets, json, + SGET_SPEED_LIMIT_UP_ENABLED, _("Limit upload speed (KB/s)"), NULL); + w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_SPEED_LIMIT_UP, + tb, 0, INT_MAX, 1); hig_workarea_add_row_w(t, &row, tb, w, NULL); hig_workarea_add_section_title(t, &row, _("Seeding")); - tb = trg_json_widget_check_new( - &priv->widgets, json, SGET_SEED_RATIO_LIMITED, _("Seed ratio limit"), NULL); - w = trg_json_widget_spin_new_double(&priv->widgets, json, SGET_SEED_RATIO_LIMIT, tb, 0, INT_MAX, 0.1); + tb = trg_json_widget_check_new(&priv->widgets, json, + SGET_SEED_RATIO_LIMITED, _("Seed ratio limit"), NULL); + w = trg_json_widget_spin_new_double(&priv->widgets, json, + SGET_SEED_RATIO_LIMIT, tb, 0, INT_MAX, 0.1); hig_workarea_add_row_w(t, &row, tb, w, NULL); if (json_object_has_member(json, SGET_DOWNLOAD_QUEUE_ENABLED)) { hig_workarea_add_section_title(t, &row, _("Queues")); - tb = trg_json_widget_check_new( - &priv->widgets, json, SGET_DOWNLOAD_QUEUE_ENABLED, _("Download queue size"), NULL); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_DOWNLOAD_QUEUE_SIZE, tb, 0, INT_MAX, 1); + tb = trg_json_widget_check_new(&priv->widgets, json, + SGET_DOWNLOAD_QUEUE_ENABLED, _("Download queue size"), NULL); + w = trg_json_widget_spin_new_int(&priv->widgets, json, + SGET_DOWNLOAD_QUEUE_SIZE, tb, 0, INT_MAX, 1); hig_workarea_add_row_w(t, &row, tb, w, NULL); - tb = trg_json_widget_check_new( - &priv->widgets, json, SGET_SEED_QUEUE_ENABLED, _("Seed queue size"), NULL); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_SEED_QUEUE_SIZE, tb, 0, INT_MAX, 1); + tb = trg_json_widget_check_new(&priv->widgets, json, + SGET_SEED_QUEUE_ENABLED, _("Seed queue size"), NULL); + w = trg_json_widget_spin_new_int(&priv->widgets, json, + SGET_SEED_QUEUE_SIZE, tb, 0, INT_MAX, 1); hig_workarea_add_row_w(t, &row, tb, w, NULL); - tb = trg_json_widget_check_new( - &priv->widgets, json, SGET_QUEUE_STALLED_ENABLED, _("Ignore stalled (minutes)"), NULL); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_QUEUE_STALLED_MINUTES, tb, 0, INT_MAX, 1); + tb + = trg_json_widget_check_new(&priv->widgets, json, + SGET_QUEUE_STALLED_ENABLED, + _("Ignore stalled (minutes)"), NULL); + w = trg_json_widget_spin_new_int(&priv->widgets, json, + SGET_QUEUE_STALLED_MINUTES, tb, 0, INT_MAX, 1); hig_workarea_add_row_w(t, &row, tb, w, NULL); } hig_workarea_add_section_title(t, &row, _("Peers")); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_PEER_LIMIT_GLOBAL, NULL, 0, INT_MAX, 5); + w = trg_json_widget_spin_new_int(&priv->widgets, json, + SGET_PEER_LIMIT_GLOBAL, NULL, 0, INT_MAX, 5); hig_workarea_add_row(t, &row, _("Global peer limit"), w, w); - w = trg_json_widget_spin_new_int(&priv->widgets, json, SGET_PEER_LIMIT_PER_TORRENT, NULL, 0, INT_MAX, 5); + w = trg_json_widget_spin_new_int(&priv->widgets, json, + SGET_PEER_LIMIT_PER_TORRENT, NULL, 0, INT_MAX, 5); hig_workarea_add_row(t, &row, _("Per torrent peer limit"), w, w); return t; } static gboolean on_port_tested(gpointer data) { - trg_response *response = (trg_response*)data; + trg_response *response = (trg_response*) data; if (TRG_IS_REMOTE_PREFS_DIALOG(response->cb_data)) { TrgRemotePrefsDialogPrivate *priv = TRG_REMOTE_PREFS_DIALOG_GET_PRIVATE(response->cb_data); @@ -231,7 +243,7 @@ static void port_test_cb(GtkButton * b, gpointer data) { } static gboolean on_blocklist_updated(gpointer data) { - trg_response *response = (trg_response*)data; + trg_response *response = (trg_response*) data; if (TRG_IS_REMOTE_PREFS_DIALOG(response->cb_data)) { TrgRemotePrefsDialogPrivate *priv = TRG_REMOTE_PREFS_DIALOG_GET_PRIVATE(response->cb_data); @@ -280,10 +292,8 @@ static GtkWidget *trg_rprefs_connPage(TrgRemotePrefsDialog * win, t = hig_workarea_create(); - w = priv->encryption_combo = gtk_combo_box_new_text(); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("Required")); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("Preferred")); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("Tolerated")); + w = priv->encryption_combo = gtr_combo_box_new_enum(_("Required"), 0, + _("Preferred"), 1, _("Tolerated"), 2); stringValue = session_get_encryption(s); if (g_strcmp0(stringValue, "required") == 0) { gtk_combo_box_set_active(GTK_COMBO_BOX(w), 0); @@ -294,7 +304,8 @@ static GtkWidget *trg_rprefs_connPage(TrgRemotePrefsDialog * win, } hig_workarea_add_row(t, &row, _("Encryption"), w, NULL); - w = trg_json_widget_spin_new_int(&priv->widgets, s, SGET_PEER_PORT, NULL, 0, 65535, 1); + w = trg_json_widget_spin_new_int(&priv->widgets, s, SGET_PEER_PORT, NULL, + 0, 65535, 1); hig_workarea_add_row(t, &row, _("Peer port"), w, w); w = priv->port_test_label = gtk_label_new(_("Port test")); @@ -302,24 +313,31 @@ static GtkWidget *trg_rprefs_connPage(TrgRemotePrefsDialog * win, g_signal_connect(w, "clicked", G_CALLBACK(port_test_cb), win); hig_workarea_add_row_w(t, &row, priv->port_test_label, w, NULL); - w = trg_json_widget_check_new(&priv->widgets, s, SGET_PEER_PORT_RANDOM_ON_START, _("Random peer port on start"), NULL); + w = trg_json_widget_check_new(&priv->widgets, s, + SGET_PEER_PORT_RANDOM_ON_START, _("Random peer port on start"), + NULL); hig_workarea_add_wide_control(t, &row, w); - w = trg_json_widget_check_new(&priv->widgets, s, SGET_PORT_FORWARDING_ENABLED, _("Peer port forwarding"), NULL); + w = trg_json_widget_check_new(&priv->widgets, s, + SGET_PORT_FORWARDING_ENABLED, _("Peer port forwarding"), NULL); hig_workarea_add_wide_control(t, &row, w); - w = trg_json_widget_check_new(&priv->widgets, s, SGET_PEX_ENABLED, _("Peer exchange (PEX)"), NULL); + w = trg_json_widget_check_new(&priv->widgets, s, SGET_PEX_ENABLED, + _("Peer exchange (PEX)"), NULL); hig_workarea_add_wide_control(t, &row, w); - w = trg_json_widget_check_new(&priv->widgets, s, SGET_DHT_ENABLED, _("Distributed Hash Table (DHT)"), NULL); + w = trg_json_widget_check_new(&priv->widgets, s, SGET_DHT_ENABLED, + _("Distributed Hash Table (DHT)"), NULL); hig_workarea_add_wide_control(t, &row, w); - w = trg_json_widget_check_new(&priv->widgets, s, SGET_LPD_ENABLED, _("Local peer discovery"), NULL); + w = trg_json_widget_check_new(&priv->widgets, s, SGET_LPD_ENABLED, + _("Local peer discovery"), NULL); hig_workarea_add_wide_control(t, &row, w); stringValue = g_strdup_printf(_("Blocklist (%ld entries)"), session_get_blocklist_size(s)); - tb = priv->blocklist_check = trg_json_widget_check_new(&priv->widgets, s, SGET_BLOCKLIST_ENABLED, stringValue, NULL); + tb = priv->blocklist_check = trg_json_widget_check_new(&priv->widgets, s, + SGET_BLOCKLIST_ENABLED, stringValue, NULL); g_free((gchar *) stringValue); w = priv->blocklist_update_button = gtk_button_new_with_label(_("Update")); @@ -330,7 +348,8 @@ static GtkWidget *trg_rprefs_connPage(TrgRemotePrefsDialog * win, //GtkWidget *trg_json_widget_entry_new(GList **wl, JsonObject *obj, gchar *key, GtkWidget *toggleDep); stringValue = session_get_blocklist_url(s); if (stringValue) { - w = trg_json_widget_entry_new(&priv->widgets, s, SGET_BLOCKLIST_URL, NULL); + w = trg_json_widget_entry_new(&priv->widgets, s, SGET_BLOCKLIST_URL, + NULL); hig_workarea_add_row(t, &row, _("Blocklist URL:"), w, NULL); } @@ -351,25 +370,30 @@ static GtkWidget *trg_rprefs_generalPage(TrgRemotePrefsDialog * win, w = trg_json_widget_entry_new(&priv->widgets, s, SGET_DOWNLOAD_DIR, NULL); hig_workarea_add_row(t, &row, _("Download directory"), w, NULL); - tb = trg_json_widget_check_new(&priv->widgets, s, SGET_INCOMPLETE_DIR_ENABLED, _("Incomplete download dir"), NULL); + tb = trg_json_widget_check_new(&priv->widgets, s, + SGET_INCOMPLETE_DIR_ENABLED, _("Incomplete download dir"), NULL); w = trg_json_widget_entry_new(&priv->widgets, s, SGET_INCOMPLETE_DIR, tb); hig_workarea_add_row_w(t, &row, tb, w, NULL); - tb = trg_json_widget_check_new(&priv->widgets, s, SGET_SCRIPT_TORRENT_DONE_ENABLED, _("Torrent done script"), NULL); - w = trg_json_widget_entry_new(&priv->widgets, s, SGET_SCRIPT_TORRENT_DONE_FILENAME, tb); + tb = trg_json_widget_check_new(&priv->widgets, s, + SGET_SCRIPT_TORRENT_DONE_ENABLED, _("Torrent done script"), NULL); + w = trg_json_widget_entry_new(&priv->widgets, s, + SGET_SCRIPT_TORRENT_DONE_FILENAME, tb); hig_workarea_add_row_w(t, &row, tb, w, NULL); cache_size_mb = session_get_cache_size_mb(s); if (cache_size_mb >= 0) { - w = trg_json_widget_spin_new_int(&priv->widgets, s, SGET_CACHE_SIZE_MB, NULL, 0, - INT_MAX, 1); + w = trg_json_widget_spin_new_int(&priv->widgets, s, SGET_CACHE_SIZE_MB, + NULL, 0, INT_MAX, 1); hig_workarea_add_row(t, &row, _("Cache size (MB)"), w, w); } - w = trg_json_widget_check_new(&priv->widgets, s, SGET_RENAME_PARTIAL_FILES, _("Rename partial files"), NULL); + w = trg_json_widget_check_new(&priv->widgets, s, SGET_RENAME_PARTIAL_FILES, + _("Rename partial files"), NULL); hig_workarea_add_wide_control(t, &row, w); - w = trg_json_widget_check_new(&priv->widgets, s, SGET_TRASH_ORIGINAL_TORRENT_FILES, _ + w = trg_json_widget_check_new(&priv->widgets, s, + SGET_TRASH_ORIGINAL_TORRENT_FILES, _ ("Trash original torrent files"), NULL); hig_workarea_add_wide_control(t, &row, w); @@ -405,8 +429,7 @@ static GObject *trg_remote_prefs_dialog_constructor(GType type, gtk_container_set_border_width(GTK_CONTAINER(object), GUI_PAD); - gtk_dialog_set_default_response(GTK_DIALOG(object), - GTK_RESPONSE_OK); + gtk_dialog_set_default_response(GTK_DIALOG(object), GTK_RESPONSE_OK); g_signal_connect(G_OBJECT(object), "response", @@ -428,8 +451,7 @@ static GObject *trg_remote_prefs_dialog_constructor(GType type, gtk_container_set_border_width(GTK_CONTAINER(notebook), GUI_PAD); - gtk_box_pack_start(GTK_BOX(contentvbox), notebook, TRUE, TRUE, - 0); + gtk_box_pack_start(GTK_BOX(contentvbox), notebook, TRUE, TRUE, 0); return object; } diff --git a/src/trg-stats-dialog.c b/src/trg-stats-dialog.c index a159434..966b9d7 100644 --- a/src/trg-stats-dialog.c +++ b/src/trg-stats-dialog.c @@ -308,7 +308,7 @@ static GObject *trg_stats_dialog_constructor(GType type, GTK_TREE_MODEL(priv->model)); gtk_container_set_border_width(GTK_CONTAINER(tv), GUI_PAD); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(obj)->vbox), tv, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(gtk_bin_get_child(GTK_BIN(obj))), tv, TRUE, TRUE, 0); dispatch_async(priv->client, session_stats(), on_stats_reply, obj); diff --git a/src/trg-torrent-add-dialog.c b/src/trg-torrent-add-dialog.c index 9589751..8e3880f 100644 --- a/src/trg-torrent-add-dialog.c +++ b/src/trg-torrent-add-dialog.c @@ -612,37 +612,6 @@ static void gtr_dialog_set_content(GtkDialog * dialog, GtkWidget * content) gtk_widget_show_all(content); } -GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...) -{ - GtkWidget *w; - GtkCellRenderer *r; - GtkListStore *store; - va_list vl; - const char *text; - va_start(vl, text_1); - - store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING); - - text = text_1; - if (text != NULL) - do { - const int val = va_arg(vl, int); - gtk_list_store_insert_with_values(store, NULL, INT_MAX, 0, val, - 1, text, -1); - text = va_arg(vl, const char *); - } - while (text != NULL); - - w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); - r = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), r, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, NULL); - - /* cleanup */ - g_object_unref(store); - return w; -} - GtkWidget *gtr_priority_combo_new(void) { return gtr_combo_box_new_enum(_("Low"), TR_PRI_LOW, diff --git a/src/trg-torrent-props-dialog.c b/src/trg-torrent-props-dialog.c index cf8898d..0a3954a 100644 --- a/src/trg-torrent-props-dialog.c +++ b/src/trg-torrent-props-dialog.c @@ -21,6 +21,7 @@ #include #include +#include "util.h" #include "torrent.h" #include "json.h" #include "trg-client.h" @@ -161,11 +162,7 @@ static GtkWidget *trg_props_limitsPage(TrgTorrentPropsDialog * win, w = trg_json_widget_check_new(&priv->widgets, json, FIELD_HONORS_SESSION_LIMITS, _("Honor global limits"), NULL); hig_workarea_add_wide_control(t, &row, w); - w = priv->bandwidthPriorityCombo = gtk_combo_box_new_text(); - //widget_set_json_key(w, FIELD_BANDWIDTH_PRIORITY); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("Low")); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("Normal")); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("High")); + w = priv->bandwidthPriorityCombo = gtr_combo_box_new_enum(_("Low"), 0, _("Normal"), 1, _("High"), 2); gtk_combo_box_set_active(GTK_COMBO_BOX(w), torrent_get_bandwidth_priority(json) + 1); @@ -186,12 +183,7 @@ static GtkWidget *trg_props_limitsPage(TrgTorrentPropsDialog * win, hig_workarea_add_section_title(t, &row, _("Seeding")); - w = priv->seedRatioMode = gtk_combo_box_new_text(); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), _("Use global settings")); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), - _("Stop seeding at ratio")); - gtk_combo_box_append_text(GTK_COMBO_BOX(w), - _("Seed regardless of ratio")); + w = priv->seedRatioMode = gtr_combo_box_new_enum(_("Use global settings"), 0, _("Stop seeding at ratio"), 1, _("Seed regardless of ratio"), 2); gtk_combo_box_set_active(GTK_COMBO_BOX(w), torrent_get_seed_ratio_mode(json)); hig_workarea_add_row(t, &row, _("Seed ratio mode:"), w, NULL); diff --git a/src/util.c b/src/util.c index 3b4323a..e520dd6 100644 --- a/src/util.c +++ b/src/util.c @@ -420,3 +420,34 @@ gchar *trg_base64encode(const gchar *filename) return b64out; } + +GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...) +{ + GtkWidget *w; + GtkCellRenderer *r; + GtkListStore *store; + va_list vl; + const char *text; + va_start(vl, text_1); + + store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING); + + text = text_1; + if (text != NULL) + do { + const int val = va_arg(vl, int); + gtk_list_store_insert_with_values(store, NULL, INT_MAX, 0, val, + 1, text, -1); + text = va_arg(vl, const char *); + } + while (text != NULL); + + w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); + r = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), r, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, NULL); + + /* cleanup */ + g_object_unref(store); + return w; +} diff --git a/src/util.h b/src/util.h index c3ff770..31fc094 100644 --- a/src/util.h +++ b/src/util.h @@ -71,5 +71,6 @@ GtkWidget *my_scrolledwin_new(GtkWidget * child); gboolean is_url(gchar *string); gboolean is_magnet(gchar *string); gdouble json_node_really_get_double(JsonNode *node); +GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...); #endif /* UTIL_H_ */ -- cgit v1.2.3