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

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

Inheritance diagram for Slic3r::GUI::ArchiveViewModel:
Collaboration diagram for Slic3r::GUI::ArchiveViewModel:

Public Member Functions

 ArchiveViewModel (wxWindow *parent)
 ~ArchiveViewModel ()
std::shared_ptr< ArchiveViewNode > AddFile (std::shared_ptr< ArchiveViewNode > parent, const wxString &name, bool container)
wxString GetColumnType (unsigned int col) const override
unsigned int GetColumnCount () const override
void Rescale ()
void Delete (const wxDataViewItem &item)
void Clear ()
wxDataViewItem GetParent (const wxDataViewItem &item) const override
unsigned int GetChildren (const wxDataViewItem &parent, wxDataViewItemArray &array) const override
void SetAssociatedControl (ArchiveViewCtrl *ctrl)
void GetValue (wxVariant &variant, const wxDataViewItem &item, unsigned int col) const override
bool SetValue (const wxVariant &variant, const wxDataViewItem &item, unsigned int col) override
void untoggle_folders (const wxDataViewItem &item)
bool IsEnabled (const wxDataViewItem &item, unsigned int col) const override
bool IsContainer (const wxDataViewItem &item) const override
bool HasContainerColumns (const wxDataViewItem &WXUNUSED(item)) const override

Protected Attributes

wxWindow * m_parent { nullptr }
ArchiveViewCtrl * m_ctrl { nullptr }
std::vector< std::shared_ptr< ArchiveViewNode > > m_top_children

Detailed Description

Constructor & Destructor Documentation

◆ ArchiveViewModel()

Slic3r::GUI::ArchiveViewModel::ArchiveViewModel ( wxWindow * parent)
40 :m_parent(parent)
41{}
wxWindow * m_parent
Definition FileArchiveDialog.hpp:97

References m_parent.

◆ ~ArchiveViewModel()

Slic3r::GUI::ArchiveViewModel::~ArchiveViewModel ( )
43{}

Member Function Documentation

◆ AddFile()

std::shared_ptr< ArchiveViewNode > Slic3r::GUI::ArchiveViewModel::AddFile ( std::shared_ptr< ArchiveViewNode > parent,
const wxString & name,
bool container )
46{
47 std::shared_ptr<ArchiveViewNode> node = std::make_shared<ArchiveViewNode>(ArchiveViewNode(name));
48 node->set_container(container);
49
50 if (parent.get() != nullptr) {
51 parent->get_children().push_back(node);
52 node->set_parent(parent);
53 parent->set_is_folder(true);
54 } else {
55 m_top_children.emplace_back(node);
56 }
57
58 wxDataViewItem child = wxDataViewItem((void*)node.get());
59 wxDataViewItem parent_item= wxDataViewItem((void*)parent.get());
60 ItemAdded(parent_item, child);
61
62 if (parent)
63 m_ctrl->Expand(parent_item);
64 return node;
65}
std::vector< std::shared_ptr< ArchiveViewNode > > m_top_children
Definition FileArchiveDialog.hpp:99
ArchiveViewCtrl * m_ctrl
Definition FileArchiveDialog.hpp:98

References m_ctrl, and m_top_children.

◆ Clear()

void Slic3r::GUI::ArchiveViewModel::Clear ( )
91{
92}

◆ Delete()

void Slic3r::GUI::ArchiveViewModel::Delete ( const wxDataViewItem & item)
80{
81 assert(item.IsOk());
82 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
83 assert(node->get_parent() != nullptr);
84 for (std::shared_ptr<ArchiveViewNode> child : node->get_children())
85 {
86 Delete(wxDataViewItem((void*)child.get()));
87 }
88 delete [] node;
89}
void Delete(const wxDataViewItem &item)
Definition FileArchiveDialog.cpp:79

References Delete(), Slic3r::GUI::ArchiveViewNode::get_children(), and Slic3r::GUI::ArchiveViewNode::get_parent().

Referenced by Delete().

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

◆ GetChildren()

unsigned int Slic3r::GUI::ArchiveViewModel::GetChildren ( const wxDataViewItem & parent,
wxDataViewItemArray & array ) const
override
101{
102 if (!parent.IsOk()) {
103 for (std::shared_ptr<ArchiveViewNode>child : m_top_children) {
104 array.push_back(wxDataViewItem((void*)child.get()));
105 }
106 return m_top_children.size();
107 }
108
109 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(parent.GetID());
110 for (std::shared_ptr<ArchiveViewNode> child : node->get_children()) {
111 array.push_back(wxDataViewItem((void*)child.get()));
112 }
113 return node->get_children().size();
114}

References Slic3r::GUI::ArchiveViewNode::get_children(), and m_top_children.

Here is the call graph for this function:

◆ GetColumnCount()

unsigned int Slic3r::GUI::ArchiveViewModel::GetColumnCount ( ) const
inlineoverride
74{ return 2; }

◆ GetColumnType()

wxString Slic3r::GUI::ArchiveViewModel::GetColumnType ( unsigned int col) const
override
68{
69 if (col == 0)
70 return "bool";
71 return "string";//"DataViewBitmapText";
72}

◆ GetParent()

wxDataViewItem Slic3r::GUI::ArchiveViewModel::GetParent ( const wxDataViewItem & item) const
override
95{
96 assert(item.IsOk());
97 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
98 return wxDataViewItem((void*)node->get_parent().get());
99}

References Slic3r::GUI::ArchiveViewNode::get_parent().

Here is the call graph for this function:

◆ GetValue()

void Slic3r::GUI::ArchiveViewModel::GetValue ( wxVariant & variant,
const wxDataViewItem & item,
unsigned int col ) const
override
117{
118 assert(item.IsOk());
119 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
120 if (col == 0) {
121 variant = node->get_toggle();
122 } else {
123 variant = node->get_name();
124 }
125}

References Slic3r::GUI::ArchiveViewNode::get_name(), and Slic3r::GUI::ArchiveViewNode::get_toggle().

Here is the call graph for this function:

◆ HasContainerColumns()

bool Slic3r::GUI::ArchiveViewModel::HasContainerColumns ( const wxDataViewItem & WXUNUSEDitem) const
inlineoverride
94{ return true; }

◆ IsContainer()

bool Slic3r::GUI::ArchiveViewModel::IsContainer ( const wxDataViewItem & item) const
override
162{
163 if(!item.IsOk())
164 return true;
165 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
166 return node->is_container();
167}

References Slic3r::GUI::ArchiveViewNode::is_container().

Here is the call graph for this function:

◆ IsEnabled()

bool Slic3r::GUI::ArchiveViewModel::IsEnabled ( const wxDataViewItem & item,
unsigned int col ) const
override
155{
156 // As of now, all items are always enabled.
157 // Returning false for col 1 would gray out text.
158 return true;
159}

◆ Rescale()

void Slic3r::GUI::ArchiveViewModel::Rescale ( )
75{
76 // There should be no pictures rendered
77}

◆ SetAssociatedControl()

void Slic3r::GUI::ArchiveViewModel::SetAssociatedControl ( ArchiveViewCtrl * ctrl)
inline
83{ m_ctrl = ctrl; }

References m_ctrl.

◆ SetValue()

bool Slic3r::GUI::ArchiveViewModel::SetValue ( const wxVariant & variant,
const wxDataViewItem & item,
unsigned int col )
override
137{
138 assert(item.IsOk());
139 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
140 if (col == 0) {
141 node->set_toggle(variant.GetBool());
142 // if folder recursivelly check all children
143 for (std::shared_ptr<ArchiveViewNode> child : node->get_children()) {
144 SetValue(variant, wxDataViewItem((void*)child.get()), col);
145 }
146 if(!variant.GetBool() && node->get_parent())
147 untoggle_folders(wxDataViewItem((void*)node->get_parent().get()));
148 } else {
149 node->set_name(variant.GetString());
150 }
151 m_parent->Refresh();
152 return true;
153}
bool SetValue(const wxVariant &variant, const wxDataViewItem &item, unsigned int col) override
Definition FileArchiveDialog.cpp:136
void untoggle_folders(const wxDataViewItem &item)
Definition FileArchiveDialog.cpp:127

References Slic3r::GUI::ArchiveViewNode::get_children(), Slic3r::GUI::ArchiveViewNode::get_parent(), m_parent, Slic3r::GUI::ArchiveViewNode::set_name(), Slic3r::GUI::ArchiveViewNode::set_toggle(), SetValue(), and untoggle_folders().

Referenced by SetValue().

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

◆ untoggle_folders()

void Slic3r::GUI::ArchiveViewModel::untoggle_folders ( const wxDataViewItem & item)
128{
129 assert(item.IsOk());
130 ArchiveViewNode* node = static_cast<ArchiveViewNode*>(item.GetID());
131 node->set_toggle(false);
132 if (node->get_parent().get() != nullptr)
133 untoggle_folders(wxDataViewItem((void*)node->get_parent().get()));
134}

References Slic3r::GUI::ArchiveViewNode::get_parent(), Slic3r::GUI::ArchiveViewNode::set_toggle(), and untoggle_folders().

Referenced by SetValue(), and untoggle_folders().

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

Member Data Documentation

◆ m_ctrl

ArchiveViewCtrl* Slic3r::GUI::ArchiveViewModel::m_ctrl { nullptr }
protected
98{ nullptr };

Referenced by AddFile(), and SetAssociatedControl().

◆ m_parent

wxWindow* Slic3r::GUI::ArchiveViewModel::m_parent { nullptr }
protected
97{ nullptr };

Referenced by ArchiveViewModel(), and SetValue().

◆ m_top_children

std::vector<std::shared_ptr<ArchiveViewNode> > Slic3r::GUI::ArchiveViewModel::m_top_children
protected

Referenced by AddFile(), and GetChildren().


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