Serenity Operating System
at master 59 lines 1.8 kB view raw
1/* 2 * Copyright (c) 2021, Matthew Olsson <mattco@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include "NumericInput.h" 10#include "PDFViewer.h" 11#include "SidebarWidget.h" 12#include <AK/NonnullRefPtr.h> 13#include <AK/RefPtr.h> 14#include <LibGUI/Action.h> 15#include <LibGUI/ActionGroup.h> 16#include <LibGUI/CheckBox.h> 17#include <LibGUI/Widget.h> 18 19class PDFViewer; 20class PagedErrorsModel; 21 22class PDFViewerWidget final : public GUI::Widget { 23 C_OBJECT(PDFViewerWidget) 24 25public: 26 ~PDFViewerWidget() override = default; 27 28 void initialize_menubar(GUI::Window&); 29 void open_file(StringView path, NonnullOwnPtr<Core::File> file); 30 31private: 32 PDFViewerWidget(); 33 34 void initialize_toolbar(GUI::Toolbar&); 35 PDF::PDFErrorOr<void> try_open_file(StringView path, NonnullOwnPtr<Core::File> file); 36 37 RefPtr<PDFViewer> m_viewer; 38 RefPtr<SidebarWidget> m_sidebar; 39 NonnullRefPtr<PagedErrorsModel> m_paged_errors_model; 40 RefPtr<GUI::TreeView> m_errors_tree_view; 41 RefPtr<NumericInput> m_page_text_box; 42 RefPtr<GUI::Label> m_total_page_label; 43 RefPtr<GUI::Action> m_go_to_prev_page_action; 44 RefPtr<GUI::Action> m_go_to_next_page_action; 45 RefPtr<GUI::Action> m_toggle_sidebar_action; 46 RefPtr<GUI::Action> m_zoom_in_action; 47 RefPtr<GUI::Action> m_zoom_out_action; 48 RefPtr<GUI::Action> m_reset_zoom_action; 49 RefPtr<GUI::Action> m_rotate_counterclockwise_action; 50 RefPtr<GUI::Action> m_rotate_clockwise_action; 51 GUI::ActionGroup m_page_view_action_group; 52 RefPtr<GUI::Action> m_page_view_mode_single; 53 RefPtr<GUI::Action> m_page_view_mode_multiple; 54 RefPtr<GUI::CheckBox> m_show_clipping_paths; 55 RefPtr<GUI::CheckBox> m_show_images; 56 57 bool m_sidebar_open { false }; 58 ByteBuffer m_buffer; 59};