Andreas Kling
8d550c174e
LibCore: Convert CFile to ObjectPtr
2019-09-21 20:50:06 +02:00
Andreas Kling
31b38ed88f
LibGUI: Don't create GMessageBox and GInputBox on the stack
...
We need to get rid of all instances of widgets-on-the-stack since that
will no longer work in the ref-counting world.
2019-09-21 20:32:31 +02:00
Andreas Kling
defafd72bc
LibGUI: Convert custom widgets and subclasses to ObjectPtr
2019-09-21 20:04:00 +02:00
Andreas Kling
15a66dc8ab
Welcome: Unbreak after ObjectPtr changes
2019-09-21 19:42:16 +02:00
Andreas Kling
409494193e
LibGUI: Convert remaining random little things to ObjectPtr
2019-09-21 19:40:14 +02:00
Andreas Kling
60530a7cd9
Calculator: Convert to using ObjectPtr
2019-09-21 19:37:28 +02:00
Andreas Kling
45cfd57f6e
GButton: Convert most code to using ObjectPtr for GButton
2019-09-21 19:28:28 +02:00
Andreas Kling
55a6e4ac0b
LibGUI: Convert GFrame to ObjectPtr
2019-09-21 19:21:36 +02:00
Andreas Kling
f8d751440b
LibGUI: Convert GRadioButton to ObjectPtr
2019-09-21 18:58:03 +02:00
Andreas Kling
7584480f62
LibGUI: Convert GWindow to ObjectPtr
2019-09-21 18:34:06 +02:00
Andreas Kling
70412c7d4f
DisplayProperties: Remove all remaining naked "new" usage
2019-09-21 18:18:47 +02:00
Andreas Kling
f57cc5873c
SystemMonitor: Remove all remaining naked "new" usage
2019-09-21 18:17:23 +02:00
Andreas Kling
f4b51a63ec
LibCore: Remove CTimer::create() overloads in favor of construct()
2019-09-21 18:13:17 +02:00
Andreas Kling
0c4508c00d
SystemMonitor: Unbreak after ObjectPtr<GWidget> changes
2019-09-21 17:36:52 +02:00
Andreas Kling
bdf23a3d23
LibCore: Make it possible to cancel pending CNetworkJobs
...
Subclasses of CNetworkJob handle this by overriding shutdown().
This patch implements it for CHttpJob by simply tearing down the
underlying socket.
We also automatically call shutdown() after the job finishes,
regardless of success or failure. :^)
2019-09-21 17:32:26 +02:00
Andreas Kling
ff6ce422dd
LibGUI: Convert GWidget to ObjectPtr
2019-09-21 17:05:35 +02:00
Andreas Kling
e4e92980a1
LibGUI: Convert GComboBox to ObjectPtr
2019-09-21 16:35:11 +02:00
Andreas Kling
7aaad27778
LibGUI: Convert GSlider to ObjectPtr
2019-09-21 16:33:53 +02:00
Andreas Kling
ceb5508fea
LibGUI: Convert GProgressBar to ObjectPtr
2019-09-21 16:31:12 +02:00
Andreas Kling
3476a63415
LibGUI: Convert GStatusBar to ObjectPtr
2019-09-21 16:29:47 +02:00
Andreas Kling
f4531c976c
LibGUI: Convert GToolBar to ObjectPtr
2019-09-21 16:27:54 +02:00
Andreas Kling
b78225941d
LibGUI: Convert GSpinBox to ObjectPtr
2019-09-21 16:15:11 +02:00
Andreas Kling
83b5f6c11a
LibGUI: Convert GGroupBox to ObjectPtr
2019-09-21 16:13:33 +02:00
Andreas Kling
4f4438c04c
LibGUI: Convert GSplitter to ObjectPtr
2019-09-21 16:11:02 +02:00
Andreas Kling
efb8f9d538
LibGUI: Convert GTreeView to ObjectPtr
2019-09-21 16:06:43 +02:00
Andreas Kling
e7b55037f4
LibGUI: Convert GTableView to ObjectPtr
2019-09-21 16:03:59 +02:00
Andreas Kling
c13b9e2214
LibGUI: Convert GItemView to ObjectPtr
2019-09-21 15:47:58 +02:00
Andreas Kling
93851c3832
LibGUI: Convert GTextBox, GTextEditor and GResizeCorner to ObjectPtr
2019-09-21 15:46:47 +02:00
Andreas Kling
4ea229accd
LibCore: Convert CTCPServer to ObjectPtr
...
Also get rid of the custom CNotifier::create() in favor of construct().
2019-09-21 15:25:08 +02:00
Andreas Kling
bce58bbbca
LibGUI: Convert GScrollBar to ObjectPtr
2019-09-21 15:25:08 +02:00
Andreas Kling
c7437f9caa
LibGUI: Convert GLabel to ObjectPtr
2019-09-21 15:25:08 +02:00
Andreas Kling
6b347747f2
LibCore: Convert CHttpJob to ObjectPtr
2019-09-21 15:25:08 +02:00
Andreas Kling
4298ba25c3
LibCore: Convert CTCPSocket to ObjectPtr, add construct() helper
...
The C_OBJECT macro now also inserts a static construct(...) helper into
the class. Now we can make the constructor(s) private and instead call:
auto socket = CTCPSocket::construct(arguments);
construct() returns an ObjectPtr<T>, which we'll later switch to being
a NonnullRefPtr<T>, once everything else in in place for ref-counting.
2019-09-21 15:25:08 +02:00
Andreas Kling
74c4e62659
GCommonActions: Add "Open..." action
...
Make use of this in PaintBrush and TextEditor. :^)
2019-09-20 19:36:39 +02:00
Andreas Kling
d1bacb9885
LibCore: Convert CNotifier to ObjectPtr
2019-09-20 15:39:15 +02:00
Andreas Kling
50a6560413
LibCore: Convert CTimer to ObjectPtr
2019-09-20 15:20:10 +02:00
Andreas Kling
482d5295f1
FileManager: Allow deleting without confirmation via Shift+Delete
...
A powerful command for powerful users. :^)
2019-09-18 21:53:47 +02:00
Andreas Kling
33b8c807a6
FileManager: Implement basic file deletion
...
The delete action now actually deletes files (after asking the user for
confirmation, of course.) Deleting directories is not yet supported.
Fixes #541 .
2019-09-18 21:46:14 +02:00
Andreas Kling
101b32236c
SystemMonitor: Use GAboutDialog :^)
2019-09-18 18:43:23 +02:00
Brandon Scott
a4d52b122d
FileManager+LibGUI: Fix two folder-related crashes ( #569 )
...
Fix a crash when opening a folder, and another one when trying to open
a newly created folder.
It was not safe to modify a GModelSelection while it's being iterated over.
Fixes #536 .
2019-09-17 09:26:10 +02:00
Jesse
6557a31049
Terminal: Scroll cursor into view when typing ( #568 )
...
When the user has scrolled up and begins typing, the scrollbar will
automatically return them to the current cursor position so that they
can see what they're typing.
2019-09-16 07:52:27 +02:00
Jesse
444a4e4d39
DisplayProperties: Auto-resolution and graphical fix ( #566 )
...
The program will now automatically select the user's currently
chosen resolution when it is loaded up, however it is not
"visually selected" in the `GListView`
Moved the `resolution_list` list to be on the top to keep it consistent
with the wallpaper tab.
2019-09-16 07:50:47 +02:00
Conrad Pankoff
aa95bd7037
LibGUI: Fix move() of const StringView&
2019-09-16 07:49:43 +02:00
Conrad Pankoff
6fd096999e
Applications: Add "Welcome" application, inspired by Windows 98
2019-09-16 07:49:43 +02:00
Andreas Kling
4463adc0ff
FileManager: Show human-readable file size info in the status bar
...
Fixes #553 .
2019-09-15 17:50:15 +02:00
Andreas Kling
e83390387c
LibGUI: Simplify GCommonActions a bit
...
Use the same callback signature as GAction so we can just forward it
to GAction instead of chaining callbacks.
2019-09-14 22:10:44 +02:00
Jesse Buhagiar
58ceaebd5a
DisplayProperties: Wallpaper tab now has preview
...
As was mentioned in #556 , the `DisplayProperties` Wallpaper tab
contained a lot of "extra space", in which half the tab was taken up
by the list of wallpapers. The rest of that space is now reserved for
a wallpaper preview, so the user can see the selected image before
applying it.
2019-09-14 19:27:16 +02:00
Andreas Kling
31046b18bb
FileManager: Use a special clipboard data type for copied file lists
...
When copying a list of files to the clipboard, we now use the special
data type "file-list".
This allows us to have the paste action's enabled state reflect the
actual ability to paste something. :^)
2019-09-14 09:20:20 +02:00
Andreas Kling
9d2c4d223a
TextEditor+Base: Add an icon for the "Find" action :^)
2019-09-13 23:56:37 +02:00
Andreas Kling
ff72b4d475
FileManager+Base: Add "properties" icon
...
Something to show for the properties action in FileManager. It still
doesn't actually do anything, but at least now it looks neat. :^)
2019-09-13 23:07:59 +02:00
Andreas Kling
11f2e7cd5c
GMenu: Update apps now that you can create a nameless GMenu
...
We had many context menus with names, simply because you were forced
to give them names.
2019-09-13 22:14:07 +02:00
Andreas Kling
5eb2c138e2
FileManager: Update enabled state of the copy and delete actions
...
Based on whether something is selected or not. I added a FIXME about
the paste action, since that will require some more coordination with
the system clipboard.
2019-09-13 22:09:01 +02:00
Andreas Kling
27e1128e6e
FileManager: Assign keyboard shortcuts to the various actions
2019-09-13 22:04:08 +02:00
Andreas Kling
3a02bd40f8
FileManager: Add a basic context menu with copy/paste/delete/...
...
I also added a dummy "Properties..." action just to fill out the menu a
little bit. :^)
Fixes #270 .
2019-09-13 22:00:47 +02:00
MinusGix
ad75b61eca
IRCClient: Fix unneeded conversion to String
2019-09-13 09:22:30 +02:00
Andreas Kling
27321e9c44
PaintBrush: Only send left and right mouse button events to tools
...
Tools don't know what to do with the middle mouse button anyway,
so it's better if we just don't pass it along.
Fixes #546 .
2019-09-12 20:33:05 +02:00
Andreas Kling
d86fb8033e
FileManager: Show info about currently selected items in statusbar
...
When there's a non-zero number of selected items, we now show the
number in the statusbar, along with the total selected file size. :^)
Fixes #271 .
2019-09-12 18:59:13 +02:00
Andreas Kling
1632f6b2dd
FileManager: Add C_OBJECT macro to DirectoryView
2019-09-12 18:26:26 +02:00
Max Thrun
ae060d7450
SoundPlayer: Scale y coordinate to prevent drawing outside clip rect
...
Previously if sample.left amplitude was more than 0.5 we would draw
outside the painters clip rect.
2019-09-11 10:20:08 +02:00
Aaron Malpas
026a8be4e5
File Manager: Implement copy-paste
...
The files to copy are remembered with the clipboard, which stores a
command (e.g. "copy") and files to be copied on different lines.
2019-09-10 19:28:41 +02:00
Aaron Malpas
7841aadb41
FileManager: Create FileUtils
...
This could later be replaced with library-provided utility functions
when/if they exist.
2019-09-10 19:28:41 +02:00
Aaron Malpas
b894803a30
FileManager: Add on_selection event for DirectoryView
...
There needs to be a way to know when a user has selected a file.
file_system_model->on_selection_changed only fires on directory
change.
2019-09-10 19:28:41 +02:00
Andreas Kling
fb275c9442
FileManager: Make the tree view follow the path changes correctly
...
The left-side tree view was not following along when switching paths
via the right-side views. Hook this back up.
2019-09-08 09:08:50 +02:00
Andreas Kling
6dec328af7
LibGUI+FileManager: Add GAbstractView::on_selection_change hook
...
This hook will be called whenever the view's selection changes somehow.
Use this in the FileManager to keep the left and right views in sync.
2019-09-07 21:35:04 +02:00
Andreas Kling
9d97781e37
FileManager: Port to using GModelSelection
2019-09-07 20:41:14 +02:00
Andreas Kling
f8c0168adc
IRCClient: Fix window selection after GModelSelection changes
2019-09-07 20:01:37 +02:00
Andreas Kling
9c1fa0bd51
SystemMonitor: Fix PID selection after GModelSelection changes
2019-09-07 19:59:03 +02:00
Andreas Kling
a635619cc0
GTabWidget: Rename get_active_tab() => active_tab_index()
2019-09-07 16:57:26 +02:00
Andreas Kling
568936775f
DisplayProperties: Fix build after AKString.h => String.h change
2019-09-07 16:57:03 +02:00
Jesse Buhagiar
ecbc0322c1
Applications: Create a display properties manager
...
An interactive application to modify the current display settings, such as
the current wallpaper as well as the screen resolution. Currently we're
adding the resolutions ourselves, because there's currently no way to
detect was resolutions the current display adapter supports (or at least
I can't see one... Maybe VBE does and I'm stupid). It even comes with
a very nice template'd `ItemList` that can support a vector of any type,
which makes life much simpler.
2019-09-07 16:51:15 +02:00
Andrew Weller
16aba5100d
TextEditor: Implement File/New Action
...
The user is asked if they want to save a dirty file before they create
a new one.
2019-09-06 18:38:26 +02:00
Andreas Kling
73fdbba59c
AK: Rename <AK/AKString.h> to <AK/String.h>
...
This was a workaround to be able to build on case-insensitive file
systems where it might get confused about <string.h> vs <String.h>.
Let's just not support building that way, so String.h can have an
objectively nicer name. :^)
2019-09-06 15:36:54 +02:00
Sergey Bugaev
6d3f52c4a4
Terminal: Add some basic emoji support
...
This is not as perfect as it is elsewhere in the system, as we cannot
really change how terminal "thinks about" characters and bytes. What
we can do though, and what this commit does, is to *render* emojis, but
make it seem as if they take up all the space, and all the columns their
bytes would take if they were all regular characters.
2019-09-05 16:37:39 +02:00
Sergey Bugaev
22e6978c71
WindowServer+LibGUI+FontEditor: Encode special characters as UTF-8
2019-09-05 16:37:39 +02:00
rhin123
9f8a2af921
Terminal: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
1f666abcd2
SystemMonitor: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
2d8318a474
QuickShow: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
962b65b42f
Piano: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
a538968cc2
PaintBrush: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
7df4cfe606
IRCCient: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
86c68210f0
FileManager: Added GCommonActions
2019-09-05 09:40:54 +02:00
rhin123
f468634494
TextEditorWidget: Added GCommonActions
2019-09-05 09:40:54 +02:00
Andreas Kling
5cfd67ecbb
FileManager: Open ".wav" files in SoundPlayer when activated
...
Now you can double-click on WAV files in the FileManager. Neato! :^)
2019-09-04 20:20:36 +02:00
Andreas Kling
1188a036e9
SoundPlayer: Start working on a GUI sound player application
...
This can play anything that AWavLoader can load (so obviously only WAV
files at the moment.)
It works by having a timer that wakes up every 100ms and tries to send
a sample buffer to the AudioServer. If our server-side queue is full
then we wait until the next timer iteration and try again.
We display the most recently enqueued sample buffer in a nice little
widget that just plots the samples in green-on-black. :^)
2019-09-04 20:18:41 +02:00
Andreas Kling
2441c1fde2
IRCClient: Use GAboutDialog :^)
2019-09-04 19:11:37 +02:00
Andreas Kling
75eb84c7e4
IRCClient: Size columns to-fit in the window and member views
2019-09-04 19:07:59 +02:00
Andreas Kling
e12bbc097f
IRCClient: Add 16x16 icon
2019-09-04 18:56:39 +02:00
Andreas Kling
52f62c2d7e
IRCClient: Tweak UI to look less padding-bloated
2019-09-04 18:54:43 +02:00
Andreas Kling
2216c7ecc6
IRCClient: Make the auto-join on connect feature actually do something
2019-09-04 17:37:11 +02:00
Andreas Kling
9cb4e5ac81
IRCClient: Don't auto-open new queries for NOTICE or CTCP messages
...
This seems to match what other IRC clients do, and it means we don't
get three separate "server" windows when connecting to Freenode. :^)
2019-09-03 21:47:43 +02:00
Andreas Kling
5c7ef5977d
IRCClient: Handle incoming CTCP requests VERSION and PING
...
CTCP requests are client-to-client messages that are sent as either
PRIVMSG (for requests) or NOTICE (for responses) and wrapped in ASCII
character 0x01 on both sides.
This patch implements responding to the very common VERSION and PING
requests. We always get a VERSION request from freenode when connecting
there, for instance. :^)
2019-09-03 21:18:28 +02:00
Andreas Kling
841f1276e6
TextEditor: Use GAboutDialog :^)
2019-09-02 19:48:47 +02:00
Andreas Kling
aea6a28e9c
Terminal: Use GAboutDialog :^)
2019-09-02 19:46:35 +02:00
Conrad Pankoff
1f56612c8a
Terminal: Add -e (execute) command line option
...
This allows a user to specify a command to run after opening the terminal
program. By default it will still spawn an interactive shell.
2019-09-02 08:33:36 +02:00
Andreas Kling
cfe09784a4
TextEditor: Clear the dirty flag in newly opened documents
2019-08-29 18:54:06 +02:00
Andreas Kling
a71e411b27
Terminal: Use a gear icon for the "Settings" menu
2019-08-29 18:19:40 +02:00
Andreas Kling
72950f93a3
TextEditor: Move the Font menu inside the View menu
...
This will be our first user of the nested menus feature. :^)
2019-08-29 06:36:35 +02:00
Andreas Kling
b1763238d7
TextEditor: Ask the user before closing a dirty (modified) document
...
It's a little unfortunate that we have two separate code paths that can
lead to asking the user about this. Longer-term we should find a way to
unify these things.
Fixes #491 .
2019-08-27 20:39:01 +02:00
Andreas Kling
ecbedda34c
TextEditor: Add a "document dirty" flag and show it in the window title
...
This lets you know if the document has been modified since last save.
2019-08-27 20:18:19 +02:00
Andreas Kling
07933d0b46
TextEditor: Let's enable line wrapping by default
2019-08-27 17:05:01 +02:00