Fix config.py
[projects/chimara/chimara.git] / player / iliad.c
index ee9d7f5336b949c10eb1fd2baca8f57cccede1ec..abb2ad121587fab5bdb2f12f8e49ee2c01af3b50 100644 (file)
 #include <libchimara/chimara-glk.h>
 #include <libchimara/chimara-if.h>
 
+/* Iliad includes */
+#include <liberdm/erdm.h>
+#include <liberipc/eripcviewer.h>
+#include <liberipc/eripctoolbar.h>
+#include <liberipc/eripcbusyd.h>
+/*#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;
 }