0.9.6: 2006-02-19 Murray Cumming * glom/mode_data/box_data_details.h: Make on_flowtable_field_edited() virtual again so that the override in BoxDataDetails_Find works again, to avoid odd regressions when finding. * glom/utility_widgets/db_adddel/glom_db_treemodel.cc: * glom/utils.cc: * glom/base_db.cc: Try to print the SQL command on stdout when there is a problem with it. 2006-02-19 Murray Cumming * glom/frame_glom.cc: on_notebook_find_criteria(): Show all records if the find was not successful, and the user did not want to try again. 2006-02-19 Murray Cumming * glom/frame_glom.cc: on_menu_Mode_Find(): Start the Find mode on the same layout (Details or List) as the Data mode was in. Add a little hack to make sure that we go back into Data mode in List view at first, to make sure that the first result will show up properly in the Details mode. * glom/mode_data/notebook_data.cc: * glom/mode_data/notebook_data.h: Added set_current_view(). * glom/mode_find/notebook_find.cc: * glom/mode_find/notebook_find.h: Added set_current_view(). 2006-02-19 Murray Cumming * glom/utility_widgets/imageglom.cc: scale(): Call Gtk::Image::get_storage_type() before Gtk::Image::get_pixbuf(), to avoid a critical warning. 2006-02-19 Murray Cumming * glom/utility_widgets/imageglom.cc: * glom/utility_widgets/imageglom.h: Override on_expose_event() so we can scale the image when we actually have a real (>1) allocation. scale(): Do not call set_image() if the scaled pixbuf has exactly the same dimensions as the existing image. And do not try to scale the image if the allocation is very small, because this will generally fail. This fixes the disappearing image problem. 2006-02-18 Murray Cumming * glom/data_structure/relationship.cc: * glom/data_structure/relationship.h: Added get_has_to_table(), for performance, to avoid string copying. * glom/utils.cc: build_sql_select_with_where_clause(): Add to_table to the FROM list for non-key-linked relationships. libpq adds the implicit FROM if we do not do this, but it prints a warning on stdout. * glom/mode_data/dialog_layout_list_related.cc: on_combo_relationship_changed(): Clear the list of fields when the relationship changes, so that there are no invalid fields. 2006-02-17 Murray Cumming * glom/document/document_glom.cc: get_translatable_items(): Return the CustomTitles of LayoutItem_Fields. * glom/translation/window_translations.cc: load_from_document(): Do not try to get the custom titles here, because get_translatable_items() gets them instead. 2006-02-17 Murray Cumming * glom/data_structure/layout/Makefile.am: * glom/data_structure/layout/custom_title.cc: * glom/data_structure/layout/custom_title.h: New translatable item, for use when layout items can optionally have special titles, when the default (such as Street for contacts::address_street), is not appropriate. * glom/data_structure/layout/layoutitem_field.cc: * glom/data_structure/layout/layoutitem_field.h: Add get/set_title_custom(). * glom/data_structure/translatable_item.cc: * glom/data_structure/translatable_item.h: Add new item type and name. * glom/document/document_glom.cc: load_after_layout_item_field(), save_before_layout_item_field(): Load/Save the custom_title of LayoutItem_Field items. * glom/glom.glade: dialog_layout_field_properties. * glom/layout_item_dialogs/dialog_field_layout.cc: * glom/layout_item_dialogs/dialog_field_layout.h: Add widgets to allow a custom title. * glom/translation/window_translations.cc: load_from_document(): Add the custom titles to the list. * glom/utility_widgets/datawidget.cc: on_menupopup_activate_layout(): Save the new field properties, instead of replacing the whole item, so that the document gets the new information. Makes this work again. 2006-02-16 Murray Cumming * glom/combobox_relationship.cc: Do not show the Triggered By information if there are not linking key fields for a relationship. * glom/document/document_glom.cc: * glom/document/document_glom.h: get_relationships(): Optionally also return the extra System Properties relationship. get_relationship(): Return the extra System Properties relationship if it is asked for by name, even though it is not saved in the document. * glom/mode_data/dialog_choose_field.cc: Show the extra System Properties relationship too. * po/POTFILES.in: Added document_glom.cc 2006-02-14 Murray Cumming * glom/data_structure/relationship.cc: * glom/data_structure/relationship.h: Added get_has_fields() to identify relationships that actually link fields in tables. * glom/mode_data/box_data_list_related.cc: init_db_details(), fill_from_database(): Get all rows (with no where clause) if the relationship does not specify linking fields. * glom/mode_design/box_db_table_relationships.cc: * glom/utils.cc: build_sql_select_with_where(): If a related field's relationship doesn't specify linking fields, don't attempt a JOIN. 2006-02-14 Murray Cumming * glom/base_db.cc: * glom/box_db_table.cc: * glom/box_db_table.h: * glom/box_reports.cc: * glom/document/document_glom.cc: * glom/document/document_glom.h: * glom/frame_glom.cc: * glom/frame_glom.h: * glom/mode_data/box_data.cc: * glom/mode_data/box_data.h: * glom/mode_data/box_data_details.cc: * glom/mode_data/box_data_details.h: * glom/mode_data/box_data_list.cc: * glom/mode_data/box_data_list_related.cc: * glom/mode_data/notebook_data.cc: * glom/mode_data/notebook_data.h: * glom/mode_design/box_db_table_relationships.cc: * glom/mode_design/dialog_design.cc: * glom/mode_design/dialog_design.h: * glom/mode_design/dialog_fields.cc: * glom/mode_design/dialog_fields.h: * glom/mode_design/dialog_relationships.cc: * glom/mode_design/dialog_relationships.h: * glom/mode_design/fields/box_db_table_definition.cc: * glom/mode_find/box_data_details_find.cc: * glom/mode_find/notebook_find.cc: * glom/mode_find/notebook_find.h: * glom/utils.cc: Code style uniformity: Change strTableName to table_name and strWhereClause to where_clause. 2006-02-13 Murray Cumming * glom/data_structure/glomconversions.cc: * glom/data_structure/glomconversions.h: Added get_empty_value_suitable_for_python(). * glom/mode_data/box_data.cc: get_record_field_values(): Get full set of suitable empty values if there is no primary key, and replace null values with suitable non-null empty values, with get_empty_value_suitable_for_python(). This avoids warnings on the command line when adding records.