LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Software
User Name
Password
Linux - Software This forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.

Notices


Reply
  Search this Thread
Old 09-14-2012, 07:31 PM   #1
ted_chou12
Member
 
Registered: Aug 2010
Location: Zhongli, Taoyuan
Distribution: slackware, windows, debian (armv4l GNU/Linux)
Posts: 431
Blog Entries: 32

Rep: Reputation: 3
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
 
Old 09-14-2012, 08:03 PM   #2
ted_chou12
Member
 
Registered: Aug 2010
Location: Zhongli, Taoyuan
Distribution: slackware, windows, debian (armv4l GNU/Linux)
Posts: 431

Original Poster
Blog Entries: 32

Rep: Reputation: 3
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"
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Is a 'limited tree view' possible with nautilus? zer0nix Linux - Software 1 12-11-2011 01:48 AM
KDE Konqueror View Mode Icons (Image Preview/Tree View) sadarax Linux - General 7 06-27-2006 12:45 PM
tree view as default nawin_g Linux - Newbie 7 11-09-2005 04:28 PM
GTK tree view/model/selection question elluva Programming 8 05-22-2004 12:19 PM
tree view glock19 Linux - General 2 01-30-2002 11:41 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Software

All times are GMT -5. The time now is 10:45 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration