The following code works, but not smart at all, because there are no data structures.
#include "radiobuttons.h"
#include <iostream>
void myfunc (int);
RadioButtons::RadioButtons() :
m_Box_Top(Gtk::ORIENTATION_VERTICAL),
m_Box1 (Gtk::ORIENTATION_HORIZONTAL, 10),
m_Box10(Gtk::ORIENTATION_VERTICAL , 10),
m_Box11(Gtk::ORIENTATION_VERTICAL , 10),
m_Box12(Gtk::ORIENTATION_VERTICAL , 10),
m_Box2 (Gtk::ORIENTATION_VERTICAL , 10),
m_RadioButton1("CW"),
m_RadioButton2("CW-R"),
m_RadioButton3("LSB"),
m_RadioButton4("USB"),
m_RadioButton5("DSP FIL1"),
m_RadioButton6("DSP FIL2"),
m_RadioButton7("DSP FIL3"),
m_RadioButton8("DSP SHARP"),
m_RadioButton9("DSP SOFT"),
m_Button_Quit ("Quit")
{
set_title("Spinor Lab");
set_border_width(10);
Gtk::RadioButton::Group group1 = m_RadioButton1.get_group();
m_RadioButton2.set_group(group1);
m_RadioButton3.set_group(group1);
m_RadioButton4.set_group(group1);
Gtk::RadioButton::Group group2 = m_RadioButton5.get_group();
m_RadioButton6.set_group(group2);
m_RadioButton7.set_group(group2);
Gtk::RadioButton::Group group3 = m_RadioButton8.get_group();
m_RadioButton9.set_group(group3);
add(m_Box_Top);
m_Box_Top.pack_start(m_Box1);
m_Box_Top.pack_start(m_Separator1);
m_Box_Top.pack_start(m_Box2);
m_Box1.set_border_width(10);
m_Box2.set_border_width(10);
m_Box1.pack_start(m_Box10);
m_Box1.pack_start(m_Separator2);
m_Box1.pack_start(m_Box11);
m_Box1.pack_start(m_Separator3);
m_Box1.pack_start(m_Box12);
m_Box10.pack_start(m_RadioButton1, FALSE, FALSE, 0);
m_Box10.pack_start(m_RadioButton2, FALSE, FALSE, 0);
m_Box10.pack_start(m_RadioButton3, FALSE, FALSE, 0);
m_Box10.pack_start(m_RadioButton4, FALSE, FALSE, 0);
m_Box11.pack_start(m_RadioButton5, FALSE, FALSE, 0);
m_Box11.pack_start(m_RadioButton6, FALSE, FALSE, 0);
m_Box11.pack_start(m_RadioButton7, FALSE, FALSE, 0);
m_Box12.pack_start(m_RadioButton8, FALSE, FALSE, 0);
m_Box12.pack_start(m_RadioButton9, FALSE, FALSE, 0);
m_RadioButton1.set_active();
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 ) );
m_RadioButton1.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 1));
m_RadioButton2.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 2));
m_RadioButton3.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 3));
m_RadioButton4.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 4));
m_RadioButton5.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 5));
m_RadioButton6.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 6));
m_RadioButton7.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 7));
m_RadioButton8.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 8));
m_RadioButton9.signal_clicked().connect(sigc::bind<gint> (mem_fun(*this, &RadioButtons::on_button_clicked9), 9));
show_all_children();
}
void RadioButtons::on_button_clicked9(gint data)
{
if(data == 1) {
if(m_RadioButton1.get_active()) {
std::cout << "button1 is active " << std::endl;
myfunc(1);
}
}
/* this kind of stuff deleted */
}
#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_Box10, m_Box11, m_Box12, m_Box2;
Gtk::RadioButton m_RadioButton1, m_RadioButton2, m_RadioButton3, m_RadioButton4;
Gtk::RadioButton m_RadioButton5, m_RadioButton6, m_RadioButton7;
Gtk::RadioButton m_RadioButton8, m_RadioButton9;
Gtk::HSeparator m_Separator1;
Gtk::VSeparator m_Separator2, m_Separator3;
Gtk::Button m_Button_Quit;
};
#endif //GTKMM_EXAMPLE_RADIOBUTTONS_H