一、界面类
主框架使用的是wxWidgets库;3D模型的渲染区的控件,使用的是imgui库。
1、Plater
此类在OrcaSlicer\src\slic3r\GUI\Plater.hpp文件中定义
1.1 Plater::priv
此结构体是Plater的数据类,各种数据的对象和指针保存在此结构体中。如Sidebar *sidebar。
2、Sidebar 边栏(左侧栏)类
此类在OrcaSlicer\src\slic3r\GUI\Plater.hpp文件中定义,此类是从wxPanel派生而来。
2.1 成员变量
1、struct Sidebar::priv
此结构体是Sidebar用来保存数据。申明为std::unique_ptr<priv> p,在构造函数中,通过new priv(parent)进行赋值。
2.1 成员函数
1、Sidebar::Sidebar(Plater *parent)
在构造函数中会创建:1)打印机下拉框(PlaterPresetComboBox类),new出来的对象指针保存在Sidebar::priv中,变量名为combo_printer;2)会创建耗材下拉框(PlaterPresetComboBox类),new出来的对象指针保存在Sidebar::priv中,变量名为combos_filament。3)工艺下拉框在ParamsPanel类中定义,此类的对象指针保存在MainFrame::m_param_panel中,此指针在MainFrame::init_tabpanel()函数中创建。
Sidebar对象指针保存在Plater::priv中,指针的在priv构造函数中创建,Plater对象指针保存在MainFrame::m_plater中,此指针在MainFrame::init_tabpanel()函数中创建。
3、下拉框
3.1 ComboBox
此类在OrcaSlicer\src\slic3r\GUI\Widgets\ComboBox.hpp文件中定义。是从public wxWindowWithItems<TextInput, wxItemContainer>派生而来。
3.1.1 成员变量
1、std::vector<wxString> texts;下拉框中显示的文本内容
2、std::vector<wxString> tips;下拉框中显示行的提示内容
3、std::vector<wxBitmap> icons;下拉框显示行的图标
4、std::vector<void *> datas;下拉框显示行的数据
5、std::vector<wxClientDataType> types;下拉框显示行数据类型
6、DropDown drop; 点击下拉时的弹窗
3.1.2 成员函数
1、int Append(const wxString &item, const wxBitmap &bitmap = wxNullBitmap);向下拉框中添加数据。
3.2 PresetComboBox
此类在OrcaSlicer\src\slic3r\GUI\PresetComboBoxs.hpp文件中定义。是从ComboBox派生而来。
3.2.1 成员变量
1、Preset::Type m_type;//TYPE_PRINTER打印机预设;TYPE_FILAMENT耗材预设;TYPE_PRINT工艺预设;
2、int m_last_selected; 最后一个选择的行的下标。
3.2.2 成员函数
1、void update(std::string select_preset);
将collection中的用户预设和系统预设,通过Append函数进行添加。
3.3 PlaterPresetComboBox
此类是从PresetComboBox派生而来。打印机预设下拉框和耗材预设下拉框,是由此类创建的对象。
3.3.1 成员函数
1、void update() override;
重写update函数。循环collection中的presets,1)如果是default或system,则是系统预设;2)如果是is_project_embedded,则是项目预设;3)其他的是用户预设。
2、void OnSelect(wxCommandEvent& evt) override;
重写OnSelect函数。
3.3.2 切换打印机的流程
1、在Plater::priv::priv构造函数中,使用sidebar->Bind(wxEVT_COMBOBOX, &priv::on_combobox_select, this);将sidebar中的wxEVT_COMBOBOX消息绑定到on_combobox_select中。所在切换打印机预设时,会调用此函数。