summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-03 07:46:12 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-03 07:46:12 +0000
commita9780439e066ea76d7b5aa6af66a8a539c59b0cf (patch)
tree5cbde63721e07e7498bf952ac25df2c92139207c
parent88499797cc64ae0e563ef978ca2e08f38c4a6051 (diff)
issue 145 - fix my broken regex which was causing filenames to be treated as URLs. issue 141 - patch for showing mime type icons in file list.
-rw-r--r--src/main.c6
-rw-r--r--src/requests.c2
-rw-r--r--src/trg-files-model.c24
-rw-r--r--src/trg-files-tree-view.c12
-rw-r--r--src/trg-torrent-add-dialog.c33
-rw-r--r--src/trg-tree-view.c2
-rw-r--r--src/util.c6
-rw-r--r--src/util.h1
8 files changed, 56 insertions, 30 deletions
diff --git a/src/main.c b/src/main.c
index 1afb37e..ec895f6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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();
diff --git a/src/util.c b/src/util.c
index df10d00..0d147bf 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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;
diff --git a/src/util.h b/src/util.h
index 9727476..3fdcedd 100644
--- a/src/util.h
+++ b/src/util.h
@@ -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_ */