mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
Adjust uncrustify config, reformat all but Mac client
There're places where manual intervention is still required as uncrustify is not ideal (unfortunately), but at least one may rely on it to do the right thing most of the time (e.g. when sending in a patch). The style itself is quite different from what we had before but making it uniform across all the codebase is the key. I also hope that it'll make the code more readable (YMMV) and less sensitive to further changes.
This commit is contained in:
@@ -27,58 +27,66 @@
|
||||
|
||||
#define N_RECENT 4
|
||||
|
||||
static GSList*
|
||||
get_recent_destinations (void)
|
||||
static GSList* get_recent_destinations(void)
|
||||
{
|
||||
int i;
|
||||
GSList * list = NULL;
|
||||
int i;
|
||||
GSList* list = NULL;
|
||||
|
||||
for (i=0; i<N_RECENT; ++i)
|
||||
for (i = 0; i < N_RECENT; ++i)
|
||||
{
|
||||
char key[64];
|
||||
const char * val;
|
||||
g_snprintf (key, sizeof (key), "recent-download-dir-%d", i+1);
|
||||
if ((val = gtr_pref_string_get (tr_quark_new(key, TR_BAD_SIZE))))
|
||||
list = g_slist_append (list, (void*)val);
|
||||
char key[64];
|
||||
const char* val;
|
||||
g_snprintf(key, sizeof(key), "recent-download-dir-%d", i + 1);
|
||||
|
||||
if ((val = gtr_pref_string_get(tr_quark_new(key, TR_BAD_SIZE))))
|
||||
{
|
||||
list = g_slist_append(list, (void*)val);
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
return list;
|
||||
}
|
||||
|
||||
static void
|
||||
save_recent_destination (TrCore * core, const char * dir)
|
||||
static void save_recent_destination(TrCore* core, const char* dir)
|
||||
{
|
||||
int i;
|
||||
GSList * l;
|
||||
GSList * list = get_recent_destinations ();
|
||||
int i;
|
||||
GSList* l;
|
||||
GSList* list = get_recent_destinations();
|
||||
|
||||
if (dir == NULL)
|
||||
return;
|
||||
|
||||
/* if it was already in the list, remove it */
|
||||
if ((l = g_slist_find_custom (list, dir, (GCompareFunc)g_strcmp0)))
|
||||
list = g_slist_delete_link (list, l);
|
||||
|
||||
/* add it to the front of the list */
|
||||
list = g_slist_prepend (list, (void*)dir);
|
||||
|
||||
/* make local copies of the strings that aren't
|
||||
* invalidated by gtr_pref_string_set () */
|
||||
for (l=list; l; l=l->next)
|
||||
l->data = g_strdup (l->data);
|
||||
|
||||
/* save the first N_RECENT directories */
|
||||
for (l=list, i=0; l && (i<N_RECENT); ++i, l=l->next)
|
||||
if (dir == NULL)
|
||||
{
|
||||
char key[64];
|
||||
g_snprintf (key, sizeof (key), "recent-download-dir-%d", i + 1);
|
||||
gtr_pref_string_set (tr_quark_new(key, TR_BAD_SIZE), l->data);
|
||||
return;
|
||||
}
|
||||
gtr_pref_save (gtr_core_session (core));
|
||||
|
||||
/* cleanup */
|
||||
g_slist_foreach (list, (GFunc)g_free, NULL);
|
||||
g_slist_free (list);
|
||||
/* if it was already in the list, remove it */
|
||||
if ((l = g_slist_find_custom(list, dir, (GCompareFunc)g_strcmp0)))
|
||||
{
|
||||
list = g_slist_delete_link(list, l);
|
||||
}
|
||||
|
||||
/* add it to the front of the list */
|
||||
list = g_slist_prepend(list, (void*)dir);
|
||||
|
||||
/* make local copies of the strings that aren't
|
||||
* invalidated by gtr_pref_string_set () */
|
||||
for (l = list; l; l = l->next)
|
||||
{
|
||||
l->data = g_strdup(l->data);
|
||||
}
|
||||
|
||||
/* save the first N_RECENT directories */
|
||||
for (l = list, i = 0; l && (i < N_RECENT); ++i, l = l->next)
|
||||
{
|
||||
char key[64];
|
||||
g_snprintf(key, sizeof(key), "recent-download-dir-%d", i + 1);
|
||||
gtr_pref_string_set(tr_quark_new(key, TR_BAD_SIZE), l->data);
|
||||
}
|
||||
|
||||
gtr_pref_save(gtr_core_session(core));
|
||||
|
||||
/* cleanup */
|
||||
g_slist_foreach(list, (GFunc)g_free, NULL);
|
||||
g_slist_free(list);
|
||||
}
|
||||
|
||||
/****
|
||||
@@ -87,82 +95,81 @@ save_recent_destination (TrCore * core, const char * dir)
|
||||
|
||||
struct OpenData
|
||||
{
|
||||
TrCore * core;
|
||||
GtkWidget * file_list;
|
||||
GtkWidget * run_check;
|
||||
GtkWidget * trash_check;
|
||||
GtkWidget * priority_combo;
|
||||
GtkWidget * freespace_label;
|
||||
char * filename;
|
||||
char * downloadDir;
|
||||
tr_torrent * tor;
|
||||
tr_ctor * ctor;
|
||||
TrCore* core;
|
||||
GtkWidget* file_list;
|
||||
GtkWidget* run_check;
|
||||
GtkWidget* trash_check;
|
||||
GtkWidget* priority_combo;
|
||||
GtkWidget* freespace_label;
|
||||
char* filename;
|
||||
char* downloadDir;
|
||||
tr_torrent* tor;
|
||||
tr_ctor* ctor;
|
||||
};
|
||||
|
||||
static void
|
||||
removeOldTorrent (struct OpenData * o)
|
||||
static void removeOldTorrent(struct OpenData* o)
|
||||
{
|
||||
if (o->tor)
|
||||
if (o->tor)
|
||||
{
|
||||
gtr_file_list_clear (o->file_list);
|
||||
tr_torrentRemove (o->tor, FALSE, NULL);
|
||||
o->tor = NULL;
|
||||
gtr_file_list_clear(o->file_list);
|
||||
tr_torrentRemove(o->tor, FALSE, NULL);
|
||||
o->tor = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
addResponseCB (GtkDialog * dialog,
|
||||
gint response,
|
||||
gpointer gdata)
|
||||
static void addResponseCB(GtkDialog* dialog, gint response, gpointer gdata)
|
||||
{
|
||||
struct OpenData * o = gdata;
|
||||
struct OpenData* o = gdata;
|
||||
|
||||
if (o->tor)
|
||||
if (o->tor)
|
||||
{
|
||||
if (response != GTK_RESPONSE_ACCEPT)
|
||||
if (response != GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
removeOldTorrent (o);
|
||||
removeOldTorrent(o);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
tr_torrentSetPriority (o->tor, gtr_priority_combo_get_value (GTK_COMBO_BOX (o->priority_combo)));
|
||||
tr_torrentSetPriority(o->tor, gtr_priority_combo_get_value(GTK_COMBO_BOX(o->priority_combo)));
|
||||
|
||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (o->run_check)))
|
||||
tr_torrentStart (o->tor);
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(o->run_check)))
|
||||
{
|
||||
tr_torrentStart(o->tor);
|
||||
}
|
||||
|
||||
gtr_core_add_torrent (o->core, o->tor, FALSE);
|
||||
gtr_core_add_torrent(o->core, o->tor, FALSE);
|
||||
|
||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (o->trash_check)))
|
||||
gtr_file_trash_or_remove (o->filename, NULL);
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(o->trash_check)))
|
||||
{
|
||||
gtr_file_trash_or_remove(o->filename, NULL);
|
||||
}
|
||||
|
||||
save_recent_destination (o->core, o->downloadDir);
|
||||
save_recent_destination(o->core, o->downloadDir);
|
||||
}
|
||||
}
|
||||
|
||||
tr_ctorFree (o->ctor);
|
||||
g_free (o->filename);
|
||||
g_free (o->downloadDir);
|
||||
g_free (o);
|
||||
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||
tr_ctorFree(o->ctor);
|
||||
g_free(o->filename);
|
||||
g_free(o->downloadDir);
|
||||
g_free(o);
|
||||
gtk_widget_destroy(GTK_WIDGET(dialog));
|
||||
}
|
||||
|
||||
static void
|
||||
updateTorrent (struct OpenData * o)
|
||||
static void updateTorrent(struct OpenData* o)
|
||||
{
|
||||
const gboolean isLocalFile = tr_ctorGetSourceFile (o->ctor) != NULL;
|
||||
gtk_widget_set_sensitive (o->trash_check, isLocalFile);
|
||||
const gboolean isLocalFile = tr_ctorGetSourceFile(o->ctor) != NULL;
|
||||
gtk_widget_set_sensitive(o->trash_check, isLocalFile);
|
||||
|
||||
if (!o->tor)
|
||||
if (!o->tor)
|
||||
{
|
||||
gtr_file_list_clear (o->file_list);
|
||||
gtk_widget_set_sensitive (o->file_list, FALSE);
|
||||
gtr_file_list_clear(o->file_list);
|
||||
gtk_widget_set_sensitive(o->file_list, FALSE);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
tr_torrentSetDownloadDir (o->tor, o->downloadDir);
|
||||
gtk_widget_set_sensitive (o->file_list, tr_torrentHasMetadata (o->tor));
|
||||
gtr_file_list_set_torrent (o->file_list, tr_torrentId (o->tor));
|
||||
tr_torrentVerify (o->tor, NULL, NULL);
|
||||
tr_torrentSetDownloadDir(o->tor, o->downloadDir);
|
||||
gtk_widget_set_sensitive(o->file_list, tr_torrentHasMetadata(o->tor));
|
||||
gtr_file_list_set_torrent(o->file_list, tr_torrentId(o->tor));
|
||||
tr_torrentVerify(o->tor, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,364 +180,369 @@ updateTorrent (struct OpenData * o)
|
||||
* The `filename' tests here are to prevent us from losing the current
|
||||
* metadata when that happens.
|
||||
*/
|
||||
static void
|
||||
sourceChanged (GtkFileChooserButton * b, gpointer gdata)
|
||||
static void sourceChanged(GtkFileChooserButton* b, gpointer gdata)
|
||||
{
|
||||
struct OpenData * o = gdata;
|
||||
char * filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (b));
|
||||
struct OpenData* o = gdata;
|
||||
char* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(b));
|
||||
|
||||
/* maybe instantiate a torrent */
|
||||
if (filename || !o->tor)
|
||||
/* maybe instantiate a torrent */
|
||||
if (filename || !o->tor)
|
||||
{
|
||||
int err = 0;
|
||||
int new_file = 0;
|
||||
int duplicate_id = 0;
|
||||
tr_torrent * torrent;
|
||||
int err = 0;
|
||||
int new_file = 0;
|
||||
int duplicate_id = 0;
|
||||
tr_torrent* torrent;
|
||||
|
||||
if (filename && (!o->filename || !tr_sys_path_is_same (filename, o->filename, NULL)))
|
||||
if (filename && (!o->filename || !tr_sys_path_is_same(filename, o->filename, NULL)))
|
||||
{
|
||||
g_free (o->filename);
|
||||
o->filename = g_strdup (filename);
|
||||
tr_ctorSetMetainfoFromFile (o->ctor, o->filename);
|
||||
new_file = 1;
|
||||
g_free(o->filename);
|
||||
o->filename = g_strdup(filename);
|
||||
tr_ctorSetMetainfoFromFile(o->ctor, o->filename);
|
||||
new_file = 1;
|
||||
}
|
||||
|
||||
tr_ctorSetDownloadDir (o->ctor, TR_FORCE, o->downloadDir);
|
||||
tr_ctorSetPaused (o->ctor, TR_FORCE, TRUE);
|
||||
tr_ctorSetDeleteSource (o->ctor, FALSE);
|
||||
tr_ctorSetDownloadDir(o->ctor, TR_FORCE, o->downloadDir);
|
||||
tr_ctorSetPaused(o->ctor, TR_FORCE, TRUE);
|
||||
tr_ctorSetDeleteSource(o->ctor, FALSE);
|
||||
|
||||
if ((torrent = tr_torrentNew (o->ctor, &err, &duplicate_id)))
|
||||
if ((torrent = tr_torrentNew(o->ctor, &err, &duplicate_id)))
|
||||
{
|
||||
removeOldTorrent (o);
|
||||
o->tor = torrent;
|
||||
removeOldTorrent(o);
|
||||
o->tor = torrent;
|
||||
}
|
||||
else if (new_file)
|
||||
else if (new_file)
|
||||
{
|
||||
tr_torrent * tor;
|
||||
tr_torrent* tor;
|
||||
|
||||
if (duplicate_id)
|
||||
tor = gtr_core_find_torrent (o->core, duplicate_id);
|
||||
else
|
||||
tor = NULL;
|
||||
if (duplicate_id)
|
||||
{
|
||||
tor = gtr_core_find_torrent(o->core, duplicate_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
tor = NULL;
|
||||
}
|
||||
|
||||
gtr_add_torrent_error_dialog (GTK_WIDGET (b), err, tor, o->filename);
|
||||
gtr_add_torrent_error_dialog(GTK_WIDGET(b), err, tor, o->filename);
|
||||
}
|
||||
|
||||
updateTorrent (o);
|
||||
updateTorrent(o);
|
||||
}
|
||||
|
||||
g_free (filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
static void
|
||||
downloadDirChanged (GtkFileChooserButton * b, gpointer gdata)
|
||||
static void downloadDirChanged(GtkFileChooserButton* b, gpointer gdata)
|
||||
{
|
||||
struct OpenData * data = gdata;
|
||||
char * fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (b));
|
||||
struct OpenData* data = gdata;
|
||||
char* fname = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(b));
|
||||
|
||||
if (fname && (!data->downloadDir || !tr_sys_path_is_same (fname, data->downloadDir, NULL)))
|
||||
if (fname && (!data->downloadDir || !tr_sys_path_is_same(fname, data->downloadDir, NULL)))
|
||||
{
|
||||
g_free (data->downloadDir);
|
||||
data->downloadDir = g_strdup (fname);
|
||||
updateTorrent (data);
|
||||
g_free(data->downloadDir);
|
||||
data->downloadDir = g_strdup(fname);
|
||||
updateTorrent(data);
|
||||
|
||||
gtr_freespace_label_set_dir (data->freespace_label, data->downloadDir);
|
||||
gtr_freespace_label_set_dir(data->freespace_label, data->downloadDir);
|
||||
}
|
||||
|
||||
g_free (fname);
|
||||
g_free(fname);
|
||||
}
|
||||
|
||||
static void
|
||||
addTorrentFilters (GtkFileChooser * chooser)
|
||||
static void addTorrentFilters(GtkFileChooser* chooser)
|
||||
{
|
||||
GtkFileFilter * filter;
|
||||
GtkFileFilter* filter;
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_set_name (filter, _("Torrent files"));
|
||||
gtk_file_filter_add_pattern (filter, "*.torrent");
|
||||
gtk_file_chooser_add_filter (chooser, filter);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("Torrent files"));
|
||||
gtk_file_filter_add_pattern(filter, "*.torrent");
|
||||
gtk_file_chooser_add_filter(chooser, filter);
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_set_name (filter, _("All files"));
|
||||
gtk_file_filter_add_pattern (filter, "*");
|
||||
gtk_file_chooser_add_filter (chooser, filter);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("All files"));
|
||||
gtk_file_filter_add_pattern(filter, "*");
|
||||
gtk_file_chooser_add_filter(chooser, filter);
|
||||
}
|
||||
|
||||
/****
|
||||
*****
|
||||
****/
|
||||
|
||||
GtkWidget*
|
||||
gtr_torrent_options_dialog_new (GtkWindow * parent, TrCore * core, tr_ctor * ctor)
|
||||
GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ctor* ctor)
|
||||
{
|
||||
const char * str;
|
||||
GtkWidget * w;
|
||||
GtkWidget * d;
|
||||
GtkGrid * grid;
|
||||
int row;
|
||||
GtkWidget * l;
|
||||
GtkWidget * source_chooser;
|
||||
struct OpenData * data;
|
||||
bool flag;
|
||||
GSList * list;
|
||||
GSList * walk;
|
||||
const char* str;
|
||||
GtkWidget* w;
|
||||
GtkWidget* d;
|
||||
GtkGrid* grid;
|
||||
int row;
|
||||
GtkWidget* l;
|
||||
GtkWidget* source_chooser;
|
||||
struct OpenData* data;
|
||||
bool flag;
|
||||
GSList* list;
|
||||
GSList* walk;
|
||||
|
||||
/* make the dialog */
|
||||
d = gtk_dialog_new_with_buttons (_("Torrent Options"), parent,
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (d),
|
||||
GTK_RESPONSE_ACCEPT);
|
||||
gtk_dialog_set_alternative_button_order (GTK_DIALOG (d),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
-1);
|
||||
/* make the dialog */
|
||||
d = gtk_dialog_new_with_buttons(_("Torrent Options"), parent, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_ACCEPT);
|
||||
gtk_dialog_set_alternative_button_order(GTK_DIALOG(d), GTK_RESPONSE_ACCEPT, GTK_RESPONSE_CANCEL, -1);
|
||||
|
||||
if (!tr_ctorGetDownloadDir (ctor, TR_FORCE, &str))
|
||||
g_assert_not_reached ();
|
||||
g_assert (str);
|
||||
if (!tr_ctorGetDownloadDir(ctor, TR_FORCE, &str))
|
||||
{
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
data = g_new0 (struct OpenData, 1);
|
||||
data->core = core;
|
||||
data->ctor = ctor;
|
||||
data->filename = g_strdup (tr_ctorGetSourceFile (ctor));
|
||||
data->downloadDir = g_strdup (str);
|
||||
data->file_list = gtr_file_list_new (core, 0);
|
||||
str = _("Mo_ve .torrent file to the trash");
|
||||
data->trash_check = gtk_check_button_new_with_mnemonic (str);
|
||||
str = _("_Start when added");
|
||||
data->run_check = gtk_check_button_new_with_mnemonic (str);
|
||||
g_assert(str);
|
||||
|
||||
w = data->priority_combo = gtr_priority_combo_new ();
|
||||
gtr_priority_combo_set_value (GTK_COMBO_BOX (w), TR_PRI_NORMAL);
|
||||
data = g_new0(struct OpenData, 1);
|
||||
data->core = core;
|
||||
data->ctor = ctor;
|
||||
data->filename = g_strdup(tr_ctorGetSourceFile(ctor));
|
||||
data->downloadDir = g_strdup(str);
|
||||
data->file_list = gtr_file_list_new(core, 0);
|
||||
str = _("Mo_ve .torrent file to the trash");
|
||||
data->trash_check = gtk_check_button_new_with_mnemonic(str);
|
||||
str = _("_Start when added");
|
||||
data->run_check = gtk_check_button_new_with_mnemonic(str);
|
||||
|
||||
g_signal_connect (G_OBJECT (d), "response",
|
||||
G_CALLBACK (addResponseCB), data);
|
||||
w = data->priority_combo = gtr_priority_combo_new();
|
||||
gtr_priority_combo_set_value(GTK_COMBO_BOX(w), TR_PRI_NORMAL);
|
||||
|
||||
row = 0;
|
||||
grid = GTK_GRID (gtk_grid_new ());
|
||||
gtk_container_set_border_width (GTK_CONTAINER (grid), GUI_PAD_BIG);
|
||||
gtk_grid_set_row_spacing (grid, GUI_PAD);
|
||||
gtk_grid_set_column_spacing (grid, GUI_PAD_BIG);
|
||||
g_signal_connect(G_OBJECT(d), "response", G_CALLBACK(addResponseCB), data);
|
||||
|
||||
/* "torrent file" row */
|
||||
l = gtk_label_new_with_mnemonic (_("_Torrent file:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (l), 0.0f, 0.5f);
|
||||
gtk_grid_attach (grid, l, 0, row, 1, 1);
|
||||
w = gtk_file_chooser_button_new (_("Select Source File"),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
source_chooser = w;
|
||||
gtk_widget_set_hexpand (w, TRUE);
|
||||
gtk_grid_attach_next_to (grid, w, l, GTK_POS_RIGHT, 1, 1);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (l), w);
|
||||
addTorrentFilters (GTK_FILE_CHOOSER (w));
|
||||
g_signal_connect (w, "selection-changed",
|
||||
G_CALLBACK (sourceChanged), data);
|
||||
row = 0;
|
||||
grid = GTK_GRID(gtk_grid_new());
|
||||
gtk_container_set_border_width(GTK_CONTAINER(grid), GUI_PAD_BIG);
|
||||
gtk_grid_set_row_spacing(grid, GUI_PAD);
|
||||
gtk_grid_set_column_spacing(grid, GUI_PAD_BIG);
|
||||
|
||||
/* "destination folder" row */
|
||||
row++;
|
||||
l = gtk_label_new_with_mnemonic (_("_Destination folder:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (l), 0.0f, 0.5f);
|
||||
gtk_grid_attach (grid, l, 0, row, 1, 1);
|
||||
w = gtk_file_chooser_button_new (_("Select Destination Folder"),
|
||||
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
if (!gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (w),
|
||||
data->downloadDir))
|
||||
g_warning ("couldn't select '%s'", data->downloadDir);
|
||||
list = get_recent_destinations ();
|
||||
for (walk = list; walk; walk = walk->next)
|
||||
gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (w), walk->data, NULL);
|
||||
g_slist_free (list);
|
||||
gtk_grid_attach_next_to (grid, w, l, GTK_POS_RIGHT, 1, 1);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (l), w);
|
||||
g_signal_connect (w, "selection-changed",
|
||||
G_CALLBACK (downloadDirChanged), data);
|
||||
/* "torrent file" row */
|
||||
l = gtk_label_new_with_mnemonic(_("_Torrent file:"));
|
||||
gtk_misc_set_alignment(GTK_MISC(l), 0.0f, 0.5f);
|
||||
gtk_grid_attach(grid, l, 0, row, 1, 1);
|
||||
w = gtk_file_chooser_button_new(_("Select Source File"), GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
source_chooser = w;
|
||||
gtk_widget_set_hexpand(w, TRUE);
|
||||
gtk_grid_attach_next_to(grid, w, l, GTK_POS_RIGHT, 1, 1);
|
||||
gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
|
||||
addTorrentFilters(GTK_FILE_CHOOSER(w));
|
||||
g_signal_connect(w, "selection-changed", G_CALLBACK(sourceChanged), data);
|
||||
|
||||
row++;
|
||||
l = data->freespace_label = gtr_freespace_label_new (core, data->downloadDir);
|
||||
gtk_widget_set_margin_bottom (l, GUI_PAD_BIG);
|
||||
gtk_misc_set_alignment (GTK_MISC (l), 1.0f, 0.5f);
|
||||
gtk_grid_attach (grid, l, 0, row, 2, 1);
|
||||
/* "destination folder" row */
|
||||
row++;
|
||||
l = gtk_label_new_with_mnemonic(_("_Destination folder:"));
|
||||
gtk_misc_set_alignment(GTK_MISC(l), 0.0f, 0.5f);
|
||||
gtk_grid_attach(grid, l, 0, row, 1, 1);
|
||||
w = gtk_file_chooser_button_new(_("Select Destination Folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
|
||||
if (!gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(w), data->downloadDir))
|
||||
{
|
||||
g_warning("couldn't select '%s'", data->downloadDir);
|
||||
}
|
||||
|
||||
/* file list row */
|
||||
row++;
|
||||
w = data->file_list;
|
||||
gtk_widget_set_vexpand (w, TRUE);
|
||||
gtk_widget_set_size_request (w, 466u, 300u);
|
||||
gtk_grid_attach (grid, w, 0, row, 2, 1);
|
||||
list = get_recent_destinations();
|
||||
|
||||
/* torrent priority row */
|
||||
row++;
|
||||
l = gtk_label_new_with_mnemonic (_("Torrent _priority:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (l), 0.0f, 0.5f);
|
||||
gtk_grid_attach (grid, l, 0, row, 1, 1);
|
||||
w = data->priority_combo;
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (l), w);
|
||||
gtk_grid_attach_next_to (grid, w, l, GTK_POS_RIGHT, 1, 1);
|
||||
for (walk = list; walk; walk = walk->next)
|
||||
{
|
||||
gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(w), walk->data, NULL);
|
||||
}
|
||||
|
||||
/* torrent priority row */
|
||||
row++;
|
||||
w = data->run_check;
|
||||
if (!tr_ctorGetPaused (ctor, TR_FORCE, &flag))
|
||||
g_assert_not_reached ();
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), !flag);
|
||||
gtk_grid_attach (grid, w, 0, row, 2, 1);
|
||||
g_slist_free(list);
|
||||
gtk_grid_attach_next_to(grid, w, l, GTK_POS_RIGHT, 1, 1);
|
||||
gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
|
||||
g_signal_connect(w, "selection-changed", G_CALLBACK(downloadDirChanged), data);
|
||||
|
||||
/* "trash .torrent file" row */
|
||||
row++;
|
||||
w = data->trash_check;
|
||||
if (!tr_ctorGetDeleteSource (ctor, &flag))
|
||||
g_assert_not_reached ();
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), flag);
|
||||
gtk_grid_attach (grid, w, 0, row, 2, 1);
|
||||
row++;
|
||||
l = data->freespace_label = gtr_freespace_label_new(core, data->downloadDir);
|
||||
gtk_widget_set_margin_bottom(l, GUI_PAD_BIG);
|
||||
gtk_misc_set_alignment(GTK_MISC(l), 1.0f, 0.5f);
|
||||
gtk_grid_attach(grid, l, 0, row, 2, 1);
|
||||
|
||||
/* trigger sourceChanged, either directly or indirectly,
|
||||
* so that it creates the tor/gtor objects */
|
||||
w = source_chooser;
|
||||
if (data->filename)
|
||||
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (w), data->filename);
|
||||
else
|
||||
sourceChanged (GTK_FILE_CHOOSER_BUTTON (w), data);
|
||||
/* file list row */
|
||||
row++;
|
||||
w = data->file_list;
|
||||
gtk_widget_set_vexpand(w, TRUE);
|
||||
gtk_widget_set_size_request(w, 466u, 300u);
|
||||
gtk_grid_attach(grid, w, 0, row, 2, 1);
|
||||
|
||||
gtr_dialog_set_content (GTK_DIALOG (d), GTK_WIDGET (grid));
|
||||
w = gtk_dialog_get_widget_for_response (GTK_DIALOG (d), GTK_RESPONSE_ACCEPT);
|
||||
gtk_widget_grab_focus (w);
|
||||
return d;
|
||||
/* torrent priority row */
|
||||
row++;
|
||||
l = gtk_label_new_with_mnemonic(_("Torrent _priority:"));
|
||||
gtk_misc_set_alignment(GTK_MISC(l), 0.0f, 0.5f);
|
||||
gtk_grid_attach(grid, l, 0, row, 1, 1);
|
||||
w = data->priority_combo;
|
||||
gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
|
||||
gtk_grid_attach_next_to(grid, w, l, GTK_POS_RIGHT, 1, 1);
|
||||
|
||||
/* torrent priority row */
|
||||
row++;
|
||||
w = data->run_check;
|
||||
|
||||
if (!tr_ctorGetPaused(ctor, TR_FORCE, &flag))
|
||||
{
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), !flag);
|
||||
gtk_grid_attach(grid, w, 0, row, 2, 1);
|
||||
|
||||
/* "trash .torrent file" row */
|
||||
row++;
|
||||
w = data->trash_check;
|
||||
|
||||
if (!tr_ctorGetDeleteSource(ctor, &flag))
|
||||
{
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), flag);
|
||||
gtk_grid_attach(grid, w, 0, row, 2, 1);
|
||||
|
||||
/* trigger sourceChanged, either directly or indirectly,
|
||||
* so that it creates the tor/gtor objects */
|
||||
w = source_chooser;
|
||||
|
||||
if (data->filename)
|
||||
{
|
||||
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(w), data->filename);
|
||||
}
|
||||
else
|
||||
{
|
||||
sourceChanged(GTK_FILE_CHOOSER_BUTTON(w), data);
|
||||
}
|
||||
|
||||
gtr_dialog_set_content(GTK_DIALOG(d), GTK_WIDGET(grid));
|
||||
w = gtk_dialog_get_widget_for_response(GTK_DIALOG(d), GTK_RESPONSE_ACCEPT);
|
||||
gtk_widget_grab_focus(w);
|
||||
return d;
|
||||
}
|
||||
|
||||
/****
|
||||
*****
|
||||
****/
|
||||
|
||||
static void
|
||||
onOpenDialogResponse (GtkDialog * dialog, int response, gpointer core)
|
||||
static void onOpenDialogResponse(GtkDialog* dialog, int response, gpointer core)
|
||||
{
|
||||
char * folder;
|
||||
char* folder;
|
||||
|
||||
/* remember this folder the next time we use this dialog */
|
||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||
gtr_pref_string_set (TR_KEY_open_dialog_dir, folder);
|
||||
g_free (folder);
|
||||
/* remember this folder the next time we use this dialog */
|
||||
folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog));
|
||||
gtr_pref_string_set(TR_KEY_open_dialog_dir, folder);
|
||||
g_free(folder);
|
||||
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
GtkFileChooser * chooser = GTK_FILE_CHOOSER (dialog);
|
||||
GtkWidget * w = gtk_file_chooser_get_extra_widget (chooser);
|
||||
GtkToggleButton * tb = GTK_TOGGLE_BUTTON (w);
|
||||
const gboolean do_start = gtr_pref_flag_get (TR_KEY_start_added_torrents);
|
||||
const gboolean do_prompt = gtk_toggle_button_get_active (tb);
|
||||
const gboolean do_notify = FALSE;
|
||||
GSList * files = gtk_file_chooser_get_files (chooser);
|
||||
GtkFileChooser* chooser = GTK_FILE_CHOOSER(dialog);
|
||||
GtkWidget* w = gtk_file_chooser_get_extra_widget(chooser);
|
||||
GtkToggleButton* tb = GTK_TOGGLE_BUTTON(w);
|
||||
const gboolean do_start = gtr_pref_flag_get(TR_KEY_start_added_torrents);
|
||||
const gboolean do_prompt = gtk_toggle_button_get_active(tb);
|
||||
const gboolean do_notify = FALSE;
|
||||
GSList* files = gtk_file_chooser_get_files(chooser);
|
||||
|
||||
gtr_core_add_files (core, files, do_start, do_prompt, do_notify);
|
||||
g_slist_foreach (files, (GFunc)g_object_unref, NULL);
|
||||
g_slist_free (files);
|
||||
gtr_core_add_files(core, files, do_start, do_prompt, do_notify);
|
||||
g_slist_foreach(files, (GFunc)g_object_unref, NULL);
|
||||
g_slist_free(files);
|
||||
}
|
||||
|
||||
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||
gtk_widget_destroy(GTK_WIDGET(dialog));
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
gtr_torrent_open_from_file_dialog_new (GtkWindow * parent, TrCore * core)
|
||||
GtkWidget* gtr_torrent_open_from_file_dialog_new(GtkWindow* parent, TrCore* core)
|
||||
{
|
||||
GtkWidget * w;
|
||||
GtkWidget * c;
|
||||
const char * folder;
|
||||
GtkWidget* w;
|
||||
GtkWidget* c;
|
||||
const char* folder;
|
||||
|
||||
w = gtk_file_chooser_dialog_new (_("Open a Torrent"), parent,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
gtk_dialog_set_alternative_button_order (GTK_DIALOG (w),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
-1);
|
||||
gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (w), TRUE);
|
||||
addTorrentFilters (GTK_FILE_CHOOSER (w));
|
||||
g_signal_connect (w, "response", G_CALLBACK (onOpenDialogResponse), core);
|
||||
w = gtk_file_chooser_dialog_new(_("Open a Torrent"), parent, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
|
||||
gtk_dialog_set_alternative_button_order(GTK_DIALOG(w), GTK_RESPONSE_ACCEPT, GTK_RESPONSE_CANCEL, -1);
|
||||
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(w), TRUE);
|
||||
addTorrentFilters(GTK_FILE_CHOOSER(w));
|
||||
g_signal_connect(w, "response", G_CALLBACK(onOpenDialogResponse), core);
|
||||
|
||||
if ((folder = gtr_pref_string_get (TR_KEY_open_dialog_dir)))
|
||||
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (w), folder);
|
||||
if ((folder = gtr_pref_string_get(TR_KEY_open_dialog_dir)))
|
||||
{
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(w), folder);
|
||||
}
|
||||
|
||||
c = gtk_check_button_new_with_mnemonic (_("Show _options dialog"));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (c),
|
||||
gtr_pref_flag_get (TR_KEY_show_options_window));
|
||||
gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (w), c);
|
||||
gtk_widget_show (c);
|
||||
c = gtk_check_button_new_with_mnemonic(_("Show _options dialog"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(c), gtr_pref_flag_get(TR_KEY_show_options_window));
|
||||
gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(w), c);
|
||||
gtk_widget_show(c);
|
||||
|
||||
return w;
|
||||
return w;
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
static void
|
||||
onOpenURLResponse (GtkDialog * dialog, int response, gpointer user_data)
|
||||
static void onOpenURLResponse(GtkDialog* dialog, int response, gpointer user_data)
|
||||
{
|
||||
bool handled = false;
|
||||
bool handled = false;
|
||||
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
GtkWidget * e = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), "url-entry"));
|
||||
char * url = g_strdup (gtk_entry_get_text (GTK_ENTRY (e)));
|
||||
g_strstrip (url);
|
||||
GtkWidget* e = GTK_WIDGET(g_object_get_data(G_OBJECT(dialog), "url-entry"));
|
||||
char* url = g_strdup(gtk_entry_get_text(GTK_ENTRY(e)));
|
||||
g_strstrip(url);
|
||||
|
||||
if (url)
|
||||
if (url)
|
||||
{
|
||||
handled = gtr_core_add_from_url (user_data, url);
|
||||
if (!handled)
|
||||
gtr_unrecognized_url_dialog (GTK_WIDGET (dialog), url);
|
||||
g_free (url);
|
||||
handled = gtr_core_add_from_url(user_data, url);
|
||||
|
||||
if (!handled)
|
||||
{
|
||||
gtr_unrecognized_url_dialog(GTK_WIDGET(dialog), url);
|
||||
}
|
||||
|
||||
g_free(url);
|
||||
}
|
||||
}
|
||||
else if (response == GTK_RESPONSE_CANCEL)
|
||||
else if (response == GTK_RESPONSE_CANCEL)
|
||||
{
|
||||
handled = TRUE;
|
||||
handled = TRUE;
|
||||
}
|
||||
|
||||
if (handled)
|
||||
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||
if (handled)
|
||||
{
|
||||
gtk_widget_destroy(GTK_WIDGET(dialog));
|
||||
}
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
gtr_torrent_open_from_url_dialog_new (GtkWindow * parent, TrCore * core)
|
||||
GtkWidget* gtr_torrent_open_from_url_dialog_new(GtkWindow* parent, TrCore* core)
|
||||
{
|
||||
guint row;
|
||||
GtkWidget * e;
|
||||
GtkWidget * t;
|
||||
GtkWidget * w;
|
||||
guint row;
|
||||
GtkWidget* e;
|
||||
GtkWidget* t;
|
||||
GtkWidget* w;
|
||||
|
||||
w = gtk_dialog_new_with_buttons (_("Open URL"), parent,
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
gtk_dialog_set_alternative_button_order (GTK_DIALOG (w),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
-1);
|
||||
g_signal_connect (w, "response", G_CALLBACK (onOpenURLResponse), core);
|
||||
w = gtk_dialog_new_with_buttons(_("Open URL"), parent, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
|
||||
gtk_dialog_set_alternative_button_order(GTK_DIALOG(w), GTK_RESPONSE_ACCEPT, GTK_RESPONSE_CANCEL, -1);
|
||||
g_signal_connect(w, "response", G_CALLBACK(onOpenURLResponse), core);
|
||||
|
||||
row = 0;
|
||||
t = hig_workarea_create ();
|
||||
hig_workarea_add_section_title (t, &row, _("Open torrent from URL"));
|
||||
e = gtk_entry_new ();
|
||||
gtk_widget_set_size_request (e, 400, -1);
|
||||
gtr_paste_clipboard_url_into_entry (e);
|
||||
g_object_set_data (G_OBJECT (w), "url-entry", e);
|
||||
hig_workarea_add_row (t, &row, _("_URL"), e, NULL);
|
||||
row = 0;
|
||||
t = hig_workarea_create();
|
||||
hig_workarea_add_section_title(t, &row, _("Open torrent from URL"));
|
||||
e = gtk_entry_new();
|
||||
gtk_widget_set_size_request(e, 400, -1);
|
||||
gtr_paste_clipboard_url_into_entry(e);
|
||||
g_object_set_data(G_OBJECT(w), "url-entry", e);
|
||||
hig_workarea_add_row(t, &row, _("_URL"), e, NULL);
|
||||
|
||||
gtr_dialog_set_content (GTK_DIALOG (w), t);
|
||||
gtr_dialog_set_content(GTK_DIALOG(w), t);
|
||||
|
||||
if (gtk_entry_get_text_length (GTK_ENTRY (e)) == 0)
|
||||
gtk_widget_grab_focus (e);
|
||||
else
|
||||
gtk_widget_grab_focus (gtk_dialog_get_widget_for_response (GTK_DIALOG (w), GTK_RESPONSE_ACCEPT));
|
||||
if (gtk_entry_get_text_length(GTK_ENTRY(e)) == 0)
|
||||
{
|
||||
gtk_widget_grab_focus(e);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_grab_focus(gtk_dialog_get_widget_for_response(GTK_DIALOG(w), GTK_RESPONSE_ACCEPT));
|
||||
}
|
||||
|
||||
return w;
|
||||
return w;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user