configure.ac | 23 +- data/Makefile.am | 15 +- data/gwget.schemas.in | 402 --------------------------------- data/gwget.ui | 4 +- data/org.gwget.gschema.xml | 145 ++++++++++++ po/POTFILES.in | 1 - src/Makefile.am | 2 - src/custom-cell-renderer-progressbar.c | 4 +- src/gwget-application.c | 46 +--- src/gwget_data.c | 20 +- src/gwget_data.h | 3 +- src/main.c | 24 +- src/main_window.c | 291 +++++++++--------------- src/main_window.h | 9 +- src/main_window_cb.c | 137 ++++++----- src/new_window.c | 29 ++- src/systray.c | 29 +-- src/systray.h | 4 + src/utils.c | 7 +- src/wget-log.c | 7 +- 20 files changed, 423 insertions(+), 779 deletions(-) diff --git a/configure.ac b/configure.ac index 8ebee12..450001b 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_INIT(configure.ac) AM_INIT_AUTOMAKE(gwget, 1.0.4) AM_CONFIG_HEADER(config.h) -AC_PATH_PROG(GCONFTOOL, gconftool-2) +GLIB_GSETTINGS IT_PROG_INTLTOOL([0.35.0]) AC_ISC_POSIX @@ -12,17 +12,24 @@ AC_PROG_CC AC_STDC_HEADERS AM_PROG_LIBTOOL -AM_GCONF_SOURCE_2 +AC_ARG_ENABLE([gtk3], + [AC_HELP_STRING([--enable-gtk3], + [compile gwget against gtk+ 3.0 (default: yes)])], + [enable_gtk3="${enableval}"], + [enable_gtk3="yes"] +) + +if test x"$enable_gtk3" = x"yes"; then + GTK_API_VERSION="3.0" +else + GTK_API_VERSION="2.0" +fi -LIBGNOMEUI_REQUIRED=2.0.0 -LIBGNOME_REQUIRED=2.0.0 GTK_REQUIRED=2.6.0 -GCONF_REQUIRED=1.1.11 DBUS_GLIB_REQUIRED=0.33 GIO_REQUIRED=2.16.0 -PKG_CHECK_MODULES(GNOME, libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED - gtk+-2.0 >= $GTK_REQUIRED +PKG_CHECK_MODULES(GNOME, gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gmodule-2.0 gio-unix-2.0 >= $GIO_REQUIRED) @@ -282,7 +289,7 @@ AM_CONDITIONAL(ENABLE_EPIPHANY_EXTENSION, test "x$enable_epiphany_extension" = " # # Check for libnotify # -LIBNOTIFY_REQUIRED=0.2.2 +LIBNOTIFY_REQUIRED=0.7.0 AC_ARG_ENABLE(libnotify, AC_HELP_STRING([--disable-libnotify], [Disable libnotify support]),, diff --git a/data/Makefile.am b/data/Makefile.am index 381ec99..3feb349 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -16,10 +16,8 @@ service_DATA = $(service_in_files:.service.in=.service) $(service_DATA): $(service_in_files) Makefile @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ -schemasdir = $(GCONF_SCHEMA_FILE_DIR) -schemas_in_files = gwget.schemas.in -schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) -@INTLTOOL_SCHEMAS_RULE@ +gsettings_SCHEMAS = org.gwget.gschema.xml +@GSETTINGS_RULES@ desktopdir = $(datadir)/applications desktop_in_files = gwget.desktop.in.in @@ -30,17 +28,10 @@ desktop_DATA =$(desktop_in_files:.desktop.in.in=.desktop) @INTLTOOL_DESKTOP_RULE@ -if GCONF_SCHEMAS_INSTALL -install-data-local: - GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule gwget.schemas -else -install-data-local: -endif - EXTRA_DIST = $(gwget_data_DATA) \ $(service_in_files) \ $(desktop_in_files) \ - $(schemas_in_files) + $(gsettings_SCHEMAS) DISTCLEANFILES = \ $(desktop_DATA) diff --git a/data/gwget.schemas.in b/data/gwget.schemas.in deleted file mode 100644 index 538f6d6..0000000 --- a/data/gwget.schemas.in +++ /dev/null @@ -1,402 +0,0 @@ - - - - - /schemas/apps/gwget2/convert_links - /apps/gwget2/convert_links - gwget - bool - false - - Convert Links - Convert to relative links in recursive mode. - - - - - /schemas/apps/gwget2/default_height - /apps/gwget2/default_height - gwget - int - 200 - - - - - - - - /schemas/apps/gwget2/default_width - /apps/gwget2/default_width - gwget - int - 250 - - - - - - - - /schemas/apps/gwget2/dl_page_requisites - /apps/gwget2/dl_page_requisites - gwget - bool - false - - Download Page Requisites - - - - - - /schemas/apps/gwget2/download_dir - /apps/gwget2/download_dir - gwget - string - - - Default Download Directory - - - - - - /schemas/apps/gwget2/ask_save_each_dl - /apps/gwget2/ask_save_each_dl - gwget - bool - true - - Ask where to save each new download - If true, always ask for a destination folder when starting a new download. If false, always save in the default directory without asking the user. - - - - - - /schemas/apps/gwget2/follow_relative - /apps/gwget2/follow_relative - gwget - bool - false - - Follow relative links - - - - - - /schemas/apps/gwget2/limit_speed - /apps/gwget2/limit_speed - gwget - bool - false - - Limit maximum speed - - - - - - /schemas/apps/gwget2/limit_simultaneousdownloads - /apps/gwget2/limit_simultaneousdownloads - gwget - bool - false - - Limit number of simultaneous downloads - - - - - - /schemas/apps/gwget2/max_depth - /apps/gwget2/max_depth - gwget - int - 0 - - Maximum depth in recursive mode - - - - - - /schemas/apps/gwget2/max_speed - /apps/gwget2/max_speed - gwget - int - 0 - - Maximum speed limit - - - - - - /schemas/apps/gwget2/max_simultaneousdownloads - /apps/gwget2/max_simultaneousdownloads - gwget - int - 0 - - Maximum number of simultaneous downloads - - - - - - /schemas/apps/gwget2/n_downloads - /apps/gwget2/n_downloads - gwget - int - 0 - - Number of downloads - - - - - - /schemas/apps/gwget2/no_create_directories - /apps/gwget2/no_create_directories - gwget - bool - false - - - - - - - - /schemas/apps/gwget2/num_retrys - /apps/gwget2/num_retrys - gwget - int - 3 - - Number of retries - - - - - - /schemas/apps/gwget2/position_x - /apps/gwget2/position_x - gwget - int - 0 - - - - - - - - /schemas/apps/gwget2/position_y - /apps/gwget2/position_y - gwget - int - 0 - - - - - - - - /schemas/apps/gwget2/resume_at_start - /apps/gwget2/resume_at_start - gwget - bool - false - - Resume downloads at startup - - - - - - /schemas/apps/gwget2/open_after_dl - /apps/gwget2/open_after_dl - gwget - bool - false - - Open the file after download - - - - - - /schemas/apps/gwget2/view_actual_size - /apps/gwget2/view_actual_size - gwget - bool - true - - - - - - - - /schemas/apps/gwget2/view_down_speed - /apps/gwget2/view_down_speed - gwget - bool - true - - View download speed column - - - - - - /schemas/apps/gwget2/view_elapse_time - /apps/gwget2/view_elapse_time - gwget - bool - false - - View elapsed time column - - - - - - /schemas/apps/gwget2/view_percentage - /apps/gwget2/view_percentage - gwget - bool - true - - View percentage column - - - - - - /schemas/apps/gwget2/view_rem_time - /apps/gwget2/view_rem_time - gwget - bool - true - - View remaining time column - - - - - - /schemas/apps/gwget2/view_toolbar - /apps/gwget2/view_toolbar - gwget - bool - true - - View toolbar - Whether to display the toolbar. - - - - - /schemas/apps/gwget2/view_statusbar - /apps/gwget2/view_statusbar - gwget - bool - true - - View statusbar - Whether to display the statusbar. - - - - - /schemas/apps/gwget2/view_total_size - /apps/gwget2/view_total_size - gwget - bool - true - - View total size column - - - - - - /schemas/apps/gwget2/network_mode - /apps/gwget2/network_mode - gwget - string - direct - - - - - - - - /schemas/apps/gwget2/http_proxy - /apps/gwget2/http_proxy - gwget - string - - - - - - - - - /schemas/apps/gwget2/http_proxy_port - /apps/gwget2/http_proxy_port - gwget - int - 8080 - - - - - - - - /schemas/apps/gwget2/proxy_uses_auth - /apps/gwget2/proxy_uses_auth - gwget - bool - false - - - - - - - - /schemas/apps/gwget2/proxy_user - /apps/gwget2/proxy_user - gwget - string - - - - - - - - - /schemas/apps/gwget2/proxy_password - /apps/gwget2/proxy_password - gwget - string - - - - - - - - - diff --git a/data/gwget.ui b/data/gwget.ui index 532be2c..b37062e 100644 --- a/data/gwget.ui +++ b/data/gwget.ui @@ -424,7 +424,6 @@ False center-on-parent normal - False True @@ -908,8 +907,9 @@ True 6 - + True + True 0 diff --git a/data/org.gwget.gschema.xml b/data/org.gwget.gschema.xml new file mode 100644 index 0000000..25d0821 --- /dev/null +++ b/data/org.gwget.gschema.xml @@ -0,0 +1,145 @@ + + + + false + Convert Links + Convert to relative links in recursive mode. + + + 200 + + + 250 + + + false + Download Page Requisites + + + '' + Default Download Directory + + + true + Ask where to save each new download + If true, always ask for a destination folder when starting a new download. If false, always save in the default directory without asking the user. + + + false + Follow relative links + + + false + Limit maximum speed + + + false + Limit number of simultaneous downloads + + + 0 + Maximum depth in recursive mode + + + 0 + Maximum speed limit + + + 0 + Maximum number of simultaneous downloads + + + 0 + Number of downloads + + + false + + + 3 + Number of retries + + + 0 + + + 0 + + + false + Resume downloads at startup + + + false + Open the file after download + + + true + + + true + View download speed column + + + false + View elapsed time column + + + true + View percentage column + + + true + View remaining time column + + + true + View toolbar + Whether to display the toolbar. + + + true + View statusbar + Whether to display the statusbar. + + + true + View total size column + + + 'direct' + + + '' + + + 8080 + + + false + + + '' + + + '' + + + + + '' + + + '' + + + '' + + + 0 + + + '' + + + diff --git a/po/POTFILES.in b/po/POTFILES.in index 1b1a563..fdaf984 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -6,7 +6,6 @@ data/gwget.schemas.in [type: gettext/glade]data/gwget.ui [type: gettext/glade]data/preferences.ui epiphany-extension/gwget.xml.in.in -src/custom-cell-renderer-progressbar.c src/gwget_data.c src/main.c src/main_window.c diff --git a/src/Makefile.am b/src/Makefile.am index a610cd9..e0996af 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -35,8 +35,6 @@ gwget_SOURCES = \ wget-log.h\ utils.c\ utils.h\ - custom-cell-renderer-progressbar.c\ - custom-cell-renderer-progressbar.h\ new_window.c\ new_window.h\ systray.c \ diff --git a/src/custom-cell-renderer-progressbar.c b/src/custom-cell-renderer-progressbar.c index 5510e45..9df9929 100644 --- a/src/custom-cell-renderer-progressbar.c +++ b/src/custom-cell-renderer-progressbar.c @@ -19,8 +19,8 @@ #include #include -#include -/* #include */ +#include +#include #include "custom-cell-renderer-progressbar.h" diff --git a/src/gwget-application.c b/src/gwget-application.c index 22096e1..706d68f 100644 --- a/src/gwget-application.c +++ b/src/gwget-application.c @@ -20,8 +20,6 @@ #include "gwget-application.h" -#include - #ifdef ENABLE_DBUS #include "gwget-application-service.h" #include @@ -85,39 +83,6 @@ gwget_application_register_service (GwgetApplication *application) #endif /* ENABLE_DBUS */ -static gint -save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style, gint shutdown, - GnomeInteractStyle interact_style, gint fast, GwgetApplication *application) -{ - char **restart_argv; - int argc = 0; - - restart_argv = g_new (char *, 1); - restart_argv[0] = g_strdup ("gwget"); - gnome_client_set_restart_command (client, argc, restart_argv); - - return TRUE; -} - -static void -removed_from_session (GnomeClient *client, GwgetApplication *application) -{ - gwget_application_shutdown (application); -} - -static void -init_session (GwgetApplication *application) -{ - GnomeClient *client; - - client = gnome_master_client (); - - g_signal_connect (client, "save_yourself", - G_CALLBACK (save_session), application); - g_signal_connect (client, "die", - G_CALLBACK (removed_from_session), application); -} - gboolean gwget_application_open_window (GwgetApplication *application, guint32 timestamp, @@ -137,8 +102,9 @@ gwget_application_open_uri (GwgetApplication *application, gwgetdata = gwget_data_new ((gchar *)url); - gwget_data_add_download(gwgetdata); - gwget_data_start_download(gwgetdata); + if (gwget_data_add_download(gwgetdata)) { + gwget_data_start_download(gwgetdata); + } return TRUE; } @@ -160,8 +126,9 @@ gwget_application_open_uri_with_dest (GwgetApplication *application, gwgetdata->dir = gwget_pref.download_dir; } - gwget_data_add_download(gwgetdata); - gwget_data_start_download(gwgetdata); + if (gwget_data_add_download(gwgetdata)) { + gwget_data_start_download(gwgetdata); + } return TRUE; } @@ -198,7 +165,6 @@ gwget_application_class_init (GwgetApplicationClass *gwget_application_class) static void gwget_application_init (GwgetApplication *gwget_application) { - init_session (gwget_application); } diff --git a/src/gwget_data.c b/src/gwget_data.c index 47f3958..db972cd 100644 --- a/src/gwget_data.c +++ b/src/gwget_data.c @@ -493,13 +493,13 @@ gwget_data_start_download(GwgetData *gwgetdata) gwgetdata->log_fd = pipe_fd[0]; fcntl (gwgetdata->log_fd, F_SETFL, O_NONBLOCK); - gwgetdata->log_tag = gtk_timeout_add (1000, - (GtkFunction) gwget_data_process_information, + gwgetdata->log_tag = g_timeout_add (1000, + (GSourceFunc)gwget_data_process_information, gwgetdata); } /* - * Update download list in gconf + * Update download list in gsettings */ gwget_remember_downloads(); } @@ -542,7 +542,12 @@ gwget_data_create(gchar *url, gchar *dir) if (length == 0) { dir = gwget_pref.download_dir; } - + + length = strlen (dir); + if (length == 0) { + dir = g_get_home_dir(); + } + /* Add a trailing '/' unless already present */ length = strlen (dir); if (dir[length - 1] == '/') @@ -623,7 +628,7 @@ void gwget_data_stop_download(GwgetData *data) kill (data->wget_pid, SIGKILL); /* Remove callback that communicates with wget */ - gtk_timeout_remove (data->log_tag); + g_source_remove (data->log_tag); /* Wait the finish of wget */ child_pid = waitpid (data->wget_pid, &status, WUNTRACED); @@ -684,7 +689,7 @@ gwget_data_set_filename_from_url(GwgetData *gwgetdata,gchar *url) } /* Add a gwgetdata to the main window */ -void +gboolean gwget_data_add_download(GwgetData *gwgetdata) { gint response; @@ -694,7 +699,7 @@ gwget_data_add_download(GwgetData *gwgetdata) if (check_url_already_exists(gwgetdata->url)) { run_dialog_information(_("Unable to add this download"), _("This download is already added")); - return; + return FALSE; } /* if the url it's not a file drop a dialog to recurse into the url */ @@ -730,6 +735,7 @@ gwget_data_add_download(GwgetData *gwgetdata) downloads = g_list_append(downloads,gwgetdata); new_download(gwgetdata); gwget_data_set_state(gwgetdata,DL_NOT_CONNECTED); + return TRUE; } void diff --git a/src/gwget_data.h b/src/gwget_data.h index 400f335..5a58c8d 100644 --- a/src/gwget_data.h +++ b/src/gwget_data.h @@ -50,7 +50,6 @@ typedef struct gboolean view_down_speed; gboolean view_toolbar; gboolean view_statusbar; - gboolean view_file_type; gboolean docked; gboolean limit_speed; gboolean limit_simultaneousdownloads; @@ -125,7 +124,7 @@ GwgetData* gwget_data_get_selected(void); void gwget_data_free(gpointer data); void gwget_data_stop_download(GwgetData *data); void gwget_data_set_filename_from_url(GwgetData *gwgetdata, gchar *url); -void gwget_data_add_download(GwgetData *gwgetdata); +gboolean gwget_data_add_download(GwgetData *gwgetdata); void gwget_data_exec(GwgetData *gwgetdata); void gwget_data_set_menus (GwgetData *gwgetdata); void gwget_data_set_popupmenu (GwgetData *gwgetdata); diff --git a/src/main.c b/src/main.c index f075140..dbe9f6f 100644 --- a/src/main.c +++ b/src/main.c @@ -16,11 +16,12 @@ #include -#include +#include +#include +#include +#include #include -#include #include -#include #include #include "main_window_cb.h" @@ -191,8 +192,9 @@ load_urls (const char **urls) if (destination_dir) { gwgetdata->dir = destination_dir; } - gwget_data_add_download(gwgetdata); - gwget_data_start_download(gwgetdata); + if (gwget_data_add_download(gwgetdata)) { + gwget_data_start_download(gwgetdata); + } g_object_unref (file); } } @@ -200,7 +202,6 @@ load_urls (const char **urls) int main(int argc,char *argv[]) { - GnomeProgram *program; GOptionContext *context; context = g_option_context_new (_("Gwget Download Manager")); @@ -219,12 +220,7 @@ int main(int argc,char *argv[]) gwget_init_pref(&gwget_pref); - program = gnome_program_init(PACKAGE, VERSION, - LIBGNOMEUI_MODULE, argc, argv, - GNOME_PARAM_GOPTION_CONTEXT, context, - GNOME_PARAM_HUMAN_READABLE_NAME, _("Gwget"), - GNOME_PARAM_APP_DATADIR, GNOME_GWGET_LOCALEDIR, - NULL); + gtk_init (&argc, &argv); #ifdef ENABLE_DBUS if (!gwget_application_register_service (GWGET_APP)) { @@ -242,9 +238,5 @@ int main(int argc,char *argv[]) gtk_main(); - gnome_accelerators_sync (); - - g_object_unref (program); - return (0); } diff --git a/src/main_window.c b/src/main_window.c index 13a1a70..72c69a8 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -14,8 +14,9 @@ */ #include -#include -#include +#include +#include +#include #include #include #include @@ -24,7 +25,6 @@ #include "main_window.h" #include "main_window_cb.h" #include "gwget_data.h" -#include "custom-cell-renderer-progressbar.h" #include "utils.h" #include "systray.h" #include "new_window.h" @@ -40,12 +40,6 @@ show_prefered_columns(void); static gboolean gwget_destination_file_exists(GwgetData *data); -static void -gwget_gconf_notify_toolbar(GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data); - static gboolean view_selection_func (GtkTreeSelection *selection, GtkTreeModel *model, @@ -57,7 +51,7 @@ void main_window(void) { GtkWidget * window = NULL; - gchar *builder_file = NULL,*toolbar_setting; + gchar *builder_file = NULL; GtkWidget *treev,*toolbar,*menu_item, *combo; GtkTreeSelection *select; GError* error = NULL; @@ -82,7 +76,7 @@ main_window(void) gtk_tree_selection_set_select_function(select, view_selection_func, NULL, NULL); /* - * Update window size in gconf on resize + * Update window size in gsettings on resize */ g_signal_connect(GTK_WIDGET(window), "configure-event", @@ -92,14 +86,10 @@ main_window(void) /* add the columns titles to the tree view */ add_columns (GTK_TREE_VIEW (treev)); - gconf_client = gconf_client_get_default(); - gconf_client_add_dir (gconf_client, - "/apps/gwget2", - GCONF_CLIENT_PRELOAD_NONE, - NULL); + settings = g_settings_new("org.gwget"); /* gwget_pref.download_dir=NULL; */ - gwget_get_defaults_from_gconf(); + gwget_get_defaults_from_gsettings(); /* Drag and drop set up */ gtk_drag_dest_set(GTK_WIDGET(window), @@ -113,34 +103,6 @@ main_window(void) G_CALLBACK(on_gwget_drag_received), GUINT_TO_POINTER(dnd_type)); - /* Set the toolbar like gnome preferences */ - toolbar = GTK_WIDGET (gtk_builder_get_object(builder,"toolbar1")); - toolbar_setting = gconf_client_get_string(gconf_client,"/desktop/gnome/interface/toolbar_style",NULL); - - if (!strcmp(toolbar_setting,"icons")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_ICONS); - } - - if (!strcmp(toolbar_setting,"both")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_BOTH); - } - - if (!strcmp(toolbar_setting,"both-horiz")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_BOTH_HORIZ); - } - - if (!strcmp(toolbar_setting,"text")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_TEXT); - } - - /* Listen to changes to the key. */ - gconf_client_notify_add (gconf_client, - "/desktop/gnome/interface/toolbar_style", - gwget_gconf_notify_toolbar, - NULL, - NULL, - NULL); - /* Show the toolbar ? */ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM (gtk_builder_get_object(builder,"view_toolbar")),gwget_pref.view_toolbar); toolbar = GTK_WIDGET (gtk_builder_get_object(builder,"toolbar1")); @@ -181,8 +143,8 @@ main_window(void) save_in_model = (GtkTreeModel*)gtk_list_store_new (1, G_TYPE_STRING); combo = GTK_WIDGET (gtk_builder_get_object (builder, "save_in_comboboxentry")); gtk_combo_box_set_model(GTK_COMBO_BOX(combo), save_in_model); - gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY(combo), 0); - gtk_entry_set_text(GTK_ENTRY(GTK_BIN(combo)->child), gwget_pref.download_dir); + gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX(combo), 0); + gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo))), gwget_pref.download_dir); } @@ -224,90 +186,91 @@ gwget_destination_file_exists(GwgetData *data) void -gwget_get_defaults_from_gconf(void) +gwget_get_defaults_from_gsettings(void) { gint num_dl, i; gint64 total_size; GwgetData *data; - gchar *key,*url,*dir,*name; + gchar *path,*url,*dir,*name; DlState state; gint default_width, default_height; - GError *error = NULL; - - gwget_pref.http_proxy=gconf_client_get_string(gconf_client,"/apps/gwget2/http_proxy",NULL); - gwget_pref.http_proxy_port=gconf_client_get_int(gconf_client,"/apps/gwget2/http_proxy_port",NULL); - gwget_pref.proxy_uses_auth=gconf_client_get_bool(gconf_client,"/apps/gwget2/proxy_uses_auth",NULL); - gwget_pref.proxy_user=gconf_client_get_string(gconf_client,"/apps/gwget2/proxy_user",NULL); - gwget_pref.proxy_password=gconf_client_get_string(gconf_client,"/apps/gwget2/proxy_password",NULL); - - gwget_pref.gnome_http_proxy=gconf_client_get_string(gconf_client,"/system/http_proxy/host",NULL); - gwget_pref.gnome_http_proxy_port=gconf_client_get_int(gconf_client,"/system/http_proxy/port",NULL); - gwget_pref.gnome_proxy_uses_auth=gconf_client_get_bool(gconf_client,"/system/http_proxy/use_authentication",NULL); - gwget_pref.gnome_proxy_user=gconf_client_get_string(gconf_client,"/system/http_proxy/authentication_user",NULL); - gwget_pref.gnome_proxy_password=gconf_client_get_string(gconf_client,"/system/http_proxy/authentication_password",NULL); - gwget_pref.gnome_use_proxy=gconf_client_get_bool(gconf_client,"/system/http_proxy/use_http_proxy",NULL); - - gwget_pref.network_mode=gconf_client_get_string(gconf_client,"/apps/gwget2/network_mode",NULL); - gwget_pref.download_dir=gconf_client_get_string(gconf_client,"/apps/gwget2/download_dir",NULL); - gwget_pref.num_retries=gconf_client_get_int(gconf_client,"/apps/gwget2/num_retries",NULL); - gwget_pref.resume_at_start=gconf_client_get_bool(gconf_client,"/apps/gwget2/resume_at_start",NULL); - gwget_pref.open_after_dl=gconf_client_get_bool(gconf_client,"/apps/gwget2/open_after_dl",NULL); - gwget_pref.no_create_directories=gconf_client_get_bool(gconf_client,"/apps/gwget2/no_create_directories",NULL); - gwget_pref.follow_relative=gconf_client_get_bool(gconf_client,"/apps/gwget2/follow_relative",NULL); - gwget_pref.convert_links = gconf_client_get_bool(gconf_client,"/apps/gwget2/convert_links",NULL); - gwget_pref.dl_page_requisites = gconf_client_get_bool(gconf_client,"/apps/gwget2/dl_page_requisites",NULL); - gwget_pref.max_depth=gconf_client_get_int(gconf_client,"/apps/gwget2/max_depth",NULL); - gwget_pref.view_actual_size=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_actual_size",NULL); - gwget_pref.view_total_size=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_total_size",NULL); - gwget_pref.view_percentage=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_percentage",NULL); - gwget_pref.view_elapse_time=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_elapse_time",NULL); - gwget_pref.view_down_speed=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_down_speed",NULL); - gwget_pref.view_toolbar=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_toolbar",NULL); - gwget_pref.view_statusbar=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_statusbar",NULL); - gwget_pref.view_file_type=gconf_client_get_bool(gconf_client,"/apps/gwget2/view_file_type",NULL); - gwget_pref.limit_speed = gconf_client_get_bool (gconf_client,"/apps/gwget2/limit_speed", NULL); - gwget_pref.max_speed=gconf_client_get_int(gconf_client,"/apps/gwget2/max_speed",NULL); - gwget_pref.limit_simultaneousdownloads = gconf_client_get_bool (gconf_client,"/apps/gwget2/limit_simultaneousdownloads", NULL); - gwget_pref.max_simultaneousdownloads=gconf_client_get_int(gconf_client,"/apps/gwget2/max_simultaneousdownloads",NULL); - gwget_pref.ask_save_each_dl = gconf_client_get_bool (gconf_client,"/apps/gwget2/ask_save_each_dl", NULL); + GSettingsSchemaSource *schema_source; + GSettingsSchema *http_proxy_schema; + GSettings *http_proxy_settings,*download_settings; + + gwget_pref.http_proxy=g_settings_get_string(settings,"http-proxy"); + gwget_pref.http_proxy_port=g_settings_get_int(settings,"http-proxy-port"); + gwget_pref.proxy_uses_auth=g_settings_get_boolean(settings,"proxy-uses-auth"); + gwget_pref.proxy_user=g_settings_get_string(settings,"proxy-user"); + gwget_pref.proxy_password=g_settings_get_string(settings,"proxy-password"); + + schema_source=g_settings_schema_source_get_default(); + http_proxy_schema=g_settings_schema_source_lookup(schema_source,"org.gnome.system.proxy.http",FALSE); + + if (http_proxy_schema != NULL) { + http_proxy_settings=g_settings_new("org.gnome.system.proxy.http"); + gwget_pref.gnome_http_proxy=g_settings_get_string(http_proxy_settings,"host"); + gwget_pref.gnome_http_proxy_port=g_settings_get_int(http_proxy_settings,"port"); + gwget_pref.gnome_proxy_uses_auth=g_settings_get_boolean(http_proxy_settings,"use-authentication"); + gwget_pref.gnome_proxy_user=g_settings_get_string(http_proxy_settings,"authentication-user"); + gwget_pref.gnome_proxy_password=g_settings_get_string(http_proxy_settings,"authentication-password"); + gwget_pref.gnome_use_proxy=g_settings_get_boolean(http_proxy_settings,"enabled"); + g_settings_schema_unref(http_proxy_schema); + } + + gwget_pref.network_mode=g_settings_get_string(settings,"network-mode"); + gwget_pref.download_dir=g_settings_get_string(settings,"download-dir"); + gwget_pref.num_retries=g_settings_get_int(settings,"num-retries"); + gwget_pref.resume_at_start=g_settings_get_boolean(settings,"resume-at-start"); + gwget_pref.open_after_dl=g_settings_get_boolean(settings,"open-after-dl"); + gwget_pref.no_create_directories=g_settings_get_boolean(settings,"no-create-directories"); + gwget_pref.follow_relative=g_settings_get_boolean(settings,"follow-relative"); + gwget_pref.convert_links = g_settings_get_boolean(settings,"convert-links"); + gwget_pref.dl_page_requisites = g_settings_get_boolean(settings,"dl-page-requisites"); + gwget_pref.max_depth=g_settings_get_int(settings,"max-depth"); + gwget_pref.view_actual_size=g_settings_get_boolean(settings,"view-actual-size"); + gwget_pref.view_total_size=g_settings_get_boolean(settings,"view-total-size"); + gwget_pref.view_percentage=g_settings_get_boolean(settings,"view-percentage"); + gwget_pref.view_elapse_time=g_settings_get_boolean(settings,"view-elapse-time"); + gwget_pref.view_down_speed=g_settings_get_boolean(settings,"view-down-speed"); + gwget_pref.view_toolbar=g_settings_get_boolean(settings,"view-toolbar"); + gwget_pref.view_statusbar=g_settings_get_boolean(settings,"view-statusbar"); + gwget_pref.limit_speed = g_settings_get_boolean(settings,"limit-speed"); + gwget_pref.max_speed=g_settings_get_int(settings,"max-speed"); + gwget_pref.limit_simultaneousdownloads = g_settings_get_boolean(settings,"limit-simultaneousdownloads"); + gwget_pref.max_simultaneousdownloads=g_settings_get_int(settings,"max-simultaneousdownloads"); + gwget_pref.ask_save_each_dl = g_settings_get_boolean(settings,"ask-save-each-dl"); if (!gwget_pref.download_dir) { gwget_pref.download_dir = g_strdup(g_get_home_dir()); - gconf_client_set_string (gconf_client, "/apps/gwget2/download_dir", g_strdup(g_get_home_dir()), NULL); + g_settings_set_string (settings, "download-dir", g_strdup(g_get_home_dir())); } if (!gwget_pref.network_mode) { gwget_pref.network_mode = g_strdup("direct"); - gconf_client_set_string (gconf_client, "/apps/gwget2/network_mode", "direct", NULL); + g_settings_set_string (settings, "network-mode", "direct"); } /* Put in the list of save_in_paths (used by new dialog window) the initial download directory */ save_in_paths = g_list_append (save_in_paths, gwget_pref.download_dir); - num_dl=gconf_client_get_int(gconf_client,"/apps/gwget2/n_downloads",NULL); + num_dl=g_settings_get_int(settings,"n-downloads"); for (i=0;istate!=DL_COMPLETED) { gwget_data_start_download(data); @@ -347,21 +312,21 @@ gwget_get_defaults_from_gconf(void) } } /* - * We may have altered the download list so we sync gconf + * We may have altered the download list so we sync gsettings */ gwget_remember_downloads(); show_prefered_columns(); /* Default width and height */ - default_width=gconf_client_get_int (gconf_client,"/apps/gwget2/default_width",NULL); - default_height=gconf_client_get_int (gconf_client,"/apps/gwget2/default_height",NULL); + default_width=g_settings_get_int (settings,"default-width"); + default_height=g_settings_get_int (settings,"default-height"); gtk_window_resize (GTK_WINDOW (gtk_builder_get_object(builder,"main_window")),default_width,default_height); /* Default position */ gtk_window_move(GTK_WINDOW(GTK_WIDGET (gtk_builder_get_object(builder,"main_window"))), - gconf_client_get_int (gconf_client,"/apps/gwget2/position_x",NULL), - gconf_client_get_int (gconf_client,"/apps/gwget2/position_y",NULL) + g_settings_get_int (settings,"position-x"), + g_settings_get_int (settings,"position-y") ); } @@ -484,7 +449,7 @@ add_columns (GtkTreeView *treeview) gtk_tree_view_append_column (treeview, column); /* Percentage */ - renderer = ephy_cell_renderer_progress_new(); + renderer = gtk_cell_renderer_progress_new(); column = gtk_tree_view_column_new_with_attributes (_("Percentage"), renderer, "value", @@ -553,7 +518,7 @@ on_gwget_drag_received (GtkWidget * widget, GdkDragContext * context, int x, drop_ok = FALSE; if (dnd_type==TARGET_URI_LIST) { - uris = g_uri_list_extract_uris ((gchar *)seldata->data); + uris = g_uri_list_extract_uris ((gchar *)gtk_selection_data_get_data(seldata)); for (i=0; uris[i] != NULL; i++) { files = g_list_prepend (files, uris[i]); } @@ -561,7 +526,7 @@ on_gwget_drag_received (GtkWidget * widget, GdkDragContext * context, int x, file = g_list_first(files)->data; drop_ok = TRUE; } else if (dnd_type==TARGET_NETSCAPE_URL) { - file=((gchar *) (seldata->data)); + file=((gchar *) (gtk_selection_data_get_data(seldata))); drop_ok = TRUE; } else { gtk_drag_finish(context, FALSE, TRUE, time); @@ -581,40 +546,6 @@ on_gwget_drag_received (GtkWidget * widget, GdkDragContext * context, int x, } } -static void -gwget_gconf_notify_toolbar(GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data) -{ - GConfValue *value; - GtkWidget *toolbar; - gchar *toolbar_setting; - - value = gconf_entry_get_value (entry); - - toolbar = GTK_WIDGET (gtk_builder_get_object(builder,"toolbar1")); - toolbar_setting = (gchar *)gconf_value_get_string(value); - - if (!strcmp(toolbar_setting,"icons")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_ICONS); - } - - if (!strcmp(toolbar_setting,"both")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_BOTH); - } - - if (!strcmp(toolbar_setting,"both-horiz")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_BOTH_HORIZ); - } - - if (!strcmp(toolbar_setting,"text")) { - gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_TEXT); - } - - g_free(toolbar_setting); -} - static void show_prefered_columns(void) { @@ -723,25 +654,23 @@ gboolean gwget_remember_window_size_and_position(void) { GtkWidget *main_window; - GtkAllocation *allocation; + GtkAllocation allocation; gint position_x,position_y; - GConfChangeSet *cs; - /* Remember the size of the window */ main_window=GTK_WIDGET (gtk_builder_get_object(builder,"main_window")); - allocation= &(GTK_WIDGET (main_window)->allocation); - cs = gconf_change_set_new (); - gconf_change_set_set_int (cs, "/apps/gwget2/default_height", allocation->height); - gconf_change_set_set_int (cs, "/apps/gwget2/default_width", allocation->width); + + if (!gtk_widget_get_visible(main_window)) + return FALSE; + + /* Remember the size of the window */ + gtk_widget_get_allocation (main_window, &allocation); + g_settings_set_int (settings, "default-height", allocation.height); + g_settings_set_int (settings, "default-width", allocation.width); /* Remember the position */ gtk_window_get_position(GTK_WINDOW(main_window), &position_x, &position_y); - gconf_change_set_set_int (cs, "/apps/gwget2/position_x", position_x); - gconf_change_set_set_int (cs, "/apps/gwget2/position_y", position_y); - - gconf_client_commit_change_set (gconf_client, cs, TRUE, NULL); - - gconf_change_set_unref (cs); + g_settings_set_int (settings, "position-x", position_x); + g_settings_set_int (settings, "position-y", position_y); return FALSE; } @@ -752,48 +681,40 @@ gwget_remember_window_size_and_position(void) gboolean gwget_remember_downloads(void) { - gchar *url,*key; + gchar *url,*path; GwgetData *gwgetdata; GtkTreeIter iter; gint i,length; gboolean running = FALSE; gchar down_size[2048]; + GSettings *download_settings; /* calculate the number of items in the treeview */ length=gtk_tree_model_iter_n_children(GTK_TREE_MODEL(model),NULL); /* Save the number of current downloads in the treev */ /* When load again we can known the number of directories to load */ - gconf_client_set_int(gconf_client,"/apps/gwget2/n_downloads",length,NULL); + g_settings_set_int(settings,"n-downloads",length); - gtk_tree_model_get_iter_root(model,&iter); - /* Save current downloads in GConf */ + gtk_tree_model_get_iter_first(model,&iter); + /* Save current downloads in GSettings */ /* Calculate if there are any dl in retriving state */ for (i=0;iurl,NULL); - - key=g_strdup_printf("/apps/gwget2/downloads_data/%d/filename",i); - gconf_client_set_string(gconf_client,key,gwgetdata->filename,NULL); - - key=g_strdup_printf("/apps/gwget2/downloads_data/%d/dir",i); - gconf_client_set_string(gconf_client,key,gwgetdata->dir,NULL); - - key=g_strdup_printf("/apps/gwget2/downloads_data/%d/state",i); - gconf_client_set_int(gconf_client,key,gwgetdata->state,NULL); + path=g_strdup_printf("/org/gwget2/downloads-data/%d/",i); + download_settings = g_settings_new_with_path("org.gwget.download", path); + + g_settings_set_string(download_settings,"url",gwgetdata->url); + g_settings_set_string(download_settings,"filename",gwgetdata->filename); + g_settings_set_string(download_settings,"dir",gwgetdata->dir); + g_settings_set_int(download_settings,"state",gwgetdata->state); - key=g_strdup_printf ("/apps/gwget2/downloads_data/%d/file_size",i); - g_snprintf(down_size,2047, "%" G_GINT64_FORMAT,gwgetdata->total_size); - gconf_client_set_string (gconf_client,key,down_size,NULL); + g_settings_set_string(download_settings,"file-size",down_size); + + g_object_unref (download_settings); if (gwgetdata->log_tag != -1) { @@ -819,9 +740,11 @@ gwget_quit(void) _("There is at least one active download left. Really cancel all running transfers?"), _("No"), _("Yes")); if (response == GTK_RESPONSE_OK) { stop_all_downloads(); + g_settings_sync(); gtk_main_quit(); } } else { + g_settings_sync(); gtk_main_quit(); } } diff --git a/src/main_window.h b/src/main_window.h index 6b1e3fd..5600d6e 100644 --- a/src/main_window.h +++ b/src/main_window.h @@ -16,7 +16,6 @@ #ifndef _MAIN_WINDOW_H #define _MAIN_WINDOW_H -#include #include enum { @@ -69,8 +68,8 @@ GtkBuilder *builder_new; /* declared here for be used to add by main_window_cb */ GtkTreeModel *model; -/* GConf Client */ -GConfClient *gconf_client; +/* GSettings */ +GSettings *settings; /* List of all current downloads */ GList *downloads; @@ -80,7 +79,7 @@ GtkStatusIcon *tray_icon; /* XML for the preferences gui */ /* It's here because we must load it from main_window.c to put */ -/* the options of the column list from Gconf on load */ +/* the options of the column list from GSettings on load */ GtkBuilder *builder_pref; /* List of introduced path in save in dialogs */ @@ -93,7 +92,7 @@ void main_window(void); void on_main_window_delete_event(GtkWidget *widget, gpointer data); GtkTreeModel* create_model(void); void add_columns (GtkTreeView *treeview); -void gwget_get_defaults_from_gconf(void); +void gwget_get_defaults_from_gsettings(void); /* Drag received callback */ void on_gwget_drag_received(GtkWidget * widget, GdkDragContext * context, int x, int y, GtkSelectionData * seldata, guint info, diff --git a/src/main_window_cb.c b/src/main_window_cb.c index 917ce76..e57c7d3 100644 --- a/src/main_window_cb.c +++ b/src/main_window_cb.c @@ -14,8 +14,9 @@ */ #include -#include -#include +#include +#include +#include #include #include "main_window.h" @@ -125,7 +126,7 @@ stop_all_downloads(void) gchar *url; length=gtk_tree_model_iter_n_children(GTK_TREE_MODEL(model),NULL); - gtk_tree_model_get_iter_root(model,&iter); + gtk_tree_model_get_iter_first(model,&iter); for (i=0;irecursive) { content_type = g_content_type_guess (gwgetdata->local_filename, NULL, 0, NULL); - gwgetdata->icon_name = gnome_icon_lookup (theme, NULL, NULL, NULL, NULL, - content_type, GNOME_ICON_LOOKUP_FLAGS_NONE, NULL); + icon = g_content_type_get_icon (content_type); + icon_names = g_themed_icon_get_names (G_THEMED_ICON (icon)); + for (i=0; i < g_strv_length ((gchar **)icon_names); i++) { + if (gtk_icon_theme_has_icon (theme, icon_names[i])) { + gwgetdata->icon_name = g_strdup (icon_names[i]); + break; + } + } + if (gwgetdata->icon_name == NULL) { + gwgetdata->icon_name = g_strdup("text-x-generic"); + } } else { gwgetdata->icon_name = g_strdup("gtk-refresh"); } @@ -412,53 +425,53 @@ on_pref_ok_button_clicked(GtkWidget *widget,gpointer data) http_proxy=GTK_WIDGET (gtk_builder_get_object(builder_pref,"http_proxy_entry")); gwget_pref.http_proxy=g_strdup(gtk_entry_get_text(GTK_ENTRY(http_proxy))); - gconf_client_set_string(gconf_client,"/apps/gwget2/http_proxy", - g_strdup(gtk_entry_get_text(GTK_ENTRY(http_proxy))),NULL); + g_settings_set_string(settings,"http-proxy", + g_strdup(gtk_entry_get_text(GTK_ENTRY(http_proxy)))); proxy_user=GTK_WIDGET (gtk_builder_get_object(builder_pref,"proxy_user")); gwget_pref.proxy_user=g_strdup(gtk_entry_get_text(GTK_ENTRY(proxy_user))); - gconf_client_set_string(gconf_client,"/apps/gwget2/proxy_user", - g_strdup(gtk_entry_get_text(GTK_ENTRY(proxy_user))),NULL); + g_settings_set_string(settings,"proxy-user", + g_strdup(gtk_entry_get_text(GTK_ENTRY(proxy_user)))); proxy_password=GTK_WIDGET (gtk_builder_get_object(builder_pref,"proxy_password")); gwget_pref.proxy_password=g_strdup(gtk_entry_get_text(GTK_ENTRY(proxy_password))); - gconf_client_set_string(gconf_client,"/apps/gwget2/proxy_password", - g_strdup(gtk_entry_get_text(GTK_ENTRY(proxy_password))),NULL); + g_settings_set_string(settings,"proxy-password", + g_strdup(gtk_entry_get_text(GTK_ENTRY(proxy_password)))); http_proxy_port_spin = GTK_WIDGET (gtk_builder_get_object (builder_pref, "http_proxy_port_spin")); gwget_pref.http_proxy_port = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(http_proxy_port_spin)); - gconf_client_set_int(gconf_client,"/apps/gwget2/http_proxy_port", - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(http_proxy_port_spin)),NULL); + g_settings_set_int(settings,"http-proxy-port", + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(http_proxy_port_spin))); proxy_uses_auth_radio=GTK_WIDGET (gtk_builder_get_object(builder_pref,"proxy_uses_auth_radio")); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (proxy_uses_auth_radio))) { - gconf_client_set_bool(gconf_client,"/apps/gwget2/network_mode",TRUE,NULL); + g_settings_set_boolean(settings,"network-mode",TRUE); gwget_pref.proxy_uses_auth=TRUE; } manual_radio=GTK_WIDGET (gtk_builder_get_object(builder_pref,"manual_radio")); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(manual_radio))) { - gconf_client_set_string(gconf_client,"/apps/gwget2/network_mode","manual",NULL); + g_settings_set_string(settings,"network-mode","manual"); gwget_pref.network_mode="manual"; } direct_radio=GTK_WIDGET (gtk_builder_get_object(builder_pref,"direct_radio")); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(direct_radio))) { - gconf_client_set_string(gconf_client,"/apps/gwget2/network_mode","direct",NULL); + g_settings_set_string(settings,"network-mode","direct"); gwget_pref.network_mode="direct"; } default_radio=GTK_WIDGET (gtk_builder_get_object(builder_pref,"default_radio")); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(default_radio))) { - gconf_client_set_string(gconf_client,"/apps/gwget2/network_mode","default",NULL); + g_settings_set_string(settings,"network-mode","default"); gwget_pref.network_mode="default"; } ask_each_dl = GTK_WIDGET (gtk_builder_get_object(builder_pref, "ask_save_each_dl_check")); gwget_pref.ask_save_each_dl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ask_each_dl)); - gconf_client_set_bool(gconf_client, "/apps/gwget2/ask_save_each_dl", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ask_each_dl)), NULL); + g_settings_set_boolean(settings,"ask-save-each-dl", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ask_each_dl))); num_retries = GTK_WIDGET (gtk_builder_get_object(builder_pref,"num_retries_spin")); @@ -469,18 +482,18 @@ on_pref_ok_button_clicked(GtkWidget *widget,gpointer data) open_after_dl = GTK_WIDGET (gtk_builder_get_object(builder_pref, "open_after_dl")); gwget_pref.open_after_dl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(open_after_dl)); - gconf_client_set_bool(gconf_client, "/apps/gwget2/open_after_dl", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(open_after_dl)), NULL); + g_settings_set_boolean(settings,"open-after-dl", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(open_after_dl))); pref_window = GTK_WIDGET (gtk_builder_get_object(builder_pref,"pref_window")); gtk_widget_hide(pref_window); - gconf_client_set_string(gconf_client,"/apps/gwget2/download_dir", - g_strdup(gtk_entry_get_text(GTK_ENTRY(save_in))),NULL); - gconf_client_set_int(gconf_client,"/apps/gwget2/num_retries", - atoi(gtk_entry_get_text(GTK_ENTRY(num_retries))),NULL); - gconf_client_set_bool(gconf_client,"/apps/gwget2/resume_at_start", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(resume)),NULL); + g_settings_set_string(settings,"download-dir", + g_strdup(gtk_entry_get_text(GTK_ENTRY(save_in)))); + g_settings_set_int(settings,"num-retries", + atoi(gtk_entry_get_text(GTK_ENTRY(num_retries)))); + g_settings_set_boolean(settings,"resume-at-start", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(resume))); /* Limit Speed */ limit_speed_check = GTK_WIDGET (gtk_builder_get_object (builder_pref, "limit_speed_check")); @@ -495,71 +508,71 @@ on_pref_ok_button_clicked(GtkWidget *widget,gpointer data) inform_limit_speed_change(); } gwget_pref.limit_speed = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limit_speed_check)); - gconf_client_set_bool(gconf_client,"/apps/gwget2/limit_speed", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limit_speed_check)),NULL); + g_settings_set_boolean(settings,"limit-speed", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limit_speed_check))); gwget_pref.max_speed = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(limit_speed_spin)); - gconf_client_set_int(gconf_client,"/apps/gwget2/max_speed", - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(limit_speed_spin)),NULL); + g_settings_set_int(settings,"max-speed", + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(limit_speed_spin))); /* Limit Simultaneous downloads */ limit_simultaneousdownloads_check = GTK_WIDGET (gtk_builder_get_object (builder_pref, "limit_simultaneousdownloads_check")); gwget_pref.limit_simultaneousdownloads = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limit_simultaneousdownloads_check)); - gconf_client_set_bool(gconf_client,"/apps/gwget2/limit_simultaneousdownloads", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limit_simultaneousdownloads_check)),NULL); + g_settings_set_boolean(settings,"limit-simultaneousdownloads", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limit_simultaneousdownloads_check))); limit_simultaneousdownloads_spin = GTK_WIDGET (gtk_builder_get_object (builder_pref, "limit_simultaneousdownloads_spin")); gwget_pref.max_simultaneousdownloads = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(limit_simultaneousdownloads_spin)); - gconf_client_set_int(gconf_client,"/apps/gwget2/max_simultaneousdownloads", - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(limit_simultaneousdownloads_spin)),NULL); + g_settings_set_int(settings,"max-simultaneousdownloads", + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(limit_simultaneousdownloads_spin))); /* Recursivity */ no_create_directories = GTK_WIDGET (gtk_builder_get_object(builder_pref,"no_create_directories")); gwget_pref.no_create_directories = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(no_create_directories)); - gconf_client_set_bool(gconf_client,"/apps/gwget2/no_create_directories", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(no_create_directories)),NULL); + g_settings_set_boolean(settings,"no-create-directories", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(no_create_directories))); /* Follow relative links only */ follow_relative = GTK_WIDGET (gtk_builder_get_object(builder_pref,"follow_relative")); gwget_pref.follow_relative = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(follow_relative)); - gconf_client_set_bool(gconf_client,"/apps/gwget2/follow_relative",gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(follow_relative)), NULL); + g_settings_set_boolean(settings,"follow-relative",gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(follow_relative))); /* Convert links */ convert_links = GTK_WIDGET (gtk_builder_get_object(builder_pref,"convert_links")); gwget_pref.follow_relative = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(convert_links)); - gconf_client_set_bool(gconf_client,"/apps/gwget2/convert_links",gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(convert_links)), NULL); + g_settings_set_boolean(settings,"convert-links",gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(convert_links))); /* Download page requisites */ dl_page_requisites= GTK_WIDGET (gtk_builder_get_object(builder_pref,"dl_page_requisites")); gwget_pref.follow_relative = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dl_page_requisites)); - gconf_client_set_bool(gconf_client,"/apps/gwget2/dl_page_requisites", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dl_page_requisites)), NULL); + g_settings_set_boolean(settings,"dl-page-requisites", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dl_page_requisites))); /* Max Depth */ max_depth=GTK_WIDGET (gtk_builder_get_object(builder_pref,"max_depth")); gwget_pref.max_depth=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(max_depth)); - gconf_client_set_int(gconf_client,"/apps/gwget2/max_depth",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(max_depth)), NULL); + g_settings_set_int(settings,"max-depth",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(max_depth))); /* Column listing */ gwget_pref.view_actual_size=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_actual_size")))); - gconf_client_set_bool(gconf_client,"/apps/gwget2/view_actual_size", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_actual_size")))),NULL); + g_settings_set_boolean(settings,"view-actual-size", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_actual_size"))))); gwget_pref.view_total_size=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_total_size")))); - gconf_client_set_bool(gconf_client,"/apps/gwget2/view_total_size", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_total_size")))),NULL); + g_settings_set_boolean(settings,"view-total-size", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_total_size"))))); gwget_pref.view_percentage=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_percentage")))); - gconf_client_set_bool(gconf_client,"/apps/gwget2/view_percentage", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_percentage")))),NULL); + g_settings_set_boolean(settings,"view-percentage", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_percentage"))))); gwget_pref.view_elapse_time=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_elapse_time")))); - gconf_client_set_bool(gconf_client,"/apps/gwget2/view_elapse_time", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_elapse_time")))),NULL); + g_settings_set_boolean(settings,"view-elapse-time", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_elapse_time"))))); gwget_pref.view_rem_time=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_rem_time")))); - gconf_client_set_bool(gconf_client,"/apps/gwget2/view_rem_time", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_rem_time")))),NULL); + g_settings_set_boolean(settings,"view-rem-time", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_rem_time"))))); gwget_pref.view_down_speed=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_down_speed")))); - gconf_client_set_bool(gconf_client,"/apps/gwget2/view_down_speed", - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_down_speed")))),NULL); + g_settings_set_boolean(settings,"view-down-speed", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_WIDGET (gtk_builder_get_object(builder_pref,"check_down_speed"))))); } @@ -660,7 +673,7 @@ on_remove_completed_activate(GtkWidget *widget, gpointer data) response = run_dialog(_("Remove completed"),_("Really remove completed downloads from the list?"), GTK_STOCK_CANCEL, _("Remove")); if (response == GTK_RESPONSE_OK) { length=gtk_tree_model_iter_n_children(GTK_TREE_MODEL(model),NULL); - gtk_tree_model_get_iter_root(model,&iter); + gtk_tree_model_get_iter_first(model,&iter); for (i=0;i +#include +#include #include #include "new_window.h" #include "main_window.h" @@ -45,29 +46,25 @@ void on_ok_button_clicked(GtkWidget *widget, gpointer data) window = GTK_WIDGET (gtk_builder_get_object(builder, "new_window")); combo = GTK_WIDGET (gtk_builder_get_object (builder, "save_in_comboboxentry")); - save_in_entry=GTK_ENTRY(GTK_BIN(combo)->child); + save_in_entry=GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo))); - url=g_strstrip((gchar *)(gtk_entry_get_text (GTK_ENTRY(GTK_WIDGET (gtk_builder_get_object(builder, "url_entry")))))); + url=gtk_entry_get_text (GTK_ENTRY(GTK_WIDGET (gtk_builder_get_object(builder, "url_entry")))); if (strcmp(url,"")) { url = g_strdup(url); - save_in=g_strdup(gtk_combo_box_get_active_text (GTK_COMBO_BOX( GTK_WIDGET (gtk_builder_get_object(builder, "save_in_comboboxentry"))))); - - if (!strcmp(save_in,"") && gwget_pref.download_dir) { - save_in=g_strdup(gwget_pref.download_dir); - } - - if (!strcmp(save_in,"") && !gwget_pref.download_dir) { - save_in=g_strdup(g_get_home_dir()); - } - + url = g_strstrip(url); + } + + if (strcmp(url,"")) { + save_in=g_strdup(gtk_entry_get_text (GTK_ENTRY(save_in_entry))); save_in_list = g_strdup(save_in); if (g_list_find_custom(save_in_paths, save_in, (GCompareFunc) strcmp)==NULL) { save_in_paths = g_list_prepend (save_in_paths, save_in_list); } gwgetdata = gwget_data_create (url, save_in); - gwget_data_add_download(gwgetdata); - gwget_data_start_download(gwgetdata); + if (gwget_data_add_download(gwgetdata)) { + gwget_data_start_download(gwgetdata); + } gtk_widget_hide(window); g_free(save_in); } @@ -131,7 +128,7 @@ on_new_browse_save_in_button_clicked(GtkWidget *widget, gpointer data) NULL); combo = GTK_WIDGET (gtk_builder_get_object (builder, "save_in_comboboxentry")); - save_in_entry=GTK_ENTRY(GTK_BIN(combo)->child); + save_in_entry=GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo))); if (gtk_dialog_run (GTK_DIALOG (filesel)) == GTK_RESPONSE_ACCEPT) { char *directory; diff --git a/src/systray.c b/src/systray.c index 18e71cb..04f12b1 100644 --- a/src/systray.c +++ b/src/systray.c @@ -1,6 +1,7 @@ #include -#include +#include +#include #include "main_window.h" #include "gwget_data.h" #include "systray.h" @@ -109,9 +110,9 @@ systray_generate_menu(guint button, guint time) item = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, NULL); gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item); - gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC(on_button_new_clicked), - NULL); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK(on_button_new_clicked), + NULL); gtk_widget_show(item); downloads_menu = GTK_MENU(gtk_menu_new()); @@ -130,23 +131,23 @@ systray_generate_menu(guint button, guint time) item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item); - gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC(on_boton_pref_clicked), - NULL); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK(on_boton_pref_clicked), + NULL); item = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item); item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); gtk_menu_shell_append(GTK_MENU_SHELL(systray_menu), item); - gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC(gwget_quit), - NULL); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK(gwget_quit), + NULL); /* show */ gtk_widget_show_all(GTK_WIDGET(systray_menu)); gtk_menu_popup(GTK_MENU(systray_menu), NULL, NULL, NULL, NULL, button, time); /* clean up */ - /* gtk_object_sink(GTK_OBJECT(menu)); */ + /* gtk_object_sink(G_OBJECT(menu)); */ return TRUE; @@ -158,9 +159,9 @@ pop_main_window() GtkWidget *window; window = GTK_WIDGET (gtk_builder_get_object(builder,"main_window")); - if((gdk_window_get_state(GTK_WIDGET(window)->window) & + if((gdk_window_get_state(gtk_widget_get_window(window)) & GDK_WINDOW_STATE_ICONIFIED) || - !GTK_WIDGET_VISIBLE(window)) + !gtk_widget_get_visible(window)) gtk_window_present (GTK_WINDOW(window)); else gtk_widget_hide (GTK_WIDGET(window)); @@ -224,7 +225,7 @@ gwget_tray_notify (gchar *primary, gchar *secondary, gchar *icon_name) if (!notify_is_initted ()) if (!notify_init ("gwget")) return; - NotifyNotification *notification = notify_notification_new(primary,secondary,icon_name,NULL); + NotifyNotification *notification = notify_notification_new(primary,secondary,icon_name); notify_notification_show(notification,NULL); #endif diff --git a/src/systray.h b/src/systray.h index 40aac27..75c33c2 100644 --- a/src/systray.h +++ b/src/systray.h @@ -6,7 +6,11 @@ extern "C" { #endif +#if GTK_CHECK_VERSION(3, 0, 0) +#include +#else #include +#endif #ifdef GDK_WINDOWING_X11 #include #endif diff --git a/src/utils.c b/src/utils.c index c079bbf..9170fe1 100644 --- a/src/utils.c +++ b/src/utils.c @@ -13,7 +13,8 @@ * along with this program; if not, see . */ -#include +#include +#include #include "main_window.h" #include "utils.h" #include "gwget_data.h" @@ -100,7 +101,7 @@ gboolean check_url_already_exists(gchar *checkurl) gchar *url; length=gtk_tree_model_iter_n_children(GTK_TREE_MODEL(model),NULL); - gtk_tree_model_get_iter_root(model,&iter); + gtk_tree_model_get_iter_first(model,&iter); for (i=0;i -#include +#include +#include +#include #include #include #include @@ -149,6 +151,9 @@ wget_log_process_line (GwgetData *gwgetdata) (strstr (gwgetdata->line, "Host not found.") == NULL) && (strstr (gwgetdata->line, "Name or service not known") == NULL)) break; + + if (strncmp (gwgetdata->line, "converted ", 10) == 0) + break; /* Wget, under certain circumstances, returns a list of resolved IP addresses * before attempting to connect, which can be ignored.