File indexing completed on 2024-05-05 05:34:56
0001 /* 0002 this file is part of the oxygen gtk engine 0003 SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0004 0005 based on the Null Theme Engine for Gtk+. 0006 SPDX-FileCopyrightText: 2008 Robert Staudinger <robert.staudinger@gmail.com> 0007 0008 SPDX-License-Identifier: LGPL-2.0-or-later 0009 */ 0010 0011 #include "oxygenlistdemowidget.h" 0012 0013 #include <iostream> 0014 #include <string> 0015 0016 namespace Oxygen 0017 { 0018 0019 //____________________________________________________ 0020 ListDemoWidget::ListDemoWidget( void ) 0021 { 0022 0023 // main widget 0024 GtkWidget* mainWidget( gtk_vbox_new( false, 0 ) ); 0025 gtk_box_set_spacing( GTK_BOX( mainWidget ), 5 ); 0026 setWidget( mainWidget ); 0027 0028 // setup 0029 setName( "Lists" ); 0030 setComments( "Shows the appearance of lists and trees" ); 0031 setIconName( "view-list-tree" ); 0032 realize(); 0033 0034 // vertical pane 0035 GtkWidget* vpaned( gtk_vpaned_new() ); 0036 gtk_widget_show( vpaned ); 0037 gtk_box_pack_start( GTK_BOX( mainWidget ), vpaned, true, true, 0 ); 0038 0039 // simple list 0040 { 0041 0042 GtkListStore* model( gtk_list_store_new( 1, G_TYPE_STRING ) ); 0043 const char* columns[] = 0044 { 0045 "First Item", 0046 "Second Item", 0047 "Third Item" 0048 }; 0049 0050 for( unsigned int i=0; i<3; i++ ) 0051 { 0052 GtkTreeIter iter; 0053 gtk_list_store_append( model, &iter ); 0054 gtk_list_store_set( model, &iter, 0, columns[i], -1 ); 0055 } 0056 0057 GtkWidget* treeView( gtk_tree_view_new_with_model( GTK_TREE_MODEL( model ) ) ); 0058 gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( treeView ), false ); 0059 gtk_widget_show( treeView ); 0060 0061 // renderer 0062 GtkCellRenderer *renderer( gtk_cell_renderer_text_new() ); 0063 GtkTreeViewColumn *column( gtk_tree_view_column_new_with_attributes( "", renderer, "text", 0, NULL ) ); 0064 0065 gtk_tree_view_append_column( GTK_TREE_VIEW( treeView ), column ); 0066 0067 // scrolled window 0068 GtkWidget* scrolledWindow( gtk_scrolled_window_new( 0L, 0L ) ); 0069 gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_SHADOW_IN ); 0070 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); 0071 gtk_container_add( GTK_CONTAINER( scrolledWindow ), treeView ); 0072 gtk_container_set_border_width( GTK_CONTAINER( scrolledWindow ), 2 ); 0073 gtk_widget_show( scrolledWindow ); 0074 0075 gtk_paned_pack1( GTK_PANED( vpaned ), scrolledWindow, true, true ); 0076 0077 } 0078 0079 // tree 0080 { 0081 0082 GtkTreeStore* model( gtk_tree_store_new ( 2, G_TYPE_STRING, G_TYPE_STRING ) ); 0083 const char* titleColumns[] = 0084 { 0085 "First Item", 0086 "Second Item", 0087 "Third Item" 0088 }; 0089 0090 const char* descriptionColumns[] = 0091 { 0092 "First Description", 0093 "Second Description", 0094 "Third Description" 0095 }; 0096 0097 const char* subTitleColumns[] = 0098 { 0099 "First Subitem", 0100 "Second Subitem", 0101 "Third Subitem" 0102 }; 0103 0104 const char* subDescriptionColumns[] = 0105 { 0106 "First Subitem Description", 0107 "Second Subitem Description", 0108 "Third Subitem Description" 0109 }; 0110 0111 for( unsigned int i=0; i<3; i++ ) 0112 { 0113 GtkTreeIter iter; 0114 gtk_tree_store_append( model, &iter, 0L ); 0115 gtk_tree_store_set( model, &iter, 0, titleColumns[i], 1, descriptionColumns[i], -1 ); 0116 0117 // append children 0118 if( i == 1 ) 0119 { 0120 for( unsigned int i=0; i<2; i++ ) 0121 { 0122 GtkTreeIter subiter; 0123 gtk_tree_store_append( model, &subiter, &iter ); 0124 gtk_tree_store_set( model, &subiter, 0, subTitleColumns[i], 1, subDescriptionColumns[i], -1 ); 0125 } 0126 0127 } else if( i == 2 ) { 0128 0129 GtkTreeIter subiter; 0130 gtk_tree_store_append( model, &subiter, &iter ); 0131 gtk_tree_store_set( model, &subiter, 0, subTitleColumns[2], 1, subDescriptionColumns[2], -1 ); 0132 0133 } 0134 0135 } 0136 0137 GtkWidget* treeView( gtk_tree_view_new_with_model( GTK_TREE_MODEL( model ) ) ); 0138 gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( treeView ), true ); 0139 gtk_widget_show( treeView ); 0140 0141 // renderers 0142 { 0143 GtkCellRenderer *renderer( gtk_cell_renderer_text_new() ); 0144 GtkTreeViewColumn *column( gtk_tree_view_column_new_with_attributes( "Title", renderer, "text", 0, NULL ) ); 0145 gtk_tree_view_column_set_resizable(column, TRUE); 0146 gtk_tree_view_append_column( GTK_TREE_VIEW( treeView ), column ); 0147 } 0148 0149 { 0150 GtkCellRenderer *renderer( gtk_cell_renderer_text_new() ); 0151 GtkTreeViewColumn *column( gtk_tree_view_column_new_with_attributes( "Description", renderer, "text", 1, NULL ) ); 0152 gtk_tree_view_column_set_resizable(column, TRUE); 0153 gtk_tree_view_append_column( GTK_TREE_VIEW( treeView ), column ); 0154 } 0155 0156 // scrolled window 0157 GtkWidget* scrolledWindow( gtk_scrolled_window_new( 0L, 0L ) ); 0158 gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_SHADOW_IN ); 0159 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); 0160 gtk_container_add( GTK_CONTAINER( scrolledWindow ), treeView ); 0161 gtk_container_set_border_width( GTK_CONTAINER( scrolledWindow ), 2 ); 0162 gtk_widget_show( scrolledWindow ); 0163 0164 gtk_paned_pack2( GTK_PANED( vpaned ), scrolledWindow, true, true ); 0165 0166 } 0167 0168 0169 } 0170 0171 }