diff options
-rw-r--r-- | src/bencode.c | 6 | ||||
-rw-r--r-- | src/bencode.h | 14 | ||||
-rw-r--r-- | src/trg-cell-renderer-counter.c | 6 | ||||
-rw-r--r-- | src/trg-cell-renderer-file-icon.c | 6 | ||||
-rw-r--r-- | src/trg-client.c | 5 | ||||
-rw-r--r-- | src/trg-file-parser.c | 75 | ||||
-rw-r--r-- | src/trg-file-parser.h | 1 | ||||
-rw-r--r-- | src/trg-files-model-common.c | 80 | ||||
-rw-r--r-- | src/trg-files-model-common.h | 14 | ||||
-rw-r--r-- | src/trg-files-model.c | 92 | ||||
-rw-r--r-- | src/trg-files-tree-view-common.c | 8 | ||||
-rw-r--r-- | src/trg-main-window.c | 15 | ||||
-rw-r--r-- | src/trg-state-selector.c | 10 | ||||
-rw-r--r-- | src/trg-torrent-add-dialog.c | 15 | ||||
-rw-r--r-- | src/util.c | 20 | ||||
-rw-r--r-- | src/util.h | 4 |
16 files changed, 166 insertions, 205 deletions
diff --git a/src/bencode.c b/src/bencode.c index c9c9b6a..b6d64af 100644 --- a/src/bencode.c +++ b/src/bencode.c @@ -180,12 +180,12 @@ be_node *be_decode(const char *data) return be_decoden(data, strlen(data)); } -int be_validate_node(be_node * node, int type) +gboolean be_validate_node(be_node * node, gint type) { if (!node || node->type != type) - return 1; + return FALSE; else - return 0; + return TRUE; } static inline void _be_free_str(char *str) diff --git a/src/bencode.h b/src/bencode.h index 71760e0..23fc51a 100644 --- a/src/bencode.h +++ b/src/bencode.h @@ -52,13 +52,13 @@ extern "C" { } val; } be_node; - extern gint64 be_str_len(be_node * node); - extern be_node *be_decode(const char *bencode); - extern be_node *be_decoden(const char *bencode, gint64 bencode_len); - extern void be_free(be_node * node); - extern void be_dump(be_node * node); - extern be_node *be_dict_find(be_node * node, char *key, int type); - extern int be_validate_node(be_node * node, int type); + gint64 be_str_len(be_node * node); + be_node *be_decode(const char *bencode); + be_node *be_decoden(const char *bencode, gint64 bencode_len); + void be_free(be_node * node); + void be_dump(be_node * node); + be_node *be_dict_find(be_node * node, char *key, int type); + gboolean be_validate_node(be_node * node, gint type); #ifdef __cplusplus } diff --git a/src/trg-cell-renderer-counter.c b/src/trg-cell-renderer-counter.c index 497f122..13867ab 100644 --- a/src/trg-cell-renderer-counter.c +++ b/src/trg-cell-renderer-counter.c @@ -32,7 +32,7 @@ G_DEFINE_TYPE(TrgCellRendererCounter, trg_cell_renderer_counter, #define TRG_CELL_RENDERER_COUNTER_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRG_TYPE_CELL_RENDERER_COUNTER, TrgCellRendererCounterPrivate)) typedef struct _TrgCellRendererCounterPrivate - TrgCellRendererCounterPrivate; + TrgCellRendererCounterPrivate; struct _TrgCellRendererCounterPrivate { gint count; @@ -102,8 +102,8 @@ static void trg_cell_renderer_counter_dispose(GObject * object) TrgCellRendererCounterPrivate *priv = TRG_CELL_RENDERER_COUNTER_GET_PRIVATE(object); g_free(priv->originalLabel); - G_OBJECT_CLASS(trg_cell_renderer_counter_parent_class)-> - dispose(object); + G_OBJECT_CLASS(trg_cell_renderer_counter_parent_class)->dispose + (object); } static void diff --git a/src/trg-cell-renderer-file-icon.c b/src/trg-cell-renderer-file-icon.c index 887ac03..4e578c8 100644 --- a/src/trg-cell-renderer-file-icon.c +++ b/src/trg-cell-renderer-file-icon.c @@ -34,7 +34,7 @@ G_DEFINE_TYPE(TrgCellRendererFileIcon, trg_cell_renderer_file_icon, #define TRG_CELL_RENDERER_FILE_ICON_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRG_TYPE_CELL_RENDERER_FILE_ICON, TrgCellRendererFileIconPrivate)) typedef struct _TrgCellRendererFileIconPrivate - TrgCellRendererFileIconPrivate; + TrgCellRendererFileIconPrivate; struct _TrgCellRendererFileIconPrivate { gint64 file_id; @@ -117,8 +117,8 @@ static void trg_cell_renderer_file_icon_dispose(GObject * object) TrgCellRendererFileIconPrivate *priv = TRG_CELL_RENDERER_FILE_ICON_GET_PRIVATE(object); g_free(priv->text); - G_OBJECT_CLASS(trg_cell_renderer_file_icon_parent_class)-> - dispose(object); + G_OBJECT_CLASS(trg_cell_renderer_file_icon_parent_class)->dispose + (object); } static void diff --git a/src/trg-client.c b/src/trg-client.c index cdb018f..42237ff 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -257,9 +257,8 @@ int trg_client_populate_with_settings(TrgClient * tc) #endif priv->url = g_strdup_printf("%s://%s:%d/transmission/rpc", - priv-> - ssl ? HTTPS_URI_PREFIX : HTTP_URI_PREFIX, - host, port); + priv->ssl ? HTTPS_URI_PREFIX : + HTTP_URI_PREFIX, host, port); g_free(host); priv->username = trg_prefs_get_string(prefs, TRG_PREFS_KEY_USERNAME, diff --git a/src/trg-file-parser.c b/src/trg-file-parser.c index 661596b..81010f6 100644 --- a/src/trg-file-parser.c +++ b/src/trg-file-parser.c @@ -28,57 +28,69 @@ static trg_torrent_file_node * trg_torrent_file_node_insert(trg_torrent_file_node * top, + trg_torrent_file_node * last, be_node * file_node, guint index, gint64 * total_length) { - int i; - trg_torrent_file_node *path_el_parent = top; be_node *file_length_node = be_dict_find(file_node, "length", BE_INT); - be_node *file_path_node = be_dict_find(file_node, "path", BE_LIST); + be_node *file_path_list = be_dict_find(file_node, "path", BE_LIST); + trg_torrent_file_node *lastIter = last; + GList *parentList = NULL; + be_node *path_el_node; + GList *li; + int i; - if (!file_path_node || !file_length_node) + if (!file_path_list || !file_length_node) return NULL; + if (lastIter) + while ((lastIter = lastIter->parent)) + parentList = g_list_prepend(parentList, lastIter); + + li = parentList; + lastIter = NULL; + /* Iterate over the path list which contains each file/directory * component of the path in order. */ - for (i = 0;;) { - be_node *path_el_node = file_path_node->val.l[i]; - + for (i = 0; (path_el_node = file_path_list->val.l[i]); i++) { + gboolean isFile = !file_path_list->val.l[i + 1]; trg_torrent_file_node *target_node = NULL; - GList *li; - - /* Does this element exist already? */ - for (li = path_el_parent->children; li != NULL; - li = g_list_next(li)) { - trg_torrent_file_node *x = (trg_torrent_file_node *) li->data; - if (!g_strcmp0(x->name, path_el_node->val.s)) { - target_node = x; - break; - } + + if (li && !isFile) { + trg_torrent_file_node *lastPathNode = + (trg_torrent_file_node *) li->data; + + if (!g_strcmp0(lastPathNode->name, path_el_node->val.s)) + target_node = lastPathNode; + + li = g_list_next(li); } if (!target_node) { - /* Create a new node and add it as a child of the parent from the - * last iteration. */ target_node = g_new0(trg_torrent_file_node, 1); target_node->name = g_strdup(path_el_node->val.s); - path_el_parent->children = - g_list_append(path_el_parent->children, target_node); + target_node->parent = lastIter; + + if (lastIter) + lastIter->children = + g_list_append(lastIter->children, target_node); + else + top->children = g_list_append(top->children, target_node); } - path_el_parent = target_node; + lastIter = target_node; - /* Is this the last component of the path (the file)? */ - if (!file_path_node->val.l[++i]) { + if (isFile) { *total_length += (target_node->length = (gint64) (file_length_node->val.i)); target_node->index = index; - return target_node; } } - return NULL; + g_list_free(parentList); + + return lastIter; } static void trg_torrent_file_node_free(trg_torrent_file_node * node) @@ -105,6 +117,7 @@ static trg_torrent_file_node *trg_parse_torrent_file_nodes(be_node * { be_node *files_node = be_dict_find(info_node, "files", BE_LIST); trg_torrent_file_node *top_node = g_new0(trg_torrent_file_node, 1); + trg_torrent_file_node *lastNode = NULL; int i; /* Probably means single file mode. */ @@ -114,9 +127,11 @@ static trg_torrent_file_node *trg_parse_torrent_file_nodes(be_node * for (i = 0; files_node->val.l[i]; ++i) { be_node *file_node = files_node->val.l[i]; - if (be_validate_node(file_node, BE_DICT) || - !trg_torrent_file_node_insert(top_node, file_node, i, - total_length)) { + if (!be_validate_node(file_node, BE_DICT) + || !(lastNode = + trg_torrent_file_node_insert(top_node, lastNode, + file_node, i, + total_length))) { /* Unexpected format. Throw away everything, file indexes need to * be correct. */ trg_torrent_file_node_free(top_node); @@ -156,7 +171,7 @@ trg_torrent_file *trg_parse_torrent_file(const gchar * filename) if (!top_node) { return NULL; - } else if (be_validate_node(top_node, BE_DICT)) { + } else if (!be_validate_node(top_node, BE_DICT)) { goto out; } diff --git a/src/trg-file-parser.h b/src/trg-file-parser.h index eecc04a..1d7e116 100644 --- a/src/trg-file-parser.h +++ b/src/trg-file-parser.h @@ -22,6 +22,7 @@ typedef struct { gint64 length; GList *children; guint index; + gpointer parent; } trg_torrent_file_node; typedef struct { diff --git a/src/trg-files-model-common.c b/src/trg-files-model-common.c index ea23c03..6c4e41f 100644 --- a/src/trg-files-model-common.c +++ b/src/trg-files-model-common.c @@ -41,8 +41,8 @@ static void set_wanted_foreachfunc(GtkTreeModel * model, gtk_tree_store_set(GTK_TREE_STORE(model), iter, args->column, args->new_value, -1); - trg_files_tree_model_setSubtree(model, path, iter, args->column, - args->new_value); + trg_files_tree_model_set_subtree(model, path, iter, args->column, + args->new_value); } static void set_priority_foreachfunc(GtkTreeModel * model, @@ -58,8 +58,8 @@ static void set_priority_foreachfunc(GtkTreeModel * model, gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, args->column, &value); - trg_files_tree_model_setSubtree(model, path, iter, args->column, - args->new_value); + trg_files_tree_model_set_subtree(model, path, iter, args->column, + args->new_value); } void trg_files_model_set_wanted(GtkTreeView * tv, gint column, @@ -108,9 +108,9 @@ static gboolean setSubtreeForeach(GtkTreeModel * model, GtkTreePath * path, return FALSE; /* keep walking */ } -void trg_files_tree_model_propogateChangeUp(GtkTreeModel * model, - GtkTreeIter * iter, - gint column, gint new_value) +void trg_files_tree_model_propogate_change_up(GtkTreeModel * model, + GtkTreeIter * iter, + gint column, gint new_value) { GtkTreeIter back_iter = *iter; gint result = new_value; @@ -146,10 +146,10 @@ void trg_files_tree_model_propogateChangeUp(GtkTreeModel * model, } } -void trg_files_tree_model_setSubtree(GtkTreeModel * model, - GtkTreePath * path, - GtkTreeIter * iter, gint column, - gint new_value) +void trg_files_tree_model_set_subtree(GtkTreeModel * model, + GtkTreePath * path, + GtkTreeIter * iter, gint column, + gint new_value) { GtkTreeIter back_iter = *iter; @@ -166,52 +166,26 @@ void trg_files_tree_model_setSubtree(GtkTreeModel * model, new_value, -1); } - trg_files_tree_model_propogateChangeUp(model, iter, column, new_value); + trg_files_tree_model_propogate_change_up(model, iter, column, + new_value); } -struct UpdateParentsSizeForeachData { - gint size_column; - GtkTreeIter *descendent_iter; -}; - -static gboolean trg_files_model_update_parents_size_foreach(GtkTreeModel * - model, - GtkTreePath * - path, - GtkTreeIter * - iter, - gpointer data) +void trg_files_model_update_parents(GtkTreeModel * model, + GtkTreeIter * iter, gint size_column) { - struct UpdateParentsSizeForeachData *args = - (struct UpdateParentsSizeForeachData *) data; - - GtkTreePath *descendentPath = gtk_tree_model_get_path(model, - args-> - descendent_iter); - - if (gtk_tree_path_is_ancestor(path, descendentPath) - && gtk_tree_model_get_iter(model, args->descendent_iter, - descendentPath)) { - gint64 size, oldSize; - gtk_tree_model_get(model, args->descendent_iter, args->size_column, - &size, -1); - gtk_tree_model_get(model, iter, args->size_column, &oldSize, -1); - gtk_tree_store_set(GTK_TREE_STORE(model), iter, args->size_column, - size + oldSize, -1); - } + GtkTreeIter back_iter = *iter; + GtkTreeIter tmp_iter; + gint64 size, oldSize; - gtk_tree_path_free(descendentPath); + if (!gtk_tree_model_iter_parent(model, &tmp_iter, &back_iter)) + return; - return FALSE; -} + gtk_tree_model_get(model, iter, size_column, &size, -1); -void trg_files_model_update_parents(GtkTreeModel * model, - GtkTreeIter * iter, gint size_column) -{ - struct UpdateParentsSizeForeachData args; - args.descendent_iter = iter; - args.size_column = size_column; - gtk_tree_model_foreach(model, - trg_files_model_update_parents_size_foreach, - &args); + do { + gtk_tree_model_get(model, &tmp_iter, size_column, &oldSize, -1); + gtk_tree_store_set(GTK_TREE_STORE(model), &tmp_iter, size_column, + size + oldSize, -1); + back_iter = tmp_iter; + } while (gtk_tree_model_iter_parent(model, &tmp_iter, &back_iter)); } diff --git a/src/trg-files-model-common.h b/src/trg-files-model-common.h index 76eaecc..e8f52f2 100644 --- a/src/trg-files-model-common.h +++ b/src/trg-files-model-common.h @@ -20,13 +20,13 @@ #ifndef TRG_FILES_TREE_MODEL_COMMON_H_ #define TRG_FILES_TREE_MODEL_COMMON_H_ -void trg_files_tree_model_propogateChangeUp(GtkTreeModel * model, - GtkTreeIter * iter, - gint column, gint new_value); -void trg_files_tree_model_setSubtree(GtkTreeModel * model, - GtkTreePath * path, - GtkTreeIter * iter, gint column, - gint new_value); +void trg_files_tree_model_propogate_change_up(GtkTreeModel * model, + GtkTreeIter * iter, + gint column, gint new_value); +void trg_files_tree_model_set_subtree(GtkTreeModel * model, + GtkTreePath * path, + GtkTreeIter * iter, gint column, + gint new_value); void trg_files_tree_model_set_priority(GtkTreeView * tv, gint column, gint new_value); void trg_files_model_set_wanted(GtkTreeView * tv, gint column, diff --git a/src/trg-files-model.c b/src/trg-files-model.c index b5dc34e..2280d49 100644 --- a/src/trg-files-model.c +++ b/src/trg-files-model.c @@ -44,78 +44,33 @@ struct _TrgFilesModelPrivate { gboolean accept; }; -static void iter_to_row_reference(GtkTreeModel * model, GtkTreeIter * iter, - GtkTreeRowReference ** rr) -{ - GtkTreePath *path = gtk_tree_model_get_path(model, iter); - - if (*rr) - gtk_tree_row_reference_free(*rr); - - *rr = gtk_tree_row_reference_new(model, path); - gtk_tree_path_free(path); -} - -static void rowref_to_iter(GtkTreeModel * model, GtkTreeRowReference * rr, - GtkTreeIter * iter) -{ - GtkTreePath *path = gtk_tree_row_reference_get_path(rr); - gtk_tree_model_get_iter(model, iter, path); - gtk_tree_path_free(path); -} - -struct UpdateParentProgressForeachData { - GtkTreeIter *descendentIter; - gint64 increment; -}; - -static gboolean trg_files_update_parent_progress_foreachfunc(GtkTreeModel * - model, - GtkTreePath * - path, - GtkTreeIter * - iter, - gpointer data) +static void trg_files_update_parent_progress(GtkTreeModel * model, + GtkTreeIter * iter, + gint64 increment) { - struct UpdateParentProgressForeachData *args = - (struct UpdateParentProgressForeachData *) data; + GtkTreeIter back_iter = *iter; - GtkTreePath *descendentPath = gtk_tree_model_get_path(model, - args-> - descendentIter); + if (increment < 1) + return; - if (gtk_tree_path_is_ancestor(path, descendentPath)) { + while (1) { + GtkTreeIter tmp_iter; gint64 lastCompleted, newCompleted, length; - gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED, + if (!gtk_tree_model_iter_parent(model, &tmp_iter, &back_iter)) + break; + + gtk_tree_model_get(model, &tmp_iter, FILESCOL_BYTESCOMPLETED, &lastCompleted, FILESCOL_SIZE, &length, -1); - newCompleted = lastCompleted + args->increment; + newCompleted = lastCompleted + increment; - gtk_tree_store_set(GTK_TREE_STORE(model), iter, + gtk_tree_store_set(GTK_TREE_STORE(model), &tmp_iter, FILESCOL_BYTESCOMPLETED, newCompleted, FILESCOL_PROGRESS, file_get_progress(length, newCompleted), -1); - } - - gtk_tree_path_free(descendentPath); - - return FALSE; -} - -static void trg_files_update_parent_progress(GtkTreeModel * model, - GtkTreeIter * iter, - gint64 increment) -{ - if (increment > 0) { - struct UpdateParentProgressForeachData args; - args.descendentIter = iter; - args.increment = increment; - - gtk_tree_model_foreach(GTK_TREE_MODEL(model), - trg_files_update_parent_progress_foreachfunc, - &args); + back_iter = tmp_iter; } } @@ -234,8 +189,7 @@ static void trg_files_model_iter_update(TrgFilesModel * model, gboolean wanted = json_node_get_int(json_array_get_element(wantedArray, id)) == 1; - gint priority = - (gint) + gint priority = (gint) json_node_get_int(json_array_get_element(prioritiesArray, id)); gdouble progress = file_get_progress(fileLength, fileCompleted); @@ -261,13 +215,13 @@ static void trg_files_model_iter_update(TrgFilesModel * model, priority, -1); if (isFirst) { - trg_files_tree_model_propogateChangeUp(GTK_TREE_MODEL(model), - filesIter, - FILESCOL_PRIORITY, - priority); - trg_files_tree_model_propogateChangeUp(GTK_TREE_MODEL(model), - filesIter, FILESCOL_WANTED, - wanted); + trg_files_tree_model_propogate_change_up(GTK_TREE_MODEL(model), + filesIter, + FILESCOL_PRIORITY, + priority); + trg_files_tree_model_propogate_change_up(GTK_TREE_MODEL(model), + filesIter, + FILESCOL_WANTED, wanted); } } diff --git a/src/trg-files-tree-view-common.c b/src/trg-files-tree-view-common.c index 5be2eef..5845778 100644 --- a/src/trg-files-tree-view-common.c +++ b/src/trg-files-tree-view-common.c @@ -143,15 +143,15 @@ static gboolean onViewPathToggled(GtkTreeView * view, priority = TR_PRI_NORMAL; break; } - trg_files_tree_model_setSubtree(model, path, &iter, pri_id, - priority); + trg_files_tree_model_set_subtree(model, path, &iter, pri_id, + priority); } else { int enabled; gtk_tree_model_get(model, &iter, enabled_id, &enabled, -1); enabled = !enabled; - trg_files_tree_model_setSubtree(model, path, &iter, enabled_id, - enabled); + trg_files_tree_model_set_subtree(model, path, &iter, + enabled_id, enabled); } handled = TRUE; diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 013fa50..1a1733c 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -143,9 +143,9 @@ static void open_about_cb(GtkWidget * w, GtkWindow * parent); static gboolean trg_torrent_tree_view_visible_func(GtkTreeModel * model, GtkTreeIter * iter, gpointer data); -static TrgTorrentTreeView * -trg_main_window_torrent_tree_view_new(TrgMainWindow * win, - GtkTreeModel * model); +static TrgTorrentTreeView + * trg_main_window_torrent_tree_view_new(TrgMainWindow * win, + GtkTreeModel * model); static gboolean trg_dialog_error_handler(TrgMainWindow * win, trg_response * response); static gboolean torrent_selection_changed(GtkTreeSelection * selection, @@ -1192,9 +1192,8 @@ static gboolean on_torrent_get(gpointer data, int mode) update_selected_torrent_notebook(win, mode, priv->selectedTorrentId); trg_status_bar_update(priv->statusBar, stats, client); update_whatever_statusicon(win, - trg_status_bar_get_speed_text(priv-> - statusBar), - stats); + trg_status_bar_get_speed_text + (priv->statusBar), stats); #ifndef TRG_NO_GRAPH if (priv->graphNotebookIndex >= 0) @@ -1358,8 +1357,8 @@ void trg_main_window_reload_dir_aliases(TrgMainWindow * win) } static TrgTorrentTreeView - *trg_main_window_torrent_tree_view_new(TrgMainWindow * win, - GtkTreeModel * model) + * trg_main_window_torrent_tree_view_new(TrgMainWindow * win, + GtkTreeModel * model) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); TrgTorrentTreeView *torrentTreeView = diff --git a/src/trg-state-selector.c b/src/trg-state-selector.c index 3eeb1ec..8db7362 100644 --- a/src/trg-state-selector.c +++ b/src/trg-state-selector.c @@ -354,8 +354,8 @@ void trg_state_selector_update(TrgStateSelector * s, guint whatsChanged) g_free(announceHost); } else { trg_state_selector_insert(s, priv->n_categories, - g_hash_table_size(priv-> - trackers), + g_hash_table_size + (priv->trackers), announceHost, &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_ICON, @@ -389,9 +389,9 @@ void trg_state_selector_update(TrgStateSelector * s, guint whatsChanged) } else { trg_state_selector_insert(s, priv->n_categories + - g_hash_table_size(priv-> - trackers), -1, - dir, &iter); + g_hash_table_size + (priv->trackers), -1, dir, + &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_ICON, GTK_STOCK_DIRECTORY, diff --git a/src/trg-torrent-add-dialog.c b/src/trg-torrent-add-dialog.c index c072b28..bf29b8b 100644 --- a/src/trg-torrent-add-dialog.c +++ b/src/trg-torrent-add-dialog.c @@ -51,8 +51,7 @@ enum { }; enum { - FC_ICON, FC_INDEX, FC_LABEL, FC_SIZE, FC_PRIORITY, FC_ENABLED, - N_FILE_COLS + FC_INDEX, FC_LABEL, FC_SIZE, FC_PRIORITY, FC_ENABLED, N_FILE_COLS }; G_DEFINE_TYPE(TrgTorrentAddDialog, trg_torrent_add_dialog, GTK_TYPE_DIALOG) @@ -402,8 +401,7 @@ GtkWidget *gtr_file_list_new(GtkTreeStore ** store) gtk_tree_view_column_set_sort_column_id(col, FC_PRIORITY); gtk_tree_view_append_column(tree_view, col); - *store = gtk_tree_store_new(N_FILE_COLS, G_TYPE_STRING, /* icon */ - G_TYPE_INT, /* index */ + *store = gtk_tree_store_new(N_FILE_COLS, G_TYPE_INT, /* index */ G_TYPE_STRING, /* label */ G_TYPE_INT64, /* size */ G_TYPE_INT, /* priority */ @@ -473,10 +471,7 @@ static void store_add_node(GtkTreeStore * store, GtkTreeIter * parent, if (node->name) { gtk_tree_store_append(store, &child, parent); gtk_tree_store_set(store, &child, FC_LABEL, node->name, FC_ENABLED, - 1, FC_ICON, - node-> - children ? GTK_STOCK_DIRECTORY : GTK_STOCK_FILE, - FC_INDEX, node->children ? -1 : node->index, + 1, FC_INDEX, node->children ? -1 : node->index, FC_PRIORITY, TR_PRI_NORMAL, -1); if (!node->children) { @@ -627,8 +622,8 @@ static void trg_torrent_add_dialog_source_click_cb(GtkWidget * w, gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(d)); trg_torrent_add_dialog_generic_save_dir(GTK_FILE_CHOOSER(d), - trg_client_get_prefs(priv-> - client)); + trg_client_get_prefs + (priv->client)); trg_torrent_add_dialog_set_filenames(TRG_TORRENT_ADD_DIALOG(data), priv->filenames); } @@ -533,3 +533,23 @@ evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap) return r; #endif } + +void iter_to_row_reference(GtkTreeModel * model, GtkTreeIter * iter, + GtkTreeRowReference ** rr) +{ + GtkTreePath *path = gtk_tree_model_get_path(model, iter); + + if (*rr) + gtk_tree_row_reference_free(*rr); + + *rr = gtk_tree_row_reference_new(model, path); + gtk_tree_path_free(path); +} + +void rowref_to_iter(GtkTreeModel * model, GtkTreeRowReference * rr, + GtkTreeIter * iter) +{ + GtkTreePath *path = gtk_tree_row_reference_get_path(rr); + gtk_tree_model_get_iter(model, iter, path); + gtk_tree_path_free(path); +} @@ -89,5 +89,9 @@ GtkWidget *my_scrolledwin_new(GtkWidget * child); gboolean is_url(gchar * string); gboolean is_magnet(gchar * string); GtkWidget *gtr_combo_box_new_enum(const char *text_1, ...); +void iter_to_row_reference(GtkTreeModel * model, GtkTreeIter * iter, + GtkTreeRowReference ** rr); +void rowref_to_iter(GtkTreeModel * model, GtkTreeRowReference * rr, + GtkTreeIter * iter); #endif /* UTIL_H_ */ |