Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/slic3r/GUI/GUI.hpp')
-rw-r--r--src/slic3r/GUI/GUI.hpp260
1 files changed, 260 insertions, 0 deletions
diff --git a/src/slic3r/GUI/GUI.hpp b/src/slic3r/GUI/GUI.hpp
new file mode 100644
index 000000000..8dfaf42c6
--- /dev/null
+++ b/src/slic3r/GUI/GUI.hpp
@@ -0,0 +1,260 @@
+#ifndef slic3r_GUI_hpp_
+#define slic3r_GUI_hpp_
+
+#include <string>
+#include <vector>
+#include "PrintConfig.hpp"
+#include "../../callback.hpp"
+#include "GUI_ObjectParts.hpp"
+
+#include <wx/intl.h>
+#include <wx/string.h>
+
+class wxApp;
+class wxWindow;
+class wxFrame;
+class wxMenuBar;
+class wxNotebook;
+class wxPanel;
+class wxComboCtrl;
+class wxString;
+class wxArrayString;
+class wxArrayLong;
+class wxColour;
+class wxBoxSizer;
+class wxFlexGridSizer;
+class wxButton;
+class wxFileDialog;
+class wxStaticBitmap;
+class wxFont;
+class wxTopLevelWindow;
+
+namespace Slic3r {
+
+class PresetBundle;
+class PresetCollection;
+class Print;
+class ProgressStatusBar;
+class AppConfig;
+class PresetUpdater;
+class DynamicPrintConfig;
+class TabIface;
+class PreviewIface;
+class Print;
+class GCodePreviewData;
+
+#define _(s) Slic3r::GUI::I18N::translate((s))
+
+namespace GUI { namespace I18N {
+ inline wxString translate(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)); }
+ inline wxString translate(const wchar_t *s) { return wxGetTranslation(s); }
+ inline wxString translate(const std::string &s) { return wxGetTranslation(wxString(s.c_str(), wxConvUTF8)); }
+ inline wxString translate(const std::wstring &s) { return wxGetTranslation(s.c_str()); }
+} }
+
+// !!! If you needed to translate some wxString,
+// !!! please use _(L(string))
+// !!! _() - is a standard wxWidgets macro to translate
+// !!! L() is used only for marking localizable string
+// !!! It will be used in "xgettext" to create a Locating Message Catalog.
+#define L(s) s
+
+//! macro used to localization, return wxScopedCharBuffer
+//! With wxConvUTF8 explicitly specify that the source string is already in UTF-8 encoding
+#define _CHB(s) wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str()
+
+// Minimal buffer length for translated string (char buf[MIN_BUF_LENGTH_FOR_L])
+#define MIN_BUF_LENGTH_FOR_L 512
+
+namespace GUI {
+
+class Tab;
+class ConfigOptionsGroup;
+// Map from an file_type name to full file wildcard name.
+typedef std::map<std::string, std::string> t_file_wild_card;
+inline t_file_wild_card& get_file_wild_card() {
+ static t_file_wild_card FILE_WILDCARDS;
+ if (FILE_WILDCARDS.empty()){
+ FILE_WILDCARDS["known"] = "Known files (*.stl, *.obj, *.amf, *.xml, *.prusa)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML;*.prusa;*.PRUSA";
+ FILE_WILDCARDS["stl"] = "STL files (*.stl)|*.stl;*.STL";
+ FILE_WILDCARDS["obj"] = "OBJ files (*.obj)|*.obj;*.OBJ";
+ FILE_WILDCARDS["amf"] = "AMF files (*.amf)|*.zip.amf;*.amf;*.AMF;*.xml;*.XML";
+ FILE_WILDCARDS["3mf"] = "3MF files (*.3mf)|*.3mf;*.3MF;";
+ FILE_WILDCARDS["prusa"] = "Prusa Control files (*.prusa)|*.prusa;*.PRUSA";
+ FILE_WILDCARDS["ini"] = "INI files *.ini|*.ini;*.INI";
+ FILE_WILDCARDS["gcode"] = "G-code files (*.gcode, *.gco, *.g, *.ngc)|*.gcode;*.GCODE;*.gco;*.GCO;*.g;*.G;*.ngc;*.NGC";
+ FILE_WILDCARDS["svg"] = "SVG files *.svg|*.svg;*.SVG";
+ }
+ return FILE_WILDCARDS;
+}
+
+struct PresetTab {
+ std::string name;
+ Tab* panel;
+ PrinterTechnology technology;
+};
+
+
+void disable_screensaver();
+void enable_screensaver();
+bool debugged();
+void break_to_debugger();
+
+// Passing the wxWidgets GUI classes instantiated by the Perl part to C++.
+void set_wxapp(wxApp *app);
+void set_main_frame(wxFrame *main_frame);
+void set_progress_status_bar(ProgressStatusBar *prsb);
+void set_tab_panel(wxNotebook *tab_panel);
+void set_plater(wxPanel *plater);
+void set_app_config(AppConfig *app_config);
+void set_preset_bundle(PresetBundle *preset_bundle);
+void set_preset_updater(PresetUpdater *updater);
+void set_objects_from_perl( wxWindow* parent,
+ wxBoxSizer *frequently_changed_parameters_sizer,
+ wxBoxSizer *info_sizer,
+ wxButton *btn_export_gcode,
+ wxButton *btn_reslice,
+ wxButton *btn_print,
+ wxButton *btn_send_gcode,
+ wxStaticBitmap *manifold_warning_icon);
+void set_show_print_info(bool show);
+void set_show_manifold_warning_icon(bool show);
+void set_objects_list_sizer(wxBoxSizer *objects_list_sizer);
+
+AppConfig* get_app_config();
+wxApp* get_app();
+PresetBundle* get_preset_bundle();
+wxFrame* get_main_frame();
+ProgressStatusBar* get_progress_status_bar();
+wxNotebook * get_tab_panel();
+wxNotebook* get_tab_panel();
+
+const wxColour& get_label_clr_modified();
+const wxColour& get_label_clr_sys();
+const wxColour& get_label_clr_default();
+unsigned get_colour_approx_luma(const wxColour &colour);
+void set_label_clr_modified(const wxColour& clr);
+void set_label_clr_sys(const wxColour& clr);
+
+const wxFont& small_font();
+const wxFont& bold_font();
+
+void open_model(wxWindow *parent, wxArrayString& input_files);
+
+wxWindow* get_right_panel();
+const size_t& label_width();
+
+Tab* get_tab(const std::string& name);
+const std::vector<PresetTab>& get_preset_tabs();
+
+extern void add_menus(wxMenuBar *menu, int event_preferences_changed, int event_language_change);
+
+// This is called when closing the application, when loading a config file or when starting the config wizard
+// to notify the user whether he is aware that some preset changes will be lost.
+extern bool check_unsaved_changes();
+
+// Checks if configuration wizard needs to run, calls config_wizard if so.
+// Returns whether the Wizard ran.
+extern bool config_wizard_startup(bool app_config_exists);
+
+// Opens the configuration wizard, returns true if wizard is finished & accepted.
+// The run_reason argument is actually ConfigWizard::RunReason, but int is used here because of Perl.
+extern void config_wizard(int run_reason);
+
+// Create "Preferences" dialog after selecting menu "Preferences" in Perl part
+extern void open_preferences_dialog(int event_preferences);
+
+// Create a new preset tab (print, filament and printer),
+void create_preset_tabs(int event_value_change, int event_presets_changed);
+TabIface* get_preset_tab_iface(char *name);
+
+PreviewIface* create_preview_iface(wxNotebook* notebook, DynamicPrintConfig* config, Print* print, GCodePreviewData* gcode_preview_data);
+
+// add it at the end of the tab panel.
+void add_created_tab(Tab* panel, int event_value_change, int event_presets_changed);
+// Change option value in config
+void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt_key, const boost::any& value, int opt_index = 0);
+
+// Update UI / Tabs to reflect changes in the currently loaded presets
+void load_current_presets();
+
+void show_error(wxWindow* parent, const wxString& message);
+void show_error_id(int id, const std::string& message); // For Perl
+void show_info(wxWindow* parent, const wxString& message, const wxString& title);
+void warning_catcher(wxWindow* parent, const wxString& message);
+
+// Assign a Lambda to the print object to emit a wxWidgets Command with the provided ID
+// to deliver a progress status message.
+void set_print_callback_event(Print *print, int id);
+
+// load language saved at application config
+bool load_language();
+// save language at application config
+void save_language();
+// get list of installed languages
+void get_installed_languages(wxArrayString & names, wxArrayLong & identifiers);
+// select language from the list of installed languages
+bool select_language(wxArrayString & names, wxArrayLong & identifiers);
+// update right panel of the Plater according to view mode
+void update_mode();
+
+void show_info_sizer(const bool show);
+
+std::vector<Tab *>& get_tabs_list();
+bool checked_tab(Tab* tab);
+void delete_tab_from_list(Tab* tab);
+
+// Creates a wxCheckListBoxComboPopup inside the given wxComboCtrl, filled with the given text and items.
+// Items are all initialized to the given value.
+// Items must be separated by '|', for example "Item1|Item2|Item3", and so on.
+void create_combochecklist(wxComboCtrl* comboCtrl, std::string text, std::string items, bool initial_value);
+
+// Returns the current state of the items listed in the wxCheckListBoxComboPopup contained in the given wxComboCtrl,
+// encoded inside an int.
+int combochecklist_get_flags(wxComboCtrl* comboCtrl);
+
+// Return translated std::string as a wxString
+wxString L_str(const std::string &str);
+// Return wxString from std::string in UTF8
+wxString from_u8(const std::string &str);
+
+void set_model_events_from_perl(Model &model,
+ int event_object_selection_changed,
+ int event_object_settings_changed,
+ int event_remove_object,
+ int event_update_scene);
+void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
+// Update view mode according to selected menu
+void update_mode();
+bool is_expert_mode();
+
+// Callback to trigger a configuration update timer on the Plater.
+static PerlCallback g_on_request_update_callback;
+
+ConfigOptionsGroup* get_optgroup(size_t i);
+std::vector <std::shared_ptr<ConfigOptionsGroup>>& get_optgroups();
+wxButton* get_wiping_dialog_button();
+
+void add_export_option(wxFileDialog* dlg, const std::string& format);
+int get_export_option(wxFileDialog* dlg);
+
+// Returns the dimensions of the screen on which the main frame is displayed
+bool get_current_screen_size(wxWindow *window, unsigned &width, unsigned &height);
+
+// Save window size and maximized status into AppConfig
+void save_window_size(wxTopLevelWindow *window, const std::string &name);
+// Restore the above
+void restore_window_size(wxTopLevelWindow *window, const std::string &name);
+
+// Update buttons view according to enable/disable
+void enable_action_buttons(bool enable);
+
+// Display an About dialog
+extern void about();
+// Ask the destop to open the datadir using the default file explorer.
+extern void desktop_open_datadir_folder();
+
+} // namespace GUI
+} // namespace Slic3r
+
+#endif