diff options
-rw-r--r-- | src/main.c | 6 | ||||
-rw-r--r-- | src/requests.c | 2 | ||||
-rw-r--r-- | src/trg-files-model.c | 24 | ||||
-rw-r--r-- | src/trg-files-tree-view.c | 12 | ||||
-rw-r--r-- | src/trg-torrent-add-dialog.c | 33 | ||||
-rw-r--r-- | src/trg-tree-view.c | 2 | ||||
-rw-r--r-- | src/util.c | 6 | ||||
-rw-r--r-- | src/util.h | 1 |
8 files changed, 56 insertions, 30 deletions
@@ -101,9 +101,9 @@ int main(int argc, char *argv[]) gboolean withUnique; #endif -#ifdef DEBUG - //GMemVTable gmvt = {malloc,realloc,free,calloc,malloc,realloc}; - //g_mem_set_vtable(&gmvt); +#ifdef TRG_MEMPROFILE + GMemVTable gmvt = {malloc,realloc,free,calloc,malloc,realloc}; + g_mem_set_vtable(&gmvt); g_mem_set_vtable(glib_mem_profiler_table); g_mem_profile(); #endif diff --git a/src/requests.c b/src/requests.c index fe3f90e..c1c58b0 100644 --- a/src/requests.c +++ b/src/requests.c @@ -214,7 +214,7 @@ JsonNode *torrent_add(gchar * target, gint flags) JsonNode *root; JsonObject *args; gboolean isMagnet = g_str_has_prefix(target, "magnet:"); - gboolean isUri = isMagnet || g_regex_match_simple ("^(([^:/?#]+):)?(//([^/?#]*))?", target, 0, 0); + gboolean isUri = isMagnet || is_url(target); gchar *encodedFile; if (!isUri && !g_file_test(target, G_FILE_TEST_IS_REGULAR)) diff --git a/src/trg-files-model.c b/src/trg-files-model.c index 3836398..e816924 100644 --- a/src/trg-files-model.c +++ b/src/trg-files-model.c @@ -44,12 +44,25 @@ static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter, JsonObject * file, int id) { - gtk_list_store_append(GTK_LIST_STORE(model), iter); + gchar *mimetype; + gtk_list_store_append(GTK_LIST_STORE(model), iter); gtk_list_store_set(GTK_LIST_STORE(model), iter, FILESCOL_NAME, file_get_name(file), FILESCOL_SIZE, file_get_length(file), FILESCOL_ID, id, -1); + + mimetype = g_content_type_guess(file_get_name(file), NULL, 0, NULL); + if (mimetype) { + GIcon *icon = g_content_type_get_icon (mimetype); + if (icon) { + gtk_list_store_set(GTK_LIST_STORE(model), iter, + FILESCOL_ICON, icon, -1); + g_object_unref(icon); + } + } + + g_free(mimetype); } void trg_files_model_set_accept(TrgFilesModel * model, gboolean accept) @@ -77,9 +90,9 @@ trg_files_model_iter_update(TrgFilesModel * model, if (priv->accept) { gtk_list_store_set(GTK_LIST_STORE(model), filesIter, - FILESCOL_ICON, - wanted ? GTK_STOCK_FILE : - GTK_STOCK_CANCEL, FILESCOL_WANTED, wanted, + /* set wanted icon: FILESCOL_WANTED_ICON, + wanted ? GTK_STOCK_APPLY : GTK_STOCK_CANCEL, */ + FILESCOL_WANTED, wanted, FILESCOL_PRIORITY, priority, -1); } } @@ -96,12 +109,13 @@ static void trg_files_model_init(TrgFilesModel * self) priv->accept = TRUE; - column_types[FILESCOL_ICON] = G_TYPE_STRING; + column_types[FILESCOL_ICON] = G_TYPE_ICON; column_types[FILESCOL_NAME] = G_TYPE_STRING; column_types[FILESCOL_SIZE] = G_TYPE_INT64; column_types[FILESCOL_PROGRESS] = G_TYPE_DOUBLE; column_types[FILESCOL_ID] = G_TYPE_INT; column_types[FILESCOL_WANTED] = G_TYPE_BOOLEAN; + //column_types[FILESCOL_WANTED_ICON] = G_TYPE_STRING; column_types[FILESCOL_PRIORITY] = G_TYPE_INT64; gtk_list_store_set_column_types(GTK_LIST_STORE(self), diff --git a/src/trg-files-tree-view.c b/src/trg-files-tree-view.c index 4b0d604..e6f0f88 100644 --- a/src/trg-files-tree-view.c +++ b/src/trg-files-tree-view.c @@ -52,8 +52,8 @@ static void set_unwanted_foreachfunc(GtkTreeModel * model, GtkTreeIter * iter, gpointer data G_GNUC_UNUSED) { - gtk_list_store_set(GTK_LIST_STORE(model), iter, FILESCOL_WANTED, - FALSE, FILESCOL_ICON, GTK_STOCK_CANCEL, -1); + gtk_list_store_set(GTK_LIST_STORE(model), iter, FILESCOL_WANTED, FALSE, + /* set wanted icon: FILESCOL_WANTED_ICON, GTK_STOCK_CANCEL,*/ -1); } static void set_wanted_foreachfunc(GtkTreeModel * model, @@ -61,8 +61,8 @@ static void set_wanted_foreachfunc(GtkTreeModel * model, GtkTreeIter * iter, gpointer data G_GNUC_UNUSED) { - gtk_list_store_set(GTK_LIST_STORE(model), iter, FILESCOL_WANTED, - TRUE, FILESCOL_ICON, GTK_STOCK_FILE, -1); + gtk_list_store_set(GTK_LIST_STORE(model), iter, FILESCOL_WANTED, TRUE, + /* set wanted icon: FILESCOL_WANTED_ICON, GTK_STOCK_APPLY,*/ -1); } static void set_priority_foreachfunc(GtkTreeModel * model, @@ -222,7 +222,7 @@ view_popup_menu(GtkWidget * treeview, GdkEventButton * event, gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new()); - menuitem = gtk_image_menu_item_new_with_label(GTK_STOCK_FILE); + menuitem = gtk_image_menu_item_new_with_label(GTK_STOCK_APPLY); gtk_image_menu_item_set_use_stock(GTK_IMAGE_MENU_ITEM(menuitem), TRUE); gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM (menuitem), TRUE); @@ -287,7 +287,7 @@ static void trg_files_tree_view_init(TrgFilesTreeView * self) trg_column_description *desc; desc = - trg_tree_view_reg_column(ttv, TRG_COLTYPE_STOCKICONTEXT, FILESCOL_NAME, + trg_tree_view_reg_column(ttv, TRG_COLTYPE_PIXBUFICONTEXT, FILESCOL_NAME, _("Name"), "name", 0); desc->model_column_icon = FILESCOL_ICON; desc->defaultWidth = 500; diff --git a/src/trg-torrent-add-dialog.c b/src/trg-torrent-add-dialog.c index 1b7be0b..2d034f8 100644 --- a/src/trg-torrent-add-dialog.c +++ b/src/trg-torrent-add-dialog.c @@ -712,23 +712,28 @@ static void trg_torrent_add_dialog_set_filenames(TrgTorrentAddDialog * d, if (nfiles == 1) { gchar *file_name = (gchar *) filenames->data; - gchar *file_name_base = g_path_get_basename(file_name); - trg_torrent_file *tor_data = trg_parse_torrent_file(file_name); - - if (file_name_base) { - gtk_button_set_label(chooser, file_name_base); - g_free(file_name_base); - } else { + if (is_url(file_name)) { gtk_button_set_label(chooser, file_name); - } - - if (!tor_data) { - torrent_not_parsed_warning(GTK_WINDOW(priv->parent)); gtk_widget_set_sensitive(priv->file_list, FALSE); + gtk_widget_set_sensitive(priv->delete_check, FALSE); } else { - store_add_node(priv->store, NULL, tor_data->top_node); - trg_torrent_file_free(tor_data); - gtk_widget_set_sensitive(priv->file_list, TRUE); + gchar *file_name_base = g_path_get_basename(file_name); + trg_torrent_file *tor_data = trg_parse_torrent_file(file_name); + + if (file_name_base) { + gtk_button_set_label(chooser, file_name_base); + g_free(file_name_base); + } else { + gtk_button_set_label(chooser, file_name); + } + + gtk_widget_set_sensitive(priv->file_list, tor_data != NULL); + if (!tor_data) { + torrent_not_parsed_warning(GTK_WINDOW(priv->parent)); + } else { + store_add_node(priv->store, NULL, tor_data->top_node); + trg_torrent_file_free(tor_data); + } } } else { gtk_widget_set_sensitive(priv->file_list, FALSE); diff --git a/src/trg-tree-view.c b/src/trg-tree-view.c index ae156dd..ede3989 100644 --- a/src/trg-tree-view.c +++ b/src/trg-tree-view.c @@ -342,7 +342,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv, column = trg_tree_view_icontext_column_new(desc, "stock-id"); break; case TRG_COLTYPE_PIXBUFICONTEXT: - column = trg_tree_view_icontext_column_new(desc, "pixbuf"); + column = trg_tree_view_icontext_column_new(desc, "gicon"); break; case TRG_COLTYPE_WANT: renderer = trg_cell_renderer_wanted_new(); @@ -33,6 +33,12 @@ #include "util.h" +gboolean is_url(gchar *string) +{ + //return g_regex_match_simple ("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?", string, 0, 0); + return g_regex_match_simple ("^http", string, 0, 0); +} + void add_file_id_to_array(JsonObject * args, gchar * key, gint index) { JsonArray *array; @@ -68,5 +68,6 @@ void trg_widget_set_visible(GtkWidget * w, gboolean visible); gdouble json_double_to_progress(JsonNode *n); gchar *trg_base64encode(const gchar *filename); GtkWidget *my_scrolledwin_new(GtkWidget * child); +gboolean is_url(gchar *string); #endif /* UTIL_H_ */ |