Updated interface from zjui project

The whole project files have been replaced by the first version
of zjui, a side project for the user interface. Additionally there
has been an update of the Makefile and the configuration.

Mentionable features:
  * Buffered commands
  * Statusbar
  * Advanced completion
  * Notification system
  * Modes and mode-depending shortcuts
This commit is contained in:
Moritz Lipp 2009-12-26 14:30:50 +01:00
parent 58dcfb001d
commit d1ee4e0689
6 changed files with 981 additions and 1567 deletions

View File

@ -1,4 +1,4 @@
Copyright (c) 2009 ML, JY
Copyright (c) 2009 ML, JY - pwmt.org
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@ -18,4 +18,3 @@ freely, subject to the following restrictions:
3. This notice may not be removed or altered from any source
distribution.

View File

@ -1,28 +1,77 @@
LIBS = gtk+-2.0 poppler poppler-glib
FLAGS = `pkg-config --cflags --libs $(LIBS)`
# See LICENSE file for license and copyright information
# zathura - user interface
include config.mk
PROJECT = zathura
SOURCE = zathura.c
TARGET = zathura
OBJECTS = ${SOURCE:.c=.o}
DOBJECTS = ${SOURCE:.c=.do}
all: $(TARGET)
all: options ${PROJECT}
$(TARGET): zathura.c config.h
gcc $(FLAGS) -Wall -o $(TARGET) $(SOURCE)
options:
@echo ${PROJECT} buld options:
@echo "CFLAGS = ${CFLAGS}"
@echo "LDFLAGS = ${LDFLAGS}"
@echo "DFLAGS = ${DFLAGS}"
@echo "CC = ${CC}"
%.o: %.c
@echo CC $<
@${CC} -c ${CFLAGS} -o $@ $<
%.do: %.c
@echo CC $<
@${CC} -c ${CFLAGS} ${DFLAGS} -o $@ $<
${OBJECTS}: config.h config.mk
${DOBJECTS}: config.h config.mk
config.h:
@cp config.def.h $@
${PROJECT}: ${OBJECTS}
@echo CC -o $@
@${CC} -o $@ ${OBJECTS} ${LDFLAGS}
clean:
rm -f $(TARGET)
@rm -rf ${PROJECT} ${OBJECTS} ${PROJECT}-${VERSION}.tar.gz \
${DOBJECTS} ${PROJECT}-debug
debug:
gcc $(FLAGS) -Wall -o $(TARGET) $(SOURCE) -g
${PROJECT}-debug: ${DOBJECTS}
@echo CC -o ${PROJECT}-debug
@${CC} -o ${PROJECT}-debug ${DOBJECTS} ${LDFLAGS}
debug: ${PROJECT}-debug
valgrind: debug
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./${TARGET}
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes \
./${PROJECT}-debug
gdb: debug
cgdb ${PROJECT}-debug
dist: clean
@mkdir -p ${PROJECT}-${VERSION}
@cp -R LICENSE Makefile config.mk config.def.h README \
${PROJECT}.1 ${SOURCE} ${PROJECT}-${VERSION}
@tar -cf ${PROJECT}-${VERSION}.tar ${PROJECT}-${VERSION}
@gzip ${PROJECT}-${VERSION}.tar
@rm -rf ${PROJECT}-${VERSION}
install: all
@echo installing executeable to /usr/bin
@mkdir -p /usr/bin
@cp -f ${TARGET} /usr/bin
@chmod 755 /usr/bin/${TARGET}
@echo installing executeable file
@mkdir -p ${PREFIX}/bin
@cp -f ${PROJECT} ${PREFIX}/bin
@chmod 755 ${PROJECT} ${PREFIX}/bin/${PROJECT}
@echo installing manual page
@mkdir -p ${MANPREFIX}/man1
@sed "s/VERSION/${VERSION}/g" < ${PROJECT}.1 > ${MANPREFIX}/man1/${PROJECT}.1
@chmod 644 ${MANPREFIX}/man1/${PROJECT}.1
uninstall:
@echo removing executeable from /usr/bin
@rm -f /usr/bin/${TARGET}
@echo removing executeable file
@rm -f ${MANPREFIX}/bin/${PROJECT}
@echo removing manual page
@rm -f ${MANPREFIX}/man1/${PROJECT}.1

72
config.def.h Normal file
View File

@ -0,0 +1,72 @@
/* settings */
static const int DEFAULT_WIDTH = 800;
static const int DEFAULT_HEIGHT = 600;
/* completion */
static const char FORMAT_COMMAND[] = "<b>%s</b>";
static const char FORMAT_DESCRIPTION[] = "<i>%s</i>";
/* look */
static const char font[] = "monospace normal 9";
static const char default_bgcolor[] = "#000000";
static const char default_fgcolor[] = "#DDDDDD";
static const char inputbar_bgcolor[] = "#141414";
static const char inputbar_fgcolor[] = "#9FBC00";
static const char statusbar_bgcolor[] = "#000000";
static const char statusbar_fgcolor[] = "#FFFFFF";
static const char completion_fgcolor[] = "#DDDDDD";
static const char completion_bgcolor[] = "#232323";
static const char completion_g_fgcolor[] = "#DEDEDE";
static const char completion_g_bgcolor[] = "#FF00FF";
static const char completion_hl_fgcolor[] = "#232323";
static const char completion_hl_bgcolor[] = "#9FBC00";
static const char notification_e_bgcolor[] = "#FF1212";
static const char notification_e_fgcolor[] = "#FFFFFF";
static const char notification_w_bgcolor[] = "#FFF712";
static const char notification_w_fgcolor[] = "#000000";
/* shortcuts */
Shortcut shortcuts[] = {
/* mask, key, function, mode, argument */
{0, GDK_i, sc_change_mode, NORMAL, { INSERT } },
{0, GDK_v, sc_change_mode, NORMAL, { VISUAL } },
{GDK_CONTROL_MASK, GDK_q, sc_quit, -1, {0} },
{GDK_SHIFT_MASK, GDK_slash, sc_focus_inputbar, -1, { .data = "/" } },
{GDK_SHIFT_MASK, GDK_question, sc_focus_inputbar, -1, { .data = "?" } },
{0, GDK_colon, sc_focus_inputbar, -1, { .data = ":" } },
{0, GDK_Escape, sc_abort, -1, {0} },
};
/* inputbar shortcuts */
InputbarShortcut inputbar_shortcuts[] = {
/* mask, key, function, argument */
{0, GDK_Escape, isc_abort, {0} },
{0, GDK_Up, isc_command_history, {0} },
{0, GDK_Down, isc_command_history, {0} },
{0, GDK_Tab, isc_completion, { NEXT } },
{GDK_CONTROL_MASK, GDK_Tab, isc_completion, { NEXT_GROUP } },
{0, GDK_ISO_Left_Tab, isc_completion, { PREVIOUS } },
{GDK_CONTROL_MASK, GDK_ISO_Left_Tab, isc_completion, { PREVIOUS_GROUP } },
{GDK_CONTROL_MASK, GDK_w, isc_string_manipulation, { DELETE_LAST_WORD } },
};
/* commands */
Command commands[] = {
/* command, abbreviation, function, completion, description */
{"open", "o", cmd_quit, cc_open, "Open a file" },
{"quit", "q", cmd_quit, 0, "Quit zjui" },
};
/* buffer commands */
BufferCommand buffer_commands[] = {
/* regex, function, argument */
{"^gg$", bcmd_goto, { TOP } },
{"^[0-9]+G$", bcmd_goto, {0} },
};
/* special commands */
SpecialCommand special_commands[] = {
/* identifier, function, a, argument */
{'/', scmd_search, 1, { DOWN } },
{'?', scmd_search, 1, { UP } },
};

100
config.h
View File

@ -1,100 +0,0 @@
/* settings */
static const float ZOOM_STEP = 0.1;
static const float SCROLL_STEP = 40;
static const float HL_TRANSPARENCY = 0.4;
static const int SHOW_NOTIFICATION = 5;
static const int DEFAULT_WIDTH = 800;
static const int DEFAULT_HEIGHT = 600;
static const int MIN_INDEX_WIDTH = 200;
static const char BROWSER[] = "firefox %s";
static const char *PRINTER[] = { "PRINTER_1",
"PRINTER_2",
"PRINTER_3"
};
/* look */
static const char font[] = "monospace normal 9";
static const char default_bgcolor[] = "#000000";
static const char default_fgcolor[] = "#DDDDDD";
static const char notification_fgcolor[] = "#0F0F0F";
static const char notification_bgcolor[] = "#F9F9F9";
static const char notification_warning_fgcolor[] = "DDDDDDC";
static const char notification_warning_bgcolor[] = "#D0C54D";
static const char notification_error_fgcolor[] = "#FFFFFF";
static const char notification_error_bgcolor[] = "#BC2800";
static const char inputbar_bgcolor[] = "#141414";
static const char inputbar_fgcolor[] = "#9FBC00";
static const char completion_fgcolor[] = "#DDDDDD";
static const char completion_bgcolor[] = "#232323";
static const char completion_hl_fgcolor[] = "#232323";
static const char completion_hl_bgcolor[] = "#9FBC00";
static const char search_highlight[] = "#9FBC00";
/* additional settings */
#define SHOW_SCROLLBARS 0
#define INCREMENTAL_SEARCH 0
/* shortcuts */
Shortcut shortcuts[] = {
// mask, key, function, argument
{GDK_CONTROL_MASK, GDK_f, sc_navigate, { NEXT } },
{GDK_CONTROL_MASK, GDK_b, sc_navigate, { PREVIOUS } },
{GDK_CONTROL_MASK, GDK_plus, sc_zoom, { ZOOM_IN } },
{GDK_CONTROL_MASK, GDK_minus, sc_zoom, { ZOOM_OUT } },
{GDK_CONTROL_MASK, GDK_0, sc_zoom, { ZOOM_ORIGINAL } },
{GDK_CONTROL_MASK, GDK_r, sc_rotate, { RIGHT } },
{GDK_CONTROL_MASK, GDK_e, sc_rotate, { LEFT } },
{GDK_CONTROL_MASK, GDK_p, sc_focus_inputbar, { .data = ":print all" } },
{GDK_CONTROL_MASK, GDK_q, sc_quit, {0} },
{GDK_CONTROL_MASK, GDK_i, sc_toggle_index, {0} },
{GDK_CONTROL_MASK, GDK_m, sc_toggle_inputbar, {0} },
{0, GDK_n, sc_search, { FORWARD } },
{0, GDK_N, sc_search, { BACKWARD } },
{0, GDK_h, sc_scroll, { LEFT } },
{0, GDK_j, sc_scroll, { UP } },
{0, GDK_k, sc_scroll, { DOWN } },
{0, GDK_l, sc_scroll, { RIGHT } },
{0, GDK_Page_Up, sc_scroll, { TOP } },
{0, GDK_Page_Down, sc_scroll, { BOTTOM } },
{0, GDK_i, sc_adjust_window, { ADJUST_BESTFIT } },
{0, GDK_u, sc_adjust_window, { ADJUST_WIDTH } },
{0, GDK_colon, sc_focus_inputbar, { .data = ":" } },
{0, GDK_o, sc_focus_inputbar, { .data = ":open " } },
{0, GDK_r, sc_focus_inputbar, { .data = ":rotate " } },
{0, GDK_z, sc_focus_inputbar, { .data = ":zoom " } },
{0, GDK_g, sc_focus_inputbar, { .data = ":goto " } },
{0, GDK_slash, sc_focus_inputbar, { .data = "/" } },
{0, GDK_Up, sc_focus_inputbar, {0} },
{0, GDK_Down, sc_focus_inputbar, {0} },
};
/* commands */
Command commands[] = {
// command, function
{"export", cmd_export},
{"e", cmd_export},
{"form", cmd_form},
{"f", cmd_form},
{"goto", cmd_goto},
{"g", cmd_goto},
{"info", cmd_info},
{"i", cmd_info},
{"links", cmd_links},
{"l", cmd_links},
{"open", cmd_open},
{"o", cmd_open},
{"print", cmd_print},
{"p", cmd_print},
{"rotate", cmd_rotate},
{"r", cmd_rotate},
{"save", cmd_save},
{"s", cmd_save},
{"quit", cmd_quit},
{"q", cmd_quit},
{"zoom", cmd_zoom},
{"z", cmd_zoom},
};

25
config.mk Normal file
View File

@ -0,0 +1,25 @@
# See LICENSE file for license and copyright information
# zathura make config
VERSION = 0.0.1
# paths
PREFIX = /usr
MANPREFIX = ${PREFIX}/share/man
# libs
GTK_INC = $(shell pkg-config --cflags gtk+-2.0)
GTK_LIB = $(shell pkg-config --libs gtk+-2.0)
INCS = -I. -I/usr/include ${GTK_INC}
LIBS = -L/usr/lib -lc ${GTK_LIB}
# flags
CFLAGS = -std=c99 -pedantic -Wall $(INCS)
LDFLAGS = ${LIBS}
# debug
DFLAGS = -g
# compiler
CC = gcc

2187
zathura.c

File diff suppressed because it is too large Load Diff