Updated 2008-04-01 13:41:23 by he

HE 20070201: I like BWidgets notebook. The only thing I'm missing is to configure the placement of arrowbuttons. It is a little bit inefficient to move with the mousepointer from side to side, if I had to change the direction the tabs are moved.

Here is a small patch (diff -n) to add a new option -arrowplace (left|both|right) with 'both' as default. 'both' is the original behavior.
 a92 1
	{-arrowplace         Enum both 0 {left both right}}
 a617 3
	if {$base == -1} {
	    return
	}
 d623 1
 d953 2
 a954 19

    switch -- [Widget::cget $path -arrowplace] {
	left {
	    set xl      0
	    set xr      $_warrow
            set permanent 1
	}
	both {
	    set xl      0
	    set xr      [expr {$w - $_warrow + 1}]
            set permanent 0
	}
	right {
	    set xl      [expr {$w - $_warrow - $_warrow + 1}]
	    set xr      [expr {$w - $_warrow + 1}]
            set permanent 1
	}
    }

 d967 1
 a967 1
    if { $data(base) > 0 || $permanent} {
 d981 1
 a981 1
    } elseif {!$permanent} {
 d985 2
 a986 2
    if { ($data(base) < $nbpages-1 && $data(wpage) + [_get_x_page $path 0] + 6 > $w)
		|| $permanent} {
 d1000 1
 a1000 1
    } elseif {!$permanent} {

if you are working on a platform without patch, you can use the following:

  • create the file notebook.diff in the bwidget1.8 directory.
  • copy the diff data in to notebook.diff
  • open a wish or tclsh
  • copy the code from patch for rcs in tcl into the open console
  • execute the following lines:
 cd [tk_chooseDir -title "Select bwidget1.8 directory"]
 file rename notebook.tcl notebook.tcl.orig
 rcs::file2array notebook.tcl.orig filedata
 set fid [open notebook.diff r]
 set patch [read $fid]
 close $fid
 rcs::patch $patch filedata
 set fid [open notebook.tcl w]
 foreach index [lsort -dictionary [array names filedata]] {
    puts $fid $filedata($index)
 }
 close $fid