1
0
mirror of git://projects.qi-hardware.com/fped.git synced 2024-11-25 15:54:04 +02:00

Removing the old interface for adding frame refrences. Also updated the

documentation.

- Makefile, icons/frame_locked.fig, icons/frame_ready.fig: removed the icons of
  locked and ready frames 
- gui_tool.c: removed the frame tool and all the image handling associated with
  it, leaving only the bits in place that are used by frame to canvas dragging 
- gui_tool.h, gui_tool.c (tool_frame_update, tool_frame_deleted), gui_canvas.c
  (key_press_event), gui_frame.c (popup_del_frame, select_frame): removed
  the notifications of frame changes
- gui.html: removed the old clumsy frame reference procedure and described the
  new way



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5937 99fdad57-331a-0410-800a-d7fa5415bdb3
This commit is contained in:
werner 2010-04-25 00:11:45 +00:00
parent 84e03e5542
commit af0d2c78cb
8 changed files with 30 additions and 122 deletions

View File

@ -22,7 +22,7 @@ OBJS = fped.o expr.o coord.o obj.o delete.o inst.o util.o error.o \
gui_tool.o gui_over.o gui_meas.o gui_frame.o gui_frame_drag.o gui_tool.o gui_over.o gui_meas.o gui_frame.o gui_frame_drag.o
XPMS = point.xpm delete.xpm delete_off.xpm \ XPMS = point.xpm delete.xpm delete_off.xpm \
vec.xpm frame.xpm frame_locked.xpm frame_ready.xpm \ vec.xpm frame.xpm \
line.xpm rect.xpm pad.xpm rpad.xpm arc.xpm circ.xpm \ line.xpm rect.xpm pad.xpm rpad.xpm arc.xpm circ.xpm \
meas.xpm meas_x.xpm meas_y.xpm \ meas.xpm meas_x.xpm meas_y.xpm \
stuff.xpm stuff_off.xpm meas_off.xpm \ stuff.xpm stuff_off.xpm meas_off.xpm \

View File

@ -93,7 +93,32 @@ Frames serve various purposes:
a pad. a pad.
<LI> To define a repetition through a loop or a table. <LI> To define a repetition through a loop or a table.
<LI> To set variables for child frames. <LI> To set variables for child frames.
</UL </UL>
At the bottom of the hierarchy, we have the root frame. To add another
frame, right-click on the root frame's label "(root)" and select "Add
frame".
<P>
To be able to put items into the new frame, it has to be attached to
the root frame (or to any other frame that's attached). This is called a
<I>frame reference</I>. First, we need a place to attach it to. This
can be the origin of its parent frame or it can be the end of a vector
in the parent frame. To create the frame reference, do this:
<P>
<UL>
<LI> Click on the parent frame to select it.
<LI> Press the left mouse button on the frame you wish to reference
and drag it (move the mouse pointer while keeping the left button
pressed) into the canvas. When dragging, the mouse cursor changes
to show a hand.
<LI> When the mouse pointer is above a suitable point of attachment,
the point of attachment is highlighted with a red circle and the
mouse cursor changes to show a hand with a plus sign.
<LI> At the desired location, release the mouse button.
</UL>
If you wish to cancel the operation, simply release the mouse button at
any place that isn't a point of attachment.
<H1>Variables</H1> <H1>Variables</H1>
@ -191,25 +216,6 @@ Tools are used to add new elements and to manipulate existing ones.
Note that the starting point of the vector has to be in the same Note that the starting point of the vector has to be in the same
frame as the vector being drawn. This limitation also applies to frame as the vector being drawn. This limitation also applies to
points defining pads and silk-screen items. points defining pads and silk-screen items.
<DT><IMG src="manual/frame.png">&nbsp;<IMG src="manual/frame_locked.png">
&nbsp;<IMG src="manual/frame_ready.png">
<DD> Add a frame reference. A frame reference inserts the content of a
frame into another frame. There are three steps in this process:
<UL>
<LI> Select the frame to be inserted and click on the frame icon.
A large black dot appears in the icon to indicate that a frame
reference has been chosen.
<LI> Select the frame into which to insert the reference. The dot
changes to green to indicate that the reference can now be placed.
If the dot stays black, then the selected frame is not a valid
destination, i.e., because the reference in turn references this
frame.
<LI> Click on the location at which to attach the reference. This
location can be either the end of a vector or the frame's origin.
</UL>
When finished, don't forget that the destination frame is still selected.
In order to add elements to the newly referenced frame, you have to
select it first.
<DT><IMG src="manual/pad.png">&nbsp;<IMG src="manual/rpad.png"> <DT><IMG src="manual/pad.png">&nbsp;<IMG src="manual/rpad.png">
<DD> Add a pad. Pads are either rectangular or rounded. They are <DD> Add a pad. Pads are either rectangular or rounded. They are
defined by two points which are opposite corners of the rectangle defined by two points which are opposite corners of the rectangle

View File

@ -441,7 +441,6 @@ static gboolean key_press_event(GtkWidget *widget, GdkEventKey *event,
case GDK_KP_Delete: case GDK_KP_Delete:
if (selected_inst) { if (selected_inst) {
inst_delete(selected_inst); inst_delete(selected_inst);
tool_frame_update();
change_world(); change_world();
} }
break; break;

View File

@ -130,7 +130,6 @@ static void popup_del_frame(void)
struct frame *frame = popup_data; struct frame *frame = popup_data;
assert(frame != root_frame); assert(frame != root_frame);
tool_frame_deleted(frame);
delete_frame(frame); delete_frame(frame);
if (active_frame == frame) if (active_frame == frame)
select_frame(root_frame); select_frame(root_frame);
@ -1680,7 +1679,6 @@ void select_frame(struct frame *frame)
if (active_frame) if (active_frame)
label_in_box_bg(active_frame->label, COLOR_FRAME_UNSELECTED); label_in_box_bg(active_frame->label, COLOR_FRAME_UNSELECTED);
active_frame = frame; active_frame = frame;
tool_frame_update();
change_world(); change_world();
} }

View File

@ -34,8 +34,6 @@
#include "icons/arc.xpm" #include "icons/arc.xpm"
#include "icons/circ.xpm" #include "icons/circ.xpm"
#include "icons/frame.xpm" #include "icons/frame.xpm"
#include "icons/frame_locked.xpm"
#include "icons/frame_ready.xpm"
#include "icons/line.xpm" #include "icons/line.xpm"
#include "icons/meas.xpm" #include "icons/meas.xpm"
#include "icons/meas_x.xpm" #include "icons/meas_x.xpm"
@ -49,11 +47,10 @@
#include "icons/vec.xpm" #include "icons/vec.xpm"
static GtkWidget *ev_point, *ev_delete, *ev_frame; static GtkWidget *ev_point, *ev_delete;
static GtkWidget *active_tool; static GtkWidget *active_tool;
static struct tool_ops *active_ops = NULL; static struct tool_ops *active_ops = NULL;
static struct inst *hover_inst = NULL; static struct inst *hover_inst = NULL;
static GtkWidget *frame_image, *frame_image_locked, *frame_image_ready;
static GtkWidget *delete_image[2]; static GtkWidget *delete_image[2];
static struct drag_state { static struct drag_state {
@ -591,47 +588,12 @@ static int is_parent_of(const struct frame *p, const struct frame *c)
} }
/* ----- frame cache ------------------------------------------------------- */ /* ----- frame ------------------------------------------------------------- */
static struct frame *locked_frame = NULL; static struct frame *locked_frame = NULL;
static void set_frame_image(GtkWidget *image)
{
set_image(ev_frame, image);
}
void tool_frame_update(void)
{
set_frame_image(!locked_frame ? frame_image :
is_parent_of(locked_frame, active_frame) ?
frame_image_locked : frame_image_ready);
}
void tool_frame_deleted(const struct frame *frame)
{
if (frame == locked_frame) {
locked_frame = NULL;
set_frame_image(frame_image);
}
}
static void tool_selected_frame(void)
{
if (active_frame != root_frame) {
locked_frame = active_frame;
set_frame_image(frame_image_locked);
}
}
/* ----- frame ------------------------------------------------------------- */
struct pix_buf *draw_move_frame(struct inst *inst, struct coord pos, int i) struct pix_buf *draw_move_frame(struct inst *inst, struct coord pos, int i)
{ {
struct pix_buf *buf; struct pix_buf *buf;
@ -663,14 +625,13 @@ static int end_new_frame(struct inst *from, struct inst *to)
if (!locked_frame->active_ref) if (!locked_frame->active_ref)
locked_frame->active_ref = obj; locked_frame->active_ref = obj;
locked_frame = NULL; locked_frame = NULL;
tool_frame_update();
tool_reset(); tool_reset();
return 1; return 1;
} }
static struct tool_ops frame_ops = { static struct tool_ops frame_ops = {
.tool_selected = tool_selected_frame, .tool_selected = NULL,
.drag_new = NULL, .drag_new = NULL,
.end_new = end_new_frame, .end_new = end_new_frame,
}; };
@ -1199,8 +1160,6 @@ GtkWidget *gui_setup_tools(GdkDrawable *drawable)
tool_button(bar, drawable, xpm_vec, tool_button(bar, drawable, xpm_vec,
"Add a vector", "Add a vector",
tool_button_press_event, &vec_ops); tool_button_press_event, &vec_ops);
ev_frame = tool_button(bar, drawable, NULL, NULL,
tool_button_press_event, &frame_ops);
tool_button(bar, drawable, xpm_pad, tool_button(bar, drawable, xpm_pad,
"Add a rectangular pad", "Add a rectangular pad",
tool_button_press_event, &pad_ops); tool_button_press_event, &pad_ops);
@ -1227,17 +1186,6 @@ GtkWidget *gui_setup_tools(GdkDrawable *drawable)
"Add a vertical measurement", "Add a vertical measurement",
tool_button_press_event, &tool_meas_ops_y); tool_button_press_event, &tool_meas_ops_y);
frame_image = gtk_widget_ref(make_image(drawable, xpm_frame,
"Step 1: select the current frame for insertion"));
frame_image_locked =
gtk_widget_ref(make_image(drawable, xpm_frame_locked,
"Step 2: select the frame into which to insert"));
frame_image_ready =
gtk_widget_ref(make_image(drawable, xpm_frame_ready,
"Final step: add the frame reference to an anchor point "
"(vector or origin)"));
set_frame_image(frame_image);
delete_image[0] = gtk_widget_ref(make_image(drawable, xpm_delete_off, delete_image[0] = gtk_widget_ref(make_image(drawable, xpm_delete_off,
NULL)); NULL));
delete_image[1] = gtk_widget_ref(make_image(drawable, xpm_delete, delete_image[1] = gtk_widget_ref(make_image(drawable, xpm_delete,
@ -1252,9 +1200,6 @@ GtkWidget *gui_setup_tools(GdkDrawable *drawable)
void gui_cleanup_tools(void) void gui_cleanup_tools(void)
{ {
g_object_unref(frame_image);
g_object_unref(frame_image_locked);
g_object_unref(frame_image_ready);
g_object_unref(delete_image[0]); g_object_unref(delete_image[0]);
g_object_unref(delete_image[1]); g_object_unref(delete_image[1]);
} }

View File

@ -65,14 +65,6 @@ struct pix_buf *draw_move_line_common(struct inst *inst,
struct coord end, struct coord pos, int i); struct coord end, struct coord pos, int i);
struct pix_buf *drag_new_line(struct inst *from, struct coord to); struct pix_buf *drag_new_line(struct inst *from, struct coord to);
/*
* Cache the frame and track it.
*/
void tool_frame_update(void);
void tool_frame_deleted(const struct frame *frame);
void tool_push_frame(struct frame *frame); void tool_push_frame(struct frame *frame);
int tool_place_frame(struct frame *frame, struct coord pos); int tool_place_frame(struct frame *frame, struct coord pos);
void tool_pop_frame(void); void tool_pop_frame(void);

View File

@ -1,17 +0,0 @@
#FIG 3.2 Produced by xfig version 3.2.5a
Landscape
Center
Inches
A4
100.00
Single
-2
1200 2
6 3750 3225 5775 4200
2 1 0 10 12 7 50 -1 -1 0.000 0 0 -1 0 0 3
3900 4125 3900 3525 5700 3525
4 0 12 50 -1 22 42 0.0000 4 135 450 3750 3375 FRAME\001
-6
1 3 0 0 0 0 50 -1 20 0.000 1 0.0000 5400 4200 375 375 5400 4200 5775 4200
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
3600 2400 6000 2400 6000 4800 3600 4800 3600 2400

View File

@ -1,15 +0,0 @@
#FIG 3.2 Produced by xfig version 3.2.5a
Landscape
Center
Inches
A4
100.00
Single
-2
1200 2
1 3 0 0 0 12 50 -1 20 0.000 1 0.0000 5400 4200 375 375 5400 4200 5775 4200
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
3600 2400 6000 2400 6000 4800 3600 4800 3600 2400
2 1 0 10 12 7 50 -1 -1 0.000 0 0 -1 0 0 3
3900 4125 3900 3525 5700 3525
4 0 12 50 -1 22 42 0.0000 4 135 450 3750 3375 FRAME\001