View::View(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder) : Gtk::Window(cobject), m_builder(builder) { // Menus connect_action ("OpenStl", sigc::mem_fun(*this, &View::load_stl) ); connect_action ("OpenGCode", sigc::mem_fun(*this, &View::load_gcode) ); connect_action ("Quit", sigc::ptr_fun(&Gtk::Main::quit)); connect_action ("About", sigc::mem_fun(*this, &View::about_dialog) ); connect_action ("PreferencesDialog", sigc::bind(sigc::mem_fun(*this, &View::show_dialog), "preferences_dlg")); connect_action ("LoadSettings", sigc::mem_fun(*this, &View::load_settings)); connect_action ("SaveSettings", sigc::mem_fun(*this, &View::save_settings)); connect_action ("SaveSettingsAs", sigc::mem_fun(*this, &View::save_settings_as)); #if 0 // Simple tab connect_button ("s_load_stl", sigc::mem_fun(*this, &View::load_stl) ); connect_button ("s_convert_gcode", sigc::mem_fun(*this, &View::ConvertToGCode) ); connect_button ("s_load_gcode", sigc::mem_fun(*this, &View::load_gcode) ); connect_button ("s_print", sigc::mem_fun(*this, &View::SimplePrint) ); #endif // View tab connect_button ("m_load_stl", sigc::mem_fun(*this, &View::load_stl) ); connect_button ("m_save_stl", sigc::mem_fun(*this, &View::save_stl) ); connect_button ("m_delete", sigc::mem_fun(*this, &View::delete_selected_stl) ); connect_button ("m_duplicate", sigc::mem_fun(*this, &View::duplicate_selected_stl) ); connect_button ("m_auto_rotate", sigc::mem_fun(*this, &View::auto_rotate) ); connect_button ("m_rot_x", sigc::bind(sigc::mem_fun(*this, &View::rotate_selection), Vector4f(1,0,0, M_PI/2))); connect_button ("m_rot_y", sigc::bind(sigc::mem_fun(*this, &View::rotate_selection), Vector4f(0,1,0, M_PI/2))); connect_button ("m_rot_z", sigc::bind(sigc::mem_fun(*this, &View::rotate_selection), Vector4f(0,0,1, M_PI/2))); m_builder->get_widget ("m_rfo_tree", m_rfo_tree); m_translation_row = new TranslationSpinRow (this, m_rfo_tree, "m_box_translate"); Gtk::HScale *scale_slider; m_builder->get_widget("m_scale_slider", scale_slider); scale_slider->set_range(0.01, 5.0); scale_slider->set_value(1.0); m_rfo_tree->get_selection()->signal_changed().connect (sigc::mem_fun(*this, &View::update_scale_slider)); scale_slider->signal_value_changed().connect (sigc::mem_fun(*this, &View::scale_object)); add_statusbar_msg("m_scale_event_box", "Scale the selected object"); // GCode tab m_builder->get_widget ("g_gcode", m_gcode_entry); m_gcode_entry->set_activates_default(); m_gcode_entry->signal_activate().connect (sigc::mem_fun(*this, &View::send_gcode));; connect_button ("g_load_gcode", sigc::mem_fun(*this, &View::load_gcode) ); connect_button ("g_convert_gcode", sigc::mem_fun(*this, &View::convert_to_gcode) ); connect_button ("g_save_gcode", sigc::mem_fun(*this, &View::save_gcode) ); connect_button ("g_send_gcode", sigc::mem_fun(*this, &View::send_gcode) ); // Print tab connect_button ("p_kick", sigc::mem_fun(*this, &View::kick_clicked) ); m_builder->get_widget ("p_power", m_power_button); m_power_button->signal_toggled().connect (sigc::mem_fun(*this, &View::power_toggled)); m_builder->get_widget ("p_print", m_print_button); m_print_button->signal_clicked().connect (sigc::mem_fun(*this, &View::print_clicked) ); m_builder->get_widget ("p_pause", m_continue_button); m_continue_button->signal_clicked().connect (sigc::mem_fun(*this, &View::continue_clicked)); // Interactive tab connect_button ("i_home_all", sigc::mem_fun(*this, &View::home_all)); connect_toggled ("Misc.FileLoggingEnabled", sigc::mem_fun(*this, &View::enable_logging_toggled)); connect_button ("i_clear_logs", sigc::mem_fun(*this, &View::clear_logs) ); m_builder->get_widget ("i_reverse", m_extruder_reverse); m_builder->get_widget ("i_ex_speed", m_extruder_speed); m_extruder_speed->set_range(100.0, 10000.0); m_extruder_speed->set_increments (100, 500); m_extruder_speed->set_value (3000.0); m_builder->get_widget ("i_ex_length", m_extruder_length); m_extruder_length->set_range(0.0, 1000.0); m_extruder_length->set_increments (5, 20); m_extruder_length->set_value (150.0); // FIXME: connect i_update_interval (etc.) connect_toggled ("i_fan_enabled", sigc::mem_fun(*this, &View::fan_enabled_toggled)); m_builder->get_widget ("i_fan_voltage", m_fan_voltage); m_fan_voltage->set_range(0.0, 25.0); m_fan_voltage->set_increments (1, 2); m_fan_voltage->set_value (5.0); connect_button ("i_extrude_length", sigc::mem_fun(*this, &View::run_extruder) ); // 3D preview of the bed Gtk::Box *pBox = NULL; m_builder->get_widget("viewarea", pBox); if (!pBox) std::cerr << "missing box!"; else { m_renderer = new Render (this, m_rfo_tree->get_selection()); pBox->add (*m_renderer); } showAllWidgets(); }
/* Given a widget by label, adds a statusbar message on rollover */ void View::add_statusbar_msg(const char *name, const char *msg) { Gtk::Widget *widget; m_builder->get_widget("m_scale_event_box", widget); add_statusbar_msg(widget, msg); }
// Given a widget by label, adds a statusbar message on rollover void View::add_statusbar_msg(const char *name, const char *msg) { Gtk::Widget *widget = NULL; m_builder->get_widget (name, widget); add_statusbar_msg (widget, msg); }