X-Git-Url: https://git.sur5r.net/?p=fstl;a=blobdiff_plain;f=src%2Fwindow.h;h=fd0a77001e4eac827951c8fa9344c6c268d2a10e;hp=cb92ebb4708d2d68c52b3a1af82915c2b31c3940;hb=refs%2Fheads%2Fupstream;hpb=967d178c4343c689c728571bb10d5c94ab8d9d13 diff --git a/src/window.h b/src/window.h index cb92ebb..81cd29f 100644 --- a/src/window.h +++ b/src/window.h @@ -2,6 +2,9 @@ #define WINDOW_H #include +#include +#include +#include class Canvas; @@ -10,25 +13,82 @@ class Window : public QMainWindow Q_OBJECT public: explicit Window(QWidget* parent=0); - bool load_stl(const QString& filename); + bool load_stl(const QString& filename, bool is_reload=false); + bool load_prev(void); + bool load_next(void); protected: - void dragEnterEvent(QDragEnterEvent* event); - void dropEvent(QDropEvent* event); + void dragEnterEvent(QDragEnterEvent* event) override; + void dropEvent(QDropEvent* event) override; + void resizeEvent(QResizeEvent *event) override; + void moveEvent(QMoveEvent *event) override; + void keyPressEvent(QKeyEvent* event) override; public slots: void on_open(); void on_about(); - void on_ascii_stl(); void on_bad_stl(); + void on_empty_mesh(); + void on_missing_file(); void enable_open(); void disable_open(); + void set_watched(const QString& filename); + +private slots: + void on_projection(QAction* proj); + void on_drawMode(QAction* mode); + void on_drawAxes(bool d); + void on_invertZoom(bool d); + void on_watched_change(const QString& filename); + void on_reload(); + void on_autoreload_triggered(bool r); + void on_clear_recent(); + void on_load_recent(QAction* a); + void on_loaded(const QString& filename); + void on_save_screenshot(); + void on_hide_menuBar(); + private: + void rebuild_recent_files(); + void load_persist_settings(); + void sorted_insert(QStringList& list, const QCollator& collator, const QString& value); + void build_folder_file_list(); + QPair get_file_neighbors(); + QAction* const open_action; QAction* const about_action; QAction* const quit_action; + QAction* const perspective_action; + QAction* const orthographic_action; + QAction* const shaded_action; + QAction* const wireframe_action; + QAction* const surfaceangle_action; + QAction* const axes_action; + QAction* const invert_zoom_action; + QAction* const reload_action; + QAction* const autoreload_action; + QAction* const save_screenshot_action; + QAction* const hide_menuBar_action; + + QMenu* const recent_files; + QActionGroup* const recent_files_group; + QAction* const recent_files_clear_action; + const static int MAX_RECENT_FILES=8; + const static QString RECENT_FILE_KEY; + const static QString INVERT_ZOOM_KEY; + const static QString AUTORELOAD_KEY; + const static QString DRAW_AXES_KEY; + const static QString PROJECTION_KEY; + const static QString DRAW_MODE_KEY; + const static QString WINDOW_GEOM_KEY; + + QString current_file; + QString lookup_folder; + QStringList lookup_folder_files; + + QFileSystemWatcher* watcher; Canvas* canvas; };