/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "UndoGlyph.h" #include #include #include #include #include #include class GlyphEditorWidget; class FontEditorWidget final : public GUI::Widget , public Config::Listener { C_OBJECT(FontEditorWidget) public: virtual ~FontEditorWidget() override; bool open_file(String const&); bool save_file(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; virtual void config_i32_did_change(String const& domain, String const& group, String const& key, i32 value) override; virtual void config_string_did_change(String const& domain, String const& group, String const& key, String const& value) override; void undo(); void redo(); void did_modify_font(); void did_resize_glyph_editor(); void update_statusbar(); void update_preview(); void set_scale(i32); void set_scale_and_save(i32); void copy_selected_glyphs(); void cut_selected_glyphs(); void paste_glyphs(); void delete_selected_glyphs(); 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 }; };