Exemple #1
0
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);
}
Exemple #2
0
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);

}
Exemple #3
0
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);
  }
}
Exemple #4
0
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);
}
Exemple #5
0
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);
}
Exemple #6
0
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);
}