[gnome-commander/treeview] Coded custom treestore for sorting foldview from any properties of the directories
- From: Piotr Eljasiak <epiotr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander/treeview] Coded custom treestore for sorting foldview from any properties of the directories
- Date: Thu, 12 Aug 2010 22:09:15 +0000 (UTC)
commit 1df92c275d48c171459b80b5d39ae6e779828820
Author: Guillaume Wardavoir <earlgrey free fr>
Date: Fri Aug 13 00:08:06 2010 +0200
Coded custom treestore for sorting foldview from any properties of the directories
src/gnome-cmd-foldview-control.cc | 51 +++++++++++++++--------------
src/gnome-cmd-foldview-gvfs.cc | 3 +-
src/gnome-cmd-foldview-gvfs.h | 3 ++
src/gnome-cmd-foldview-model.cc | 3 +-
src/gnome-cmd-foldview-private.h | 64 +++++++++++++++++++++++++++++++++++--
src/gnome-cmd-foldview-view.cc | 44 ++++++++++++++++---------
src/gnome-cmd-foldview.cc | 11 +++---
7 files changed, 129 insertions(+), 50 deletions(-)
---
diff --git a/src/gnome-cmd-foldview-control.cc b/src/gnome-cmd-foldview-control.cc
index 0dcc8f5..c994aab 100644
--- a/src/gnome-cmd-foldview-control.cc
+++ b/src/gnome-cmd-foldview-control.cc
@@ -8,7 +8,7 @@
C++
- Contains variadic macros
+ Contain variadic macros
---------------------------------------------------------------------------
@@ -121,7 +121,7 @@
//=============================================================================
GcmdGtkFoldview::View::ctx_menu GcmdGtkFoldview:: s_context_menu =
{
- NULL, (gint)2,
+ NULL, (gint)2,
{
{
_("Directory"), (gint)3,
@@ -216,9 +216,9 @@ void GcmdGtkFoldview::control_context_menu_populate_add_section(
{
// connect with new ctx data
e->a_handle = g_signal_connect(
- e->a_widget,
- "activate",
- e->a_desc.a_callback,
+ e->a_widget,
+ "activate",
+ e->a_desc.a_callback,
(gpointer)ctxdata);
}
@@ -228,7 +228,7 @@ void GcmdGtkFoldview::control_context_menu_populate_add_section(
}
void GcmdGtkFoldview::Control_set_active_tab(
- GtkMenuItem *menu_item,
+ GtkMenuItem *menu_item,
View::ctx_menu_data *ctxdata)
{
ctxdata->a_foldview->control_set_active_tab(ctxdata->d_path_selected);
@@ -260,7 +260,7 @@ void GcmdGtkFoldview::control_set_active_tab(GtkTreePath *path)
}
void GcmdGtkFoldview::Control_open_new_tab(
- GtkMenuItem *menu_item,
+ GtkMenuItem *menu_item,
View::ctx_menu_data *ctxdata)
{
ctxdata->a_foldview->control_open_new_tab(ctxdata->d_path_selected);
@@ -293,7 +293,7 @@ void GcmdGtkFoldview::control_open_new_tab(GtkTreePath *path)
}
void GcmdGtkFoldview::Control_set_new_root(
- GtkMenuItem *menu_item,
+ GtkMenuItem *menu_item,
View::ctx_menu_data *ctxdata)
{
ctxdata->a_foldview->control_set_new_root(ctxdata);
@@ -348,7 +348,7 @@ GcmdGtkFoldview::eSyncState GcmdGtkFoldview::control_sync_check()
}
void GcmdGtkFoldview::Control_sync_update(
- GtkMenuItem *menu_item,
+ GtkMenuItem *menu_item,
View::ctx_menu_data *ctxdata)
{
ctxdata->a_foldview->control_sync_update(ctxdata);
@@ -360,7 +360,7 @@ void GcmdGtkFoldview::control_sync_update(GcmdGtkFoldview::View::ctx_menu_data *
GtkTreeIter iter = Model::s_iter_NULL;
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//gwr_inf("control_sync_update");
-
+
if ( control_sync_check() != SYNC_Y_LIST_Y )
{
//gwr_wng("control_sync_update:not SYNC_Y_LIST_Y:%03i", control_sync_check());
@@ -373,12 +373,12 @@ void GcmdGtkFoldview::control_sync_update(GcmdGtkFoldview::View::ctx_menu_data *
uri = model.iter_get_uri_new(&iter);
if ( uri == NULL )
return;
-
+
control_gcmd_file_list_set_connection(a_synced_list, uri);
}
void GcmdGtkFoldview::Control_unsync_treeview(
- GtkMenuItem *menu_item,
+ GtkMenuItem *menu_item,
View::ctx_menu_data *ctxdata)
{
ctxdata->a_foldview->control_unsync_treeview();
@@ -414,7 +414,7 @@ void GcmdGtkFoldview::control_unsync_treeview()
}
void GcmdGtkFoldview::Control_sync_treeview(
- GtkMenuItem *menu_item,
+ GtkMenuItem *menu_item,
View::ctx_menu_data *ctxdata)
{
ctxdata->a_foldview->control_sync_treeview(ctxdata);
@@ -520,7 +520,7 @@ void GcmdGtkFoldview::control_iter_expand_callback_1(gvfs_async *ga)
gboolean b = FALSE;
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
gdk_threads_enter(); // _GDK_LOCK_
-
+
foldview = GcmdFoldview();
ls = (gvfs_async_load_subdirs*)(ga->ad());
@@ -543,7 +543,7 @@ void GcmdGtkFoldview::control_iter_expand_callback_1(gvfs_async *ga)
for ( i = 0 ; i != count ; i++ )
{
file = ls->element(i);
- CIE_INF("ciec_1:%s", file->name());
+ CIE_INF("ciec_1:%s", file->name());
// determine icon number for the file element
GcmdGtkFoldview::View::eIcon icon = GcmdGtkFoldview::View::eIconUnknown;
@@ -577,7 +577,7 @@ void GcmdGtkFoldview::control_iter_expand_callback_1(gvfs_async *ga)
// NOTHING here ! Because the sort function mix all - iter or path !!!
//child_uri = foldview->model.iter_get_uri_new(child_iter);
//foldview->control_check_if_empty(child_iter);
- //gnome_vfs_uri_unref(child_uri);
+ //gnome_vfs_uri_unref(child_uri);
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -639,7 +639,7 @@ GcmdGtkFoldview::control_iter_expand(
// new uri that will be destroyed at the end of GVFS callback
parent_uri = model.iter_get_uri_new(parent);
- // string representing the GtkTreePath of the parent ; we dont use
+ // string representing the GtkTreePath of the parent ; we dont use
// a GtkTreePath directly,since it is a GtkObject and maybe invalided
// when GVFS callback code will run. Neither use we any GtkTreeIter.
temp_path = gtk_tree_model_get_path(model.treemodel(), parent);
@@ -680,7 +680,7 @@ void GcmdGtkFoldview::control_check_if_empty_callback_1(gvfs_async *ga)
GtkTreeIter *parent_iter = NULL;
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
gdk_threads_enter(); // _GDK_LOCK_
-
+
foldview = GcmdFoldview();
ls = (gvfs_async_load_subdirs*)(ga->ad());
@@ -721,7 +721,7 @@ void GcmdGtkFoldview::control_check_if_empty_callback_1(gvfs_async *ga)
// delete user data
delete ga->cd();
- gdk_threads_leave();
+ gdk_threads_leave();
}
// MULTITHREAD
@@ -755,7 +755,7 @@ void GcmdGtkFoldview::control_check_if_empty(GtkTreeIter *parent)
// new uri that will be destroyed at the end of GVFS callback
parent_uri = model.iter_get_uri_new(parent);
- // string representing the GtkTreePath of the parent ; we dont use
+ // string representing the GtkTreePath of the parent ; we dont use
// a GtkTreePath directly,since it is a GtkObject and maybe invalided
// when GVFS callback code will run. Neither use we any GtkTreeIter.
temp_path = gtk_tree_model_get_path(model.treemodel(), parent);
@@ -837,13 +837,13 @@ void GcmdGtkFoldview::control_gcmd_file_list_set_connection(
// Avoid gcmd to call gtk_object_destroy on access-denied directories // __GWR_TODO__
// and lost+found in GnomeCmdFileList::on_dir_list_failed(...)
//
- // The problem is that gcmd cant handle correctly such directories
+ // The problem is that gcmd cant handle correctly such directories
// when calling GnomeCmdFileList::set_connection,set_directory,
// goto_directory, ...I think you get the same result if you bookmark
// (manually) such a directory
//
- // Since gcmd increase GnomeCmdFile->ref_cnt until infinite (!),
- // I feel allowed to call gnome_cmd_dir_ref rather than
+ // Since gcmd increase GnomeCmdFile->ref_cnt until infinite (!),
+ // I feel allowed to call gnome_cmd_dir_ref rather than
// g_object_ref_sink :)
//g_object_ref_sink(gnomecmddir);
gnome_cmd_dir_ref(gnomecmddir);
@@ -885,7 +885,7 @@ void GcmdGtkFoldview::control_connection_combo_update()
// dont add connection if
// it is closed AND it is not a device AND it is not smb
if (
- !gnome_cmd_con_is_open (con) &&
+ !gnome_cmd_con_is_open (con) &&
!GNOME_CMD_IS_CON_DEVICE (con) &&
!GNOME_CMD_IS_CON_SMB (con)
) continue;
@@ -903,3 +903,6 @@ void GcmdGtkFoldview::control_connection_combo_update()
else
combo->select_data(model.connection());
}
+
+
+
diff --git a/src/gnome-cmd-foldview-gvfs.cc b/src/gnome-cmd-foldview-gvfs.cc
index 3eaa0c1..f8071a7 100644
--- a/src/gnome-cmd-foldview-gvfs.cc
+++ b/src/gnome-cmd-foldview-gvfs.cc
@@ -8,7 +8,7 @@
C++
- Contains variadic macros
+ Contain variadic macros
---------------------------------------------------------------------------
@@ -729,3 +729,4 @@ void GVFS_async_load_subdirectories(
GVFS_async_load_subdirectories_callback,
(gpointer)ga);
}
+
diff --git a/src/gnome-cmd-foldview-gvfs.h b/src/gnome-cmd-foldview-gvfs.h
index 240f1ea..a8fcd4e 100644
--- a/src/gnome-cmd-foldview-gvfs.h
+++ b/src/gnome-cmd-foldview-gvfs.h
@@ -332,4 +332,7 @@ void GVFS_async_load_subdirectories(
gint max_result,
gboolean follow_links);
+
+
+
#endif //__GCMDGTKFOLDVIEW_GVFS_H__
diff --git a/src/gnome-cmd-foldview-model.cc b/src/gnome-cmd-foldview-model.cc
index f5381d2..f3af2a3 100644
--- a/src/gnome-cmd-foldview-model.cc
+++ b/src/gnome-cmd-foldview-model.cc
@@ -8,7 +8,7 @@
C++
- Contains variadic macros
+ Contain variadic macros
---------------------------------------------------------------------------
@@ -445,3 +445,4 @@ void GcmdGtkFoldview::Model::iter_remove_all()
{
gtk_tree_store_clear(treestore());
}
+
diff --git a/src/gnome-cmd-foldview-private.h b/src/gnome-cmd-foldview-private.h
index a38c830..661ab79 100644
--- a/src/gnome-cmd-foldview-private.h
+++ b/src/gnome-cmd-foldview-private.h
@@ -25,7 +25,7 @@
/******************************************************************************
C++
- Contains variadic macros
+ Contain variadic macros
---------------------------------------------------------------------------
TODO GWR
@@ -49,9 +49,66 @@
Notification from filesystem ( very hard to do, we're really going
multithread ) -> gdk_threads_enter will be enough I think
+DONE foldview correct position on show / hide ( cmdline, buttonbar, ... )
+
+DONE (Finally) gcmd crashes when opening access-denied folder from treeview
+ in tab, after showing an alert
+
+DONE Going crazy with correct theming of treeview with selectionned items,
+ focus between widgets,...
+
+
+DONE combo connections at startup
+
+DONE gtk_widget_set_sensitive on non-full-functional items of context menu
+
+DONE Check index_ff on qstack_push()
+
+DONE ? mutex on handles : no, gvfs_async calls are queued
+ and since I use gdk_threads_enter/leave, there is no more
+ concurrency between gtk & gvfs
+
+DONE why GVFS_qstack_ff / GVFS_qstack_size is always n-2 / n ??? should be n / n
+ -> because t' affiches ff _avant_ update et qsize au lieu de qsize - 1,
+ stupid, ça fait un décalage de 2
+
+DONE Comments cleanup
+
+DONE Private logging for gvfs ops
+
+DONE Cancel all async ops
+
+DONE Big Bug in checking type of GnomeVFSFileInfo : GNOME_VFS_FILE_TYPE_...
+ are distinct values - it is not a bitfield, triple fuck, spended time
+ on that
+
---------------------------------------------------------------------------
TODO EPIOTR
+DONE in src/gnome-cmd-foldview.h:
+ extern gboolean gnome_cmd_foldview_set_root_1(gchar *text);
+ ...
+ extern GtkWidget *GcmdWidget();
+ 'extern' is superfluous here, please remove it
+
+DONE epiotr.10.07.16.gcmd-foldview
+DONE ua
+
+ epiotr.10.07.22.kill-warnings
+DONE epiotr.10.07.22.gtk_object_ref,unref
+
+DONE epiotr.10.07.24.000? struct-gvfs_async_caller_data
+DONE epiotr.10.07.24.000? struct-gvfs-async
+DONE epiotr.10.07.24.000? struct-gvfs-async-load-subdirs
+DONE epiotr.10.07.24.000? struct-gvfs-async-load-subdirs-subdirs
+
+
+DONE * I've moved view_treeview() to gnome-cmd-user-actions.cc. I'm
+ sending you a patch for that.
+
+DONE * after opening foldview, cmdline is moved from bottom to top -
+ that requires fixing
+
* foldview should respect global settings for case sensitive
sorting (gnome_cmd_data.case_sens_sort) and showing hidden dirs
(gnome_cmd_data.filter_settings.hidden)
@@ -782,7 +839,8 @@ struct GcmdGtkFoldviewClass
void (* gcmdgtkfoldview) (GcmdGtkFoldview* fv);
};
-GcmdGtkFoldview *GcmdFoldview();
-GtkWidget *GcmdWidget();
+extern GcmdGtkFoldview *GcmdFoldview();
+extern GtkWidget *GcmdWidget();
+
#endif //__GCMDGTKFOLDVIEW_PRIVATE_H__
diff --git a/src/gnome-cmd-foldview-view.cc b/src/gnome-cmd-foldview-view.cc
index 9512a19..70c4fff 100644
--- a/src/gnome-cmd-foldview-view.cc
+++ b/src/gnome-cmd-foldview-view.cc
@@ -8,7 +8,7 @@
C++
- Contains variadic macros
+ Contain variadic macros
---------------------------------------------------------------------------
@@ -77,7 +77,7 @@ myfunc(
gtk_tree_model_get(model, iter, 1, &icon, -1);
- g_object_set(renderer, "pixbuf", GcmdFoldview()->view.pixbuf( (GcmdGtkFoldview::View::eIcon) icon), NULL);
+ g_object_set(renderer, "pixbuf", GcmdFoldview()->view.pixbuf( (GcmdGtkFoldview::View::eIcon)icon), NULL);
}
//=============================================================================
@@ -160,7 +160,7 @@ void signal_cursor_changed(
GtkTreeIter iter_selected = GcmdGtkFoldview::Model::s_iter_NULL;
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // gwr_inf("signal_cursor_changed");
+ //gwr_inf("signal_cursor_changed");
// get path to currently selected iter
tree_sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
@@ -169,13 +169,15 @@ void signal_cursor_changed(
gwr_err("View::signal_cursor_changed:gtk_tree_view_get_selection failed");
}
- // Note: gtk_tree_selection_count_selected_rows() does not exist in gtk+-2.0, only in gtk+ >= v2.2 !
+ // Note: gtk_tree_selection_count_selected_rows() does not
+ // exist in gtk+-2.0, only in gtk+ >= v2.2 !
tree_sel_card = gtk_tree_selection_count_selected_rows(tree_sel);
if ( tree_sel_card == 1 )
{
if ( gtk_tree_selection_get_selected( tree_sel, NULL, &iter_selected) )
{
+
}
else
{
@@ -210,11 +212,11 @@ gboolean GcmdGtkFoldview::View::create(GtkWidget *_this, GtkTreeModel *_treemode
gtk_object_set_data_full (GTK_OBJECT (foldview()), "con_combo", m_con_combo, (GtkDestroyNotify) g_object_unref);
gtk_widget_set_size_request (m_con_combo, 150, -1);
- gtk_clist_set_row_height (GTK_CLIST (GNOME_CMD_COMBO (m_con_combo)->list), 20);
- gtk_entry_set_editable (GTK_ENTRY (GNOME_CMD_COMBO (m_con_combo)->entry), FALSE);
- gtk_clist_set_column_width (GTK_CLIST (GNOME_CMD_COMBO (m_con_combo)->list), 0, 20);
- gtk_clist_set_column_width (GTK_CLIST (GNOME_CMD_COMBO (m_con_combo)->list), 1, 60);
- GTK_WIDGET_UNSET_FLAGS (GNOME_CMD_COMBO (m_con_combo)->button, GTK_CAN_FOCUS);
+ gtk_clist_set_row_height (GTK_CLIST (GNOME_CMD_COMBO (m_con_combo)->list), 20);
+ gtk_entry_set_editable (GTK_ENTRY (GNOME_CMD_COMBO (m_con_combo)->entry), FALSE);
+ gtk_clist_set_column_width (GTK_CLIST (GNOME_CMD_COMBO (m_con_combo)->list), 0, 20);
+ gtk_clist_set_column_width (GTK_CLIST (GNOME_CMD_COMBO (m_con_combo)->list), 1, 60);
+ GTK_WIDGET_UNSET_FLAGS (GNOME_CMD_COMBO (m_con_combo)->button, GTK_CAN_FOCUS);
// create the free space on volume label
//m_vol_label = gtk_label_new ("* LABEL *");
@@ -352,10 +354,10 @@ gboolean GcmdGtkFoldview::View::create(GtkWidget *_this, GtkTreeModel *_treemode
gtk_box_pack_start(GTK_BOX(m_con_hbox), m_con_combo, FALSE, FALSE, 0);
//gtk_box_pack_start (GTK_BOX(m_con_hbox), m_vol_label, FALSE, FALSE, 0);
- //gtk_box_pack_start (GTK_BOX (m_con_hbox), m_dir_indicator, FALSE, FALSE, 0);
- //padding = create_hbox (*fs, FALSE, 6);
- //gtk_box_pack_start (GTK_BOX (vbox), padding, FALSE, TRUE, 0);
- //gtk_box_pack_start (GTK_BOX (padding), info_label, FALSE, TRUE, 6);
+ //gtk_box_pack_start (GTK_BOX (m_con_hbox), m_dir_indicator, FALSE, FALSE, 0);
+ //padding = create_hbox (*fs, FALSE, 6);
+ //gtk_box_pack_start (GTK_BOX (vbox), padding, FALSE, TRUE, 0);
+ //gtk_box_pack_start (GTK_BOX (padding), info_label, FALSE, TRUE, 6);
gtk_box_pack_start(GTK_BOX(foldview()), m_con_hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(foldview()), m_scrolledwindow, TRUE, TRUE, 0);
@@ -379,9 +381,9 @@ gboolean GcmdGtkFoldview::View::create(GtkWidget *_this, GtkTreeModel *_treemode
//fs->update_concombo_visibility();
gtk_widget_show(m_con_combo);
//gtk_widget_show(m_vol_label);
- //gtk_widget_show(m_info_label);
- //gtk_widget_show (m_dir_indicator);
- //gtk_widget_show (fs->list_widget);
+ //gtk_widget_show(m_info_label);
+ //gtk_widget_show (m_dir_indicator);
+ //gtk_widget_show (fs->list_widget);
gtk_widget_show(m_treeview);
gtk_widget_show(m_scrolledwindow);
@@ -393,6 +395,7 @@ gboolean GcmdGtkFoldview::View::create(GtkWidget *_this, GtkTreeModel *_treemode
void GcmdGtkFoldview::View::destroy()
{
+
}
//=============================================================================
@@ -699,3 +702,12 @@ void GcmdGtkFoldview::View::update_style()
gtk_widget_set_style (GTK_WIDGET(treeview()), style_foldview);
((GnomeCmdCombo*)connection_combo())->update_style();
}
+
+
+
+
+
+
+
+
+
diff --git a/src/gnome-cmd-foldview.cc b/src/gnome-cmd-foldview.cc
index a950a97..1bd57d6 100644
--- a/src/gnome-cmd-foldview.cc
+++ b/src/gnome-cmd-foldview.cc
@@ -8,7 +8,7 @@
C++
- Contains variadic macros
+ Contain variadic macros
---------------------------------------------------------------------------
@@ -188,9 +188,9 @@ GcmdGtkFoldview::eFileAccess GcmdGtkFoldview::Access_from_permissions(
}
GcmdGtkFoldview::View::eIcon GcmdGtkFoldview::View::Icon_from_type_permissions(
- GnomeVFSFileType type,
+ GnomeVFSFileType type,
GnomeVFSFilePermissions permissions)
-{
+{
eFileAccess access = eAccessUnknown;
access = Access_from_permissions(permissions);
@@ -199,9 +199,9 @@ GcmdGtkFoldview::View::eIcon GcmdGtkFoldview::View::Icon_from_type_permissions(
}
GcmdGtkFoldview::View::eIcon GcmdGtkFoldview::View::Icon_from_type_access(
- GnomeVFSFileType type,
+ GnomeVFSFileType type,
GcmdGtkFoldview::eFileAccess access)
-{
+{
if ( type == GNOME_VFS_FILE_TYPE_DIRECTORY )
{
switch ( access )
@@ -378,3 +378,4 @@ void
gcmdgtkfoldview_clear (GcmdGtkFoldview *foldview)
{
}
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]