mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-25 23:42:49 +02:00
eeshow/gui.c: show sheet number on hover
This commit is contained in:
parent
8a0a79e461
commit
d63b534fb3
@ -42,6 +42,8 @@ GUI:
|
|||||||
will help ?
|
will help ?
|
||||||
- glabels: on hover, show clickable list of sheets where else label is used
|
- glabels: on hover, show clickable list of sheets where else label is used
|
||||||
- highlight nets ?
|
- highlight nets ?
|
||||||
|
- we use find_corresponding_sheet way too often. Consider changing curr_sheet
|
||||||
|
to new_sheet and old_sheet.
|
||||||
|
|
||||||
GUI/history
|
GUI/history
|
||||||
- revision selection is still a bit inconvenient and lacks quick way for
|
- revision selection is still a bit inconvenient and lacks quick way for
|
||||||
@ -56,6 +58,5 @@ GUI/history
|
|||||||
is not very clear.
|
is not very clear.
|
||||||
|
|
||||||
GUI/sheets:
|
GUI/sheets:
|
||||||
- show sheet number (e.g., on hover)
|
|
||||||
- need a way to change new/old sheet association, in case automatic selection
|
- need a way to change new/old sheet association, in case automatic selection
|
||||||
fails (reserved hotkeys: Left/Rigth)
|
fails (reserved hotkeys: Left/Rigth)
|
||||||
|
55
eeshow/gui.c
55
eeshow/gui.c
@ -45,7 +45,7 @@ struct gui_ctx;
|
|||||||
|
|
||||||
struct gui_sheet {
|
struct gui_sheet {
|
||||||
const struct sheet *sch;
|
const struct sheet *sch;
|
||||||
struct gui_ctx *ctx; /* back link */
|
struct gui_ctx *ctx; /* back link */
|
||||||
struct cro_ctx *gfx_ctx;
|
struct cro_ctx *gfx_ctx;
|
||||||
|
|
||||||
int w, h; /* in eeschema coordinates */
|
int w, h; /* in eeschema coordinates */
|
||||||
@ -53,22 +53,23 @@ struct gui_sheet {
|
|||||||
|
|
||||||
bool rendered; /* 0 if still have to render it */
|
bool rendered; /* 0 if still have to render it */
|
||||||
|
|
||||||
|
struct overlay *over; /* current overlay */
|
||||||
struct aoi *aois; /* areas of interest; in schematics coord */
|
struct aoi *aois; /* areas of interest; in schematics coord */
|
||||||
|
|
||||||
struct gui_sheet *next;
|
struct gui_sheet *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gui_hist {
|
struct gui_hist {
|
||||||
struct gui_ctx *ctx; /* back link */
|
struct gui_ctx *ctx; /* back link */
|
||||||
struct hist *vcs_hist; /* NULL if not from repo */
|
struct hist *vcs_hist; /* NULL if not from repo */
|
||||||
struct overlay *over; /* current overlay */
|
struct overlay *over; /* current overlay */
|
||||||
struct gui_sheet *sheets; /* NULL if failed */
|
struct gui_sheet *sheets; /* NULL if failed */
|
||||||
unsigned age; /* 0-based; uncommitted or HEAD = 0 */
|
unsigned age; /* 0-based; uncommitted or HEAD = 0 */
|
||||||
|
|
||||||
/* caching support */
|
/* caching support */
|
||||||
void **oids; /* file object IDs */
|
void **oids; /* file object IDs */
|
||||||
struct sch_ctx sch_ctx;
|
struct sch_ctx sch_ctx;
|
||||||
struct lib lib; /* combined library */
|
struct lib lib; /* combined library */
|
||||||
|
|
||||||
struct gui_hist *next;
|
struct gui_hist *next;
|
||||||
};
|
};
|
||||||
@ -562,6 +563,33 @@ static void close_subsheet(void *user)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool hover_sheet(void *user, bool on)
|
||||||
|
{
|
||||||
|
struct gui_sheet *sheet = user;
|
||||||
|
struct gui_ctx *ctx = sheet->ctx;
|
||||||
|
const char *title = sheet->sch->title;
|
||||||
|
|
||||||
|
if (!title)
|
||||||
|
title = "(unnamed)";
|
||||||
|
if (on) {
|
||||||
|
const struct gui_sheet *s;
|
||||||
|
int n = 0, this = -1;
|
||||||
|
|
||||||
|
for (s = ctx->new_hist->sheets; s; s = s->next) {
|
||||||
|
n++;
|
||||||
|
if (s == sheet)
|
||||||
|
this = n;
|
||||||
|
}
|
||||||
|
overlay_text(sheet->over, "<b>%s</b>\n<big>%d / %d</big>",
|
||||||
|
title, this, n);
|
||||||
|
} else {
|
||||||
|
overlay_text(sheet->over, "<b>%s</b>", title);
|
||||||
|
}
|
||||||
|
redraw(ctx);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool show_history_details(void *user, bool on)
|
static bool show_history_details(void *user, bool on)
|
||||||
{
|
{
|
||||||
struct gui_hist *h = user;
|
struct gui_hist *h = user;
|
||||||
@ -631,18 +659,13 @@ static struct gui_sheet *find_parent_sheet(struct gui_sheet *sheets,
|
|||||||
static void sheet_selector_recurse(struct gui_ctx *ctx, struct gui_sheet *sheet)
|
static void sheet_selector_recurse(struct gui_ctx *ctx, struct gui_sheet *sheet)
|
||||||
{
|
{
|
||||||
struct gui_sheet *parent;
|
struct gui_sheet *parent;
|
||||||
const char *title;
|
|
||||||
struct overlay *over;
|
|
||||||
|
|
||||||
parent = find_parent_sheet(ctx->new_hist->sheets, sheet);
|
parent = find_parent_sheet(ctx->new_hist->sheets, sheet);
|
||||||
if (parent)
|
if (parent)
|
||||||
sheet_selector_recurse(ctx, parent);
|
sheet_selector_recurse(ctx, parent);
|
||||||
title = sheet->sch->title;
|
sheet->over = overlay_add(&ctx->sheet_overlays, &ctx->aois,
|
||||||
if (!title)
|
hover_sheet, close_subsheet, sheet);
|
||||||
title = "(unnamed)";
|
hover_sheet(sheet, 0);
|
||||||
over = overlay_add(&ctx->sheet_overlays, &ctx->aois,
|
|
||||||
NULL, close_subsheet, sheet);
|
|
||||||
overlay_text(over, "<b>%s</b>", title);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user