static ObjectChange * line_apply_properties(Line *line) { ObjectState *old_state; if (line != line_properties_dialog->line) { printf("Dialog problem: %p != %p\n", line, line_properties_dialog->line); line = line_properties_dialog->line; } old_state = (ObjectState *)line_get_state(line); line->line_width = gtk_spin_button_get_value_as_float(line_properties_dialog->line_width); dia_color_selector_get_color(line_properties_dialog->color, &line->line_color); dia_line_style_selector_get_linestyle(line_properties_dialog->line_style, &line->line_style, &line->dashlength); line->start_arrow = dia_arrow_selector_get_arrow(line_properties_dialog->start_arrow); line->end_arrow = dia_arrow_selector_get_arrow(line_properties_dialog->end_arrow); line_update_data(line); return new_object_state_change((Object *)line, old_state, (GetStateFunc)line_get_state, (SetStateFunc)line_set_state); }
static ObjectChange * bezierline_apply_properties(Bezierline *bezierline) { ObjectState *old_state; if (bezierline != bezierline_properties_dialog->bezierline) { g_message("Bezierline dialog problem: %p != %p", bezierline, bezierline_properties_dialog->bezierline); bezierline = bezierline_properties_dialog->bezierline; } old_state = (ObjectState *)bezierline_get_state(bezierline); bezierline->line_width = gtk_spin_button_get_value_as_float(bezierline_properties_dialog->line_width); dia_color_selector_get_color(bezierline_properties_dialog->color, &bezierline->line_color); dia_line_style_selector_get_linestyle(bezierline_properties_dialog->line_style, &bezierline->line_style, &bezierline->dashlength); bezierline->start_arrow = dia_arrow_selector_get_arrow(bezierline_properties_dialog->start_arrow); bezierline->end_arrow = dia_arrow_selector_get_arrow(bezierline_properties_dialog->end_arrow); bezierline_update_data(bezierline); return new_object_state_change((Object *)bezierline, old_state, (GetStateFunc)bezierline_get_state, (SetStateFunc)bezierline_set_state); }
static void prefs_get_value_from_widget(GtkWidget * widget, DiaPrefData *data, gpointer ptr) { gboolean changed = FALSE; switch(data->type) { case PREF_BOOLEAN: { int prev = *((int *)ptr); *((int *)ptr) = GTK_TOGGLE_BUTTON(widget)->active; changed = (prev != *((int *)ptr)); } break; case PREF_INT: case PREF_UINT: { int prev = *((int *)ptr); *((int *)ptr) = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)); changed = (prev != *((int *)ptr)); } break; case PREF_REAL: case PREF_UREAL: { real prev = *((real *)ptr); *((real *)ptr) = (real) gtk_spin_button_get_value (GTK_SPIN_BUTTON(widget)); changed = (prev != *((real *)ptr)); } break; case PREF_COLOUR: { Color prev = *(Color *)ptr; dia_color_selector_get_color(widget, (Color *)ptr); changed = memcmp (&prev, ptr, sizeof(Color)); } break; case PREF_CHOICE: { int index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); GList *names = (data->choice_list_function)(data); *((gchar **)ptr) = g_strdup((gchar *)g_list_nth_data(names, index)); /* XXX changed */ changed = TRUE; break; } case PREF_STRING: *((gchar **)ptr) = (gchar *)gtk_entry_get_text(GTK_ENTRY(widget)); /* XXX changed */ changed = TRUE; break; case PREF_NONE: case PREF_END_GROUP: break; } if (changed && data->update_function != NULL) { (data->update_function)(data, ptr); } }
static void diagram_properties_respond(GtkWidget *widget, gint response_id, gpointer user_data) { Diagram *active_diagram = ddisplay_active_diagram(); if (response_id == GTK_RESPONSE_OK || response_id == GTK_RESPONSE_APPLY) { if (active_diagram) { active_diagram->grid.dynamic = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dynamic_check)); active_diagram->grid.width_x = gtk_spin_button_get_value(GTK_SPIN_BUTTON(width_x_entry)); active_diagram->grid.width_y = gtk_spin_button_get_value(GTK_SPIN_BUTTON(width_y_entry)); active_diagram->grid.visible_x = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(visible_x_entry)); active_diagram->grid.visible_y = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(visible_y_entry)); active_diagram->grid.hex = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hex_check)); active_diagram->grid.hex_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(hex_size_entry)); dia_color_selector_get_color(bg_colour, &active_diagram->data->bg_color); dia_color_selector_get_color(grid_colour, &active_diagram->grid.colour); dia_color_selector_get_color(pagebreak_colour, &active_diagram->pagebreak_color); diagram_add_update_all(active_diagram); diagram_flush(active_diagram); diagram_set_modified(active_diagram, TRUE); } } if (response_id != GTK_RESPONSE_APPLY) gtk_widget_hide(dialog); }
static ObjectChange * arc_apply_properties(Arc *arc) { ObjectState *old_state; old_state = (ObjectState *)arc_get_state(arc); arc->line_width = gtk_spin_button_get_value_as_float(arc_properties_dialog->line_width); dia_color_selector_get_color(arc_properties_dialog->color, &arc->arc_color); dia_line_style_selector_get_linestyle(arc_properties_dialog->line_style, &arc->line_style, &arc->dashlength); arc->start_arrow = dia_arrow_selector_get_arrow(arc_properties_dialog->start_arrow); arc->end_arrow = dia_arrow_selector_get_arrow(arc_properties_dialog->end_arrow); arc_update_data(arc); return new_object_state_change((Object *)arc, old_state, (GetStateFunc)arc_get_state, (SetStateFunc)arc_set_state); }
static ObjectChange * image_apply_properties(Image *image) { gchar *new_file; ObjectState *old_state; if (image != image_properties_dialog->image) { message_warning("Image dialog problem: %p != %p\n", image, image_properties_dialog->image); image = image_properties_dialog->image; } old_state = (ObjectState *)image_get_state(image); image->border_width = gtk_spin_button_get_value_as_float(image_properties_dialog->border_width); dia_color_selector_get_color(image_properties_dialog->fg_color, &image->border_color); dia_line_style_selector_get_linestyle(image_properties_dialog->line_style, &image->line_style, NULL); image->draw_border = gtk_toggle_button_get_active(image_properties_dialog->draw_border); image->keep_aspect = gtk_toggle_button_get_active(image_properties_dialog->keep_aspect); new_file = dia_file_selector_get_file(image_properties_dialog->file); if (image->file) g_free(image->file); if (image->image) { dia_image_release(image->image); } image->image = dia_image_load(new_file); if ((image->image != NULL) && (image->keep_aspect)) { /* Must... keep... aspect... ratio... */ float ratio = (float)dia_image_height(image->image)/ (float)dia_image_width(image->image); image->element.height = image->element.width * ratio; } image->file = g_strdup(new_file); image_update_data(image); return new_object_state_change((Object *)image, old_state, (GetStateFunc)image_get_state, (SetStateFunc)image_set_state); }