Author: stephan
Date: 2006-11-14 20:49:54 +0000 (Tue, 14 Nov 2006)
New Revision: 23877

Modified:
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
Log:
Added signal to archive (and it is emitted when an item is removed)



Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c  2006-11-14 
20:48:26 UTC (rev 23876)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c  2006-11-14 
20:49:54 UTC (rev 23877)
@@ -116,7 +116,7 @@
        return strcmp(entry1->filename, entry2->filename);
 }
 
-static gint lxa_archive_signals[2];
+static gint lxa_archive_signals[3];
 
 GType
 lxa_archive_get_type ()
@@ -172,6 +172,17 @@
                        G_TYPE_NONE,
                        0,
                        NULL);
+
+       lxa_archive_signals[2] = g_signal_new("lxa_path_changed",
+                       G_TYPE_FROM_CLASS(archive_class),
+                       G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                       0,
+                       NULL,
+                       NULL,
+                       g_cclosure_marshal_VOID__POINTER,
+                       G_TYPE_NONE,
+                       0,
+                       NULL);
 }
 
 static void
@@ -238,6 +249,8 @@
 lxa_archive_set_status(LXAArchive *archive, LXAArchiveStatus status)
 {
        LXA_ARCHIVE_WRITE_LOCK(&archive->rw_lock);
+       gchar **path = NULL;
+
        if(LXA_IS_ARCHIVE(archive))
        {
                if(archive->status != status)
@@ -245,9 +258,14 @@
                        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))
+                       if((archive->old_status == LXA_ARCHIVESTATUS_REFRESH) 
&& (archive->status == LXA_ARCHIVESTATUS_IDLE))
                                g_signal_emit(G_OBJECT(archive), 
lxa_archive_signals[1], 0, archive);
+                       if((archive->old_status == LXA_ARCHIVESTATUS_REMOVE) && 
(archive->files))
+                       {
+                               path = g_strsplit(archive->files, " ", 2);
+                               g_signal_emit(G_OBJECT(archive), 
lxa_archive_signals[2], 0, archive, path[0]);
+                               g_strfreev(path);
+                       }
                } 
        }
        LXA_ARCHIVE_WRITE_UNLOCK(&archive->rw_lock);

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to