Re: TreeView and Icons



On Monday August 11 2003 17:27 CEST,
                        ahmed-1205 zabvision edu pk wrote:
Hi !

i have been trying to get icons in the GtkTreeView Widget
but to no avail, i'm using GTkListStore, can any 1 please
help

i want to do some thing similar to nautilus list view
    
Hi Ahmad!
    
I'm working on the same (or nearly same) thing! Maybe we can
swap some experiences?
    
I'll do the beginning and show you some of my source. No hard
worke since copy and paste! The part of creating a complete
GtkTreeView with pixmap and text part (sorry, not all details
i can post - any more questions?):
    
typedef struct _CtTreeView CtTreeView;
    
struct _CtTreeView {
        gboolean hardDiscIsSet;
        gpointer listView;
        gpointer mimeType;
        GtkCellRenderer *treeCell;
        GtkTargetEntry targetEntry;
        GtkTreeIter treeIter;
        GtkTreeIter treeIterChild;
        GtkTreeModel *treeModel;
        GtkTreeViewColumn *treeColumn;
/*      GtkTreeSelection *treeSelect; */
        GtkTreeStore *treeStore;
        GtkWidget *ctGtkRootWindow;
        GtkWidget *treeView; };
    
any ANY_GTK+USER_FUNCTION(any) {
    
        mimeTypeIcons = g_new(CtMimeTypeIcons, 1);
        unixTree =      g_new(CtTreeView, 1);
    
        ct_tree_view_hard_disc_new(discusRootWindow,
                                unixTree, "Unix Tree", "/",
                                mimeTypeIcons, unixFileList);
        }
    
#include <gtk/gtk.h>
#include "config_path.h"
#include "ct_char_char.h"
#include "ct_error_dialog.h"
#include "ct_scan_directory.h"
#include "ct_mime_type_icons.h"
#include "ct_list_view.h"
#include "ct_tree_view.h"
    
    
enum {  CT_TREE_PIC_OPENED,
        CT_TREE_PIC_CLOSED,
        CT_TREE_TEXT,
        CT_TREE_N_COLUMNS };
    
void ct_tree_drop_cb(void);
    
void ct_tree_drop_cb(void) {
    
        (void)printf("DROP callback reached!
"); }
    
void ct_tree_view_hard_disc_new(GtkWidget *ctGtkRootWindow, CtTreeView *treeView,
                char *title, char *root, gpointer mimeType, gpointer listView) {
    
        ct_tree_view_realize(ctGtkRootWindow, treeView, title,
                                root, mimeType, listView, TRUE);
        return; }
    
/* END OF ct_tree_view_hard_disc_new() */
    
void ct_tree_view_new(GtkWidget *ctGtkRootWindow, CtTreeView *treeView,
                char *title, char *root, gpointer mimeType, gpointer listView) {
    
        ct_tree_view_realize(ctGtkRootWindow, treeView, title,
                                root, mimeType, listView, FALSE);
        return; }
    
/* END OF ct_tree_view_new() */
    
void ct_tree_view_realize(GtkWidget *ctGtkRootWindow, CtTreeView *treeView,
                        char *title, char *root, gpointer mimeType,
                        gpointer listView, gboolean hardDiscIsSet) {
    
        treeView->targetEntry.target="STRING";
        treeView->targetEntry.flags=0;
    
        if(listView!=NULL) treeView->listView=listView;
        else treeView->listView=NULL;
        treeView->mimeType=mimeType; treeView->hardDiscIsSet=hardDiscIsSet;
        treeView->ctGtkRootWindow=ctGtkRootWindow;
    
        treeView->treeStore=gtk_tree_store_new(CT_TREE_N_COLUMNS,
                GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF, G_TYPE_STRING);
    
        gtk_tree_store_append(treeView->treeStore,
                                        &treeView->treeIter, NULL);
        gtk_tree_store_append(treeView->treeStore,
                                        &treeView->treeIterChild,
                                        &treeView->treeIter);
    
        ct_tree_item_new(treeView, mimeType, NULL, &treeView->treeIter, root, 0);
    
        treeView->treeView=gtk_tree_view_new_with_model(
                        GTK_TREE_MODEL(treeView->treeStore));
        treeView->treeModel=gtk_tree_view_get_model(
                        GTK_TREE_VIEW(treeView->treeView));
    
        treeView->treeCell=gtk_cell_renderer_pixbuf_new();
        treeView->treeColumn=gtk_tree_view_column_new();
    
        gtk_tree_view_column_set_title(treeView->treeColumn, title);
        gtk_tree_view_column_pack_start(treeView->treeColumn,
                                        treeView->treeCell, FALSE);
        gtk_tree_view_column_set_attributes(treeView->treeColumn,
                                treeView->treeCell,
                                "pixbuf", CT_TREE_PIC_OPENED,
                                "pixbuf-expander-open", CT_TREE_PIC_OPENED,
                                "pixbuf-expander-closed", CT_TREE_PIC_CLOSED,
                                NULL);
    
        treeView->treeCell=gtk_cell_renderer_text_new();
        gtk_tree_view_column_pack_start(treeView->treeColumn,
                                treeView->treeCell, TRUE);
        gtk_tree_view_column_set_attributes(treeView->treeColumn,
                                treeView->treeCell,
                                "text", CT_TREE_TEXT, NULL);
    
/*      treeView->treeSelect=gtk_tree_view_get_selection(
                                GTK_TREE_VIEW(treeView->treeView));
        gtk_tree_selection_set_mode(treeView->treeSelect,
                                GTK_SELECTION_SINGLE); */
        gtk_tree_view_append_column(GTK_TREE_VIEW(treeView->treeView),
                                treeView->treeColumn);
                                
        gtk_drag_dest_set(treeView->treeView,
        /*                      GTK_DEST_DEFAULT_HIGHLIGHT | */
                                GTK_DEST_DEFAULT_DROP,
                                &treeView->targetEntry, 1, GDK_ACTION_COPY);
        (void)g_signal_connect(G_OBJECT(treeView->treeView), "drag-data-received",
                                G_CALLBACK(ct_tree_drop_cb), NULL);
        (void)g_signal_connect(G_OBJECT(treeView->treeView), "row-expanded",
                                G_CALLBACK(ct_tree_next_level), treeView);
    
        return; }
    
/* END OF ct_tree_view_realize() */
    



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]