1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:58:11 +00:00

FileManager: Use a GTextEditor for the location bar + tweak icons.

This commit is contained in:
Andreas Kling 2019-03-20 18:12:56 +01:00
parent 367bb9e4eb
commit daa1dcb5e8
6 changed files with 14 additions and 7 deletions

View file

@ -3,7 +3,7 @@
#include <LibGUI/GBoxLayout.h> #include <LibGUI/GBoxLayout.h>
#include <LibGUI/GApplication.h> #include <LibGUI/GApplication.h>
#include <LibGUI/GStatusBar.h> #include <LibGUI/GStatusBar.h>
#include <LibGUI/GTextBox.h> #include <LibGUI/GTextEditor.h>
#include <LibGUI/GToolBar.h> #include <LibGUI/GToolBar.h>
#include <LibGUI/GMenuBar.h> #include <LibGUI/GMenuBar.h>
#include <LibGUI/GAction.h> #include <LibGUI/GAction.h>
@ -36,20 +36,21 @@ int main(int argc, char** argv)
auto* main_toolbar = new GToolBar(widget); auto* main_toolbar = new GToolBar(widget);
auto* location_toolbar = new GToolBar(widget); auto* location_toolbar = new GToolBar(widget);
auto* location_textbox = new GTextBox(location_toolbar); location_toolbar->set_preferred_size({ 0, 21 });
auto* location_textbox = new GTextEditor(GTextEditor::SingleLine, location_toolbar);
auto* directory_table_view = new DirectoryTableView(widget); auto* directory_table_view = new DirectoryTableView(widget);
auto* statusbar = new GStatusBar(widget); auto* statusbar = new GStatusBar(widget);
location_textbox->on_return_pressed = [directory_table_view] (GTextBox& textbox) { location_textbox->on_return_pressed = [directory_table_view] (auto& editor) {
directory_table_view->open(textbox.text()); directory_table_view->open(editor.text());
}; };
auto open_parent_directory_action = GAction::create("Open parent directory", { Mod_Alt, Key_Up }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/parentdirectory16.rgb", { 16, 16 }), [directory_table_view] (const GAction&) { auto open_parent_directory_action = GAction::create("Open parent directory", { Mod_Alt, Key_Up }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/parentdirectory16.rgb", { 16, 16 }), [directory_table_view] (const GAction&) {
directory_table_view->open_parent_directory(); directory_table_view->open_parent_directory();
}); });
auto mkdir_action = GAction::create("New directory...", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/mkdir16.rgb", { 16, 16 }), [] (const GAction&) { auto mkdir_action = GAction::create("New directory...", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/mkdir.rgb", { 16, 16 }), [] (const GAction&) {
dbgprintf("'New directory' action activated!\n"); dbgprintf("'New directory' action activated!\n");
}); });
@ -57,7 +58,7 @@ int main(int argc, char** argv)
dbgprintf("'Copy' action activated!\n"); dbgprintf("'Copy' action activated!\n");
}); });
auto delete_action = GAction::create("Delete", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/trash16.rgb", { 16, 16 }), [] (const GAction&) { auto delete_action = GAction::create("Delete", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/delete.rgb", { 16, 16 }), [] (const GAction&) {
dbgprintf("'Delete' action activated!\n"); dbgprintf("'Delete' action activated!\n");
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

View file

@ -26,6 +26,9 @@ GTextEditor::~GTextEditor()
void GTextEditor::set_text(const String& text) void GTextEditor::set_text(const String& text)
{ {
if (is_single_line() && text.length() == m_lines[0]->length() && !memcmp(text.characters(), m_lines[0]->characters(), text.length()))
return;
m_lines.clear(); m_lines.clear();
int start_of_current_line = 0; int start_of_current_line = 0;
@ -44,7 +47,10 @@ void GTextEditor::set_text(const String& text)
} }
add_line(i); add_line(i);
update_content_size(); update_content_size();
set_cursor(0, 0); if (is_single_line())
set_cursor(0, m_lines[0]->length());
else
set_cursor(0, 0);
update(); update();
} }