/*! \brief Create a string representation of the text object * \par Function Description * This function takes a text \a object and return a string * according to the file format definition. * * \param [in] object the text object * \return the string representation of the text object */ gchar* geda_text_object_to_buffer (const GedaObject *object) { const gchar *string; g_return_val_if_fail (object != NULL, NULL); g_return_val_if_fail (object->text != NULL, NULL); g_return_val_if_fail (object->type == OBJ_TEXT, NULL); string = geda_text_object_get_string (object); g_return_val_if_fail (string != NULL, NULL); return g_strdup_printf ("%c %d %d %d %d %d %d %d %d %d\n%s", OBJ_TEXT, geda_text_object_get_x (object), geda_text_object_get_y (object), geda_object_get_color (object), geda_text_object_get_size (object), geda_object_get_visible (object), object->show_name_value, geda_text_object_get_angle (object), geda_text_object_get_alignment (object), o_text_num_lines (string), string); }
/*! \todo Finish function documentation!!! * \brief * \par Function Description * */ void o_edit(GSCHEM_TOPLEVEL *w_current, GList *list) { OBJECT *o_current; const gchar *str = NULL; if (list == NULL) { w_current->inside_action = 0; i_set_state(w_current, SELECT); return; } o_current = (OBJECT *) list->data; if (o_current == NULL) { fprintf(stderr, _("Got an unexpected NULL in o_edit\n")); exit(-1); } /* for now deal with only the first item */ switch(o_current->type) { /* also add the ability to multi attrib edit: nets, busses, pins */ case(OBJ_COMPLEX): case(OBJ_PLACEHOLDER): case(OBJ_NET): case(OBJ_PIN): case(OBJ_BUS): x_multiattrib_open (w_current); break; case(OBJ_PICTURE): picture_change_filename_dialog(w_current); break; case(OBJ_ARC): arc_angle_dialog(w_current, o_current); break; case(OBJ_TEXT): str = o_text_get_string (w_current->toplevel, o_current); if (o_attrib_get_name_value (o_current, NULL, NULL) && /* attribute editor only accept 1-line values for attribute */ o_text_num_lines (str) == 1) { attrib_edit_dialog(w_current,o_current, FROM_MENU); } else { o_text_edit(w_current, o_current); } break; } /* has to be more extensive in the future */ /* some sort of redrawing? */ }
/*! \brief Create a character string representation of a path OBJECT. * \par Function Description * The function formats a string in the buffer <B>*buff</B> to describe * the path object <B>*object</B>. * * \param [in] object path OBJECT to create string from. * \return A pointer to the path OBJECT character string. * * \note * Caller must g_free returned character string. * */ gchar* geda_path_object_to_buffer (const GedaObject *object) { int line_width, line_space, line_length; char *buf; int num_lines; OBJECT_END line_end; OBJECT_TYPE line_type; OBJECT_FILLING fill_type; int fill_width, angle1, pitch1, angle2, pitch2; char *path_string; /* description of the line type */ line_width = object->line_width; line_end = object->line_end; line_type = object->line_type; line_length = object->line_length; line_space = object->line_space; /* filling parameters */ fill_type = object->fill_type; fill_width = object->fill_width; angle1 = object->fill_angle1; pitch1 = object->fill_pitch1; angle2 = object->fill_angle2; pitch2 = object->fill_pitch2; path_string = s_path_string_from_path (object->path); num_lines = o_text_num_lines (path_string); buf = g_strdup_printf ("%c %d %d %d %d %d %d %d %d %d %d %d %d %d\n%s", object->type, geda_object_get_color (object), line_width, line_end, line_type, line_length, line_space, fill_type, fill_width, angle1, pitch1, angle2, pitch2, num_lines, path_string); g_free (path_string); return buf; }