mirror of
git://projects.qi-hardware.com/fped.git
synced 2024-11-25 19:02:29 +02:00
- new visualization option: show all frames or show only current frame
- new visualization option: highlight pads and silk ("final" view) git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5527 99fdad57-331a-0410-800a-d7fa5415bdb3
This commit is contained in:
parent
5a2eb77629
commit
63e60182bb
3
Makefile
3
Makefile
@ -22,7 +22,8 @@ XPMS = point.xpm delete.xpm delete_off.xpm \
|
|||||||
vec.xpm frame.xpm frame_locked.xpm frame_ready.xpm \
|
vec.xpm frame.xpm frame_locked.xpm frame_ready.xpm \
|
||||||
line.xpm rect.xpm pad.xpm rpad.xpm circ.xpm \
|
line.xpm rect.xpm pad.xpm rpad.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 \
|
||||||
|
bright.xpm bright_off.xpm all.xpm all_off.xpm
|
||||||
|
|
||||||
SHELL = /bin/bash
|
SHELL = /bin/bash
|
||||||
CFLAGS_GTK = `pkg-config --cflags gtk+-2.0`
|
CFLAGS_GTK = `pkg-config --cflags gtk+-2.0`
|
||||||
|
53
gui.c
53
gui.c
@ -27,16 +27,23 @@
|
|||||||
#include "icons/stuff_off.xpm"
|
#include "icons/stuff_off.xpm"
|
||||||
#include "icons/meas.xpm"
|
#include "icons/meas.xpm"
|
||||||
#include "icons/meas_off.xpm"
|
#include "icons/meas_off.xpm"
|
||||||
|
#include "icons/all.xpm"
|
||||||
|
#include "icons/all_off.xpm"
|
||||||
|
#include "icons/bright.xpm"
|
||||||
|
#include "icons/bright_off.xpm"
|
||||||
|
|
||||||
|
|
||||||
GtkWidget *root;
|
GtkWidget *root;
|
||||||
|
int show_all = 1;
|
||||||
int show_stuff = 1;
|
int show_stuff = 1;
|
||||||
int show_meas = 1;
|
int show_meas = 1;
|
||||||
|
int show_bright = 0;
|
||||||
|
|
||||||
|
|
||||||
static GtkWidget *frames_box;
|
static GtkWidget *frames_box;
|
||||||
static GtkWidget *ev_stuff, *ev_meas;
|
static GtkWidget *ev_stuff, *ev_meas, *ev_all, *ev_bright;
|
||||||
static GtkWidget *stuff_image[2], *meas_image[2];
|
static GtkWidget *stuff_image[2], *meas_image[2], *all_image[2];
|
||||||
|
static GtkWidget *bright_image[2];
|
||||||
|
|
||||||
|
|
||||||
/* ----- view callbacks ---------------------------------------------------- */
|
/* ----- view callbacks ---------------------------------------------------- */
|
||||||
@ -87,6 +94,21 @@ static void make_menu_bar(GtkWidget *hbox)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean toggle_all(GtkWidget *widget, GdkEventButton *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
switch (event->button) {
|
||||||
|
case 1:
|
||||||
|
show_all = !show_all;
|
||||||
|
set_image(ev_all, all_image[show_all]);
|
||||||
|
inst_deselect();
|
||||||
|
redraw();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static gboolean toggle_stuff(GtkWidget *widget, GdkEventButton *event,
|
static gboolean toggle_stuff(GtkWidget *widget, GdkEventButton *event,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
@ -117,6 +139,21 @@ static gboolean toggle_meas(GtkWidget *widget, GdkEventButton *event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean toggle_bright(GtkWidget *widget, GdkEventButton *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
switch (event->button) {
|
||||||
|
case 1:
|
||||||
|
show_bright = !show_bright;
|
||||||
|
set_image(ev_bright, bright_image[show_bright]);
|
||||||
|
inst_deselect();
|
||||||
|
redraw();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void make_tool_bar(GtkWidget *hbox, GdkDrawable *drawable)
|
static void make_tool_bar(GtkWidget *hbox, GdkDrawable *drawable)
|
||||||
{
|
{
|
||||||
GtkWidget *bar;
|
GtkWidget *bar;
|
||||||
@ -126,16 +163,24 @@ static void make_tool_bar(GtkWidget *hbox, GdkDrawable *drawable)
|
|||||||
//gtk_box_pack_end(GTK_BOX(hbox), bar, FALSE, FALSE, 0);
|
//gtk_box_pack_end(GTK_BOX(hbox), bar, FALSE, FALSE, 0);
|
||||||
gtk_toolbar_set_style(GTK_TOOLBAR(bar), GTK_TOOLBAR_ICONS);
|
gtk_toolbar_set_style(GTK_TOOLBAR(bar), GTK_TOOLBAR_ICONS);
|
||||||
|
|
||||||
|
ev_all = tool_button(bar, drawable, NULL, toggle_all, NULL);
|
||||||
ev_stuff = tool_button(bar, drawable, NULL, toggle_stuff, NULL);
|
ev_stuff = tool_button(bar, drawable, NULL, toggle_stuff, NULL);
|
||||||
ev_meas = tool_button(bar, drawable, NULL, toggle_meas, NULL);
|
ev_meas = tool_button(bar, drawable, NULL, toggle_meas, NULL);
|
||||||
|
ev_bright = tool_button(bar, drawable, NULL, toggle_bright, NULL);
|
||||||
|
|
||||||
stuff_image[0] = gtk_widget_ref(make_image(drawable, xpm_stuff_off));
|
stuff_image[0] = gtk_widget_ref(make_image(drawable, xpm_stuff_off));
|
||||||
stuff_image[1] = gtk_widget_ref(make_image(drawable, xpm_stuff));
|
stuff_image[1] = gtk_widget_ref(make_image(drawable, xpm_stuff));
|
||||||
meas_image[0] = gtk_widget_ref(make_image(drawable, xpm_meas_off));
|
meas_image[0] = gtk_widget_ref(make_image(drawable, xpm_meas_off));
|
||||||
meas_image[1] = gtk_widget_ref(make_image(drawable, xpm_meas));
|
meas_image[1] = gtk_widget_ref(make_image(drawable, xpm_meas));
|
||||||
|
all_image[0] = gtk_widget_ref(make_image(drawable, xpm_all_off));
|
||||||
|
all_image[1] = gtk_widget_ref(make_image(drawable, xpm_all));
|
||||||
|
bright_image[0] = gtk_widget_ref(make_image(drawable, xpm_bright_off));
|
||||||
|
bright_image[1] = gtk_widget_ref(make_image(drawable, xpm_bright));
|
||||||
|
|
||||||
set_image(ev_stuff, stuff_image[show_stuff]);
|
set_image(ev_stuff, stuff_image[show_stuff]);
|
||||||
set_image(ev_meas, meas_image[show_meas]);
|
set_image(ev_meas, meas_image[show_meas]);
|
||||||
|
set_image(ev_all, all_image[show_all]);
|
||||||
|
set_image(ev_bright, bright_image[show_bright]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -145,6 +190,10 @@ static void cleanup_tool_bar(void)
|
|||||||
g_object_unref(stuff_image[1]);
|
g_object_unref(stuff_image[1]);
|
||||||
g_object_unref(meas_image[0]);
|
g_object_unref(meas_image[0]);
|
||||||
g_object_unref(meas_image[1]);
|
g_object_unref(meas_image[1]);
|
||||||
|
g_object_unref(all_image[0]);
|
||||||
|
g_object_unref(all_image[1]);
|
||||||
|
g_object_unref(bright_image[0]);
|
||||||
|
g_object_unref(bright_image[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
2
gui.h
2
gui.h
@ -18,8 +18,10 @@
|
|||||||
|
|
||||||
|
|
||||||
extern GtkWidget *root;
|
extern GtkWidget *root;
|
||||||
|
extern int show_all;
|
||||||
extern int show_stuff;
|
extern int show_stuff;
|
||||||
extern int show_meas;
|
extern int show_meas;
|
||||||
|
extern int show_bright;
|
||||||
|
|
||||||
|
|
||||||
/* update everything after a model change */
|
/* update everything after a model change */
|
||||||
|
@ -111,7 +111,7 @@ static enum mode get_mode(struct inst *self)
|
|||||||
{
|
{
|
||||||
if (selected_inst == self)
|
if (selected_inst == self)
|
||||||
return mode_selected;
|
return mode_selected;
|
||||||
return self->active ? mode_active : mode_inactive;
|
return self->active || bright(self) ? mode_active : mode_inactive;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
22
icons/all.fig
Normal file
22
icons/all.fig
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
A4
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
0 32 #c0c000
|
||||||
|
6 4350 3225 5625 4425
|
||||||
|
2 1 0 15 13 7 50 -1 -1 0.000 1 1 -1 0 0 2
|
||||||
|
4500 3825 5475 3825
|
||||||
|
2 1 0 15 13 7 50 -1 -1 0.000 1 1 -1 0 0 2
|
||||||
|
4650 3375 5250 4275
|
||||||
|
2 1 0 15 13 7 50 -1 -1 0.000 1 1 -1 0 0 2
|
||||||
|
5250 3375 4650 4275
|
||||||
|
-6
|
||||||
|
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 1 -1 0 0 3
|
||||||
|
3900 3690 3900 2850 5700 2850
|
22
icons/all_off.fig
Normal file
22
icons/all_off.fig
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
A4
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
0 32 #c0c000
|
||||||
|
6 4350 3225 5625 4425
|
||||||
|
2 1 0 15 0 7 50 -1 -1 0.000 1 1 -1 0 0 2
|
||||||
|
4650 3375 5250 4275
|
||||||
|
2 1 0 15 0 7 50 -1 -1 0.000 1 1 -1 0 0 2
|
||||||
|
5250 3375 4650 4275
|
||||||
|
2 1 0 15 0 7 50 -1 -1 0.000 1 1 -1 0 0 2
|
||||||
|
4500 3825 5475 3825
|
||||||
|
-6
|
||||||
|
2 2 0 1 0 7 60 -1 10 0.000 0 0 -1 0 0 5
|
||||||
|
3600 2400 6000 2400 6000 4800 3600 4800 3600 2400
|
||||||
|
2 1 0 10 0 7 50 -1 -1 0.000 0 1 -1 0 0 3
|
||||||
|
3900 3690 3900 2850 5700 2850
|
24
icons/bright.fig
Normal file
24
icons/bright.fig
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
A4
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
0 32 #b0ffff
|
||||||
|
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 2 0 0 0 4 50 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4200 3150 4650 3150 4650 4050 4200 4050 4200 3150
|
||||||
|
2 2 0 0 0 4 50 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4950 3150 5400 3150 5400 4050 4950 4050 4950 3150
|
||||||
|
2 2 0 10 3 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3900 2850 5700 2850 5700 4350 3900 4350 3900 2850
|
||||||
|
2 2 0 15 29 7 60 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
4950 3150 5400 3150 5400 4050 4950 4050 4950 3150
|
||||||
|
2 2 0 15 29 7 60 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
4200 3150 4650 3150 4650 4050 4200 4050 4200 3150
|
||||||
|
2 2 0 20 32 7 60 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3900 2850 5700 2850 5700 4350 3900 4350 3900 2850
|
18
icons/bright_off.fig
Normal file
18
icons/bright_off.fig
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
A4
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
0 32 #b0ffff
|
||||||
|
2 2 0 0 0 19 50 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4200 3150 4650 3150 4650 4050 4200 4050 4200 3150
|
||||||
|
2 2 0 0 0 19 50 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4950 3150 5400 3150 5400 4050 4950 4050 4950 3150
|
||||||
|
2 2 0 1 0 7 65 -1 10 0.000 0 0 -1 0 0 5
|
||||||
|
3600 2400 6000 2400 6000 4800 3600 4800 3600 2400
|
||||||
|
2 2 0 10 16 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3900 2850 5700 2850 5700 4350 3900 4350 3900 2850
|
31
inst.c
31
inst.c
@ -41,6 +41,7 @@ static unsigned long active_set = 0;
|
|||||||
|
|
||||||
static struct inst_ops vec_ops;
|
static struct inst_ops vec_ops;
|
||||||
static struct inst_ops frame_ops;
|
static struct inst_ops frame_ops;
|
||||||
|
static struct inst_ops meas_ops;
|
||||||
|
|
||||||
|
|
||||||
#define IS_ACTIVE ((active_set & 1))
|
#define IS_ACTIVE ((active_set & 1))
|
||||||
@ -63,6 +64,27 @@ static int show(enum inst_prio prio)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int bright(const struct inst *inst)
|
||||||
|
{
|
||||||
|
if (!show_bright)
|
||||||
|
return 0;
|
||||||
|
return inst->ops != &vec_ops && inst->ops != &frame_ops &&
|
||||||
|
inst->ops != &meas_ops;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int show_this(const struct inst *inst)
|
||||||
|
{
|
||||||
|
if (show_all)
|
||||||
|
return 1;
|
||||||
|
if (inst->ops == &frame_ops && inst->u.frame.ref == active_frame)
|
||||||
|
return 1;
|
||||||
|
if (!inst->outer)
|
||||||
|
return active_frame == root_frame;
|
||||||
|
return inst->outer->u.frame.ref == active_frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----- selection of items not on the canvas ------------------------------ */
|
/* ----- selection of items not on the canvas ------------------------------ */
|
||||||
|
|
||||||
|
|
||||||
@ -176,6 +198,8 @@ int inst_select(struct coord pos)
|
|||||||
if (!show(prio))
|
if (!show(prio))
|
||||||
continue;
|
continue;
|
||||||
FOR_ALL_INSTS(i, prio, inst) {
|
FOR_ALL_INSTS(i, prio, inst) {
|
||||||
|
if (!show_this(inst))
|
||||||
|
continue;
|
||||||
if (!inst->ops->distance)
|
if (!inst->ops->distance)
|
||||||
continue;
|
continue;
|
||||||
if (!inst_connected(inst))
|
if (!inst_connected(inst))
|
||||||
@ -228,6 +252,9 @@ int inst_select(struct coord pos)
|
|||||||
goto selected;
|
goto selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!show_all)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (any_same_frame) {
|
if (any_same_frame) {
|
||||||
if (activate_item(any_same_frame))
|
if (activate_item(any_same_frame))
|
||||||
return inst_select(pos);
|
return inst_select(pos);
|
||||||
@ -1148,7 +1175,9 @@ void inst_draw(void)
|
|||||||
|
|
||||||
FOR_INST_PRIOS_UP(prio)
|
FOR_INST_PRIOS_UP(prio)
|
||||||
FOR_ALL_INSTS(i, prio, inst)
|
FOR_ALL_INSTS(i, prio, inst)
|
||||||
if (show(prio) && !inst->active && inst->ops->draw)
|
if (show_this(inst))
|
||||||
|
if (show(prio) && !inst->active &&
|
||||||
|
inst->ops->draw)
|
||||||
inst->ops->draw(inst);
|
inst->ops->draw(inst);
|
||||||
FOR_INST_PRIOS_UP(prio)
|
FOR_INST_PRIOS_UP(prio)
|
||||||
FOR_ALL_INSTS(i, prio, inst)
|
FOR_ALL_INSTS(i, prio, inst)
|
||||||
|
2
inst.h
2
inst.h
@ -147,6 +147,8 @@ extern struct inst *curr_frame;
|
|||||||
FOR_PKG_INSTS(i ? active_pkg : pkgs, prio, inst)
|
FOR_PKG_INSTS(i ? active_pkg : pkgs, prio, inst)
|
||||||
|
|
||||||
|
|
||||||
|
int bright(const struct inst *inst);
|
||||||
|
|
||||||
void inst_select_outside(void *item, void (*deselect)(void *item));
|
void inst_select_outside(void *item, void (*deselect)(void *item));
|
||||||
int inst_select(struct coord pos);
|
int inst_select(struct coord pos);
|
||||||
void inst_deselect(void);
|
void inst_deselect(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user