Robin Burchell
cef161c2bc
TextEditor: Make use of GFilePicker to select a file to open
2019-05-16 13:31:19 +02:00
Robin Burchell
f55965b5e8
WindowServer/GMenu: Adjust the popup position to fit the window inside the screen
...
Rather than passing a "top_anchored" bool. Fixes #22 .
2019-05-16 01:22:54 +02:00
Andreas Kling
3cba2a8a78
Kernel: Add a beep() syscall that beeps the PC speaker.
...
Hook this up in Terminal so that the '\a' character generates a beep.
Finally emit an '\a' character in the shell line editing code when
backspacing at the start of the line.
2019-05-15 21:40:41 +02:00
Andreas Kling
ad731cc08f
LibGUI: Support cycling through focusable widgets with Tab and Shift-Tab.
2019-05-15 02:39:58 +02:00
Andreas Kling
2fa5e2b66b
ProcessManager: Keep /proc/all open to reduce CPU impact of ProcessManager.
2019-05-14 17:12:35 +02:00
Andreas Kling
852d648912
Fix "make clean" not deleting app binaries.
2019-05-13 14:56:18 +02:00
Andreas Kling
dddf45f563
Change String&& arguments to const String& in a couple of places.
...
String&& is more nuisance than anything, and the codegen improvement is
basically negligible since the underlying type is already retainable.
2019-05-12 14:57:15 +02:00
Andreas Kling
ab42180e83
Fix some more victims of the new default layout spacing.
2019-05-11 03:06:18 +02:00
Andreas Kling
1ab66e4d33
FileManager: Tweak layout spacing (new default looks weird here.)
...
This app needs a layout rethink, but for now I'm just fixing breakage.
2019-05-11 02:35:03 +02:00
Andreas Kling
565f073796
Terminal: Give the terminal widget a sunken container look.
...
This blends perfectly with the new window frames. :^)
2019-05-11 02:27:06 +02:00
Andreas Kling
b54eefa25e
IRCClient: Tweak appearance.
2019-05-11 00:16:08 +02:00
Andreas Kling
4b32aa71d2
ProcessManager: Tweak appearance (spacing, margins..)
2019-05-10 22:59:39 +02:00
Andreas Kling
3a2f10fbbe
About: Center the window on screen and make it non-resizable.
2019-05-10 22:11:18 +02:00
Andreas Kling
fa232ac180
LibGUI: Remove GModel activations to GAbstractView.
...
Now you can hook activation via GAbstractView::on_activation.
The design still isn't quite right, we should eventually move the selection
away from the model somehow.
2019-05-09 04:56:52 +02:00
Andreas Kling
bd5c79aff2
LibGUI: Start working on a file picker dialog (GFilePicker).
...
Have LibGUI adopt GDirectoryModel from FileManager since it fits perfectly
for the needs of a file picker.
2019-05-09 01:24:37 +02:00
Andreas Kling
d4ac9e9a8a
FileManager: When mkdir() fails, show the path we passed in the message.
2019-05-08 22:41:19 +02:00
Andreas Kling
de98b2770b
GMessageBox: Add icons to message boxes with 3 standard ones to choose from.
2019-05-08 20:13:39 +02:00
Andreas Kling
b5b44a29bb
Replace various copies of parse_uint(String) with String::to_uint().
2019-05-08 19:21:51 +02:00
Andreas Kling
3ae9fc5d88
Move VisualBuilder into a new DevTools directory.
2019-05-08 13:53:34 +02:00
Andreas Kling
5d707745b6
VisualBuilder: Add a simple mechanism to write a form out to disk.
2019-05-08 04:39:42 +02:00
Andreas Kling
5e733d47a3
VisualBuilder: Add a way to dump the current form to the debugger.
2019-05-07 23:28:35 +02:00
Andreas Kling
1598a0a5cb
ProcessManager: Draw the graphs as lines.
...
This looks pretty neat. Also it exercises the diagonal line drawing code
so we get 2-for-1. :^)
2019-05-07 17:11:48 +02:00
Andreas Kling
922391e772
ProcessManager: Tweak default column widths.
2019-05-07 16:07:07 +02:00
Andreas Kling
b04f08ba48
Shell: Support home/end keys for line editing.
2019-05-07 05:03:21 +02:00
Andreas Kling
fe73543d41
Shell: Move the Shell to a separate directory and let's call it "Shell" :^)
2019-05-07 01:12:08 +02:00
Andreas Kling
3d61c8ec09
ProcessManager: Use the same margins for both CPU and memory graph.
2019-05-06 03:37:22 +02:00
Andreas Kling
25bb7a59ac
ProcessManager: Add CPU/memory usage graphs in a separate tab.
...
Finally we get some real use for the new GTabWidget. :^)
2019-05-06 03:21:34 +02:00
Andreas Kling
3bdb95e128
ProcessManager+LibGUI: Tweak things to improve ProcessManager look.
2019-05-05 20:53:04 +02:00
Andreas Kling
4e1b36ddf2
GTabWidget: Make a custom look for tab buttons.
2019-05-05 14:39:37 +02:00
Andreas Kling
62e7b26406
LibGUI: Start working on a tabbed widget container: GTabWidget.
2019-05-05 01:31:02 +02:00
Andreas Kling
6a5d92f0ad
WindowServer+LibGUI: Allow changing whether windows have alpha channels.
...
Use this in Terminal to tell the window server to not bother with the alpha
channel in the backing store if we're running without transparency.
Semi-transparent terminals look neat but they slow everything down, so this
keeps things fast while making it easy to switch to the flashy mode. :^)
2019-05-03 21:07:16 +02:00
Andreas Kling
f95ba881f0
VisualBuilder: Tweak form grid color.
2019-04-30 17:01:59 +02:00
Andreas Kling
86aad50818
VisualBuilder: Add GSlider to the widgets toolbox.
2019-04-30 16:18:05 +02:00
Andreas Kling
a274196bd7
Terminal: <esc>[m should clear the current attribute.
...
This was causing GCC error messages to appear in all-red text.
2019-04-30 01:23:20 +02:00
Andreas Kling
0ae475ff5b
Terminal: Add ability to adjust the terminal's opacity.
2019-04-29 19:24:18 +02:00
Andreas Kling
f254a84d17
Launcher: Add icons for VisualBuilder and IRCClient.
2019-04-29 04:07:36 +02:00
Andreas Kling
8f81a3f9dd
LibGUI+WindowServer: Make it possible to have checkable GActions.
...
They show up as checkable GButtons in GToolBar, and with (or without) check
marks in menus.
There are a bunch of places to make use of this. This patch only takes
advantage of it in the FileManager for the view type actions.
2019-04-26 21:09:56 +02:00
Andreas Kling
71770e000b
GTextEditor: Add very basic automatic indentation.
...
This is off by default, but enabled by TextEditor. It simply inserts the
same number of leading spaces as the previous line when hitting Enter. :^)
2019-04-25 22:56:09 +02:00
Andreas Kling
4bea3a4aa6
GTextEditor: Turn off the ruler by default.
...
You're usually not gonna want the ruler. TextEditor can enable it manually.
2019-04-24 23:06:44 +02:00
Andreas Kling
16cbfd3f4e
Taskbar: Clicking a window button now toggles minimized state.
2019-04-24 02:48:02 +02:00
Andreas Kling
f7a23f3668
Taskbar: Forgot to add WindowIdentifier.h.
2019-04-24 02:20:38 +02:00
Andreas Kling
956bd23aae
WindowServer+TaskBar: Add a taskbar window button popup menu.
...
This patch only hooks up the minimize and unminimize actions.
2019-04-23 23:14:14 +02:00
Andreas Kling
38e1e205a5
FileManager: Add a window icon.
2019-04-23 20:42:47 +02:00
Andreas Kling
58240fdb33
Do a pass of compiler warning fixes.
...
This is really making me question not using 64-bit integers more.
2019-04-23 13:00:53 +02:00
Andreas Kling
57da00b731
Include Makefile.common in all other Makefiles.
2019-04-21 04:09:39 +02:00
Andreas Kling
180de7e8c5
ProcessManager: Exclude colonel process from process listing.
2019-04-20 19:41:57 +02:00
Andreas Kling
ec365b82d5
Kernel: Make the colonel run at "Idle" priority (the lowest possible.)
...
This means it won't hog the CPU for more than a single timeslice. :^)
2019-04-20 15:58:45 +02:00
Andreas Kling
49e7ffc06a
WindowServer: Introduce a WM event mask so Taskbar can ignore window rects.
...
Taskbar was waking up to do nothing every time a window rect changed.
2019-04-20 14:40:59 +02:00
Andreas Kling
ab94a6be00
AK: Add String::copy(BufferType) helper.
...
This will create a String from any BufferType that has data() and size().
2019-04-20 14:13:40 +02:00
Andreas Kling
5eedb22834
Sprinkle use of AK::Vector in various places.
...
Some of these are less helpful than others. Avoiding a bunch of mallocs
in the event loop wakeup code is definitely nice.
2019-04-20 14:02:19 +02:00
Andreas Kling
301a269ca0
Get rid of SERENITY macro since the compiler already defines __serenity__
...
This makes it a bit easier to use AK templates out-of-tree.
2019-04-20 12:58:49 +02:00
Andreas Kling
54af44e354
VisualBuilder: Expose some more widget properties.
2019-04-19 23:48:19 +02:00
Andreas Kling
986f5806d7
VisualBuilder: Emit on_widget_selected() when appropriate.
...
This allows the properties window to stay in sync with what's happening.
For multi-widget selections, we don't show any properties.
2019-04-19 23:09:38 +02:00
Andreas Kling
b64408a564
VisualBuilder: Make widget deletion work properly.
2019-04-19 22:52:13 +02:00
Andreas Kling
440700b4cb
VisualBuilder: Multiple-widget selection support.
...
This is pretty damn nice, now I can move and resize entire groups of widgets
together. Diagonal group resizing feels a bit strange but I wasn't expecting
it not to. :^)
2019-04-19 22:46:16 +02:00
Andreas Kling
b3f657a1c6
VisualBuilder: Expose GGroupBox name property.
2019-04-19 01:40:25 +02:00
Andreas Kling
62d347d12a
VisualBuilder: Remove the separate property editor box in favor of inline.
...
Also make the property names show up in bold text. :^)
2019-04-19 01:16:57 +02:00
Andreas Kling
3a33b8ea08
VisualBuilder: Hook up everything needed for widget property editing.
...
It's now possible to edit widget properties inline in the properties window.
We're currently relying on the basic GVariant conversion functions to do
all the "parsing" but that's not gonna be good enough.
2019-04-19 01:05:59 +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
ae3ec3fc37
LibGUI: Give GTextEditor a context menu.
...
Now GTextEditor manages its own editing actions (cut/copy/paste/etc) and
will show a context menu containing them when requested.
Apps that want to put a GTextEditor's actions in its menu can get to the
actions via public getters. :^)
2019-04-18 12:28:29 +02:00
Andreas Kling
67d7fc94fc
ProcessManager: Do a little less malloc() in the /proc/memstats parsing.
2019-04-18 04:48:53 +02:00
Andreas Kling
ac19fabaaf
ProcessManager: Use a single timer for refreshing the view.
...
Also add a menu for changing the update frequency to some nice values.
2019-04-18 04:38:31 +02:00
Andreas Kling
a747a10eab
LibGUI: Refactor context menus to be event-driven instead of declarative.
...
The declarative approach had way too many limitations. This patch adds a
context menu event that can be hooked to prepare a custom context menu on
demand just-in-time. :^)
2019-04-18 04:12:27 +02:00
Andreas Kling
e74b5bc054
ProcessManager+WindowServer: Do a little less malloc() in CPU monitor code.
2019-04-18 03:37:01 +02:00
Andreas Kling
36a6c10b09
FontEditor: Add a window icon.
2019-04-18 02:30:35 +02:00
Andreas Kling
ab539460de
ProcessManager: Use a CFile for parsing /proc/memstat.
2019-04-18 00:57:34 +02:00
Andreas Kling
c931eaa22c
WindowServer: Generate a separate WM event for window icon changes.
2019-04-18 00:39:11 +02:00
Andreas Kling
c02c6fef28
Kernel+ProcessManager: Show per-process syscall counts.
...
Added a simple syscall counter to the /proc/all contents. :^)
2019-04-17 23:16:14 +02:00
Andreas Kling
b77f9a5042
VisualBuilder: Pressing the Tab key when there are no widgets is a no-op.
2019-04-16 23:19:19 +02:00
Andreas Kling
428cae7864
VisualBuilder: Pressing the Tab key when there are no widgets is a no-op.
2019-04-16 23:17:14 +02:00
Andreas Kling
ef8c613737
VisualBuilder: Share code for setting the selected widget.
...
This fixes an issue where the properties window didn't update when selecting
a new widget using the keyboard shortcuts. :^)
2019-04-16 23:11:35 +02:00
Andreas Kling
f7157520eb
VisualBuilder: Add some keyboard navigation support.
...
Allow selecting widgets using the Tab key, and moving them around
using the arrow keys. :^)
2019-04-16 23:01:37 +02:00
Andreas Kling
8251f97858
Terminal: Add a window icon.
2019-04-16 17:55:39 +02:00
Andreas Kling
29abfc8623
ProcessManager: Add a window icon.
2019-04-16 17:55:27 +02:00
Andreas Kling
52e846df87
VisualBuilder: Make it possible to move widgets to front/back.
2019-04-16 03:52:26 +02:00
Andreas Kling
33920df299
AK: Try to use StringViews more for substrings and splitting.
2019-04-16 02:39:16 +02:00
Andreas Kling
e9c0f4567d
Kernel+ProcessManager: Expose the number of kmalloc/kfree calls.
...
This will be very helpful in tracking down unwanted kmalloc traffic. :^)
2019-04-15 19:43:12 +02:00
Andreas Kling
f1b58d8d8c
VisualBuilder: Let's have getters and setters for properties.
2019-04-14 04:14:23 +02:00
Andreas Kling
3f6408919f
AK: Improve smart pointer ergonomics a bit.
2019-04-14 02:36:06 +02:00
Andreas Kling
c09c114d77
WindowServer+LibGUI: Add ability to set per-window icons.
...
The icons are passed around as filesystem paths for now, since the shared
memory bitmaps only support 2 sides.
2019-04-13 16:59:55 +02:00
Andreas Kling
c06a3bdeb4
LibGUI+WindowServer: Add support for per-GWidget context menus.
...
You can now simply assign a GMenu as a GWidget's context menu and it will
automagically pop up on right click. :^)
2019-04-12 17:18:13 +02:00
Andreas Kling
c98bbff0cb
VisualBuilder: Add some widget-specific properties.
2019-04-12 15:17:53 +02:00
Andreas Kling
6f90f41516
VisualBuilder: Add some more GWidget default properties.
2019-04-12 14:47:21 +02:00
Andreas Kling
054c982181
LibGUI+WindowServer: Add support for enabled/disabled actions.
...
The enabled state of a GAction now propagates both to any toolbar buttons
and any menu items linked to the action. Toolbar buttons are painted in
a grayed out style when disabled. Menu items are gray when disabled. :^)
2019-04-12 02:53:27 +02:00
Andreas Kling
47a2982119
LibCore: Move LibGUI/GTimer to LibCore/CTimer.
2019-04-12 00:09:45 +02:00
Andreas Kling
c736dbdf10
VisualBuilder: Add a text box to the properties window.
2019-04-11 23:57:58 +02:00
Andreas Kling
3cddc3484e
VisualBuilder: Add [x, y, width, height] properties for all widgets.
...
At first I tried doing this as a single "rect" property but I like the
feel of the individual properties much better. :^)
2019-04-11 22:54:04 +02:00
Andreas Kling
ec841f3a23
VisualBuilder: Move properties window to its own class.
2019-04-11 22:03:55 +02:00
Andreas Kling
21d4b1c2fc
VisualBuilder: Tweak property table column width.
2019-04-11 21:55:57 +02:00
Andreas Kling
34dd4fcaf1
VisualBuilder: Display read-only propery values in gray.
2019-04-11 21:53:39 +02:00
Andreas Kling
383b2efc1f
VisualBuilder: Remove debug spam.
2019-04-11 21:47:50 +02:00
Andreas Kling
707bfe848d
VisualBuilder: Add a table view with the selected widget's properties.
2019-04-11 21:41:09 +02:00
Andreas Kling
f52e66ceda
VisualBuilder: Add a widget registry and a property class.
...
I need somewhere to centralize the knowledge about the different widget
types available. And VBProperty represents a property key/value of arbitrary
type (it uses a GVariant for the value.)
2019-04-11 16:13:19 +02:00
Andreas Kling
ba4a726e8b
VisualBuilder: Add a properties window.
2019-04-11 15:43:26 +02:00
Andreas Kling
93b76628a5
GGroupBox: Improve appearance with new FrameShape::Box style.
2019-04-11 14:27:31 +02:00
Andreas Kling
f0501a0102
VisualBuilder: Add GGroupBox.
...
The icon currently looks better than a real GGroupBox. I have to fix that.
2019-04-11 13:46:25 +02:00
Andreas Kling
07a9b2c4e6
VisualBuilder: Let's use 5 pixels for the grid size for now.
2019-04-11 13:16:18 +02:00
Andreas Kling
3f67298dad
VisualBuilder: Add GScrollBar (and yes, an icon for it, too.)
2019-04-11 06:42:07 +02:00
Andreas Kling
f25c524f20
VisualBuilder: Add GCheckBox and GLabel, and draw icons for them, too.
2019-04-11 06:32:27 +02:00
Andreas Kling
b5d1cfef58
VisualBuilder: Add icons to the toolbox, and support for GProgressBar.
2019-04-11 06:08:06 +02:00
Andreas Kling
75c76f6692
VisualBuilder: Make it possible to insert widgets from the toolbox.
2019-04-11 04:13:11 +02:00
Andreas Kling
c71ece77fa
VisualBuilder: Tweak grid size and add an (empty) toolbox window.
2019-04-11 04:01:17 +02:00
Andreas Kling
c6ffb3e2b8
VisualBuilder: Use real GWidgets instead of pretend VBWidgets.
...
That first design was the wrong idea. Instead, have VBWidget instantiate
a GWidget of the appropriate type and parent it to the VBForm.
We then use a new "greedy hit-testing" mechanism in GWidget to prevent any
mouse events from reaching the VBForm's children.
To paint the grabbers above the child widgets, I added a slightly hackish
but kind of neat second_paint_event() that is called after a widget has
painted all of his children. :^)
2019-04-11 03:34:37 +02:00
Andreas Kling
ead6524c0a
VisualBuilder: Add the first VBWidget subclass: VBButtonWidget. :^)
2019-04-11 02:49:10 +02:00
Andreas Kling
d73f79a2d2
VisualBuilder: Allow resizing widgets using their grabbers.
2019-04-11 02:35:30 +02:00
Andreas Kling
3c8e53ef2b
VisualBuilder: Work on selecting a widget and moving it around.
2019-04-11 01:59:07 +02:00
Andreas Kling
8268ece1bd
VisualBuilder: Start working on an interface builder application.
...
It's tedious making interfaces programmatically. Let's make a program to
help us with this. :^)
2019-04-11 00:05:47 +02:00
Andreas Kling
d8e1545783
LibCore: Move LibGUI/GLock to LibCore/CLock.
2019-04-10 22:39:59 +02:00
Andreas Kling
ab1c84cf53
LibCore: Move HTTP classes from LibGUI to LibCore.
2019-04-10 22:28:10 +02:00
Andreas Kling
cfd6e6cc36
LibCore: Move GIODevice hierarchy from LibGUI to LibCore.
2019-04-10 20:22:23 +02:00
Andreas Kling
fc1d3074de
LibCore: Move LibGUI/GNotifier to LibCore/CNotifier.
2019-04-10 17:35:43 +02:00
Andreas Kling
2f1f51b8ab
LibCore: Move LibGUI/GObject to LibCore/CObject.
2019-04-10 17:01:54 +02:00
Andreas Kling
b8062f69d8
LibCore: Add CEvent and make LibGUI/GEvent inherit from it.
2019-04-10 16:56:55 +02:00
Andreas Kling
696ada2810
Taskbar: Don't unconditionally update buttons on every state change.
2019-04-10 16:39:23 +02:00
Andreas Kling
5e0577a042
Introduce LibCore and move GElapsedTimer => CElapsedTimer.
...
I need a layer somewhere between AK (usable both by userspace and kernel)
and LibGUI (usable by userspace except WindowServer.) So here's LibCore.
2019-04-10 16:14:44 +02:00
Andreas Kling
d4818dd2dd
WindowServer: Give windows a "background color" to use for missing parts.
...
When resizing a window, we often end up having to paint some part of it
without coverage in the current backing store. This patch makes those cases
look nicer by having a fallback background color for each window, passed
along with the CreateWindow client message.
2019-04-10 14:29:47 +02:00
Andreas Kling
f6543c5946
LibGUI: Add a simple GGroupBox widget.
...
This needs some work on the visual side, but it gets the job done already.
2019-04-10 05:52:15 +02:00
Andreas Kling
b980c32662
FontEditor: Update the glyph map when changing a glyph's width.
2019-04-10 04:02:20 +02:00
Andreas Kling
f5c295ecc5
FontEditor: Add a "Glyph width:" label and align some things.
2019-04-10 03:51:03 +02:00
Andreas Kling
4ab0cd5d4c
LibGUI: Move frame painting from GFrame to StylePainter.
...
This way it can be used by others who might not have a GFrame object.
2019-04-10 03:43:46 +02:00
Andreas Kling
e61dd994df
FontEditor: Tighten the window size a bit.
2019-04-10 03:14:17 +02:00
Andreas Kling
313ac51832
LibGUI: Turn GTextBox into a wrapper around a single-line GTextEditor.
2019-04-10 03:08:29 +02:00
Andreas Kling
981623f4ee
FontEditor: Convert the glyph map and editor widgets to be GFrames.
2019-04-10 02:43:57 +02:00
Andreas Kling
4c0f586f2b
LibGUI: Add a spinbox widget.
...
This is essentially a combo widget containing a single-line GTextEditor
and two buttons for increment and decrement. The GTextEditor::on_change
callback is hooked to prevent non-numeric input but it's not entirely
perfect since that callback is asynchronous. This will work until we have
some more sophisticated input validation mechanism though.
2019-04-09 16:29:00 +02:00
Andreas Kling
d6ff64db00
Launcher: Add tooltips to LauncherButtons.
2019-04-09 02:21:24 +02:00
Andreas Kling
93a4a4c597
Taskbar: Replace TaskbarWidget with a simple GFrame.
...
There's no need for a custom widget here, at least not now.
2019-04-08 17:17:16 +02:00
Andreas Kling
6d5a54690e
LibGUI: Make GSocket connection asynchronous.
...
Now connect() will return immediately. Later on, when the socket is actually
connected, it will call GSocket::on_connected from the event loop. :^)
2019-04-08 04:56:11 +02:00
Andreas Kling
8f30657390
Start working on a Downloader app and backing classes in LibGUI.
...
LibGUI is slowly becoming LibKitchensink but I'm okay with this for now.
2019-04-07 14:36:10 +02:00
Andreas Kling
f2580dcfeb
FontEditor: Remove weird focus rects and optimize repaint while drawing.
...
I added focus rects to these widgets because I had just started working on
focus support and I was excited but it doesn't really make sense for these
things to have focus rects. :^)
While I was here I also optimized the repaint code to only update the edited
glyph in the glyph map when editing its pixels.
2019-04-06 15:28:06 +02:00
Andreas Kling
ef9fbef4c6
Taskbar: Show minimized window titles in [brackets].
...
Had to plumb the minimization state from WindowServer to Toolbar in order
to implement this.
2019-04-06 00:58:30 +02:00
Andreas Kling
99b98dc653
WindowServer: Merge WM_WindowAdded and WM_WindowStateChanged.
...
These events are identical, so it's silly to send both. Just broadcast
window state changes everywhere instead, it doesn't matter when it was
added as clients are learning about this asynchronously anyway.
2019-04-05 15:01:28 +02:00
Andreas Kling
6280dee625
Taskbar: Make the window buttons slightly wider.
2019-04-04 20:12:09 +02:00
Andreas Kling
64a5abf8db
Taskbar: Only include "Normal" windows in the taskbar window list.
2019-04-04 16:23:23 +02:00
Andreas Kling
ce7341be87
WindowServer: Add WM_SetActiveWindow client request and use it in Taskbar.
...
This makes it possible for Taskbar to switch windows. :^)
2019-04-04 14:38:53 +02:00
Andreas Kling
8a50218190
Taskbar: Left-align the text on taskbar window buttons.
2019-04-04 14:16:09 +02:00
Andreas Kling
7b1384c4ef
Taskbar: Plumb window active state from the WindowServer to the taskbar.
2019-04-04 13:19:26 +02:00
Andreas Kling
5ec121e194
Taskbar: Tweak margins to look just right.
2019-04-04 01:51:11 +02:00
Andreas Kling
e785dda3e7
Taskbar: TaskbarWidget doesn't need a custom paint_event().
2019-04-04 01:50:04 +02:00
Andreas Kling
96104b5524
Taskbar: More bringup work. We now see a basic window list.
2019-04-04 01:44:35 +02:00
Andreas Kling
f1c5ee2c10
Taskbar: Remove an accidentally committed dependency file.
2019-04-03 23:48:40 +02:00
Andreas Kling
aa03a07e61
Taskbar+LibGUI: More work on bringup.
2019-04-03 21:04:16 +02:00
Andreas Kling
a22774ee3f
Taskbar: Start working on a taskbar app.
...
I originally thought I would do this inside WindowServer, but let's try to
make it as a standalone app that communicates with WindowServer instead.
That will allow us to use LibGUI. :^)
2019-04-03 19:38:44 +02:00
Andreas Kling
c02c9880b6
AK: Add Eternal<T> and use it in various places.
...
This is useful for static locals that never need to be destroyed:
Thing& Thing::the()
{
static Eternal<Thing> the;
return the;
}
The object will be allocated in data segment memory and will never have
its destructor invoked.
2019-04-03 16:52:25 +02:00
Andreas Kling
dde224fe44
FontEditor: Break out classes into separate files.
2019-04-03 15:23:13 +02:00
Andreas Kling
2580d4b911
IRCClient: Crash if server name resolution fails.
...
This is just so that I can catch it immediately. It obviously needs a bit of
work to feel right.
2019-04-02 20:42:59 +02:00
Andreas Kling
cc20eef7ef
IRCClient: Ask the user which IRC server to connect to on startup.
2019-04-02 20:40:45 +02:00
Andreas Kling
f8a1d2746e
FileManager: Rename DirectoryTableView => DirectoryView.
2019-04-02 14:43:56 +02:00
Andreas Kling
25f28a54a1
Terminal+LibGUI: Make the terminal cursor blink.
...
Added a GTimer class to help with this. It's just a simple GObject subclass
that sets up an event loop timer and invokes a callback on timeout.
2019-03-30 21:40:57 +01:00
Andreas Kling
eec0a64444
IRCClient: Fix wrong label in "Join channel" window.
2019-03-30 20:35:23 +01:00
Andreas Kling
74786f2d5a
IRCClient: Use GSplitter in the window layouts.
...
This really brings the UI to life in a pleasant way. It's a bit annoying
that you can't initiate a resize by clicking on the shading of a splitter
resizer that actually belongs to the neighboring GFrame, I'm not sure how
to fix that yet but I'll think of something.
2019-03-30 13:57:34 +01:00
Andreas Kling
9538c06a45
LibGUI: Add a simple GSplitter container widget.
...
This allows you to put multiple widgets in a container and makes the space
in between them draggable to resize the two adjacent widgets.
2019-03-30 13:53:30 +01:00
Andreas Kling
f242d6e559
FileManager: Tweak look of thumbnailing progress bar.
...
Since it's inside a status bar, it looks a bit better when using a panel
shape with sunken shadow.
2019-03-30 13:12:59 +01:00
Andreas Kling
2c6a597d77
FileManager: Make the tree view follow the directory view navigations.
2019-03-30 03:27:25 +01:00
Andreas Kling
f10e0d0546
FileManager: Make the directory view follow the tree view selection.
2019-03-30 02:22:38 +01:00
Andreas Kling
6b72c62c5f
GFileSystemModel: Add a "DirectoriesOnly" mode.
2019-03-29 17:14:03 +01:00
Andreas Kling
4d3c5fd83e
LibGUI: Start working on a GFileSystemModel and hook that up in FileManager.
...
This is a read-only model for the tree view, at least initially. We'll see
where we take it from there once it's more polished.
2019-03-29 17:03:30 +01:00
Andreas Kling
f249c40aaa
Rename Painter::set_clip_rect() to add_clip_rect().
...
It was confusing to see multiple calls to set_foo() in a row. Since this is
an intersecting operation, let's call it add_clip_rect() instead.
2019-03-29 15:01:54 +01:00
Andreas Kling
474340b9cd
GTreeView: A bunch of work on the tree view.
2019-03-29 14:46:53 +01:00
Andreas Kling
d02238af48
LibGUI: Expand GModelIndex a bit, adding internal data and model pointers.
...
This will be useful for implementing more complicated models.
2019-03-29 04:58:15 +01:00
Andreas Kling
add38b3981
GModel: Add GModelIndex argument to row_count() and column_count().
...
This is in preparation for supporting hierarchical models.
2019-03-29 03:27:03 +01:00
Andreas Kling
34118aaaca
IRCClient: Tweak size of window input boxes.
...
Now that GTextEditor is a GFrame, we need to make some room here for the
frame around the editor. :^)
2019-03-29 03:06:07 +01:00
Andreas Kling
9d7a513681
GTextEditor: Keep tweaking the single-line look.
2019-03-29 01:57:29 +01:00
Andreas Kling
c7ab643883
Move LibGUI/GStyle to SharedGraphics/StylePainter.
...
I want to paint some buttons in WindowServer where we don't have LibGUI.
2019-03-28 17:32:38 +01:00
Andreas Kling
9fa21fa585
LibGUI: Add a GPainter class that inherits from Painter.
...
This gets rid of the last little piece of LibGUI knowledge in Painter.
2019-03-28 17:19:56 +01:00
Andreas Kling
b6c5bd3d28
FileManager: Add back/forward buttons (placeholders.)
2019-03-28 03:38:23 +01:00
Andreas Kling
670e376e27
Tweak the look of various UI surfaces and buttons.
2019-03-27 20:48:23 +01:00
Andreas Kling
23bb276fcd
LibC: Run constructors on process startup.
...
Cooperate with the compiler to generate and execute the _init_array list
of constructor functions on userspace program statup. This took two days
to get working, my goodness. :^)
2019-03-27 12:48:21 +01:00
Andreas Kling
fb7c7829c2
Terminal: Export a simple PATH=/bin:/usr/bin to shells.
2019-03-27 01:36:33 +01:00
Andreas Kling
be604652ae
LibGUI: Add GIcon::default_icon(name).
...
This is a convenience helper to instantiate a GIcon like so:
auto icon = GIcon::default_icon("filetype-image");
This will give you the "filetype-image" icon in both 16x16 and 32x32 sizes.
2019-03-25 14:46:37 +01:00
Andreas Kling
500df578fe
LibGUI+Kernel: Add a GLock class (userspace mutex.)
...
It's basically a userspace port of the kernel's Lock class.
Added gettid() and donate() syscalls to support the timeslice donation
feature we already enjoyed in the kernel.
2019-03-25 13:03:49 +01:00
Andreas Kling
614dafea32
FileManager+LibGUI: Show thumbnail generation progress in the statusbar.
2019-03-25 04:25:25 +01:00
Andreas Kling
1c67788933
FileManager: Don't use 32x32 thumbnails for the table view.
2019-03-25 02:16:47 +01:00
Andreas Kling
43f9027968
FileManager: Add toolbar buttons for switching the view mode.
2019-03-25 01:29:45 +01:00
Andreas Kling
900a3966e2
FileManager: Don't show "." and ".." in directory views.
2019-03-24 12:27:02 +01:00
Andreas Kling
86413a6f5a
LibGUI+FileManager: Add a GIcon class to support multi-size icons.
...
A GIcon can contain any number of bitmaps internally, and will give you
the best fitting icon when you call bitmap_for_size().
2019-03-24 04:28:36 +01:00
Andreas Kling
812dc1e9ea
FileManager: Add a very naive thumbnail generation thread.
...
This is pretty rickety since we don't have any synchronization primitives.
2019-03-24 03:00:08 +01:00
Andreas Kling
7f1757b16c
IRCClient: Exit the main loop when closing the app window.
2019-03-23 22:58:53 +01:00
Andreas Kling
92627154a7
FileManager: Add basic thumbnailing of PNG images.
...
These use nearest neighbor and are computed synchronously on directory load
so it's neither fast nor very beautiful. These issues both need work on
other parts of the system to fix.
2019-03-23 12:37:33 +01:00
Andreas Kling
82ca3e58b8
FileManager: Make sure the status bar callback is hooked up.
2019-03-23 03:56:33 +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
994cf10b3e
LibGUI: Rename GTableModel => GModel.
2019-03-23 01:42:49 +01:00
Andreas Kling
9d4b4c2689
FileManager: Add a default icon for image files.
2019-03-22 12:54:27 +01:00
Andreas Kling
5ca62f356b
FileManager: Open PNG files with QuickShow when activated.
2019-03-22 12:43:29 +01:00
Andreas Kling
7c0a185970
Use the PNG loader for all images, and get rid of the .rgb files.
2019-03-22 00:21:03 +01:00
Andreas Kling
ed2303e2d8
TextEditor: The delete key should work even when there's no selection.
2019-03-20 23:11:00 +01:00
Andreas Kling
be4533717a
FileManager: Add ability to create new directories.
2019-03-20 22:40:06 +01:00
Andreas Kling
1030e6b848
FileManager: Add a "Location:" label.
2019-03-20 22:01:02 +01:00
Andreas Kling
f0915641c5
TextEditor: Add "delete" action.
2019-03-20 18:16:04 +01:00
Andreas Kling
daa1dcb5e8
FileManager: Use a GTextEditor for the location bar + tweak icons.
2019-03-20 18:12:56 +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
d17a91f185
Move WindowServer into Servers.
2019-03-20 04:34:14 +01:00
Andreas Kling
67009cee8e
IRCClient: Add ability to change nickname.
2019-03-20 04:21:58 +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
1c423f7691
Terminal: Disable the semitransparent Terminal effect for now.
...
It's cool and everything but the lag is annoying me while I'm trying to
get shit done. I'll definitely reenable it once it's been optimized.
2019-03-20 02:10:44 +01:00
Andreas Kling
d0559c0e27
IRCClient: Scroll windows to bottom when new messages arrive.
...
This will need some tweaking to feel truly good, but this is already
better than just staying at the top while messages come in.
2019-03-19 03:09:51 +01:00
Andreas Kling
a0411f61f8
IRCClient: Make the IRCWindow input box look symmetrical.
2019-03-19 02:45:01 +01:00
Andreas Kling
31bc42c530
IRCClient: Ignore empty strings from the toolbar action input boxes.
2019-03-19 02:30:16 +01:00
Andreas Kling
c151b0370d
IRCClient: Fix broken handling of RPL_WHOISIDLE.
2019-03-19 02:28:34 +01:00
Andreas Kling
f88e550998
LibGUI: More work on GInputBox.
...
- If the GInputBox has a parent and the parent is a GWindow, center the
input box window within the parent window. This looks quite nice.
- Stop processing events in a nested event loop immediately after it's
been asked to quit.
- Fix GWidget::parent_widget() behavior for non-widget parents.
2019-03-19 02:22:49 +01:00
Andreas Kling
a6538feed1
LibGUI: Add GInputBox for getting a string from a modal dialog.
...
Use this to implement some of the toolbar actions in IRCClient. :^)
2019-03-19 01:41:00 +01:00
Andreas Kling
43304d2adf
WindowServer: Add special treatment for modal windows.
...
While a WSClientConnection has a modal window showing, non-modal windows
belonging to that client are not sent any events.
2019-03-19 00:52:39 +01:00
Andreas Kling
57ff293a51
LibGUI: Implement nested event loops to support dialog boxes.
...
This patch adds a simple GMessageBox that can run in a nested event loop.
Here's how you use it:
GMessageBox box("Message text here", "Message window title");
int result = box.exec();
The next step is to make the WindowServer respect the modality flag of
these windows and prevent interaction with other windows in the same
process until the modal window has been closed.
2019-03-19 00:01:02 +01:00
Andreas Kling
55aa819077
IRCClient: Colorize some channel messages (joins, parts, topics)
2019-03-18 20:56:45 +01:00
Andreas Kling
d7659ceebf
IRCClient: Add support for a bunch of numerics, mostly WHOIS related.
2019-03-18 15:36:32 +01:00
Andreas Kling
9ad076178a
GIODevice: Add a read_all() that returns a ByteBuffer with all we can read.
...
Use this to implement file opening in TextEditor.
2019-03-18 14:38:30 +01:00
Andreas Kling
8e3d0a23d5
LibGUI: Add GTCPSocket and base class GSocket (inherits from GIODevice.)
...
And use these to do the line-by-line reading automagically instead of having
that logic in IRCClient. This will definitely come in handy.
2019-03-18 14:09:58 +01:00
Andreas Kling
d466f2634d
LibGUI: Add GTableModel::Role::ForegroundColor.
...
This makes it possible to specify the text color for each table cell.
Use this to make the IRCClient show unread window list items in red.
2019-03-18 04:54:07 +01:00
Andreas Kling
ce7017e1ec
LibGUI: Add GFile and base class GIODevice.
...
Working with the LibC API's is tedious, so let's add some comfy C++ API's.
2019-03-17 15:54:43 +01:00
Andreas Kling
4e451c1e92
Add client-side double buffering of window backing stores.
...
This prevents flicker and looks rather good. The main downside is that
resizing gets even more sluggish. That's the price we pay for now.
2019-03-17 04:23:54 +01:00
Andreas Kling
5b0cbf547d
Base: Some work on various icons.
2019-03-17 00:33:49 +01:00
Andreas Kling
78039ef057
TextEditor: Add actions for undo and redo. Not hooked up yet.
2019-03-16 23:16:11 +01:00
Andreas Kling
f44ba6a4c6
IRCClient: Add handling of some basic messages and commands.
2019-03-16 12:21:42 +01:00
Andreas Kling
b4f787090c
IRCClient: Add a little "(n)" indicator to window list for unread messages.
2019-03-16 02:14:53 +01:00
Andreas Kling
1394677528
IRCClient: Refactor window creation responsibilities.
...
IRCChannel and IRCQuery objects now create their own windows with the
help of an aid_create_window callback provided by IRCAppWindow.
There's still a bit of murk but this is already an improvement.
2019-03-16 01:45:49 +01:00
Andreas Kling
fc7f700c20
IRCClient: Rename IRCClientWindowFoo => IRCWindowFoo.
2019-03-16 01:15:19 +01:00
Andreas Kling
5c2d405e1f
IRCClient: Add menus.
2019-03-16 01:10:48 +01:00
Andreas Kling
2b6cf37d20
IRCClient: Add some more toolbar actions. Starting to look nice.
2019-03-16 00:21:11 +01:00
Andreas Kling
3a3aa74b2e
IRCClient: Add a toolbar with some actions.
2019-03-15 23:24:40 +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
491aa112ab
IRClient: Add a member list to channel views.
2019-03-15 18:25:51 +01:00
Andreas Kling
08c15be0ca
IRCClient: Add ability to send query messages.
...
You can't open a query yet, but if someone starts one with you, you can
respond at least.
2019-03-15 18:02:38 +01:00
Andreas Kling
1fc283ed7d
IRCClient+LibGUI: Add an input box so we can send messages to channels.
...
Implement this using a GTextEditor with a special single-line mode.
This new mode needs some polishing, but it's already very useful.
2019-03-15 17:37:13 +01:00
Andreas Kling
c1f2f5a153
LibGUI: Add a mode where GTableModel automatically activates on selection.
2019-03-15 16:25:30 +01:00
Andreas Kling
1089cd1378
IRCClient: Start using GStackWidget for the subwindows.
2019-03-15 16:12:51 +01:00
Andreas Kling
ab92252ee6
IRCClient: Hide all the table view headers.
2019-03-15 14:57:35 +01:00
Andreas Kling
a23dddc56f
IRCClient: Use a model for the window list.
2019-03-15 14:01:04 +01:00
Andreas Kling
eba5fd3f46
IRCClient: Rename IRCSubWindow => IRCClientWindow.
2019-03-15 13:20:46 +01:00
Andreas Kling
f004db19d0
IRCClient: Put the unhandled server messages nicely into the server log.
2019-03-15 13:16:29 +01:00
Andreas Kling
850c7504a2
IRCClient: Hacking on IRCClient bringup.
2019-03-15 13:07:04 +01:00
Andreas Kling
aa19735c5a
IRCClient: Start working on a simple graphical IRC client.
...
This will be a nice way to exercise both LibGUI and the TCP/IP support. :^)
2019-03-15 12:14:23 +01:00
Andreas Kling
4919b926f4
About: Oops, fill the window with background color.
2019-03-14 19:24:08 +01:00
Andreas Kling
b7ad35d040
Terminal: Enough compat work for Lynx to actually load web pages.
2019-03-14 18:33:21 +01:00
Andreas Kling
ee0f00c644
Terminal: Use TERM=xterm by default, and implement some more escapes.
2019-03-14 17:39:50 +01:00
Andreas Kling
1565dc3ab3
Terminal: Add some logging for the 'r' final.
...
I haven't implemented scrolling regions yet, but this will at least give
me some indication that they're being used.
2019-03-14 16:25:19 +01:00
Andreas Kling
5d69bf06d2
LibGUI: Don't fill widgets with background color by defualt.
2019-03-10 13:16:36 +01:00
Andreas Kling
6836e21d1c
ProcessManager: Tidy up the memory stats and align everything nicely.
2019-03-10 12:34:44 +01:00
Andreas Kling
37388b311f
ProcessManager: Show some basic system memory stats below the process table.
...
This really improves the feeling of "system overview" :^)
2019-03-10 12:13:22 +01:00
Andreas Kling
0b32ab12f1
ProcessManager: Make the toolbar actions work again.
...
We can't grab at the ProcessTableModel directly anymore since we have a
sorting proxy model in the middle now.
2019-03-10 02:03:36 +01:00
Andreas Kling
ed61fdbc32
Base: Improved FileManager (folder) icon.
2019-03-10 00:58:47 +01:00
Andreas Kling
702adb13c1
TextEditor: Remove the selection from the status bar.
2019-03-09 22:04:54 +01:00
Andreas Kling
b8f999cbef
About+LibGUI: Use a GBoxLayout for the About app.
2019-03-09 21:09:29 +01:00
Andreas Kling
e14dd06b8c
FileManager: Hook up a GSortingProxyTableModel so we get sorted files. :^)
...
The next step here is coming up with a nice way to always put directories
ahead of files.
2019-03-09 14:52:25 +01:00
Andreas Kling
46caa2663b
LibGUI: Use a separate data role for the table model sorting order.
...
This allows data to be displayed nicely while sorting happens based on some
underlying raw data. :^)
2019-03-09 14:24:34 +01:00
Andreas Kling
7d1142c7d9
Make it possible to sort a GTableModel by column+order.
...
This is accomplished by putting a GSortingProxyTableModel between the model
and the view. It's pretty simplistic but it works for this use case. :^)
2019-03-09 13:33:52 +01:00
Andreas Kling
0680fe2383
ProcessManager: Show the colonel process.
2019-03-09 11:29:32 +01:00
Andreas Kling
48470cdf44
Launcher: Add a launcher button for TextEditor.
2019-03-08 19:53:11 +01:00
Andreas Kling
032549d7bf
GTextEditor: Refactor selection into a GTextRange class.
...
This is a bit more expressive than "selection start + current cursor".
2019-03-08 18:28:24 +01:00
Andreas Kling
35c6dceee0
FileManager: Don't crash if pressing Return with no selected item.
2019-03-08 16:02:00 +01:00
Andreas Kling
48d48679b0
GTextEditor: Work on cut/copy/paste operations.
2019-03-08 14:08:15 +01:00
Andreas Kling
6820f9e14f
WindowServer+LibGUI: Add a server-side clipboard.
...
On the client side, use GClipboard's data() and set_data(String) to access
the global clipboard. :^)
2019-03-08 13:27:19 +01:00