diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fr-window.c | 186 | 
1 files changed, 69 insertions, 117 deletions
| diff --git a/src/fr-window.c b/src/fr-window.c index 836c3ba..fb5da06 100644 --- a/src/fr-window.c +++ b/src/fr-window.c @@ -280,7 +280,6 @@ struct _FrWindowPrivateData {  	guint            help_message_cid;  	guint            list_info_cid;  	guint            progress_cid; -	char *           last_status_message;  	GtkWidget *      up_arrows[5];  	GtkWidget *      down_arrows[5]; @@ -365,7 +364,6 @@ struct _FrWindowPrivateData {  	GtkWidget        *progress_dialog;  	GtkWidget        *pd_action; -	GtkWidget        *pd_archive;  	GtkWidget        *pd_message;  	GtkWidget        *pd_progress_bar;  	GtkWidget        *pd_cancel_button; @@ -377,7 +375,6 @@ struct _FrWindowPrivateData {  	gboolean          progress_pulse;  	guint             progress_timeout;  /* Timeout to display the progress dialog. */  	guint             hide_progress_timeout;  /* Timeout to hide the progress dialog. */ -	FrAction          pd_last_action;  	char             *pd_last_archive;  	char             *working_archive;  	double            pd_last_fraction; @@ -630,7 +627,6 @@ fr_window_free_private_data (FrWindow *window)  	g_free (window->priv->pd_last_archive);  	g_free (window->priv->pd_last_message);  	g_free (window->priv->extract_here_dir); -	g_free (window->priv->last_status_message);  	g_settings_set_enum (window->priv->settings_listing, PREF_LISTING_SORT_METHOD, window->priv->sort_method);  	g_settings_set_enum (window->priv->settings_listing, PREF_LISTING_SORT_TYPE, window->priv->sort_type); @@ -2317,78 +2313,78 @@ progress_dialog_response (GtkDialog *dialog,  } -static const char* -get_message_from_action (FrAction action) +static char* +get_action_description (FrAction    action, +			const char *uri)  { -	char *message = ""; +	char *basename; +	char *message; + +	basename = (uri != NULL) ? g_uri_display_basename (uri) : NULL; +	message = NULL;  	switch (action) {  	case FR_ACTION_CREATING_NEW_ARCHIVE: -		message = _("Creating archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Creating \"%s\""), basename);  		break;  	case FR_ACTION_LOADING_ARCHIVE: -		message = _("Loading archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Loading \"%s\""), basename);  		break;  	case FR_ACTION_LISTING_CONTENT: -		message = _("Reading archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Reading \"%s\""), basename);  		break;  	case FR_ACTION_DELETING_FILES: -		message = _("Deleting files from archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Deleting files from \"%s\""), basename);  		break;  	case FR_ACTION_TESTING_ARCHIVE: -		message = _("Testing archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Testing \"%s\""), basename);  		break;  	case FR_ACTION_GETTING_FILE_LIST: -		message = _("Getting the file list"); +		message = g_strdup (_("Getting the file list"));  		break;  	case FR_ACTION_COPYING_FILES_FROM_REMOTE: -		message = _("Copying the file list"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Copying the files to add to \"%s\""), basename);  		break;  	case FR_ACTION_ADDING_FILES: -		message = _("Adding files to archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Adding files to \"%s\""), basename);  		break;  	case FR_ACTION_EXTRACTING_FILES: -		message = _("Extracting files from archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Extracting files from \"%s\""), basename);  		break;  	case FR_ACTION_COPYING_FILES_TO_REMOTE: -		message = _("Copying the file list"); +		message = g_strdup (_("Copying the extracted files to the destination"));  		break;  	case FR_ACTION_CREATING_ARCHIVE: -		message = _("Creating archive"); +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Creating \"%s\""), basename);  		break;  	case FR_ACTION_SAVING_REMOTE_ARCHIVE: -		message = _("Saving archive"); -		break; -	default: -		message = ""; +		/* Translators: %s is a filename */ +		message = g_strdup_printf (_("Saving \"%s\""), basename);  		break;  	case FR_ACTION_NONE:  		break;  	} +	g_free (basename);  	return message;  }  static void -progress_dialog__set_last_action (FrWindow *window, -				  FrAction  action) +progress_dialog_update_action_description (FrWindow *window)  { -	const char *title; -	char        *markup; - -	window->priv->pd_last_action = action; -	title = get_message_from_action (window->priv->pd_last_action); -	markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"larger\">%s</span>", title); -	gtk_label_set_markup (GTK_LABEL (window->priv->pd_action), markup); -	g_free (markup); -} - - -static void -pd_update_archive_name (FrWindow *window) -{ -	char *current_archive; +	const char *current_archive; +	char        *description; +	char       *description_markup;  	if (window->priv->progress_dialog == NULL)  		return; @@ -2400,28 +2396,17 @@ pd_update_archive_name (FrWindow *window)  	else  		current_archive = window->priv->archive_uri; -	if (strcmp_null_tolerant (window->priv->pd_last_archive, current_archive) != 0) { -		g_free (window->priv->pd_last_archive); -		if (current_archive == NULL) { -			window->priv->pd_last_archive = NULL; -			gtk_label_set_text (GTK_LABEL (window->priv->pd_archive), ""); -#ifdef LOG_PROGRESS -			g_print ("archive name > (none)\n"); -#endif -		} -		else { -			char *name; +	g_free (window->priv->pd_last_archive); +	window->priv->pd_last_archive = NULL; +	if (current_archive != NULL) +		window->priv->pd_last_archive = g_strdup (current_archive); -			window->priv->pd_last_archive = g_strdup (current_archive); +	description = get_action_description (window->priv->action, window->priv->pd_last_archive); +	description_markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"larger\">%s</span>", description); +	gtk_label_set_markup (GTK_LABEL (window->priv->pd_action), description_markup); -			name = g_uri_display_basename (window->priv->pd_last_archive); -			gtk_label_set_text (GTK_LABEL (window->priv->pd_archive), name); -#ifdef LOG_PROGRESS -			g_print ("archive name > %s\n", name); -#endif -			g_free (name); -		} -	} +	g_free (description_markup); +	g_free (description);  } @@ -2434,7 +2419,7 @@ fr_window_working_archive_cb (FrCommand  *command,  	window->priv->working_archive = NULL;  	if (archive_filename != NULL)  		window->priv->working_archive = g_strdup (archive_filename); -	pd_update_archive_name (window); +	progress_dialog_update_action_description (window);  	return TRUE;  } @@ -2445,6 +2430,11 @@ fr_window_message_cb (FrCommand  *command,  		      const char *msg,  		      FrWindow   *window)  { +	if (window->priv->pd_last_message != msg) { +		g_free (window->priv->pd_last_message); +		window->priv->pd_last_message = g_strdup (msg); +	} +  	if (window->priv->progress_dialog == NULL)  		return TRUE; @@ -2455,10 +2445,7 @@ fr_window_message_cb (FrCommand  *command,  			msg = NULL;  	} -	if (msg == NULL) { -		gtk_label_set_text (GTK_LABEL (window->priv->pd_message), ""); -	} -	else { +	if (msg != NULL) {  		char *utf8_msg;  		if (! g_utf8_validate (msg, -1, NULL)) @@ -2486,15 +2473,10 @@ fr_window_message_cb (FrCommand  *command,  		g_free (utf8_msg);  	} +	else +		gtk_label_set_text (GTK_LABEL (window->priv->pd_message), ""); -	if (window->priv->convert_data.converting) { -		if (window->priv->pd_last_action != FR_ACTION_CREATING_ARCHIVE) -			progress_dialog__set_last_action (window, FR_ACTION_CREATING_ARCHIVE); -	} -	else if (window->priv->pd_last_action != window->priv->action) -		progress_dialog__set_last_action (window, window->priv->action); - -	pd_update_archive_name (window); +	progress_dialog_update_action_description (window);  	return TRUE;  } @@ -2511,7 +2493,6 @@ create_the_progress_dialog (FrWindow *window)  	GtkWidget     *align;  	GtkWidget     *progress_vbox;  	GtkWidget     *lbl; -	char          *markup;  	PangoAttrList *attr_list;  	GdkPixbuf     *icon; @@ -2527,7 +2508,6 @@ create_the_progress_dialog (FrWindow *window)  		flags |= GTK_DIALOG_MODAL;  	} -	window->priv->pd_last_action = window->priv->action;  	window->priv->progress_dialog = gtk_dialog_new_with_buttons ((window->priv->batch_mode ? window->priv->batch_title : NULL),  								     parent,  								     flags, @@ -2561,15 +2541,10 @@ create_the_progress_dialog (FrWindow *window)  	vbox = gtk_vbox_new (FALSE, 5);  	gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); -	/* action label */ +	/* action description */  	lbl = window->priv->pd_action = gtk_label_new (""); -	markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"larger\">%s</span>", -					  get_message_from_action (window->priv->pd_last_action)); -	gtk_label_set_markup (GTK_LABEL (lbl), markup); -	g_free (markup); -  	align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);  	gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 12, 0, 0); @@ -2584,28 +2559,9 @@ create_the_progress_dialog (FrWindow *window)  	g_free (window->priv->pd_last_archive);  	window->priv->pd_last_archive = NULL; -	if (window->priv->archive_uri != NULL) { -		GtkWidget *hbox; -		char      *name; - -		hbox = gtk_hbox_new (FALSE, 6); -		gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); - -		lbl = gtk_label_new (""); -		markup = g_markup_printf_escaped ("<b>%s</b>", _("Archive:")); -		gtk_label_set_markup (GTK_LABEL (lbl), markup); -		g_free (markup); -		gtk_box_pack_start (GTK_BOX (hbox), lbl, FALSE, FALSE, 0); +	if (window->priv->archive_uri != NULL)  		window->priv->pd_last_archive = g_strdup (window->priv->archive_uri); -		name = g_uri_display_basename (window->priv->pd_last_archive); -		lbl = window->priv->pd_archive = gtk_label_new (name); -		g_free (name); - -		gtk_misc_set_alignment (GTK_MISC (lbl), 0.0, 0.5); -		gtk_label_set_ellipsize (GTK_LABEL (lbl), PANGO_ELLIPSIZE_END); -		gtk_box_pack_start (GTK_BOX (hbox), lbl, TRUE, TRUE, 0); -	}  	/* progress and details */ @@ -2627,7 +2583,7 @@ create_the_progress_dialog (FrWindow *window)  	lbl = window->priv->pd_message = gtk_label_new ("");  	attr_list = pango_attr_list_new (); -	pango_attr_list_insert (attr_list, pango_attr_style_new (PANGO_STYLE_ITALIC)); +	pango_attr_list_insert (attr_list, pango_attr_size_new (9000));  	gtk_label_set_attributes (GTK_LABEL (lbl), attr_list);  	pango_attr_list_unref (attr_list); @@ -2637,6 +2593,8 @@ create_the_progress_dialog (FrWindow *window)  	gtk_widget_show_all (hbox); +	progress_dialog_update_action_description (window); +  	/* signals */  	g_signal_connect (G_OBJECT (window->priv->progress_dialog), @@ -2666,7 +2624,7 @@ display_progress_dialog (gpointer data)  			gtk_widget_show (GTK_WIDGET (window));  		gtk_widget_hide (window->priv->progress_bar);  		gtk_widget_show (window->priv->progress_dialog); -		fr_window_message_cb (NULL, window->priv->last_status_message, window); +		fr_window_message_cb (NULL, window->priv->pd_last_message, window);  	}  	window->priv->progress_timeout = 0; @@ -2819,12 +2777,9 @@ fr_window_push_message (FrWindow   *window,  	if (! gtk_widget_get_mapped (GTK_WIDGET (window)))  		return; -	g_free (window->priv->last_status_message); -	window->priv->last_status_message = g_strdup (msg); - -	gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar), window->priv->progress_cid, window->priv->last_status_message); -	if (window->priv->progress_dialog != NULL) -		gtk_label_set_text (GTK_LABEL (window->priv->pd_message), window->priv->last_status_message); +	gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar), +			    window->priv->progress_cid, +			    msg);  } @@ -2844,9 +2799,8 @@ action_started (FrArchive *archive,  		FrAction   action,  		gpointer   data)  { -	FrWindow   *window = data; -	const char *message; -	char       *full_msg; +	FrWindow *window = data; +	char     *message;  	window->priv->action = action;  	fr_window_start_activity_mode (window); @@ -2855,9 +2809,9 @@ action_started (FrArchive *archive,  	debug (DEBUG_INFO, "%s [START] (FR::Window)\n", action_names[action]);  #endif -	message = get_message_from_action (action); -	full_msg = g_strdup_printf ("%s, %s", message, _("please wait…")); -	fr_window_push_message (window, full_msg); +	message = get_action_description (action, window->priv->pd_last_archive); +	fr_window_push_message (window, message); +	g_free (message);  	switch (action) {  	case FR_ACTION_EXTRACTING_FILES: @@ -2870,10 +2824,8 @@ action_started (FrArchive *archive,  	if (archive->command != NULL) {  		fr_command_progress (archive->command, -1.0); -		fr_command_message (archive->command, message); +		fr_command_message (archive->command, _("Please wait…"));  	} - -	g_free (full_msg);  } | 
