ladybird/Libraries/LibGUI
Andreas Kling ea17b0cbb6 LibGUI: Start building a way to instantiate GUI from JSON
My original idea for GUI building tools was to have the "VisualBuilder"
app generate C++ code which in turn programmatically instantiated UI.
That never really materialized in any useful way beyond static UIs.

This is a fresh, new approach: using JSON to declare the UI and parsing
and constructing this UI at runtime. This will allow for way more
dynamic and flexible approaches to GUI development (I think.)

The basic idea is that you pass a JSON string to Widget::load_from_json
and it takes care of the rest.

This first version supports basic box layouts and instantiation of
arbitrary widgets, as long as those widgets have been registered.

This code has some pretty rough edges right now as it's evolving and
we need to figure out a lot of things about how it should work.
Nevertheless, it feels pretty cool. :^)
2020-09-14 16:16:36 +02:00
..
AboutDialog.cpp Base: Create /res/graphics/ and relocate system art assets 2020-08-27 15:38:02 +02:00
AboutDialog.h LibGUI, About: Implement system-wide W2k-esque About dialog 2020-05-27 11:44:19 +02:00
AbstractButton.cpp LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
AbstractButton.h LibCore+LibGUI: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
AbstractTableView.cpp LibGUI: Handle cursor keydown events in AbstractView 2020-09-02 21:29:31 +02:00
AbstractTableView.h LibGUI: Add a cursor to AbstractView, separate from the selection 2020-08-27 18:36:31 +02:00
AbstractView.cpp LibGUI: Unregister AbstractView from model on destruction 2020-09-10 18:45:00 +02:00
AbstractView.h LibGUI: Handle cursor keydown events in AbstractView 2020-09-02 21:29:31 +02:00
Action.cpp Base: Move 16x16 common icons to /res/icons/16x16/ 2020-08-27 15:38:02 +02:00
Action.h LibGUI: Add a save_as common action 2020-08-25 09:46:28 +02:00
ActionGroup.cpp LibGUI: Remove leading G from filenames 2020-02-06 20:33:02 +01:00
ActionGroup.h LibGUI: Add forwarding header 2020-02-16 09:41:56 +01:00
Application.cpp LibGUI: Fix crash during HackStudio application teardown 2020-08-22 13:10:14 +02:00
Application.h LibGUI: Update active tooltip when source widget changes the label 2020-08-15 13:45:08 +02:00
BoxLayout.cpp LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
BoxLayout.h LibGUI: Make Layout a Core::Object and add basic serialization 2020-03-05 09:22:43 +01:00
Button.cpp Userspace: Remove a bunch of unnecessary Kernel/API/KeyCode.h includes 2020-07-04 17:25:31 +02:00
Button.h LibGUI: Add hook when a context menu is requested on a button 2020-05-22 18:23:02 +02:00
Calendar.cpp LibGUI: Remove spacing between day labels in Calendar 2020-08-23 11:22:21 +02:00
Calendar.h LibGUI+Calendar: Make Calendar a common widget in LibGUI 2020-08-22 11:54:30 +02:00
CheckBox.cpp LibGUI+LibGfx: Move check box painting to Gfx::StylePainter 2020-09-11 18:42:43 +02:00
CheckBox.h LibGUI: Include keyboard modifier state with button on_click calls 2020-05-12 20:31:16 +02:00
Clipboard.cpp LibGfx: Saner memory usage of indexed bitmaps 2020-09-12 00:13:29 +02:00
Clipboard.h LibGUI: Add a Clipboard API for retrieving a copied Gfx::Bitmap 2020-09-05 16:52:35 +02:00
CMakeLists.txt LibGUI: Move table view headers into their own widget 2020-08-26 00:51:35 +02:00
ColorInput.cpp LibGUI: Use widget override cursors in ColorInput 2020-09-11 14:51:02 +02:00
ColorInput.h LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
ColorPicker.cpp LibGUI: Change window size and margin in ColorPicker 2020-08-26 00:38:23 +02:00
ColorPicker.h LibGUI: Add spinbox for alpha channel in ColorPicker 2020-08-26 00:38:23 +02:00
ColumnsView.cpp LibGUI: Handle cursor keydown events in AbstractView 2020-09-02 21:29:31 +02:00
ColumnsView.h LibGUI: Implement move_cursor() in ColumnsView 2020-09-01 16:26:32 +02:00
ComboBox.cpp LibGUI: Simplify ListView hover highlighting 2020-09-02 21:29:31 +02:00
ComboBox.h LibGUI: Add ComboBox::selected_index() 2020-08-21 21:16:13 +02:00
Command.cpp LibGUI: Remove leading G from filenames 2020-02-06 20:33:02 +01:00
Command.h LibGUI: Remove leading G from filenames 2020-02-06 20:33:02 +01:00
ControlBoxButton.cpp LibGUI: Add ControlBoxButton to LibGUI 2020-07-20 21:03:48 +02:00
ControlBoxButton.h LibGUI: Add ControlBoxButton to LibGUI 2020-07-20 21:03:48 +02:00
CppLexer.cpp AK: Remove FixedArray class. 2020-09-08 14:01:21 +02:00
CppLexer.h CppLexer: Support raw string literals 2020-07-27 12:11:19 +02:00
CppSyntaxHighlighter.cpp CppLexer: Support raw string literals 2020-07-27 12:11:19 +02:00
CppSyntaxHighlighter.h LibGUI: Use themes for syntax highlighting 2020-03-16 13:39:34 +01:00
Desktop.cpp FileManager: Apply wallpaper on startup 2020-08-17 17:47:14 +02:00
Desktop.h FileManager: Apply wallpaper on startup 2020-08-17 17:47:14 +02:00
Dialog.cpp LibGUI: Don't center dialog within parent if window is not visible 2020-08-16 16:37:39 +02:00
Dialog.h LibGUI: Don't use Core::Object::add() to instantiate dialogs 2020-03-04 21:04:06 +01:00
DisplayLink.cpp WindowServer+LibGUI: Add a way to get notified at display refresh rate 2020-03-22 21:13:23 +01:00
DisplayLink.h WindowServer+LibGUI: Add a way to get notified at display refresh rate 2020-03-22 21:13:23 +01:00
DragOperation.cpp LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
DragOperation.h LibGUI: Add forwarding header 2020-02-16 09:41:56 +01:00
EmojiInputDialog.cpp Unicode: Try s/codepoint/code_point/g again 2020-08-05 22:33:42 +02:00
EmojiInputDialog.h LibGUI: Add a simple emoji input dialog activated by Ctrl+Alt+Space :^) 2020-05-17 22:35:25 +02:00
Event.cpp Userspace: Remove a bunch of unnecessary Kernel/API/KeyCode.h includes 2020-07-04 17:25:31 +02:00
Event.h LibGUI: Make some GUI event getters return const references 2020-09-13 21:41:45 +02:00
FileIconProvider.cpp Base+LibGUI: Refresh filetype icons for consistency 2020-08-29 16:19:02 +02:00
FileIconProvider.h LibGUI: Move file icon lookup into a separate FileIconProvider 2020-08-12 20:41:13 +02:00
FilePicker.cpp LibGUI: Don't require passing model to FileSystemModel::Node APIs 2020-08-17 22:02:21 +02:00
FilePicker.h LibGUI: Rename ModelClient::on_model_update() => model_did_update() 2020-08-13 20:18:11 +02:00
FileSystemModel.cpp LibGUI: Don't require passing model to FileSystemModel::Node APIs 2020-08-17 22:02:21 +02:00
FileSystemModel.h LibGUI: Don't require passing model to FileSystemModel::Node APIs 2020-08-17 22:02:21 +02:00
FilteringProxyModel.cpp LibGUI+DevTools+Applications: Use ModelIndex::data() in many places 2020-08-16 16:44:09 +02:00
FilteringProxyModel.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
FocusSource.h LibGUI: Make focus events more aware of why focus is changing 2020-08-15 00:05:45 +02:00
FontDatabase.cpp LibGUI: Skip non-font files in the FontDatabase constructor 2020-03-11 21:27:03 +01:00
FontDatabase.h LibGUI: Move Icon and FontDatabase into the GUI namespace 2020-03-07 01:33:53 +01:00
Forward.h LibGUI: Move table view headers into their own widget 2020-08-26 00:51:35 +02:00
Frame.cpp LibGUI: Clip GUI::Frame children to the frame_inner_rect() 2020-08-26 00:51:35 +02:00
Frame.h LibGUI: Clip GUI::Frame children to the frame_inner_rect() 2020-08-26 00:51:35 +02:00
GroupBox.cpp LibGUI: Draw contiguous frame if GroupBox title is left empty 2020-07-14 17:55:39 +02:00
GroupBox.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
HeaderView.cpp LibGUI: Use widget override cursors in HeaderView 2020-09-11 14:50:30 +02:00
HeaderView.h LibGUI: Add (optional) row headers to GUI::TableView 2020-08-26 17:00:40 +02:00
Icon.cpp Misc: Replace "String(string_view)" with "string_view.to_string()" 2020-05-06 19:28:59 +02:00
Icon.h LibGUI: Move Icon and FontDatabase into the GUI namespace 2020-03-07 01:33:53 +01:00
IconView.cpp LibGUI: Handle cursor keydown events in AbstractView 2020-09-02 21:29:31 +02:00
IconView.h LibGUI: Implement the virtual IconView::scroll_into_view() 2020-09-01 16:17:17 +02:00
ImageWidget.cpp LibGUI: Fix build after renaming Image => ImageWidget 2020-07-23 17:43:44 +02:00
ImageWidget.h LibGUI: Rename GUI::Image => GUI::ImageWidget 2020-07-23 17:31:08 +02:00
INILexer.cpp LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
INILexer.h LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
INISyntaxHighlighter.cpp LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
INISyntaxHighlighter.h LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
InputBox.cpp LibGUI: Set parent icon, margins and disable resize for InputBox 2020-07-18 16:27:57 +02:00
InputBox.h LibGUI: Add InputBox::show with required parent window argument 2020-07-16 16:10:21 +02:00
ItemListModel.h DisplaySettings+LibGUI: Move ItemListModel into LibGUI 2020-08-29 17:42:03 +02:00
JsonArrayModel.cpp LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
JsonArrayModel.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
JSSyntaxHighlighter.cpp LibGUI: Highlight JS Extends and Super tokens 2020-07-01 11:18:44 +02:00
JSSyntaxHighlighter.h Spreadsheet: Add a syntax highlighter to the cell editor 2020-08-24 19:15:07 +02:00
Label.cpp LibGUI: Make Label::set_icon() take a const Gfx::Bitmap* 2020-03-29 19:37:23 +02:00
Label.h LibGUI: Make Label::set_icon() take a const Gfx::Bitmap* 2020-03-29 19:37:23 +02:00
Layout.cpp AK: Add global FlatPtr typedef. It's u32 or u64, based on sizeof(void*) 2020-03-08 13:06:51 +01:00
Layout.h LibGUI: Make Layout a Core::Object and add basic serialization 2020-03-05 09:22:43 +01:00
LazyWidget.cpp LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
LazyWidget.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
ListView.cpp LibGUI: Handle cursor keydown events in AbstractView 2020-09-02 21:29:31 +02:00
ListView.h LibGUI: Simplify ListView hover highlighting 2020-09-02 21:29:31 +02:00
Margins.h LibGUI: Remove leading G from filenames 2020-02-06 20:33:02 +01:00
Menu.cpp LibGfx: Remove redundant bits() method 2020-09-12 00:13:29 +02:00
Menu.h LibGUI: Enable icons for SubMenus 2020-07-28 16:29:44 +02:00
MenuBar.cpp LibGUI: Make MenuBar a Core::Object 2020-04-21 16:19:18 +02:00
MenuBar.h LibGUI: Make MenuBar a Core::Object 2020-04-21 16:19:18 +02:00
MenuItem.cpp WindowServer/LibGUI: Add default menu items and allow default action for context menu 2020-07-11 11:45:49 +02:00
MenuItem.h WindowServer/LibGUI: Add default menu items and allow default action for context menu 2020-07-11 11:45:49 +02:00
MessageBox.cpp LibGUI: Rename GUI::Image => GUI::ImageWidget 2020-07-23 17:31:08 +02:00
MessageBox.h LibWeb: Require parent window argument for MessageBox 2020-07-16 16:10:21 +02:00
Model.cpp LibGUI: Rename ModelClient::on_model_update() => model_did_update() 2020-08-13 20:18:11 +02:00
Model.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
ModelEditingDelegate.h LibGUI: Allow rollback of model editing delegate input 2020-08-28 20:50:12 +02:00
ModelIndex.cpp LibGUI: Add ModelIndex::data(ModelRole) 2020-08-16 16:44:09 +02:00
ModelIndex.h LibGUI: Require a model pointer for ModelIndex::is_valid() 2020-08-16 16:44:09 +02:00
ModelRole.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
ModelSelection.cpp LibGUI: Add ModelClient abstract class and allow registering clients 2020-07-13 19:49:34 +02:00
ModelSelection.h LibGUI: Make ModelSelection non-copyable and non-movable 2020-08-14 12:15:11 +02:00
MultiView.cpp LibGUI: Enable using a ColumnsView inside MultiView :^) 2020-08-16 16:44:09 +02:00
MultiView.h LibGUI: Enable using a ColumnsView inside MultiView :^) 2020-08-16 16:44:09 +02:00
Notification.cpp Meta: Add missing copyright headers 2020-04-06 11:09:01 +02:00
Notification.h Meta: Add missing copyright headers 2020-04-06 11:09:01 +02:00
Painter.cpp LibGfx: Add forward declaration header 2020-02-14 23:31:18 +01:00
Painter.h LibGUI: Add forwarding header 2020-02-16 09:41:56 +01:00
ProcessChooser.cpp LibGUI+DevTools+Applications: Use ModelIndex::data() in many places 2020-08-16 16:44:09 +02:00
ProcessChooser.h LibGUI: Make ProcessChooser accept double clicks on rows as "Ok" click 2020-08-15 19:07:47 +02:00
ProgressBar.cpp LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
ProgressBar.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
RadioButton.cpp LibCore+LibGUI: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
RadioButton.h LibCore+LibGUI: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
ResizeCorner.cpp LibGUI: Use widget override cursors in GUI::ResizeCorner 2020-09-11 14:47:38 +02:00
ResizeCorner.h LibGUI: Use widget override cursors in GUI::ResizeCorner 2020-09-11 14:47:38 +02:00
RunningProcessesModel.cpp LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
RunningProcessesModel.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
ScrollableWidget.cpp GUI: Give MouseEvent shift() / ctrl() / alt() / logo() functions 2020-08-12 11:02:30 +02:00
ScrollableWidget.h LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
ScrollBar.cpp LibGUI: Do not paint scrollbar button highlight for scrollbars without scrubber 2020-09-09 21:04:15 +02:00
ScrollBar.h LibGUI: Make ScrollBar track the currently pressed component 2020-08-25 20:20:45 +02:00
Shortcut.cpp LibGUI: Use StringBuilder::join() in Shortcut::to_string() 2020-08-19 21:17:02 +02:00
Shortcut.h Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
Slider.cpp LibGUI: Paint slider knob as indented when disabled 2020-07-18 16:27:57 +02:00
Slider.h LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
SortingProxyModel.cpp LibGUI: Make SortingProxyModel update all view cursors on resort 2020-08-29 00:18:35 +02:00
SortingProxyModel.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
SpinBox.cpp LibGUI: Use ControlBoxButtons in SpinBox and ComboBox 2020-07-20 21:03:48 +02:00
SpinBox.h LibGUI: Use ControlBoxButtons in SpinBox and ComboBox 2020-07-20 21:03:48 +02:00
Splitter.cpp LibGUI: Use widget override cursors in GUI::Splitter 2020-09-11 14:26:37 +02:00
Splitter.h LibGUI: Splitter should only override cursor if within grabbable area 2020-08-27 10:42:15 +02:00
StackWidget.cpp LibCore+LibGUI: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
StackWidget.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
StatusBar.cpp LibGUI: Hide ResizeCorner in StatusBar when window is maximized 2020-08-31 09:08:26 +02:00
StatusBar.h LibGUI: Hide ResizeCorner in StatusBar when window is maximized 2020-08-31 09:08:26 +02:00
SyntaxHighlighter.cpp LibGUI: Add missing copyright headers 2020-03-13 23:09:58 +01:00
SyntaxHighlighter.h LibGUI: Rename SyntaxLanguage::{Javascript -> JavaScript} 2020-05-07 22:04:56 +02:00
TableView.cpp LibGUI: Make Del/Backspace clear cell w/ "any key pressed" edit trigger 2020-08-29 01:04:22 +02:00
TableView.h LibGUI: Make TableView::move_cursor() public 2020-08-28 21:02:46 +02:00
TabWidget.cpp LibGUI: Fix an unsightly pixel glitch in bottom-side tabs 2020-08-24 00:05:40 +02:00
TabWidget.h LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
TextBox.cpp LibGUI: Add up & down arrow hooks and input history to TextBox 2020-05-27 20:04:52 +02:00
TextBox.h LibGUI: Add up & down arrow hooks and input history to TextBox 2020-05-27 20:04:52 +02:00
TextDocument.cpp LibGUI: Implement trailing whitespace visualization in TextEditor 2020-09-01 23:55:35 +02:00
TextDocument.h LibGUI: Implement trailing whitespace visualization in TextEditor 2020-09-01 23:55:35 +02:00
TextEditor.cpp LibGUI: Use widget override cursors in GUI::TextEditor 2020-09-11 14:26:37 +02:00
TextEditor.h LibGUI: Implement trailing whitespace visualization in TextEditor 2020-09-01 23:55:35 +02:00
TextPosition.h LibGUI: Remove remaining G prefixes 2020-03-19 22:52:44 +01:00
TextRange.h LibGUI: Remove remaining G prefixes 2020-03-19 22:52:44 +01:00
ToolBar.cpp LibGUI: Add a ToolBarContainer widget and put most ToolBars in one 2020-04-23 17:44:49 +02:00
ToolBar.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
ToolBarContainer.cpp LibGUI: Make ToolBarContainer better at reacting to child events 2020-04-25 17:16:05 +02:00
ToolBarContainer.h LibGUI: Remove unnecessary LibHTTP #include 2020-07-22 17:48:11 +02:00
TreeView.cpp LibGUI: Add a cursor to AbstractView, separate from the selection 2020-08-27 18:36:31 +02:00
TreeView.h LibGUI: Add a cursor to AbstractView, separate from the selection 2020-08-27 18:36:31 +02:00
UndoStack.cpp AK: Make Vector use size_t for its size and capacity 2020-02-25 14:52:35 +01:00
UndoStack.h AK: Make Vector use size_t for its size and capacity 2020-02-25 14:52:35 +01:00
Variant.cpp LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
Variant.h AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
Widget.cpp LibGUI: Start building a way to instantiate GUI from JSON 2020-09-14 16:16:36 +02:00
Widget.h LibGUI: Start building a way to instantiate GUI from JSON 2020-09-14 16:16:36 +02:00
Window.cpp LibGUI: Use new Bitmap::minimum_pitch method 2020-09-12 11:35:41 +02:00
Window.h LibGUI: Add Widget override cursor concept 2020-09-11 14:26:37 +02:00
WindowServerConnection.cpp LibGUI+WindowServer: Remove ResizeEvent::old_size() 2020-08-22 13:11:25 +02:00
WindowServerConnection.h WindowServer: Add accessory windows 2020-07-15 17:15:45 +02:00
WindowType.h WindowServer: Add WindowType::Desktop 2020-04-18 21:10:16 +02:00