You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw/apps/opencs/view/doc/view.hpp

275 lines
5.6 KiB
C++

#ifndef CSV_DOC_VIEW_H
#define CSV_DOC_VIEW_H
#include <string>
#include <vector>
#include <QList>
#include <QMainWindow>
#include <apps/opencs/model/world/universalid.hpp>
#include "subviewfactory.hpp"
class QAction;
class QCloseEvent;
class QMenu;
class QObject;
class QScrollArea;
namespace CSMDoc
{
class Document;
}
namespace CSMPrefs
{
class Setting;
}
namespace CSVDoc
{
class ViewManager;
class SubView;
class Operations;
class GlobalDebugProfileMenu;
class View : public QMainWindow
{
Q_OBJECT
ViewManager& mViewManager;
CSMDoc::Document* mDocument;
int mViewIndex;
int mViewTotal;
QList<SubView*> mSubViews;
QAction* mUndo;
QAction* mRedo;
QAction* mSave;
QAction* mVerify;
QAction* mShowStatusBar;
QAction* mStopDebug;
QAction* mMerge;
std::vector<QAction*> mEditingActions;
Operations* mOperations;
SubViewFactoryManager mSubViewFactory;
QMainWindow mSubViewWindow;
GlobalDebugProfileMenu* mGlobalDebugProfileMenu;
QScrollArea* mScroll;
bool mScrollbarOnly;
private:
void closeEvent(QCloseEvent* event) override;
QAction* createMenuEntry(CSMWorld::UniversalId::Type type, QMenu* menu, const char* shortcutName);
QAction* createMenuEntry(
const std::string& title, const std::string& iconName, QMenu* menu, const char* shortcutName);
void setupFileMenu();
void setupEditMenu();
void setupViewMenu();
void setupWorldMenu();
void setupMechanicsMenu();
void setupCharacterMenu();
void setupAssetsMenu();
void setupDebugMenu();
void setupHelpMenu();
void setupUi();
void setupShortcut(const char* name, QAction* action);
void updateActions();
void exitApplication();
/// User preference function
void resizeViewWidth(int width);
/// User preference function
void resizeViewHeight(int height);
void updateScrollbar();
void updateWidth(bool isGrowLimit, int minSubViewWidth);
void createScrollArea();
public:
View(ViewManager& viewManager, CSMDoc::Document* document, int totalViews);
///< The ownership of \a document is not transferred to *this.
View(const View&) = delete;
View& operator=(const View&) = delete;
~View() override = default;
static QScreen* getWidgetScreen(const QPoint& position);
const CSMDoc::Document* getDocument() const;
CSMDoc::Document* getDocument();
void setIndex(int viewIndex, int totalViews);
void updateDocumentState();
void updateProgress(int current, int max, int type, int threads);
void toggleStatusBar(bool checked);
Operations* getOperations() const;
signals:
void newGameRequest();
void newAddonRequest();
void loadDocumentRequest();
void exitApplicationRequest(CSVDoc::View* view);
void editSettingsRequest();
void mergeDocument(CSMDoc::Document* document);
void requestFocus(const std::string& id);
public slots:
void addSubView(const CSMWorld::UniversalId& id, const std::string& hint = "");
///< \param hint Suggested view point (e.g. coordinates in a 3D scene or a line number
/// in a script).
void abortOperation(int type);
void updateTitle();
// called when subviews are added or removed
void updateSubViewIndices(SubView* view = nullptr);
private slots:
void settingChanged(const CSMPrefs::Setting* setting);
void undoActionChanged();
void redoActionChanged();
void newView();
void save();
void exit();
static void openHelp();
static void tutorial();
void infoAbout();
void infoAboutQt();
void verify();
void addGlobalsSubView();
void addGmstsSubView();
void addSkillsSubView();
void addClassesSubView();
void addFactionsSubView();
void addRacesSubView();
void addSoundsSubView();
void addScriptsSubView();
void addRegionsSubView();
void addBirthsignsSubView();
void addSpellsSubView();
void addCellsSubView();
void addReferenceablesSubView();
void addReferencesSubView();
void addRegionMapSubView();
void addFiltersSubView();
void addTopicsSubView();
void addJournalsSubView();
void addTopicInfosSubView();
void addJournalInfosSubView();
void addEnchantmentsSubView();
void addBodyPartsSubView();
void addSoundGensSubView();
void addMagicEffectsSubView();
void addMeshesSubView();
void addIconsSubView();
void addMusicsSubView();
void addSoundsResSubView();
void addTexturesSubView();
void addVideosSubView();
void addDebugProfilesSubView();
void addRunLogSubView();
void addLandsSubView();
void addLandTexturesSubView();
void addPathgridSubView();
void addStartScriptsSubView();
void addSearchSubView();
void addMetaDataSubView();
void toggleShowStatusBar(bool show);
void loadErrorLog();
void run(const std::string& profile, const std::string& startupInstruction = "");
void stop();
void closeRequest(SubView* subView);
void moveScrollBarToEnd(int min, int max);
void merge();
void onRequestFocus(const std::string& id);
};
}
#endif