LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   gtk tree view no rederer (https://www.linuxquestions.org/questions/linux-software-2/gtk-tree-view-no-rederer-4175427328/)

ted_chou12 09-14-2012 07:31 PM

gtk tree view no rederer
 
Hi, I want to use the gtk tree view to create a table like structure, but this example script has gtk tree view rederer with user functions within, I am not sure how to simply insert my strings into the treeview columns without any sophisticated rederers,
Code:

#!/bin/bash
# As unique communication channel the current PID
# number '$$' is used.
# Name of PIPE file
declare PI=/tmp/bash.gtk.$$
# Communication function; assignment function
function gtk() { echo $1 > $PI; read GTK < $PI; }
function define() { $2 "$3"; eval $1=$GTK; }

#------------------------ Main starts here

# Define some constants
NULL="NULL"
FIRST_COL=0
SECOND_COL=1
NUM_COLS=2
TRUE=1

# Start gtk-server in FIFO mode
gtk-server -fifo=$PI &
while [ ! -p $PI ]; do continue; done

# Setup GUI
gtk "gtk_init NULL NULL"

# Define main window and some attributes
define win gtk "gtk_window_new 0"
gtk "gtk_window_set_title $win 'Task Manager'"
gtk "gtk_window_set_resizable $win 0"
gtk "gtk_widget_set_size_request $win 500 500"

# Create a model
define view gtk "gtk_tree_view_new"
gtk "gtk_tree_view_set_headers_clickable $view 1"
gtk "gtk_tree_view_set_grid_lines $view 3"

# Create columns
define col1 gtk "gtk_tree_view_column_new"
gtk "gtk_tree_view_column_set_title $col1 Icon"
gtk "gtk_tree_view_append_column $view $col1"
gtk "gtk_tree_view_column_set_resizable $col1 1"
gtk "gtk_tree_view_column_set_clickable $col1 1"

define col2 gtk "gtk_tree_view_column_new"
gtk "gtk_tree_view_column_set_title $col2 Applications"
gtk "gtk_tree_view_append_column $view $col2"
gtk "gtk_tree_view_column_set_resizable $col2 1"
gtk "gtk_tree_view_column_set_clickable $col2 1"

# Define the store where the actual data is kept
gtk "gtk_server_redefine gtk_list_store_new NONE WIDGET 3 INT INT INT"
define LST gtk "gtk_list_store_new 2 G_TYPE_STRING G_TYPE_STRING"

# Fill store with some data
define ITER gtk "gtk_server_opaque"
gtk "gtk_server_redefine gtk_list_store_set NONE NONE 5 WIDGET WIDGET INT STRING INT"
gtk "gtk_list_store_append $LST $ITER"
gtk "gtk_list_store_set $LST $ITER $FIRST_COL yasetaet -1"
gtk "gtk_list_store_set $LST $ITER $SECOND_COL ewtawet -1"
gtk "gtk_list_store_append $LST $ITER"
gtk "gtk_list_store_set $LST $ITER $FIRST_COL aetawet -1"
gtk "gtk_list_store_set $LST $ITER $SECOND_COL aetawet -1"
gtk "gtk_list_store_append $LST $ITER"
gtk "gtk_list_store_set $LST $ITER $FIRST_COL aetawetweat -1"
gtk "gtk_list_store_set $LST $ITER $SECOND_COL waetawetwet -1"

# Attach store to model
gtk "gtk_tree_view_set_model $view $LST"

# Make sure all memory is released when the model is destroyed
gtk "g_object_unref $LST"

# Set the mode of the view
define SEL gtk "gtk_tree_view_get_selection $view"
gtk "gtk_tree_selection_set_mode $SEL GTK_SELECTION_SINGLE"

# Define a scrolled window
define SW gtk "gtk_scrolled_window_new $NULL $NULL"
gtk "gtk_scrolled_window_set_policy $SW 1 1"
gtk "gtk_scrolled_window_set_shadow_type $SW 1"
gtk "gtk_container_add $SW $view"

# Now register a 'userfunction' for both columns - using different macros with different column number
# Create renderers to show contents
define renderer gtk "gtk_cell_renderer_text_new"
gtk "gtk_tree_view_column_pack_start $col1 $FIRST_COL 1"
gtk "gtk_tree_view_column_pack_start $col2 $renderer 1"

gtk "gtk_server_define gtk_tree_view_column_set_cell_data_func NONE NONE 5 WIDGET WIDGET MACRO DATA NULL"
gtk "gtk_tree_store_append $col1 $renderer"
gtk "gtk_tree_view_column_set_cell_data_func $col2 $renderer2 GtkTreeCellDataFunc_2 $SECOND_COL $NULL"

# Finish gui
gtk "gtk_container_add $win $SW"
gtk "gtk_widget_show_all $win"

# Set ordering variable
ORDER_FIRST=0
ORDER_SECOND=1

# MAINLOOP
until [[ $EVENT = $win ]]
do
    define EVENT gtk "gtk_server_callback wait"
    case $EVENT in

        $col1)
            let ORDER_FIRST=1-$ORDER_FIRST
            let ORDER_SECOND=1-$ORDER_SECOND
            gtk "gtk_tree_sortable_set_sort_column_id $LST $FIRST_COL $ORDER_FIRST";;

        $col2)
            let ORDER_FIRST=1-$ORDER_FIRST
            let ORDER_SECOND=1-$ORDER_SECOND
            gtk "gtk_tree_sortable_set_sort_column_id $LST $SECOND_COL $ORDER_SECOND";;

    esac
done

gtk "gtk_server_exit"

Thanks,
Ted

ted_chou12 09-14-2012 08:03 PM

Code:

#!/bin/bash
# As unique communication channel the current PID
# number '$$' is used.
# Name of PIPE file
declare PI=/tmp/bash.gtk.$$
# Communication function; assignment function
function gtk() { echo $1 > $PI; read GTK < $PI; }
function define() { $2 "$3"; eval $1=$GTK; }

#------------------------ Main starts here

# Define some constants
NULL="NULL"
FIRST_COL=0
SECOND_COL=1
NUM_COLS=2
TRUE=1

# Start gtk-server in FIFO mode
gtk-server -fifo=$PI &
while [ ! -p $PI ]; do continue; done

# Setup GUI
gtk "gtk_init NULL NULL"

# Define main window and some attributes
define win gtk "gtk_window_new 0"
gtk "gtk_window_set_title $win 'Task Manager'"
gtk "gtk_window_set_resizable $win 0"
gtk "gtk_widget_set_size_request $win 500 500"

# Create a model
define view gtk "gtk_tree_view_new"
gtk "gtk_tree_view_set_headers_clickable $view 1"
gtk "gtk_tree_view_set_grid_lines $view 3"

# Define the store where the actual data is kept
gtk "gtk_server_redefine gtk_list_store_new NONE WIDGET 3 INT INT INT"
define LST gtk "gtk_list_store_new 2 G_TYPE_STRING G_TYPE_STRING"

# Fill store with some data
define ITER gtk "gtk_server_opaque"
gtk "gtk_server_redefine gtk_list_store_set NONE NONE 5 WIDGET WIDGET INT STRING INT"
gtk "gtk_list_store_append $LST $ITER"
gtk "gtk_list_store_set $LST $ITER $FIRST_COL yasetaet -1"
gtk "gtk_list_store_set $LST $ITER $SECOND_COL ewtawet -1"
gtk "gtk_list_store_append $LST $ITER"
gtk "gtk_list_store_set $LST $ITER $FIRST_COL aetawet -1"
gtk "gtk_list_store_set $LST $ITER $SECOND_COL aetawet -1"
gtk "gtk_list_store_append $LST $ITER"
gtk "gtk_list_store_set $LST $ITER $FIRST_COL aetawetweat -1"
gtk "gtk_list_store_set $LST $ITER $SECOND_COL waetawetwet -1"

# Attach store to model
gtk "gtk_tree_view_set_model $view $LST"

# Make sure all memory is released when the model is destroyed
gtk "g_object_unref $LST"

# Set the mode of the view
define SEL gtk "gtk_tree_view_get_selection $view"
gtk "gtk_tree_selection_set_mode $SEL GTK_SELECTION_SINGLE"

# Define a scrolled window
define SW gtk "gtk_scrolled_window_new $NULL $NULL"
gtk "gtk_scrolled_window_set_policy $SW 1 1"
gtk "gtk_scrolled_window_set_shadow_type $SW 1"
gtk "gtk_container_add $SW $view"

# Now register a 'userfunction' for both columns - using different macros with different column number
# Create renderers to show contents
define renderer gtk "gtk_cell_renderer_text_new"

# Create columns
define col1 gtk "gtk_tree_view_column_new_with_attributes 'Icon' $renderer 'text' $FIRST_COL"
gtk "gtk_tree_view_append_column $view $col1"
gtk "gtk_tree_view_column_set_resizable $col1 1"
gtk "gtk_tree_view_column_set_clickable $col1 1"

#define col2 gtk "gtk_tree_view_column_new"
#gtk "gtk_tree_view_column_set_title $col2 Applications"
#gtk "gtk_tree_view_append_column $view $col2"
#gtk "gtk_tree_view_column_set_resizable $col2 1"
#gtk "gtk_tree_view_column_set_clickable $col2 1"
define col2 gtk "gtk_tree_view_column_new_with_attributes 'Icon' $renderer 'text' $FIRST_COL"
gtk "gtk_tree_view_append_column $view $col2"
gtk "gtk_tree_view_column_set_resizable $col2 1"
gtk "gtk_tree_view_column_set_clickable $col2 1"

#gtk "gtk_server_define gtk_tree_view_column_set_cell_data_func NONE NONE 5 WIDGET WIDGET MACRO DATA NULL"
#gtk "gtk_tree_view_column_set_cell_data_func $col2 $renderer2 GtkTreeCellDataFunc_2 $SECOND_COL $NULL"

# Finish gui
gtk "gtk_container_add $win $SW"
gtk "gtk_widget_show_all $win"

# Set ordering variable
ORDER_FIRST=0
ORDER_SECOND=1

# MAINLOOP
until [[ $EVENT = $win ]]
do
    define EVENT gtk "gtk_server_callback wait"
    case $EVENT in

        $col1)
            let ORDER_FIRST=1-$ORDER_FIRST
            let ORDER_SECOND=1-$ORDER_SECOND
            gtk "gtk_tree_sortable_set_sort_column_id $LST $FIRST_COL $ORDER_FIRST";;

        $col2)
            let ORDER_FIRST=1-$ORDER_FIRST
            let ORDER_SECOND=1-$ORDER_SECOND
            gtk "gtk_tree_sortable_set_sort_column_id $LST $SECOND_COL $ORDER_SECOND";;

    esac
done

gtk "gtk_server_exit"



All times are GMT -5. The time now is 10:14 AM.