summaryrefslogtreecommitdiff
path: root/packages/pcmanfm
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2006-11-21 09:35:42 +0000
committerRichard Purdie <rpurdie@rpsys.net>2006-11-21 09:35:42 +0000
commit94327580ec383ee948ae0e24713caa4283799601 (patch)
treefe8897bb7b70a805c345785b04f5a24cad5a3801 /packages/pcmanfm
parent0e2efb144011ea73e204314be67c14abbec120cc (diff)
pcmanfm: Add 0.3.0.1, 0.3.2-beta, drop 0.1.9.8 (from poky)
Diffstat (limited to 'packages/pcmanfm')
-rw-r--r--packages/pcmanfm/files/desktop.patch11
-rw-r--r--packages/pcmanfm/files/no-fam.patch432
-rw-r--r--packages/pcmanfm/files/no-warnings.patch47
-rw-r--r--packages/pcmanfm/pcmanfm_0.3.0.1.bb (renamed from packages/pcmanfm/pcmanfm_0.1.9.8.bb)8
-rw-r--r--packages/pcmanfm/pcmanfm_0.3.2-beta.bb27
5 files changed, 519 insertions, 6 deletions
diff --git a/packages/pcmanfm/files/desktop.patch b/packages/pcmanfm/files/desktop.patch
new file mode 100644
index 0000000000..764f5b7845
--- /dev/null
+++ b/packages/pcmanfm/files/desktop.patch
@@ -0,0 +1,11 @@
+--- pcmanfm-0.3.2-beta/pcmanfm.desktop.in.old 2006-09-25 11:43:07.000000000 +0100
++++ pcmanfm-0.3.2-beta/pcmanfm.desktop.in 2006-09-25 11:44:59.000000000 +0100
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Categories=Application;System;Utility;Core;GTK;
+ Encoding=UTF-8
+-Name=PCMan File Manager
++Name=File Manager
+ Name[zh_TW]=PCMan 檔案管理程式
+ Name[pl]=Przeglądarka plików z zakładkami
+ Exec=pcmanfm %f
diff --git a/packages/pcmanfm/files/no-fam.patch b/packages/pcmanfm/files/no-fam.patch
new file mode 100644
index 0000000000..b87a02df01
--- /dev/null
+++ b/packages/pcmanfm/files/no-fam.patch
@@ -0,0 +1,432 @@
+diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/configure.in pcmanfm-0.3.0.1/configure.in
+--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/configure.in 2006-08-20 15:45:28.000000000 +0100
++++ pcmanfm-0.3.0.1/configure.in 2006-08-20 20:37:36.000000000 +0100
+@@ -63,8 +63,8 @@
+ LIBS="$LIBS $FAM_LIBS"
+ AC_CHECK_FUNCS([FAMNoExists])
+ LIBS="$save_LIBS"
+-else
+- AC_MSG_ERROR([Fatal Error: no fam or gamin detected.])
++#else
++# AC_MSG_ERROR([Fatal Error: no fam or gamin detected.])
+ fi
+
+ AC_SUBST([FAM_CFLAGS])
+diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c
+--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c 2006-07-16 20:00:46.000000000 +0100
++++ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c 2006-08-20 20:54:07.000000000 +0100
+@@ -31,7 +31,6 @@
+ VFSFileMonitorCallbackEntry;
+
+ static GHashTable* monitor_hash = NULL;
+-static FAMConnection fam;
+ static GIOChannel* fam_io_channel = NULL;
+ static guint fam_io_watch = 0;
+
+@@ -40,6 +39,8 @@
+ GIOCondition cond,
+ gpointer user_data );
+
++#ifdef HAVE_FAM_H
++static FAMConnection fam;
+
+ static gboolean connect_to_fam()
+ {
+@@ -81,6 +82,16 @@
+ FAMClose( &fam );
+ }
+ }
++#else
++static gboolean connect_to_fam ()
++{
++ return FALSE;
++}
++
++static void disconnect_from_fam ()
++{
++}
++#endif
+
+ /* final cleanup */
+ void vfs_file_monitor_clean()
+@@ -109,6 +120,7 @@
+ VFSFileMonitorCallback cb,
+ gpointer user_data )
+ {
++#ifdef HAVE_FAM_H
+ VFSFileMonitor * monitor;
+ VFSFileMonitorCallbackEntry cb_ent;
+ gboolean add_new = FALSE;
+@@ -154,12 +166,16 @@
+ }
+ ++monitor->n_ref;
+ return monitor;
++#else
++ return NULL;
++#endif
+ }
+
+ void vfs_file_monitor_remove( VFSFileMonitor* fm,
+ VFSFileMonitorCallback cb,
+ gpointer user_data )
+ {
++#ifdef HAVE_FAM_H
+ int i;
+ VFSFileMonitorCallbackEntry* callbacks;
+ if ( cb && fm->callbacks )
+@@ -183,12 +199,14 @@
+ g_array_free( fm->callbacks, TRUE );
+ g_slice_free( VFSFileMonitor, fm );
+ }
++#endif
+ }
+
+ static void reconnect_fam( gpointer key,
+ gpointer value,
+ gpointer user_data )
+ {
++#ifdef HAVE_FAM_H
+ struct stat file_stat;
+ VFSFileMonitor* monitor = ( VFSFileMonitor* ) value;
+ const char* path = ( const char* ) key;
+@@ -209,6 +227,7 @@
+ monitor );
+ }
+ }
++#endif
+ }
+
+ /* event handler of all FAM events */
+@@ -216,6 +235,7 @@
+ GIOCondition cond,
+ gpointer user_data )
+ {
++#ifdef HAVE_FAM_H
+ FAMEvent evt;
+ VFSFileMonitor* monitor = NULL;
+ VFSFileMonitorCallbackEntry* cb;
+@@ -266,5 +286,8 @@
+ }
+ }
+ return TRUE;
++#else
++ return TRUE;
++#endif
+ }
+
+diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~
+--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~ 1970-01-01 01:00:00.000000000 +0100
++++ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.c~ 2006-08-20 20:50:49.000000000 +0100
+@@ -0,0 +1,292 @@
++/*
++* C Implementation: vfs-monitor
++*
++* Description:
++*
++*
++* Author: Hong Jen Yee (PCMan) <pcman.tw (AT) gmail.com>, (C) 2006
++*
++* Copyright: See COPYING file that comes with this distribution
++*
++*/
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include "vfs-file-monitor.h"
++#include <sys/types.h> /* for stat */
++#include <sys/stat.h>
++
++#include <stdlib.h>
++#include <string.h>
++
++#include "glib-mem.h"
++
++typedef struct
++{
++ VFSFileMonitorCallback callback;
++ gpointer user_data;
++}
++VFSFileMonitorCallbackEntry;
++
++static GHashTable* monitor_hash = NULL;
++static FAMConnection fam;
++static GIOChannel* fam_io_channel = NULL;
++static guint fam_io_watch = 0;
++
++/* event handler of all FAM events */
++static gboolean on_fam_event( GIOChannel *channel,
++ GIOCondition cond,
++ gpointer user_data );
++
++#ifdef HAVE_FAM_H
++static gboolean connect_to_fam()
++{
++ if ( FAMOpen( &fam ) )
++ {
++ fam_io_channel = NULL;
++ fam.fd = -1;
++ g_warning( "There is no FAM/gamin server\n" );
++ return FALSE;
++ }
++#if HAVE_FAMNOEXISTS
++ /*
++ * Disable the initital directory content loading.
++ * This can greatly speed up directory loading, but
++ * unfortunately, it's not compatible with original FAM.
++ */
++ FAMNoExists( &fam ); /* This is an extension of gamin */
++#endif
++
++ fam_io_channel = g_io_channel_unix_new( fam.fd );
++ g_io_channel_set_encoding( fam_io_channel, NULL, NULL );
++ g_io_channel_set_buffered( fam_io_channel, FALSE );
++
++ fam_io_watch = g_io_add_watch( fam_io_channel,
++ G_IO_IN | G_IO_HUP,
++ on_fam_event,
++ NULL );
++ return TRUE;
++}
++
++static void disconnect_from_fam()
++{
++ if ( fam_io_channel )
++ {
++ g_io_channel_unref( fam_io_channel );
++ fam_io_channel = NULL;
++ g_source_remove( fam_io_watch );
++
++ FAMClose( &fam );
++ }
++}
++#else
++static gboolean connect_to_fam ()
++{
++ return FALSE;
++}
++
++static void disconnect_from_fam ()
++{
++}
++#endif
++
++/* final cleanup */
++void vfs_file_monitor_clean()
++{
++ disconnect_from_fam();
++ if ( monitor_hash )
++ {
++ g_hash_table_destroy( monitor_hash );
++ monitor_hash = NULL;
++ }
++}
++
++/*
++* Init monitor:
++* Establish connection with gamin/fam.
++*/
++gboolean vfs_file_monitor_init()
++{
++ monitor_hash = g_hash_table_new( g_str_hash, g_str_equal );
++ if ( ! connect_to_fam() )
++ return FALSE;
++ return TRUE;
++}
++
++VFSFileMonitor* vfs_file_monitor_add( const char* path,
++ VFSFileMonitorCallback cb,
++ gpointer user_data )
++{
++#ifdef HAVE_FAM_H
++ VFSFileMonitor * monitor;
++ VFSFileMonitorCallbackEntry cb_ent;
++ gboolean add_new = FALSE;
++ struct stat file_stat;
++
++ if ( ! monitor_hash )
++ {
++ if ( !vfs_file_monitor_init() )
++ return NULL;
++ }
++ monitor = ( VFSFileMonitor* ) g_hash_table_lookup ( monitor_hash, path );
++ if ( ! monitor )
++ {
++ monitor = g_slice_new0( VFSFileMonitor );
++ monitor->path = g_strdup( path );
++ monitor->callbacks = g_array_new ( FALSE, FALSE, sizeof( VFSFileMonitorCallbackEntry ) );
++ g_hash_table_insert ( monitor_hash,
++ path,
++ monitor );
++ if ( lstat( path, &file_stat ) != -1 )
++ {
++ if ( S_ISDIR( file_stat.st_mode ) )
++ {
++ FAMMonitorDirectory( &fam,
++ path,
++ &monitor->request,
++ monitor );
++ }
++ else
++ {
++ FAMMonitorFile( &fam,
++ path,
++ &monitor->request,
++ monitor );
++ }
++ }
++ }
++ if ( cb )
++ { /* Install a callback */
++ cb_ent.callback = cb;
++ cb_ent.user_data = user_data;
++ monitor->callbacks = g_array_append_val( monitor->callbacks, cb_ent );
++ }
++ ++monitor->n_ref;
++ return monitor;
++#else
++ return NULL;
++#endif
++}
++
++void vfs_file_monitor_remove( VFSFileMonitor* fm,
++ VFSFileMonitorCallback cb,
++ gpointer user_data )
++{
++#ifdef HAVE_FAM_H
++ int i;
++ VFSFileMonitorCallbackEntry* callbacks;
++ if ( cb && fm->callbacks )
++ {
++ callbacks = ( VFSFileMonitorCallbackEntry* ) fm->callbacks->data;
++ for ( i = 0; i < fm->callbacks->len; ++i )
++ {
++ if ( callbacks[ i ].callback == cb && callbacks[ i ].user_data == user_data )
++ {
++ fm->callbacks = g_array_remove_index_fast ( fm->callbacks, i );
++ break;
++ }
++ }
++ }
++ --fm->n_ref;
++ if ( 0 >= fm->n_ref )
++ {
++ FAMCancelMonitor( &fam, &fm->request );
++ g_hash_table_remove( monitor_hash, fm->path );
++ g_free( fm->path );
++ g_array_free( fm->callbacks, TRUE );
++ g_slice_free( VFSFileMonitor, fm );
++ }
++#endif
++}
++
++static void reconnect_fam( gpointer key,
++ gpointer value,
++ gpointer user_data )
++{
++#ifdef HAVE_FAM_H
++ struct stat file_stat;
++ VFSFileMonitor* monitor = ( VFSFileMonitor* ) value;
++ const char* path = ( const char* ) key;
++ if ( lstat( path, &file_stat ) != -1 )
++ {
++ if ( S_ISDIR( file_stat.st_mode ) )
++ {
++ FAMMonitorDirectory( &fam,
++ path,
++ &monitor->request,
++ monitor );
++ }
++ else
++ {
++ FAMMonitorFile( &fam,
++ path,
++ &monitor->request,
++ monitor );
++ }
++ }
++#endif
++}
++
++/* event handler of all FAM events */
++static gboolean on_fam_event( GIOChannel *channel,
++ GIOCondition cond,
++ gpointer user_data )
++{
++#ifdef HAVE_FAM_H
++ FAMEvent evt;
++ VFSFileMonitor* monitor = NULL;
++ VFSFileMonitorCallbackEntry* cb;
++ VFSFileMonitorCallback func;
++ int i;
++
++ if ( cond & G_IO_HUP )
++ {
++ disconnect_from_fam();
++ if ( g_hash_table_size ( monitor_hash ) > 0 )
++ {
++ /*
++ Disconnected from FAM server, but there are still monitors.
++ This may be caused by crash of FAM server.
++ So we have to reconnect to FAM server.
++ */
++ connect_to_fam();
++ g_hash_table_foreach( monitor_hash, ( GHFunc ) reconnect_fam, NULL );
++ }
++ return TRUE; /* don't need to remove the event source since
++ it has been removed by disconnect_from_fam(). */
++ }
++
++ while ( FAMPending( &fam ) )
++ {
++ if ( FAMNextEvent( &fam, &evt ) > 0 )
++ {
++ monitor = ( VFSFileMonitor* ) evt.userdata;
++ switch ( evt.code )
++ {
++ case FAMCreated:
++ case FAMDeleted:
++ case FAMChanged:
++ /* Call the callback functions */
++ if ( monitor->callbacks && monitor->callbacks->len )
++ {
++ cb = ( VFSFileMonitorCallbackEntry* ) monitor->callbacks->data;
++ for ( i = 0; i < monitor->callbacks->len; ++i )
++ {
++ func = cb[ i ].callback;
++ func( monitor, evt.code, evt.filename, cb[ i ].user_data );
++ }
++ }
++ break;
++ default:
++ return TRUE; /* Other events are not supported */
++ }
++ }
++ }
++ return TRUE;
++#else
++ return TRUE;
++#endif
++}
++
+diff -urNd ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h
+--- ../pcmanfm-0.3.0.1-r0/pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h 2006-04-03 00:38:33.000000000 +0100
++++ pcmanfm-0.3.0.1/src/vfs/vfs-file-monitor.h 2006-08-20 20:47:00.000000000 +0100
+@@ -20,7 +20,16 @@
+ #define _VFS_FILE_MONITOR_H_
+
+ #include <glib.h>
++#ifdef HAVE_FAM_H
+ #include <fam.h>
++#else
++# define FAMCreated 0
++# define FAMDeleted 1
++# define FAMChanged 2
++typedef struct {
++ int reqnum;
++} FAMRequest;
++#endif
+
+ G_BEGIN_DECLS
+
diff --git a/packages/pcmanfm/files/no-warnings.patch b/packages/pcmanfm/files/no-warnings.patch
new file mode 100644
index 0000000000..2e0d92bd7b
--- /dev/null
+++ b/packages/pcmanfm/files/no-warnings.patch
@@ -0,0 +1,47 @@
+--- pcmanfm-0.3.2-beta/src/main.c.old 2006-09-25 11:51:51.000000000 +0100
++++ pcmanfm-0.3.2-beta/src/main.c 2006-09-25 11:51:55.000000000 +0100
+@@ -173,7 +173,7 @@
+ gtk_widget_show ( GTK_WIDGET( main_window ) );
+ return main_window;
+ }
+-
++#if 0
+ static void check_icon_theme()
+ {
+ GtkSettings * settings;
+@@ -212,7 +212,7 @@
+ }
+ g_free( theme );
+ }
+-
++#endif
+ int
+ main ( int argc, char *argv[] )
+ {
+@@ -274,7 +274,7 @@
+ vfs_file_info_set_thumbnail_size( appSettings.bigIconSize,
+ appSettings.smallIconSize );
+
+- check_icon_theme();
++/* check_icon_theme();*/
+
+ if( appSettings.showDesktop )
+ fm_desktop_init();
+--- pcmanfm-0.3.2-beta/src/main-window.c.old 2006-09-25 11:47:45.000000000 +0100
++++ pcmanfm-0.3.2-beta/src/main-window.c 2006-09-25 11:50:32.000000000 +0100
+@@ -496,6 +496,7 @@
+ gtk_window_add_accel_group ( GTK_WINDOW ( main_window ), main_window->accel_group );
+ gtk_widget_grab_focus ( GTK_WIDGET( main_window->address_bar ) );
+
++#if 0
+ /* Create warning bar for super user */
+ if ( geteuid() == 0 ) /* Run as super user! */
+ {
+@@ -510,6 +511,7 @@
+ gtk_box_pack_start ( GTK_BOX ( main_window->main_vbox ),
+ main_window->status_bar, FALSE, FALSE, 2 );
+ }
++#endif
+
+ /* Create client area */
+ main_window->notebook = GTK_NOTEBOOK( gtk_notebook_new () );
diff --git a/packages/pcmanfm/pcmanfm_0.1.9.8.bb b/packages/pcmanfm/pcmanfm_0.3.0.1.bb
index b5cb3d6e5c..019d1c6c67 100644
--- a/packages/pcmanfm/pcmanfm_0.1.9.8.bb
+++ b/packages/pcmanfm/pcmanfm_0.3.0.1.bb
@@ -5,24 +5,20 @@ PRIORITY = "optional"
DEPENDS = "gtk+"
SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.gz \
- file://pcmanfm.desktop \
- file://pcmanfm.png \
file://gnome-fs-directory.png \
file://gnome-fs-regular.png \
file://gnome-mime-text-plain.png \
file://emblem-symbolic-link.png \
- file://no-fam-gtk2.6.patch;patch=1;pnum=1"
+ file://no-fam.patch;patch=1"
inherit autotools pkgconfig
do_install_append () {
install -d ${D}/${datadir}
- install -d ${D}/${datadir}/applications
install -d ${D}/${datadir}/pixmaps/
install -m 0644 ${WORKDIR}/*.png ${D}/${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/pcmanfm.desktop ${D}/${datadir}/applications
}
-FILES_${PN} += "${datadir}/applications/pcmanfm.desktop ${datadir}/pixmaps/*.png"
+FILES_${PN} += "${datadir}/pixmaps/*.png"
diff --git a/packages/pcmanfm/pcmanfm_0.3.2-beta.bb b/packages/pcmanfm/pcmanfm_0.3.2-beta.bb
new file mode 100644
index 0000000000..ebbcb32f8a
--- /dev/null
+++ b/packages/pcmanfm/pcmanfm_0.3.2-beta.bb
@@ -0,0 +1,27 @@
+LICENSE = "GPL"
+DESCRIPTION = "procfs tools"
+SECTION = "x11"
+PRIORITY = "optional"
+DEPENDS = "gtk+"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.gz \
+ file://gnome-fs-directory.png \
+ file://gnome-fs-regular.png \
+ file://gnome-mime-text-plain.png \
+ file://emblem-symbolic-link.png \
+ file://desktop.patch;patch=1 \
+ file://no-warnings.patch;patch=1"
+
+EXTRA_OECONF = "--enable-inotify --disable-hal"
+
+inherit autotools pkgconfig
+
+do_install_append () {
+ install -d ${D}/${datadir}
+ install -d ${D}/${datadir}/pixmaps/
+
+ install -m 0644 ${WORKDIR}/*.png ${D}/${datadir}/pixmaps
+}
+
+FILES_${PN} += "${datadir}/pixmaps/*.png"
+