bartabs, bar of tabs

Difference between version 2 and 3 - Previous - Next

The [https://chiselapp.com/user/aplsimple/repository/bartabs/download%|%bartabs v1.6.0] is a tab bar widget with a lot of options. It can be used as an independent widget or along with [https://aplsimple.github.io/en/tcl/pave/index.html%|%apave%|%] package as ''bts'' widget.

   * [http://chiselapp.com/user/aplsimple/repository/bartabs/file?name=CHANGELOG.md%|%Last changes%|%] for those interested

Note that [bartabs, bar of tabs%|%bartabs] is contained in [Pave, sort of geometry manager%|%apave] package as sort of ''subpackage'' and can be used independently. On the other hand, having installed [Pave, sort of geometry manager%|%apave], you need not to install [bartabs, bar of tabs%|%bartabs].

----

It's all about a bar of tabs. Or a tab bar if you like it more.

The tab bars are widely used in various editors, e.g. in [https://github.com/phase1geo/tke/%|%TKE%|%], [https://www.geany.org/%|%Geany%|%], [https://kate-editor.org/%|%Kate%|%], [http://mate-desktop.org/%|%Pluma%|%], all very good for Tcl/Tk programming, btw.

If you need a Tcl/Tk widget similar to the tab bars of those editors, you might try [https://aplsimple.github.io/en/tcl/bartabs/index.html%|%bartabs%|%].
The ''bartabs v1.1.1'' is a tab bar widget with a lot of options. It can be used as an independent widget or along with [https://aplsimple.github.io/en/tcl/pave/index.html%|%apave%|%] package as ''bts'' widget.

There is a [https://github.com/aplsimple/bartabs/releases/download/bartabs-1.1.1/bartabs-1.1.1.mp4%|%demo (11 min., 29 Mb)%|%] presenting a good example of ''bartabs'' usage.

The ''bartabs'' package provides Tcl/Tk widget containing tabs that are

   * scrollable
   * markable
   * moveable
   * closeable
   * disabled and enabled
   * static and changeable
   * selectable and multi-selectable
   * configureable
   * enhanceable with popup menu

A common appearance of ''bartabs'' is below:

[https://aplsimple.github.io/en/tcl/bartabs/files/bts1.png%|%bartabs-1%|%]

Here the details are:

   * the current file is ''test2_pave.tcl''
   ** its full name is displayed by a caller of ''bartabs''
   * currently hovered file is test_''pavedialog.tcl''
   ** its name is displayed short, due to the ''-lablen 16'' option
   * so, its real name is displayed by ''bartabs'' in the tooltip
   * its tab has ''Close'' button at the right
   * ''Scroll left'' and ''Scroll right'' buttons are at both edges of ''bartabs''
   * ''Scroll right'' button is disabled, as there are no tabs beyond the right edge

A bit customized versions of ''bartabs'' may look like the following.

[https://aplsimple.github.io/en/tcl/bartabs/files/bts2.png%|%bartabs-2%|%]

Here the details are:

   * a color scheme is changed
   * the hovered tab has no tooltip, as its label isn't shortened
   * ''Scroll right'' button is enabled, as two tabs were scrolled to the right

[https://aplsimple.github.io/en/tcl/bartabs/files/bts3.png%|%bartabs-3%|%]

Here the details are:

   * tabs have no border due to ''-bd 0'' option
   * ''bartabs'' got ''-static yes'' option, so the hovered tab has not ''Close'' button

[https://aplsimple.github.io/en/tcl/bartabs/files/bts4.png%|%bartabs-4%|%]

Here the details are:

   * ''bartabs'' is made ''-static no -bd 1'' again
   * currently edited file is underlined instead of blue background, due to ''-fgsel {}'' option
   * some tabs are marked with magenta foreground, meaning "modified" or similar

[https://aplsimple.github.io/en/tcl/bartabs/files/bts5.png%|%bartabs-5%|%]

Here the details are:

   * ''bartabs'' got ''-imagemark'' option, so the tabs are marked with an image
   * if not marked or hovered, the tabs can show its own images

[https://aplsimple.github.io/en/tcl/bartabs/files/bts6.png%|%bartabs-6%|%]

Here the details are:

   * tabs can be multi-selected with Ctrl+Click
   * thus, the caller of ''bartabs'' can handle the batch of tabs

[https://aplsimple.github.io/en/tcl/bartabs/files/bts7.png%|%bartabs-7%|%]

Here the details are:

   * handlers can be called using hot keys or a popup menu bound to ''bartabs''
   * by default, the menu actions include: 1) choosing a tab 2) moving a tab 3) closing tab(s)
   * the list of tabs contains three separated tab lists: the invisible at left, the visible, the invisible at right
   * a tab can be moved with drag-and-drop or with "... behind" menu action
   * static (''-static yes'') bartabs has no actions except for choosing a tab
   * even for static ''bartabs'', its caller can provide additional menu actions and submenus



'''Further details:'''

   * [https://aplsimple.github.io/en/tcl/bartabs/index.html%|%Description of bartabs%|%]

   * [https://aplsimple.github.io/en/tcl/bartabs/bartabs.html%|%Reference of bartabs%|%]

   * [https://aplsimple.github.io/en/tcl/baltip/baltip.html%|%Reference of baltip%|%] (package used by ''bartabs'')


** **

'''Download link:'''

   * [https://chiselapp.com/user/aplsimple/repository/bartabs/download%|%bartabs.zip%|%]

   * [https://chiselapp.com/user/aplsimple/repository/baltip/download%|%baltip.zip%|%] (package used by ''bartabs'')


** **

'''Demo video links:'''

   * [https://github.com/aplsimple/bartabs/releases/download/bartabs-1.1.1/bartabs-1.1.1.mp4%|%demo of bartabs v1.1.1 (11 min., 29 Mb)%|%], with ''test.tcl''
   * [https://github.com/aplsimple/aplsimple.github.io/releases/download/bartabs_v1.0/bartabs-1.0.mp4%|%demo of bartabs v1.0  (5 min., 21 Mb)%|%], with ''test2_pave.tcl'' of [https://aplsimple.github.io/en/tcl/pave/index.html%|%apave package%|%]