mirror of
git://projects.qi-hardware.com/fped.git
synced 2024-12-22 18:15:32 +02:00
new sidebar mode "Show packages"
Yes, now one can finally go through header.fpd and its 160 packages without going crazy !
This commit is contained in:
parent
809e8142b5
commit
5a1fd80fc8
9
gui.c
9
gui.c
@ -95,6 +95,13 @@ static void show_code(void)
|
||||
}
|
||||
|
||||
|
||||
static void show_pkg(void)
|
||||
{
|
||||
sidebar = sidebar_pkg;
|
||||
change_world();
|
||||
}
|
||||
|
||||
|
||||
/* ----- menu bar ---------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -120,6 +127,8 @@ static GtkItemFactoryEntry menu_entries[] = {
|
||||
NULL, show_var, 0, "<RadioItem>" },
|
||||
{ "/View/Show code", NULL, show_code, 0,
|
||||
"/View/Show variables" },
|
||||
{ "/View/Show packages",NULL, show_pkg, 0,
|
||||
"/View/Show variables" },
|
||||
};
|
||||
|
||||
|
||||
|
49
gui_frame.c
49
gui_frame.c
@ -1544,14 +1544,14 @@ static gboolean pkg_scroll_event(GtkWidget *widget, GdkEventScroll *event,
|
||||
struct pkg *pkg, *last;
|
||||
|
||||
switch (event->direction) {
|
||||
case GDK_SCROLL_UP:
|
||||
case GDK_SCROLL_DOWN:
|
||||
if (active_pkg->next)
|
||||
active_pkg = active_pkg->next;
|
||||
else
|
||||
active_pkg = pkgs->next;
|
||||
change_world();
|
||||
break;
|
||||
case GDK_SCROLL_DOWN:
|
||||
case GDK_SCROLL_UP:
|
||||
last = NULL;
|
||||
for (pkg = pkgs->next; pkg && (!last || pkg != active_pkg);
|
||||
pkg = pkg->next)
|
||||
@ -1806,7 +1806,7 @@ static GtkWidget *build_frame_refs(const struct frame *frame)
|
||||
/* ----- frames ------------------------------------------------------------ */
|
||||
|
||||
|
||||
void build_frames(GtkWidget *vbox, int wrap_width)
|
||||
static void do_build_frames(GtkWidget *vbox, int wrap_width)
|
||||
{
|
||||
struct frame *frame;
|
||||
GtkWidget *hbox, *tab, *label, *packages, *refs, *vars, *items, *meas;
|
||||
@ -1878,3 +1878,46 @@ void build_frames(GtkWidget *vbox, int wrap_width)
|
||||
|
||||
gtk_widget_show_all(hbox);
|
||||
}
|
||||
|
||||
|
||||
/* ----- packages ---------------------------------------------------------- */
|
||||
|
||||
|
||||
static void build_packages(GtkWidget *vbox, int wrap_width)
|
||||
{
|
||||
GtkWidget *label, *hbox, *field;
|
||||
struct pkg *pkg;
|
||||
|
||||
destroy_all_children(GTK_CONTAINER(vbox));
|
||||
|
||||
label = build_pkg_name();
|
||||
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
for (pkg = pkgs; pkg; pkg = pkg->next)
|
||||
if (pkg->name) {
|
||||
hbox = gtk_hbox_new(FALSE, 0);
|
||||
field = add_activator(hbox, pkg == active_pkg,
|
||||
pkg_select_event, pkg,
|
||||
"Package name. Click to make active.",
|
||||
"%s", pkg->name);
|
||||
g_signal_connect(G_OBJECT(box_of_label(field)),
|
||||
"scroll_event",
|
||||
G_CALLBACK(pkg_scroll_event), NULL);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), hbox,
|
||||
FALSE, FALSE, 2);
|
||||
}
|
||||
|
||||
gtk_widget_show_all(vbox);
|
||||
}
|
||||
|
||||
|
||||
/* ----- sidebar dispatcher ------------------------------------------------ */
|
||||
|
||||
|
||||
void build_frames(GtkWidget *vbox, int wrap_width)
|
||||
{
|
||||
if (sidebar == sidebar_pkg)
|
||||
build_packages(vbox, wrap_width);
|
||||
else
|
||||
do_build_frames(vbox, wrap_width);
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
enum sidebar {
|
||||
sidebar_var, /* show variables */
|
||||
sidebar_code, /* show code */
|
||||
sidebar_pkg, /* show packages */
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user