/*
Copyright 2006-2021 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see .
*/
#ifndef QETELEMENTEDITOR_H
#define QETELEMENTEDITOR_H
#include "../../ElementsCollection/elementslocation.h"
#include
#include
class ElementScene;
class QActionGroup;
class ElementItemEditor;
class ElementView;
class QListWidget;
class QStackedWidget;
class QLabel;
namespace Ui {
class QETElementEditor;
}
class QETElementEditor : public QMainWindow
{
Q_OBJECT
signals:
void saveToLocation(ElementsLocation loc);
public:
explicit QETElementEditor(QWidget *parent = nullptr);
~QETElementEditor() override;
void contextMenu(QPoint p, QList actions = QList());
void setNames(const NamesList &name_list);
void setLocation(const ElementsLocation &location);
ElementsLocation location() const;
void setFileName(const QString &file_name);
QString fileName() const;
void setReadOnly(bool ro);
bool isReadOnly() const;
void fromFile(const QString &filepath);
bool toFile(const QString &filepath);
void fromLocation(const ElementsLocation &location);
bool toLocation(const ElementsLocation &location);
bool isEditing(const ElementsLocation &location);
bool isEditing(const QString &filepath);
ElementScene *elementScene() const;
ElementView *elementView() const;
static QPointF pasteOffset();
static QString getOpenElementFileName(QWidget *parent = nullptr, const QString &dir = QString());
void updateTitle();
void fillPartsList();
void UncheckAddPrimitive();
void updateCurrentPartEditor();
void updateInformations();
void updatePartsList();
void updateSelectionFromPartsList();
void openElement(const QString &filepath);
bool checkElement();
protected:
bool event(QEvent *event) override;
void closeEvent(QCloseEvent *) override;
private slots:
bool on_m_save_action_triggered();
bool on_m_save_as_action_triggered();
void on_m_select_all_act_triggered();
void on_m_edit_element_properties_action_triggered();
void on_m_new_action_triggered();
void on_m_open_action_triggered();
void on_m_open_from_file_action_triggered();
void on_m_open_dxf_action_triggered();
bool on_m_save_as_file_action_triggered();
void on_m_reload_action_triggered();
void on_m_quit_action_triggered();
void on_m_deselect_all_action_triggered();
void on_m_cut_action_triggered();
void on_m_copy_action_triggered();
void on_m_paste_action_triggered();
void on_m_paste_in_area_action_triggered();
void on_m_paste_from_file_action_triggered();
void on_m_paste_from_element_action_triggered();
void on_m_revert_selection_action_triggered();
void on_m_delete_action_triggered();
void on_m_edit_names_action_triggered();
void on_m_edit_author_action_triggered();
void on_m_zoom_in_action_triggered();
void on_m_zoom_out_action_triggered();
void on_m_zoom_fit_best_action_triggered();
void on_m_zoom_original_action_triggered();
void on_m_about_qet_action_triggered();
void on_m_online_manual_triggered();
void on_m_youtube_action_triggered();
void on_m_donate_action_triggered();
void on_m_about_qt_action_triggered();
private:
bool canClose();
void readSettings();
void writeSettings() const;
void setupActions();
void updateAction();
void setupConnection();
void initGui();
QWidget *clearToolsDock();
void copyAndPasteXml(const QDomDocument &xml_document);
private:
Ui::QETElementEditor *ui;
bool
m_read_only = false,
m_opened_from_file = false,
m_first_activation = true;
ElementScene *m_elmt_scene = nullptr;
QActionGroup
*m_add_part_action_grp = nullptr,
*m_depth_action_group = nullptr;
QList m_context_menu_action_list;
QAction
*m_undo_action = nullptr,
*m_redo_action = nullptr;
/// Hash associating primitive names with their matching edition widget
QHash m_editors;
ElementsLocation m_location;
QString
m_file_name,
m_min_title;
ElementView *m_view = nullptr;
QListWidget *m_parts_list = nullptr;
QStackedWidget *m_tools_dock_stack = nullptr;
QLabel *m_default_informations = nullptr;
};
#endif // QETELEMENTEDITOR_H