X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Filiad.c;h=abb2ad121587fab5bdb2f12f8e49ee2c01af3b50;hb=86bf905d2bf441c655a57d46e9260da8a3237b47;hp=ee9d7f5336b949c10eb1fd2baca8f57cccede1ec;hpb=8f36c2a6f4503a6e1a9b7368feea758f05fd7b86;p=rodin%2Fchimara.git diff --git a/player/iliad.c b/player/iliad.c index ee9d7f5..abb2ad1 100644 --- a/player/iliad.c +++ b/player/iliad.c @@ -44,10 +44,24 @@ #include #include +/* Iliad includes */ +#include +#include +#include +#include +/*#include "xepdmgrclient.h"*/ + + /* Global pointers to widgets */ GtkWidget *window = NULL; GtkWidget *glk = NULL; +/* Display manager */ +/* sEpd *epd = NULL;*/ + +static erClientChannel_t erbusyChannel; +static erClientChannel_t ertoolbarChannel; + static void on_started(ChimaraGlk *glk) { @@ -72,6 +86,23 @@ on_save() chimara_glk_feed_line_input( CHIMARA_GLK(glk), "save" ); } +gboolean +update_screen(gpointer data) +{ + printf("Update screen from idle handler\n"); + dmDisplay(dmCmdPriorNormal, dmQFull); + + return FALSE; +} + +static void +on_iliad_screen_update(ChimaraGlk *glk, gboolean typing) +{ + printf("Update screen\n"); + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE+100, update_screen, NULL, NULL); +} + + static void create_window(void) { @@ -84,11 +115,12 @@ create_window(void) "border-width", 6, "spacing", 6, "ignore-errors", TRUE, + "style-sheet", "style.css", NULL); - chimara_glk_set_default_font_string(CHIMARA_GLK(glk), "Serif 12"); - chimara_glk_set_monospace_font_string(CHIMARA_GLK(glk), "Monospace 12"); + g_signal_connect(glk, "started", G_CALLBACK(on_started), NULL); g_signal_connect(glk, "stopped", G_CALLBACK(on_stopped), NULL); + g_signal_connect(glk, "iliad-screen-update", G_CALLBACK(on_iliad_screen_update), NULL); GtkWidget *vbox = gtk_vbox_new(FALSE, 0); GtkWidget *toolbar = gtk_toolbar_new(); @@ -115,6 +147,32 @@ create_window(void) gtk_container_add( GTK_CONTAINER(window), vbox ); } +static void +iliad_init_toolbar() +{ + erIpcStartClient(ER_TOOLBAR_CHANNEL, &ertoolbarChannel); + tbSelectIconSet(ertoolbarChannel, ER_PDF_VIEWER_UA_ID); + tbClearIconSet(ertoolbarChannel, ER_PDF_VIEWER_UA_ID); + + // Turn off trashcan + tbAppendPlatformIcon( ertoolbarChannel, ER_PDF_VIEWER_UA_ID, iconID_trashcan, -1); + tbSetStatePlatformIcon(ertoolbarChannel, ER_PDF_VIEWER_UA_ID, iconID_trashcan, iconState_grey ); + + // Enable then pop up keyboard + tbAppendPlatformIcon( ertoolbarChannel, ER_PDF_VIEWER_UA_ID, iconID_keyboard, -1); + tbSetStatePlatformIcon(ertoolbarChannel, ER_PDF_VIEWER_UA_ID, iconID_keyboard, iconState_selected); +} + +static void +iliad_clear_toolbar() +{ + // Turn on trashcan + tbSetStatePlatformIcon(ertoolbarChannel, ER_PDF_VIEWER_UA_ID, iconID_trashcan, iconState_normal ); + + // Disable the keyboard + tbSetStatePlatformIcon(ertoolbarChannel, ER_PDF_VIEWER_UA_ID, iconID_keyboard, iconState_normal); +} + int main(int argc, char *argv[]) { @@ -126,6 +184,15 @@ main(int argc, char *argv[]) textdomain(GETTEXT_PACKAGE); #endif + /* Setup connection to display manager deamon */ + /* + if( (epd = EpdInit(NULL)) == NULL ) { + g_critical("Could not connect to xepdmgr server\n"); + return 1; + } + EpdRefreshAuto(epd, 0); + */ + if( !g_thread_supported() ) g_thread_init(NULL); gdk_threads_init(); @@ -144,7 +211,8 @@ main(int argc, char *argv[]) return 1; } //chimara_glk_run( CHIMARA_GLK(glk), ".libs/multiwin.so", argc, argv, NULL); - + + iliad_init_toolbar(); gdk_threads_enter(); gtk_main(); @@ -153,5 +221,7 @@ main(int argc, char *argv[]) chimara_glk_stop(CHIMARA_GLK(glk)); chimara_glk_wait(CHIMARA_GLK(glk)); + iliad_clear_toolbar(); + return 0; }