[glom] Move ReportBuilder to libglom, to make testing easier.



commit 6d61144c9c05fc24805eacfed439f043a87dc72d
Author: Murray Cumming <murrayc murrayc com>
Date:   Mon Oct 17 21:17:47 2011 +0200

    Move ReportBuilder to libglom, to make testing easier.
    
    * glom/report_builder.[h|cc]:
    * glom/xsl_utils.[h|cc]: Moved to:
    * glom/libglom/report_builder.[h|cc]:
    * glom/libglom/xsl_utils.[h|cc]:
    * Makefile_glom.am, Makefile_libglom.am: Adapted, also adding a
    -D define for libglom to access the xslt file, though I am not happy
    about a library needing a file to be installed.

 ChangeLog                              |   12 ++++++++++++
 Makefile_glom.am                       |    4 ----
 Makefile_libglom.am                    |    7 ++++++-
 configure.ac                           |    4 ++--
 glom/frame_glom.cc                     |    2 +-
 glom/libglom/filelist.am               |    7 ++++++-
 glom/{ => libglom}/report_builder.cc   |    4 ++--
 glom/{ => libglom}/report_builder.h    |    0
 glom/{ => libglom}/xsl_utils.cc        |   24 ++++++++++++++++++------
 glom/{ => libglom}/xsl_utils.h         |    0
 glom/mode_data/box_data_details.cc     |    1 -
 glom/mode_data/box_data_list.cc        |    2 +-
 glom/mode_data/box_data_manyrecords.cc |    2 +-
 po/POTFILES.in                         |    3 ++-
 14 files changed, 51 insertions(+), 21 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 631dacc..1ca386c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2011-10-17  Murray Cumming  <murrayc murrayc com>
 
+	Move ReportBuilder to libglom, to make testing easier.
+
+	* glom/report_builder.[h|cc]:
+	* glom/xsl_utils.[h|cc]: Moved to:
+	* glom/libglom/report_builder.[h|cc]:
+	* glom/libglom/xsl_utils.[h|cc]:
+	* Makefile_glom.am, Makefile_libglom.am: Adapted, also adding a 
+	-D define for libglom to access the xslt file, though I am not happy
+	about a library needing a file to be installed.
+
+2011-10-17  Murray Cumming  <murrayc murrayc com>
+
 	ReportBuilder: Do not depend on Base_DB unnecessarily.
 
 	* glom/report_builder.[h|cc]: Just add get/set_document() instead.
diff --git a/Makefile_glom.am b/Makefile_glom.am
index 85c9f68..ec0ff6e 100644
--- a/Makefile_glom.am
+++ b/Makefile_glom.am
@@ -104,10 +104,6 @@ glom_source_files = \
 	glom/utils_ui.h							\
 	glom/variablesmap.cc						\
 	glom/variablesmap.h						\
-	glom/xsl_utils.cc						\
-	glom/xsl_utils.h						\
-	glom/report_builder.cc						\
-	glom/report_builder.h						\
 	glom/window_boxholder.cc					\
 	glom/window_boxholder.h						\
 	glom/bakery/app.cc						\
diff --git a/Makefile_libglom.am b/Makefile_libglom.am
index 57c3abc..ed9f554 100644
--- a/Makefile_libglom.am
+++ b/Makefile_libglom.am
@@ -15,6 +15,11 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+
+libglom_defines = \
+-DGLOM_PKGDATADIR_XSLT=\""$(pkgdatadir)/xslt"\" \
+-DGLOM_PKGDATADIR_XSLT_NOTINSTALLED=\""$(top_srcdir)/xslt"\"
+
 lib_LTLIBRARIES = glom/libglom/libglom- GLOM_ABI_VERSION@.la
 
 include $(top_srcdir)/glom/libglom/filelist.am
@@ -50,7 +55,7 @@ glom_libglom_libglom_ GLOM_ABI_VERSION@_la_LIBADD += -lws2_32
 endif
 glom_libglom_libglom_ GLOM_ABI_VERSION@_la_LDFLAGS = -no-undefined
 
-glom_libglom_libglom_ GLOM_ABI_VERSION@_la_CPPFLAGS = $(glom_includes) $(LIBGLOM_CFLAGS) $(PYTHON_CPPFLAGS) $(BOOST_PYTHON_CFLAGS)
+glom_libglom_libglom_ GLOM_ABI_VERSION@_la_CPPFLAGS = $(glom_includes) $(LIBGLOM_CFLAGS) $(PYTHON_CPPFLAGS) $(BOOST_PYTHON_CFLAGS) $(libglom_defines)
 
 pyexec_LTLIBRARIES = glom/python_embed/python_module/glom_ GLOM_ABI_VERSION_UNDERLINED@.la
 
diff --git a/configure.ac b/configure.ac
index a0f7d66..acb784f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -127,13 +127,13 @@ AS_IF([test "x$glom_enable_postgresql" = xyes],
                  [Whether to enable support for PostgreSQL databases.])])
 
 # Libraries used by libglom:
-REQUIRED_LIBGLOM_LIBS='gthread-2.0 giomm-2.4 libxml++-2.6 >= 2.23.1 pygobject-3.0 >= 2.29.0 libgdamm-5.0 >= 4.99.4 libgda-postgres-5.0'
+REQUIRED_LIBGLOM_LIBS='gthread-2.0 giomm-2.4 libxml++-2.6 >= 2.23.1 libxslt >= 1.1.10 pygobject-3.0 >= 2.29.0 libgdamm-5.0 >= 4.99.4 libgda-postgres-5.0'
 
 AS_IF([test "x$glom_host_win32" != xyes],
       [REQUIRED_LIBGLOM_LIBS="$REQUIRED_LIBGLOM_LIBS libepc-1.0 >= 0.4.0"])
 
 # Libraries used by Glom:
-REQUIRED_GLOM_LIBS="$REQUIRED_LIBGLOM_LIBS gtkmm-3.0 >= 3.0.0 gthread-2.0 libxml++-2.6 libxslt >= 1.1.10 goocanvasmm-2.0 >= 1.90.6 evince-view-3.0"
+REQUIRED_GLOM_LIBS="$REQUIRED_LIBGLOM_LIBS gtkmm-3.0 >= 3.0.0 goocanvasmm-2.0 >= 1.90.6 evince-view-3.0"
 
 # Do not require iso-codes in client-only mode, or on Windows:
 # TODO: Package iso-codes for Windows?
diff --git a/glom/frame_glom.cc b/glom/frame_glom.cc
index 7c182f3..cdcc81e 100644
--- a/glom/frame_glom.cc
+++ b/glom/frame_glom.cc
@@ -52,7 +52,7 @@
 #include <libglom/data_structure/layout/report_parts/layoutitem_summary.h>
 #include <libglom/data_structure/layout/report_parts/layoutitem_fieldsummary.h>
 
-#include <glom/report_builder.h>
+#include <glom/libglom/report_builder.h>
 #ifndef GLOM_ENABLE_CLIENT_ONLY
 #include <glom/mode_design/dialog_add_related_table.h>
 #include <glom/mode_design/script_library/dialog_script_library.h>
diff --git a/glom/libglom/filelist.am b/glom/libglom/filelist.am
index 67bc30e..b7ca460 100644
--- a/glom/libglom/filelist.am
+++ b/glom/libglom/filelist.am
@@ -24,7 +24,8 @@ libglom_toplevel_headers =				\
 	glom/libglom/sharedptr.h			\
 	glom/libglom/standard_table_prefs_fields.h	\
 	glom/libglom/utils.h				\
-	glom/libglom/db_utils.h
+	glom/libglom/db_utils.h \
+	glom/libglom/report_builder.h
 
 libglom_data_structure_headers =				\
 	glom/libglom/data_structure/field.h			\
@@ -107,10 +108,14 @@ libglom_sources =							\
 	glom/libglom/init.cc						\
 	glom/libglom/privs.cc						\
 	glom/libglom/privs.h						\
+	glom/libglom/report_builder.cc					\
+	glom/libglom/report_builder.h					\
 	glom/libglom/spawn_with_feedback.cc				\
 	glom/libglom/spawn_with_feedback.h				\
 	glom/libglom/utils.cc						\
 	glom/libglom/utils.h						\
+	glom/libglom/xsl_utils.cc					\
+	glom/libglom/xsl_utils.h					\
 	glom/libglom/connectionpool_backends/backend.cc			\
 	glom/libglom/connectionpool_backends/backend.h			\
 	glom/libglom/data_structure/field.cc				\
diff --git a/glom/report_builder.cc b/glom/libglom/report_builder.cc
similarity index 99%
rename from glom/report_builder.cc
rename to glom/libglom/report_builder.cc
index 70436d0..8d773f3 100644
--- a/glom/report_builder.cc
+++ b/glom/libglom/report_builder.cc
@@ -18,11 +18,11 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include "report_builder.h"
+#include <libglom/report_builder.h>
 #include <libglom/utils.h>
 #include <libglom/data_structure/glomconversions.h>
 #include <libglom/db_utils.h>
-#include <glom/xsl_utils.h>
+#include <libglom/xsl_utils.h>
 #include <glibmm/i18n.h>
 
 namespace Glom
diff --git a/glom/report_builder.h b/glom/libglom/report_builder.h
similarity index 100%
rename from glom/report_builder.h
rename to glom/libglom/report_builder.h
diff --git a/glom/xsl_utils.cc b/glom/libglom/xsl_utils.cc
similarity index 89%
rename from glom/xsl_utils.cc
rename to glom/libglom/xsl_utils.cc
index bc2a31f..0249cc1 100644
--- a/glom/xsl_utils.cc
+++ b/glom/libglom/xsl_utils.cc
@@ -18,9 +18,9 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h" // For GLOM_ENABLE_CLIENT_ONLY
+#include <libglom/libglom_config.h>
 
-#include "xsl_utils.h"
+#include <libglom/xsl_utils.h>
 #include <libglom/connectionpool.h>
 #include <libglom/data_structure/layout/report_parts/layoutitem_fieldsummary.h>
 #include <libglom/data_structure/glomconversions.h>
@@ -43,18 +43,30 @@
 
 namespace
 {
-  std::string get_xslt_file(const std::string& xsl_file)
+  static std::string get_xsl_file_dir()
   {
 #ifdef G_OS_WIN32
     gchar* directory = g_win32_get_package_installation_directory_of_module(0);
-    std::string xsltdir = Glib::build_filename(Glib::build_filename(directory,
-        "share" G_DIR_SEPARATOR_S "glom" G_DIR_SEPARATOR_S "xslt"), xsl_file);
+    const std::string xsltdir = Glib::build_filename(directory,
+        "share" G_DIR_SEPARATOR_S "glom" G_DIR_SEPARATOR_S "xslt");
     g_free(directory);
     return xsltdir;
 #else
-    return Glib::build_filename(GLOM_PKGDATADIR G_DIR_SEPARATOR_S "xslt", xsl_file);
+    return GLOM_PKGDATADIR_XSLT;
 #endif
   }
+
+  static std::string get_xslt_file(const std::string& xsl_file)
+  {
+    const std::string result = Glib::build_filename(get_xsl_file_dir(), xsl_file);
+
+    // Check that it exists:
+    const Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(result);
+    if(file && file->query_exists())
+      return result;
+
+    return Glib::build_filename(GLOM_PKGDATADIR_XSLT_NOTINSTALLED, xsl_file);
+  }
 }
 
 namespace Glom
diff --git a/glom/xsl_utils.h b/glom/libglom/xsl_utils.h
similarity index 100%
rename from glom/xsl_utils.h
rename to glom/libglom/xsl_utils.h
diff --git a/glom/mode_data/box_data_details.cc b/glom/mode_data/box_data_details.cc
index 6a174dd..ec2323a 100644
--- a/glom/mode_data/box_data_details.cc
+++ b/glom/mode_data/box_data_details.cc
@@ -29,7 +29,6 @@
 #include <glom/glade_utils.h>
 #include <glom/utils_ui.h>
 #include <libglom/privs.h>
-#include <glom/xsl_utils.h>
 #include <glom/python_embed/glom_python.h>
 #include <glom/print_layout/print_layout_utils.h>
 #include <glom/application.h>
diff --git a/glom/mode_data/box_data_list.cc b/glom/mode_data/box_data_list.cc
index e06ddf8..b691e49 100644
--- a/glom/mode_data/box_data_list.cc
+++ b/glom/mode_data/box_data_list.cc
@@ -21,7 +21,7 @@
 #include "box_data_list.h"
 #include <libglom/data_structure/glomconversions.h>
 #include <glom/glade_utils.h>
-#include <glom/report_builder.h>
+#include <libglom/report_builder.h>
 #include <glom/mode_design/layout/dialog_layout_list.h>
 #include <libglom/privs.h>
 #include <libglom/db_utils.h>
diff --git a/glom/mode_data/box_data_manyrecords.cc b/glom/mode_data/box_data_manyrecords.cc
index b8dc88d..efc7177 100644
--- a/glom/mode_data/box_data_manyrecords.cc
+++ b/glom/mode_data/box_data_manyrecords.cc
@@ -21,7 +21,7 @@
 #include "box_data_manyrecords.h"
 #include <libglom/data_structure/glomconversions.h>
 #include <glom/glade_utils.h>
-#include <glom/report_builder.h>
+#include <libglom/report_builder.h>
 #include <glom/mode_design/layout/dialog_layout_list.h>
 #include <glom/utils_ui.h>
 #include <libglom/privs.h>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 3742b92..6b7566d 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -54,6 +54,8 @@ glom/libglom/gst-package.c
 glom/libglom/spawn_with_feedback.cc
 glom/libglom/utils.cc
 glom/libglom/db_utils.cc
+glom/libglom/report_builder.cc
+glom/libglom/xsl_utils.cc
 glom/glom_create_from_example.cc
 glom/main.cc
 glom/mode_data/box_data_calendar_related.cc
@@ -135,7 +137,6 @@ glom/utility_widgets/layoutwidgetbase.cc
 glom/utility_widgets/layoutwidgetmenu.cc
 glom/utility_widgets/layoutwidgetutils.cc
 glom/utility_widgets/notebooklabelglom.cc
-glom/xsl_utils.cc
 ui/operator/box_navigation_tables.glade
 ui/operator/dialog_choose_date.glade
 ui/operator/dialog_connection.glade



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]