#ifndef OPENCS_VIEW_WORLDSPACEWIDGET_H #define OPENCS_VIEW_WORLDSPACEWIDGET_H #include "scenewidget.hpp" #include "navigation1st.hpp" #include "navigationfree.hpp" #include "navigationorbit.hpp" #include namespace CSMWorld { class UniversalId; } namespace CSVWorld { class SceneToolMode; class SceneToolbar; } namespace CSVRender { class WorldspaceWidget : public SceneWidget { Q_OBJECT CSVRender::Navigation1st m1st; CSVRender::NavigationFree mFree; CSVRender::NavigationOrbit mOrbit; public: WorldspaceWidget (const CSMDoc::Document& document, QWidget *parent = 0); CSVWorld::SceneToolMode *makeNavigationSelector (CSVWorld::SceneToolbar *parent); ///< \attention The created tool is not added to the toolbar (via addTool). Doing that /// is the responsibility of the calling function. void selectDefaultNavigationMode(); virtual void useViewHint (const std::string& hint); ///< Default-implementation: ignored. protected: const CSMDoc::Document& mDocument; //for checking if drop comes from same document enum dropType { cellsMixed, cellsInterior, cellsExterior, notCells }; dropType getDropType(const std::vector& data) const; private: void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent *event); private slots: void selectNavigationMode (const std::string& mode); signals: void closeRequest(); }; } #endif