1.19.12: 2011-10-10 Murray Cumming Really use the goocanvasmm RGBA properties. * glom/mode_design/layout/layout_item_dialogs/box_formatting.cc: * glom/mode_design/layout/layout_item_dialogs/dialog_line.cc: Use Gtk::ColorButton::get_rgba() instead of get_color. * glom/mode_design/layout/dialog_layout_list_related.[h|cc]: Do not save color details if they are not shown in the UI. 2011-10-10 Murray Cumming Require the latest goocanvasmm. * configure.ac: Require goocanvasmm 1.90.6 because of the new RGBA properties. 2011-10-10 Murray Cumming glom_create_from_example: --help: Add a hint about when self-hosting is used. * glom/glom_create_from_example.cc: Add some text to the --server-hostname option. 2011-10-10 Murray Cumming glom_create_from_example: Support central-hosting too. * glom/glom_create_from_example.cc: Allow a host name, port, and username to be specified, and the password to be entered on stdin. * glom/libglom/db_utils.[h|cc]: Added get_unused_database_name(): * glom/frame_glom.cc: Added a TODO that we should use it here too instead of the similar code that is mixed up with the dialog code. * glom/libglom/connectionpool.h: Remove unused m_host member variable. 2011-10-10 Murray Cumming Added the glom_create_from_example command-line utility. * Makefile_libglom.am: * glom/glom_create_from_example.cc: This command-line utility takes an example .glom file, outputs a new non-example .glom file and puts the example data, if any, in the database. Right now, it assumes that you want self-hosting, so it creates the database files locally. This builds when libglom builds. It does not require the glom application. 2011-10-10 Murray Cumming Added Utils::get_file_*_without_extension(). * glom/application.[h|cc]: Moved get_file_uri_without_extension() to * glom/libglom/utils.[h|cc]: And added get_file_path_without_extension(). 2011-10-09 Murray Cumming Fix make check with --enable-warnings=fatal. * glom/utility_widgets/eggspreadtablemm/test_spreadtablednd.cc: drop_possible handlers: Adapt to the new meanin of the return type. 2011-10-09 Murray Cumming Fix the build with --enable-warnings=fatal. * glom/utility_widgets/eggspreadtablemm/eggspreadtabledndmm.cc: Signal callbacks: Actually use drop_possible. 2011-10-07 Murray Cumming Fields: Adapt choices fields when changing field names. * glom/libglom/data_structure/layout/fieldformatting.[h|cc]: Added change_field_item_name(). * glom/libglom/data_structure/layout/layoutgroup.cc: change_field_item_name(): Change the formatting too, by calling the new method. * glom/libglom/document/document.cc: change_field_name(): Change the default formatting of fields too. Bug #661075 2011-10-06 Murray Cumming Print Layout: Really print additional pages. * glom/print_layout/printoperation_printlayout.cc: on_draw_page(): Use Cairo::Context::translate() before calling Goocanvas::Canvas::render(). Bug #660553 (Thanks to David King and Damon Chaplin) 2011-10-06 Murray Cumming Document: Avoid writing some unnecessary XML nodes. * glom/libglom/document/document.cc: : Do not write the choices_related_show_all attribute if there are no choices. Do not write numeric formatting attributes if the field type is not numeric. * examples/example_film_manager.glom: Resaved. 2011-10-06 Murray Cumming Fix DTD validation. * glom/glom_document.dtd: Change the order of some sub-nodes. Apparently we must specify a sequence, even though we do not really care. * glom/libglom/document/document.cc: load_before(), save_after(): do not save some irrelevant details for calendard portals. Portals assume that no rows count means the default of 6, to make the files less verbose. * examples/example_film_manager.glom: * examples/example_lesson_planner.glom: * examples/sqlite/test_sqlite_music/test_sqlite_music.glom: Resaved/Fixed. 2011-10-06 Murray Cumming Examples: Details layout: Remove unnecessary "main" groups. * examples/example_lesson_planner.glom: * examples/example_music_collection.glom: * examples/example_project_manager.glom: * examples/example_smallbusiness.glom: Move overview and details to top, instead of in a top-level group. * examples/example_film_manager.glom: Remove unnecessary Details titles. These look silly when the first item is a group with its own title. 2011-10-06 Murray Cumming Film Manager example: Scenes: Make the Props and Costume tabs work. * examples/example_film_manager.glom: The relevant tables and relationships did not exist. Also remove all "main" top-level groups. 2011-10-06 Murray Cumming TreeModelDb: fill_values_if_necessary(): Avoid a crash. * glom/mode_data/datawidget/treemodel_db.cc: Do not try to use a null GdaDataModel, which can happen if a SQL query fails. 2011-10-06 Murray Cumming Document: get_data_layout_groups_default(): Simplify the default structure. * glom/libglom/document/document.cc: Do not create the useless "main" top-level group for details layouts. 2011-10-06 Ben Konrath Fix small bugs in commented-out debugging print statements. https://bugzilla.gnome.org/show_bug.cgi?id=661009 * glom/libglom/db_utils.cc: Change field to layout_item. Move print statement to be after the assignment to field_used_in_relationship_to_one. 2011-10-06 Murray Cumming Details: Do not enable drag-and-drop by default. * glom/utility_widgets/flowtable.cc: Turn of drag-and-drop by default in the EggSpreadTableDnd * glom/mode_data/flowtablewithfields.[h|cc]: Added set_enable_drag_and_drop(). * glom/mode_data/box_data_details.[h|cc]: Added set_enable_drag_and_drop(), calling the FlowTableWithFields. * glom/application.[h|cc]: Rename the Show Layout Toolbar menu item to Drag and Drop Layout, though that is a bad name and I would like a better one. * glom/frame_glom.[h|cc]: show_layout_toolbar(): Rename to set_enable_layout_drag_and_drop(). * glom/mode_data/notebook_data.[h|cc]: Rename show_layout_toolbar() to set_enable_layout_drag_and_drop() and make it enable dnd as well as showing the toolpallette. The toolpalette is then a visual indication that drag-and-drop is possible. * glom/mode_data/test_flowtablewithfields.cc: Add a sub-group and enable drag and drop. 2011-10-06 Murray Cumming Update EggSpreadTable tests. * glom/utility_widgets/eggspreadtablemm/test_spreadtablednd.cc: Fix a crash. * glom/utility_widgets/test_flowtable.cc: * glom/utility_widgets/test_flowtable_dnd.cc: Adapt to the changed API. 2011-10-06 Murray Cumming Update EggSpreadTable * glom/utility_widgets/eggspreadtable/: Update from libegg with Tristan's changes. * glom/utility_widgets/eggspreadtablemm/: Adapt. 2011-10-04 Murray Cumming Move do_print_layout() to PrintLayoutUtils. * glom/application.[h|cc]: Remove the new print_layout(PrintLayout) override. * glom/frame_glom.[h|cc]: * glom/mode_data/box_data_details.cc: Adapted, using PrintLayoutUtils::do_print_layout() instead. 2011-10-04 Murray Cumming PrintOperation_PrintLayout: Move to print_layout/: * Makefile_glom.am: Mention the changed paths. * glom/frame_glom.cc: Adapted. 2011-10-04 Murray Cumming PrintLayoutUtils: Move to print_layout/ * Makefile_glom.am: Mention the changed paths. * glom/mode_data/box_data_details.cc: * glom/mode_design/print_layouts/window_print_layout_edit.cc: Adapted. 2011-10-04 Murray Cumming Details: Print: Use a standard print layout instead of HTML. * glom/frame_glom.[h|cc]: Add a do_print_layout() that takes a PrintLayout instead of just a print layout name. * glom/application.[h|cc]: Add a do_print_layout() that forwards to Frame_Glom. * glom/mode_data/box_data_details.[h|cc]: print_layout(): Instead of generating HTML and showing it in a browser, create a standard print layout and offer it via a normal printing dialog. This is at least as good (not very good yet) as our generated HTML, but simpler and more normal. Remove any code that used the old XML+XSLT=HTML way for details. We still use the generated HTML for the list view, as if it was just another report. Maybe we can improve that in future too. 2011-10-04 Murray Cumming Print Layout: Move create_standard() into a utils file. * glom/mode_design/print_layouts/window_print_layout_edit.[h|cc]: Move create_standard to * glom/print_layout_utils.[h|cc] so we can use it elsewhere too. * Makefile_glom.am: Mentino the new file. 2011-10-02 Murray Cumming Find: Get criteria even when a field is on the layout twice. * glom/mode_data/flowtablewithfields.cc: get_field_value(): Look at all the widgets for this field, instead of just the first one, and keep looking until we find a non-empty value. This is still rather arbitrary, but this method is only used for find criteria, or should be. 2011-10-02 Murray Cumming Find Mode: Do not show data in related records. * glom/mode_data/box_data_portal.[h|cc]: Add a virtual set_find_mode(). * glom/mode_data/box_data_list_related.h: Add a set_find_mode() override here which calls it on the DbAddDel. * glom/mode_data/db_adddel/db_adddel.h: Document the existing set_find_mode() more. * glom/mode_data/flowtablewithfields.[h|cc]: Add set_find_mode(), which calls it on all child portals and flowtables and calls it later when creating them. * glom/mode_find/box_data_details_find.cc: Call set_find_mode() on the FlowTable. This also affects the Find button next to ID fields. 2011-09-30 Murray Cumming Print Layout: Create Standard Layout: Support multiple pages. * glom/mode_design/print_layouts/window_print_layout_edit.[h|cc]: create_standard(): Support multiple pages, trying to keep out of the margins. * glom/print_layout/canvas_print_layout.cc: add_layout_group_children(): Do not add canvas items that were not able to handle the layout item, such as buttons. 2011-09-30 Murray Cumming Fix the DTD. * glom/glom_document.dtd: Fix my typo to fix make check. 2011-09-30 Murray Cumming Print Layout: Allow multiple pages. * glom/libglom/data_structure/print_layout.[h|cc]: Add get/set_page_count(). * glom/libglom/document/document.cc: load_after(), save_before(): Store the page count in the document. * glom/glom_document.dtd: Mention the new attribute. * glom/print_layout/canvas_print_layout.[h|cc]: Add get/set_page_count() and get_page_bounds(). update_page_bounds(): Move the margin creation into here, and create margins for all pages. * glom/utility_widgets/canvas/canvas_group_grid.[h|cc]: Added update_grid_for_new_size(). * glom/mode_design/print_layouts/window_print_layout_edit.[h|cc]: Add Add Page and Delete Page menu items, though we need to rearrange the menus more sensibly. * glom/printoperation_printlayout.cc: on_begin_print(), on_paginate(): Set the number of pages. on_draw(): Render only the specified page's bounds from the GooCanvas. However, this is not working for any page but the first one. Some cairo transformation might be necessary. 2011-09-30 Murray Cumming > Instantiation test: warn if the widget is too big for small screens. * tests/test_glade_derived_instantiation.cc: Actually show the window (Is there a way to get the size without showing it) and warn if it is too big, but do not fail yet. Note that this is very dependent on the theme in use, though maybe we can set that at runtime for the test. 2011-09-30 Murray Cumming Field Formatting window: Make it slightly less tall. * ui/developer/dialog_layout_field_properties.glade: Arrange two radio buttons horizontally instead of vertically. But this window is still too tall. See https://bugs.launchpad.net/ubuntu/+source/glom/+bug/863016 2011-09-29 Jasper Lievisse Adriaanse Remove glibc-specific function call. * glom/main.cc: Fix build on OpenBSD (and other non-glibc systems) by wrapping calls to __libc_freeres() in correct #ifdefs. Bug #660496 2011-09-29 Murray Cumming Print Layout: Add experimental Create Standard feature. * glom/mode_design/print_layouts/window_print_layout_edit.[h|cc]: Add an Insert/Create Standard Layout menu item which creates a layout similar to the details layout. 2011-09-29 Murray Cumming Dialog_Choose_ID: Work around a crash in GTK+. * glom/mode_data/datawidget/dialog_choose_id.cc: Remove the Box_Data_List from the parent container (we added it earlier), to avoid a crash, though it would be good to fix that properly and generically. Bug #660347 2011-09-29 Murray Cumming build_simple_where_expression(): Check input parameters. * glom/libglom/utils.cc: build_simple_where_expression(): Check for an empty key field, which can happen during debugging. 2011-09-29 Murray Cumming Glade utils: Catch generic exceptions. * glom/glade_utils.h: Though this only happens when gtkmm has not been initialized. 2011-09-28 Murray Cumming Related Records: Fix bug with a blank row when there is only one row. * glom/libglom/connectionpool.[h|cc]: Added get_backend_supports_cursor(). * glom/mode_data/datawidget/treemodel_db.cc: refresh_from_database(): Call that method, so we can avoid using GdaDataAccessWrapper unless necessary. That avoids an apparent bug with GdaDataAccessWrapper returned a row of all-nulls if there is only one row. See libgda bug #660344 . This is probably a performance improvement anyway. 2011-09-27 Murray Cumming Require the latest gtkmm. * configure.ac: Require gtkmm 3.2.0 to keep things simple. 2011-09-27 Murray Cumming > libglom::LayoutItem_Portal: Added get_suitable_table_to_view_details(). * glom/base_db.[h|cc]: Move the get_portal_navigation_relationship_automatic() and get_suitable_table_to_view_details() utility functions to: * glom/libglom/data_structure/layout/layoutitem_portal.[h|cc]: Also move other privately-used utility functions here too, from Base_DB. * glom/mode_design/layout/dialog_layout_calendar_related.cc: update_ui(): * glom/mode_design/layout/dialog_layout_list_related.cc: update_ui(): * glom/mode_data/box_data_portal.cc: get_has_suitable_record_to_view_details(), get_has_suitable_record_to_view_details(): Adapted. 2011-09-27 Murray Cumming libglom::layout_field_should_have_navigation(): Return Relationship not bool. * glom/libglom/db_utils.[h|cc]: layout_field_should_have_navigation(): Make field_used_in_relationship_to_one() be a Relationship so it can be used for actual navigation. Also require that the LayoutItem_Field has full field information, instead of updating it, so that it can be const. * glom/mode_data/datawidget/datawidget.cc: Constructor: Adapted. * glom/mode_data/box_data_details.cc: on_flowtable_field_open_details_requested(): Use it here instead of the copy/pasted code. 2011-09-27 Murray Cumming Add libglom::layout_field_should_have_navigation(). * glom/mode_data/datawidget/datawidget.cc: Constructor: Moved decision code from here to here: * glom/libglom/db_utils.[h|cc]: Added layout_field_should_have_navigation(). 2011-09-26 Murray Cumming Document: Use CSS3 formatting for colors, via Gdk::RGBA. * glom/mode_design/layout/dialog_layout_list_related.cc: * glom/mode_design/layout/layout_item_dialogs/box_formatting.cc: * glom/mode_design/layout/layout_item_dialogs/dialog_line.cc: * glom/utility_widgets/canvas/canvas_line_movable.[h|cc]: Use Gdk::RGBA instead of Gdk::RGBA everywhere now that goocanvas(mm) supports it. 2011-09-26 Murray Cumming Related Records: Do not try to navigate to an empty record. * glom/mode_data/box_data_list_related.cc: on_adddel_user_requested_edit(): Ignore clicks on the open button of the empty placeholder row, whose primary key is null. 2011-09-22 Murray Cumming Print Layout: Add an Align menu. * glom/mode_design/print_layouts/window_print_layout_edit.[h|cc]: Add menu items for align top, bottom, left, and right. I don't much like the copy/pasteness of the code, but it works. 2011-09-22 Murray Cumming Layout window: Correct the vertical order of Add buttons. * ui/developer/window_data_layout.glade: This has been mixed up since some time recently, probably due to Glade changes. 2011-09-21 Murray Cumming Print Layout: Show contents of System Preferences in Fields. * glom/base_db.cc: get_field_value_in_database(): Only complain about a missing key if the relationship needs one. * glom/libglom/document/document.cc: * glom/print_layout/canvas_layout_item.cc: set_db_data(): Show an empty image if there is no pixbuf. * glom/print_layout/canvas_print_layout.[h|cc]: Added fill_with_data_system_preferences() to show details from the system preferences, if appropriate. This is possible because we do not need a specific record to show values from the one record in System Preferences. add_canvas_layout_item(), on_context_menu_edit(): Call it. 2011-09-21 Murray Cumming Details: Avoid warning when using System Preferences fields. * glom/libglom/document/document.cc: get_field_used_in_relationship_to_one(): Do not complain when the system preferences table is not found. 2011-09-21 Murray Cumming Avoid "m_backend is NULL" warning at startup. * glom/libglom/connectionpool.[h|cc]: Added get_instance_is_ready(). * glom/application.cc: update_userlevel_ui(): Use it, because it might not be ready, causing a (harmless) stderr warning.