summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/trg-main-window.c27
-rw-r--r--src/trg-main-window.h1
-rw-r--r--src/trg-menu-bar.c15
-rw-r--r--src/trg-preferences-dialog.c50
-rw-r--r--src/trg-torrent-model.c2
5 files changed, 73 insertions, 22 deletions
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index 05208d4..5358423 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -676,6 +676,19 @@ static void view_notebook_toggled_cb(GtkCheckMenuItem * w, gpointer data) {
trg_widget_set_visible(priv->notebook, gtk_check_menu_item_get_active(w));
}
+static void trg_main_window_toggle_graph_cb(GtkCheckMenuItem * w, gpointer win) {
+ if (gtk_check_menu_item_get_active(w))
+ trg_main_window_add_graph(TRG_MAIN_WINDOW(win), TRUE);
+ else
+ trg_main_window_remove_graph(TRG_MAIN_WINDOW(win));
+}
+
+void trg_main_window_notebook_set_visible(TrgMainWindow *win, gboolean visible)
+{
+ TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
+ trg_widget_set_visible(priv->notebook, visible);
+}
+
static GtkWidget *trg_main_window_notebook_new(TrgMainWindow * win) {
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
TrgPrefs *prefs = trg_client_get_prefs(priv->client);
@@ -1149,7 +1162,7 @@ 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_resume_all, *b_dir_filters, *b_tracker_filters, *b_show_graph;
TrgMenuBar *menuBar;
menuBar = trg_menu_bar_new(trg_client_get_prefs(priv->client));
@@ -1165,6 +1178,7 @@ 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,
NULL);
g_signal_connect(b_connect, "activate", G_CALLBACK(connect_cb), win);
@@ -1191,16 +1205,19 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) {
G_CALLBACK(open_remote_prefs_cb), win);
g_signal_connect(b_view_notebook, "toggled",
G_CALLBACK(view_notebook_toggled_cb), win);
- g_signal_connect(b_view_states, "toggled",
- G_CALLBACK(view_notebook_toggled_cb), win);
- g_signal_connect(b_view_states, "toggled",
- G_CALLBACK(view_states_toggled_cb), win);
g_signal_connect(b_dir_filters, "toggled",
G_CALLBACK(main_window_toggle_filter_dirs), win);
g_signal_connect(b_tracker_filters, "toggled",
G_CALLBACK(main_window_toggle_filter_trackers), win);
+ g_signal_connect(b_tracker_filters, "toggled",
+ G_CALLBACK(trg_main_window_toggle_graph_cb), win);
+ 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);
+ g_signal_connect(b_show_graph, "toggled",
+ G_CALLBACK(trg_main_window_toggle_graph_cb), win);
+
g_signal_connect(b_props, "activate", G_CALLBACK(open_props_cb), win);
g_signal_connect(b_quit, "activate", G_CALLBACK(quit_cb), win);
diff --git a/src/trg-main-window.h b/src/trg-main-window.h
index ed28f04..da04254 100644
--- a/src/trg-main-window.h
+++ b/src/trg-main-window.h
@@ -70,6 +70,7 @@ void trg_main_window_remove_graph(TrgMainWindow * win);
TrgStateSelector *trg_main_window_get_state_selector(TrgMainWindow * win);
gint trg_mw_get_selected_torrent_id(TrgMainWindow * win);
GtkTreeModel *trg_main_window_get_torrent_model(TrgMainWindow * win);
+void trg_main_window_notebook_set_visible(TrgMainWindow *win, gboolean visible);
G_END_DECLS
#endif /* MAIN_WINDOW_H_ */
diff --git a/src/trg-menu-bar.c b/src/trg-menu-bar.c
index 6d73df4..dc3523b 100644
--- a/src/trg-menu-bar.c
+++ b/src/trg-menu-bar.c
@@ -48,7 +48,8 @@ enum {
PROP_QUIT,
PROP_PREFS,
PROP_DIR_FILTERS,
- PROP_TRACKER_FILTERS
+ PROP_TRACKER_FILTERS,
+ PROP_VIEW_SHOW_GRAPH
};
G_DEFINE_TYPE(TrgMenuBar, trg_menu_bar, GTK_TYPE_MENU_BAR)
@@ -80,6 +81,7 @@ struct _TrgMenuBarPrivate {
GtkWidget *mb_quit;
GtkWidget *mb_directory_filters;
GtkWidget *mb_tracker_filters;
+ GtkWidget *mb_view_graph;
TrgPrefs *prefs;
};
@@ -180,6 +182,9 @@ trg_menu_bar_get_property(GObject * object, guint property_id,
case PROP_ABOUT_BUTTON:
g_value_set_object(value, priv->mb_about);
break;
+ case PROP_VIEW_SHOW_GRAPH:
+ g_value_set_object(value, priv->mb_view_graph);
+ break;
case PROP_VIEW_STATES_BUTTON:
g_value_set_object(value, priv->mb_view_states);
break;
@@ -294,10 +299,13 @@ static GtkWidget *trg_menu_bar_view_menu_new(TrgMenuBar * mb)
gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu),
priv->mb_tracker_filters);
- priv->mb_view_notebook = trg_menu_bar_view_item_new(priv->prefs, TRG_PREFS_KEY_SHOW_NOTEBOOK, _("Torrent details"), NULL);
+ priv->mb_view_notebook = trg_menu_bar_view_item_new(priv->prefs, TRG_PREFS_KEY_SHOW_NOTEBOOK, _("Torrent Details"), NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu),
priv->mb_view_notebook);
+ priv->mb_view_graph = trg_menu_bar_view_item_new(priv->prefs, TRG_PREFS_KEY_SHOW_GRAPH, _("Graph"), priv->mb_view_notebook);
+ gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu),
+ priv->mb_view_graph);
priv->mb_view_stats =
gtk_menu_item_new_with_mnemonic(_("_Statistics"));
@@ -510,6 +518,9 @@ static void trg_menu_bar_class_init(TrgMenuBarClass * klass)
trg_menu_bar_install_widget_prop(object_class, PROP_TRACKER_FILTERS,
"tracker-filters", "Tracker Filters");
+ trg_menu_bar_install_widget_prop(object_class, PROP_VIEW_SHOW_GRAPH,
+ "show-graph", "Show Graph");
+
g_object_class_install_property(object_class,
PROP_PREFS,
diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c
index fd9add2..c187301 100644
--- a/src/trg-preferences-dialog.c
+++ b/src/trg-preferences-dialog.c
@@ -206,8 +206,13 @@ static void check_save(TrgPrefs *prefs, void *wdp) {
wd->flags);
}
+static void trgp_toggle_dependent(GtkToggleButton *b, gpointer data)
+{
+ gtk_widget_set_sensitive(GTK_WIDGET(data), gtk_toggle_button_get_active(b));
+}
+
static GtkWidget *trgp_check_new(TrgPreferencesDialog *dlg,
- const char *mnemonic, gchar *key, int flags) {
+ const char *mnemonic, gchar *key, int flags, GtkToggleButton *dependency) {
TrgPreferencesDialogPrivate *priv = TRG_PREFERENCES_DIALOG_GET_PRIVATE(dlg);
GtkWidget *w = gtk_check_button_new_with_mnemonic(mnemonic);
@@ -217,6 +222,13 @@ static GtkWidget *trgp_check_new(TrgPreferencesDialog *dlg,
wd->refreshFunc = &check_refresh;
check_refresh(priv->prefs, wd);
+ if (dependency)
+ {
+ g_signal_connect(dependency, "toggled",
+ G_CALLBACK(trgp_toggle_dependent), w);
+ gtk_widget_set_sensitive(w, gtk_toggle_button_get_active(dependency));
+ }
+
priv->widgets = g_list_append(priv->widgets, wd);
return w;
@@ -294,6 +306,10 @@ static void menu_bar_toggle_filter_dirs(GtkToggleButton * w, gpointer win) {
trg_state_selector_set_show_dirs(selector, gtk_toggle_button_get_active(w));
}
+static void notebook_toggled_cb(GtkToggleButton *b, gpointer data) {
+ trg_main_window_notebook_set_visible(TRG_MAIN_WINDOW(data), gtk_toggle_button_get_active(b));
+}
+
static GtkWidget *trg_prefs_desktopPage(TrgPreferencesDialog *dlg) {
TrgPreferencesDialogPrivate *priv = TRG_PREFERENCES_DIALOG_GET_PRIVATE(dlg);
@@ -305,19 +321,25 @@ static GtkWidget *trg_prefs_desktopPage(TrgPreferencesDialog *dlg) {
hig_workarea_add_section_title(t, &row, _("Features"));
w = trgp_check_new(dlg, _("Directory filters"), TRG_PREFS_KEY_FILTER_DIRS,
- TRG_PREFS_GLOBAL);
+ TRG_PREFS_GLOBAL, NULL);
g_signal_connect(G_OBJECT(w), "toggled",
G_CALLBACK(menu_bar_toggle_filter_dirs), priv->win);
hig_workarea_add_wide_control(t, &row, w);
w = trgp_check_new(dlg, _("Tracker filters"),
- TRG_PREFS_KEY_FILTER_TRACKERS, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_FILTER_TRACKERS, TRG_PREFS_GLOBAL, NULL);
g_signal_connect(G_OBJECT(w), "toggled",
G_CALLBACK(toggle_filter_trackers), priv->win);
hig_workarea_add_wide_control(t, &row, w);
+ w = trgp_check_new(dlg, _("Torrent Details"), TRG_PREFS_KEY_SHOW_NOTEBOOK,
+ TRG_PREFS_GLOBAL, NULL);
+ g_signal_connect(G_OBJECT(w), "toggled",
+ G_CALLBACK(notebook_toggled_cb), priv->win);
+ hig_workarea_add_wide_control(t, &row, w);
+
w = trgp_check_new(dlg, _("Show graph"), TRG_PREFS_KEY_SHOW_GRAPH,
- TRG_PREFS_GLOBAL);
+ 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);
@@ -325,13 +347,13 @@ static GtkWidget *trg_prefs_desktopPage(TrgPreferencesDialog *dlg) {
hig_workarea_add_section_title(t, &row, _("System Tray"));
tray = trgp_check_new(dlg, _("Show in system tray"),
- TRG_PREFS_KEY_SYSTEM_TRAY, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_SYSTEM_TRAY, TRG_PREFS_GLOBAL, NULL);
g_signal_connect(G_OBJECT(tray), "toggled",
G_CALLBACK(toggle_tray_icon), priv->win);
hig_workarea_add_wide_control(t, &row, tray);
w = trgp_check_new(dlg, _("Minimise to system tray"),
- TRG_PREFS_KEY_SYSTEM_TRAY_MINIMISE, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_SYSTEM_TRAY_MINIMISE, TRG_PREFS_GLOBAL, NULL);
gtk_widget_set_sensitive(w, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
(tray)));
g_signal_connect(G_OBJECT(tray), "toggled",
@@ -339,7 +361,7 @@ static GtkWidget *trg_prefs_desktopPage(TrgPreferencesDialog *dlg) {
hig_workarea_add_wide_control(t, &row, w);
w = trgp_check_new(dlg, _("Torrent added notifications"),
- TRG_PREFS_KEY_ADD_NOTIFY, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_ADD_NOTIFY, TRG_PREFS_GLOBAL, NULL);
gtk_widget_set_sensitive(w, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
(tray)));
g_signal_connect(G_OBJECT(tray), "toggled",
@@ -347,7 +369,7 @@ static GtkWidget *trg_prefs_desktopPage(TrgPreferencesDialog *dlg) {
hig_workarea_add_wide_control(t, &row, w);
w = trgp_check_new(dlg, _("Torrent complete notifications"),
- TRG_PREFS_KEY_COMPLETE_NOTIFY, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_COMPLETE_NOTIFY, TRG_PREFS_GLOBAL, NULL);
gtk_widget_set_sensitive(w, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
(tray)));
g_signal_connect(G_OBJECT(tray), "toggled",
@@ -366,15 +388,15 @@ static GtkWidget *trg_prefs_behaviorPage(TrgPreferencesDialog * dlg) {
hig_workarea_add_section_title(t, &row, _("Torrents"));
w = trgp_check_new(dlg, _("Start paused"), TRG_PREFS_KEY_START_PAUSED,
- TRG_PREFS_GLOBAL);
+ TRG_PREFS_GLOBAL, NULL);
hig_workarea_add_wide_control(t, &row, w);
w = trgp_check_new(dlg, _("Options dialog on add"),
- TRG_PREFS_KEY_ADD_OPTIONS_DIALOG, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_ADD_OPTIONS_DIALOG, TRG_PREFS_GLOBAL, NULL);
hig_workarea_add_wide_control(t, &row, w);
w = trgp_check_new(dlg, _("Delete local .torrent file after adding"),
- TRG_PREFS_KEY_DELETE_LOCAL_TORRENT, TRG_PREFS_GLOBAL);
+ TRG_PREFS_KEY_DELETE_LOCAL_TORRENT, TRG_PREFS_GLOBAL, NULL);
hig_workarea_add_wide_control(t, &row, w);
return t;
@@ -572,14 +594,14 @@ static GtkWidget *trg_prefs_serverPage(TrgPreferencesDialog *dlg) {
hig_workarea_add_row(t, &row, _("Minimised update interval:"), w, NULL);
w = trgp_check_new(dlg, _("Automatically connect"),
- TRG_PREFS_KEY_AUTO_CONNECT, TRG_PREFS_PROFILE);
+ TRG_PREFS_KEY_AUTO_CONNECT, TRG_PREFS_PROFILE, NULL);
hig_workarea_add_wide_control(t, &row, w);
- w = trgp_check_new(dlg, _("SSL"), TRG_PREFS_KEY_SSL, TRG_PREFS_PROFILE);
+ w = trgp_check_new(dlg, _("SSL"), TRG_PREFS_KEY_SSL, TRG_PREFS_PROFILE, NULL);
hig_workarea_add_wide_control(t, &row, w);
w = trgp_check_new(dlg, _("Update active torrents only"),
- TRG_PREFS_KEY_UPDATE_ACTIVE_ONLY, TRG_PREFS_PROFILE);
+ TRG_PREFS_KEY_UPDATE_ACTIVE_ONLY, TRG_PREFS_PROFILE, NULL);
g_signal_connect(w, "toggled", G_CALLBACK(update_activeonly_cb),
tc);
hig_workarea_add_wide_control(t, &row, w);
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index 89f6641..5438802 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -240,7 +240,7 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
uploaded = torrent_get_uploaded(t);
downloaded = torrent_get_downloaded(t);
- downloadDir = torrent_get_download_dir(t);
+ downloadDir = (gchar*)torrent_get_download_dir(t);
rm_trailing_slashes(downloadDir);
id = torrent_get_id(t);