mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-26 01:39:41 +02:00
eeshow/: make WebKit optional; add Gtk-based fallback viewer
This commit is contained in:
parent
490a9b9e49
commit
c612cd331b
@ -27,13 +27,19 @@ CFLAGS = -g -Wall -Wextra -Wno-unused-parameter -Wshadow \
|
|||||||
-I. \
|
-I. \
|
||||||
`pkg-config --cflags cairo` \
|
`pkg-config --cflags cairo` \
|
||||||
`pkg-config --cflags libgit2` \
|
`pkg-config --cflags libgit2` \
|
||||||
`pkg-config --cflags gtk+-3.0` \
|
`pkg-config --cflags gtk+-3.0`
|
||||||
`pkg-config --cflags webkit2gtk-4.0`
|
|
||||||
LDLIBS = -lm \
|
LDLIBS = -lm \
|
||||||
`pkg-config --libs cairo` \
|
`pkg-config --libs cairo` \
|
||||||
`pkg-config --libs libgit2` \
|
`pkg-config --libs libgit2` \
|
||||||
`pkg-config --libs gtk+-3.0` \
|
`pkg-config --libs gtk+-3.0`
|
||||||
`pkg-config --libs webkit2gtk-4.0`
|
|
||||||
|
ifneq ($(USE_WEBKIT),)
|
||||||
|
CFLAGS += -DUSE_WEBKIT `pkg-config --cflags webkit2gtk-4.0`
|
||||||
|
LDLIBS += `pkg-config --libs webkit2gtk-4.0`
|
||||||
|
HELP_TEXT = help.html
|
||||||
|
else
|
||||||
|
HELP_TEXT = help.txt
|
||||||
|
endif
|
||||||
|
|
||||||
include ../common/Makefile.c-common
|
include ../common/Makefile.c-common
|
||||||
|
|
||||||
@ -44,8 +50,9 @@ all:: $(NAME)
|
|||||||
$(NAME): $(OBJS)
|
$(NAME): $(OBJS)
|
||||||
$(CC) -o $(NAME) $(OBJS) $(LDLIBS)
|
$(CC) -o $(NAME) $(OBJS) $(LDLIBS)
|
||||||
|
|
||||||
help.inc: help.html
|
help.inc: $(HELP_TEXT) Makefile
|
||||||
$(BUILD) sed 's/.*/"&"/' $< >$@ || { rm -f $@; exit 1; }
|
$(BUILD) sed 's/"/\\"/g;s/.*/"&\\n"/' $< >$@ || \
|
||||||
|
{ rm -f $@; exit 1; }
|
||||||
|
|
||||||
gui/help.c: help.inc
|
gui/help.c: help.inc
|
||||||
|
|
||||||
|
@ -13,7 +13,10 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
#ifdef USE_WEBKIT
|
||||||
#include <webkit2/webkit2.h>
|
#include <webkit2/webkit2.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "gui/help.h"
|
#include "gui/help.h"
|
||||||
|
|
||||||
@ -29,25 +32,81 @@ static void destroy_help(GtkWidget *object, gpointer user_data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void new_help_window(void)
|
static gboolean key_press_event(GtkWidget *widget, GdkEventKey *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
switch (event->keyval) {
|
||||||
|
case GDK_KEY_h:
|
||||||
|
case GDK_KEY_question:
|
||||||
|
case GDK_KEY_q:
|
||||||
|
gtk_widget_hide(window);
|
||||||
|
visible = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_WEBKIT
|
||||||
|
|
||||||
|
static GtkWidget *help_content(void)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
WebKitSettings *settings;
|
WebKitSettings *settings;
|
||||||
|
|
||||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
|
||||||
view = webkit_web_view_new();
|
view = webkit_web_view_new();
|
||||||
|
|
||||||
settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(view));
|
settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(view));
|
||||||
webkit_settings_set_default_font_size(settings, 10);
|
webkit_settings_set_default_font_size(settings, 10);
|
||||||
|
|
||||||
gtk_container_add(GTK_CONTAINER(window), view);
|
|
||||||
gtk_window_set_default_size(GTK_WINDOW(window), 480, 360);
|
|
||||||
gtk_widget_show_all(window);
|
|
||||||
|
|
||||||
webkit_web_view_load_html(WEBKIT_WEB_VIEW(view),
|
webkit_web_view_load_html(WEBKIT_WEB_VIEW(view),
|
||||||
#include "../help.inc"
|
#include "../help.inc"
|
||||||
, NULL);
|
, NULL);
|
||||||
|
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* USE_WEBKIT */
|
||||||
|
|
||||||
|
static GtkWidget *help_content(void)
|
||||||
|
{
|
||||||
|
GtkWidget *scroll, *label;
|
||||||
|
|
||||||
|
scroll = gtk_scrolled_window_new(NULL, NULL);
|
||||||
|
label = gtk_label_new(NULL);
|
||||||
|
|
||||||
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
|
||||||
|
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||||
|
|
||||||
|
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
|
||||||
|
gtk_label_set_markup(GTK_LABEL(label),
|
||||||
|
#include "../help.inc"
|
||||||
|
);
|
||||||
|
|
||||||
|
gtk_container_add(GTK_CONTAINER(scroll), label);
|
||||||
|
|
||||||
|
return scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* !USE_WEBKIT */
|
||||||
|
|
||||||
|
|
||||||
|
static void new_help_window(void)
|
||||||
|
{
|
||||||
|
GtkWidget *content;
|
||||||
|
|
||||||
|
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
content = help_content();
|
||||||
|
|
||||||
|
gtk_container_add(GTK_CONTAINER(window), content);
|
||||||
|
gtk_window_set_default_size(GTK_WINDOW(window), 480, 360);
|
||||||
|
gtk_widget_show_all(window);
|
||||||
|
|
||||||
|
gtk_widget_set_can_focus(content, TRUE);
|
||||||
|
gtk_widget_add_events(content, GDK_KEY_PRESS_MASK);
|
||||||
|
|
||||||
|
g_signal_connect(G_OBJECT(content), "key_press_event",
|
||||||
|
G_CALLBACK(key_press_event), NULL);
|
||||||
g_signal_connect(window, "destroy", G_CALLBACK(destroy_help), NULL);
|
g_signal_connect(window, "destroy", G_CALLBACK(destroy_help), NULL);
|
||||||
|
|
||||||
gtk_widget_show_all(window);
|
gtk_widget_show_all(window);
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
<TD>show older sheet
|
<TD>show older sheet
|
||||||
<TR>
|
<TR>
|
||||||
<TD>Q
|
<TD>Q
|
||||||
<TD>quit the vieweer
|
<TD>quit the viewer
|
||||||
</TABLE>
|
</TABLE>
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
|
17
eeshow/help.txt
Normal file
17
eeshow/help.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<span font_desc="Mono 10">
|
||||||
|
+ or = zoom in
|
||||||
|
- zoom out
|
||||||
|
* zoom to extents
|
||||||
|
Home go to the top sheet
|
||||||
|
Delete or
|
||||||
|
Backspace go to the next higher sheet in hierarchy
|
||||||
|
PgUp go to the previous sheet in sequence
|
||||||
|
PgDn go to the next sheet in sequence
|
||||||
|
Up or Down invoke the revision history (WIP)
|
||||||
|
Tab toggle between old and new revision
|
||||||
|
? or H show/hide help window
|
||||||
|
D when comparing revisions, show difference
|
||||||
|
N show newer sheet
|
||||||
|
O show older sheet
|
||||||
|
Q quit the viewer
|
||||||
|
</span>
|
Loading…
Reference in New Issue
Block a user