void gl_object_editor_set_bc_color (glObjectEditor *editor, gboolean merge_flag, glColorNode *color_node) { gl_debug (DEBUG_EDITOR, "START"); g_signal_handlers_block_by_func (G_OBJECT (editor->priv->bc_color_combo), gl_object_editor_changed_cb, editor); g_signal_handlers_block_by_func (G_OBJECT (editor->priv->bc_color_radio), bc_radio_toggled_cb, editor); g_signal_handlers_block_by_func (G_OBJECT (editor->priv->bc_key_radio), bc_radio_toggled_cb, editor); g_signal_handlers_block_by_func (G_OBJECT (editor->priv->bc_key_combo), gl_object_editor_changed_cb, editor); gtk_widget_set_sensitive (editor->priv->bc_key_radio, merge_flag); if ( color_node->color == GL_COLOR_NONE ) { gl_color_combo_set_to_default (GL_COLOR_COMBO(editor->priv->bc_color_combo)); } else { gl_color_combo_set_color (GL_COLOR_COMBO(editor->priv->bc_color_combo), color_node->color); } if (!color_node->field_flag || !merge_flag) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->bc_color_radio), TRUE); gtk_widget_set_sensitive (editor->priv->bc_color_combo, TRUE); gtk_widget_set_sensitive (editor->priv->bc_key_combo, FALSE); } else { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->bc_key_radio), TRUE); gtk_widget_set_sensitive (editor->priv->bc_color_combo, FALSE); gtk_widget_set_sensitive (editor->priv->bc_key_combo, TRUE); gl_field_button_set_key (GL_FIELD_BUTTON (editor->priv->bc_key_combo), color_node->key); } g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->bc_color_combo), gl_object_editor_changed_cb, editor); g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->bc_color_radio), bc_radio_toggled_cb, editor); g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->bc_key_radio), bc_radio_toggled_cb, editor); g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->bc_key_combo), gl_object_editor_changed_cb, editor); gl_debug (DEBUG_EDITOR, "END"); }
void gl_object_editor_set_line_color (glObjectEditor *editor, gboolean merge_flag, glColorNode *color_node) { gl_debug (DEBUG_EDITOR, "START"); if (color_node == NULL) { return; } editor->priv->stop_signals = TRUE; gl_debug (DEBUG_EDITOR, "color field %s(%d) / %X", color_node->key, color_node->field_flag, color_node->color); gtk_widget_set_sensitive (editor->priv->line_key_radio, merge_flag); if ( color_node->color == GL_COLOR_NONE ) { gl_color_combo_set_to_default (GL_COLOR_COMBO(editor->priv->line_color_combo)); } else { gl_color_combo_set_color (GL_COLOR_COMBO(editor->priv->line_color_combo), color_node->color); } if (!color_node->field_flag || !merge_flag) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->line_color_radio), TRUE); gtk_widget_set_sensitive (editor->priv->line_color_combo, TRUE); gtk_widget_set_sensitive (editor->priv->line_key_combo, FALSE); } else { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->line_key_radio), TRUE); gtk_widget_set_sensitive (editor->priv->line_color_combo, FALSE); gtk_widget_set_sensitive (editor->priv->line_key_combo, TRUE); gl_field_button_set_key (GL_FIELD_BUTTON (editor->priv->line_key_combo), color_node->key); } editor->priv->stop_signals = FALSE; gl_debug (DEBUG_EDITOR, "END"); }
/*--------------------------------------------------------------------------*/ void gl_object_editor_prepare_line_page (glObjectEditor *editor) { gl_debug (DEBUG_EDITOR, "START"); /* Extract widgets from XML tree. */ gl_builder_util_get_widgets (editor->priv->builder, "line_page_vbox", &editor->priv->line_page_vbox, "line_width_spin", &editor->priv->line_width_spin, "line_color_hbox", &editor->priv->line_color_hbox, "line_key_hbox", &editor->priv->line_key_hbox, "line_key_radio", &editor->priv->line_key_radio, "line_color_radio", &editor->priv->line_color_radio, NULL); editor->priv->line_color_combo = gl_color_combo_new (_("No Line"), GL_COLOR_NO_LINE, gl_prefs_model_get_default_line_color (gl_prefs)); gtk_box_pack_start (GTK_BOX (editor->priv->line_color_hbox), editor->priv->line_color_combo, FALSE, FALSE, 0); editor->priv->line_key_combo = gl_field_button_new (NULL); gtk_box_pack_start (GTK_BOX (editor->priv->line_key_hbox), editor->priv->line_key_combo, TRUE, TRUE, 0); /* Modify widgets based on configuration */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->line_color_radio), TRUE); gtk_widget_set_sensitive (editor->priv->line_color_combo, TRUE); gtk_widget_set_sensitive (editor->priv->line_key_combo, FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->line_width_spin), gl_prefs_model_get_default_line_width (gl_prefs)); gl_color_combo_set_color (GL_COLOR_COMBO(editor->priv->line_color_combo), gl_prefs_model_get_default_line_color (gl_prefs)); /* Un-hide */ gtk_widget_show_all (editor->priv->line_page_vbox); /* Connect signals */ g_signal_connect_swapped (G_OBJECT (editor->priv->line_width_spin), "changed", G_CALLBACK (gl_object_editor_changed_cb), G_OBJECT (editor)); g_signal_connect_swapped (G_OBJECT (editor->priv->line_color_combo), "color_changed", G_CALLBACK (gl_object_editor_changed_cb), G_OBJECT (editor)); g_signal_connect_swapped (G_OBJECT (editor->priv->line_key_combo), "changed", G_CALLBACK (gl_object_editor_changed_cb), G_OBJECT (editor)); g_signal_connect_swapped (G_OBJECT (editor->priv->line_color_radio), "toggled", G_CALLBACK (line_radio_toggled_cb), G_OBJECT (editor)); g_signal_connect_swapped (G_OBJECT (editor->priv->line_key_radio), "toggled", G_CALLBACK (line_radio_toggled_cb), G_OBJECT (editor)); gl_debug (DEBUG_EDITOR, "END"); }