Commit graph

21 commits

Author SHA1 Message Date
Andreas Kling
613c7b9856 GTableView: Make it possible to hide/show columns from a context menu.
Show a context menu when right clicking the headers of a GTableView, and
allow the user to hide/show individual columns.
2019-05-10 20:26:55 +02:00
Andreas Kling
48e3ea9e5c GTableView: Make it possible to resize the columns with the mouse.
The GModel now merely provides an initial width for the columns. Once that
has been queried, the table view manages width from then on.
2019-05-04 23:45:31 +02:00
Andreas Kling
a8c856ed3d GTableView: Improve look of column headers, and add sort order indicators. 2019-05-04 21:16:41 +02:00
Andreas Kling
18785ba5c3 LibGUI: Move editing logic from GTableView up to GAbstractView.
GAbstractView should be able to manage the high-level editing logic, as long
as subclasses implement content_rect(GModelIndex) so we know where to put
the editing widgets. :^)
2019-04-19 00:07:33 +02:00
Andreas Kling
0e6b273620 LibGUI: Start working on GTableView inline editing.
This is pretty shaky still, but the basic idea is that you subclass GModel
and return true for editable indices. The table view also needs to have its
editable flag set.
2019-04-18 22:27:14 +02:00
Andreas Kling
20f7d7ec67 LibGUI: Add GWidget::doubleclick_event().
Now double-clicking an item in a GTableView or GItemView will activate it.
2019-03-25 01:43:32 +01:00
Andreas Kling
19fa70c821 LibGUI: Add a GItemView class.
This is a GAbstractView subclass that implements a icon-based view onto
a GModel. It still need a bunch of work, but it's in basic usable shape.
2019-03-23 03:54:45 +01:00
Andreas Kling
5707d7f547 LibGUI: Add GAbstractView base class for GTableView.
This is in preparation for adding a new view class.
2019-03-23 02:04:31 +01:00
Andreas Kling
994cf10b3e LibGUI: Rename GTableModel => GModel. 2019-03-23 01:42:49 +01:00
Andreas Kling
951377e93e GTableView: Add ability to hide individual columns at view-level.
Use this in IRCClient to hide the "sender" column in the server message view
since everything in that view comes from the "Server" anyway.
2019-03-20 13:36:07 +01:00
Andreas Kling
f47945759b LibGUI: Make GTableModel a retainable object.
It became clear that this class needs to support multiple owners.
2019-03-20 03:27:07 +01:00
Andreas Kling
6fbabac460 LibGUI: Factor out scrolling logic from GTableView into a GScrollableWidget.
This then becomes the base class for GTableView. I'd like to share as much
code as possible with GTextEditor and any other scrollable widgets.
2019-03-16 16:03:31 +01:00
Andreas Kling
b54ab06595 GTableView: Add a way to turn off alternating row colors. 2019-03-15 21:41:27 +01:00
Andreas Kling
a5d538b389 GTableView: Add a way to hide the column headers.
There are many situations where you would want a table view without headers.
2019-03-15 14:50:36 +01:00
Andreas Kling
3681a402ba GTableView: Allow changing sort options by clicking column headers.
Also paint the sorted column slightly differently to indicate what's up.
2019-03-09 13:59:01 +01:00
Andreas Kling
574a399347 LibGUI: GTableView should scroll items into view when keyboard navigating. 2019-03-01 14:29:34 +01:00
Andreas Kling
b5dcad932e LibGUI: Allow basic keyboard navigation in GTableView.
Pressing Enter will now "activate" the selected index, meaning that
the model gets a call to activate(GModelIndex).
2019-03-01 13:48:08 +01:00
Andreas Kling
bff5b71467 LibGUI: Add a GModelNotification class that views will receive.
I don't want to use GEvent here since these need to be synchronous
and mixing sync and async GEvents would be stupid.
2019-02-28 21:30:17 +01:00
Andreas Kling
8eefdbdce8 LibGUI: Add horizontal scrollbar to GTableView.
Now we can scroll content in both directions if it won't fit in the view.
2019-02-28 17:58:53 +01:00
Andreas Kling
827ec99a8f LibGUI: Update GTableView's scrollbar range in response to resize. 2019-02-28 13:25:52 +01:00
Andreas Kling
dc9f8a9361 LibGUI: Take ProcessManager's process view and turn it into GTableView.
Make it sufficiently generic that it can be reused for any table data. :^)
2019-02-28 10:57:09 +01:00