mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-11 18:20:43 +09:00
HackStudio: Add TODO entries widget
This commit is contained in:
parent
26a7356e90
commit
935c7b2f4b
Notes:
sideshowbarker
2024-07-18 11:36:56 +09:00
Author: https://github.com/guerinoni
Commit: 935c7b2f4b
Pull-request: https://github.com/SerenityOS/serenity/pull/6614
Reviewed-by: https://github.com/alimpfard
Reviewed-by: https://github.com/itamar8910 ✅
Reviewed-by: https://github.com/linusg
5 changed files with 134 additions and 0 deletions
|
@ -44,6 +44,7 @@ set(SOURCES
|
||||||
ProjectTemplate.cpp
|
ProjectTemplate.cpp
|
||||||
TerminalWrapper.cpp
|
TerminalWrapper.cpp
|
||||||
ToDoEntries.cpp
|
ToDoEntries.cpp
|
||||||
|
ToDoEntriesWidget.cpp
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "Project.h"
|
#include "Project.h"
|
||||||
#include "ProjectDeclarations.h"
|
#include "ProjectDeclarations.h"
|
||||||
#include "TerminalWrapper.h"
|
#include "TerminalWrapper.h"
|
||||||
|
#include "ToDoEntries.h"
|
||||||
#include <AK/LexicalPath.h>
|
#include <AK/LexicalPath.h>
|
||||||
#include <AK/StringBuilder.h>
|
#include <AK/StringBuilder.h>
|
||||||
#include <Kernel/API/InodeWatcherEvent.h>
|
#include <Kernel/API/InodeWatcherEvent.h>
|
||||||
|
@ -867,6 +868,7 @@ void HackStudioWidget::create_action_tab(GUI::Widget& parent)
|
||||||
};
|
};
|
||||||
|
|
||||||
m_find_in_files_widget = m_action_tab_widget->add_tab<FindInFilesWidget>("Find in files");
|
m_find_in_files_widget = m_action_tab_widget->add_tab<FindInFilesWidget>("Find in files");
|
||||||
|
m_todo_entries_widget = m_action_tab_widget->add_tab<ToDoEntriesWidget>("TODO");
|
||||||
m_terminal_wrapper = m_action_tab_widget->add_tab<TerminalWrapper>("Build", false);
|
m_terminal_wrapper = m_action_tab_widget->add_tab<TerminalWrapper>("Build", false);
|
||||||
m_debug_info_widget = m_action_tab_widget->add_tab<DebugInfoWidget>("Debug");
|
m_debug_info_widget = m_action_tab_widget->add_tab<DebugInfoWidget>("Debug");
|
||||||
m_disassembly_widget = m_action_tab_widget->add_tab<DisassemblyWidget>("Disassembly");
|
m_disassembly_widget = m_action_tab_widget->add_tab<DisassemblyWidget>("Disassembly");
|
||||||
|
@ -875,6 +877,10 @@ void HackStudioWidget::create_action_tab(GUI::Widget& parent)
|
||||||
m_diff_viewer->set_content(original_content, diff);
|
m_diff_viewer->set_content(original_content, diff);
|
||||||
set_edit_mode(EditMode::Diff);
|
set_edit_mode(EditMode::Diff);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ToDoEntries::the().on_update = [this]() {
|
||||||
|
m_todo_entries_widget->refresh();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void HackStudioWidget::create_project_tab(GUI::Widget& parent)
|
void HackStudioWidget::create_project_tab(GUI::Widget& parent)
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "Project.h"
|
#include "Project.h"
|
||||||
#include "ProjectFile.h"
|
#include "ProjectFile.h"
|
||||||
#include "TerminalWrapper.h"
|
#include "TerminalWrapper.h"
|
||||||
|
#include "ToDoEntriesWidget.h"
|
||||||
#include <LibGUI/ActionGroup.h>
|
#include <LibGUI/ActionGroup.h>
|
||||||
#include <LibGUI/Scrollbar.h>
|
#include <LibGUI/Scrollbar.h>
|
||||||
#include <LibGUI/Splitter.h>
|
#include <LibGUI/Splitter.h>
|
||||||
|
@ -143,6 +144,7 @@ private:
|
||||||
RefPtr<TerminalWrapper> m_terminal_wrapper;
|
RefPtr<TerminalWrapper> m_terminal_wrapper;
|
||||||
RefPtr<Locator> m_locator;
|
RefPtr<Locator> m_locator;
|
||||||
RefPtr<FindInFilesWidget> m_find_in_files_widget;
|
RefPtr<FindInFilesWidget> m_find_in_files_widget;
|
||||||
|
RefPtr<ToDoEntriesWidget> m_todo_entries_widget;
|
||||||
RefPtr<DebugInfoWidget> m_debug_info_widget;
|
RefPtr<DebugInfoWidget> m_debug_info_widget;
|
||||||
RefPtr<DisassemblyWidget> m_disassembly_widget;
|
RefPtr<DisassemblyWidget> m_disassembly_widget;
|
||||||
RefPtr<Threading::Thread> m_debugger_thread;
|
RefPtr<Threading::Thread> m_debugger_thread;
|
||||||
|
|
96
Userland/DevTools/HackStudio/ToDoEntriesWidget.cpp
Normal file
96
Userland/DevTools/HackStudio/ToDoEntriesWidget.cpp
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Federico Guerinoni <guerinoni.federico@gmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ToDoEntriesWidget.h"
|
||||||
|
#include "HackStudio.h"
|
||||||
|
#include "Project.h"
|
||||||
|
#include "ToDoEntries.h"
|
||||||
|
#include <AK/StringBuilder.h>
|
||||||
|
#include <LibGUI/BoxLayout.h>
|
||||||
|
#include <LibGUI/Button.h>
|
||||||
|
#include <LibGUI/TableView.h>
|
||||||
|
#include <LibGUI/TextBox.h>
|
||||||
|
#include <LibGfx/FontDatabase.h>
|
||||||
|
|
||||||
|
namespace HackStudio {
|
||||||
|
|
||||||
|
class ToDoEntriesModel final : public GUI::Model {
|
||||||
|
public:
|
||||||
|
enum Column {
|
||||||
|
Filename,
|
||||||
|
Text,
|
||||||
|
__Count
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit ToDoEntriesModel(const Vector<ToDoEntryPair>&& matches)
|
||||||
|
: m_matches(move(matches))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual int row_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return m_matches.size(); }
|
||||||
|
virtual int column_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return Column::__Count; }
|
||||||
|
|
||||||
|
virtual String column_name(int column) const override
|
||||||
|
{
|
||||||
|
switch (column) {
|
||||||
|
case Column::Filename:
|
||||||
|
return "Filename";
|
||||||
|
case Column::Text:
|
||||||
|
return "Text";
|
||||||
|
default:
|
||||||
|
VERIFY_NOT_REACHED();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual GUI::Variant data(const GUI::ModelIndex& index, GUI::ModelRole role) const override
|
||||||
|
{
|
||||||
|
if (role == GUI::ModelRole::TextAlignment)
|
||||||
|
return Gfx::TextAlignment::CenterLeft;
|
||||||
|
if (role == GUI::ModelRole::Font) {
|
||||||
|
if (index.column() == Column::Text)
|
||||||
|
return Gfx::FontDatabase::default_fixed_width_font();
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
if (role == GUI::ModelRole::Display) {
|
||||||
|
auto& match = m_matches.at(index.row());
|
||||||
|
switch (index.column()) {
|
||||||
|
case Column::Filename:
|
||||||
|
return match.filename;
|
||||||
|
case Column::Text:
|
||||||
|
return match.comment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void update() override { }
|
||||||
|
virtual GUI::ModelIndex index(int row, int column = 0, const GUI::ModelIndex& = GUI::ModelIndex()) const override
|
||||||
|
{
|
||||||
|
if (row < 0 || row >= (int)m_matches.size())
|
||||||
|
return {};
|
||||||
|
if (column < 0 || column >= Column::__Count)
|
||||||
|
return {};
|
||||||
|
return create_index(row, column, &m_matches.at(row));
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Vector<ToDoEntryPair> m_matches;
|
||||||
|
};
|
||||||
|
|
||||||
|
void ToDoEntriesWidget::refresh()
|
||||||
|
{
|
||||||
|
const auto& entries = ToDoEntries::the().get_entries();
|
||||||
|
auto results_model = adopt_ref(*new ToDoEntriesModel(move(entries)));
|
||||||
|
m_result_view->set_model(results_model);
|
||||||
|
}
|
||||||
|
|
||||||
|
ToDoEntriesWidget::ToDoEntriesWidget()
|
||||||
|
{
|
||||||
|
set_layout<GUI::VerticalBoxLayout>();
|
||||||
|
m_result_view = add<GUI::TableView>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
29
Userland/DevTools/HackStudio/ToDoEntriesWidget.h
Normal file
29
Userland/DevTools/HackStudio/ToDoEntriesWidget.h
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Federico Guerinoni <guerinoni.federico@gmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <LibGUI/Button.h>
|
||||||
|
#include <LibGUI/TableView.h>
|
||||||
|
#include <LibGUI/TextBox.h>
|
||||||
|
#include <LibGUI/Widget.h>
|
||||||
|
|
||||||
|
namespace HackStudio {
|
||||||
|
|
||||||
|
class ToDoEntriesWidget final : public GUI::Widget {
|
||||||
|
C_OBJECT(ToDoEntriesWidget)
|
||||||
|
public:
|
||||||
|
virtual ~ToDoEntriesWidget() override { }
|
||||||
|
|
||||||
|
void refresh();
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit ToDoEntriesWidget();
|
||||||
|
|
||||||
|
RefPtr<GUI::TableView> m_result_view;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue