OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::FileArchiveDialog Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/FileArchiveDialog.hpp>

Inheritance diagram for Slic3r::GUI::FileArchiveDialog:
Collaboration diagram for Slic3r::GUI::FileArchiveDialog:

Public Member Functions

 FileArchiveDialog (wxWindow *parent_window, mz_zip_archive *archive, std::vector< std::pair< boost::filesystem::path, size_t > > &selected_paths_w_size)
void EndModal (int retCode) override
float scale_factor () const
float prev_scale_factor () const
void set_scale_factor (float v)
void set_prev_scale_factor (float v)
void set_em_unit (int v)
bool force_rescale () const
int em_unit () const
const wxFont & normal_font () const
void enable_force_rescale ()
int ShowModal ()

Protected Member Functions

void on_dpi_changed (const wxRect &suggested_rect) override
void on_open_button ()
void on_all_button ()
void on_none_button ()
wxBoxSizer * create_btn_sizer ()
virtual void on_sys_color_changed ()

Protected Attributes

std::vector< std::pair< boost::filesystem::path, size_t > > & m_selected_paths_w_size
ArchiveViewCtrl * m_avc
std::vector< Button * > m_button_list

Private Member Functions

void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

float m_scale_factor
int m_em_unit
wxFont m_normal_font
float m_prev_scale_factor
bool m_can_rescale
bool m_force_rescale
int m_new_font_point_size

Detailed Description

Constructor & Destructor Documentation

◆ FileArchiveDialog()

Slic3r::GUI::FileArchiveDialog::FileArchiveDialog ( wxWindow * parent_window,
mz_zip_archive * archive,
std::vector< std::pair< boost::filesystem::path, size_t > > & selected_paths_w_size )
193 : DPIDialog(parent_window, wxID_ANY, _(L("Archive preview")), wxDefaultPosition,
194 wxSize(45 * wxGetApp().em_unit(), 40 * wxGetApp().em_unit()),
195 wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX)
196 , m_selected_paths_w_size (selected_paths_w_size)
197{
198#ifdef _WIN32
199 SetBackgroundColour(*wxWHITE);
200 wxGetApp().UpdateDarkUI(this);
201 wxGetApp().UpdateDlgDarkUI(this);
202#else
203 SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
204#endif
205
206 int em = em_unit();
207
208 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
209
210 m_avc = new ArchiveViewCtrl(this, wxSize(45 * em, 30 * em));
211 wxDataViewColumn* toggle_column = m_avc->AppendToggleColumn(L"\u2714", 0, wxDATAVIEW_CELL_ACTIVATABLE, 6 * em);
212 m_avc->AppendTextColumn(_L("filename"), 1);
213
214 std::vector<std::shared_ptr<ArchiveViewNode>> stack;
215
216 std::function<void(std::vector<std::shared_ptr<ArchiveViewNode> >&, size_t)> reduce_stack = [] (std::vector<std::shared_ptr<ArchiveViewNode>>& stack, size_t size) {
217 if (size == 0) {
218 stack.clear();
219 return;
220 }
221 while (stack.size() > size)
222 stack.pop_back();
223 };
224 // recursively stores whole structure of file onto function stack and synchoronize with stack object.
225 std::function<size_t(const boost::filesystem::path&, std::vector<std::shared_ptr<ArchiveViewNode>>&)> adjust_stack = [&adjust_stack, &reduce_stack, &avc = m_avc](const boost::filesystem::path& const_file, std::vector<std::shared_ptr<ArchiveViewNode>>& stack)->size_t {
226 boost::filesystem::path file(const_file);
227 size_t struct_size = file.has_parent_path() ? adjust_stack(file.parent_path(), stack) : 0;
228
229 if (stack.size() > struct_size && (file.has_extension() || file.filename().string() != stack[struct_size]->get_name()))
230 {
231 reduce_stack(stack, struct_size);
232 }
233 if (!file.has_extension() && stack.size() == struct_size)
234 stack.push_back(avc->get_model()->AddFile((stack.empty() ? std::shared_ptr<ArchiveViewNode>(nullptr) : stack.back()), boost::nowide::widen(file.filename().string()), true)); // filename string to wstring?
235 return struct_size + 1;
236 };
237
238 const std::regex pattern_drop(".*[.](stl|obj|amf|3mf|step|stp)", std::regex::icase);
239 mz_uint num_entries = mz_zip_reader_get_num_files(archive);
240 mz_zip_archive_file_stat stat;
241 std::vector<std::pair<boost::filesystem::path, size_t>> filtered_entries; // second is unzipped size
242 for (mz_uint i = 0; i < num_entries; ++i) {
243 if (mz_zip_reader_file_stat(archive, i, &stat)) {
244 boost::filesystem::path path = Slic3r::decode_archive_entry_path(archive, stat);
245 assert(!path.empty());
246 if (!path.has_extension())
247 continue;
248 // filter out MACOS specific hidden files
249 if (boost::algorithm::starts_with(path.string(), "__MACOSX"))
250 continue;
251 filtered_entries.emplace_back(std::move(path), stat.m_uncomp_size);
252 }
253 }
254 // sorting files will help adjust_stack function to not create multiple same folders
255 std::sort(filtered_entries.begin(), filtered_entries.end(), [](const std::pair<boost::filesystem::path, size_t>& p1, const std::pair<boost::filesystem::path, size_t>& p2){ return p1.first.string() < p2.first.string(); });
256 size_t entry_count = 0;
257 size_t depth = 1;
258 for (const auto& entry : filtered_entries)
259 {
260 const boost::filesystem::path& path = entry.first;
261 std::shared_ptr<ArchiveViewNode> parent(nullptr);
262
263 depth = std::max(depth, adjust_stack(path, stack));
264 if (!stack.empty())
265 parent = stack.back();
266 if (std::regex_match(path.extension().string(), pattern_drop)) { // this leaves out non-compatible files
267 std::shared_ptr<ArchiveViewNode> new_node = m_avc->get_model()->AddFile(parent, boost::nowide::widen(path.filename().string()), false);
268 new_node->set_fullpath(/*std::move(path)*/path); // filename string to wstring?
269 new_node->set_size(entry.second);
270 entry_count++;
271 }
272 }
273 if (entry_count == 1)
275
276 toggle_column->SetWidth((4 + depth) * em);
277
278 wxBoxSizer* btn_sizer = create_btn_sizer();
279
280 topSizer->Add(m_avc, 1, wxEXPAND | wxALL, 10);
281 topSizer->Add(btn_sizer, 0, wxEXPAND | wxALL, 10);
282 this->SetSizer(topSizer);
283 SetMinSize(wxSize(40 * em, 30 * em));
284
285 for (auto btn : m_button_list)
286 wxGetApp().UpdateDarkUI(btn);
287}
#define _(s)
Definition 3mf.cpp:306
#define L(s)
Definition ExtrusionEntity.cpp:25
#define _L(s)
Definition OBJ.cpp:34
int em_unit() const
Definition GUI_Utils.hpp:203
wxBoxSizer * create_btn_sizer()
Definition FileArchiveDialog.cpp:388
std::vector< std::pair< boost::filesystem::path, size_t > > & m_selected_paths_w_size
Definition FileArchiveDialog.hpp:130
void on_all_button()
Definition FileArchiveDialog.cpp:332
std::vector< Button * > m_button_list
Definition FileArchiveDialog.hpp:132
ArchiveViewCtrl * m_avc
Definition FileArchiveDialog.hpp:131
std::string decode_archive_entry_path(mz_zip_archive *zip, const mz_zip_archive_file_stat &stat)
Definition miniz_extension.cpp:162

References _, _L, create_btn_sizer(), Slic3r::decode_archive_entry_path(), Slic3r::GUI::DPIAware< wxDialog >::em_unit(), L, m_avc, m_button_list, m_selected_paths_w_size, and on_all_button().

Here is the call graph for this function:

Member Function Documentation

◆ create_btn_sizer()

wxBoxSizer * Slic3r::GUI::FileArchiveDialog::create_btn_sizer ( )
protected
389{
390 auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
391
392 Button* all_btn = new Button(this, _L("All"));
394 all_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) { on_all_button(); });
395 btn_sizer->Add(all_btn, 0, wxALIGN_CENTER_VERTICAL);
396 m_button_list.push_back(all_btn);
397
398 Button* none_btn = new Button(this, _L("None"));
400 none_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) { on_none_button(); });
401 btn_sizer->Add(none_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(ButtonProps::WindowButtonGap()));
402 m_button_list.push_back(none_btn);
403
404 btn_sizer->AddStretchSpacer();
405
406 Button* open_btn = new Button(this, _L("Open"));
408 open_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) { on_open_button(); });
409 open_btn->SetFocus();
410 open_btn->SetId(wxID_OK);
411 btn_sizer->Add(open_btn, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(ButtonProps::ChoiceButtonGap()));
412 m_button_list.push_back(open_btn);
413
414 Button* cancel_btn = new Button(this, _L("Cancel"));
416 cancel_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) { this->EndModal(wxID_CANCEL); });
417 cancel_btn->SetId(wxID_CANCEL);
418 btn_sizer->Add(cancel_btn, 0, wxALIGN_CENTER_VERTICAL);
419 m_button_list.push_back(cancel_btn);
420
421 return btn_sizer;
422}
@ Confirm
Definition Button.hpp:25
@ Regular
Definition Button.hpp:24
@ Choice
Definition Button.hpp:33
@ Window
Definition Button.hpp:32
static int WindowButtonGap()
Definition Button.hpp:20
static int ChoiceButtonGap()
Definition Button.hpp:19
void SetStyle(const ButtonStyle style, const ButtonType type)
Definition Button.cpp:200
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305
void on_open_button()
Definition FileArchiveDialog.cpp:307
void on_none_button()
Definition FileArchiveDialog.cpp:360

References _L, Choice, ButtonProps::ChoiceButtonGap(), Confirm, Slic3r::GUI::DPIDialog::EndModal(), m_button_list, on_all_button(), on_none_button(), on_open_button(), Regular, Button::SetStyle(), Window, and ButtonProps::WindowButtonGap().

Referenced by FileArchiveDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ em_unit()

int Slic3r::GUI::DPIAware< wxDialog >::em_unit ( ) const
inlineinherited
203{ return m_em_unit; }
Definition GUI_Utils.hpp:107

Referenced by Slic3r::GUI::AuxiliaryDialog::AuxiliaryDialog(), Slic3r::GUI::CopyrightsDialog::CopyrightsDialog(), Slic3r::GUI::DesignTextDialog::DesignTextDialog(), Slic3r::GUI::EditGCodeDialog::EditGCodeDialog(), Slic3r::GUI::FileArchiveDialog::FileArchiveDialog(), Slic3r::GUI::MsgNoUpdates::MsgNoUpdates(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::OAuthDialog::OAuthDialog(), Slic3r::GUI::ParamsDialog::ParamsDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::SettingsDialog::SettingsDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), anonymous_namespace{3DPrinterOS.cpp}::UploadOptionsDialog::UploadOptionsDialog(), Slic3r::GUI::PublishSettingsDialog::add_row_ui(), Slic3r::GUI::DiffPresetDialog::complete_dialog_creation(), Slic3r::GUI::DiffPresetDialog::create_edit_sizer(), Slic3r::GUI::DiffPresetDialog::create_presets_sizer(), Slic3r::GUI::DiffPresetDialog::create_tree(), Slic3r::GUI::ElegooPrintHostSendDialog::init(), Slic3r::GUI::FlashforgePrintHostSendDialog::init(), Slic3r::GUI::PrintHostSendDialog::init(), Slic3r::GUI::AboutDialog::on_dpi_changed(), Slic3r::GUI::AuxiliaryDialog::on_dpi_changed(), Slic3r::GUI::BedShapeDialog::on_dpi_changed(), Slic3r::GUI::ConfigWizard::on_dpi_changed(), Slic3r::GUI::CopyrightsDialog::on_dpi_changed(), Slic3r::GUI::DiffPresetDialog::on_dpi_changed(), Slic3r::GUI::EditGCodeDialog::on_dpi_changed(), Slic3r::GUI::FileArchiveDialog::on_dpi_changed(), Slic3r::GUI::OAuthDialog::on_dpi_changed(), Slic3r::GUI::ObjectTableDialog::on_dpi_changed(), Slic3r::GUI::ParamsDialog::on_dpi_changed(), Slic3r::GUI::PhysicalPrinterDialog::on_dpi_changed(), Slic3r::GUI::PrintHostQueueDialog::on_dpi_changed(), Slic3r::GUI::PurgeModeDialog::on_dpi_changed(), Slic3r::GUI::SavePresetDialog::on_dpi_changed(), Slic3r::GUI::SendSystemInfoDialog::on_dpi_changed(), Slic3r::GUI::SettingsDialog::on_dpi_changed(), and Slic3r::GUI::UnsavedChangesDialog::on_dpi_changed().

Here is the caller graph for this function:

◆ enable_force_rescale()

void Slic3r::GUI::DPIAware< wxDialog >::enable_force_rescale ( )
inlineinherited
206{ m_force_rescale = true; }

◆ EndModal()

void Slic3r::GUI::DPIDialog::EndModal ( int retCode)
inlineoverrideinherited
306 {
307 if (!dialogStack.empty() && dialogStack.front() != this) {
308 // This is a bug in wxWidgets
309 // when the dialog is not top modal dialog, EndModal() just hide dialog without quit
310 // the modal event loop. And the modal event loop blocks us from bottom widgets.
311 // Solution: let user click it manually or close outside. FIXME
312 BOOST_LOG_TRIVIAL(warning) << "DPIAware::EndModal Error: dialogStack is not empty, but top dialog is not this one. retCode=" << retCode;
313 return;
314 }
315
316 return wxDialog::EndModal(retCode);
317 }
std::deque< wxDialog * > dialogStack
Definition GUI_Utils.cpp:549

References Slic3r::GUI::dialogStack.

Referenced by Slic3r::GUI::CloneDialog::CloneDialog(), Slic3r::GUI::ConfigWizard::ConfigWizard(), Slic3r::GUI::CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(), Slic3r::GUI::DeleteConfirmDialog::DeleteConfirmDialog(), Slic3r::GUI::DesignVariableDialog::DesignVariableDialog(), Slic3r::GUI::anonymous_namespace{PrintHostDialogs.cpp}::FlashforgeSlotDialog::FlashforgeSlotDialog(), Slic3r::GUI::GuideFrame::GuideFrame(), Slic3r::GUI::InputIpAddressDialog::InputIpAddressDialog(), Slic3r::GUI::ManualNozzleCountDialog::ManualNozzleCountDialog(), Slic3r::GUI::MsgUpdateConfig::MsgUpdateConfig(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::MultiChoiceDialog::MultiChoiceDialog(), Slic3r::GUI::NetworkErrorDialog::NetworkErrorDialog(), Slic3r::GUI::NetworkPluginRestartDialog::NetworkPluginRestartDialog(), Slic3r::GUI::PartSkipConfirmDialog::PartSkipConfirmDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::PlateNameEditDialog::PlateNameEditDialog(), Slic3r::GUI::PlateSettingsDialog::PlateSettingsDialog(), Slic3r::GUI::PublishSettingsDialog::PublishSettingsDialog(), Slic3r::GUI::SelectMachineDialog::SelectMachineDialog(), Slic3r::GUI::SendFailedConfirm::SendFailedConfirm(), Slic3r::GUI::SendSystemInfoDialog::SendSystemInfoDialog(), Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), Slic3r::GUI::SingleChoiceDialog::SingleChoiceDialog(), StepMeshDialog::StepMeshDialog(), Slic3r::GUI::SyncAmsInfoDialog::SyncAmsInfoDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), Slic3r::GUI::UpdatePluginDialog::UpdatePluginDialog(), Slic3r::GUI::UpdateVersionDialog::UpdateVersionDialog(), Slic3r::GUI::wgtDeviceNozzleRackUpgradeDlg::wgtDeviceNozzleRackUpgradeDlg(), Slic3r::GUI::SavePresetDialog::accept(), Slic3r::GUI::MsgDialog::add_button(), Slic3r::GUI::TipsDialog::add_button(), Slic3r::GUI::FilamentPickerDialog::BindEvents(), Slic3r::GUI::PluginPickerDialog::build_capability_ui(), Slic3r::GUI::BedShapeDialog::build_dialog(), Slic3r::GUI::PluginPickerDialog::build_ui(), Slic3r::GUI::UnsavedChangesDialog::close(), Slic3r::GUI::FileArchiveDialog::create_btn_sizer(), Slic3r::GUI::ColorDecomposeDialog::create_button_panel(), Slic3r::GUI::MixedFilamentDialog::create_button_panel(), Slic3r::GUI::CreateFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::CreatePresetForPrinterDialog::create_dialog_buttons(), Slic3r::GUI::EditFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::create_dialog_buttons(), Slic3r::GUI::PreferencesDialog::create_item_language_combobox(), Slic3r::GUI::PreferencesDialog::create_item_region_combobox(), Slic3r::GUI::PreferencesDialog::create_items(), Slic3r::GUI::CreatePrinterPresetDialog::create_page1_dialog_buttons(), Slic3r::GUI::CreatePrinterPresetDialog::create_page2_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::data_init(), Slic3r::GUI::WebDialog::destroy_silently(), Slic3r::GUI::EditFilamentPresetDialog::edit_preset(), Slic3r::GUI::ConnectPrinterDialog::end_modal(), Slic3r::GUI::PrintHostSendDialog::EndModal(), Slic3r::GUI::ColorPickerDialog::finish(), Slic3r::GUI::WebDialog::finish(), Slic3r::GUI::Newer3mfVersionDialog::get_btn_sizer(), Slic3r::GUI::ScoreDialog::get_button_sizer(), Slic3r::GUI::WebViewHostDialog::handle_common_script_command(), Slic3r::GUI::ExportPresetBundleDialog::InitExportData(), Slic3r::GUI::SelectMachineDialog::navigate_to_timelapse_page(), Slic3r::GUI::BindMachineDialog::on_bind_success(), Slic3r::GUI::ConnectPrinterDialog::on_button_confirm(), Slic3r::GUI::RecenterDialog::on_button_confirm(), Slic3r::GUI::BindMachineDialog::on_cancel(), Slic3r::GUI::EditCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::InputIpAddressDialog::on_cancel(), Slic3r::GUI::NewCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::OAuthDialog::on_cancel(), Slic3r::GUI::PingCodeBindDialog::on_cancel(), Slic3r::GUI::SelectMachineDialog::on_cancel(), Slic3r::GUI::SendToPrinterDialog::on_cancel(), Slic3r::GUI::SyncAmsInfoDialog::on_cancel(), Slic3r::GUI::UnBindMachineDialog::on_cancel(), Slic3r::GUI::WebDialog::on_close_window(), Slic3r::GUI::NetworkPluginDownloadDialog::on_dont_ask(), Slic3r::GUI::NetworkPluginDownloadDialog::on_download(), Slic3r::GUI::EditDevNameDialog::on_edit_name(), Slic3r::GUI::ConfirmBeforeSendDialog::on_hide(), Slic3r::GUI::PrivacyUpdateDialog::on_hide(), Slic3r::GUI::ShortcutCaptureDialog::on_key(), Slic3r::GUI::TextureImportDialog::on_ok_clicked(), Slic3r::GUI::FileArchiveDialog::on_open_button(), Slic3r::GUI::NetworkPluginDownloadDialog::on_remind_later(), Slic3r::GUI::ProjectDropDialog::on_select_cancel(), Slic3r::GUI::SavePresetDialog::on_select_cancel(), Slic3r::GUI::ProjectDropDialog::on_select_ok(), Slic3r::GUI::SendMultiMachinePage::on_send(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip(), Slic3r::GUI::TextureImportDialog::on_skip_clicked(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip_version(), Slic3r::GUI::Cornering_Test_Dlg::on_start(), Slic3r::GUI::FlowRateCalibrationDialog::on_start(), Slic3r::GUI::Input_Shaping_Damp_Test_Dlg::on_start(), Slic3r::GUI::Input_Shaping_Freq_Test_Dlg::on_start(), Slic3r::GUI::MaxVolumetricSpeed_Test_Dlg::on_start(), Slic3r::GUI::PA_Calibration_Dlg::on_start(), Slic3r::GUI::Retraction_Test_Dlg::on_start(), Slic3r::GUI::Temp_Calibration_Dlg::on_start(), Slic3r::GUI::VFA_Test_Dlg::on_start(), Slic3r::GUI::CalibrationDialog::on_start_calibration(), Slic3r::GUI::UnBindMachineDialog::on_unbind_printer(), Slic3r::GUI::PartSkipDialog::OnApplyDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::OnCancel(), Slic3r::GUI::AboutDialog::onCloseDialog(), Slic3r::GUI::CopyrightsDialog::onCloseDialog(), Slic3r::GUI::MultiNozzleSyncDialog::OnRackStatusReadingFinished(), Slic3r::GUI::GuideFrame::OnScriptMessage(), Slic3r::GUI::InputIpAddressDialog::OnTimer(), Slic3r::GUI::KBShortcutsDialog::open_mouse_preferences(), Slic3r::GUI::TroubleshootDialog::PackAll(), Slic3r::GUI::TroubleshootDialog::RebuildSystemProfiles(), Slic3r::GUI::SpeedDialWebDialog::run_action(), Slic3r::GUI::OAuthDialog::Show(), Slic3r::GUI::MultiNozzleSyncDialog::UpdateButton(), and Slic3r::GUI::CreatePrinterPresetDialog::validate_input_valid().

◆ force_rescale()

bool Slic3r::GUI::DPIAware< wxDialog >::force_rescale ( ) const
inlineinherited
201{ return m_force_rescale; }

◆ is_new_scale_factor()

bool Slic3r::GUI::DPIAware< wxDialog >::is_new_scale_factor ( ) const
inlineprivateinherited
262{ return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }

◆ normal_font()

◆ on_all_button()

void Slic3r::GUI::FileArchiveDialog::on_all_button ( )
protected
333{
334
335 wxDataViewItemArray top_items;
336 m_avc->get_model()->GetChildren(wxDataViewItem(nullptr), top_items);
337
338 std::function<void(ArchiveViewNode*)> deep_fill = [&deep_fill](ArchiveViewNode* node) {
339 if (node == nullptr)
340 return;
341 node->set_toggle(true);
342 if (!node->get_children().empty()) {
343 for (std::shared_ptr<ArchiveViewNode> child : node->get_children())
344 deep_fill(child.get());
345 }
346 };
347
348 for (const auto& item : top_items)
349 {
350 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
351 deep_fill(node);
352 // Fix for linux, where Refresh or Update wont help to redraw toggle checkboxes.
353 // It should be enough to call ValueChanged for top items.
354 m_avc->get_model()->ValueChanged(item, 0);
355 }
356
357 Refresh();
358}

References m_avc.

Referenced by FileArchiveDialog(), and create_btn_sizer().

Here is the caller graph for this function:

◆ on_dpi_changed()

void Slic3r::GUI::FileArchiveDialog::on_dpi_changed ( const wxRect & suggested_rect)
overrideprotectedvirtual

Implements Slic3r::GUI::DPIAware< wxDialog >.

290{
291 int em = em_unit();
292 BOOST_LOG_TRIVIAL(error) << "on_dpi_changed";
293
294 for (auto btn : m_button_list) {
295 btn->SetMinSize(BTN_SIZE);
296 btn->SetCornerRadius(FromDIP(12));
297 }
298
299 const wxSize& size = wxSize(45 * em, 40 * em);
300 SetSize(size);
301 //m_tree->Rescale(em);
302
303 Fit();
304 Refresh();
305}
#define BTN_SIZE
Definition EditGCodeDialog.cpp:49

References BTN_SIZE, Slic3r::GUI::DPIAware< wxDialog >::em_unit(), and m_button_list.

Here is the call graph for this function:

◆ on_none_button()

void Slic3r::GUI::FileArchiveDialog::on_none_button ( )
protected
361{
362 wxDataViewItemArray top_items;
363 m_avc->get_model()->GetChildren(wxDataViewItem(nullptr), top_items);
364
365 std::function<void(ArchiveViewNode*)> deep_fill = [&deep_fill](ArchiveViewNode* node) {
366 if (node == nullptr)
367 return;
368 node->set_toggle(false);
369 if (!node->get_children().empty()) {
370 for (std::shared_ptr<ArchiveViewNode> child : node->get_children())
371 deep_fill(child.get());
372 }
373 };
374
375 for (const auto& item : top_items)
376 {
377 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
378 deep_fill(node);
379 // Fix for linux, where Refresh or Update wont help to redraw toggle checkboxes.
380 // It should be enough to call ValueChanged for top items.
381 m_avc->get_model()->ValueChanged(item, 0);
382 }
383
384 this->Refresh();
385}

References m_avc.

Referenced by create_btn_sizer().

Here is the caller graph for this function:

◆ on_open_button()

void Slic3r::GUI::FileArchiveDialog::on_open_button ( )
protected
308{
309 wxDataViewItemArray top_items;
310 m_avc->get_model()->GetChildren(wxDataViewItem(nullptr), top_items);
311
312 std::function<void(ArchiveViewNode*)> deep_fill = [&paths = m_selected_paths_w_size, &deep_fill](ArchiveViewNode* node){
313 if (node == nullptr)
314 return;
315 if (node->get_children().empty()) {
316 if (node->get_toggle())
317 paths.emplace_back(node->get_fullpath(), node->get_size());
318 } else {
319 for (std::shared_ptr<ArchiveViewNode> child : node->get_children())
320 deep_fill(child.get());
321 }
322 };
323
324 for (const auto& item : top_items)
325 {
326 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
327 deep_fill(node);
328 }
329 this->EndModal(wxID_OK);
330}

References Slic3r::GUI::DPIDialog::EndModal(), m_avc, and m_selected_paths_w_size.

Referenced by create_btn_sizer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_sys_color_changed()

◆ prev_scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::prev_scale_factor ( ) const
inlineinherited
196{ return m_prev_scale_factor; }

◆ rescale()

void Slic3r::GUI::DPIAware< wxDialog >::rescale ( const wxRect & suggested_rect)
inlineprivateinherited
265 {
266 this->Freeze();
267
268 m_force_rescale = false;
269
270 // set normal application font as a current window font
271 m_normal_font = this->GetFont();
272
274
275 // rescale missed controls sizes and images
277
278 this->Layout();
279 this->Thaw();
280
281 // reset previous scale factor from current scale factor value
283 }
virtual void on_dpi_changed(const wxRect &suggested_rect)=0
void update_em_unit()
Definition GUI_Utils.hpp:249

◆ scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::scale_factor ( ) const
inlineinherited
195{ return m_scale_factor; }

◆ set_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::set_em_unit ( int v)
inlineinherited
200{ m_em_unit = v; }

◆ set_prev_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_prev_scale_factor ( float v)
inlineinherited

◆ set_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_scale_factor ( float v)
inlineinherited
198{ m_scale_factor = v; }

◆ ShowModal()

◆ update_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::update_em_unit ( )
inlineprivateinherited
250 {
251 // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3).
252 // So, calculate the m_em_unit value from the font size, as before
253#if !defined(__WXGTK__)
255#else
256 // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window.
257 m_em_unit = std::max<size_t>(10, this->GetTextExtent("m").x - 1);
258#endif // __WXGTK__
259 }

Member Data Documentation

◆ m_avc

ArchiveViewCtrl* Slic3r::GUI::FileArchiveDialog::m_avc
protected

◆ m_button_list

std::vector<Button*> Slic3r::GUI::FileArchiveDialog::m_button_list
protected

◆ m_can_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_can_rescale
privateinherited
235{ true };

◆ m_em_unit

int Slic3r::GUI::DPIAware< wxDialog >::m_em_unit
privateinherited

◆ m_force_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_force_rescale
privateinherited
236{ false };

◆ m_new_font_point_size

int Slic3r::GUI::DPIAware< wxDialog >::m_new_font_point_size
privateinherited

◆ m_normal_font

wxFont Slic3r::GUI::DPIAware< wxDialog >::m_normal_font
privateinherited

◆ m_prev_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_prev_scale_factor
privateinherited

◆ m_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_scale_factor
privateinherited

◆ m_selected_paths_w_size

std::vector<std::pair<boost::filesystem::path,size_t> >& Slic3r::GUI::FileArchiveDialog::m_selected_paths_w_size
protected

The documentation for this class was generated from the following files: