<commit_before>Colors

Black - palettes, popups
Toolbar Grey #262626 - toolbars, expanded palette
Button Grey #808080 - buttons
Selection Grey #A6A6A6 - selection, expanded panels
Panel Grey #C0C0C0 - panel, desktop
Text field Grey #E5E5E5 - text field background
White - pressed states and multiline text areas

States

Default - gtk.STATE_NORMAL
Focused - gtk.STATE_SELECTED
Pressed - gtk.STATE_ACTIVE
Hover - gtk.STATE_PRELIGHT
Inactive - gtk.STATE_INSENSITIVE

gtk.Button

* The image should work the same of the image button
* Need to write a theme to match the visual style
* Cancel should never be default because you can always activate it with Esc
* Radius should be 1/2 of the control height
* Write a list of stock icons people should use and replace them in the theme to match our visual style

sugar.Icon

* Used in canvas-like views so probably an Hippo item.
* Svg Only.
* It should support xo colors easily.
* Rollovers with a focus mark.

sugar.IconButton

* Support for SVG and png.
* Icons should be grey scale. But might be coloured with the XO colors (svg only)
* Size of the button is 75 pixels, size of the icon canvas is 55 and suggested icon size is around 45.
* States, defaults:
    Hover : Black
    Pressed : Rounded rectangle 61 pixels, 10 pixels of radius, filled in selection grey
    Focused : Rounded rectangle 61 pixels, 10 pixels of radius, stroked in white 2.25 points
    Inactive. Fallbacks if no inactive icon is specified.
        Svg: Remove the fill and render the stroke in button grey
        Png: just do some effect on the pixbuf, which also work for grey icons
* You can set an icon for each states which replace the default except for the Hover state of buttons which has rollover.
* "palette" boolean property. If true show an arrow active immediately on click (but also on hover)

sugar.ToolButton (support for rollovers)

* Contains IconButton
* There is no palette but a tooltip.
* Normal: Button grey rounded filled rectangle
* Inactive: Button grey rounded stroked rectangle
    
sugar.ToggleIconButton

* Toggled should be like Pressed
* Inconsistent should be the same of Default (the action depend on the cases)
* Pressed state and Toggled state is Selection grey

sugar.ToolIconButton

* Contains a ToggleIconButton

gtk.CheckButton

* Match the visual design, shoul be possible with just theme changes

gtk.RadioButton

* Exactly like CheckButton just a different indicator

gtk.OptionMenu

* Match the visual style. Hopefully only theme changes.
* Add the scroll thing.
* Groups. Either by a normal separator or a titled separator.
* Optional support for showing just the icon from the menu (maybe, low priority)
* Allow fixed sizing of the "button" and ellipsize the label

sugar.Entry

* Support for packing icons before and after the entry (maybe patch gtk.Entry)
* Activate/Cancel functionality.
    Two buttons at the end to the entry and key bindings (Esc and Enter). They are visible only when there are changes.
    The icons appear only when the field is focused and the content is changed since it gained focus.
    When hitting escape revert and select all the text.

gtk.ComboxBox

* We miss accept/cancel functionality. Probably patch gtk to allow to replace the entry in the combo box with sugar.Entry.

sugar.SearchEntry

* Use sugar.Entry
* Search button on the left. Clicking should focus the entry.
* Cancel button (Esc) on the right, always visible when there is text in the entry. Clicking it will clear the text and focus the textfield.
* Activate button (Enter) on the right displayed when the content of the text field changed from the last focus or activation.
* While activating:
    the Activate button becomes a Spinner.
    clicking the close button also cancel the search.
* When activation is completed:
    The spinner goes away.
    We *don't* clear the entry but we select the text.
* Search can either be incremental or on activation. For incremental there is no Accept button. start_spinning and stop_spinning to control the spin icon. start would only spin for an amount of time decided by the widget itself (and documented).
* The suggestions list is provided by the application. Need to figure out which api to use, either model or signal based.
* Default implementation of suggestions which automatically save the latest searches.

sugar.DateSelector

* Pluggable calendar implementation to support different kind of calendars (localization).
* Might reuse gtk.Calendar. We should unify month/year selectors and accellerate the movement gradually.<commit_msg>More work on the controls doc<commit_after>Colors

Black - palettes, popups
Toolbar Grey #262626 - toolbars, expanded palette
Button Grey #808080 - buttons
Selection Grey #A6A6A6 - selection, expanded panels
Panel Grey #C0C0C0 - panel, desktop
Text field Grey #E5E5E5 - text field background
White - pressed states and multiline text areas

States

Default - gtk.STATE_NORMAL
Focused - gtk.STATE_SELECTED
Pressed - gtk.STATE_ACTIVE
Hover - gtk.STATE_PRELIGHT
Inactive - gtk.STATE_INSENSITIVE

gtk.Button

* The image should work the same of the image button
* Need to write a theme to match the visual style
* Cancel should never be default because you can always activate it with Esc
* Radius should be 1/2 of the control height
* Write a list of stock icons people should use and replace them in the theme to match our visual style

sugar.Icon

* Used in canvas-like views so probably an Hippo item.
* Svg Only.
* It should support xo colors easily.
* Rollovers with a focus mark.

sugar.IconButton

* Support for SVG and png.
* Icons should be grey scale. But might be coloured with the XO colors (svg only)
* Size of the button is 75 pixels, size of the icon canvas is 55 and suggested icon size is around 45.
* States, defaults:
    Hover : Black
    Pressed : Rounded rectangle 61 pixels, 10 pixels of radius, filled in selection grey
    Focused : Rounded rectangle 61 pixels, 10 pixels of radius, stroked in white 2.25 points
    Inactive. Fallbacks if no inactive icon is specified.
        Svg: Remove the fill and render the stroke in button grey
        Png: just do some effect on the pixbuf, which also work for grey icons
* You can set an icon for each states which replace the default except for the Hover state of buttons which has rollover.
* "palette" boolean property. If true show an arrow active immediately on click (but also on hover)

sugar.ToolButton (support for rollovers)

* Contains IconButton
* There is no palette but a tooltip.
* Normal: Button grey rounded filled rectangle
* Inactive: Button grey rounded stroked rectangle
    
sugar.ToggleIconButton

* Toggled should be like Pressed
* Inconsistent should be the same of Default (the action depend on the cases)
* Pressed state and Toggled state is Selection grey

sugar.ToolIconButton

* Contains a ToggleIconButton

gtk.CheckButton

* Match the visual design, shoul be possible with just theme changes

gtk.RadioButton

* Exactly like CheckButton just a different indicator

gtk.OptionMenu

* Match the visual style. Hopefully only theme changes.
* Add the scroll thing.
* Groups. Either by a normal separator or a titled separator.
* Optional support for showing just the icon from the menu (maybe, low priority)
* Allow fixed sizing of the "button" and ellipsize the label

sugar.Entry

* Support for packing icons before and after the entry. Extend gtk.Entry.
* Activate/Cancel functionality.
    Two buttons at the end to the entry and key bindings (Esc and Enter). They are visible only when there are changes.
    The icons appear only when the field is focused and the content is changed since it gained focus.
    When hitting escape revert and select all the text.

gtk.ComboxBox

* We miss accept/cancel functionality. Probably patch gtk to allow to replace the entry in the combo box with sugar.Entry.

sugar.SearchEntry

* Use sugar.Entry
* Search button on the left. Clicking should focus the entry.
* Cancel button (Esc) on the right, always visible when there is text in the entry. Clicking it will clear the text and focus the textfield.
* Activate button (Enter) on the right displayed when the content of the text field changed from the last focus or activation.
* While activating:
    the Activate button becomes a Spinner.
    clicking the close button also cancel the search.
* When activation is completed:
    The spinner goes away.
    We *don't* clear the entry but we select the text.
* Search can either be incremental or on activation. For incremental there is no Accept button. start_spinning and stop_spinning to control the spin icon. start would only spin for an amount of time decided by the widget itself (and documented).
* The suggestions list is provided by the application. Need to figure out which api to use, either model or signal based.
* Default implementation of suggestions which automatically save the latest searches.

sugar.DateSelector
sugar.DateComboBox (lower priority)

* Pluggable calendar implementation to support different kind of calendars (localization).
* Might reuse gtk.Calendar. We should unify month/year selectors and accellerate the movement gradually.

gtk.SpinButton

* Make it match the visual design, hopefully just theme changes

sugar.ToolItem

* Optional label, either text or icon
* Used for example to have a label near a SpinButton. Clicking on the label should focus the spin button.

gtk.ProgressBar

* Make it match the visual design, hopefully just theme changes.
* For determinate progress bars should we always pulse to show that there is activity (power consumption? necessary feedback?)
* Do not use text inside the progress bar

sugar.Spinner

* pulse() call to keep it running with a timeout
* stop()

gtk.Range (or sugar.Slider?)

* Property to show the fill in white color, probably default on.
* Draw the discrete steps.
* For colored sliders, subclass gtk.Range and add a gradient.

sugar.LevelIndicator

* Set the number of blocks
* Set the level as percentage
* Property for discrete or not
* We can probably use a GtkAdjustment for most of the above.Rollovers


gtk.TextView

gtk.ScrolledWindow

* Theme it to match the visual.

sugar.ScrolledWindow

* Support for markers. Line as default and optional support for other shapes (star for bookmarks, circles for xos...). Generic way of add marks and keep them updated (observer?)


TODO

**Rollovers**
Grab key
Trays
Grouping
Tabs
Sorting
Expander
Clipboard
{'fraction_non_alphanumeric': 0.04288722956155466, 'fraction_numerical': 0.007658433850277618, 'mean_word_length': 4.044422984065669, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7273872', 'n_tokens_mistral': 2808, 'n_tokens_neox': 2690, 'n_words': 1536}