summaryrefslogtreecommitdiff
path: root/Applications/FileManager
AgeCommit message (Collapse)Author
2020-03-19Applications: Remove G prefixes from commentsTibor Nagy
2020-03-18FileManager: chdir to appropriate directory before starting TerminalItamar
2020-03-15FileManager: Add "Open Terminal here" actionItamar
2020-03-13Applications: Use "Document - AppName" window title formatTibor Nagy
Fixes #1444
2020-03-08Userspace: Add missing #includes now that AK/StdLibExtras.h is smallerAndreas Kling
2020-03-07LibGUI: Move Icon and FontDatabase into the GUI namespaceShannon Booth
We also clean up some old references to the old G prefixed GUI classes This also fixes a potential bug with using: C_OBJECT_ABSTRACT(GAbstractButton) instead of C_OBJECT_ABSTRACT(AbstractButton)
2020-03-05FileManager: Fix asserts on checking properties of symlinksTibor Nagy
There were two issues with this code: - The result of the readlink() call was checked incorrectly for errors. - This code shouldn't return because otherwise it leaves the GUI buttons uninitialized below, causing RefPtr asserts to trigger when the dialog tries to access the buttons later on.
2020-03-05FileManager: Fix group names in the file properties dialogTibor Nagy
2020-03-04LibGUI: Don't use Core::Object::add() to instantiate dialogsAndreas Kling
Now that add() returns a WidgetType&, we can't rely on the parent of a GUI::Dialog to still keep it alive after exec() returns. This happens because exec() will call remove_from_parent() on itself before returning. And so we go back to the old idiom for creating a GUI::Dialog centered above a specific window. Just call GUI::Dialog::construct(), passing the "parent" window as the last parameter.
2020-03-04LibCore: Make Core::Object::add<ChildType> return a ChildType&Andreas Kling
Since the returned object is now owned by the callee object, we can simply vend a ChildType&. This allows us to use "." instead of "->" at the call site, which is quite nice. :^)
2020-03-04LibGUI: Use set_layout<LayoutType>() in lots of client codeAndreas Kling
2020-03-03LibGUI: Some more convenience functions for constructing widgetsAndreas Kling
This patch adds two new API's: - WidgetType& GUI::Window::set_main_widget<WidgetType>(); This creates a new main widget for a window, assigns it, and returns it to you as a WidgetType&. - LayoutType& GUI::Widget::set_layout<LayoutType>(); Same basic idea, creates a new layout, assigns it, and returns it to you as a LayoutType&.
2020-03-03LibGUI: Remove Button& parameter from Button::on_click hookAndreas Kling
There was but a single user of this parameter and it's a bit tedious to write it out every time, so let's get rid of it.
2020-02-25AK: Make Vector use size_t for its size and capacityAndreas Kling
2020-02-23LibGUI: Add helper for constructing new TabWidget tabsAndreas Kling
This patch adds the following convenience helper: auto tab_widget = GUI::TabWidget::construct(); auto my_widget = tab_widget->add_tab<GUI::Widget>("My tab", ...); The above is equivalent to: auto tab_widget = GUI::TabWidget::construct(); auto my_widget = GUI::Widget::construct(...); tab_widget->add_widget("My tab", my_widget);
2020-02-23LibGUI: Make GUI::Frame have the 2px sunken container look by defaultAndreas Kling
The overwhelming majority of GUI::Frame users set the same appearance, so let's just make it the default.
2020-02-23Userspace: Use Core::Object::add() when building interfacesAndreas Kling
2020-02-15LibGUI: Reduce menu-related header dependenciesAndreas Kling
2020-02-14LibGUI: Port the drag&drop code to Core::MimeDataAndreas Kling
2020-02-13FileManager: Copy item(s) when dragging and dropping them :^)Andreas Kling
This patch implements basic drag & drop file management in a narrow set of cases. You can now drag & drop a file onto a folder in the same directory, and the dropped file will be copied into the directory. We'll need to support a lot more variations of this, but this is nice!
2020-02-13FileManager: Run clang-format on main.cppAndreas Kling
2020-02-06LibGUI: Remove leading G from filenamesAndreas Kling
2020-02-06LibCore: Remove leading C from filenamesAndreas Kling
2020-02-06LibGUI: Rename {H,V}BoxLayout => {Horizontal,Vertical}BoxLayoutAndreas Kling
2020-02-06LibGUI: Add HorizontalSplitter and VerticalSplitter convenience classesAndreas Kling
2020-02-06LibGfx: Prefer using Gfx::Bitmap::load_from_file instead of load_png()Andreas Kling
Code that just wants to open a Gfx::Bitmap from a file should not be calling the PNG codec directly.
2020-02-06LibGfx: Rename from LibDraw :^)Andreas Kling
2020-02-06LibDraw: Put all classes in the Gfx namespaceAndreas Kling
I started adding things to a Draw namespace, but it somehow felt really wrong seeing Draw::Rect and Draw::Bitmap, etc. So instead, let's rename the library to LibGfx. :^)
2020-02-05FileManager: Include limits.h for PATH_MAXjoshua stein
2020-02-05FileManager: Fix building with clangjoshua stein
FileUtils.cpp:131:34: error: cannot pass object of non-trivial type 'const AK::String' through variadic method; call will abort at runtime [-Wnon-pod-varargs]
2020-02-05FileManager: Include sys/stat.h for struct statjoshua stein
2020-02-05FileManager: Remove unused m_row variablejoshua stein
2020-02-02LibGUI: Put all classes in the GUI namespace and remove the leading GAndreas Kling
This took me a moment. Welcome to the new world of GUI::Widget! :^)
2020-02-02LibCore: Put all classes in the Core namespace and remove the leading CAndreas Kling
I've been wanting to do this for a long time. It's time we start being consistent about how this stuff works. The new convention is: - "LibFoo" is a userspace library that provides the "Foo" namespace. That's it :^) This was pretty tedious to convert and I didn't even start on LibGUI yet. But it's coming up next.
2020-02-02LibGUI: Add GHBoxLayout and GVBoxLayout convenience classesAndreas Kling
2020-02-02FileManager: Scope actions to the window where they logically belongAndreas Kling
Most actions should not be app global. This fixes unwanted activations while another window is active.
2020-01-28LibGUI+FileManager: Try better to detect executablesSergey Bugaev
We will now consider a file to be an executable if any of the executable permission bits are set.
2020-01-27FileManager: Show symlink targets in status bar messageAndreas Kling
When a single item is selected and it happens to be a symlink pointing somewhere, we now show where it points to in the status bar. :^) There is a big ugly FIXME here about how DirectoryView has to work around the fact that there's a GSortingProxyModel attached to the table view widget.
2020-01-27LibGUI: Add symlink targets as a column in GFileSystemModelAndreas Kling
Also make sure to hide this column by default where we don't expect to see it.
2020-01-27FileManager: Use stat() when activating a file/directoryAndreas Kling
This makes it possible to open symlinks to directories by activating them (via double click, for example.) :^) Fixes #21.
2020-01-27LibGUI: Add 64-bit signed integer support to GVariantAndreas Kling
What was previously the "Int" type is now "Int32" and "Int64".
2020-01-18Meta: Add license header to source filesAndreas Kling
As suggested by Joshua, this commit adds the 2-clause BSD license as a comment block to the top of every source file. For the first pass, I've just added myself for simplicity. I encourage everyone to add themselves as copyright holders of any file they've added or modified in some significant way. If I've added myself in error somewhere, feel free to replace it with the appropriate copyright holder instead. Going forward, all new source files should include a license header.
2020-01-17Kernel: Add "accept" pledge promise for accepting incoming connectionsAndreas Kling
This patch adds a new "accept" promise that allows you to call accept() on an already listening socket. This lets programs set up a socket for for listening and then dropping "inet" and/or "unix" so that only incoming (and existing) connections are allowed from that point on. No new outgoing connections or listening server sockets can be created. In addition to accept() it also allows getsockopt() with SOL_SOCKET and SO_PEERCRED, which is used to find the PID/UID/GID of the socket peer. This is used by our IPC library when creating shared buffers that should only be accessible to a specific peer process. This allows us to drop "unix" in WindowServer and LookupServer. :^) It also makes the debugging/introspection RPC sockets in CEventLoop based programs work again.
2020-01-12Applications+DevTools+MenuApplets: Drop "unix" pledge when possibleAndreas Kling
Now that the "unix" pledge is no longer required for socket I/O, we can drop it after making the connections we need in a program. In most GUI program cases, once we've connected to the WindowServer by instantiating a GApplication, we no longer need "unix" :^)
2020-01-11FileManager: Use pledge()Andreas Kling
2020-01-10FileManager: Add a columns viewSergey Bugaev
This new view, backed by a GColumnsView, joins the existing table and icon views :^) Even though it displays a file tree, its data is provided by the very same GFileSystemModel that the other two views use. This commit also includes my attempt at making an icon for the new mode.
2020-01-10LibGUI+FileManager: Misc tweaks courtesy of clang-formatSergey Bugaev
2020-01-10LibGUI+FileManager: Merge GDirectoryModel into GFileSystemModelSergey Bugaev
We used to have two different models for displaying file system contents: the FileManager-grade table-like directory model, which exposed rich data (such as file icons with integrated image previews) about contents of a single directory, and the tree-like GFileSystemModel, which only exposed a tree of file names with very basic info about them. This commit unifies the two. The new GFileSystemModel can be used both as a tree-like and as a table-like model, or in fact in both ways simultaneously. It exposes rich data about a file system subtree rooted at the given root. The users of the two previous models are all ported to use this new model.
2020-01-07FileManager: Unbreak build after "select all" changesAndreas Kling
2020-01-07Filemanager: Add Ctrl+A select all actionShannon Booth
Unfortunately this means that current_view() needed to be made non-const as changing the selection is a non-const operation.