[nautilus-actions] Refactoring: update NactTreeModel class
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Refactoring: update NactTreeModel class
- Date: Fri, 19 Feb 2010 02:29:28 +0000 (UTC)
commit aa443eafab04d7566ef5fc470d1259ad24f7bdad
Author: Pierre Wieser <pwieser trychlos org>
Date: Wed Feb 17 22:19:59 2010 +0100
Refactoring: update NactTreeModel class
ChangeLog | 6 ++++
src/api/na-object-api.h | 1 +
src/api/na-object-item.h | 1 +
src/core/na-object-item.c | 42 ++++++++++++++++++++++++++++
src/nact/nact-tree-model-dnd.c | 59 +++++++++++++++++++---------------------
src/nact/nact-tree-model.c | 22 +++++++++------
6 files changed, 91 insertions(+), 40 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 163f155..486184a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2009-02-17 Pierre Wieser <pwieser trychlos org>
+ * src/api/na-object-api.h:
+ * src/api/na-object-item.h:
+ * src/core/na-object-item.c:
+ * src/nact/nact-tree-model-dnd.c:
+ * src/nact/nact-tree-model.c: Update NactTreeModel class.
+
* src/api/na-core-utils.h:
* src/api/na-object-api.h:
* src/api/na-object-profile.h:
diff --git a/src/api/na-object-api.h b/src/api/na-object-api.h
index b795d1b..2cd17d7 100644
--- a/src/api/na-object-api.h
+++ b/src/api/na-object-api.h
@@ -115,6 +115,7 @@ G_BEGIN_DECLS
#define na_object_get_position( obj, child ) na_object_item_get_position( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ))
#define na_object_append_item( obj, child ) na_object_item_append_item( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ))
#define na_object_insert_at( obj, child, pos ) na_object_item_insert_at( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ), ( pos ))
+#define na_object_insert_item( obj, child, sibling ) na_object_item_insert_item( NA_OBJECT_ITEM( obj ), NA_OBJECT( child ), ( NAObject * )( sibling ))
#define na_object_remove_item( obj, child ) na_object_item_remove_item( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ))
#define na_object_build_items_slist( obj ) na_object_item_build_items_slist( NA_OBJECT_ITEM( obj ))
diff --git a/src/api/na-object-item.h b/src/api/na-object-item.h
index df8386a..38d5b8c 100644
--- a/src/api/na-object-item.h
+++ b/src/api/na-object-item.h
@@ -84,6 +84,7 @@ NAObjectId *na_object_item_get_item ( const NAObjectItem *item, const gchar *
gint na_object_item_get_position( const NAObjectItem *item, const NAObjectId *child );
void na_object_item_append_item ( NAObjectItem *object, const NAObjectId *item );
void na_object_item_insert_at ( NAObjectItem *object, const NAObjectId *item, gint pos );
+void na_object_item_insert_item ( NAObjectItem *object, const NAObject *item, const NAObject *before );
void na_object_item_remove_item ( NAObjectItem *object, const NAObjectId *item );
GSList *na_object_item_build_items_slist( const NAObjectItem *item );
diff --git a/src/core/na-object-item.c b/src/core/na-object-item.c
index cc34752..a6ef836 100644
--- a/src/core/na-object-item.c
+++ b/src/core/na-object-item.c
@@ -493,6 +493,48 @@ na_object_item_insert_at( NAObjectItem *item, const NAObjectId *object, gint pos
}
/**
+ * na_object_item_insert_item:
+ * @item: the #NAObjectItem to which add the subitem.
+ * @object: a #NAObject to be inserted in the list of subitems.
+ * @before: the #NAObject before which the @object should be inserted.
+ *
+ * Inserts a new @object in the list of subitems of @item.
+ *
+ * Doesn't modify the reference count on @object.
+ */
+void
+na_object_item_insert_item( NAObjectItem *item, const NAObject *object, const NAObject *before )
+{
+ GList *childs;
+ GList *before_list;
+
+ g_return_if_fail( NA_IS_OBJECT_ITEM( item ));
+ g_return_if_fail( NA_IS_OBJECT( object ));
+ g_return_if_fail( !before || NA_IS_OBJECT( before ));
+
+ if( !item->private->dispose_has_run ){
+
+ childs = na_object_get_items( item );
+ if( !g_list_find( childs, ( gpointer ) object )){
+
+ before_list = NULL;
+
+ if( before ){
+ before_list = g_list_find( childs, ( gconstpointer ) before );
+ }
+
+ if( before_list ){
+ childs = g_list_insert_before( childs, before_list, ( gpointer ) object );
+ } else {
+ childs = g_list_prepend( childs, ( gpointer ) object );
+ }
+
+ na_object_set_items( item, childs );
+ }
+ }
+}
+
+/**
* na_object_item_remove_item:
* @item: the #NAObjectItem from which the subitem must be removed.
* @object: a #NAObjectId-derived to be removed from the list of subitems.
diff --git a/src/nact/nact-tree-model-dnd.c b/src/nact/nact-tree-model-dnd.c
index b2b90a4..6b793c7 100644
--- a/src/nact/nact-tree-model-dnd.c
+++ b/src/nact/nact-tree-model-dnd.c
@@ -32,21 +32,24 @@
#include <config.h>
#endif
+#include <glib/gi18n.h>
+#include <string.h>
+
+#include <api/na-core-utils.h>
#include <api/na-object-api.h>
-#include <runtime/na-iprefs.h>
-#include <runtime/na-utils.h>
+#include <core/na-importer.h>
#include "nact-application.h"
#include "nact-clipboard.h"
#include "nact-iactions-list.h"
+#include "nact-iprefs.h"
#include "nact-main-menubar.h"
#include "nact-main-statusbar.h"
#include "nact-main-window.h"
#include "nact-tree-model.h"
#include "nact-tree-model-dnd.h"
#include "nact-tree-model-priv.h"
-#include "nact-xml-reader.h"
/*
* call once egg_tree_multi_drag_add_drag_support( treeview ) at init time (before gtk_main)
@@ -293,9 +296,9 @@ nact_tree_model_dnd_imulti_drag_source_drag_data_get( EggTreeMultiDragSource *dr
case NACT_XCHANGE_FORMAT_XDS:
folder = get_xds_atom_value( context );
- dest_folder = na_utils_remove_last_level_from_path( folder );
+ dest_folder = g_path_get_dirname( folder );
g_free( folder );
- is_writable = na_utils_is_writable_dir( dest_folder );
+ is_writable = na_core_utils_dir_is_writable( dest_folder );
gtk_selection_data_set( selection_data, selection_data->target, 8, ( guchar * )( is_writable ? "S" : "F" ), 1 );
if( is_writable ){
nact_clipboard_dnd_set( model->private->clipboard, info, rows, dest_folder, TRUE );
@@ -488,7 +491,7 @@ drop_inside( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selecti
static const gchar *thisfn = "nact_tree_model_inside_drag_and_drop";
gboolean drop_done;
NactApplication *application;
- NAPivot *pivot;
+ NAUpdater *updater;
NactMainWindow *main_window;
NAObjectAction *parent;
gboolean copy_data;
@@ -503,7 +506,7 @@ drop_inside( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selecti
gboolean relabel;
application = NACT_APPLICATION( base_window_get_application( model->private->window ));
- pivot = nact_application_get_pivot( application );
+ updater = nact_application_get_updater( application );
main_window = NACT_MAIN_WINDOW( base_application_get_main_window( BASE_APPLICATION( application )));
/*
@@ -531,7 +534,7 @@ drop_inside( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selecti
g_object_unref( current );
if( copy_data ){
- inserted = na_object_duplicate( current );
+ inserted = ( NAObject * ) na_object_duplicate( current );
na_object_set_origin( inserted, NULL );
na_object_check_status( inserted );
@@ -542,7 +545,7 @@ drop_inside( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selecti
g_list_free( deletable );
}
- relabel = nact_main_menubar_is_pasted_object_relabeled( inserted, pivot );
+ relabel = nact_main_menubar_is_pasted_object_relabeled( inserted, NA_PIVOT( updater ));
na_object_prepare_for_paste( inserted, relabel, copy_data, parent );
object_list = g_list_prepend( object_list, inserted );
g_debug( "%s: dropped=%s", thisfn, na_object_get_label( inserted ));
@@ -582,14 +585,12 @@ drop_inside_adjust_dest( NactTreeModel *model, GtkTreePath *dest, NAObjectAction
GtkTreePath *new_dest;
gboolean drop_ok;
NactApplication *application;
- NAPivot *pivot;
NactMainWindow *main_window;
GtkTreeIter iter;
NAObject *current;
GtkTreePath *path;
application = NACT_APPLICATION( base_window_get_application( model->private->window ));
- pivot = nact_application_get_pivot( application );
main_window = NACT_MAIN_WINDOW( base_application_get_main_window( BASE_APPLICATION( application )));
new_dest = gtk_tree_path_copy( dest );
@@ -747,15 +748,13 @@ drop_uri_list( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selec
gboolean drop_done = FALSE;
GSList *uri_list, *is, *msg;
NactApplication *application;
- NAPivot *pivot;
gint import_mode;
- NAObjectAction *action;
+ NAObjectItem *item;
NactMainWindow *main_window;
GList *object_list;
GtkTreePath *new_dest;
application = NACT_APPLICATION( base_window_get_application( model->private->window ));
- pivot = nact_application_get_pivot( application );
main_window = NACT_MAIN_WINDOW( base_application_get_main_window( BASE_APPLICATION( application )));
model->private->drag_has_profiles = FALSE;
@@ -764,14 +763,13 @@ drop_uri_list( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selec
return( drop_done );
}
- uri_list = g_slist_reverse( na_utils_lines_to_string_list(( const gchar * ) selection_data->data ));
- import_mode = na_iprefs_get_import_mode( NA_IPREFS( pivot ), IPREFS_IMPORT_ACTIONS_IMPORT_MODE );
+ uri_list = g_slist_reverse( na_core_utils_slist_from_split(( const gchar * ) selection_data->data, "\n" ));
+ import_mode = nact_iprefs_get_import_mode( BASE_WINDOW( main_window ), IPREFS_IMPORT_ITEMS_IMPORT_MODE );
object_list = NULL;
for( is = uri_list ; is ; is = is->next ){
- action = nact_xml_reader_import(
- model->private->window,
+ item = na_importer_import(
object_list,
( const gchar * ) is->data,
import_mode,
@@ -783,25 +781,24 @@ drop_uri_list( NactTreeModel *model, GtkTreePath *dest, GtkSelectionData *selec
main_window,
TREE_MODEL_STATUSBAR_CONTEXT,
msg->data );
- na_utils_free_string_list( msg );
-
+ na_core_utils_slist_free( msg );
}
- if( action ){
- g_return_val_if_fail( NA_IS_OBJECT_ACTION( action ), FALSE );
- object_list = g_list_prepend( object_list, action );
- na_object_check_status( action );
- na_object_dump( action );
+ if( item ){
+ g_return_val_if_fail( NA_IS_OBJECT_ITEM( item ), FALSE );
+ object_list = g_list_prepend( object_list, item );
+ na_object_check_status( item );
+ na_object_dump( item );
drop_done = TRUE;
}
}
nact_iactions_list_bis_insert_at_path( NACT_IACTIONS_LIST( main_window ), object_list, new_dest );
- na_object_free_items_list( object_list );
+ na_object_unref_items( object_list );
gtk_tree_path_free( new_dest );
nact_tree_model_dump( model );
- na_utils_free_string_list( uri_list );
+ na_core_utils_slist_free( uri_list );
return( drop_done );
}
@@ -937,12 +934,12 @@ is_parent_accept_new_childs( NactTreeModel *model, GtkTreePath *path )
GtkTreeIter iter;
NAObjectItem *parent_item;
NactApplication *application;
- NAPivot *pivot;
+ NAUpdater *updater;
NactMainWindow *main_window;
accept_ok = FALSE;
application = NACT_APPLICATION( base_window_get_application( model->private->window ));
- pivot = nact_application_get_pivot( application );
+ updater = nact_application_get_updater( application );
main_window = NACT_MAIN_WINDOW( base_application_get_main_window( BASE_APPLICATION( application )));
/* inserting as a level zero item
@@ -950,7 +947,7 @@ is_parent_accept_new_childs( NactTreeModel *model, GtkTreePath *path )
*/
if( gtk_tree_path_get_depth( path ) == 1 ){
- if( na_pivot_is_level_zero_writable( pivot )){
+ if( na_pivot_is_level_zero_writable( NA_PIVOT( updater ))){
accept_ok = TRUE;
} else {
@@ -964,7 +961,7 @@ is_parent_accept_new_childs( NactTreeModel *model, GtkTreePath *path )
parent_path = gtk_tree_path_copy( path );
if( gtk_tree_model_get_iter( GTK_TREE_MODEL( model ), &iter, parent_path )){
gtk_tree_model_get( GTK_TREE_MODEL( model ), &iter, IACTIONS_LIST_NAOBJECT_COLUMN, &parent_item, -1 );
- if( na_pivot_is_item_writable( pivot, parent_item, NULL )){
+ if( na_updater_is_item_writable( updater, parent_item, NULL )){
accept_ok = TRUE;
}
g_object_unref( parent_item );
diff --git a/src/nact/nact-tree-model.c b/src/nact/nact-tree-model.c
index b357cbf..767ac99 100644
--- a/src/nact/nact-tree-model.c
+++ b/src/nact/nact-tree-model.c
@@ -32,12 +32,15 @@
#include <config.h>
#endif
+#include <string.h>
+
#include <api/na-object-api.h>
-#include <runtime/na-iprefs.h>
+#include <core/na-iprefs.h>
#include "nact-application.h"
#include "nact-clipboard.h"
+#include "nact-gtk-utils.h"
#include "nact-iactions-list.h"
#include "nact-tree-model.h"
#include "nact-tree-model-dnd.h"
@@ -282,7 +285,7 @@ tree_model_new( BaseWindow *window, GtkTreeView *treeview )
GtkTreeStore *ts_model;
NactTreeModel *model;
NactApplication *application;
- NAPivot *pivot;
+ NAUpdater *updater;
gint order_mode;
g_debug( "%s: window=%p, treeview=%p", thisfn, ( void * ) window, ( void * ) treeview );
@@ -303,8 +306,8 @@ tree_model_new( BaseWindow *window, GtkTreeView *treeview )
/* initialize the sortable interface
*/
application = NACT_APPLICATION( base_window_get_application( window ));
- pivot = nact_application_get_pivot( application );
- order_mode = na_iprefs_get_order_mode( NA_IPREFS( pivot ));
+ updater = nact_application_get_updater( application );
+ order_mode = na_iprefs_get_order_mode( NA_IPREFS( updater ));
nact_tree_model_display_order_change( model, order_mode );
model->private->window = window;
@@ -595,7 +598,7 @@ nact_tree_model_fill( NactTreeModel *model, GList *items, gboolean only_actions)
gtk_tree_store_clear( ts_model );
for( it = items ; it ; it = it->next ){
- duplicate = na_object_duplicate( it->data );
+ duplicate = ( NAObject * ) na_object_duplicate( it->data );
if( !only_actions ){
na_object_check_status( duplicate );
}
@@ -870,7 +873,8 @@ display_item( GtkTreeStore *model, GtkTreeView *treeview, GtkTreeIter *iter, con
g_free( label );
if( NA_IS_OBJECT_ITEM( object )){
- GdkPixbuf *icon = na_object_item_get_pixbuf( NA_OBJECT_ITEM( object ));
+ gchar *icon_name = na_object_get_icon( object );
+ GdkPixbuf *icon = nact_gtk_utils_get_pixbuf( icon_name, GTK_ICON_SIZE_MENU );
gtk_tree_store_set( model, iter, IACTIONS_LIST_ICON_COLUMN, icon, -1 );
}
}
@@ -918,7 +922,7 @@ fill_tree_store( GtkTreeStore *model, GtkTreeView *treeview,
if( !only_actions ){
append_item( model, treeview, parent, &iter, object );
}
- subitems = na_object_get_items_list( object );
+ subitems = na_object_get_items( object );
for( it = subitems ; it ; it = it->next ){
fill_tree_store( model, treeview, it->data, only_actions, only_actions ? NULL : &iter );
}
@@ -930,7 +934,7 @@ fill_tree_store( GtkTreeStore *model, GtkTreeView *treeview,
if( only_actions ){
na_object_set_parent( object, NULL );
} else {
- subitems = na_object_get_items_list( object );
+ subitems = na_object_get_items( object );
for( it = subitems ; it ; it = it->next ){
fill_tree_store( model, treeview, it->data, only_actions, &iter );
}
@@ -1167,7 +1171,7 @@ sort_actions_list( GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer
if( NA_IS_OBJECT_PROFILE( obj_a )){
ret = 0;
} else {
- ret = na_pivot_sort_alpha_asc( obj_a, obj_b );
+ ret = na_object_sort_alpha_asc( obj_a, obj_b );
}
/*g_debug( "%s: ret=%d", thisfn, ret );*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]