[Xfce4-commits] r23595 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src
Stephan Arts
stephan at xfce.org
Thu Nov 2 10:29:13 CET 2006
Author: stephan
Date: 2006-11-02 09:29:09 +0000 (Thu, 02 Nov 2006)
New Revision: 23595
Modified:
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
xarchiver/branches/xarchiver-psybsd/src/Makefile.am
xarchiver/branches/xarchiver-psybsd/src/archive_store.c
xarchiver/branches/xarchiver-psybsd/src/archive_store.h
xarchiver/branches/xarchiver-psybsd/src/main.c
xarchiver/branches/xarchiver-psybsd/src/main_window.c
xarchiver/branches/xarchiver-psybsd/src/main_window.h
Log:
Started cleaning up main window
(added tabs, while i'm at it.)
Broke command-line opening of archive.
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-11-02 09:29:09 UTC (rev 23595)
@@ -116,7 +116,7 @@
return strcmp(entry1->filename, entry2->filename);
}
-static gint lxa_archive_signals[1];
+static gint lxa_archive_signals[2];
GType
lxa_archive_get_type ()
@@ -161,6 +161,17 @@
G_TYPE_NONE,
0,
NULL);
+
+ lxa_archive_signals[1] = g_signal_new("lxa_refreshed",
+ G_TYPE_FROM_CLASS(archive_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0,
+ NULL);
}
static void
@@ -234,6 +245,9 @@
archive->old_status = archive->status;
archive->status = status;
g_signal_emit(G_OBJECT(archive), lxa_archive_signals[0], 0, archive);
+ if((archive->old_status == LXA_ARCHIVESTATUS_REFRESH) &&
+ (archive->status == LXA_ARCHIVESTATUS_IDLE))
+ g_signal_emit(G_OBJECT(archive), lxa_archive_signals[1], 0, archive);
}
}
LXA_ARCHIVE_WRITE_UNLOCK(&archive->rw_lock);
@@ -1258,3 +1272,8 @@
return (*((guint64 *)props_iter));
}
+const gchar *
+lxa_archive_get_filename(LXAArchive *archive)
+{
+ return g_basename(archive->path);
+}
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-11-02 09:29:09 UTC (rev 23595)
@@ -99,6 +99,7 @@
LXAArchive *lxa_archive_new(gchar *, const gchar *);
void lxa_archive_set_status(LXAArchive *archive, LXAArchiveStatus status);
+const gchar * lxa_archive_get_filename(LXAArchive *archive);
/* new */
gboolean lxa_archive_iter_is_directory(const LXAArchive *, const LXAArchiveIter *);
Modified: xarchiver/branches/xarchiver-psybsd/src/Makefile.am
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/Makefile.am 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/Makefile.am 2006-11-02 09:29:09 UTC (rev 23595)
@@ -17,6 +17,7 @@
main.c main.h \
main_window.c main_window.h \
navigation_bar.c navigation_bar.h \
+ notebook.c notebook.h \
$(TOOLBAR_FILES) \
$(PATHBAR_FILES) \
settings.c settings.h \
Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.c 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.c 2006-11-02 09:29:09 UTC (rev 23595)
@@ -465,8 +465,11 @@
g_return_if_fail(archive);
+/*
if(store->props._show_icons)
column--;
+ */
+ column--;
if(entry)
{
Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.h 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.h 2006-11-02 09:29:09 UTC (rev 23595)
@@ -45,6 +45,7 @@
GObject parent;
gint stamp;
LXAArchive *archive;
+ LXAArchiveSupport *support;
GSList *current_entry;
gint sort_column;
GtkSortType sort_order;
Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c 2006-11-02 09:29:09 UTC (rev 23595)
@@ -30,6 +30,7 @@
#include "main.h"
#include "archive_store.h"
#include "navigation_bar.h"
+#include "notebook.h"
#include "main_window.h"
gboolean version = FALSE;
@@ -93,15 +94,7 @@
void
cb_main_window_destroy(XAMainWindow *window, gpointer data)
{
- if(window->lp_xa_archive)
- {
- lxa_close_archive(window->lp_xa_archive);
- opened_archives--;
- }
- if(opened_archives <= 0)
- {
- gtk_main_quit();
- }
+ gtk_main_quit();
}
int main(int argc, char **argv)
@@ -238,7 +231,6 @@
if(!new_archive && !add_archive_path && !extract_archive && !extract_archive_path)
{
-
xa_icon_theme = gtk_icon_theme_get_default();
if(argc > 1)
{
@@ -249,19 +241,6 @@
main_window = xa_main_window_new(xa_icon_theme);
g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(cb_main_window_destroy), NULL);
- if(!xa_main_window_open_archive(XA_MAIN_WINDOW(main_window), argv[i]))
- {
- opened_archives++;
- gtk_widget_set_size_request(main_window, 500, 350);
- gtk_widget_show_all(main_window);
- } else
- {
- gtk_widget_destroy(main_window);
- dialog = gtk_message_dialog_new (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Xarchiver\nERROR: Could not open file \"%s\""), argv[i]);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
- gtk_dialog_run (GTK_DIALOG (dialog) );
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- }
}
opened_archives--;
if(opened_archives <= 0)
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-02 09:29:09 UTC (rev 23595)
@@ -36,7 +36,9 @@
#include "tool_bar.h"
#endif /* ENABLE_TOOLBAR */
+#include "notebook.h"
#include "main_window.h"
+
#include "new_dialog.h"
#include "extract_dialog.h"
#include "add_dialog.h"
@@ -55,22 +57,14 @@
static void
xa_main_window_finalize(GObject *object);
-void
-xa_main_window_set_contents(XAMainWindow *, LXAArchive *);
-void
-xa_main_window_reset_columns(XAMainWindow *window);
+static void cb_xa_main_new_archive(GtkWidget *widget, gpointer userdata);
+static void cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata);
+static void cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata);
+static void cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata);
+static void cb_xa_main_stop_archive(GtkWidget *widget, gpointer userdata);
-void
-xa_main_window_archive_destroyed(LXAArchive *archive, XAMainWindow *window);
-
-void
-cb_xa_main_close_archive(GtkWidget *widget, gpointer userdata);
-
-void
-cb_xa_main_settings_archive(GtkWidget *widget, gpointer userdata);
-
GType
xa_main_window_get_type ()
{
@@ -136,24 +130,18 @@
xa_settings_write_entry(window->settings, "NavigationBar", "None");
}
- xa_settings_write_bool_entry(window->settings, "ShowIcons", xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)));
- xa_settings_write_bool_entry(window->settings, "SortCaseSensitive", xa_archive_store_get_sort_case_sensitive(XA_ARCHIVE_STORE(window->treemodel)));
- xa_settings_write_bool_entry(window->settings, "SortFoldersFirst", xa_archive_store_get_sort_folders_first(XA_ARCHIVE_STORE(window->treemodel)));
xa_settings_save(window->settings);
gtk_widget_unref(GTK_WIDGET(window->navigationbar));
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
}
static void
xa_main_window_init(XAMainWindow *window)
{
GtkWidget *main_vbox;
- GtkWidget *menubar, *toolbar;
- GtkWidget *menu_separator;
+ GtkWidget *toolbar;
GtkToolItem *tool_separator;
GtkWidget *tmp_image;
- GtkAccelGroup *accel_group = gtk_accel_group_new();
const gchar *nav_bar;
gboolean up_dir = TRUE;
gboolean show_icons = TRUE;
@@ -164,86 +152,8 @@
main_vbox = gtk_vbox_new(FALSE, 0);
- menubar = gtk_menu_bar_new();
toolbar = gtk_toolbar_new();
- window->menubar.menu_item_archive = gtk_menu_item_new_with_mnemonic(_("_Archive"));
- window->menubar.menu_item_action = gtk_menu_item_new_with_mnemonic(_("A_ction"));
- window->menubar.menu_item_help = gtk_menu_item_new_with_mnemonic(_("_Help"));
-
- gtk_container_add(GTK_CONTAINER(menubar), window->menubar.menu_item_archive);
- gtk_container_add(GTK_CONTAINER(menubar), window->menubar.menu_item_action);
- gtk_container_add(GTK_CONTAINER(menubar), window->menubar.menu_item_help);
-
- window->menubar.menu_archive = gtk_menu_new();
- window->menubar.menu_action = gtk_menu_new();
- window->menubar.menu_help = gtk_menu_new();
-
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_archive), window->menubar.menu_archive);
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_action), window->menubar.menu_action);
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_help), window->menubar.menu_help);
-
-/* Archive menu */
- window->menubar.menu_item_new = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_new);
-
- window->menubar.menu_item_open = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_open);
-
- menu_separator = gtk_separator_menu_item_new();
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), menu_separator);
-
- window->menubar.menu_item_properties = gtk_image_menu_item_new_from_stock(GTK_STOCK_PROPERTIES, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_properties);
-
- window->menubar.menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_close);
-
- menu_separator = gtk_separator_menu_item_new();
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), menu_separator);
-
- window->menubar.menu_item_quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_quit);
-
- g_signal_connect(G_OBJECT(window->menubar.menu_item_new), "activate", G_CALLBACK(cb_xa_main_new_archive), window);
- g_signal_connect(G_OBJECT(window->menubar.menu_item_open), "activate", G_CALLBACK(cb_xa_main_open_archive), window);
- g_signal_connect(G_OBJECT(window->menubar.menu_item_close), "activate", G_CALLBACK(cb_xa_main_close_archive), window);
- /* g_signal_connect(G_OBJECT(window->menubar.menu_item_properties), "activate", NULL, NULL);*/
- g_signal_connect(G_OBJECT(window->menubar.menu_item_quit), "activate", G_CALLBACK(gtk_main_quit), window);
-
-/* Action menu */
- tmp_image = xa_main_window_find_image("add_button.png", GTK_ICON_SIZE_MENU);
- window->menubar.menu_item_add = gtk_image_menu_item_new_with_mnemonic(_("Add"));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (window->menubar.menu_item_add), tmp_image);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add);
-
- tmp_image = xa_main_window_find_image("extract_button.png", GTK_ICON_SIZE_MENU);
- window->menubar.menu_item_extract = gtk_image_menu_item_new_with_mnemonic(_("Extract"));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (window->menubar.menu_item_extract), tmp_image);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_extract);
-
- window->menubar.menu_item_remove = gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_remove);
-
- menu_separator = gtk_separator_menu_item_new();
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), menu_separator);
-
- window->menubar.menu_item_settings = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_settings);
-
- g_signal_connect(G_OBJECT(window->menubar.menu_item_add), "activate", G_CALLBACK(cb_xa_main_add_to_archive), window);
- g_signal_connect(G_OBJECT(window->menubar.menu_item_extract), "activate", G_CALLBACK(cb_xa_main_extract_archive), window);
- g_signal_connect(G_OBJECT(window->menubar.menu_item_settings), "activate", G_CALLBACK(cb_xa_main_settings_archive), window);
-
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), FALSE);
-
-/* Help menu */
- window->menubar.menu_item_about = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, accel_group);
- gtk_container_add(GTK_CONTAINER(window->menubar.menu_help), window->menubar.menu_item_about);
-
/* Archive pane */
window->toolbar.tool_item_new = gtk_tool_button_new_from_stock(GTK_STOCK_NEW);
window->toolbar.tool_item_open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
@@ -319,51 +229,25 @@
gtk_widget_ref(GTK_WIDGET(window->navigationbar));
/* main view */
- window->scrollwindow = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window->scrollwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- window->treeview = gtk_tree_view_new();
- /* gtk_tree_view_set_rules_hint(window->treeview, TRUE); */
-
- gtk_tree_view_set_enable_search(GTK_TREE_VIEW(window->treeview), TRUE);
- GtkTreeSelection *selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (window->treeview) );
- gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-
- gtk_container_add(GTK_CONTAINER(window->scrollwindow), window->treeview);
-
- gtk_widget_show(window->scrollwindow);
- gtk_widget_show(window->treeview);
+ window->notebook = xa_notebook_new(window->navigationbar);
/* Statusbar */
window->statusbar = gtk_statusbar_new();
- gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, FALSE, FALSE, 0);
if(window->navigationbar)
gtk_box_pack_start(GTK_BOX(main_vbox), GTK_WIDGET(window->navigationbar), FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(main_vbox), window->scrollwindow, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(main_vbox), window->notebook, TRUE, TRUE, 0);
gtk_box_pack_end(GTK_BOX(main_vbox), window->statusbar, FALSE, FALSE, 0);
gtk_widget_show(main_vbox);
- gtk_widget_show_all(menubar);
gtk_widget_show_all(toolbar);
+ gtk_widget_show_all(window->notebook);
gtk_widget_show_all(window->statusbar);
gtk_container_add(GTK_CONTAINER(window), main_vbox);
-
- /* archive model */
- window->treemodel = xa_archive_store_new(NULL, show_icons, up_dir, window->icon_theme);
-
- xa_archive_store_set_sort_case_sensitive(XA_ARCHIVE_STORE(window->treemodel), sort_case);
- xa_archive_store_set_sort_folders_first (XA_ARCHIVE_STORE(window->treemodel), sort_folders);
-
- xa_archive_store_connect_treeview(XA_ARCHIVE_STORE(window->treemodel), GTK_TREE_VIEW(window->treeview));
- gtk_tree_view_set_model(GTK_TREE_VIEW(window->treeview), GTK_TREE_MODEL(window->treemodel));
-
- if(window->navigationbar)
- xa_navigation_bar_set_store(window->navigationbar, XA_ARCHIVE_STORE(window->treemodel));
}
GtkWidget *
@@ -378,12 +262,12 @@
XA_MAIN_WINDOW(window)->icon_theme = icon_theme;
+ xa_notebook_set_icon_theme(XA_NOTEBOOK(XA_MAIN_WINDOW(window)->notebook), icon_theme);
+
icon = gtk_icon_theme_load_icon(icon_theme, "xarchiver", 24, 0, NULL);
gtk_window_set_icon(GTK_WINDOW(window), icon);
- xa_archive_store_set_icon_theme(XA_ARCHIVE_STORE(XA_MAIN_WINDOW(window)->treemodel), icon_theme);
-
return window;
}
@@ -429,16 +313,17 @@
return file_image;
}
-void
+
+static void
cb_xa_main_new_archive(GtkWidget *widget, gpointer userdata)
{
- GtkWidget *dialog = NULL;
+ GtkWidget *dialog = xa_new_archive_dialog_new();
gchar *new_archive_path = NULL;
XAMainWindow *window = XA_MAIN_WINDOW(userdata);
- LXAArchiveSupport *lp_support = NULL;
+ LXAArchive *archive = NULL;
+ LXAArchiveSupport *support = NULL;
gint result = 0;
-
- dialog = xa_new_archive_dialog_new();
+
result = gtk_dialog_run (GTK_DIALOG (dialog) );
if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
{
@@ -448,61 +333,29 @@
if(result == GTK_RESPONSE_OK)
{
new_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- if(window->lp_xa_archive)
+
+ if(!lxa_new_archive(new_archive_path, TRUE, NULL, &archive))
{
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
- g_object_unref(window->lp_xa_archive);
- window->lp_xa_archive = NULL;
+ support = lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime_info));
+ xa_notebook_add_archive(XA_NOTEBOOK(window->notebook), archive, support);
}
- if(!lxa_new_archive(new_archive_path, TRUE, NULL, &(window->lp_xa_archive)))
+ else
{
- g_debug("Archive opened");
- g_signal_connect(G_OBJECT(window->lp_xa_archive), "lxa_status_changed", G_CALLBACK(xa_main_window_archive_status_changed), window);
- lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_new), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_open), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), FALSE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_new), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_open), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
}
- else
- g_debug("Archive-creation failed");
gtk_widget_destroy (GTK_WIDGET (dialog) );
}
-}
-void
-cb_xa_main_close_archive(GtkWidget *widget, gpointer userdata)
-{
- XAMainWindow *window = XA_MAIN_WINDOW(userdata);
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
- g_object_unref(window->lp_xa_archive);
- window->lp_xa_archive = NULL;
}
-void
-cb_xa_main_settings_archive(GtkWidget *widget, gpointer userdata)
-{
- GtkWidget *dialog = xa_preferences_dialog_new();
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-}
-
-void
+static void
cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata)
{
GtkWidget *dialog = NULL;
gchar *open_archive_path = NULL;
gint result = 0;
+ LXAArchive *archive = NULL;
+ LXAArchiveSupport *support = NULL;
XAMainWindow *window = XA_MAIN_WINDOW(userdata);
dialog = gtk_file_chooser_dialog_new(_("Open archive"),
@@ -513,317 +366,32 @@
result = gtk_dialog_run (GTK_DIALOG (dialog) );
if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
{
- gtk_widget_destroy (GTK_WIDGET (dialog) );
+ gtk_widget_destroy (dialog);
return;
}
if(result == GTK_RESPONSE_OK)
{
open_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- if(window->lp_xa_archive)
+ if(!lxa_open_archive(open_archive_path, &archive))
{
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
- g_object_unref(window->lp_xa_archive);
- window->lp_xa_archive = NULL;
+ support = lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime_info));
+ xa_notebook_add_archive(XA_NOTEBOOK(window->notebook), archive, support);
}
-
- if(xa_main_window_open_archive(window, open_archive_path))
- {
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- dialog = gtk_message_dialog_new(GTK_WINDOW(window), 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Archive could not be opened");
- gtk_dialog_run(GTK_DIALOG(dialog));
- }
-
- gtk_widget_destroy (GTK_WIDGET (dialog) );
+ gtk_widget_destroy(dialog);
}
-
}
-void
+static void
cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata)
{
-/* XAMainWindow *window = XA_MAIN_WINDOW(userdata);*/
}
-void
+static void
cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata)
{
- GtkWidget *dialog = NULL;
- gchar *extract_archive_path = NULL;
- gint result = 0;
- XAMainWindow *window = XA_MAIN_WINDOW(userdata);
- LXAArchiveSupport *lp_support = NULL;
- GSList *filenames = NULL;
- gchar *filename = NULL;
- GtkTreeModel *treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(window->treeview));
- GtkTreeIter iter;
- GtkTreeSelection *selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (window->treeview) );
-
- lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
-
-
- dialog = xa_extract_archive_dialog_new(lp_support, window->lp_xa_archive, gtk_tree_selection_count_selected_rows (selection));
- result = gtk_dialog_run (GTK_DIALOG (dialog) );
- if(result == GTK_RESPONSE_OK)
- {
- gtk_widget_hide(GTK_WIDGET(dialog));
- extract_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(XA_EXTRACT_ARCHIVE_DIALOG(dialog)->sel_files_radio)))
- {
- GList *rows = gtk_tree_selection_get_selected_rows(selection, &treemodel);
- GList *_rows = rows;
- while(_rows)
- {
- gtk_tree_model_get_iter(GTK_TREE_MODEL(treemodel), &iter, _rows->data);
-
- filename = xa_archive_store_get_filename(XA_ARCHIVE_STORE(treemodel), &iter);
-
- filenames = g_slist_prepend(filenames, g_strconcat(xa_archive_store_get_pwd(XA_ARCHIVE_STORE(treemodel)), filename, NULL));
-
- _rows = _rows->next;
- }
- g_list_free(rows);
- }
- lxa_archive_support_extract(lp_support, window->lp_xa_archive, extract_archive_path, filenames);
- g_free(extract_archive_path);
- extract_archive_path = NULL;
- }
- gtk_widget_destroy (GTK_WIDGET (dialog) );
}
-void
+static void
cb_xa_main_stop_archive(GtkWidget *widget, gpointer userdata)
{
- XAMainWindow *window = XA_MAIN_WINDOW(userdata);
-
- lxa_stop_archive_child(window->lp_xa_archive);
}
-
-void
-xa_main_window_archive_destroyed(LXAArchive *archive, XAMainWindow *window)
-{
- GtkTreeModel *liststore = window->treemodel;
- GList *columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->treeview));
-
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(liststore), NULL);
-/* xa_archive_tree_store_set_contents(XA_ARCHIVE_TREE_STORE(liststore), NULL); */
-
- while(columns)
- {
- gtk_tree_view_remove_column(GTK_TREE_VIEW(window->treeview), columns->data);
- columns = columns->next;
- }
- g_list_free(columns);
-
- if(archive == window->lp_xa_archive)
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
- window->lp_xa_archive = NULL;
-
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_new), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_open), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), FALSE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_new), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_open), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-}
-
-gint
-xa_main_window_open_archive(XAMainWindow *window, gchar *archive_path)
-{
- LXAArchiveSupport *lp_support = NULL;
-
- if(!lxa_open_archive(archive_path, &window->lp_xa_archive))
- {
- g_signal_connect(G_OBJECT(window->lp_xa_archive), "lxa_status_changed", G_CALLBACK(xa_main_window_archive_status_changed), window);
- lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
-
- lxa_archive_support_refresh(lp_support, window->lp_xa_archive);
- return 0;
- }
-
- return 1;
-}
-
-/*
- *
- *
- */
-void
-xa_main_window_archive_status_changed(LXAArchive *archive, gpointer userdata)
-{
- XAMainWindow *main_window = XA_MAIN_WINDOW(userdata);
- gchar *status_message = NULL;
- switch(archive->status)
- {
- case(LXA_ARCHIVESTATUS_INIT):
- status_message = g_strdup(_("Initializing archive..."));
- break;
- case(LXA_ARCHIVESTATUS_REFRESH):
- status_message = g_strdup( _("Reading archive contents..."));
- break;
- case(LXA_ARCHIVESTATUS_EXTRACT):
- status_message = g_strdup(_("Extracting archive..."));
- break;
- case(LXA_ARCHIVESTATUS_ADD):
- status_message = g_strdup(_("Adding file(s) to archive..."));
- break;
- case(LXA_ARCHIVESTATUS_REMOVE):
- status_message = g_strdup(_("Removing file(s) from archive..."));
- break;
- case(LXA_ARCHIVESTATUS_ERROR):
- status_message = g_strdup(_("Error"));
- break;
- case(LXA_ARCHIVESTATUS_USERBREAK):
- status_message = g_strdup(_("Cancelled"));
- break;
- case(LXA_ARCHIVESTATUS_IDLE):
- status_message = g_strdup(_("Done"));
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_close), TRUE);
- switch(archive->old_status)
- {
-
- case(LXA_ARCHIVESTATUS_REFRESH):
- xa_main_window_reset_columns(main_window);
-
- xa_main_window_set_contents(main_window, archive);
- case(LXA_ARCHIVESTATUS_EXTRACT):
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_add), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_remove), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_extract), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_add), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_remove), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_extract), TRUE);
- break;
- default:
- break;
- }
- break;
- }
- if((archive->status != LXA_ARCHIVESTATUS_IDLE) &&
- (archive->status != LXA_ARCHIVESTATUS_ERROR) &&
- (archive->status != LXA_ARCHIVESTATUS_USERBREAK))
-
- {
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_new), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_open), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_add), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_extract), FALSE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_new), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_open), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_add), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_remove), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_extract), FALSE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_stop), TRUE);
- }
- else
- {
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_new), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_open), TRUE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_new), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_open), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_stop), FALSE);
- }
- gtk_statusbar_push(GTK_STATUSBAR(main_window->statusbar), 1, status_message);
-}
-
-void
-xa_main_window_reset_columns(XAMainWindow *window)
-{
- GtkCellRenderer *renderer = NULL;
- GtkTreeViewColumn *column = NULL;
- LXAArchive *archive = window->lp_xa_archive;
- gint x = 0;
-
- GValue *value = g_new0(GValue, 1);
- value = g_value_init(value, G_TYPE_UINT);
- g_value_set_uint(value, GTK_ICON_SIZE_SMALL_TOOLBAR);
-
- GList *columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->treeview));
- gboolean show_only_filenames = FALSE;
- while(columns)
- {
- gtk_tree_view_remove_column(GTK_TREE_VIEW(window->treeview), columns->data);
- columns = columns->next;
- }
- g_list_free(columns);
-
- if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
- {
- column = gtk_tree_view_column_new();
- renderer = gtk_cell_renderer_pixbuf_new();
- g_object_set_property(G_OBJECT(renderer), "stock-size", value);
- gtk_tree_view_column_pack_start(column, renderer, FALSE);
- gtk_tree_view_column_set_attributes(column, renderer, "icon-name", 0, NULL);
-
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, renderer, TRUE);
- gtk_tree_view_column_set_attributes(column, renderer, "text", LXA_ARCHIVE_PROP_FILENAME + 1, NULL);
-
- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_sort_column_id(column, LXA_ARCHIVE_PROP_FILENAME + 1);
- gtk_tree_view_column_set_title(column, lxa_archive_get_property_name(archive, LXA_ARCHIVE_PROP_FILENAME));
- gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
- }
- else
- {
- column = gtk_tree_view_column_new();
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, renderer, TRUE);
- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_attributes(column, renderer, "text", LXA_ARCHIVE_PROP_FILENAME, NULL);
- gtk_tree_view_column_set_sort_column_id(column, LXA_ARCHIVE_PROP_FILENAME);
- gtk_tree_view_column_set_title(column, lxa_archive_get_property_name(archive, LXA_ARCHIVE_PROP_FILENAME));
- gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
- }
-
-
- if(!show_only_filenames)
- {
- for(x = LXA_ARCHIVE_PROP_USER; x < lxa_archive_n_property(archive); ++x)
- {
- switch(lxa_archive_get_property_type(archive, x))
- {
- case(G_TYPE_STRING):
- case(G_TYPE_UINT64):
- renderer = gtk_cell_renderer_text_new();
- if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
- column = gtk_tree_view_column_new_with_attributes(lxa_archive_get_property_name(archive, x), renderer, "text", x+1, NULL);
- else
- column = gtk_tree_view_column_new_with_attributes(lxa_archive_get_property_name(archive, x), renderer, "text", x, NULL);
- break;
- }
- gtk_tree_view_column_set_resizable(column, TRUE);
- if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
- gtk_tree_view_column_set_sort_column_id(column, x+1);
- else
- gtk_tree_view_column_set_sort_column_id(column, x);
- gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
- }
- }
- gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->treeview), 1);
-}
-
-void
-xa_main_window_set_contents(XAMainWindow *main_window, LXAArchive *archive)
-{
- GtkTreeModel *liststore = main_window->treemodel;
- g_object_ref(liststore);
-
- gtk_tree_view_set_model(GTK_TREE_VIEW(main_window->treeview), NULL);
-
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(liststore), archive);
-// xa_archive_tree_store_set_contents(XA_ARCHIVE_TREE_STORE(liststore), archive);
-
- gtk_tree_view_set_model(GTK_TREE_VIEW(main_window->treeview), GTK_TREE_MODEL(liststore));
-}
-
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-11-02 09:29:09 UTC (rev 23595)
@@ -51,12 +51,8 @@
struct _XAMainWindow
{
GtkWindow parent;
- GtkWidget *treeview;
- GtkTreeModel *treemodel;
- GtkWidget *scrollwindow;
- GtkWidget *statusbar;
- XANavigationBar *navigationbar;
XASettings *settings;
+ GtkIconTheme *icon_theme;
struct {
GtkWidget *menu_item_archive;
GtkWidget *menu_archive;
@@ -98,12 +94,9 @@
GtkToolItem *tool_item_remove;
GtkToolItem *tool_item_stop;
} toolbar;
- GtkIconTheme *icon_theme;
- LXAArchive *lp_xa_archive;
- LXAArchiveSupport *lp_xa_support;
- //struct {
- // gboolean _show_icons;
- //} props;
+ XANavigationBar *navigationbar;
+ GtkWidget *notebook;
+ GtkWidget *statusbar;
};
typedef struct _XAMainWindowClass XAMainWindowClass;
@@ -117,15 +110,6 @@
GtkWidget *xa_main_window_find_image(gchar *, GtkIconSize);
GType xa_main_window_get_type ();
-void cb_xa_main_new_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_stop_archive(GtkWidget *widget, gpointer userdata);
-void xa_main_window_archive_status_changed(LXAArchive *archive, gpointer userdata);
-gint xa_main_window_open_archive(XAMainWindow *window, gchar *archive_path);
-gchar *xa_main_window_get_working_dir(XAMainWindow *window);
-
G_END_DECLS
#endif /* __XARCHIVER_MAIN_WINDOW_H__ */
More information about the Xfce4-commits
mailing list