/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "UndoGlyph.h" #include #include #include #include class GlyphEditorWidget; class GlyphMapWidget; class FontEditorWidget final : public GUI::Widget { C_OBJECT(FontEditorWidget) public: virtual ~FontEditorWidget() override; bool open_file(String const&); bool save_as(String const&); bool request_close(); void update_title(); String const& path() { return m_path; } Gfx::BitmapFont const& edited_font() { return *m_edited_font; } void initialize(String const& path, RefPtr&&); void initialize_menubar(GUI::Window&); bool is_showing_font_metadata() { return m_font_metadata; } void set_show_font_metadata(bool b); Function on_initialize; private: FontEditorWidget(); virtual void drop_event(GUI::DropEvent&) override; void undo(); void redo(); void did_modify_font(); void did_resize_glyph_editor(); void update_statusbar(); void update_preview(); RefPtr m_edited_font; RefPtr m_glyph_map_widget; RefPtr m_glyph_editor_widget; RefPtr m_new_action; RefPtr m_open_action; RefPtr m_save_action; RefPtr m_save_as_action; RefPtr m_cut_action; RefPtr m_copy_action; RefPtr m_paste_action; RefPtr m_delete_action; RefPtr m_undo_action; RefPtr m_redo_action; RefPtr m_undo_glyph; OwnPtr m_undo_stack; RefPtr m_go_to_glyph_action; RefPtr m_previous_glyph_action; RefPtr m_next_glyph_action; RefPtr m_open_preview_action; RefPtr m_show_metadata_action; GUI::ActionGroup m_glyph_editor_scale_actions; RefPtr m_scale_five_action; RefPtr m_scale_ten_action; RefPtr m_scale_fifteen_action; GUI::ActionGroup m_glyph_tool_actions; RefPtr m_move_glyph_action; RefPtr m_paint_glyph_action; RefPtr m_flip_horizontal_action; RefPtr m_flip_vertical_action; RefPtr m_rotate_clockwise_action; RefPtr m_rotate_counterclockwise_action; RefPtr m_copy_character_action; RefPtr m_statusbar; RefPtr m_font_preview_window; RefPtr m_left_column_container; RefPtr m_glyph_editor_container; RefPtr m_weight_combobox; RefPtr m_slope_combobox; RefPtr m_spacing_spinbox; RefPtr m_baseline_spinbox; RefPtr m_mean_line_spinbox; RefPtr m_presentation_spinbox; RefPtr m_glyph_editor_width_spinbox; RefPtr m_glyph_editor_present_checkbox; RefPtr m_name_textbox; RefPtr m_family_textbox; RefPtr m_fixed_width_checkbox; RefPtr m_font_metadata_groupbox; String m_path; Vector m_font_weight_list; Vector m_font_slope_list; bool m_font_metadata { true }; };