Studio/Interface/ShapeWorksStudioApp.h
Namespaces
| Name | 
|---|
| shapeworks  User usage reporting (telemetry)  | 
Classes
| Name | |
|---|---|
| class | shapeworks::ShapeWorksStudioApp  Main ShapeWorksStudio window.  | 
Source code
#pragma once
#include <Data/PreferencesWindow.h>
#include <Data/Telemetry.h>
#include <Interface/CustomSlider.h>
#include <Interface/LogWindow.h>
#include <Interface/StudioLogger.h>
#include <Interface/UpdateChecker.h>
#include <Visualization/StudioVtkOutputWindow.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <Eigen/Eigen>
#include <QActionGroup>
#include <QCheckBox>
#include <QDoubleSpinBox>
#include <QElapsedTimer>
#include <QErrorMessage>
#include <QLabel>
#include <QMainWindow>
#include <QPointer>
#include <QProgressBar>
#include <QSpinBox>
#include <QTimer>
// Forward Qt class declarations
class Ui_ShapeWorksStudioApp;
namespace shapeworks {
class Lightbox;
class DataTool;
class GroomTool;
class OptimizeTool;
class AnalysisTool;
class DeepSSMTool;
class Session;
class Visualizer;
class SplashScreen;
class WheelEventForwarder;
class StatusBarWidget;
class PythonWorker;
class CompareWidget;
class ShapeWorksStudioApp : public QMainWindow {
  Q_OBJECT
 public:
  ShapeWorksStudioApp();
  ~ShapeWorksStudioApp();
  void closeEvent(QCloseEvent* event) override;
  void initialize_vtk();
  void import_files(QStringList file_names);
 public Q_SLOTS:
  void open_project(QString filename);
  void on_action_new_project_triggered();
  void on_action_open_project_triggered();
  void on_action_show_project_folder_triggered();
  bool on_action_save_project_triggered();
  bool save_project_as(QString type);
  void save_as_swproj_clicked();
  void save_as_xlsx_clicked();
  void on_action_quit_triggered();
  void on_action_import_triggered();
  void splash_screen_closed();
  void on_vertical_scroll_bar_valueChanged();
  void on_action_import_mode_triggered();
  void on_action_groom_mode_triggered();
  void on_action_optimize_mode_triggered();
  void on_action_analysis_mode_triggered();
  void on_action_deepssm_mode_triggered();
  void on_actionShow_Tool_Window_triggered();
  void on_actionExport_PCA_Mesh_triggered();
  void on_actionExport_Eigenvalues_triggered();
  void on_actionExport_Eigenvectors_triggered();
  void on_actionExport_PCA_Mode_Points_triggered();
  void on_action_preferences_triggered();
  void action_export_current_mesh_triggered(int index = 0);
  void on_action_export_current_particles_triggered();
  void on_action_export_mesh_scalars_triggered();
  void on_action_export_pca_scores_triggered();
  void action_export_pca_montage_triggered();
  void action_export_screenshot_triggered();
  void action_export_particle_scalars_triggered();
  void action_export_all_subjects_particle_scalars_triggered();
  void on_center_checkbox_stateChanged();
  void on_zoom_slider_valueChanged();
  void on_view_mode_combobox_currentIndexChanged(QString disp_mode);
  void on_auto_view_button_clicked();
  void handle_pca_changed();
  void handle_slider_update();
  void handle_mca_changed();
  void handle_project_changed();
  void handle_points_changed();
  void handle_groom_start();
  void handle_groom_complete();
  void handle_optimize_start();
  void handle_optimize_complete();
  void handle_reconstruction_complete();
  void handle_reset_stats();
  void handle_display_setting_changed();
  void handle_glyph_changed();
  void handle_opacity_changed();
  void handle_alignment_changed();
  void handle_open_recent();
  void handle_color_scheme();
  void handle_pca_update();
  void clear_message();
  // callbacks from logger
  void handle_message(std::string str);
  void handle_error(std::string str);
  void handle_warning(std::string str);
  void handle_debug(std::string str);
  void handle_status(std::string str);
  void handle_progress_with_message(int amt, std::string str);
  void handle_progress(int amt);
  void message_callback(std::string str);
  void handle_new_mesh();
  void handle_clear_cache();
  void handle_compare_settings_changed();
  void handle_lightbox_right_click(int index);
  void update_feature_map_selection(int index);
  void update_feature_map_scale();
  void image_combo_changed(int index);
  void show_splash_screen();
  void hide_splash_screen();
  void about();
  void keyboard_shortcuts();
  void toggle_log_window();
  QSharedPointer<PythonWorker> get_py_worker();
  Preferences& prefs() { return preferences_; }
  QSharedPointer<Session> session() { return session_; }
 protected:
  void dragEnterEvent(QDragEnterEvent* event) override;
  void dragLeaveEvent(QDragLeaveEvent* event) override;
  void dropEvent(QDropEvent* event) override;
 private:
  void new_session();
  void update_tool_mode();
  void update_view_mode();
  void reset_num_viewers();
  void update_view_combo();
  void update_compare_menu();
  bool should_reconstruct_view_show();
  static bool write_particle_file(std::string filename, Eigen::VectorXd particles);
  static QString get_mesh_file_filter();
  static const std::string SETTING_ZOOM_C;
  void set_view_combo_item_enabled(int item, bool value);
  bool is_view_combo_item_enabled(int item);
  void disable_all_actions();
  void enable_possible_actions();
  void update_from_preferences();
  void update_scrollbar();
  void update_table();
  void update_display(bool force = false);
  void display_mode_shape();
  bool set_feature_map(std::string feature_map);
  std::string get_feature_map();
  bool get_feature_uniform_scale();
  void set_feature_uniform_scale(bool value);
  void update_recent_files();
  void update_alignment_options();
  void save_project(QString filename);
  bool write_scalars(vtkSmartPointer<vtkPolyData> poly_data, QString filename);
  void set_message(MessageType message_type, QString message);
  void create_glyph_submenu();
  void create_iso_submenu();
  void create_compare_submenu();
  Ui_ShapeWorksStudioApp* ui_;
  QActionGroup* action_group_ = nullptr;
  QSharedPointer<Lightbox> lightbox_;
  QSharedPointer<DataTool> data_tool_;
  QSharedPointer<GroomTool> groom_tool_;
  QSharedPointer<OptimizeTool> optimize_tool_;
  QSharedPointer<AnalysisTool> analysis_tool_;
  QSharedPointer<DeepSSMTool> deepssm_tool_;
  QSharedPointer<Visualizer> visualizer_;
  QSharedPointer<PreferencesWindow> preferences_window_;
  CompareWidget* compare_widget_ = nullptr;
  vtkSmartPointer<StudioVtkOutputWindow> studio_vtk_output_window_;
  // all the preferences
  Preferences preferences_;
  QSharedPointer<Session> session_;
  QSharedPointer<WheelEventForwarder> wheel_event_forwarder_;
  // programmatic UI elements
  CustomSlider* glyph_size_slider_;
  CustomSlider* glyph_quality_slider_;
  QLabel* glyph_size_label_;
  QLabel* glyph_quality_label_;
  QCheckBox* glyph_auto_size_;
  QCheckBox* glyph_arrow_scale_{nullptr};
  QList<QAction*> recent_file_actions_;
  LogWindow log_window_;
  QPointer<StatusBarWidget> status_bar_;
  QSharedPointer<shapeworks::SplashScreen> splash_screen_;
  QErrorMessage error_message_dialog_;
  std::vector<CustomSlider*> iso_opacity_sliders_;
  std::vector<QCheckBox*> domain_particle_checkboxes_;
  QString current_message_;
  std::string current_display_mode_;
  bool block_update_{false};
  QElapsedTimer time_since_last_update_;
  qint64 last_render_ = -1;
  QStringList current_features_;
  QStringList current_image_list_;
  QSharedPointer<PythonWorker> py_worker_;
  StudioLogger logger_;
  UpdateChecker update_checker_{preferences_};
  Telemetry telemetry_{preferences_};
};
}  // namespace shapeworks
Updated on 2024-03-17 at 12:58:44 -0600