The recently added 'tabCondfigure' and 'tabCget' is now replaced with 'tab configure' and 'tab cget'.
I've just been working on the module to create the gnocl notebook widget, paying particular attention to the tab configuration options.
Earlier, and for convenience's sake, I added two commands tabConfigure and tagCget. All well and good, but the established practice of is to have the commands addressing the main container, and sub commands container objects, in the manner of the text and its tags and various other elements.
The reasoning for this is that the notebook tab contains a child widget, a label by default, which the Gtk api allows to be directly accessed or even replaced. This is how some applications are able to embed widgets into notebook tabs (take Geany for example).
Unlike text tags, which are the same class of object, the notebook tab ans a container can become the parent of any other widget or even a boxed set of widgets. Aware of this, any specific cget or configure command needs to be customized in order to allow for this extra flexibility.
To accommodate this the notebook source module contains two functions tabConfigure and tabCget to handle these differences.
The creating the tabConfigure function was pretty straight forward, but getting the tabCget function just right was a little more elusive, perhaps largely due to the side effects of having just had a covid jab!
Determining which of the options is queried in the source is achieved with a simple while () loop through each element in the tabOptions structure array:
while ( tabOptions[idx].optName != NULL ) {
if ( strcmp ( tabOptions[idx].optName, Tcl_GetString ( objv[4] ) ) == 0 ) {
break;
}
idx++;
};
The resultant value for idx is then passed through a switch filter and the appropriate values retrieved.
The practical benefits of the tab configure option are the settings controlling the tear-off and relocation of tabs in the tab bar can be adjusted, menu labels and texts can be reset, and of course, multiple items embedded into the tab.
Comments