> 1. The 3 states button.
> -----------------------
> 
> The most important, the most easy to implement is the idea of a button which 
> can take 3 different states.
> 
> I had this idea because I often have the need of something that I have called 
> the triboolean logic.
> 
> Which consist of something like a boolean but instead of 0 or 1 as possible 
> values you get 3 values:
> 
> -1, 0 and 1.
> 
> It's of course easy to create this type with **typedef**:
> 
> https://github.com/mrcyberfighter/mk-project/blob/master/mk-project-1.0.0/data/templates/C_Project/headers/tribool.h
> 
> But gtk+ don't have this kind of widget and I never try to D.I.Y a widget 
> with gtk+.
> 
> ASCII Image of a 3 state button:
> ++++++++++++++++++++++++++++++++
> 
> ```
> 
> +-----+-----+-----+
> |  -  |  0  |  +  |
> +-----+-----+-----+
> 
> ```

You can create you own class and implement something quite similar yourself.  I 
suggest you to look at the "history action" buttons of the recent versions of 
evince.  By using the correct style context GTK_STYLE_CLASS_LINKED 
<https://developer.gnome.org/gtk3/stable/GtkStyleContext.htm>, the 
go-forward/go-back buttons are fused in one block and they look slick.  Look at 
the source code, it's quite simple to read : 
https://git.gnome.org/browse/evince/tree/shell/ev-history-action.c, 
https://git.gnome.org/browse/evince/tree/shell/ev-history-action.h
Then, it's only a matter of using three toggle buttons instead of two push 
buttons, and correctly handling the states between themselves.


-----------------------------------------------------
https://www.mail.be
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to