ladybird/Userland/Applications/PDFViewer/PDFViewerWidget.h
Rodrigo Tobar 6d0869c14a PDFViewer: Add TreeView to communicate rendering errors
Now that the rendering process communicates all errors upstream, and
PDFViewer has a way to tap into those errors as they occur, we can
visualise them more neatly.

This commit adds a TreeView that we populate with the errors stemming
from the rendering process. The TreeView has two levels: at the top sit
pages where errors can be found, and under each page we can see the
errors that have been found on that page. The TreeView sits below the
main PDF rendering.
2022-12-16 10:04:23 +01:00

59 lines
1.6 KiB
C++

/*
* Copyright (c) 2021, Matthew Olsson <mattco@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include "AK/NonnullRefPtr.h"
#include "AK/RefPtr.h"
#include "NumericInput.h"
#include "PDFViewer.h"
#include "SidebarWidget.h"
#include <LibGUI/Action.h>
#include <LibGUI/ActionGroup.h>
#include <LibGUI/CheckBox.h>
#include <LibGUI/Widget.h>
class PDFViewer;
class PagedErrorsModel;
class PDFViewerWidget final : public GUI::Widget {
C_OBJECT(PDFViewerWidget)
public:
~PDFViewerWidget() override = default;
void initialize_menubar(GUI::Window&);
void open_file(Core::File&);
private:
PDFViewerWidget();
void initialize_toolbar(GUI::Toolbar&);
RefPtr<PDFViewer> m_viewer;
RefPtr<SidebarWidget> m_sidebar;
NonnullRefPtr<PagedErrorsModel> m_paged_errors_model;
RefPtr<GUI::TreeView> m_errors_tree_view;
RefPtr<NumericInput> m_page_text_box;
RefPtr<GUI::Label> m_total_page_label;
RefPtr<GUI::Action> m_go_to_prev_page_action;
RefPtr<GUI::Action> m_go_to_next_page_action;
RefPtr<GUI::Action> m_toggle_sidebar_action;
RefPtr<GUI::Action> m_zoom_in_action;
RefPtr<GUI::Action> m_zoom_out_action;
RefPtr<GUI::Action> m_reset_zoom_action;
RefPtr<GUI::Action> m_rotate_counterclockwise_action;
RefPtr<GUI::Action> m_rotate_clockwise_action;
GUI::ActionGroup m_page_view_action_group;
RefPtr<GUI::Action> m_page_view_mode_single;
RefPtr<GUI::Action> m_page_view_mode_multiple;
RefPtr<GUI::CheckBox> m_show_clipping_paths;
RefPtr<GUI::CheckBox> m_show_images;
bool m_sidebar_open { false };
ByteBuffer m_buffer;
};