mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Moved functions and variables (for fonts and labels color) to GUI_App
+ corrected Sidebar layouts + deleted get_preset_bundle + actions with tabs_list moved to GUI_App
This commit is contained in:
		
							parent
							
								
									342b584399
								
							
						
					
					
						commit
						08c6905751
					
				
					 17 changed files with 252 additions and 276 deletions
				
			
		|  | @ -12,6 +12,7 @@ | |||
|     __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; | ||||
| #endif /* WIN32 */ | ||||
| 
 | ||||
| #include "libslic3r/libslic3r_version.h.in" | ||||
| #include "Config.hpp" | ||||
| #include "Geometry.hpp" | ||||
| #include "Model.hpp" | ||||
|  | @ -73,7 +74,8 @@ int main(int argc, char **argv) | |||
|     // Path from the Slic3r binary to its resources.
 | ||||
|     path_resources /= (path_to_binary.stem().string() == "slic3r-gui") ?  | ||||
|         // Running from the build directory:
 | ||||
|         "../../resources" : | ||||
| //         "../../resources" : // ? #ys_FIXME
 | ||||
|         "../../../resources" : // ! #ys_FIXME
 | ||||
|         // Running from an installation directory:
 | ||||
| #ifdef __APPLE__ | ||||
|         // The application is packed in the .dmg archive as 'Slic3r.app/Contents/MacOS/Slic3r'
 | ||||
|  |  | |||
|  | @ -17,6 +17,7 @@ | |||
| #include <Geometry.hpp> | ||||
| #include <Model.hpp> | ||||
| #include <Utils.hpp> | ||||
| #include "GUI/GUI_App.hpp" | ||||
| 
 | ||||
| 
 | ||||
| namespace Slic3r { | ||||
|  | @ -41,9 +42,9 @@ bool AppControllerGui::is_main_thread() const | |||
|     return m_pri_data->ui_thread == std::this_thread::get_id(); | ||||
| } | ||||
| 
 | ||||
| namespace GUI { | ||||
| PresetBundle* get_preset_bundle(); | ||||
| } | ||||
| // namespace GUI {
 | ||||
| // PresetBundle* get_preset_bundle();
 | ||||
| // }
 | ||||
| 
 | ||||
| static const PrintObjectStep STEP_SLICE                 = posSlice; | ||||
| static const PrintObjectStep STEP_PERIMETERS            = posPerimeters; | ||||
|  | @ -142,7 +143,7 @@ void PrintController::slice_to_png() | |||
|     using Pointf3 = Vec3d; | ||||
| 
 | ||||
|     auto ctl = GUI::get_appctl(); | ||||
|     auto presetbundle = GUI::get_preset_bundle(); | ||||
|     auto presetbundle = GUI::wxGetApp().preset_bundle; | ||||
| 
 | ||||
|     assert(presetbundle); | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ | |||
| #include <wx/clrpicker.h> | ||||
| 
 | ||||
| #include "GUI.hpp" | ||||
| #include "GUI_App.hpp" | ||||
| 
 | ||||
| namespace Slic3r { | ||||
| namespace GUI { | ||||
|  | @ -36,8 +37,8 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic | |||
| 
 | ||||
| 	// Text color description
 | ||||
| 	auto sys_label = new wxStaticText(this, wxID_ANY, _(L("Value is the same as the system value"))); | ||||
| 	sys_label->SetForegroundColour(get_label_clr_sys()); | ||||
| 	auto sys_colour = new wxColourPickerCtrl(this, wxID_ANY, get_label_clr_sys()); | ||||
| 	sys_label->SetForegroundColour(wxGetApp().get_label_clr_sys()); | ||||
| 	auto sys_colour = new wxColourPickerCtrl(this, wxID_ANY, wxGetApp().get_label_clr_sys()); | ||||
| 	sys_colour->Bind(wxEVT_COLOURPICKER_CHANGED, ([sys_colour, sys_label](wxCommandEvent e) | ||||
| 	{ | ||||
| 		sys_label->SetForegroundColour(sys_colour->GetColour()); | ||||
|  | @ -53,8 +54,8 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic | |||
| 	grid_sizer->Add(sys_label, -1, wxALIGN_CENTRE_VERTICAL | wxEXPAND); | ||||
| 
 | ||||
| 	auto mod_label = new wxStaticText(this, wxID_ANY, _(L("Value was changed and is not equal to the system value or the last saved preset"))); | ||||
| 	mod_label->SetForegroundColour(get_label_clr_modified()); | ||||
| 	auto mod_colour = new wxColourPickerCtrl(this, wxID_ANY, get_label_clr_modified()); | ||||
| 	mod_label->SetForegroundColour(wxGetApp().get_label_clr_modified()); | ||||
| 	auto mod_colour = new wxColourPickerCtrl(this, wxID_ANY, wxGetApp().get_label_clr_modified()); | ||||
| 	mod_colour->Bind(wxEVT_COLOURPICKER_CHANGED, ([mod_colour, mod_label](wxCommandEvent e) | ||||
| 	{ | ||||
| 		mod_label->SetForegroundColour(mod_colour->GetColour()); | ||||
|  | @ -70,8 +71,8 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic | |||
| 
 | ||||
| 	wxButton* btn = static_cast<wxButton*>(FindWindowById(wxID_OK, this)); | ||||
| 	btn->Bind(wxEVT_BUTTON, [sys_colour, mod_colour, this](wxCommandEvent&) {  | ||||
| 		set_label_clr_sys(sys_colour->GetColour()); | ||||
| 		set_label_clr_modified(mod_colour->GetColour()); | ||||
| 		wxGetApp().set_label_clr_sys(sys_colour->GetColour()); | ||||
| 		wxGetApp().set_label_clr_modified(mod_colour->GetColour()); | ||||
| 		EndModal(wxID_OK); | ||||
| 		}); | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ | |||
| #include <wx/tooltip.h> | ||||
| #include "PrintConfig.hpp" | ||||
| #include <boost/algorithm/string/predicate.hpp> | ||||
| #include "GUI_App.hpp" | ||||
| 
 | ||||
| namespace Slic3r { namespace GUI { | ||||
| 
 | ||||
|  | @ -707,7 +708,7 @@ void StaticText::BUILD() | |||
| 
 | ||||
| 	wxString legend(static_cast<const ConfigOptionString*>(m_opt.default_value)->value); | ||||
| 	auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size); | ||||
| 	temp->SetFont(bold_font()); | ||||
|     temp->SetFont(wxGetApp().bold_font()); | ||||
| 
 | ||||
| 	// 	// recast as a wxWindow to fit the calling convention
 | ||||
| 	window = dynamic_cast<wxWindow*>(temp); | ||||
|  |  | |||
|  | @ -35,6 +35,7 @@ | |||
| #include <wx/collpane.h> | ||||
| #include <wx/msgdlg.h> | ||||
| #include <wx/filefn.h> | ||||
| #include "GUI_App.hpp" | ||||
| 
 | ||||
| 
 | ||||
| namespace fs = boost::filesystem; | ||||
|  | @ -213,7 +214,7 @@ void FirmwareDialog::priv::flashing_start(unsigned tasks) | |||
| 	modal_response = wxID_NONE; | ||||
| 	txt_stdout->Clear(); | ||||
| 	set_txt_status(label_status_flashing); | ||||
| 	txt_status->SetForegroundColour(GUI::get_label_clr_modified()); | ||||
|     txt_status->SetForegroundColour(GUI::wxGetApp().get_label_clr_modified()); | ||||
| 	port_picker->Disable(); | ||||
| 	btn_rescan->Disable(); | ||||
| 	hex_picker->Disable(); | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ | |||
| #include "../../libslic3r/ClipperUtils.hpp" | ||||
| #include "../../libslic3r/PrintConfig.hpp" | ||||
| #include "../../libslic3r/GCode/PreviewData.hpp" | ||||
| #include "GUI_App.hpp" | ||||
| 
 | ||||
| #include <GL/glew.h> | ||||
| 
 | ||||
|  | @ -424,7 +425,7 @@ GLCanvas3D::Bed::EType GLCanvas3D::Bed::_detect_type() const | |||
| { | ||||
|     EType type = Custom; | ||||
| 
 | ||||
|     const PresetBundle* bundle = get_preset_bundle(); | ||||
|     auto bundle = wxGetApp().preset_bundle; | ||||
|     if (bundle != nullptr) | ||||
|     { | ||||
|         const Preset* curr = &bundle->printers.get_selected_preset(); | ||||
|  |  | |||
|  | @ -125,18 +125,12 @@ wxPanel 	*g_wxPlater 	= nullptr; | |||
| AppConfig	*g_AppConfig	= nullptr; | ||||
| PresetBundle *g_PresetBundle= nullptr; | ||||
| PresetUpdater *g_PresetUpdater = nullptr; | ||||
| wxColour    g_color_label_modified; | ||||
| wxColour    g_color_label_sys; | ||||
| wxColour    g_color_label_default; | ||||
| 
 | ||||
| // #ys_FIXME_for_delete
 | ||||
| std::vector<Tab *> g_tabs_list; | ||||
| 
 | ||||
| wxLocale*	g_wxLocale {nullptr}; | ||||
| 
 | ||||
| wxFont		g_small_font; | ||||
| wxFont		g_bold_font; | ||||
| 
 | ||||
| std::vector <std::shared_ptr<ConfigOptionsGroup>> m_optgroups; | ||||
| double		m_brim_width = 0.0; | ||||
| size_t		m_label_width = 100; | ||||
|  | @ -154,53 +148,13 @@ bool		g_show_manifold_warning_icon = false; | |||
| 
 | ||||
| PreviewIface* g_preview = nullptr;  | ||||
| 
 | ||||
| static void init_label_colours() | ||||
| { | ||||
| 	auto luma = get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | ||||
| 	if (luma >= 128) { | ||||
| 		g_color_label_modified = wxColour(252, 77, 1); | ||||
| 		g_color_label_sys = wxColour(26, 132, 57); | ||||
| 	} else { | ||||
| 		g_color_label_modified = wxColour(253, 111, 40); | ||||
| 		g_color_label_sys = wxColour(115, 220, 103); | ||||
| 	} | ||||
| 	g_color_label_default = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); | ||||
| } | ||||
| 
 | ||||
| void update_label_colours_from_appconfig() | ||||
| { | ||||
| 	if (g_AppConfig->has("label_clr_sys")){ | ||||
| 		auto str = g_AppConfig->get("label_clr_sys"); | ||||
| 		if (str != "") | ||||
| 			g_color_label_sys = wxColour(str); | ||||
| 	} | ||||
| 	 | ||||
| 	if (g_AppConfig->has("label_clr_modified")){ | ||||
| 		auto str = g_AppConfig->get("label_clr_modified"); | ||||
| 		if (str != "") | ||||
| 			g_color_label_modified = wxColour(str); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void init_fonts() | ||||
| { | ||||
| 	g_small_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); | ||||
| 	g_bold_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold(); | ||||
| #ifdef __WXMAC__ | ||||
| 	g_small_font.SetPointSize(11); | ||||
| 	g_bold_font.SetPointSize(13); | ||||
| #endif /*__WXMAC__*/ | ||||
| } | ||||
| 
 | ||||
| static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); } | ||||
| // static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); }
 | ||||
| 
 | ||||
| void set_wxapp(wxApp *app) | ||||
| { | ||||
|     g_wxApp = app; | ||||
|     // Let the libslic3r know the callback, which will translate messages on demand.
 | ||||
| 	Slic3r::I18N::set_translate_callback(libslic3r_translate_callback); | ||||
|     init_label_colours(); | ||||
| 	init_fonts(); | ||||
| // 	Slic3r::I18N::set_translate_callback(libslic3r_translate_callback);
 | ||||
| } | ||||
| 
 | ||||
| void set_main_frame(wxFrame *main_frame) | ||||
|  | @ -269,8 +223,8 @@ void set_objects_from_perl(	wxWindow* parent, | |||
|     g_buttons.push_back(btn_send_gcode); | ||||
| 
 | ||||
|     // Update font style for buttons
 | ||||
|     for (auto btn : g_buttons) | ||||
|         btn->SetFont(bold_font()); | ||||
| //     for (auto btn : g_buttons)
 | ||||
| //         btn->SetFont(bold_font());
 | ||||
| 
 | ||||
| 	g_manifold_warning_icon = manifold_warning_icon; | ||||
| } | ||||
|  | @ -298,26 +252,6 @@ void set_objects_list_sizer(wxBoxSizer *objects_list_sizer){ | |||
| 	g_object_list_sizer = objects_list_sizer; | ||||
| } | ||||
| 
 | ||||
| std::vector<Tab *>& get_tabs_list() | ||||
| { | ||||
| 	return g_tabs_list; | ||||
| } | ||||
| 
 | ||||
| bool checked_tab(Tab* tab) | ||||
| { | ||||
| 	bool ret = true; | ||||
| 	if (find(g_tabs_list.begin(), g_tabs_list.end(), tab) == g_tabs_list.end()) | ||||
| 		ret = false; | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| void delete_tab_from_list(Tab* tab) | ||||
| { | ||||
| 	std::vector<Tab *>::iterator itr = find(g_tabs_list.begin(), g_tabs_list.end(), tab); | ||||
| 	if (itr != g_tabs_list.end()) | ||||
| 		g_tabs_list.erase(itr); | ||||
| } | ||||
| 
 | ||||
| bool select_language(wxArrayString & names, | ||||
| 	wxArrayLong & identifiers) | ||||
| { | ||||
|  | @ -423,31 +357,32 @@ void get_installed_languages(wxArrayString & names, | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| enum ConfigMenuIDs { | ||||
| 	ConfigMenuWizard, | ||||
| 	ConfigMenuSnapshots, | ||||
| 	ConfigMenuTakeSnapshot, | ||||
| 	ConfigMenuUpdate, | ||||
| 	ConfigMenuPreferences, | ||||
| 	ConfigMenuModeSimple, | ||||
| 	ConfigMenuModeExpert, | ||||
| 	ConfigMenuLanguage, | ||||
| 	ConfigMenuFlashFirmware, | ||||
| 	ConfigMenuCnt, | ||||
| }; | ||||
| // enum ConfigMenuIDs {
 | ||||
| // 	ConfigMenuWizard,
 | ||||
| // 	ConfigMenuSnapshots,
 | ||||
| // 	ConfigMenuTakeSnapshot,
 | ||||
| // 	ConfigMenuUpdate,
 | ||||
| // 	ConfigMenuPreferences,
 | ||||
| // 	ConfigMenuModeSimple,
 | ||||
| // 	ConfigMenuModeExpert,
 | ||||
| // 	ConfigMenuLanguage,
 | ||||
| // 	ConfigMenuFlashFirmware,
 | ||||
| // 	ConfigMenuCnt,
 | ||||
| // };
 | ||||
| 
 | ||||
| // #ys_FIXME_for_delete	
 | ||||
| ConfigMenuIDs get_view_mode() | ||||
| { | ||||
| 	if (!g_AppConfig->has("view_mode")) | ||||
| 		return ConfigMenuModeSimple; | ||||
| 
 | ||||
| 	const auto mode = g_AppConfig->get("view_mode"); | ||||
| 	return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple; | ||||
| } | ||||
| // ConfigMenuIDs get_view_mode()
 | ||||
| // {
 | ||||
| // 	if (!g_AppConfig->has("view_mode"))
 | ||||
| // 		return ConfigMenuModeSimple;
 | ||||
| // 
 | ||||
| // 	const auto mode = g_AppConfig->get("view_mode");
 | ||||
| // 	return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple;
 | ||||
| // }
 | ||||
| 
 | ||||
| static wxString dots("…", wxConvUTF8); | ||||
| // #ys_FIXME_for_delete
 | ||||
| /*
 | ||||
| void add_config_menu(wxMenuBar *menu, int event_preferences_changed, int event_language_change) | ||||
| { | ||||
|     auto local_menu = new wxMenu(); | ||||
|  | @ -551,7 +486,7 @@ void add_menus(wxMenuBar *menu, int event_preferences_changed, int event_languag | |||
| { | ||||
|     add_config_menu(menu, event_preferences_changed, event_language_change); | ||||
| } | ||||
| 
 | ||||
| */ | ||||
| void open_model(wxWindow *parent, wxArrayString& input_files){ | ||||
| 	auto dialog = new wxFileDialog(parent /*? parent : GetTopWindow()*/,  | ||||
|         _(L("Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):")), | ||||
|  | @ -569,6 +504,7 @@ void open_model(wxWindow *parent, wxArrayString& input_files){ | |||
| // 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.
 | ||||
| // #ys_FIXME_for_delete
 | ||||
| /*
 | ||||
| bool check_unsaved_changes() | ||||
| { | ||||
| 	std::string dirty; | ||||
|  | @ -588,7 +524,7 @@ bool check_unsaved_changes() | |||
| 		wxICON_QUESTION | wxYES_NO | wxNO_DEFAULT); | ||||
| 	return dialog->ShowModal() == wxID_YES; | ||||
| } | ||||
| 
 | ||||
| */ | ||||
| bool config_wizard_startup(bool app_config_exists) | ||||
| { | ||||
| 	if (! app_config_exists || g_PresetBundle->printers.size() <= 1) { | ||||
|  | @ -610,7 +546,7 @@ bool config_wizard_startup(bool app_config_exists) | |||
| void config_wizard(int reason) | ||||
| { | ||||
|     // Exit wizard if there are unsaved changes and the user cancels the action.
 | ||||
|     if (! check_unsaved_changes()) | ||||
|     if (! wxGetApp().check_unsaved_changes()) | ||||
|     	return; | ||||
| 
 | ||||
| 	try { | ||||
|  | @ -622,7 +558,7 @@ void config_wizard(int reason) | |||
| 	} | ||||
| 
 | ||||
| 	// Load the currently selected preset into the GUI, update the preset selection box.
 | ||||
| 	load_current_presets(); | ||||
| 	wxGetApp().load_current_presets(); | ||||
| } | ||||
| 
 | ||||
| void open_preferences_dialog(int event_preferences) | ||||
|  | @ -631,6 +567,8 @@ void open_preferences_dialog(int event_preferences) | |||
| 	dlg->ShowModal(); | ||||
| } | ||||
| 
 | ||||
| // #ys_FIXME_for_delete
 | ||||
| /*
 | ||||
| void create_preset_tabs(int event_value_change, int event_presets_changed) | ||||
| {	 | ||||
| 	update_label_colours_from_appconfig(); | ||||
|  | @ -639,7 +577,7 @@ void create_preset_tabs(int event_value_change, int event_presets_changed) | |||
| 	add_created_tab(new TabSLAMaterial  (g_wxTabPanel), event_value_change, event_presets_changed); | ||||
| 	add_created_tab(new TabPrinter	    (g_wxTabPanel), event_value_change, event_presets_changed); | ||||
| } | ||||
| 
 | ||||
| */ | ||||
| std::vector<PresetTab> preset_tabs = { | ||||
|     { "print",        nullptr, ptFFF }, | ||||
|     { "filament",     nullptr, ptFFF }, | ||||
|  | @ -790,37 +728,6 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt | |||
| 		int i = 0;//no reason, just experiment
 | ||||
| 	} | ||||
| } | ||||
| // #ys_FIXME_for_delete
 | ||||
| void add_created_tab(Tab* panel, int event_value_change, int event_presets_changed) | ||||
| { | ||||
| 	panel->create_preset_tab(g_PresetBundle); | ||||
| 
 | ||||
| 	// Load the currently selected preset into the GUI, update the preset selection box.
 | ||||
| 	panel->load_current_preset(); | ||||
| 
 | ||||
|     panel->set_event_value_change(wxEventType(event_value_change)); | ||||
|     panel->set_event_presets_changed(wxEventType(event_presets_changed)); | ||||
| 
 | ||||
|     const wxString& tab_name = panel->GetName(); | ||||
|     bool add_panel = true; | ||||
| 
 | ||||
|     auto it = std::find_if( preset_tabs.begin(), preset_tabs.end(),  | ||||
|                            [tab_name](PresetTab& tab){return tab.name == tab_name; }); | ||||
|     if (it != preset_tabs.end()) { | ||||
|         it->panel = panel; | ||||
|         add_panel = it->technology == g_PresetBundle->printers.get_edited_preset().printer_technology(); | ||||
|     } | ||||
| 
 | ||||
|     if (add_panel) | ||||
| 	    g_wxTabPanel->AddPage(panel, panel->title()); | ||||
| } | ||||
| 
 | ||||
| void load_current_presets() | ||||
| { | ||||
| 	for (Tab *tab : g_tabs_list) { | ||||
| 		tab->load_current_preset(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void show_error(wxWindow* parent, const wxString& message) { | ||||
| 	ErrorDialog msg(parent, message); | ||||
|  | @ -860,60 +767,6 @@ wxApp* get_app(){ | |||
| 	return g_wxApp; | ||||
| } | ||||
| 
 | ||||
| PresetBundle* get_preset_bundle() | ||||
| { | ||||
| 	return g_PresetBundle; | ||||
| } | ||||
| 
 | ||||
| const wxColour& get_label_clr_modified() { | ||||
| 	return g_color_label_modified; | ||||
| } | ||||
| 
 | ||||
| const wxColour& get_label_clr_sys() { | ||||
| 	return g_color_label_sys; | ||||
| } | ||||
| 
 | ||||
| void set_label_clr_modified(const wxColour& clr) { | ||||
| 	g_color_label_modified = clr; | ||||
| 	auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); | ||||
| 	std::string str = clr_str.ToStdString(); | ||||
| 	g_AppConfig->set("label_clr_modified", str); | ||||
| 	g_AppConfig->save(); | ||||
| } | ||||
| 
 | ||||
| void set_label_clr_sys(const wxColour& clr) { | ||||
| 	g_color_label_sys = clr; | ||||
| 	auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); | ||||
| 	std::string str = clr_str.ToStdString(); | ||||
| 	g_AppConfig->set("label_clr_sys", str); | ||||
| 	g_AppConfig->save(); | ||||
| } | ||||
| 
 | ||||
| const wxFont& small_font(){ | ||||
| 	return g_small_font; | ||||
| } | ||||
| 
 | ||||
| const wxFont& bold_font(){ | ||||
| 	return g_bold_font; | ||||
| } | ||||
| 
 | ||||
| const wxColour& get_label_clr_default() { | ||||
| 	return g_color_label_default; | ||||
| } | ||||
| 
 | ||||
| unsigned get_colour_approx_luma(const wxColour &colour) | ||||
| { | ||||
| 	double r = colour.Red(); | ||||
| 	double g = colour.Green(); | ||||
| 	double b = colour.Blue(); | ||||
| 
 | ||||
| 	return std::round(std::sqrt( | ||||
| 		r * r * .241 + | ||||
| 		g * g * .691 + | ||||
| 		b * b * .068 | ||||
| 	)); | ||||
| } | ||||
| 
 | ||||
| wxWindow* get_right_panel(){ | ||||
| 	return g_right_panel; | ||||
| } | ||||
|  | @ -1199,7 +1052,7 @@ void update_mode() | |||
| { | ||||
|     wxWindowUpdateLocker noUpdates(g_right_panel->GetParent()); | ||||
| 
 | ||||
| 	ConfigMenuIDs mode = get_view_mode(); | ||||
|     ConfigMenuIDs mode = wxGetApp().get_view_mode(); | ||||
| 
 | ||||
| 	g_object_list_sizer->Show(mode == ConfigMenuModeExpert); | ||||
| 	show_info_sizer(mode == ConfigMenuModeExpert); | ||||
|  | @ -1216,7 +1069,7 @@ void update_mode() | |||
| } | ||||
| 
 | ||||
| bool is_expert_mode(){ | ||||
| 	return get_view_mode() == ConfigMenuModeExpert; | ||||
|     return wxGetApp().get_view_mode() == ConfigMenuModeExpert; | ||||
| } | ||||
| 
 | ||||
| ConfigOptionsGroup* get_optgroup(size_t i) | ||||
|  |  | |||
|  | @ -127,26 +127,14 @@ 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(); | ||||
| 
 | ||||
| AppControllerPtr get_appctl(); | ||||
| void             set_cli_appctl(); | ||||
| void             set_gui_appctl(); | ||||
| 
 | ||||
| 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(); | ||||
|  | @ -159,7 +147,7 @@ extern void add_menus(wxMenuBar *menu, int event_preferences_changed, int event_ | |||
| 
 | ||||
| // 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(); | ||||
| // extern bool check_unsaved_changes();
 | ||||
| 
 | ||||
| // Checks if configuration wizard needs to run, calls config_wizard if so.
 | ||||
| // Returns whether the Wizard ran.
 | ||||
|  | @ -173,19 +161,16 @@ extern void config_wizard(int run_reason); | |||
| 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); | ||||
| // 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); | ||||
| // 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); | ||||
|  | @ -209,10 +194,6 @@ 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.
 | ||||
|  |  | |||
|  | @ -25,10 +25,13 @@ | |||
| #include "FirmwareDialog.hpp" | ||||
| #include "Preferences.hpp" | ||||
| #include "Tab.hpp" | ||||
| #include <I18N.hpp> | ||||
| 
 | ||||
| namespace Slic3r { | ||||
| namespace GUI { | ||||
| 
 | ||||
| static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); } | ||||
| 
 | ||||
| IMPLEMENT_APP(GUI_App) | ||||
| bool GUI_App::OnInit() | ||||
| { | ||||
|  | @ -42,13 +45,12 @@ bool GUI_App::OnInit() | |||
|     // Windows : "C:\Users\username\AppData\Roaming\Slic3r" or "C:\Documents and Settings\username\Application Data\Slic3r"
 | ||||
|     // Mac : "~/Library/Application Support/Slic3r"
 | ||||
|     if (data_dir().empty()) | ||||
|         Slic3r::set_data_dir(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()); | ||||
|     //     set_wxapp(this); // #ys_FIXME
 | ||||
|         set_data_dir(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()); | ||||
| 
 | ||||
|     app_config = new AppConfig(); | ||||
|     //     set_app_config(app_config);// #ys_FIXME
 | ||||
|     set_app_config(app_config); | ||||
|     preset_bundle = new PresetBundle(); | ||||
|     set_preset_bundle(preset_bundle); // #ys_FIXME
 | ||||
|     set_preset_bundle(preset_bundle); | ||||
| 
 | ||||
|     // just checking for existence of Slic3r::data_dir is not enough : it may be an empty directory
 | ||||
|     // supplied as argument to --datadir; in that case we should still run the wizard
 | ||||
|  | @ -62,11 +64,11 @@ bool GUI_App::OnInit() | |||
|     app_conf_exists = app_config->exists(); | ||||
|     // load settings
 | ||||
|     if (app_conf_exists) app_config->load(); | ||||
|     app_config->set("version", "Slic3r_VERSION"/*Slic3r::VERSION*/); | ||||
|     app_config->set("version", SLIC3R_VERSION); | ||||
|     app_config->save(); | ||||
| 
 | ||||
| //     preset_updater = new PresetUpdater();
 | ||||
| //     set_preset_updater(preset_updater); // #ys_FIXME
 | ||||
|     preset_updater = new PresetUpdater(); | ||||
|     set_preset_updater(preset_updater); | ||||
| 
 | ||||
|     load_language(); | ||||
| 
 | ||||
|  | @ -80,8 +82,14 @@ bool GUI_App::OnInit() | |||
|     //         show_error(undef, $@);
 | ||||
|     //     }
 | ||||
| 
 | ||||
|     // Let the libslic3r know the callback, which will translate messages on demand.
 | ||||
|     Slic3r::I18N::set_translate_callback(libslic3r_translate_callback); | ||||
|     // initialize label colors and fonts
 | ||||
|     init_label_colours(); | ||||
|     init_fonts(); | ||||
| 
 | ||||
|     // application frame
 | ||||
|     //     print STDERR "Creating main frame...\n";
 | ||||
|     std::cerr << "Creating main frame..." << std::endl; | ||||
|     //     wxImage::FindHandlerType(wxBITMAP_TYPE_PNG) ||
 | ||||
|     wxImage::AddHandler(new wxPNGHandler()); | ||||
|     mainframe = new Slic3r::GUI::MainFrame(no_plater, false); | ||||
|  | @ -157,9 +165,77 @@ bool GUI_App::OnInit() | |||
|     return true; | ||||
| } | ||||
| 
 | ||||
| unsigned GUI_App::get_colour_approx_luma(const wxColour &colour) | ||||
| { | ||||
|     double r = colour.Red(); | ||||
|     double g = colour.Green(); | ||||
|     double b = colour.Blue(); | ||||
| 
 | ||||
|     return std::round(std::sqrt( | ||||
|         r * r * .241 + | ||||
|         g * g * .691 + | ||||
|         b * b * .068 | ||||
|         )); | ||||
| } | ||||
| 
 | ||||
| void GUI_App::init_label_colours() | ||||
| { | ||||
|     auto luma = get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | ||||
|     if (luma >= 128) { | ||||
|         m_color_label_modified = wxColour(252, 77, 1); | ||||
|         m_color_label_sys = wxColour(26, 132, 57); | ||||
|     } | ||||
|     else { | ||||
|         m_color_label_modified = wxColour(253, 111, 40); | ||||
|         m_color_label_sys = wxColour(115, 220, 103); | ||||
|     } | ||||
|     m_color_label_default = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); | ||||
| } | ||||
| 
 | ||||
| void GUI_App::update_label_colours_from_appconfig() | ||||
| { | ||||
|     if (app_config->has("label_clr_sys")){ | ||||
|         auto str = app_config->get("label_clr_sys"); | ||||
|         if (str != "") | ||||
|             m_color_label_sys = wxColour(str); | ||||
|     } | ||||
| 
 | ||||
|     if (app_config->has("label_clr_modified")){ | ||||
|         auto str = app_config->get("label_clr_modified"); | ||||
|         if (str != "") | ||||
|             m_color_label_modified = wxColour(str); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void GUI_App::init_fonts() | ||||
| { | ||||
|     m_small_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); | ||||
|     m_bold_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold(); | ||||
| #ifdef __WXMAC__ | ||||
|     m_small_font.SetPointSize(11); | ||||
|     m_bold_font.SetPointSize(13); | ||||
| #endif /*__WXMAC__*/ | ||||
| } | ||||
| 
 | ||||
| void GUI_App::set_label_clr_modified(const wxColour& clr) { | ||||
|     m_color_label_modified = clr; | ||||
|     auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); | ||||
|     std::string str = clr_str.ToStdString(); | ||||
|     app_config->set("label_clr_modified", str); | ||||
|     app_config->save(); | ||||
| } | ||||
| 
 | ||||
| void GUI_App::set_label_clr_sys(const wxColour& clr) { | ||||
|     m_color_label_sys = clr; | ||||
|     auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); | ||||
|     std::string str = clr_str.ToStdString(); | ||||
|     app_config->set("label_clr_sys", str); | ||||
|     app_config->save(); | ||||
| } | ||||
| 
 | ||||
| void GUI_App::recreate_GUI() | ||||
| { | ||||
| //     print STDERR "recreate_GUI\n";
 | ||||
|     std::cerr << "recreate_GUI" << std::endl; | ||||
| 
 | ||||
|     auto topwindow = GetTopWindow(); | ||||
|     mainframe = new Slic3r::GUI::MainFrame(no_plater,false); | ||||
|  | @ -478,6 +554,29 @@ bool GUI_App::check_unsaved_changes() | |||
|     return dialog->ShowModal() == wxID_YES; | ||||
| } | ||||
| 
 | ||||
| bool GUI_App::checked_tab(Tab* tab) | ||||
| { | ||||
|     bool ret = true; | ||||
|     if (find(tabs_list.begin(), tabs_list.end(), tab) == tabs_list.end()) | ||||
|         ret = false; | ||||
|     return ret; | ||||
| } | ||||
| 
 | ||||
| void GUI_App::delete_tab_from_list(Tab* tab) | ||||
| { | ||||
|     std::vector<Tab *>::iterator itr = find(tabs_list.begin(), tabs_list.end(), tab); | ||||
|     if (itr != tabs_list.end()) | ||||
|         tabs_list.erase(itr); | ||||
| } | ||||
| 
 | ||||
| // Update UI / Tabs to reflect changes in the currently loaded presets
 | ||||
| void GUI_App::load_current_presets() | ||||
| { | ||||
|     for (Tab *tab : tabs_list) { | ||||
|         tab->load_current_preset(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| wxNotebook* GUI_App::tab_panel() const  | ||||
| { | ||||
|     return mainframe->m_tabpanel; | ||||
|  |  | |||
|  | @ -8,6 +8,8 @@ | |||
| // #include "GUI.hpp"
 | ||||
| 
 | ||||
| #include <wx/app.h> | ||||
| #include <wx/colour.h> | ||||
| #include <wx/font.h> | ||||
| 
 | ||||
| #include <mutex> | ||||
| #include <stack> | ||||
|  | @ -50,10 +52,35 @@ class GUI_App : public wxApp | |||
|     // callbacks registered to run during idle event.
 | ||||
|     std::stack<std::function<void()>>    m_cb{}; | ||||
| 
 | ||||
|     wxColour        m_color_label_modified; | ||||
|     wxColour        m_color_label_sys; | ||||
|     wxColour        m_color_label_default; | ||||
| 
 | ||||
|     wxFont		    m_small_font; | ||||
|     wxFont		    m_bold_font; | ||||
| 
 | ||||
|     // #ys_FIXME
 | ||||
| //     std::vector<Tab *> g_tabs_list;
 | ||||
| //     wxLocale*	g_wxLocale{ nullptr };
 | ||||
| 
 | ||||
| public: | ||||
|     bool            OnInit() override; | ||||
|     GUI_App() : wxApp() {} | ||||
| 
 | ||||
|     unsigned        get_colour_approx_luma(const wxColour &colour); | ||||
|     void            init_label_colours(); | ||||
|     void            update_label_colours_from_appconfig(); | ||||
|     void            init_fonts(); | ||||
|     void            set_label_clr_modified(const wxColour& clr); | ||||
|     void            set_label_clr_sys(const wxColour& clr); | ||||
| 
 | ||||
|     const wxColour& get_label_clr_modified(){ return m_color_label_modified; } | ||||
|     const wxColour& get_label_clr_sys()     { return m_color_label_sys; } | ||||
|     const wxColour& get_label_clr_default() { return m_color_label_default; } | ||||
| 
 | ||||
|     const wxFont&   small_font()            { return m_small_font; } | ||||
|     const wxFont&   bold_font()             { return m_bold_font; } | ||||
| 
 | ||||
|     void            recreate_GUI(); | ||||
|     void            system_info(); | ||||
|     void            open_model(wxWindow *parent, wxArrayString& input_files); | ||||
|  | @ -82,7 +109,10 @@ public: | |||
|     ConfigMenuIDs   get_view_mode(); | ||||
|     void            add_config_menu(wxMenuBar *menu); | ||||
|     bool            check_unsaved_changes(); | ||||
|     bool            checked_tab(Tab* tab); | ||||
|     void            delete_tab_from_list(Tab* tab); | ||||
|     //     Tab*            get_tab(const std::string& name);
 | ||||
|     void            load_current_presets(); | ||||
| 
 | ||||
|     AppConfig*      app_config{ nullptr }; | ||||
|     PresetBundle*   preset_bundle{ nullptr }; | ||||
|  |  | |||
|  | @ -365,13 +365,13 @@ wxBoxSizer* create_edit_object_buttons(wxWindow* win) | |||
| 	} | ||||
| 	m_sizer_part_buttons->Show(false); | ||||
| 
 | ||||
| 	btn_load_part->SetFont(Slic3r::GUI::small_font()); | ||||
| 	btn_load_modifier->SetFont(Slic3r::GUI::small_font()); | ||||
| 	btn_load_lambda_modifier->SetFont(Slic3r::GUI::small_font()); | ||||
| 	btn_delete->SetFont(Slic3r::GUI::small_font()); | ||||
| 	btn_split->SetFont(Slic3r::GUI::small_font()); | ||||
| 	m_btn_move_up->SetFont(Slic3r::GUI::small_font()); | ||||
| 	m_btn_move_down->SetFont(Slic3r::GUI::small_font()); | ||||
| 	btn_load_part->SetFont(wxGetApp().small_font()); | ||||
| 	btn_load_modifier->SetFont(wxGetApp().small_font()); | ||||
| 	btn_load_lambda_modifier->SetFont(wxGetApp().small_font()); | ||||
| 	btn_delete->SetFont(wxGetApp().small_font()); | ||||
| 	btn_split->SetFont(wxGetApp().small_font()); | ||||
| 	m_btn_move_up->SetFont(wxGetApp().small_font()); | ||||
| 	m_btn_move_down->SetFont(wxGetApp().small_font()); | ||||
| 
 | ||||
| 	sizer->Add(m_sizer_object_buttons, 0, wxEXPAND | wxLEFT, 20); | ||||
| 	sizer->Add(m_sizer_part_buttons, 0, wxEXPAND | wxLEFT, 20); | ||||
|  |  | |||
|  | @ -276,7 +276,7 @@ Tab* MainFrame::get_preset_tab(const std::string& name) | |||
| 
 | ||||
| void MainFrame::create_preset_tabs() | ||||
| { | ||||
| //    update_label_colours_from_appconfig();
 | ||||
|     wxGetApp().update_label_colours_from_appconfig(); | ||||
|     add_created_tab(new TabPrint(m_tabpanel)); | ||||
|     add_created_tab(new TabFilament(m_tabpanel)); | ||||
|     add_created_tab(new TabSLAMaterial(m_tabpanel)); | ||||
|  |  | |||
|  | @ -14,6 +14,7 @@ | |||
| #include "libslic3r/libslic3r.h" | ||||
| 
 | ||||
| #include "Field.hpp" | ||||
| #include "GUI_App.hpp" | ||||
| 
 | ||||
| // Translate the ifdef 
 | ||||
| #ifdef __WXOSX__ | ||||
|  | @ -163,7 +164,7 @@ public: | |||
| 					staticbox(title!=""), m_flag(flag), extra_column(extra_clmn){ | ||||
|         if (staticbox) { | ||||
|             stb = new wxStaticBox(_parent, wxID_ANY, title); | ||||
|             stb->SetFont(bold_font()); | ||||
|             stb->SetFont(wxGetApp().bold_font()); | ||||
|         } | ||||
|         sizer = (staticbox ? new wxStaticBoxSizer(stb, wxVERTICAL) : new wxBoxSizer(wxVERTICAL)); | ||||
|         auto num_columns = 1U; | ||||
|  |  | |||
|  | @ -81,7 +81,7 @@ private: | |||
| ObjectInfo::ObjectInfo(wxWindow *parent) : | ||||
|     wxStaticBoxSizer(new wxStaticBox(parent, wxID_ANY, _(L("Info"))), wxVERTICAL) | ||||
| { | ||||
|     // GetStaticBox()->SetFont(GUI::bold_font());   // XXX: ?
 | ||||
|     GetStaticBox()->SetFont(wxGetApp().bold_font()); | ||||
| 
 | ||||
|     auto *grid_sizer = new wxFlexGridSizer(4, 5, 5); | ||||
|     grid_sizer->SetFlexibleDirection(wxHORIZONTAL); | ||||
|  | @ -90,9 +90,9 @@ ObjectInfo::ObjectInfo(wxWindow *parent) : | |||
| 
 | ||||
|     auto init_info_label = [parent, grid_sizer](wxStaticText **info_label, wxString text_label) { | ||||
|         auto *text = new wxStaticText(parent, wxID_ANY, text_label); | ||||
|         text->SetFont(GUI::small_font()); | ||||
|         text->SetFont(wxGetApp().small_font()); | ||||
|         *info_label = new wxStaticText(parent, wxID_ANY, ""); | ||||
|         (*info_label)->SetFont(GUI::small_font()); | ||||
|         (*info_label)->SetFont(wxGetApp().small_font()); | ||||
|         grid_sizer->Add(text, 0); | ||||
|         grid_sizer->Add(*info_label, 0); | ||||
|     }; | ||||
|  | @ -103,9 +103,9 @@ ObjectInfo::ObjectInfo(wxWindow *parent) : | |||
|     init_info_label(&info_materials, _(L("Materials"))); | ||||
| 
 | ||||
|     auto *info_manifold_text = new wxStaticText(parent, wxID_ANY, _(L("Manifold"))); | ||||
|     info_manifold_text->SetFont(GUI::small_font()); | ||||
|     info_manifold_text->SetFont(wxGetApp().small_font()); | ||||
|     info_manifold = new wxStaticText(parent, wxID_ANY, ""); | ||||
|     info_manifold->SetFont(GUI::small_font()); | ||||
|     info_manifold->SetFont(wxGetApp().small_font()); | ||||
|     wxBitmap bitmap(GUI::from_u8(Slic3r::var("error.png")), wxBITMAP_TYPE_PNG); | ||||
|     manifold_warning_icon = new wxStaticBitmap(parent, wxID_ANY, bitmap); | ||||
|     auto *sizer_manifold = new wxBoxSizer(wxHORIZONTAL); | ||||
|  | @ -134,18 +134,17 @@ private: | |||
| SlicedInfo::SlicedInfo(wxWindow *parent) : | ||||
|     wxStaticBoxSizer(new wxStaticBox(parent, wxID_ANY, _(L("Sliced Info"))), wxVERTICAL) | ||||
| { | ||||
|     // GetStaticBox()->SetFont(GUI::bold_font());   // XXX: ?
 | ||||
|     GetStaticBox()->SetFont(wxGetApp().bold_font()); | ||||
| 
 | ||||
|     auto *grid_sizer = new wxFlexGridSizer(2, 5, 5); | ||||
|     grid_sizer->SetFlexibleDirection(wxHORIZONTAL); | ||||
|     grid_sizer->AddGrowableCol(1, 1); | ||||
|     grid_sizer->AddGrowableCol(3, 1); | ||||
| 
 | ||||
|     auto init_info_label = [parent, grid_sizer](wxStaticText *&info_label, wxString text_label) { | ||||
|         auto *text = new wxStaticText(parent, wxID_ANY, text_label); | ||||
|         text->SetFont(GUI::small_font()); | ||||
|         text->SetFont(wxGetApp().small_font()); | ||||
|         info_label = new wxStaticText(parent, wxID_ANY, "N/A"); | ||||
|         info_label->SetFont(GUI::small_font()); | ||||
|         info_label->SetFont(wxGetApp().small_font()); | ||||
|         grid_sizer->Add(text, 0); | ||||
|         grid_sizer->Add(info_label, 0); | ||||
|     }; | ||||
|  | @ -231,7 +230,6 @@ Sidebar::Sidebar(wxWindow *parent) | |||
|     : wxPanel(parent), p(new priv) | ||||
| { | ||||
|     p->scrolled = new wxScrolledWindow(this); | ||||
|     p->scrolled->SetScrollbars(0, 1, 1, 1);   // XXX
 | ||||
| 
 | ||||
|     // The preset chooser
 | ||||
|     p->sizer_presets = new wxFlexGridSizer(4, 2, 1, 2); | ||||
|  | @ -240,10 +238,10 @@ Sidebar::Sidebar(wxWindow *parent) | |||
|     p->sizer_filaments = new wxBoxSizer(wxVERTICAL); | ||||
| 
 | ||||
|     auto init_combo = [this](PresetComboBox **combo, wxString label, Preset::Type preset_type, bool filament) { | ||||
|         auto *text = new wxStaticText(this, wxID_ANY, label); | ||||
|         text->SetFont(GUI::small_font()); | ||||
|         auto *text = new wxStaticText(p->scrolled, wxID_ANY, label); | ||||
|         text->SetFont(wxGetApp().small_font()); | ||||
|         // combo = new wxBitmapComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
 | ||||
|         *combo = new PresetComboBox(this, preset_type); | ||||
|         *combo = new PresetComboBox(p->scrolled, preset_type); | ||||
| 
 | ||||
|         auto *sizer_presets = this->p->sizer_presets; | ||||
|         auto *sizer_filaments = this->p->sizer_filaments; | ||||
|  | @ -262,13 +260,15 @@ Sidebar::Sidebar(wxWindow *parent) | |||
|     init_combo(&p->combo_sla_material, _(L("SLA material")), Preset::TYPE_SLA_MATERIAL, false); | ||||
|     init_combo(&p->combo_printer, _(L("Printer")), Preset::TYPE_PRINTER, false); | ||||
| 
 | ||||
|     p->sizer_presets->Layout(); | ||||
| 
 | ||||
|     // Frequently changed parameters
 | ||||
|     p->sizer_params = new wxBoxSizer(wxVERTICAL); | ||||
|     // GUI::add_frequently_changed_parameters(this, p->sizer_params, p->sizer_presets);
 | ||||
|     GUI::add_frequently_changed_parameters(p->scrolled, p->sizer_params, p->sizer_presets); | ||||
| 
 | ||||
|     // Buttons in the scrolled area
 | ||||
|     wxBitmap arrow_up(GUI::from_u8(Slic3r::var("brick_go.png")), wxBITMAP_TYPE_PNG); | ||||
|     p->btn_send_gcode = new wxButton(this, wxID_ANY, _(L("Send to printer"))); | ||||
|     p->btn_send_gcode = new wxButton(p->scrolled, wxID_ANY, _(L("Send to printer"))); | ||||
|     p->btn_send_gcode->SetBitmap(arrow_up); | ||||
|     p->btn_send_gcode->Hide(); | ||||
|     auto *btns_sizer_scrolled = new wxBoxSizer(wxHORIZONTAL); | ||||
|  | @ -276,32 +276,37 @@ Sidebar::Sidebar(wxWindow *parent) | |||
|     btns_sizer_scrolled->Add(p->btn_send_gcode); | ||||
| 
 | ||||
|     // Info boxes
 | ||||
|     p->object_info = new ObjectInfo(this); | ||||
|     p->sliced_info = new SlicedInfo(this); | ||||
|     p->object_info = new ObjectInfo(p->scrolled); | ||||
|     p->sliced_info = new SlicedInfo(p->scrolled); | ||||
| 
 | ||||
|     // Sizer in the scrolled area
 | ||||
|     auto *scrolled_sizer = new wxBoxSizer(wxVERTICAL); | ||||
|     scrolled_sizer->SetMinSize(320, -1); | ||||
|     p->scrolled->SetSizer(scrolled_sizer); | ||||
|     p->scrolled->SetScrollbars(0, 1, 1, 1); | ||||
|     std::cerr << "scrolled_sizer: " << scrolled_sizer << std::endl; | ||||
|     scrolled_sizer->Add(p->sizer_presets, 0, wxEXPAND | wxLEFT, 2); | ||||
|     scrolled_sizer->Add(p->object_info, 1, wxEXPAND); | ||||
|     scrolled_sizer->Add(p->sizer_params, 1, wxEXPAND); | ||||
|     scrolled_sizer->Add(p->object_info, 0, wxEXPAND | wxTOP | wxLEFT, 20); | ||||
|     scrolled_sizer->Add(btns_sizer_scrolled, 0, wxEXPAND, 0); | ||||
|     scrolled_sizer->Add(p->sliced_info, 0, wxEXPAND); | ||||
|     scrolled_sizer->Add(p->sliced_info, 0, wxEXPAND | wxTOP | wxLEFT, 20); | ||||
| 
 | ||||
|     // Buttons underneath the scrolled area
 | ||||
|     p->btn_export_gcode = new wxButton(this, wxID_ANY, _(L("Export G-code…"))); | ||||
|     p->btn_export_gcode->SetFont(wxGetApp().bold_font()); | ||||
|     p->btn_reslice = new wxButton(this, wxID_ANY, _(L("Slice now"))); | ||||
|     p->btn_reslice->SetFont(wxGetApp().bold_font()); | ||||
| 
 | ||||
|     auto *btns_sizer = new wxBoxSizer(wxVERTICAL); | ||||
|     std::cerr << "btns_sizer: " << btns_sizer << std::endl; | ||||
|     btns_sizer->Add(p->btn_reslice); | ||||
|     btns_sizer->Add(p->btn_export_gcode); | ||||
|     btns_sizer->Add(p->btn_reslice, 0, wxEXPAND | wxTOP, 5); | ||||
|     btns_sizer->Add(p->btn_export_gcode, 0, wxEXPAND | wxTOP, 5); | ||||
| 
 | ||||
|     auto *sizer = new wxBoxSizer(wxVERTICAL); | ||||
|     std::cerr << "sizer: " << sizer << std::endl; | ||||
|     sizer->Add(scrolled_sizer); | ||||
|     sizer->Add(btns_sizer); | ||||
|     sizer->Add(p->scrolled, 1, wxEXPAND | wxTOP, 5); | ||||
|     sizer->Add(btns_sizer, 0, wxEXPAND | wxLEFT, 20); | ||||
|     SetSizer(sizer); | ||||
|     SetMinSize(wxSize(320, -1)); | ||||
| } | ||||
| 
 | ||||
| Sidebar::~Sidebar() {} | ||||
|  |  | |||
|  | @ -99,7 +99,7 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle) | |||
| 								   "or click this button."))); | ||||
| 
 | ||||
| 	// Determine the theme color of OS (dark or light)
 | ||||
| 	auto luma = get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | ||||
|     auto luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | ||||
| 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
 | ||||
| 	m_bmp_value_lock  	  .LoadFile(from_u8(var("sys_lock.png")),     wxBITMAP_TYPE_PNG); | ||||
| 	m_bmp_value_unlock    .LoadFile(from_u8(var(luma >= 128 ? "sys_unlock.png" : "sys_unlock_grey.png")), wxBITMAP_TYPE_PNG); | ||||
|  | @ -122,18 +122,18 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle) | |||
| 		auto dlg = new ButtonsDescription(this, &m_icon_descriptions); | ||||
| 		if (dlg->ShowModal() == wxID_OK){ | ||||
| 			// Colors for ui "decoration"
 | ||||
| 			for (Tab *tab : get_tabs_list()){ | ||||
| 				tab->m_sys_label_clr = get_label_clr_sys(); | ||||
| 				tab->m_modified_label_clr = get_label_clr_modified(); | ||||
|             for (Tab *tab : wxGetApp().tabs_list){ | ||||
|                 tab->m_sys_label_clr = wxGetApp().get_label_clr_sys(); | ||||
|                 tab->m_modified_label_clr = wxGetApp().get_label_clr_modified(); | ||||
| 				tab->update_labels_colour(); | ||||
| 			} | ||||
| 		} | ||||
| 	})); | ||||
| 
 | ||||
| 	// Colors for ui "decoration"
 | ||||
| 	m_sys_label_clr			= get_label_clr_sys(); | ||||
| 	m_modified_label_clr	= get_label_clr_modified(); | ||||
| 	m_default_text_clr		= get_label_clr_default(); | ||||
| 	m_sys_label_clr			= wxGetApp().get_label_clr_sys(); | ||||
| 	m_modified_label_clr	= wxGetApp().get_label_clr_modified(); | ||||
| 	m_default_text_clr		= wxGetApp().get_label_clr_default(); | ||||
| 
 | ||||
| 	m_hsizer = new wxBoxSizer(wxHORIZONTAL); | ||||
| 	sizer->Add(m_hsizer, 0, wxBOTTOM, 3); | ||||
|  | @ -1484,7 +1484,7 @@ void TabPrinter::build_fff() | |||
| 		Line line{ _(L("Bed shape")), "" }; | ||||
| 		line.widget = [this](wxWindow* parent){ | ||||
| 			auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); | ||||
| 			btn->SetFont(Slic3r::GUI::small_font()); | ||||
|             btn->SetFont(wxGetApp().small_font()); | ||||
| 			btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("printer_empty.png")), wxBITMAP_TYPE_PNG)); | ||||
| 
 | ||||
| 			auto sizer = new wxBoxSizer(wxHORIZONTAL); | ||||
|  | @ -2183,7 +2183,7 @@ void Tab::load_current_preset() | |||
| 	// (not sure this is true anymore now that update_dirty is idempotent)
 | ||||
| 	wxTheApp->CallAfter([this]{ | ||||
| 		// checking out if this Tab exists till this moment
 | ||||
| 		if (!checked_tab(this)) | ||||
| 		if (!wxGetApp().checked_tab(this)) | ||||
| 			return; | ||||
| 		update_tab_ui(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -57,7 +57,7 @@ public: | |||
| 	{ | ||||
| 		Create(m_parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); | ||||
| 		m_vsizer = new wxBoxSizer(wxVERTICAL); | ||||
| 		m_item_color = &get_label_clr_default(); | ||||
|         m_item_color = &wxGetApp().get_label_clr_default(); | ||||
| 		SetSizer(m_vsizer); | ||||
| 	} | ||||
| 	~Page(){} | ||||
|  | @ -201,10 +201,10 @@ public: | |||
| 	Tab(wxNotebook* parent, const wxString& title, const char* name) :  | ||||
| 		m_parent(parent), m_title(title), m_name(name) { | ||||
| 		Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL, name); | ||||
| 		get_tabs_list().push_back(this); | ||||
| 		wxGetApp().tabs_list.push_back(this); | ||||
| 	} | ||||
| 	~Tab(){ | ||||
| 		delete_tab_from_list(this); | ||||
| 		wxGetApp().delete_tab_from_list(this); | ||||
| 	} | ||||
| 
 | ||||
| 	wxWindow*	parent() const { return m_parent; } | ||||
|  |  | |||
|  | @ -570,10 +570,10 @@ bool PresetUpdater::config_update() const | |||
| 			BOOST_LOG_TRIVIAL(info) << "User wants to re-configure..."; | ||||
| 			p->perform_updates(std::move(updates)); | ||||
| 			GUI::ConfigWizard wizard(nullptr, GUI::ConfigWizard::RR_DATA_INCOMPAT); | ||||
| 			if (! wizard.run(GUI::get_preset_bundle(), this)) { | ||||
| 			if (! wizard.run(GUI::wxGetApp().preset_bundle, this)) { | ||||
| 				return false; | ||||
| 			} | ||||
| 			GUI::load_current_presets(); | ||||
| 			GUI::wxGetApp().load_current_presets(); | ||||
| 		} else { | ||||
| 			BOOST_LOG_TRIVIAL(info) << "User wants to exit Slic3r, bye..."; | ||||
| 			return false; | ||||
|  | @ -603,8 +603,8 @@ bool PresetUpdater::config_update() const | |||
| 
 | ||||
| 			// Reload global configuration
 | ||||
| 			auto *app_config = GUI::wxGetApp().app_config; | ||||
| 			GUI::get_preset_bundle()->load_presets(*app_config); | ||||
| 			GUI::load_current_presets(); | ||||
|             GUI::wxGetApp().preset_bundle->load_presets(*app_config); | ||||
| 			GUI::wxGetApp().load_current_presets(); | ||||
| 		} else { | ||||
| 			BOOST_LOG_TRIVIAL(info) << "User refused the update"; | ||||
| 		} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka