Maybe this only reveals that I am not object-oriented at all. These codes are quite ugly, I must say.
#include "radiobuttons.h" #include <iostream> void myfunc (int); RadioButtons::RadioButtons() : m_Box_Top(Gtk::ORIENTATION_VERTICAL), m_Box1 (Gtk::ORIENTATION_HORIZONTAL, 10), m_Box2 (Gtk::ORIENTATION_VERTICAL , 10), m_Button_Quit ("Quit") { set_title("Spinor Lab"); set_border_width(10); char label[100][256] = { "CW", "CW-R", "LSB", "USB", "DSP FIL1", "DSP FIL2", "DSP FIL3", "DSP SHARP", "DSP SOFT", "IF FIL1", "IF FIL2", "IF FIL3", "PRE-AMP1", "PRE-AMP2", "ATT 20dB", "BOTH OFF", "AGC FAST", "AGC MID", "AGC SLOW", "ANT 1", "ANT 2", "BKIN OFF", "BKIN ON", "BKIN FULL"}; int ngroup = 8; int nbuttons[8] = { 4, 3, 2, 3, 4, 3, 2, 3 }; for(int i=0;i<ngroup;i++) { m_Box10[i].set_orientation(Gtk::ORIENTATION_VERTICAL); m_Box10[i].set_border_width(3); } int index = 0; for(int i=0;i<ngroup;i++) { for(int j=0;j<nbuttons[i];j++) { m_RadioButton[index].set_label(label[index]); if(j==0) { m_RadioButton[index].set_active(); m_group[i] = m_RadioButton[index].get_group(); } else { m_RadioButton[index].set_group(m_group[i]); } m_Box10[i].pack_start(m_RadioButton[index], FALSE, FALSE, 0); m_RadioButton[index].signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), index)); index++; } m_Box1.pack_start(m_Box10[i]); if(i != ngroup-1) { m_Box1.pack_start(m_VSeparator[i]); } } add(m_Box_Top); m_Box1.set_border_width(10); m_Box2.set_border_width(10); m_Box_Top.pack_start(m_Box1); m_Box_Top.pack_start(m_HSeparator); m_Box_Top.pack_start(m_Box2); m_Box2.pack_start(m_Button_Quit); m_Button_Quit.set_can_default(); m_Button_Quit.grab_default(); m_Button_Quit.signal_clicked().connect (sigc:: mem_fun(*this, &RadioButtons::on_button_clicked ) ); show_all_children(); }
#ifndef GTKMM_EXAMPLE_RADIOBUTTONS_H #define GTKMM_EXAMPLE_RADIOBUTTONS_H #include <gtkmm/box.h> #include <gtkmm/window.h> #include <gtkmm/radiobutton.h> #include <gtkmm/separator.h> class RadioButtons : public Gtk::Window { public: RadioButtons(); virtual ~RadioButtons(); protected: void on_button_clicked (); void on_button_clicked9(gint data); Gtk::Box m_Box_Top, m_Box1, m_Box2; Gtk::Box m_Box10 [ 8]; Gtk::RadioButton::Group m_group[ 8]; Gtk::RadioButton m_RadioButton [100]; Gtk::HSeparator m_HSeparator; Gtk::VSeparator m_VSeparator [ 7]; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLE_RADIOBUTTONS_H