Gtk offers a dockable toolbar but this cannot be re-docked elsewhere on screen. The screenshot below shows a possible workaround using notebook groups. As the toolbar must be configured as either horizontal or vertical whenever a new page is dropped onto a notebook, then the toolbar will be automatically re-oriented. The accompanying script is basically for proof of principle rather than a realistic package.
proc addToolBarItems {tb} {
foreach item {Open Close New Cut Paste Copy} {
$tb add item -icon %#$item
}
}
set container [gnocl::box]
set table [gnocl::table]
$container add $table -fill {1 1} -expand 1
set nb(1) [gnocl::notebook -groupId 1 -onPageAdded { %c configure -orientation %d } -data horizontal]
set nb(2) [gnocl::notebook -groupId 1 -tabPosition left -onPageAdded { %c configure -orientation %d } -data vertical]
set nb(3) [gnocl::notebook -groupId 1 -tabPosition right -onPageAdded { %c configure -orientation %d } -data vertical]
set nb(4) [gnocl::notebook -groupId 1 -onPageAdded { %c configure -orientation %d } -data horizontal]
set box(1) [gnocl::box -orientation vertical]
$table add $nb(1) 0 0 -columnSpan 3 -expand 0 -fill {1 0}
$table add $nb(2) 0 1 -expand 0 -fill {0 1}
$table add $box(1) 1 1 -expand 1 -fill {1 1}
$table add $nb(3)] 2 1 -expand 0 -fill {0 1}
$table add $nb(4) 0 2 -columnSpan 3 -expand 0 -fill {1 0}
$box(1) add [gnocl::text] -fill {1 1} -expand 1
set tb(1) [gnocl::toolBar -style icons]
set tb(2) [gnocl::toolBar -style icons -orientation vertical]
set tb(3) [gnocl::toolBar -style icons -orientation vertical]
set tb(4) [gnocl::toolBar -style icons]
addToolBarItems $tb(1)
addToolBarItems $tb(2)
addToolBarItems $tb(3)
addToolBarItems $tb(4)
$nb(1) addPage $tb(1) "TB1"
$nb(2) addPage $tb(2) "TB2"
$nb(3) addPage $tb(3) "TB3"
$nb(4) addPage $tb(4) "TB4"
gnocl::window \
-child $container \
-setSize 0.3 \
-title test-side-toolbars
proc addToolBarItems {tb} {
foreach item {Open Close New Cut Paste Copy} {
$tb add item -icon %#$item
}
}
set container [gnocl::box]
set table [gnocl::table]
$container add $table -fill {1 1} -expand 1
set nb(1) [gnocl::notebook -groupId 1 -onPageAdded { %c configure -orientation %d } -data horizontal]
set nb(2) [gnocl::notebook -groupId 1 -tabPosition left -onPageAdded { %c configure -orientation %d } -data vertical]
set nb(3) [gnocl::notebook -groupId 1 -tabPosition right -onPageAdded { %c configure -orientation %d } -data vertical]
set nb(4) [gnocl::notebook -groupId 1 -onPageAdded { %c configure -orientation %d } -data horizontal]
set box(1) [gnocl::box -orientation vertical]
$table add $nb(1) 0 0 -columnSpan 3 -expand 0 -fill {1 0}
$table add $nb(2) 0 1 -expand 0 -fill {0 1}
$table add $box(1) 1 1 -expand 1 -fill {1 1}
$table add $nb(3)] 2 1 -expand 0 -fill {0 1}
$table add $nb(4) 0 2 -columnSpan 3 -expand 0 -fill {1 0}
$box(1) add [gnocl::text] -fill {1 1} -expand 1
set tb(1) [gnocl::toolBar -style icons]
set tb(2) [gnocl::toolBar -style icons -orientation vertical]
set tb(3) [gnocl::toolBar -style icons -orientation vertical]
set tb(4) [gnocl::toolBar -style icons]
addToolBarItems $tb(1)
addToolBarItems $tb(2)
addToolBarItems $tb(3)
addToolBarItems $tb(4)
$nb(1) addPage $tb(1) "TB1"
$nb(2) addPage $tb(2) "TB2"
$nb(3) addPage $tb(3) "TB3"
$nb(4) addPage $tb(4) "TB4"
gnocl::window \
-child $container \
-setSize 0.3 \
-title test-side-toolbars
Comments