Difference between revisions of "Features/TableView Widget"
Line 1: | Line 1: | ||
<noinclude>{{TOCright}} | <noinclude>{{TOCright}} | ||
− | [[Category:Feature | + | [[Category:Feature Ready for Release Manager]] |
[[Category:Feature|<Feature Name>]] | [[Category:Feature|<Feature Name>]] | ||
</noinclude> | </noinclude> |
Revision as of 22:53, 27 November 2009
Summary
GTK widget to replace gtk.TreeView in Journal.
Owner
- Name: Aleksey Lim
- Email: send an email
Current status
- Targeted release: 0.88
- Last updated: Sat Nov 28 01:20:59 UTC 2009
- Percentage of completion: 75%
Detailed Description
Feature introduced two new classes - SmartTable and TableView.
SmartTable class
Model less implementation. The real widget consist of visible-columns * (visible-rows + 2) identical widgets(constructor is beeing passed to SmartTable while creation) and while scrolling(per line, not per row) class shifts these widgets.
TreeTable class
Just adds mgt.TreeModel support.
Benefit to Sugar
Standard gtk components are not designed to be lazy. Third party widgets, I managed to find, uses scheme with renders(like gtk components), introduced component uses widgets instead(could have performance penalties, I guess, in common case but we don't have many rows in Journal view, so should be ok for us).
Benefits we have for such scheme:
- coding cells is more useful by using widgets then renders, we can reuse our existed custom widgets instead of coding sugarized cell renders
- in some cases its hard to sugarize cells theme(we still have ugly progress bar for Journal entries), with new widget, we use just gtk.ProgressBar
Scope
- new widget for sugar-toolkit
UI Design
Nothing.
How To Test
Simple example for SmootTable widget
import gtk from sugar.graphics.smoothtable import SmoothTable window = gtk.Window() scrolled = gtk.ScrolledWindow() scrolled.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS) window.add(scrolled) class Cell(gtk.Button): def do_fill_in(self, table, row, column): self.props.label = '%s:%s' % (row, column) table = SmoothTable(Cell, 3, 3) table.row_count = 100 scrolled.add(table) window.show_all() gtk.main()
User Experience
Nothing will be changed in case of user experience.
Dependencies
- regular glucose dependencies
Contingency Plan
None necessary, revert to previous release behaviour.
Documentation
Is there upstream documentation on this feature, or notes you have written yourself? Has this topic been discussed in the mailing list or during a meeting? Link to that material here so other interested developers can get involved.
Release Notes
The Sugar Release Notes inform end-users about what is new in the release. An Example is 0.84/Notes. The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns. If there are any such changes involved in this feature, indicate them here. You can also link to upstream documentation if it satisfies this need. This information forms the basis of the release notes edited by the release team and shipped with the release.