Merge branch 'master' into browser
authorPhilip Chimento <philip.chimento@gmail.com>
Sat, 16 Jul 2011 21:58:50 +0000 (23:58 +0200)
committerPhilip Chimento <philip.chimento@gmail.com>
Sat, 16 Jul 2011 21:58:50 +0000 (23:58 +0200)
1  2 
configure.ac
libchimara/chimara-glk.c
libchimara/chimara-if.c
player/Makefile.am

diff --combined configure.ac
index 1ae23b307d326682c4588d70aaf7b33e9151102a,fa284e1051ccfc0ed7e6a23b9497f095833dbe43..24cd3f862a94d4196226bf5af0d7ac82f0c39019
@@@ -85,6 -85,18 +85,6 @@@ AC_ARG_ENABLE([iliad]
        [enable_iliad=no])
  AM_CONDITIONAL(TARGET_ILIAD, $TEST "x$enable_iliad" = xyes)
  
 -### BUILD WITHOUT RECENT FILES MANAGER #########################################
 -# (to work around a bug on OS X)
 -AC_ARG_ENABLE([recent],
 -      [AS_HELP_STRING([--disable-recent],
 -              [Omit recent files menu (to work around a bug on OS X])],
 -      [],
 -      [enable_recent=yes])
 -AS_IF([$TEST "x$enable_recent" = "xyes"],
 -      [OPEN_RECENT_MENU_ITEM="<menuitem action=\"recent\"/>"],
 -      [OPEN_RECENT_MENU_ITEM="<!--  <menuitem action=\"recent\"/>-->"])
 -AC_SUBST(OPEN_RECENT_MENU_ITEM)
 -
  ### RPM CONFIGURATION ##########################################################
  # --enable-rpm requires rpm and rpmbuild
  AC_PATH_PROG([RPMBUILD], [rpmbuild], [notfound])
@@@ -121,6 -133,14 +121,14 @@@ PKG_CHECK_MODULES([CHIMARA], 
  ])
  CHIMARA_LIBS="$CHIMARA_LIBS -lm"
  AC_SUBST(CHIMARA_LIBS)
+ # Libraries needed to build Chimara player
+ PKG_CHECK_MODULES([PLAYER], [
+       glib-2.0 >= $GLIB_REQUIRED_VERSION
+       gtk+-2.0 >= $GTK_REQUIRED_VERSION
+       gmodule-2.0
+       libgda-4.0
+       libsoup-2.4
+ ])
  # Libraries needed to build test programs
  PKG_CHECK_MODULES([TEST], [
        gtk+-2.0 >= $GTK_REQUIRED_VERSION
@@@ -170,11 -190,13 +178,12 @@@ interpreters/glulxe/Makefil
  interpreters/git/Makefile
  tests/Makefile
  player/Makefile
 -player/chimara.menus
  docs/Makefile
  docs/reference/Makefile
  docs/reference/version.xml
  docs/reference/build-selector-table.pl
  po/Makefile.in
+ babel/Makefile
  ])
  
  # Do it
diff --combined libchimara/chimara-glk.c
index 49ef33fbbe1ff2106bb4eae09c8e4c6b94c523fc,1a8b2245143f22e725d4747a8c9aaf26d0f0bf7f..6e1067ec32ea488a4ce9fbc10029ed5d6be1e25e
  #define CHIMARA_GLK_MIN_WIDTH 0
  #define CHIMARA_GLK_MIN_HEIGHT 0
  
+ /* Substitute functions for compiling on iLiad */
+ #if !GTK_CHECK_VERSION(2, 18, 0)
+ #define gtk_widget_get_allocation(w, a) \
+       G_STMT_START { \
+               (a)->x = (w)->allocation.x; \
+               (a)->y = (w)->allocation.y; \
+               (a)->width = (w)->allocation.width; \
+               (a)->height = (w)->allocation.height; \
+       } G_STMT_END
+ #define gtk_widget_set_allocation(w, a) \
+       G_STMT_START { (w)->allocation = *(a); } G_STMT_END
+ #define gtk_widget_set_has_window(w, f) \
+       G_STMT_START { \
+               if(f) \
+                       GTK_WIDGET_UNSET_FLAGS((w), GTK_NO_WINDOW); \
+               else \
+                       GTK_WIDGET_SET_FLAGS((w), GTK_NO_WINDOW); \
+       } G_STMT_END
+ #endif /* GTK 2.18 */
  /**
   * SECTION:chimara-glk
   * @short_description: Widget which executes a Glk program
@@@ -149,7 -170,7 +170,7 @@@ G_DEFINE_TYPE(ChimaraGlk, chimara_glk, 
  static void
  chimara_glk_init(ChimaraGlk *self)
  {
-     GTK_WIDGET_SET_FLAGS(GTK_WIDGET(self), GTK_NO_WINDOW);
+     gtk_widget_set_has_window(GTK_WIDGET(self), FALSE);
  
      ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(self);
      
@@@ -392,17 -413,18 +413,18 @@@ chimara_glk_size_request(GtkWidget *wid
      
      ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(widget);
      
+     guint border_width = gtk_container_get_border_width(GTK_CONTAINER(widget));
      /* For now, just pass the size request on to the root Glk window */
      if(priv->root_window) 
        {
                request_recurse(priv->root_window->data, requisition, priv->spacing);
-               requisition->width += 2 * GTK_CONTAINER(widget)->border_width;
-               requisition->height += 2 * GTK_CONTAINER(widget)->border_width;
+               requisition->width += 2 * border_width;
+               requisition->height += 2 * border_width;
        } 
        else 
        {
-         requisition->width = CHIMARA_GLK_MIN_WIDTH + 2 * GTK_CONTAINER(widget)->border_width;
-         requisition->height = CHIMARA_GLK_MIN_HEIGHT + 2 * GTK_CONTAINER(widget)->border_width;
+         requisition->width = CHIMARA_GLK_MIN_WIDTH + 2 * border_width;
+         requisition->height = CHIMARA_GLK_MIN_HEIGHT + 2 * border_width;
      }
  }
  
@@@ -522,8 -544,10 +544,10 @@@ allocate_recurse(winid_t win, GtkAlloca
                /* It says in the spec that when a text grid window is resized smaller,
                 the bottom or right area is thrown away; when it is resized larger, the
                 bottom or right area is filled with blanks. */
-               glui32 newwidth = (glui32)(win->widget->allocation.width / win->unit_width);
-               glui32 newheight = (glui32)(win->widget->allocation.height / win->unit_height);
+               GtkAllocation widget_allocation;
+               gtk_widget_get_allocation(win->widget, &widget_allocation);
+               glui32 newwidth = (glui32)(widget_allocation.width / win->unit_width);
+               glui32 newheight = (glui32)(widget_allocation.height / win->unit_height);
                gint line;
                GtkTextBuffer *textbuffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(win->widget) );
                GtkTextIter start, end;
@@@ -598,14 -622,15 +622,15 @@@ chimara_glk_size_allocate(GtkWidget *wi
      
      ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(widget);
      
-     widget->allocation = *allocation;
+     gtk_widget_set_allocation(widget, allocation);
              
      if(priv->root_window) {
                GtkAllocation child;
-               child.x = allocation->x + GTK_CONTAINER(widget)->border_width;
-               child.y = allocation->y + GTK_CONTAINER(widget)->border_width;
-               child.width = CLAMP(allocation->width - 2 * GTK_CONTAINER(widget)->border_width, 0, allocation->width);
-               child.height = CLAMP(allocation->height - 2 * GTK_CONTAINER(widget)->border_width, 0, allocation->height);
+               guint border_width = gtk_container_get_border_width(GTK_CONTAINER(widget));
+               child.x = allocation->x + border_width;
+               child.y = allocation->y + border_width;
+               child.width = CLAMP(allocation->width - 2 * border_width, 0, allocation->width);
+               child.height = CLAMP(allocation->height - 2 * border_width, 0, allocation->height);
                winid_t arrange = allocate_recurse(priv->root_window->data, &child, priv->spacing);
                
                /* arrange points to a window that contains all text grid and graphics
@@@ -1477,17 -1502,17 +1502,17 @@@ chimara_glk_get_tag(ChimaraGlk *glk, Ch
  
  /**
   * chimara_glk_get_tag_names:
 - * @glk: a #ChimaraGlk widget
   * @num_tags: Return location for the number of tag names retrieved.
   *
 - * Retrieves the possible tag names to use in chimara_glk_get_tag().
 + * Class method. Retrieves the possible tag names to use in
 + * chimara_glk_get_tag().
   *
   * Returns: (transfer none) (array length=num_tags) (element-type utf8):
   * Array of strings containing the tag names. This array is owned by Chimara,
   * do not free it.
   */
  const gchar **
 -chimara_glk_get_tag_names(ChimaraGlk *glk, unsigned int *num_tags)
 +chimara_glk_get_tag_names(unsigned int *num_tags)
  {
        g_return_val_if_fail(num_tags != NULL, NULL);
  
diff --combined libchimara/chimara-if.c
index 714eaef1477a23d1b9047ed7a194ab6e3f1f719d,3879a12c2d721fb3e66febffe1e226a0715c5f8f..9b5d629d98473a5bb6de58c278771dd785105523
  #include "chimara-marshallers.h"
  #include "init.h"
  
+ #ifndef PLUGINDIR
+ #define PLUGINDIR "."
+ #endif
  /**
   * SECTION:chimara-if
   * @short_description: Widget which plays an interactive fiction game
@@@ -570,7 -574,7 +574,7 @@@ chimara_if_get_preferred_interpreter(Ch
   * case @error is set.
   */
  gboolean
 -chimara_if_run_game(ChimaraIF *self, gchar *gamefile, GError **error)
 +chimara_if_run_game(ChimaraIF *self, const char *gamefile, GError **error)
  {
        g_return_val_if_fail(self && CHIMARA_IS_IF(self), FALSE);
        g_return_val_if_fail(gamefile, FALSE);
        }
  
        /* Game file and external blorb file */
 -      args = g_slist_prepend(args, gamefile);
 +      args = g_slist_prepend(args, (gpointer)gamefile);
        if(priv->graphics_file
                && (interpreter == CHIMARA_IF_INTERPRETER_FROTZ || interpreter == CHIMARA_IF_INTERPRETER_NITFOL)
            && g_file_test(priv->graphics_file, G_FILE_TEST_EXISTS)) {
diff --combined player/Makefile.am
index 3964d25669d9c1f5b9c4a2fc24ea85981e0feea2,588f18325395ffa69e5daa083f8acbe441bdc87d..f6379d6eaa68e5adf0670de76e58337287643dae
@@@ -13,22 -13,16 +13,22 @@@ bin_PROGRAMS = chimara_ilia
  
  else
  
 -dist_pkgdata_DATA = chimara.ui chimara.menus style.css
 +dist_pkgdata_DATA = chimara.ui browser.menus player.menus style.css
  bin_PROGRAMS = chimara
  
 -chimara_SOURCES = main.c callbacks.c preferences.c preferences.h error.c error.h
 +chimara_SOURCES = main.c \
 +      preferences.c preferences.h \
 +      error.c error.h \
 +      player.c player.h \
 +      app.c app.h \
 +      browser.c browser.h \
 +      util.c util.h
  chimara_CPPFLAGS = $(AM_CPPFLAGS) \
        -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
        -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
        -DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\"
- chimara_CFLAGS = @TEST_CFLAGS@ $(AM_CFLAGS)
- chimara_LDADD = @TEST_LIBS@ $(top_builddir)/libchimara/libchimara.la
+ chimara_CFLAGS = @PLAYER_CFLAGS@ $(AM_CFLAGS)
+ chimara_LDADD = @PLAYER_LIBS@ $(top_builddir)/libchimara/libchimara.la
  
  gsettings_SCHEMAS = org.chimara-if.gschema.xml
  @GSETTINGS_RULES@