static void open_file_response_cb (GtkWidget *w, int response, GtkWidget *file_sel) { FrWindow *window = NULL; GFile *file; if ((response == GTK_RESPONSE_CANCEL) || (response == GTK_RESPONSE_DELETE_EVENT)) { gtk_widget_destroy (file_sel); return; } window = g_object_get_data (G_OBJECT (file_sel), "fr_window"); file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_sel)); if ((window == NULL) || (file == NULL)) return; if (fr_window_archive_is_present (window)) window = (FrWindow *) fr_window_new (); g_signal_connect (G_OBJECT (window), "archive_loaded", G_CALLBACK (window_archive_loaded_cb), file_sel); fr_window_archive_open (window, file, GTK_WINDOW (file_sel)); g_object_unref (file); }
static void new_archive (DlgNewData *data, char *uri) { GtkWidget *archive_window; gboolean new_window; const char *password; gboolean encrypt_header; int volume_size; new_window = fr_window_archive_is_present (data->window) && ! fr_window_is_batch_mode (data->window); if (new_window) archive_window = fr_window_new (); else archive_window = (GtkWidget *) data->window; password = dlg_new_data_get_password (data); encrypt_header = dlg_new_data_get_encrypt_header (data); volume_size = dlg_new_data_get_volume_size (data); fr_window_set_password (FR_WINDOW (archive_window), password); fr_window_set_encrypt_header (FR_WINDOW (archive_window), encrypt_header); fr_window_set_volume_size (FR_WINDOW (archive_window), volume_size); if (fr_window_archive_new (FR_WINDOW (archive_window), uri)) { gtk_widget_destroy (data->dialog); if (! fr_window_is_batch_mode (FR_WINDOW (archive_window))) gtk_window_present (GTK_WINDOW (archive_window)); } else if (new_window) gtk_widget_destroy (archive_window); }
void dlg_prop (FrWindow *window) { DialogData *data; GtkWidget *ok_button; GtkWidget *label; GFile *parent; char *uri; char *markup; char *s; goffset size, uncompressed_size; char *utf8_name; char *title_txt; double ratio; data = g_new (DialogData, 1); data->builder = _gtk_builder_new_from_resource ("properties.ui"); if (data->builder == NULL) { g_free (data); return; } /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "prop_dialog"); ok_button = _gtk_builder_get_widget (data->builder, "p_ok_button"); /* Set widgets data. */ label = _gtk_builder_get_widget (data->builder, "p_path_label"); parent = g_file_get_parent (fr_window_get_archive_file (window)); uri = g_file_get_uri (parent); utf8_name = g_file_get_parse_name (parent); markup = g_strdup_printf ("<a href=\"%s\">%s</a>", uri, utf8_name); gtk_label_set_markup (GTK_LABEL (label), markup); g_free (markup); g_free (utf8_name); g_free (uri); g_object_unref (parent); /**/ label = _gtk_builder_get_widget (data->builder, "p_name_label"); utf8_name = _g_file_get_display_basename (fr_window_get_archive_file (window)); gtk_label_set_text (GTK_LABEL (label), utf8_name); title_txt = g_strdup_printf (_("%s Properties"), utf8_name); gtk_window_set_title (GTK_WINDOW (data->dialog), title_txt); g_free (title_txt); g_free (utf8_name); /**/ label = _gtk_builder_get_widget (data->builder, "p_mime_type_label"); gtk_label_set_text (GTK_LABEL (label), window->archive->mime_type); /**/ label = _gtk_builder_get_widget (data->builder, "p_date_label"); s = _g_time_to_string (_g_file_get_file_mtime (fr_window_get_archive_file (window))); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label = _gtk_builder_get_widget (data->builder, "p_size_label"); size = _g_file_get_file_size (fr_window_get_archive_file (window)); s = g_format_size (size); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ uncompressed_size = 0; if (fr_window_archive_is_present (window)) { int i; for (i = 0; i < window->archive->files->len; i++) { FileData *fd = g_ptr_array_index (window->archive->files, i); uncompressed_size += fd->size; } } label = _gtk_builder_get_widget (data->builder, "p_uncomp_size_label"); s = g_format_size (uncompressed_size); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label = _gtk_builder_get_widget (data->builder, "p_cratio_label"); if (uncompressed_size != 0) ratio = (double) uncompressed_size / size; else ratio = 0.0; s = g_strdup_printf ("%0.2f", ratio); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label = _gtk_builder_get_widget (data->builder, "p_files_label"); s = g_strdup_printf ("%d", window->archive->n_regular_files); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (G_OBJECT (ok_button), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); /* Run dialog. */ gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (window)); gtk_window_set_modal (GTK_WINDOW (data->dialog), TRUE); gtk_widget_show (data->dialog); }
void dlg_prop (FrWindow *window) { DialogData *data; GtkWidget *ok_button; GtkWidget *help_button; GtkWidget *label_label; GtkWidget *label; char *s; goffset size, uncompressed_size; char *utf8_name; char *title_txt; double ratio; data = g_new (DialogData, 1); data->builder = _gtk_builder_new_from_file ("properties.ui"); if (data->builder == NULL) { g_free (data); return; } /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "prop_dialog"); ok_button = _gtk_builder_get_widget (data->builder, "p_ok_button"); help_button = _gtk_builder_get_widget (data->builder, "p_help_button"); /* Set widgets data. */ label_label = _gtk_builder_get_widget (data->builder, "p_path_label_label"); /* Translators: after the colon there is a folder name. */ set_label (label_label, _("Location:")); label = _gtk_builder_get_widget (data->builder, "p_path_label"); s = remove_level_from_path (fr_window_get_archive_uri (window)); utf8_name = g_filename_display_name (s); gtk_label_set_text (GTK_LABEL (label), utf8_name); g_free (utf8_name); g_free (s); /**/ label_label = _gtk_builder_get_widget (data->builder, "p_name_label_label"); set_label (label_label, C_("File", "Name:")); label = _gtk_builder_get_widget (data->builder, "p_name_label"); utf8_name = g_uri_display_basename (fr_window_get_archive_uri (window)); gtk_label_set_text (GTK_LABEL (label), utf8_name); title_txt = g_strdup_printf (_("%s Properties"), utf8_name); gtk_window_set_title (GTK_WINDOW (data->dialog), title_txt); g_free (title_txt); g_free (utf8_name); /**/ label_label = _gtk_builder_get_widget (data->builder, "p_date_label_label"); set_label (label_label, _("Last modified:")); label = _gtk_builder_get_widget (data->builder, "p_date_label"); s = get_time_string (get_file_mtime (fr_window_get_archive_uri (window))); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label_label = _gtk_builder_get_widget (data->builder, "p_size_label_label"); set_label (label_label, _("Archive size:")); label = _gtk_builder_get_widget (data->builder, "p_size_label"); size = get_file_size (fr_window_get_archive_uri (window)); s = g_format_size (size); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label_label = _gtk_builder_get_widget (data->builder, "p_uncomp_size_label_label"); set_label (label_label, _("Content size:")); uncompressed_size = 0; if (fr_window_archive_is_present (window)) { int i; for (i = 0; i < window->archive->command->files->len; i++) { FileData *fd = g_ptr_array_index (window->archive->command->files, i); uncompressed_size += fd->size; } } label = _gtk_builder_get_widget (data->builder, "p_uncomp_size_label"); s = g_format_size (uncompressed_size); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label_label = _gtk_builder_get_widget (data->builder, "p_cratio_label_label"); set_label (label_label, _("Compression ratio:")); label = _gtk_builder_get_widget (data->builder, "p_cratio_label"); if (uncompressed_size != 0) ratio = (double) uncompressed_size / size; else ratio = 0.0; s = g_strdup_printf ("%0.2f", ratio); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /**/ label_label = _gtk_builder_get_widget (data->builder, "p_files_label_label"); set_label (label_label, _("Number of files:")); label = _gtk_builder_get_widget (data->builder, "p_files_label"); s = g_strdup_printf ("%d", window->archive->command->n_regular_files); gtk_label_set_text (GTK_LABEL (label), s); g_free (s); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (G_OBJECT (ok_button), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); g_signal_connect (G_OBJECT (help_button), "clicked", G_CALLBACK (help_cb), data); /* Run dialog. */ gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (window)); gtk_window_set_modal (GTK_WINDOW (data->dialog), TRUE); gtk_widget_show (data->dialog); }