Добрый день. Имеется небольшой gui, сделанный в glade. Большинство обработчиков представляют из себя функции подобного вида:
static void
on_button_input_fk_toggled(GtkWidget *btn, control_panel *cp)
{
__on_button_toggled(btn, cp, 0, 0);
}
static void
on_button_reset_avvi_toggled(GtkWidget *btn, control_panel *cp)
{
__on_button_toggled(btn, cp, 0, 1);
}
/* ...
* и так больше 30 обработчиков, различающихся только последними двумя параметрами
*/
Также «мозолит» глаза код подключения сигналов:
g_signal_connect(gtk_builder_get_object(builder, "button_reset"), "toggled",
G_CALLBACK(on_button_reset_toggled), cp);
g_signal_connect(gtk_builder_get_object(builder, "button_enter"), "toggled",
G_CALLBACK(on_button_enter_toggled), cp);
g_signal_connect(gtk_builder_get_object(builder, "button_self_verification"), "toggled",
G_CALLBACK(on_button_self_verification_toggled), cp);
g_signal_connect(gtk_builder_get_object(builder, "button_4v"), "toggled",
G_CALLBACK(on_button_4v_toggled), cp);
Код основной части программы значительно меньше этого «добра».
Вопросы:
- Как вы избавляетесь от подобного кода? (варианты)
- Стоит ли это вообще делать, или это вполне нормальный код?