summaryrefslogtreecommitdiff
path: root/src/fr-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fr-window.c')
-rw-r--r--src/fr-window.c834
1 files changed, 295 insertions, 539 deletions
diff --git a/src/fr-window.c b/src/fr-window.c
index 9a30f5e..20ca551 100644
--- a/src/fr-window.c
+++ b/src/fr-window.c
@@ -103,14 +103,12 @@ static GtkTargetEntry folder_tree_targets[] = {
{ "XdndDirectSave0", 0, 2 }
};
-
typedef struct {
FrBatchActionType type;
void * data;
GFreeFunc free_func;
} FRBatchAction;
-
typedef struct {
guint converting : 1;
char *temp_dir;
@@ -121,16 +119,15 @@ typedef struct {
char *new_file;
} FRConvertData;
-
typedef enum {
FR_CLIPBOARD_OP_CUT,
FR_CLIPBOARD_OP_COPY
} FRClipboardOp;
-
typedef struct {
GList *file_list;
char *extract_to_dir;
+ char *sub_dir;
char *base_dir;
gboolean skip_older;
FrOverwrite overwrite;
@@ -140,7 +137,6 @@ typedef struct {
gboolean ask_to_open_destination;
} ExtractData;
-
typedef enum {
FR_WINDOW_AREA_MENUBAR,
FR_WINDOW_AREA_TOOLBAR,
@@ -150,7 +146,6 @@ typedef enum {
FR_WINDOW_AREA_STATUSBAR,
} FrWindowArea;
-
typedef enum {
DIALOG_RESPONSE_NONE = 1,
DIALOG_RESPONSE_OPEN_ARCHIVE,
@@ -159,10 +154,8 @@ typedef enum {
DIALOG_RESPONSE_QUIT
} DialogResponse;
-
/* -- FrClipboardData -- */
-
typedef struct {
int refs;
char *archive_filename;
@@ -174,7 +167,6 @@ typedef struct {
char *current_dir;
} FrClipboardData;
-
static FrClipboardData*
fr_clipboard_data_new (void)
{
@@ -186,7 +178,6 @@ fr_clipboard_data_new (void)
return data;
}
-
static FrClipboardData *
fr_clipboard_data_ref (FrClipboardData *clipboard_data)
{
@@ -194,7 +185,6 @@ fr_clipboard_data_ref (FrClipboardData *clipboard_data)
return clipboard_data;
}
-
static void
fr_clipboard_data_unref (FrClipboardData *clipboard_data)
{
@@ -212,7 +202,6 @@ fr_clipboard_data_unref (FrClipboardData *clipboard_data)
g_free (clipboard_data);
}
-
static void
fr_clipboard_data_set_password (FrClipboardData *clipboard_data,
const char *password)
@@ -223,7 +212,6 @@ fr_clipboard_data_set_password (FrClipboardData *clipboard_data,
clipboard_data->archive_password = g_strdup (password);
}
-
/**/
enum {
@@ -327,7 +315,10 @@ struct _FrWindowPrivateData {
FrArchive *copy_from_archive;
- GtkActionGroup *actions;
+ GActionGroup *actions;
+ GtkBuilder *ui_manager;
+ GtkWidget *menubar_recentmenu;
+ GtkWidget *toolbar_recentmenu;
GtkWidget *file_popup_menu;
GtkWidget *folder_popup_menu;
@@ -395,12 +386,12 @@ struct _FrWindowPrivateData {
GtkWindow *load_error_parent_window;
gboolean showing_error_dialog;
GtkWindow *error_dialog_parent;
-};
+ gboolean close_dialog;
+};
/* -- fr_window_free_private_data -- */
-
static void
fr_window_free_batch_data (FrWindow *window)
{
@@ -422,7 +413,6 @@ fr_window_free_batch_data (FrWindow *window)
window->priv->batch_title = NULL;
}
-
static void
gh_unref_pixbuf (gpointer key,
gpointer value,
@@ -431,7 +421,6 @@ gh_unref_pixbuf (gpointer key,
g_object_unref (value);
}
-
static void
fr_window_clipboard_remove_file_list (FrWindow *window,
GList *file_list)
@@ -472,7 +461,6 @@ fr_window_clipboard_remove_file_list (FrWindow *window,
}
}
-
static void
fr_window_history_clear (FrWindow *window)
{
@@ -484,7 +472,6 @@ fr_window_history_clear (FrWindow *window)
window->priv->last_location = NULL;
}
-
static void
fr_window_free_open_files (FrWindow *window)
{
@@ -501,7 +488,6 @@ fr_window_free_open_files (FrWindow *window)
window->priv->open_files = NULL;
}
-
static void
fr_window_convert_data_free (FrWindow *window,
gboolean all)
@@ -529,7 +515,6 @@ fr_window_convert_data_free (FrWindow *window,
}
}
-
static void
fr_window_free_private_data (FrWindow *window)
{
@@ -560,6 +545,7 @@ fr_window_free_private_data (FrWindow *window)
g_free (window->priv->add_default_dir);
g_free (window->priv->extract_default_dir);
g_free (window->priv->archive_uri);
+ g_free (window->priv->working_archive);
g_free (window->priv->password);
g_free (window->priv->password_for_paste);
@@ -622,8 +608,13 @@ fr_window_free_private_data (FrWindow *window)
if (window->priv->settings_caja)
_g_object_unref (window->priv->settings_caja);
-}
+ if (window->priv->ui_manager)
+ {
+ g_object_unref (window->priv->ui_manager);
+ window->priv->ui_manager = NULL;
+ }
+}
static void
fr_window_finalize (GObject *object)
@@ -656,7 +647,6 @@ fr_window_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
-
static gboolean
close__step2 (gpointer data)
{
@@ -664,7 +654,6 @@ close__step2 (gpointer data)
return FALSE;
}
-
void
fr_window_close (FrWindow *window)
{
@@ -693,7 +682,6 @@ fr_window_close (FrWindow *window)
g_idle_add (close__step2, window);
}
-
static void
fr_window_class_init (FrWindowClass *class)
{
@@ -734,10 +722,8 @@ fr_window_class_init (FrWindowClass *class)
gobject_class->finalize = fr_window_finalize;
}
-
static void fr_window_update_paste_command_sensitivity (FrWindow *, GtkClipboard *);
-
static void
clipboard_owner_change_cb (GtkClipboard *clipboard,
GdkEvent *event,
@@ -746,7 +732,6 @@ clipboard_owner_change_cb (GtkClipboard *clipboard,
fr_window_update_paste_command_sensitivity ((FrWindow *) user_data, clipboard);
}
-
static void
fr_window_realized (GtkWidget *window,
gpointer *data)
@@ -760,7 +745,6 @@ fr_window_realized (GtkWidget *window,
window);
}
-
static void
fr_window_unrealized (GtkWidget *window,
gpointer *data)
@@ -773,7 +757,6 @@ fr_window_unrealized (GtkWidget *window,
window);
}
-
static void
fr_window_init (FrWindow *window)
{
@@ -799,7 +782,6 @@ fr_window_init (FrWindow *window)
NULL);
}
-
GType
fr_window_get_type (void)
{
@@ -828,10 +810,8 @@ fr_window_get_type (void)
return type;
}
-
/* -- window history -- */
-
#if 0
static void
fr_window_history_print (FrWindow *window)
@@ -847,7 +827,6 @@ fr_window_history_print (FrWindow *window)
}
#endif
-
static void
fr_window_history_add (FrWindow *window,
const char *path)
@@ -886,7 +865,6 @@ fr_window_history_add (FrWindow *window,
}
}
-
static void
fr_window_history_pop (FrWindow *window)
{
@@ -903,10 +881,8 @@ fr_window_history_pop (FrWindow *window)
g_list_free (first);
}
-
/* -- window_update_file_list -- */
-
static GPtrArray *
fr_window_get_current_dir_list (FrWindow *window)
{
@@ -926,7 +902,6 @@ fr_window_get_current_dir_list (FrWindow *window)
return files;
}
-
static gint
sort_by_name (gconstpointer ptr1,
gconstpointer ptr2)
@@ -944,7 +919,6 @@ sort_by_name (gconstpointer ptr1,
return strcmp (fdata1->sort_key, fdata2->sort_key);
}
-
static gint
sort_by_size (gconstpointer ptr1,
gconstpointer ptr2)
@@ -973,7 +947,6 @@ sort_by_size (gconstpointer ptr1,
return -1;
}
-
static gint
sort_by_type (gconstpointer ptr1,
gconstpointer ptr2)
@@ -981,7 +954,7 @@ sort_by_type (gconstpointer ptr1,
FileData *fdata1 = *((FileData **) ptr1);
FileData *fdata2 = *((FileData **) ptr2);
int result;
- const char *desc1, *desc2;
+ char *desc1, *desc2;
if (file_data_is_dir (fdata1) != file_data_is_dir (fdata2)) {
if (file_data_is_dir (fdata1))
@@ -996,13 +969,15 @@ sort_by_type (gconstpointer ptr1,
desc2 = g_content_type_get_description (fdata2->content_type);
result = strcasecmp (desc1, desc2);
+ g_free (desc1);
+ g_free (desc2);
+
if (result == 0)
return sort_by_name (ptr1, ptr2);
else
return result;
}
-
static gint
sort_by_time (gconstpointer ptr1,
gconstpointer ptr2)
@@ -1027,7 +1002,6 @@ sort_by_time (gconstpointer ptr1,
return -1;
}
-
static gint
sort_by_path (gconstpointer ptr1,
gconstpointer ptr2)
@@ -1054,7 +1028,6 @@ sort_by_path (gconstpointer ptr1,
return result;
}
-
static guint64
get_dir_size (FrWindow *window,
const char *current_dir,
@@ -1081,7 +1054,6 @@ get_dir_size (FrWindow *window,
return size;
}
-
static gboolean
file_data_respects_filter (FrWindow *window,
FileData *fdata)
@@ -1098,7 +1070,6 @@ file_data_respects_filter (FrWindow *window,
return strncasecmp (fdata->name, filter, strlen (filter)) == 0;
}
-
static gboolean
compute_file_list_name (FrWindow *window,
FileData *fdata,
@@ -1157,7 +1128,6 @@ compute_file_list_name (FrWindow *window,
return TRUE;
}
-
static void
fr_window_compute_list_names (FrWindow *window,
GPtrArray *files)
@@ -1198,7 +1168,6 @@ fr_window_compute_list_names (FrWindow *window,
g_hash_table_destroy (names_hash);
}
-
static gboolean
fr_window_dir_exists_in_archive (FrWindow *window,
const char *dir_name)
@@ -1233,7 +1202,6 @@ fr_window_dir_exists_in_archive (FrWindow *window,
return FALSE;
}
-
static char *
get_parent_dir (const char *current_dir)
{
@@ -1261,10 +1229,8 @@ get_parent_dir (const char *current_dir)
return retval;
}
-
static void fr_window_update_statusbar_list_info (FrWindow *window);
-
static GdkPixbuf *
get_mime_type_icon (const char *mime_type)
{
@@ -1287,7 +1253,6 @@ get_mime_type_icon (const char *mime_type)
return pixbuf;
}
-
static GdkPixbuf *
get_icon (FileData *fdata)
{
@@ -1301,7 +1266,6 @@ get_icon (FileData *fdata)
return get_mime_type_icon (content_type);
}
-
static GdkPixbuf *
get_emblem (FileData *fdata)
{
@@ -1311,7 +1275,6 @@ get_emblem (FileData *fdata)
return get_mime_type_icon ("emblem-nowrite");
}
-
static int
get_column_from_sort_method (FrWindowSortMethod sort_method)
{
@@ -1328,7 +1291,6 @@ get_column_from_sort_method (FrWindowSortMethod sort_method)
return COLUMN_NAME;
}
-
static int
get_sort_method_from_column (int column_id)
{
@@ -1345,7 +1307,6 @@ get_sort_method_from_column (int column_id)
return FR_WINDOW_SORT_BY_NAME;
}
-
static void
add_selected_from_list_view (GtkTreeModel *model,
GtkTreePath *path,
@@ -1361,7 +1322,6 @@ add_selected_from_list_view (GtkTreeModel *model,
*list = g_list_prepend (*list, fdata);
}
-
static void
add_selected_from_tree_view (GtkTreeModel *model,
GtkTreePath *path,
@@ -1377,7 +1337,6 @@ add_selected_from_tree_view (GtkTreeModel *model,
*list = g_list_prepend (*list, dir_path);
}
-
static void
add_selected_fd (GtkTreeModel *model,
GtkTreePath *path,
@@ -1394,7 +1353,6 @@ add_selected_fd (GtkTreeModel *model,
*list = g_list_prepend (*list, fdata);
}
-
static GList *
get_selection_as_fd (FrWindow *window)
{
@@ -1412,7 +1370,6 @@ get_selection_as_fd (FrWindow *window)
return list;
}
-
static void
fr_window_update_statusbar_list_info (FrWindow *window)
{
@@ -1488,7 +1445,6 @@ fr_window_update_statusbar_list_info (FrWindow *window)
g_free (info);
}
-
static void
fr_window_populate_file_list (FrWindow *window,
GPtrArray *files)
@@ -1560,7 +1516,7 @@ fr_window_populate_file_list (FrWindow *window,
char *utf8_path;
char *s_size;
char *s_time;
- const char *desc;
+ char *desc;
utf8_path = g_filename_display_name (fdata->path);
@@ -1583,6 +1539,7 @@ fr_window_populate_file_list (FrWindow *window,
g_free (utf8_path);
g_free (s_size);
g_free (s_time);
+ g_free (desc);
}
g_free (utf8_name);
if (icon != NULL)
@@ -1599,7 +1556,6 @@ fr_window_populate_file_list (FrWindow *window,
fr_window_stop_activity_mode (window);
}
-
static int
path_compare (gconstpointer a,
gconstpointer b)
@@ -1610,7 +1566,6 @@ path_compare (gconstpointer a,
return strcmp (path_a, path_b);
}
-
static gboolean
get_tree_iter_from_path (FrWindow *window,
const char *path,
@@ -1647,19 +1602,17 @@ get_tree_iter_from_path (FrWindow *window,
return result;
}
-
static void
set_sensitive (FrWindow *window,
- const char *action_name,
- gboolean sensitive)
+ const char *id,
+ gboolean sensitive)
{
- GtkAction *action;
+ GtkWidget *widget;
- action = gtk_action_group_get_action (window->priv->actions, action_name);
- g_object_set (action, "sensitive", sensitive, NULL);
+ widget = (GtkWidget *)gtk_builder_get_object (window->priv->ui_manager, id);
+ g_object_set (widget, "sensitive", sensitive, NULL);
}
-
static void
fr_window_update_current_location (FrWindow *window)
{
@@ -1676,10 +1629,10 @@ fr_window_update_current_location (FrWindow *window)
gtk_entry_set_text (GTK_ENTRY (window->priv->location_entry), window->priv->archive_present? current_dir: "");
- set_sensitive (window, "GoBack", window->priv->archive_present && (current_dir != NULL) && (window->priv->history_current != NULL) && (window->priv->history_current->next != NULL));
- set_sensitive (window, "GoForward", window->priv->archive_present && (current_dir != NULL) && (window->priv->history_current != NULL) && (window->priv->history_current->prev != NULL));
- set_sensitive (window, "GoUp", window->priv->archive_present && (current_dir != NULL) && (strcmp (current_dir, "/") != 0));
- set_sensitive (window, "GoHome", window->priv->archive_present);
+ set_sensitive (window, "tool_goback_item", window->priv->archive_present && (current_dir != NULL) && (window->priv->history_current != NULL) && (window->priv->history_current->next != NULL));
+ set_sensitive (window, "tool_gonext_item", window->priv->archive_present && (current_dir != NULL) && (window->priv->history_current != NULL) && (window->priv->history_current->prev != NULL));
+ set_sensitive (window, "tool_goup_item", window->priv->archive_present && (current_dir != NULL) && (strcmp (current_dir, "/") != 0));
+ set_sensitive (window, "tool_gohome_item", window->priv->archive_present);
gtk_widget_set_sensitive (window->priv->location_entry, window->priv->archive_present);
gtk_widget_set_sensitive (window->priv->location_label, window->priv->archive_present);
gtk_widget_set_sensitive (window->priv->filter_entry, window->priv->archive_present);
@@ -1703,7 +1656,6 @@ fr_window_update_current_location (FrWindow *window)
g_free (path);
}
-
static void
fr_window_update_dir_tree (FrWindow *window)
{
@@ -1833,7 +1785,6 @@ fr_window_update_dir_tree (FrWindow *window)
fr_window_update_current_location (window);
}
-
static void
fr_window_update_filter_bar_visibility (FrWindow *window)
{
@@ -1846,7 +1797,6 @@ fr_window_update_filter_bar_visibility (FrWindow *window)
gtk_widget_show (window->priv->filter_bar);
}
-
static void
fr_window_update_file_list (FrWindow *window,
gboolean update_view)
@@ -1926,14 +1876,12 @@ fr_window_update_file_list (FrWindow *window,
g_ptr_array_free (files, TRUE);
}
-
void
fr_window_update_list_order (FrWindow *window)
{
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (window->priv->list_store), get_column_from_sort_method (window->priv->sort_method), window->priv->sort_type);
}
-
static void
fr_window_update_title (FrWindow *window)
{
@@ -1954,7 +1902,6 @@ fr_window_update_title (FrWindow *window)
}
}
-
static void
check_whether_has_a_dir (GtkTreeModel *model,
GtkTreePath *path,
@@ -1971,7 +1918,6 @@ check_whether_has_a_dir (GtkTreeModel *model,
*has_a_dir = TRUE;
}
-
static gboolean
selection_has_a_dir (FrWindow *window)
{
@@ -1992,19 +1938,17 @@ selection_has_a_dir (FrWindow *window)
return has_a_dir;
}
-
static void
set_active (FrWindow *window,
const char *action_name,
gboolean is_active)
{
- GtkAction *action;
+ GAction *action;
- action = gtk_action_group_get_action (window->priv->actions, action_name);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), is_active);
+ action = g_action_map_lookup_action (G_ACTION_MAP (window->priv->actions), action_name);
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (is_active));
}
-
static void
fr_window_update_paste_command_sensitivity (FrWindow *window,
GtkClipboard *clipboard)
@@ -2024,10 +1968,11 @@ fr_window_update_paste_command_sensitivity (FrWindow *window,
ro = ! no_archive && window->archive->read_only;
compr_file = ! no_archive && window->archive->is_compressed_file;
- set_sensitive (window, "Paste", ! no_archive && ! ro && ! running && ! compr_file && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT) && gtk_clipboard_wait_is_target_available (clipboard, FR_SPECIAL_URI_LIST));
+ set_sensitive (window, "paste_item", ! no_archive && ! ro && ! running && ! compr_file && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT) && gtk_clipboard_wait_is_target_available (clipboard, FR_SPECIAL_URI_LIST));
+ set_sensitive (window, "popup_paste_item", ! no_archive && ! ro && ! running && ! compr_file && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT) && gtk_clipboard_wait_is_target_available (clipboard, FR_SPECIAL_URI_LIST));
+ set_sensitive (window, "popup_paste_item1", ! no_archive && ! ro && ! running && ! compr_file && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT) && gtk_clipboard_wait_is_target_available (clipboard, FR_SPECIAL_URI_LIST));
}
-
static void
fr_window_update_sensitivity (FrWindow *window)
{
@@ -2054,36 +1999,44 @@ fr_window_update_sensitivity (FrWindow *window)
one_file_selected = n_selected == 1;
dir_selected = selection_has_a_dir (window);
- set_sensitive (window, "AddFiles", ! no_archive && ! ro && ! running && ! compr_file);
- set_sensitive (window, "AddFiles_Toolbar", ! no_archive && ! ro && ! running && ! compr_file);
- set_sensitive (window, "AddFolder", ! no_archive && ! ro && ! running && ! compr_file);
- set_sensitive (window, "AddFolder_Toolbar", ! no_archive && ! ro && ! running && ! compr_file);
- set_sensitive (window, "Copy", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
- set_sensitive (window, "Cut", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
- set_sensitive (window, "Delete", ! no_archive && ! ro && ! window->priv->archive_new && ! running && ! compr_file);
- set_sensitive (window, "DeselectAll", ! no_archive && sel_not_null);
- set_sensitive (window, "Extract", file_op);
- set_sensitive (window, "Extract_Toolbar", file_op);
- set_sensitive (window, "Find", ! no_archive);
- set_sensitive (window, "LastOutput", ((window->archive != NULL)
+ set_sensitive (window, "add_files_item", ! no_archive && ! ro && ! running && ! compr_file);
+ set_sensitive (window, "tool_add_files_item", ! no_archive && ! ro && ! running && ! compr_file);
+ set_sensitive (window, "add_folder_item", ! no_archive && ! ro && ! running && ! compr_file);
+ set_sensitive (window, "tool_add_folder_item", ! no_archive && ! ro && ! running && ! compr_file);
+ set_sensitive (window, "copy_item", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
+ set_sensitive (window, "popup_copy_item", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
+ set_sensitive (window, "popup_copy_item1", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
+ set_sensitive (window, "cut_item", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
+ set_sensitive (window, "popup_cut_item", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
+ set_sensitive (window, "popup_cut_item1", ! no_archive && ! ro && ! running && ! compr_file && sel_not_null && (window->priv->list_mode != FR_WINDOW_LIST_MODE_FLAT));
+ set_sensitive (window, "delete_item", ! no_archive && ! ro && ! window->priv->archive_new && ! running && ! compr_file);
+ set_sensitive (window, "popup_delete_item", ! no_archive && ! ro && ! window->priv->archive_new && ! running && ! compr_file);
+ set_sensitive (window, "popup_delete_item1", ! no_archive && ! ro && ! window->priv->archive_new && ! running && ! compr_file);
+ set_sensitive (window, "deselect_all_item", ! no_archive && sel_not_null);
+ set_sensitive (window, "extract_item", file_op);
+ set_sensitive (window, "tool_extract_item", file_op);
+ set_sensitive (window, "find_item", ! no_archive);
+ set_sensitive (window, "last_output_item", ((window->archive != NULL)
&& (window->archive->process != NULL)
&& (window->archive->process->out.raw != NULL)));
- set_sensitive (window, "New", ! running);
- set_sensitive (window, "Open", ! running);
- set_sensitive (window, "Open_Toolbar", ! running);
- set_sensitive (window, "OpenSelection", file_op && sel_not_null && ! dir_selected);
- set_sensitive (window, "OpenFolder", file_op && one_file_selected && dir_selected);
- set_sensitive (window, "Password", ! running && (window->priv->asked_for_password || (! no_archive && window->archive->command->propPassword)));
- set_sensitive (window, "Properties", file_op);
- set_sensitive (window, "Close", !running || window->priv->stoppable);
- set_sensitive (window, "Reload", ! (no_archive || running));
- set_sensitive (window, "Rename", ! no_archive && ! ro && ! running && ! compr_file && one_file_selected);
- set_sensitive (window, "SaveAs", ! no_archive && ! compr_file && ! running);
- set_sensitive (window, "SelectAll", ! no_archive);
- set_sensitive (window, "Stop", running && window->priv->stoppable);
- set_sensitive (window, "TestArchive", ! no_archive && ! running && window->archive->command->propTest);
- set_sensitive (window, "ViewSelection", file_op && one_file_selected && ! dir_selected);
- set_sensitive (window, "ViewSelection_Toolbar", file_op && one_file_selected && ! dir_selected);
+ set_sensitive (window, "new_item", ! running);
+ set_sensitive (window, "tool_new_item", ! running);
+ set_sensitive (window, "open_item", ! running);
+ set_sensitive (window, "popup_open_select_item", file_op && sel_not_null && ! dir_selected);
+ set_sensitive (window, "popup_open_item1", file_op && one_file_selected && dir_selected);
+ set_sensitive (window, "password_item", ! running && (window->priv->asked_for_password || (! no_archive && window->archive->command->propPassword)));
+ set_sensitive (window, "properties_item", file_op);
+ set_sensitive (window, "close_item", !running || window->priv->stoppable);
+ set_sensitive (window, "reload_item", ! (no_archive || running));
+ set_sensitive (window, "rename_item", ! no_archive && ! ro && ! running && ! compr_file && one_file_selected);
+ set_sensitive (window, "popup_rename_item", ! no_archive && ! ro && ! running && ! compr_file && one_file_selected);
+ set_sensitive (window, "popup_rename_item1", ! no_archive && ! ro && ! running && ! compr_file && one_file_selected);
+ set_sensitive (window, "open_saveas_item", ! no_archive && ! compr_file && ! running);
+ set_sensitive (window, "select_all_item", ! no_archive);
+ set_sensitive (window, "stop_item", running && window->priv->stoppable);
+ set_sensitive (window, "tool_stop_item", running && window->priv->stoppable);
+ set_sensitive (window, "test_integrity_item", ! no_archive && ! running && window->archive->command->propTest);
+ set_sensitive (window, "popup_open_item", file_op && one_file_selected && ! dir_selected);
if (window->priv->progress_dialog != NULL)
gtk_dialog_set_response_sensitive (GTK_DIALOG (window->priv->progress_dialog),
@@ -2092,18 +2045,17 @@ fr_window_update_sensitivity (FrWindow *window)
fr_window_update_paste_command_sensitivity (window, NULL);
- set_sensitive (window, "SelectAll", (window->priv->current_view_length > 0) && (window->priv->current_view_length != n_selected));
- set_sensitive (window, "DeselectAll", n_selected > 0);
- set_sensitive (window, "OpenRecent", ! running);
- set_sensitive (window, "OpenRecent_Toolbar", ! running);
+ set_sensitive (window, "select_all_item", (window->priv->current_view_length > 0) && (window->priv->current_view_length != n_selected));
+ set_sensitive (window, "deselect_all_item", n_selected > 0);
+ set_sensitive (window, "open_recent_item", ! running);
+ set_sensitive (window, "tool_open_recent_item", ! running);
- set_sensitive (window, "ViewFolders", (window->priv->list_mode == FR_WINDOW_LIST_MODE_AS_DIR));
+ set_sensitive (window, "view_folder_item", (window->priv->list_mode == FR_WINDOW_LIST_MODE_AS_DIR));
- set_sensitive (window, "ViewAllFiles", ! window->priv->filter_mode);
- set_sensitive (window, "ViewAsFolder", ! window->priv->filter_mode);
+ set_sensitive (window, "view_all_files_item", ! window->priv->filter_mode);
+ set_sensitive (window, "view_as_folder_item", ! window->priv->filter_mode);
}
-
static gboolean
location_entry_key_press_event_cb (GtkWidget *widget,
GdkEventKey *event,
@@ -2119,7 +2071,6 @@ location_entry_key_press_event_cb (GtkWidget *widget,
return FALSE;
}
-
static gboolean
real_close_progress_dialog (gpointer data)
{
@@ -2136,7 +2087,6 @@ real_close_progress_dialog (gpointer data)
return FALSE;
}
-
static void close_suspend_process(FrWindow *window)
{
if (window->archive->process != NULL)
@@ -2176,21 +2126,19 @@ close_progress_dialog (FrWindow *window,
close_suspend_process(window);
}
-
static gboolean
progress_dialog_delete_event (GtkWidget *caller,
GdkEvent *event,
FrWindow *window)
{
if (window->priv->stoppable) {
- activate_action_stop (NULL, window);
+ activate_action_stop (NULL, NULL, window);
close_progress_dialog (window, TRUE);
}
return TRUE;
}
-
static void
open_folder (GtkWindow *parent,
const char *folder)
@@ -2223,7 +2171,6 @@ open_folder (GtkWindow *parent,
}
}
-
static void
fr_window_view_extraction_destination_folder (FrWindow *window)
{
@@ -2277,7 +2224,7 @@ progress_dialog_response (GtkDialog *dialog,
switch (response_id) {
case GTK_RESPONSE_CANCEL:
if (window->priv->stoppable) {
- activate_action_stop (NULL, window);
+ activate_action_stop (NULL, NULL, window);
close_progress_dialog (window, TRUE);
}
break;
@@ -2310,7 +2257,6 @@ progress_dialog_response (GtkDialog *dialog,
}
}
-
static char*
get_action_description (FrAction action,
const char *uri)
@@ -2376,7 +2322,6 @@ get_action_description (FrAction action,
return message;
}
-
static void
progress_dialog_update_action_description (FrWindow *window)
{
@@ -2407,22 +2352,21 @@ progress_dialog_update_action_description (FrWindow *window)
g_free (description);
}
-
static gboolean
fr_window_working_archive_cb (FrCommand *command,
const char *archive_filename,
FrWindow *window)
{
g_free (window->priv->working_archive);
- window->priv->working_archive = NULL;
if (archive_filename != NULL)
window->priv->working_archive = g_strdup (archive_filename);
+ else
+ window->priv->working_archive = NULL;
progress_dialog_update_action_description (window);
return TRUE;
}
-
static gboolean
fr_window_message_cb (FrCommand *command,
const char *msg,
@@ -2479,7 +2423,6 @@ fr_window_message_cb (FrCommand *command,
return TRUE;
}
-
static GtkWidget*
dialog_add_button_with_icon_name (GtkDialog *dialog,
const gchar *button_text,
@@ -2500,7 +2443,6 @@ dialog_add_button_with_icon_name (GtkDialog *dialog,
return button;
}
-
static void
create_the_progress_dialog (FrWindow *window)
{
@@ -2626,7 +2568,6 @@ create_the_progress_dialog (FrWindow *window)
window);
}
-
static gboolean
display_progress_dialog (gpointer data)
{
@@ -2651,7 +2592,6 @@ display_progress_dialog (gpointer data)
return FALSE;
}
-
static void
open_progress_dialog (FrWindow *window,
gboolean open_now)
@@ -2691,7 +2631,6 @@ open_progress_dialog (FrWindow *window,
window);
}
-
static gboolean
fr_window_progress_cb (FrArchive *archive,
double fraction,
@@ -2743,7 +2682,6 @@ fr_window_progress_cb (FrArchive *archive,
return TRUE;
}
-
static void
open_progress_dialog_with_open_destination (FrWindow *window)
{
@@ -2769,8 +2707,11 @@ open_progress_dialog_with_open_destination (FrWindow *window)
display_progress_dialog (window);
fr_window_progress_cb (NULL, 1.0, window);
fr_window_message_cb (NULL, _("Extraction completed successfully"), window);
-}
+ if (window->priv->close_dialog)
+ close_progress_dialog (window, TRUE);
+
+}
static void
open_progress_dialog_with_open_archive (FrWindow *window)
@@ -2796,7 +2737,6 @@ open_progress_dialog_with_open_archive (FrWindow *window)
fr_window_message_cb (NULL, _("Archive created successfully"), window);
}
-
void
fr_window_push_message (FrWindow *window,
const char *msg)
@@ -2809,7 +2749,6 @@ fr_window_push_message (FrWindow *window,
msg);
}
-
void
fr_window_pop_message (FrWindow *window)
{
@@ -2820,7 +2759,6 @@ fr_window_pop_message (FrWindow *window)
gtk_label_set_text (GTK_LABEL (window->priv->pd_message), "");
}
-
static void
action_started (FrArchive *archive,
FrAction action,
@@ -2855,7 +2793,6 @@ action_started (FrArchive *archive,
}
}
-
static void
fr_window_add_to_recent_list (FrWindow *window,
char *uri)
@@ -2875,13 +2812,13 @@ fr_window_add_to_recent_list (FrWindow *window,
recent_data->app_exec = "engrampa";
gtk_recent_manager_add_full (gtk_recent_manager_get_default (), uri, recent_data);
+ g_free (recent_data->mime_type);
g_free (recent_data);
}
else
gtk_recent_manager_add_item (gtk_recent_manager_get_default (), uri);
}
-
static void
fr_window_remove_from_recent_list (FrWindow *window,
char *filename)
@@ -2890,7 +2827,6 @@ fr_window_remove_from_recent_list (FrWindow *window,
gtk_recent_manager_remove_item (gtk_recent_manager_get_default (), filename, NULL);
}
-
static void
error_dialog_response_cb (GtkDialog *dialog,
gint arg1,
@@ -2910,7 +2846,6 @@ error_dialog_response_cb (GtkDialog *dialog,
gtk_widget_destroy (GTK_WIDGET (window));
}
-
static void
fr_window_show_error_dialog (FrWindow *window,
GtkWidget *dialog,
@@ -2949,14 +2884,12 @@ fr_window_show_error_dialog (FrWindow *window,
window->priv->error_dialog_parent = dialog_parent;
}
-
void
fr_window_destroy_with_error_dialog (FrWindow *window)
{
window->priv->destroy_with_error_dialog = TRUE;
}
-
static gboolean
handle_errors (FrWindow *window,
FrArchive *archive,
@@ -3085,7 +3018,6 @@ handle_errors (FrWindow *window,
return TRUE;
}
-
static void
convert__action_performed (FrArchive *archive,
FrAction action,
@@ -3119,10 +3051,8 @@ convert__action_performed (FrArchive *archive,
fr_window_update_statusbar_list_info (window);
}
-
static void fr_window_exec_next_batch_action (FrWindow *window);
-
static void
action_performed (FrArchive *archive,
FrAction action,
@@ -3312,13 +3242,10 @@ action_performed (FrArchive *archive,
}
}
-
/* -- selections -- */
-
#undef DEBUG_GET_DIR_LIST_FROM_PATH
-
static GList *
get_dir_list_from_path (FrWindow *window,
char *path)
@@ -3366,7 +3293,6 @@ get_dir_list_from_path (FrWindow *window,
return g_list_reverse (list);
}
-
static GList *
get_dir_list_from_file_data (FrWindow *window,
FileData *fdata)
@@ -3383,7 +3309,6 @@ get_dir_list_from_file_data (FrWindow *window,
return list;
}
-
GList *
fr_window_get_file_list_selection (FrWindow *window,
gboolean recursive,
@@ -3425,7 +3350,6 @@ fr_window_get_file_list_selection (FrWindow *window,
return g_list_reverse (list);
}
-
GList *
fr_window_get_folder_tree_selection (FrWindow *window,
gboolean recursive,
@@ -3463,7 +3387,6 @@ fr_window_get_folder_tree_selection (FrWindow *window,
return g_list_reverse (list);
}
-
GList *
fr_window_get_file_list_from_path_list (FrWindow *window,
GList *path_list,
@@ -3522,7 +3445,6 @@ fr_window_get_file_list_from_path_list (FrWindow *window,
return g_list_reverse (list);
}
-
GList *
fr_window_get_file_list_pattern (FrWindow *window,
const char *pattern)
@@ -3554,7 +3476,6 @@ fr_window_get_file_list_pattern (FrWindow *window,
return g_list_reverse (list);
}
-
static GList *
fr_window_get_file_list (FrWindow *window)
{
@@ -3572,17 +3493,14 @@ fr_window_get_file_list (FrWindow *window)
return g_list_reverse (list);
}
-
int
fr_window_get_n_selected_files (FrWindow *window)
{
return gtk_tree_selection_count_selected_rows (gtk_tree_view_get_selection (GTK_TREE_VIEW (window->priv->list_view)));
}
-
/**/
-
static int
dir_tree_button_press_cb (GtkWidget *widget,
GdkEventButton *event,
@@ -3603,7 +3521,7 @@ dir_tree_button_press_cb (GtkWidget *widget,
GtkTreeIter iter;
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (window->priv->tree_view),
- event->x, event->y,
+ (int) event->x, (int) event->y,
&path, NULL, NULL, NULL)) {
if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (window->priv->tree_store), &iter, path)) {
@@ -3637,7 +3555,6 @@ dir_tree_button_press_cb (GtkWidget *widget,
return FALSE;
}
-
static FileData *
fr_window_get_selected_item_from_file_list (FrWindow *window)
{
@@ -3665,7 +3582,6 @@ fr_window_get_selected_item_from_file_list (FrWindow *window)
return fdata;
}
-
static char *
fr_window_get_selected_folder_in_tree_view (FrWindow *window)
{
@@ -3690,7 +3606,6 @@ fr_window_get_selected_folder_in_tree_view (FrWindow *window)
return path;
}
-
void
fr_window_current_folder_activated (FrWindow *window,
gboolean from_sidebar)
@@ -3722,7 +3637,6 @@ fr_window_current_folder_activated (FrWindow *window,
g_free (dir_path);
}
-
static gboolean
row_activated_cb (GtkTreeView *tree_view,
GtkTreePath *path,
@@ -3760,7 +3674,6 @@ row_activated_cb (GtkTreeView *tree_view,
return FALSE;
}
-
static int
file_button_press_cb (GtkWidget *widget,
GdkEventButton *event,
@@ -3787,7 +3700,7 @@ file_button_press_cb (GtkWidget *widget,
int n_selected;
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (window->priv->list_view),
- event->x, event->y,
+ (int) event->x, (int) event->y,
&path, NULL, NULL, NULL)) {
if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (window->priv->list_store), &iter, path)) {
@@ -3817,7 +3730,7 @@ file_button_press_cb (GtkWidget *widget,
GtkTreePath *path = NULL;
if (! gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (window->priv->list_view),
- event->x, event->y,
+ (int) event->x, (int) event->y,
&path, NULL, NULL, NULL)) {
gtk_tree_selection_unselect_all (selection);
}
@@ -3848,7 +3761,6 @@ file_button_press_cb (GtkWidget *widget,
return FALSE;
}
-
static int
file_button_release_cb (GtkWidget *widget,
GdkEventButton *event,
@@ -3873,7 +3785,7 @@ file_button_release_cb (GtkWidget *widget,
GtkTreePath *path = NULL;
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (window->priv->list_view),
- event->x, event->y,
+ (int) event->x, (int) event->y,
&path, NULL, NULL, NULL)) {
if ((gtk_tree_path_compare (window->priv->path_clicked, path) == 0)
@@ -3901,7 +3813,6 @@ file_button_release_cb (GtkWidget *widget,
return FALSE;
}
-
static gboolean
file_motion_notify_callback (GtkWidget *widget,
GdkEventMotion *event,
@@ -3922,7 +3833,7 @@ file_motion_notify_callback (GtkWidget *widget,
last_hover_path = window->priv->list_hover_path;
gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
- event->x, event->y,
+ (int) event->x, (int) event->y,
&window->priv->list_hover_path,
NULL, NULL, NULL);
@@ -3960,7 +3871,6 @@ file_motion_notify_callback (GtkWidget *widget,
return FALSE;
}
-
static gboolean
file_leave_notify_callback (GtkWidget *widget,
GdkEventCrossing *event,
@@ -3984,10 +3894,8 @@ file_leave_notify_callback (GtkWidget *widget,
return FALSE;
}
-
/* -- drag and drop -- */
-
static GList *
get_uri_list_from_selection_data (char *uri_list)
{
@@ -4006,7 +3914,6 @@ get_uri_list_from_selection_data (char *uri_list)
return g_list_reverse (list);
}
-
static gboolean
fr_window_drag_motion (GtkWidget *widget,
GdkDragContext *context,
@@ -4027,10 +3934,8 @@ fr_window_drag_motion (GtkWidget *widget,
return TRUE;
}
-
static void fr_window_paste_from_clipboard_data (FrWindow *window, FrClipboardData *data);
-
static FrClipboardData*
get_clipboard_data_from_selection_data (FrWindow *window,
const char *data)
@@ -4060,7 +3965,6 @@ get_clipboard_data_from_selection_data (FrWindow *window,
return clipboard_data;
}
-
static void
fr_window_drag_data_received (GtkWidget *widget,
GdkDragContext *context,
@@ -4229,7 +4133,6 @@ fr_window_drag_data_received (GtkWidget *widget,
debug (DEBUG_INFO, "::DragDataReceived <--\n");
}
-
static gboolean
file_list_drag_begin (GtkWidget *widget,
GdkDragContext *context,
@@ -4257,7 +4160,6 @@ file_list_drag_begin (GtkWidget *widget,
return TRUE;
}
-
static void
file_list_drag_end (GtkWidget *widget,
GdkDragContext *context,
@@ -4280,6 +4182,7 @@ file_list_drag_end (GtkWidget *widget,
fr_window_archive_extract (window,
window->priv->drag_file_list,
window->priv->drag_destination_folder,
+ NULL,
window->priv->drag_base_dir,
FALSE,
FR_OVERWRITE_ASK,
@@ -4292,7 +4195,6 @@ file_list_drag_end (GtkWidget *widget,
debug (DEBUG_INFO, "::DragEnd <--\n");
}
-
/* The following three functions taken from bugzilla
* (http://bugzilla.mate.org/attachment.cgi?id=49362&action=view)
* Author: Christian Neumair
@@ -4321,7 +4223,6 @@ get_xds_atom_value (GdkDragContext *context)
return ret;
}
-
static gboolean
context_offers_target (GdkDragContext *context,
GdkAtom target)
@@ -4329,7 +4230,6 @@ context_offers_target (GdkDragContext *context,
return (g_list_find (gdk_drag_context_list_targets (context), target) != NULL);
}
-
static gboolean
caja_xds_dnd_is_valid_xds_context (GdkDragContext *context)
{
@@ -4349,7 +4249,6 @@ caja_xds_dnd_is_valid_xds_context (GdkDragContext *context)
return ret;
}
-
static char *
get_selection_data_from_clipboard_data (FrWindow *window,
FrClipboardData *data)
@@ -4380,7 +4279,6 @@ get_selection_data_from_clipboard_data (FrWindow *window,
return g_string_free (list, FALSE);
}
-
static gboolean
fr_window_folder_tree_drag_data_get (GtkWidget *widget,
GdkDragContext *context,
@@ -4463,7 +4361,6 @@ fr_window_folder_tree_drag_data_get (GtkWidget *widget,
return TRUE;
}
-
gboolean
fr_window_file_list_drag_data_get (FrWindow *window,
GdkDragContext *context,
@@ -4543,10 +4440,8 @@ fr_window_file_list_drag_data_get (FrWindow *window,
return TRUE;
}
-
/* -- window_new -- */
-
static void
fr_window_deactivate_filter (FrWindow *window)
{
@@ -4564,7 +4459,6 @@ fr_window_deactivate_filter (FrWindow *window)
fr_window_update_current_location (window);
}
-
static gboolean
key_press_cb (GtkWidget *widget,
GdkEventKey *event,
@@ -4593,7 +4487,7 @@ key_press_cb (GtkWidget *widget,
switch (event->keyval) {
case GDK_KEY_Escape:
- activate_action_stop (NULL, window);
+ activate_action_stop (NULL, NULL, window);
if (window->priv->filter_mode)
fr_window_deactivate_filter (window);
retval = TRUE;
@@ -4657,7 +4551,6 @@ key_press_cb (GtkWidget *widget,
return retval;
}
-
static gboolean
dir_tree_selection_changed_cb (GtkTreeSelection *selection,
gpointer user_data)
@@ -4679,7 +4572,6 @@ dir_tree_selection_changed_cb (GtkTreeSelection *selection,
return FALSE;
}
-
static gboolean
selection_changed_cb (GtkTreeSelection *selection,
gpointer user_data)
@@ -4692,7 +4584,6 @@ selection_changed_cb (GtkTreeSelection *selection,
return FALSE;
}
-
static void
fr_window_delete_event_cb (GtkWidget *caller,
GdkEvent *event,
@@ -4701,7 +4592,6 @@ fr_window_delete_event_cb (GtkWidget *caller,
fr_window_close (window);
}
-
static gboolean
is_single_click_policy (FrWindow *window)
{
@@ -4718,7 +4608,6 @@ is_single_click_policy (FrWindow *window)
return result;
}
-
static void
filename_cell_data_func (GtkTreeViewColumn *column,
GtkCellRenderer *renderer,
@@ -4757,7 +4646,6 @@ filename_cell_data_func (GtkTreeViewColumn *column,
g_free (text);
}
-
static void
add_dir_tree_columns (FrWindow *window,
GtkTreeView *treeview)
@@ -4802,7 +4690,6 @@ add_dir_tree_columns (FrWindow *window,
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
}
-
static void
add_file_list_columns (FrWindow *window,
GtkTreeView *treeview)
@@ -4894,7 +4781,6 @@ add_file_list_columns (FrWindow *window,
}
}
-
static int
name_column_sort_func (GtkTreeModel *model,
GtkTreeIter *a,
@@ -4909,7 +4795,6 @@ name_column_sort_func (GtkTreeModel *model,
return sort_by_name (&fdata1, &fdata2);
}
-
static int
size_column_sort_func (GtkTreeModel *model,
GtkTreeIter *a,
@@ -4924,7 +4809,6 @@ size_column_sort_func (GtkTreeModel *model,
return sort_by_size (&fdata1, &fdata2);
}
-
static int
type_column_sort_func (GtkTreeModel *model,
GtkTreeIter *a,
@@ -4939,7 +4823,6 @@ type_column_sort_func (GtkTreeModel *model,
return sort_by_type (&fdata1, &fdata2);
}
-
static int
time_column_sort_func (GtkTreeModel *model,
GtkTreeIter *a,
@@ -4954,7 +4837,6 @@ time_column_sort_func (GtkTreeModel *model,
return sort_by_time (&fdata1, &fdata2);
}
-
static int
path_column_sort_func (GtkTreeModel *model,
GtkTreeIter *a,
@@ -4969,7 +4851,6 @@ path_column_sort_func (GtkTreeModel *model,
return sort_by_path (&fdata1, &fdata2);
}
-
static int
no_sort_column_sort_func (GtkTreeModel *model,
GtkTreeIter *a,
@@ -4979,7 +4860,6 @@ no_sort_column_sort_func (GtkTreeModel *model,
return -1;
}
-
static void
sort_column_changed_cb (GtkTreeSortable *sortable,
gpointer user_data)
@@ -4995,12 +4875,8 @@ sort_column_changed_cb (GtkTreeSortable *sortable,
window->priv->sort_method = get_sort_method_from_column (column_id);
window->priv->sort_type = order;
-
- /*set_active (window, get_action_from_sort_method (window->priv->sort_method), TRUE);
- set_active (window, "SortReverseOrder", (window->priv->sort_type == GTK_SORT_DESCENDING));*/
}
-
static gboolean
fr_window_show_cb (GtkWidget *widget,
FrWindow *window)
@@ -5018,10 +4894,8 @@ fr_window_show_cb (GtkWidget *widget,
return TRUE;
}
-
/* preferences changes notification callbacks */
-
static void
pref_history_len_changed (GSettings *settings,
const char *key,
@@ -5029,29 +4903,22 @@ pref_history_len_changed (GSettings *settings,
{
FrWindow *window = user_data;
int limit;
- GtkAction *action;
limit = g_settings_get_int (settings, PREF_UI_HISTORY_LEN);
- action = gtk_action_group_get_action (window->priv->actions, "OpenRecent");
- gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (action), limit);
-
- action = gtk_action_group_get_action (window->priv->actions, "OpenRecent_Toolbar");
- gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (action), limit);
+ gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (window->priv->menubar_recentmenu), limit);
+ gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (window->priv->toolbar_recentmenu), limit);
}
-
static void
pref_view_toolbar_changed (GSettings *settings,
const char *key,
gpointer user_data)
{
FrWindow *window = user_data;
-
fr_window_set_toolbar_visibility (window, g_settings_get_boolean (settings, key));
}
-
static void
pref_view_statusbar_changed (GSettings *settings,
const char *key,
@@ -5062,7 +4929,6 @@ pref_view_statusbar_changed (GSettings *settings,
fr_window_set_statusbar_visibility (window, g_settings_get_boolean (settings, key));
}
-
static void
pref_view_folders_changed (GSettings *settings,
const char *key,
@@ -5073,7 +4939,6 @@ pref_view_folders_changed (GSettings *settings,
fr_window_set_folders_visibility (window, g_settings_get_boolean (settings, key));
}
-
static void
pref_show_field_changed (GSettings *settings,
const char *key,
@@ -5084,7 +4949,6 @@ pref_show_field_changed (GSettings *settings,
fr_window_update_columns_visibility (window);
}
-
static void
pref_click_policy_changed (GSettings *settings,
const char *key,
@@ -5102,7 +4966,6 @@ pref_click_policy_changed (GSettings *settings,
gdk_display_flush (display);
}
-
static void
pref_use_mime_icons_changed (GSettings *settings,
const char *key,
@@ -5122,7 +4985,6 @@ pref_use_mime_icons_changed (GSettings *settings,
fr_window_update_dir_tree (window);
}
-
static void
theme_changed_cb (GtkIconTheme *theme, FrWindow *window)
{
@@ -5140,14 +5002,14 @@ theme_changed_cb (GtkIconTheme *theme, FrWindow *window)
fr_window_update_dir_tree (window);
}
-
static gboolean
fr_window_stoppable_cb (FrCommand *command,
gboolean stoppable,
FrWindow *window)
{
window->priv->stoppable = stoppable;
- set_sensitive (window, "Stop", stoppable);
+ set_sensitive (window, "stop_item", stoppable);
+ set_sensitive (window, "tool_stop_item", stoppable);
if (window->priv->progress_dialog != NULL)
gtk_dialog_set_response_sensitive (GTK_DIALOG (window->priv->progress_dialog),
GTK_RESPONSE_OK,
@@ -5155,7 +5017,6 @@ fr_window_stoppable_cb (FrCommand *command,
return TRUE;
}
-
static gboolean
fr_window_fake_load (FrArchive *archive,
gpointer data)
@@ -5205,18 +5066,13 @@ fr_window_fake_load (FrArchive *archive,
#endif
}
-
static void
menu_item_select_cb (GtkMenuItem *proxy,
- FrWindow *window)
+ FrWindow *window)
{
- GtkAction *action;
char *message;
- action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy));
- g_return_if_fail (action != NULL);
-
- g_object_get (G_OBJECT (action), "tooltip", &message, NULL);
+ message = gtk_widget_get_tooltip_text (GTK_WIDGET (proxy));
if (message) {
gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar),
window->priv->help_message_cid, message);
@@ -5224,69 +5080,26 @@ menu_item_select_cb (GtkMenuItem *proxy,
}
}
-
static void
menu_item_deselect_cb (GtkMenuItem *proxy,
- FrWindow *window)
+ FrWindow *window)
{
gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar),
window->priv->help_message_cid);
}
-
static void
-disconnect_proxy_cb (GtkUIManager *manager,
- GtkAction *action,
- GtkWidget *proxy,
- FrWindow *window)
-{
- if (GTK_IS_MENU_ITEM (proxy)) {
- g_signal_handlers_disconnect_by_func
- (proxy, G_CALLBACK (menu_item_select_cb), window);
- g_signal_handlers_disconnect_by_func
- (proxy, G_CALLBACK (menu_item_deselect_cb), window);
- }
-}
-
-
-static void
-connect_proxy_cb (GtkUIManager *manager,
- GtkAction *action,
- GtkWidget *proxy,
- FrWindow *window)
-{
- if (GTK_IS_MENU_ITEM (proxy)) {
- g_signal_connect (proxy, "select",
- G_CALLBACK (menu_item_select_cb), window);
- g_signal_connect (proxy, "deselect",
- G_CALLBACK (menu_item_deselect_cb), window);
- }
-}
-
-
-static void
-view_as_radio_action (GtkAction *action,
- GtkRadioAction *current,
- gpointer data)
-{
- FrWindow *window = data;
- fr_window_set_list_mode (window, gtk_radio_action_get_current_value (current));
-}
-
-
-static void
-sort_by_radio_action (GtkAction *action,
- GtkRadioAction *current,
- gpointer data)
+view_all_files_selected_toggled (GtkMenuItem *menuitem,
+ gpointer data)
{
FrWindow *window = data;
- window->priv->sort_method = gtk_radio_action_get_current_value (current);
- window->priv->sort_type = GTK_SORT_ASCENDING;
- fr_window_update_list_order (window);
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (menuitem)))
+ fr_window_set_list_mode (window, FR_WINDOW_LIST_MODE_FLAT);
+ else
+ fr_window_set_list_mode (window, FR_WINDOW_LIST_MODE_AS_DIR);
}
-
static void
recent_chooser_item_activated_cb (GtkRecentChooser *chooser,
FrWindow *window)
@@ -5300,35 +5113,36 @@ recent_chooser_item_activated_cb (GtkRecentChooser *chooser,
}
}
-
-static void
-fr_window_init_recent_chooser (FrWindow *window,
- GtkRecentChooser *chooser)
+static GtkWidget *
+fr_window_create_recent_chooser (FrWindow *window)
{
- GtkRecentFilter *filter;
- int i;
+ GtkRecentManager *manager;
+ GtkRecentFilter *filter;
+ GtkWidget *menu;
+ int i;
- g_return_if_fail (chooser != NULL);
+ manager = gtk_recent_manager_get_default ();
+ menu = gtk_recent_chooser_menu_new_for_manager (manager);
filter = gtk_recent_filter_new ();
gtk_recent_filter_set_name (filter, _("All archives"));
for (i = 0; open_type[i] != -1; i++)
gtk_recent_filter_add_mime_type (filter, mime_type_desc[open_type[i]].mime_type);
gtk_recent_filter_add_application (filter, "Engrampa");
- gtk_recent_chooser_add_filter (chooser, filter);
+ gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (menu), filter);
- gtk_recent_chooser_set_local_only (chooser, FALSE);
- gtk_recent_chooser_set_limit (chooser, g_settings_get_int (window->priv->settings_ui, PREF_UI_HISTORY_LEN));
- gtk_recent_chooser_set_show_not_found (chooser, TRUE);
- gtk_recent_chooser_set_sort_type (chooser, GTK_RECENT_SORT_MRU);
+ gtk_recent_chooser_set_local_only (GTK_RECENT_CHOOSER (menu), FALSE);
+ gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (menu), g_settings_get_int (window->priv->settings_ui, PREF_UI_HISTORY_LEN));
+ gtk_recent_chooser_set_show_not_found (GTK_RECENT_CHOOSER (menu), TRUE);
+ gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (menu), GTK_RECENT_SORT_MRU);
- g_signal_connect (G_OBJECT (chooser),
+ g_signal_connect (G_OBJECT (menu),
"item_activated",
G_CALLBACK (recent_chooser_item_activated_cb),
window);
+ return menu;
}
-
static void
close_sidepane_button_clicked_cb (GtkButton *button,
FrWindow *window)
@@ -5336,7 +5150,6 @@ close_sidepane_button_clicked_cb (GtkButton *button,
fr_window_set_folders_visibility (window, FALSE);
}
-
static void
fr_window_activate_filter (FrWindow *window)
{
@@ -5356,7 +5169,6 @@ fr_window_activate_filter (FrWindow *window)
fr_window_update_current_location (window);
}
-
static void
filter_entry_activate_cb (GtkEntry *entry,
FrWindow *window)
@@ -5364,7 +5176,6 @@ filter_entry_activate_cb (GtkEntry *entry,
fr_window_activate_filter (window);
}
-
static void
filter_entry_icon_release_cb (GtkEntry *entry,
GtkEntryIconPosition icon_pos,
@@ -5377,7 +5188,6 @@ filter_entry_icon_release_cb (GtkEntry *entry,
fr_window_deactivate_filter (window);
}
-
static void
fr_window_attach (FrWindow *window,
GtkWidget *child,
@@ -5426,19 +5236,6 @@ fr_window_attach (FrWindow *window,
1, 1);
}
-
-static void
-set_action_important (GtkUIManager *ui,
- const char *action_name)
-{
- GtkAction *action;
-
- action = gtk_ui_manager_get_action (ui, action_name);
- g_object_set (action, "is_important", TRUE, NULL);
- g_object_unref (action);
-}
-
-
static void
fr_window_construct (FrWindow *window)
{
@@ -5454,10 +5251,13 @@ fr_window_construct (FrWindow *window)
GtkWidget *sidepane_title_box;
GtkWidget *sidepane_title_label;
GtkWidget *close_sidepane_button;
+ GtkWidget *menu_radio_files;
+ GtkWidget *menuitem;
GtkTreeSelection *selection;
- GtkActionGroup *actions;
- GtkAction *action;
- GtkUIManager *ui;
+ GActionGroup *actions;
+ GSimpleAction *action;
+ GtkAccelGroup *accel_group;
+ GtkBuilder *ui;
GError *error = NULL;
GSettingsSchemaSource *schema_source;
GSettingsSchema *caja_schema;
@@ -5844,101 +5644,85 @@ fr_window_construct (FrWindow *window)
/* Build the menu and the toolbar. */
- ui = gtk_ui_manager_new ();
+ window->priv->ui_manager = ui = gtk_builder_new ();
- window->priv->actions = actions = gtk_action_group_new ("Actions");
-
- /* open recent toolbar item action */
-
- action = g_object_new (GTK_TYPE_RECENT_ACTION,
- "name", "OpenRecent",
- /* Translators: this is the label for the "open recent file" sub-menu. */
- "label", _("Open _Recent"),
- "tooltip", _("Open a recently used archive"),
- "stock-id", "gtk-open",
- NULL);
- fr_window_init_recent_chooser (window, GTK_RECENT_CHOOSER (action));
- gtk_action_group_add_action (actions, action);
- g_object_unref (action);
-
- /* open recent toolbar item action */
-
- action = g_object_new (GTK_TYPE_RECENT_ACTION,
- "name", "OpenRecent_Toolbar",
- "label", _("Open"),
- "tooltip", _("Open a recently used archive"),
- "stock-id", "gtk-open",
- "is-important", TRUE,
- NULL);
- fr_window_init_recent_chooser (window, GTK_RECENT_CHOOSER (action));
- g_signal_connect (action,
- "activate",
- G_CALLBACK (activate_action_open),
- window);
- gtk_action_group_add_action (actions, action);
- g_object_unref (action);
+ window->priv->actions = actions = (GActionGroup*)g_simple_action_group_new ();
/* other actions */
+ g_action_map_add_action_entries (G_ACTION_MAP (actions),
+ action_entries, G_N_ELEMENTS (action_entries),
+ window);
- gtk_action_group_set_translation_domain (actions, NULL);
- gtk_action_group_add_actions (actions,
- action_entries,
- n_action_entries,
- window);
- gtk_action_group_add_toggle_actions (actions,
- action_toggle_entries,
- n_action_toggle_entries,
- window);
- gtk_action_group_add_radio_actions (actions,
- view_as_entries,
- n_view_as_entries,
- window->priv->list_mode,
- G_CALLBACK (view_as_radio_action),
- window);
- gtk_action_group_add_radio_actions (actions,
- sort_by_entries,
- n_sort_by_entries,
- window->priv->sort_type,
- G_CALLBACK (sort_by_radio_action),
- window);
-
- g_signal_connect (ui, "connect_proxy",
- G_CALLBACK (connect_proxy_cb), window);
- g_signal_connect (ui, "disconnect_proxy",
- G_CALLBACK (disconnect_proxy_cb), window);
-
- gtk_ui_manager_insert_action_group (ui, actions, 0);
- gtk_window_add_accel_group (GTK_WINDOW (window),
- gtk_ui_manager_get_accel_group (ui));
+ accel_group = gtk_accel_group_new ();
+ gtk_widget_insert_action_group (GTK_WIDGET (window), "win", actions);
+ gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
/* Add a hidden short cut Ctrl-Q for power users */
- gtk_accel_group_connect (gtk_ui_manager_get_accel_group (ui),
+ gtk_accel_group_connect (accel_group,
GDK_KEY_q, GDK_CONTROL_MASK, 0,
g_cclosure_new_swap (G_CALLBACK (fr_window_close), window, NULL));
-
- if (! gtk_ui_manager_add_ui_from_resource (ui, ENGRAMPA_RESOURCE_UI_PATH G_DIR_SEPARATOR_S "menus-toolbars.ui", &error)) {
+ if (! gtk_builder_add_from_resource (ui, ENGRAMPA_RESOURCE_UI_PATH G_DIR_SEPARATOR_S "menus-toolbars.ui", &error)) {
g_message ("building menus failed: %s", error->message);
g_error_free (error);
}
+ /*Add shortcut keys*/
+ for (gulong i = 0; i < G_N_ELEMENTS (menu_keybindings); i++)
+ {
+ menuitem = (GtkWidget*)gtk_builder_get_object (ui, menu_keybindings[i].widget_id);
+ gtk_widget_add_accelerator (menuitem, "activate", accel_group,
+ menu_keybindings[i].keyval,
+ menu_keybindings[i].modifier,
+ GTK_ACCEL_VISIBLE);
+ }
- menubar = gtk_ui_manager_get_widget (ui, "/MenuBar");
+ gtk_builder_add_callback_symbols (ui,
+ "menu_item_select_cb", G_CALLBACK (menu_item_select_cb),
+ "menu_item_deselect_cb", G_CALLBACK (menu_item_deselect_cb),
+ NULL);
+ gtk_builder_connect_signals (ui, window);
+ /* open recent toolbar item action */
+
+ window->priv->menubar_recentmenu = fr_window_create_recent_chooser (window);
+ menuitem = (GtkWidget *)gtk_builder_get_object (ui, "open_recent_item");
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), window->priv->menubar_recentmenu);
+
+ /* open recent toolbar item action */
+ menuitem = (GtkWidget *)gtk_builder_get_object (ui, "tool_open_recent_item");
+ window->priv->toolbar_recentmenu = fr_window_create_recent_chooser (window);
+ gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (menuitem), window->priv->toolbar_recentmenu);
+
+ if (window->priv->list_mode == FR_WINDOW_LIST_MODE_FLAT)
+ action = g_simple_action_new_stateful ("ViewAllFiles", G_VARIANT_TYPE ("s"), g_variant_new_string ("files"));
+ else
+ action = g_simple_action_new_stateful ("ViewAllFiles", G_VARIANT_TYPE ("s"), g_variant_new_string ("folder"));
+
+ g_action_map_add_action (G_ACTION_MAP (actions), G_ACTION (action));
+ g_object_unref (action);
+
+ menubar = (GtkWidget *)gtk_builder_get_object (ui, "engrampamenubar");
fr_window_attach (FR_WINDOW (window), menubar, FR_WINDOW_AREA_MENUBAR);
gtk_widget_show (menubar);
- window->priv->toolbar = toolbar = gtk_ui_manager_get_widget (ui, "/ToolBar");
+ window->priv->toolbar = toolbar = (GtkWidget *)gtk_builder_get_object (ui, "engrampatoolbar");
gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), TRUE);
gtk_style_context_add_class (gtk_widget_get_style_context (toolbar), GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
- set_action_important (ui, "/ToolBar/Extract_Toolbar");
/* location bar */
- window->priv->location_bar = gtk_ui_manager_get_widget (ui, "/LocationBar");
+ window->priv->location_bar = (GtkWidget *)gtk_builder_get_object (ui, "locationbar");
gtk_toolbar_set_show_arrow (GTK_TOOLBAR (window->priv->location_bar), FALSE);
gtk_toolbar_set_style (GTK_TOOLBAR (window->priv->location_bar), GTK_TOOLBAR_BOTH_HORIZ);
gtk_style_context_add_class (gtk_widget_get_style_context (window->priv->location_bar), GTK_STYLE_CLASS_TOOLBAR);
- set_action_important (ui, "/LocationBar/GoBack");
+ init_engramp_menu_popup (window, ui);
+
+ /* file list mode */
+ menu_radio_files = (GtkWidget *)gtk_builder_get_object (ui, "view_all_files_item");
+ g_signal_connect (G_OBJECT (menu_radio_files),
+ "toggled",
+ G_CALLBACK (view_all_files_selected_toggled),
+ window);
/* current location */
location_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
@@ -5951,6 +5735,8 @@ fr_window_construct (FrWindow *window)
gtk_entry_set_icon_from_icon_name (GTK_ENTRY (window->priv->location_entry),
GTK_ENTRY_ICON_PRIMARY,
"folder");
+ gtk_label_set_mnemonic_widget (GTK_LABEL (window->priv->location_label),
+ window->priv->location_entry);
gtk_box_pack_start (GTK_BOX (location_box),
window->priv->location_entry, TRUE, TRUE, 5);
@@ -5988,9 +5774,9 @@ fr_window_construct (FrWindow *window)
else
gtk_widget_hide (toolbar);
- window->priv->file_popup_menu = gtk_ui_manager_get_widget (ui, "/FilePopupMenu");
- window->priv->folder_popup_menu = gtk_ui_manager_get_widget (ui, "/FolderPopupMenu");
- window->priv->sidebar_folder_popup_menu = gtk_ui_manager_get_widget (ui, "/SidebarFolderPopupMenu");
+ window->priv->file_popup_menu = (GtkWidget *)gtk_builder_get_object (ui, "FilePopupMenu");
+ window->priv->folder_popup_menu = (GtkWidget *)gtk_builder_get_object (ui, "FolderPopupMenu");
+ window->priv->sidebar_folder_popup_menu = (GtkWidget *)gtk_builder_get_object (ui, "SidebarFolderPopupMenu");
/* Create the statusbar. */
@@ -6088,7 +5874,6 @@ fr_window_construct (FrWindow *window)
gtk_widget_grab_focus (window->priv->list_view);
}
-
GtkWidget *
fr_window_new (void)
{
@@ -6100,7 +5885,6 @@ fr_window_new (void)
return window;
}
-
static void
fr_window_set_archive_uri (FrWindow *window,
const char *uri)
@@ -6110,7 +5894,6 @@ fr_window_set_archive_uri (FrWindow *window,
window->priv->archive_uri = g_strdup (uri);
}
-
gboolean
fr_window_archive_new (FrWindow *window,
const char *uri)
@@ -6141,7 +5924,6 @@ fr_window_archive_new (FrWindow *window,
return TRUE;
}
-
FrWindow *
fr_window_archive_open (FrWindow *current_window,
const char *uri,
@@ -6171,7 +5953,6 @@ fr_window_archive_open (FrWindow *current_window,
return window;
}
-
void
fr_window_archive_close (FrWindow *window)
{
@@ -6199,7 +5980,6 @@ fr_window_archive_close (FrWindow *window)
fr_window_update_statusbar_list_info (window);
}
-
const char *
fr_window_get_archive_uri (FrWindow *window)
{
@@ -6208,7 +5988,6 @@ fr_window_get_archive_uri (FrWindow *window)
return window->priv->archive_uri;
}
-
const char *
fr_window_get_paste_archive_uri (FrWindow *window)
{
@@ -6220,7 +5999,6 @@ fr_window_get_paste_archive_uri (FrWindow *window)
return NULL;
}
-
gboolean
fr_window_archive_is_present (FrWindow *window)
{
@@ -6229,7 +6007,6 @@ fr_window_archive_is_present (FrWindow *window)
return window->priv->archive_present;
}
-
typedef struct {
char *uri;
char *password;
@@ -6237,7 +6014,6 @@ typedef struct {
guint volume_size;
} SaveAsData;
-
static SaveAsData *
save_as_data_new (const char *uri,
const char *password,
@@ -6257,7 +6033,6 @@ save_as_data_new (const char *uri,
return sdata;
}
-
static void
save_as_data_free (SaveAsData *sdata)
{
@@ -6268,7 +6043,6 @@ save_as_data_free (SaveAsData *sdata)
g_free (sdata);
}
-
void
fr_window_archive_save_as (FrWindow *window,
const char *uri,
@@ -6356,14 +6130,13 @@ fr_window_archive_save_as (FrWindow *window,
NULL,
window->priv->convert_data.temp_dir,
NULL,
- TRUE,
FALSE,
+ TRUE,
FALSE,
window->priv->password);
fr_process_start (window->archive->process);
}
-
void
fr_window_archive_reload (FrWindow *window)
{
@@ -6377,10 +6150,8 @@ fr_window_archive_reload (FrWindow *window)
fr_archive_reload (window->archive, window->priv->password);
}
-
/**/
-
void
fr_window_archive_add_files (FrWindow *window,
GList *file_list, /* GFile list */
@@ -6429,7 +6200,6 @@ fr_window_archive_add_files (FrWindow *window,
g_object_unref (base);
}
-
void
fr_window_archive_add_with_wildcard (FrWindow *window,
const char *include_files,
@@ -6454,7 +6224,6 @@ fr_window_archive_add_with_wildcard (FrWindow *window,
window->priv->volume_size);
}
-
void
fr_window_archive_add_directory (FrWindow *window,
const char *directory,
@@ -6473,7 +6242,6 @@ fr_window_archive_add_directory (FrWindow *window,
window->priv->volume_size);
}
-
void
fr_window_archive_add_items (FrWindow *window,
GList *item_list,
@@ -6492,7 +6260,6 @@ fr_window_archive_add_items (FrWindow *window,
window->priv->volume_size);
}
-
void
fr_window_archive_add_dropped_items (FrWindow *window,
GList *item_list,
@@ -6509,25 +6276,43 @@ fr_window_archive_add_dropped_items (FrWindow *window,
window->priv->volume_size);
}
+static void
+remove_data_free (GList *rdata)
+{
+ g_list_free_full(rdata, g_free);
+}
void
fr_window_archive_remove (FrWindow *window,
GList *file_list)
{
+ char *password;
+ GList *remove_list;
+
fr_window_clipboard_remove_file_list (window, file_list);
fr_process_clear (window->archive->process);
- fr_archive_remove (window->archive, file_list, window->priv->compression);
+
+ remove_list = g_list_copy_deep (file_list, (GCopyFunc) g_strdup, NULL);
+ fr_window_set_current_batch_action (window,
+ FR_BATCH_ACTION_DELETE,
+ remove_list,
+ (GFreeFunc) remove_data_free);
+
+ password = window->priv->password;
+ if (password != NULL && password[0] != '\0')
+ g_object_set (window->archive->command, "password", password, NULL);
+
+ fr_archive_remove (window->archive, remove_list, window->priv->compression);
fr_process_start (window->archive->process);
}
-
/* -- window_archive_extract -- */
-
static ExtractData*
extract_data_new (GList *file_list,
const char *extract_to_dir,
+ const char *sub_dir,
const char *base_dir,
gboolean skip_older,
FrOverwrite overwrite,
@@ -6536,11 +6321,21 @@ extract_data_new (GList *file_list,
gboolean ask_to_open_destination)
{
ExtractData *edata;
+ int i = 1;
edata = g_new0 (ExtractData, 1);
edata->file_list = path_list_dup (file_list);
- if (extract_to_dir != NULL)
+ if (sub_dir != NULL)
+ edata->sub_dir = g_strdup (sub_dir);
+ if (extract_to_dir != NULL && sub_dir == NULL) {
edata->extract_to_dir = g_strdup (extract_to_dir);
+ } else if (extract_to_dir != NULL && sub_dir != NULL) {
+ edata->extract_to_dir = g_build_filename (extract_to_dir, sub_dir, NULL);
+ while (uri_exists (edata->extract_to_dir) && uri_is_file (edata->extract_to_dir)) {
+ g_free (edata->extract_to_dir);
+ edata->extract_to_dir = g_strdup_printf ("%s/%s_%d", extract_to_dir, sub_dir, i++);
+ }
+ }
edata->skip_older = skip_older;
edata->overwrite = overwrite;
edata->junk_paths = junk_paths;
@@ -6552,13 +6347,13 @@ extract_data_new (GList *file_list,
return edata;
}
-
static ExtractData*
extract_to_data_new (const char *extract_to_dir)
{
return extract_data_new (NULL,
extract_to_dir,
NULL,
+ NULL,
FALSE,
TRUE,
FALSE,
@@ -6566,7 +6361,6 @@ extract_to_data_new (const char *extract_to_dir)
FALSE);
}
-
static void
extract_data_free (ExtractData *edata)
{
@@ -6574,12 +6368,12 @@ extract_data_free (ExtractData *edata)
path_list_free (edata->file_list);
g_free (edata->extract_to_dir);
+ g_free (edata->sub_dir);
g_free (edata->base_dir);
g_free (edata);
}
-
static gboolean
archive_is_encrypted (FrWindow *window,
GList *file_list)
@@ -6625,11 +6419,38 @@ archive_is_encrypted (FrWindow *window,
return encrypted;
}
+static gboolean
+archive_extract_check_disk_space_full (GPtrArray *files,
+ const char *extract_to_dir)
+{
+ guint64 freespace;
+ guint64 archive_size = 0;
+ guint i;
+
+ freespace = get_dest_free_space (g_filename_from_uri (extract_to_dir, NULL, NULL));
+
+ for (i = 0; i <files->len; i++)
+ {
+ FileData *fdata = g_ptr_array_index (files, i);
+ archive_size += fdata->size;
+ }
+ /* When the decompressed target file is less than 100MB,
+ 2 * (target file size) needs to disk space
+ and when it is greater than 100MB,
+ 100MB + (target file size) needs to disk space */
+
+ if (archive_size <= 1024 * 1024 * 100)
+ archive_size = archive_size * 2;
+ else
+ archive_size += 1024 * 1024 * 100;
+
+ return freespace < archive_size * 2;
+}
void
fr_window_archive_extract_here (FrWindow *window,
gboolean skip_older,
- gboolean overwrite,
+ FrOverwrite overwrite,
gboolean junk_paths)
{
ExtractData *edata;
@@ -6637,6 +6458,7 @@ fr_window_archive_extract_here (FrWindow *window,
edata = extract_data_new (NULL,
NULL,
NULL,
+ NULL,
skip_older,
overwrite,
junk_paths,
@@ -6665,10 +6487,8 @@ fr_window_archive_extract_here (FrWindow *window,
}
}
-
/* -- fr_window_archive_extract -- */
-
typedef struct {
FrWindow *window;
ExtractData *edata;
@@ -6676,12 +6496,10 @@ typedef struct {
gboolean extract_all;
} OverwriteData;
-
#define _FR_RESPONSE_OVERWRITE_YES_ALL 100
#define _FR_RESPONSE_OVERWRITE_YES 101
#define _FR_RESPONSE_OVERWRITE_NO 102
-
static void
_fr_window_archive_extract_from_edata (FrWindow *window,
ExtractData *edata)
@@ -6700,10 +6518,8 @@ _fr_window_archive_extract_from_edata (FrWindow *window,
fr_process_start (window->archive->process);
}
-
static void _fr_window_ask_overwrite_dialog (OverwriteData *odata);
-
static void
overwrite_dialog_response_cb (GtkDialog *dialog,
int response_id,
@@ -6752,7 +6568,6 @@ overwrite_dialog_response_cb (GtkDialog *dialog,
_fr_window_ask_overwrite_dialog (odata);
}
-
static void
_fr_window_ask_overwrite_dialog (OverwriteData *odata)
{
@@ -6855,11 +6670,11 @@ _fr_window_ask_overwrite_dialog (OverwriteData *odata)
g_free (odata);
}
-
void
fr_window_archive_extract (FrWindow *window,
GList *file_list,
const char *extract_to_dir,
+ const char *sub_dir,
const char *base_dir,
gboolean skip_older,
FrOverwrite overwrite,
@@ -6872,6 +6687,7 @@ fr_window_archive_extract (FrWindow *window,
edata = extract_data_new (file_list,
extract_to_dir,
+ sub_dir,
base_dir,
skip_older,
overwrite,
@@ -6884,6 +6700,20 @@ fr_window_archive_extract (FrWindow *window,
edata,
(GFreeFunc) extract_data_free);
+ if (archive_extract_check_disk_space_full (window->archive->command->files, extract_to_dir))
+ {
+ GtkWidget *d;
+
+ d = _gtk_error_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL,
+ NULL,
+ _("Insufficient remaining disk space"),
+ NULL);
+ gtk_dialog_run (GTK_DIALOG (d));
+ gtk_widget_destroy(d);
+ return;
+ }
+
if (archive_is_encrypted (window, edata->file_list) && (window->priv->password == NULL)) {
dlg_ask_password (window);
return;
@@ -6978,7 +6808,6 @@ fr_window_archive_extract (FrWindow *window,
_fr_window_archive_extract_from_edata (window, edata);
}
-
void
fr_window_archive_test (FrWindow *window)
{
@@ -6989,7 +6818,6 @@ fr_window_archive_test (FrWindow *window)
fr_archive_test (window->archive, window->priv->password);
}
-
void
fr_window_set_password (FrWindow *window,
const char *password)
@@ -7028,7 +6856,6 @@ fr_window_get_password (FrWindow *window)
return window->priv->password;
}
-
void
fr_window_set_encrypt_header (FrWindow *window,
gboolean encrypt_header)
@@ -7038,14 +6865,12 @@ fr_window_set_encrypt_header (FrWindow *window,
window->priv->encrypt_header = encrypt_header;
}
-
gboolean
fr_window_get_encrypt_header (FrWindow *window)
{
return window->priv->encrypt_header;
}
-
void
fr_window_set_compression (FrWindow *window,
FrCompression compression)
@@ -7055,14 +6880,12 @@ fr_window_set_compression (FrWindow *window,
window->priv->compression = compression;
}
-
FrCompression
fr_window_get_compression (FrWindow *window)
{
return window->priv->compression;
}
-
void
fr_window_set_volume_size (FrWindow *window,
guint volume_size)
@@ -7072,14 +6895,12 @@ fr_window_set_volume_size (FrWindow *window,
window->priv->volume_size = volume_size;
}
-
guint
fr_window_get_volume_size (FrWindow *window)
{
return window->priv->volume_size;
}
-
void
fr_window_go_to_location (FrWindow *window,
const char *path,
@@ -7112,7 +6933,6 @@ fr_window_go_to_location (FrWindow *window,
g_free (dir);
}
-
const char *
fr_window_get_current_location (FrWindow *window)
{
@@ -7124,7 +6944,6 @@ fr_window_get_current_location (FrWindow *window)
return (const char*) window->priv->history_current->data;
}
-
void
fr_window_go_up_one_level (FrWindow *window)
{
@@ -7137,7 +6956,6 @@ fr_window_go_up_one_level (FrWindow *window)
g_free (parent_dir);
}
-
void
fr_window_go_back (FrWindow *window)
{
@@ -7154,7 +6972,6 @@ fr_window_go_back (FrWindow *window)
fr_window_go_to_location (window, window->priv->history_current->data, FALSE);
}
-
void
fr_window_go_forward (FrWindow *window)
{
@@ -7171,7 +6988,6 @@ fr_window_go_forward (FrWindow *window)
fr_window_go_to_location (window, window->priv->history_current->data, FALSE);
}
-
void
fr_window_set_list_mode (FrWindow *window,
FrWindowListMode list_mode)
@@ -7192,14 +7008,12 @@ fr_window_set_list_mode (FrWindow *window,
fr_window_update_current_location (window);
}
-
GtkTreeModel *
fr_window_get_list_store (FrWindow *window)
{
return GTK_TREE_MODEL (window->priv->list_store);
}
-
void
fr_window_find (FrWindow *window)
{
@@ -7208,30 +7022,18 @@ fr_window_find (FrWindow *window)
gtk_widget_grab_focus (window->priv->filter_entry);
}
-
void
fr_window_select_all (FrWindow *window)
{
gtk_tree_selection_select_all (gtk_tree_view_get_selection (GTK_TREE_VIEW (window->priv->list_view)));
}
-
void
fr_window_unselect_all (FrWindow *window)
{
gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (GTK_TREE_VIEW (window->priv->list_view)));
}
-
-void
-fr_window_set_sort_type (FrWindow *window,
- GtkSortType sort_type)
-{
- window->priv->sort_type = sort_type;
- fr_window_update_list_order (window);
-}
-
-
void
fr_window_stop (FrWindow *window)
{
@@ -7245,10 +7047,8 @@ fr_window_stop (FrWindow *window)
fr_window_convert_data_free (window, TRUE);
}
-
/* -- start/stop activity mode -- */
-
static int
activity_cb (gpointer data)
{
@@ -7262,7 +7062,6 @@ activity_cb (gpointer data)
return TRUE;
}
-
void
fr_window_start_activity_mode (FrWindow *window)
{
@@ -7277,7 +7076,6 @@ fr_window_start_activity_mode (FrWindow *window)
fr_window_update_sensitivity (window);
}
-
void
fr_window_stop_activity_mode (FrWindow *window)
{
@@ -7310,7 +7108,6 @@ fr_window_stop_activity_mode (FrWindow *window)
}
}
-
static gboolean
last_output_window__unrealize_cb (GtkWidget *widget,
gpointer data)
@@ -7319,7 +7116,6 @@ last_output_window__unrealize_cb (GtkWidget *widget,
return FALSE;
}
-
static void
fr_window_view_last_output_print(GtkTextBuffer *text_buffer,
GtkTextIter *iter,
@@ -7357,7 +7153,9 @@ fr_window_view_last_output (FrWindow *window,
dialog = gtk_dialog_new_with_buttons (title,
GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
+ /* Make this dialog modal, otherwise with most WMs
+ * the focus can’t be regained without the mouse. */
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
"gtk-close", GTK_RESPONSE_CLOSE,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
@@ -7380,7 +7178,9 @@ fr_window_view_last_output (FrWindow *window,
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (text_buffer);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
+ /* Although this isn’t an editable text area, we do want the
+ * cursor for accessibility purposes. */
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), TRUE);
/**/
@@ -7413,16 +7213,18 @@ fr_window_view_last_output (FrWindow *window,
fr_window_view_last_output_print(text_buffer, &iter, window->archive->process->out.raw);
/* Show STDERR of process */
fr_window_view_last_output_print(text_buffer, &iter, window->archive->process->err.raw);
+ /* place the cursor at the start */
+ gtk_text_buffer_get_iter_at_offset (text_buffer, &iter, 0);
+ gtk_text_buffer_place_cursor(text_buffer, &iter);
/**/
pref_util_restore_window_geometry (GTK_WINDOW (dialog), LAST_OUTPUT_DIALOG_NAME);
+ gtk_widget_grab_focus (text_view);
}
-
/* -- fr_window_rename_selection -- */
-
typedef struct {
char *path_to_rename;
char *old_name;
@@ -7433,7 +7235,6 @@ typedef struct {
char *original_path;
} RenameData;
-
static RenameData*
rename_data_new (const char *path_to_rename,
const char *old_name,
@@ -7461,7 +7262,6 @@ rename_data_new (const char *path_to_rename,
return rdata;
}
-
static void
rename_data_free (RenameData *rdata)
{
@@ -7475,7 +7275,6 @@ rename_data_free (RenameData *rdata)
g_free (rdata);
}
-
static void
rename_selection (FrWindow *window,
const char *path_to_rename,
@@ -7631,7 +7430,6 @@ rename_selection (FrWindow *window,
g_free (tmp_dir);
}
-
static gboolean
valid_name (const char *new_name,
const char *old_name,
@@ -7664,7 +7462,6 @@ valid_name (const char *new_name,
return retval;
}
-
static gboolean
name_is_present (FrWindow *window,
const char *current_dir,
@@ -7705,7 +7502,6 @@ name_is_present (FrWindow *window,
return retval;
}
-
void
fr_window_rename_selection (FrWindow *window,
gboolean from_sidebar)
@@ -7833,7 +7629,6 @@ fr_window_rename_selection (FrWindow *window,
g_free (original_path);
}
-
static void
fr_clipboard_get (GtkClipboard *clipboard,
GtkSelectionData *selection_data,
@@ -7855,7 +7650,6 @@ fr_clipboard_get (GtkClipboard *clipboard,
g_free (data);
}
-
static void
fr_clipboard_clear (GtkClipboard *clipboard,
gpointer user_data_or_owner)
@@ -7868,7 +7662,6 @@ fr_clipboard_clear (GtkClipboard *clipboard,
}
}
-
GList *
fr_window_get_selection (FrWindow *window,
gboolean from_sidebar,
@@ -7906,7 +7699,6 @@ fr_window_get_selection (FrWindow *window,
return files;
}
-
static void
fr_window_copy_or_cut_selection (FrWindow *window,
FRClipboardOp op,
@@ -7936,7 +7728,6 @@ fr_window_copy_or_cut_selection (FrWindow *window,
fr_window_update_sensitivity (window);
}
-
void
fr_window_copy_selection (FrWindow *window,
gboolean from_sidebar)
@@ -7944,7 +7735,6 @@ fr_window_copy_selection (FrWindow *window,
fr_window_copy_or_cut_selection (window, FR_CLIPBOARD_OP_COPY, from_sidebar);
}
-
void
fr_window_cut_selection (FrWindow *window,
gboolean from_sidebar)
@@ -7952,7 +7742,6 @@ fr_window_cut_selection (FrWindow *window,
fr_window_copy_or_cut_selection (window, FR_CLIPBOARD_OP_CUT, from_sidebar);
}
-
static gboolean
always_fake_load (FrArchive *archive,
gpointer data)
@@ -7960,7 +7749,6 @@ always_fake_load (FrArchive *archive,
return TRUE;
}
-
static void
add_pasted_files (FrWindow *window,
FrClipboardData *data)
@@ -8022,7 +7810,6 @@ add_pasted_files (FrWindow *window,
fr_process_start (window->archive->process);
}
-
static void
copy_from_archive_action_performed_cb (FrArchive *archive,
FrAction action,
@@ -8088,7 +7875,6 @@ copy_from_archive_action_performed_cb (FrArchive *archive,
}
}
-
static void
fr_window_paste_from_clipboard_data (FrWindow *window,
FrClipboardData *data)
@@ -8166,7 +7952,6 @@ fr_window_paste_from_clipboard_data (FrWindow *window,
data->archive_password);
}
-
static void
fr_window_paste_selection_to (FrWindow *window,
const char *current_dir)
@@ -8187,7 +7972,6 @@ fr_window_paste_selection_to (FrWindow *window,
gtk_selection_data_free (selection_data);
}
-
void
fr_window_paste_selection (FrWindow *window,
gboolean from_sidebar)
@@ -8228,10 +8012,8 @@ fr_window_paste_selection (FrWindow *window,
g_free (current_dir);
}
-
/* -- fr_window_open_files -- */
-
void
fr_window_open_files_with_command (FrWindow *window,
GList *file_list,
@@ -8253,7 +8035,6 @@ fr_window_open_files_with_command (FrWindow *window,
fr_window_open_files_with_application (window, file_list, app);
}
-
void
fr_window_open_files_with_application (FrWindow *window,
GList *file_list,
@@ -8289,7 +8070,6 @@ fr_window_open_files_with_application (FrWindow *window,
path_list_free (uris);
}
-
typedef struct {
FrWindow *window;
GList *file_list;
@@ -8297,7 +8077,6 @@ typedef struct {
CommandData *cdata;
} OpenFilesData;
-
static OpenFilesData*
open_files_data_new (FrWindow *window,
GList *file_list,
@@ -8331,7 +8110,6 @@ open_files_data_new (FrWindow *window,
return odata;
}
-
static void
open_files_data_free (OpenFilesData *odata)
{
@@ -8341,14 +8119,12 @@ open_files_data_free (OpenFilesData *odata)
g_free (odata);
}
-
void
fr_window_update_dialog_closed (FrWindow *window)
{
window->priv->update_dialog = NULL;
}
-
gboolean
fr_window_update_files (FrWindow *window,
GList *file_list)
@@ -8386,7 +8162,6 @@ fr_window_update_files (FrWindow *window,
return TRUE;
}
-
static void
open_file_modified_cb (GFileMonitor *monitor,
GFile *monitor_file,
@@ -8423,7 +8198,6 @@ open_file_modified_cb (GFileMonitor *monitor,
dlg_update_add_file (window->priv->update_dialog, file);
}
-
static void
fr_window_monitor_open_file (FrWindow *window,
OpenFile *file)
@@ -8440,7 +8214,6 @@ fr_window_monitor_open_file (FrWindow *window,
g_object_unref (f);
}
-
static void
monitor_extracted_files (OpenFilesData *odata)
{
@@ -8461,7 +8234,6 @@ monitor_extracted_files (OpenFilesData *odata)
}
}
-
static gboolean
fr_window_open_extracted_files (OpenFilesData *odata)
{
@@ -8542,7 +8314,6 @@ fr_window_open_extracted_files (OpenFilesData *odata)
return result;
}
-
static void
fr_window_open_files__extract_done_cb (FrArchive *archive,
FrAction action,
@@ -8562,7 +8333,6 @@ fr_window_open_files__extract_done_cb (FrArchive *archive,
fr_window_open_extracted_files (odata);
}
-
void
fr_window_open_files (FrWindow *window,
GList *file_list,
@@ -8596,10 +8366,8 @@ fr_window_open_files (FrWindow *window,
fr_process_start (window->archive->process);
}
-
/**/
-
static char*
get_default_dir (const char *dir)
{
@@ -8609,7 +8377,6 @@ get_default_dir (const char *dir)
return NULL;
}
-
void
fr_window_set_open_default_dir (FrWindow *window,
const char *default_dir)
@@ -8622,7 +8389,6 @@ fr_window_set_open_default_dir (FrWindow *window,
window->priv->open_default_dir = get_default_dir (default_dir);
}
-
const char *
fr_window_get_open_default_dir (FrWindow *window)
{
@@ -8632,7 +8398,6 @@ fr_window_get_open_default_dir (FrWindow *window)
return window->priv->open_default_dir;
}
-
void
fr_window_set_add_default_dir (FrWindow *window,
const char *default_dir)
@@ -8645,7 +8410,6 @@ fr_window_set_add_default_dir (FrWindow *window,
window->priv->add_default_dir = get_default_dir (default_dir);
}
-
const char *
fr_window_get_add_default_dir (FrWindow *window)
{
@@ -8655,7 +8419,6 @@ fr_window_get_add_default_dir (FrWindow *window)
return window->priv->add_default_dir;
}
-
void
fr_window_set_extract_default_dir (FrWindow *window,
const char *default_dir,
@@ -8676,7 +8439,6 @@ fr_window_set_extract_default_dir (FrWindow *window,
window->priv->extract_default_dir = get_default_dir (default_dir);
}
-
const char *
fr_window_get_extract_default_dir (FrWindow *window)
{
@@ -8686,7 +8448,6 @@ fr_window_get_extract_default_dir (FrWindow *window)
return window->priv->extract_default_dir;
}
-
void
fr_window_set_default_dir (FrWindow *window,
const char *default_dir,
@@ -8702,7 +8463,6 @@ fr_window_set_default_dir (FrWindow *window,
fr_window_set_extract_default_dir (window, default_dir, FALSE);
}
-
void
fr_window_update_columns_visibility (FrWindow *window)
{
@@ -8722,7 +8482,6 @@ fr_window_update_columns_visibility (FrWindow *window)
gtk_tree_view_column_set_visible (column, g_settings_get_boolean (window->priv->settings_listing, PREF_LISTING_SHOW_PATH));
}
-
void
fr_window_set_toolbar_visibility (FrWindow *window,
gboolean visible)
@@ -8737,7 +8496,6 @@ fr_window_set_toolbar_visibility (FrWindow *window,
set_active (window, "ViewToolbar", visible);
}
-
void
fr_window_set_statusbar_visibility (FrWindow *window,
gboolean visible)
@@ -8752,7 +8510,6 @@ fr_window_set_statusbar_visibility (FrWindow *window,
set_active (window, "ViewStatusbar", visible);
}
-
void
fr_window_set_folders_visibility (FrWindow *window,
gboolean value)
@@ -8765,7 +8522,6 @@ fr_window_set_folders_visibility (FrWindow *window,
set_active (window, "ViewFolders", window->priv->view_folders);
}
-
void
fr_window_use_progress_dialog (FrWindow *window,
gboolean value)
@@ -8773,13 +8529,10 @@ fr_window_use_progress_dialog (FrWindow *window,
window->priv->use_progress_dialog = value;
}
-
/* -- batch mode procedures -- */
-
static void fr_window_exec_current_batch_action (FrWindow *window);
-
static void
fr_window_exec_batch_action (FrWindow *window,
FRBatchAction *action)
@@ -8805,6 +8558,12 @@ fr_window_exec_batch_action (FrWindow *window,
fr_window_archive_add_dropped_items (window, (GList*) action->data, FALSE);
break;
+ case FR_BATCH_ACTION_DELETE:
+ debug (DEBUG_INFO, "[BATCH] DELETE\n");
+
+ fr_window_archive_remove (window, (GList*) action->data);
+ break;
+
case FR_BATCH_ACTION_OPEN:
debug (DEBUG_INFO, "[BATCH] OPEN\n");
@@ -8819,6 +8578,7 @@ fr_window_exec_batch_action (FrWindow *window,
fr_window_archive_extract (window,
edata->file_list,
edata->extract_to_dir,
+ edata->sub_dir,
edata->base_dir,
edata->skip_older,
edata->overwrite,
@@ -8831,7 +8591,7 @@ fr_window_exec_batch_action (FrWindow *window,
fr_window_archive_extract_here (window,
FALSE,
- TRUE,
+ FR_OVERWRITE_NO,
FALSE);
break;
@@ -8845,6 +8605,7 @@ fr_window_exec_batch_action (FrWindow *window,
NULL,
window->priv->extract_default_dir,
NULL,
+ NULL,
FALSE,
FR_OVERWRITE_ASK,
FALSE,
@@ -8925,7 +8686,6 @@ fr_window_exec_batch_action (FrWindow *window,
}
}
-
void
fr_window_reset_current_batch_action (FrWindow *window)
{
@@ -8938,7 +8698,6 @@ fr_window_reset_current_batch_action (FrWindow *window)
adata->free_func = NULL;
}
-
void
fr_window_set_current_batch_action (FrWindow *window,
FrBatchActionType action,
@@ -8954,14 +8713,12 @@ fr_window_set_current_batch_action (FrWindow *window,
adata->free_func = free_func;
}
-
void
fr_window_restart_current_batch_action (FrWindow *window)
{
fr_window_exec_batch_action (window, &window->priv->current_batch_action);
}
-
void
fr_window_append_batch_action (FrWindow *window,
FrBatchActionType action,
@@ -8980,7 +8737,6 @@ fr_window_append_batch_action (FrWindow *window,
window->priv->batch_action_list = g_list_append (window->priv->batch_action_list, a_desc);
}
-
static void
fr_window_exec_current_batch_action (FrWindow *window)
{
@@ -8994,7 +8750,6 @@ fr_window_exec_current_batch_action (FrWindow *window)
fr_window_exec_batch_action (window, action);
}
-
static void
fr_window_exec_next_batch_action (FrWindow *window)
{
@@ -9005,7 +8760,6 @@ fr_window_exec_next_batch_action (FrWindow *window)
fr_window_exec_current_batch_action (window);
}
-
void
fr_window_start_batch (FrWindow *window)
{
@@ -9028,7 +8782,6 @@ fr_window_start_batch (FrWindow *window)
fr_window_exec_current_batch_action (window);
}
-
void
fr_window_stop_batch (FrWindow *window)
{
@@ -9052,21 +8805,18 @@ fr_window_stop_batch (FrWindow *window)
window->priv->batch_mode = FALSE;
}
-
void
fr_window_resume_batch (FrWindow *window)
{
fr_window_exec_current_batch_action (window);
}
-
gboolean
fr_window_is_batch_mode (FrWindow *window)
{
return window->priv->batch_mode;
}
-
void
fr_window_new_batch (FrWindow *window,
const char *title)
@@ -9077,7 +8827,6 @@ fr_window_new_batch (FrWindow *window,
window->priv->batch_title = g_strdup (title);
}
-
void
fr_window_set_batch__extract_here (FrWindow *window,
const char *filename)
@@ -9099,7 +8848,6 @@ fr_window_set_batch__extract_here (FrWindow *window,
NULL);
}
-
void
fr_window_set_batch__extract (FrWindow *window,
const char *filename,
@@ -9128,7 +8876,6 @@ fr_window_set_batch__extract (FrWindow *window,
NULL);
}
-
void
fr_window_set_batch__add (FrWindow *window,
const char *archive,
@@ -9155,3 +8902,12 @@ fr_window_set_batch__add (FrWindow *window,
NULL,
NULL);
}
+
+void
+fr_window_set_close_dialog (FrWindow *window,
+ gboolean state)
+{
+ g_return_if_fail (window != NULL);
+
+ window->priv->close_dialog = state;
+}