libglom-1.32: Glom::LayoutItem_Portal Class Reference

libglom-1.32 1.32.0

Public Types | Public Member Functions | List of all members
Glom::LayoutItem_Portal Class Reference

get_title() returns either the title of the Field or the CustomTitle. More...

Inheritance diagram for Glom::LayoutItem_Portal:
[legend]
Collaboration diagram for Glom::LayoutItem_Portal:
[legend]

## Public Types
enum | navigation_type { navigation_type::NONE, navigation_type::AUTOMATIC, navigation_type::SPECIFIC }
| The navigation (if any) that should be used when the user activates a related record row. More...
Public Types inherited from Glom::LayoutGroup
typedef std::vector< std::shared_ptr< LayoutItem > > | type_list_items
typedef std::vector< std::shared_ptr< const LayoutItem > > | type_list_const_items
Public Types inherited from Glom::TranslatableItem
enum | enumTranslatableItemType { enumTranslatableItemType::INVALID, enumTranslatableItemType::FIELD, enumTranslatableItemType::RELATIONSHIP, enumTranslatableItemType::LAYOUT_ITEM, enumTranslatableItemType::CUSTOM_TITLE, enumTranslatableItemType::PRINT_LAYOUT, enumTranslatableItemType::REPORT, enumTranslatableItemType::TABLE, enumTranslatableItemType::BUTTON, enumTranslatableItemType::TEXTOBJECT, enumTranslatableItemType::IMAGEOBJECT, enumTranslatableItemType::CHOICEVALUE, enumTranslatableItemType::DATABASE_TITLE, enumTranslatableItemType::STATIC_TEXT }
typedef std::unordered_map< Glib::ustring, Glib::ustring, std::hash< std::string > > | type_map_locale_to_translations

## Public Member Functions
| LayoutItem_Portal ()
| LayoutItem_Portal (const LayoutItem_Portal& src)=default
| LayoutItem_Portal (LayoutItem_Portal&& src)=default
LayoutItem_Portal& | operator= (const LayoutItem_Portal& src)=default
LayoutItem_Portal& | operator= (LayoutItem_Portal&& src)=default
LayoutItem* | clone () const override
| Create a new copied instance. More...
Glib::ustring | get_title (const Glib::ustring& locale) const noexcept override
| Get the title's translation for the specified locale, falling back to the original text if there is no translation. More...
Glib::ustring | get_title_or_name (const Glib::ustring& locale) const noexcept override
void | change_field_item_name (const Glib::ustring& table_name, const Glib::ustring& field_name, const Glib::ustring& field_name_new) override
void | change_related_field_item_name (const Glib::ustring& table_name, const Glib::ustring& field_name, const Glib::ustring& field_name_new) override
Glib::ustring | get_from_table () const
| A helper method to avoid extra ifs to avoid null dereferencing. More...
std::shared_ptr< UsesRelationship > | get_navigation_relationship_specific ()
| Gets the relationship to use for navigation if get_navigation_type() is NAVIGATION_NONE. More...
std::shared_ptr< const UsesRelationship > | get_navigation_relationship_specific () const
| Get the relationship to use for navigation if get_navigation_type() is NAVIGATION_NONE. More...
void | set_navigation_relationship_specific (const std::shared_ptr< UsesRelationship >& relationship)
| Set the relationship to use for navigation if get_navigation_type() is NAVIGATION_NONE. More...
void | reset_navigation_relationship ()
navigation_type | get_navigation_type () const
| Discover what type (if any) navigation should be used when the user activates a related record row. More...
void | set_navigation_type (navigation_type type)
| Set what type (if any) navigation should be used when the user activates a related record row. More...
void | get_suitable_table_to_view_details (Glib::ustring& table_name, std::shared_ptr< const UsesRelationship >& relationship, const std::shared_ptr< const Document >& document) const
| Discover what table to show when clicking on a related record. More...
std::shared_ptr< const UsesRelationship > | get_portal_navigation_relationship_automatic (const std::shared_ptr< const Document >& document) const
| Get the relationship (from the related table) into which the row button should navigate, or none if it should use the portal's directly related table itself. More...
double | get_print_layout_row_height () const
| This is used only for the print layouts. More...
void | set_print_layout_row_height (double row_height)
| This is used only for the print layouts. More...
double | get_print_layout_row_line_width () const
| This is used only for the print layouts. More...
void | set_print_layout_row_line_width (double width)
| This is used only for the print layouts. More...
double | get_print_layout_column_line_width () const
| This is used only for the print layouts. More...
void | set_print_layout_column_line_width (double width)
| This is used only for the print layouts. More...
Glib::ustring | get_print_layout_line_color () const
| This is used only for the print layouts. More...
void | set_print_layout_line_color (const Glib::ustring& color)
| This is used only for the print layouts. More...
void | get_rows_count (gulong& rows_count_min, gulong& rows_count_max) const
| Get the number of rows that should be displayed. More...
void | set_rows_count (gulong rows_count_min, gulong rows_count_max)
| Set the number of rows that should be displayed. More...
Public Member Functions inherited from Glom::LayoutGroup
| LayoutGroup ()
| LayoutGroup (const LayoutGroup& src)
| LayoutGroup (LayoutGroup&& src)=default
LayoutGroup& | operator= (const LayoutGroup& src)
LayoutGroup& | operator= (LayoutGroup&& src)=default
| ~LayoutGroup () override
bool | has_field (const Glib::ustring& parent_table_name, const Glib::ustring& table_name, const Glib::ustring& field_name) const
| Discover whether the layout group contains the specified field (from the current table). More...
bool | has_any_fields () const
| Discover whether the layout group contains any fields. More...
void | add_item (const std::shared_ptr< LayoutItem >& item)
| Add the item to the end of the list. More...
void | add_item (const std::shared_ptr< LayoutItem >& item, const std::shared_ptr< const LayoutItem >& position)
| Add the item after the specified existing item. More...
void | remove_item (const std::shared_ptr< LayoutItem >& item)
| Remove a layout item from the group. More...
void | remove_field (const Glib::ustring& parent_table_name, const Glib::ustring& table_name, const Glib::ustring& field_name)
| Remove any instance of the field from the layout. More...
virtual void | remove_relationship (const std::shared_ptr< const Relationship >& relationship)
| Remove any use of the relationship from the layout. More...
void | remove_all_items ()
double | get_border_width () const
void | set_border_width (double border_width)
guint | get_items_count () const
guint | get_columns_count () const
void | set_columns_count (guint columns_count)
type_list_items | get_items ()
type_list_const_items | get_items () const
type_list_const_items | get_items_recursive () const
| Get the items recursively, depth-first, not returning any groups. More...
type_list_items | get_items_recursive ()
| Get the items recursively, depth-first, not returning any groups. More...
type_list_const_items | get_items_recursive_with_groups () const
| Get the items recursively, depth-first, also returning the groups. More...
Glib::ustring | get_part_type_name () const override
Glib::ustring | get_report_part_id () const override
| Gets the node name to use for the intermediate XML, (and usually, the CSS style class to use for the resulting HTML). More...
Public Member Functions inherited from Glom::LayoutItem
| LayoutItem ()
| LayoutItem (const LayoutItem& src)
| LayoutItem (LayoutItem&& src)=default
LayoutItem& | operator= (const LayoutItem& src)
LayoutItem& | operator= (LayoutItem&& src)=default
| ~LayoutItem () override=default
bool | operator== (const LayoutItem& src) const
bool | get_editable () const
void | set_editable (bool val=true)
virtual Glib::ustring | get_layout_display_name () const
guint | get_display_width () const
void | set_display_width (guint value)
void | get_print_layout_position (double& x, double& y, double& width, double& height) const
| This is used only for the print layouts. More...
void | set_print_layout_position (double x, double y, double width, double height)
| This is used only for the print layouts. More...
void | set_print_layout_position_y (double y)
| This is used only for the print layouts. More...
void | set_print_layout_split_across_pages (bool split=true)
| This is used only for the print layouts. More...
bool | get_print_layout_split_across_pages () const
| This is used only for the print layouts. More...
Public Member Functions inherited from Glom::TranslatableItem
| TranslatableItem () noexcept
| TranslatableItem (const TranslatableItem& src)=default
| TranslatableItem (TranslatableItem&& src)=default
virtual | ~TranslatableItem ()=default
TranslatableItem& | operator= (const TranslatableItem& src)=default
TranslatableItem& | operator= (TranslatableItem&& src)=default
bool | operator== (const TranslatableItem& src) const noexcept
bool | operator!= (const TranslatableItem& src) const noexcept
virtual void | set_name (const Glib::ustring& name) noexcept
| Set the non-translated identifier name. More...
virtual Glib::ustring | get_name () const noexcept
| Get the non-translated identifier name. More...
bool | get_name_not_empty () const noexcept
virtual Glib::ustring | get_title_original () const noexcept
| Get the title's original (non-translated, usually English) text. More...
Glib::ustring | get_title_translation (const Glib::ustring& locale, bool fallback=true) const noexcept
| Get the title's translation for the specified locale, optionally falling back to a locale of the same language, and then falling back to the original. More...
void | set_title (const Glib::ustring& title, const Glib::ustring& locale) noexcept
| Set the title's translation for the specified locale. More...
void | set_title_original (const Glib::ustring& title) noexcept
| Set the title's original (non-translated, usually English) text. More...
void | clear_title_in_all_locales () noexcept
| Clear the original title and any translations of the title. More...
bool | get_has_translations () const noexcept
enumTranslatableItemType | get_translatable_item_type () const noexcept
Public Member Functions inherited from Glom::UsesRelationship
| UsesRelationship ()
| UsesRelationship (const UsesRelationship& src)=default
| UsesRelationship (UsesRelationship&& src)=default
UsesRelationship& | operator= (const UsesRelationship& src)=default
UsesRelationship& | operator= (UsesRelationship&& src)=default
bool | operator== (const UsesRelationship& src) const
bool | get_has_relationship_name () const
bool | get_has_related_relationship_name () const
Glib::ustring | get_relationship_name () const
| Convenience function, equivalent to get_relationship()->get_name(). More...
Glib::ustring | get_related_relationship_name () const
| Convenience function, equivalent to get_relationship()->get_name(). More...
std::shared_ptr< const Relationship > | get_relationship () const
| Return the relationship used by this item, if any, or a null std::shared_ptr. More...
void | set_relationship (const std::shared_ptr< const Relationship >& relationship)
std::shared_ptr< const Relationship > | get_related_relationship () const
| Return the related relationship used by this item, if any, or a null std::shared_ptr. More...
void | set_related_relationship (const std::shared_ptr< const Relationship >& relationship)
Glib::ustring | get_table_used (const Glib::ustring& parent_table) const
| Returns either the parent_table, related to table, or doubly-related to-table. More...
Glib::ustring | get_title_used (const Glib::ustring& parent_table_title, const Glib::ustring& locale) const
| Get the title of the relationship that is actually used, falling back to the relationship's name. More...
Glib::ustring | get_title_singular_used (const Glib::ustring& parent_table_title, const Glib::ustring& locale) const
| Get the singular title of the relationship that is actually used, falling back to the regular (plural) title, and then to the relationship's name. More...
Glib::ustring | get_to_field_used () const
Glib::ustring | get_relationship_name_used () const
| Get the name of the related relationship used, if any, or the relationship if there is no related relationship, or an empty string if neither are used by this item. More...
bool | get_relationship_used_allows_edit () const
| Discover whether the relationship used allows the user to edit values in its to table. More...
Glib::ustring | get_sql_join_alias_name () const
| Get a name to use as an alias in SQL statements. More...
Glib::ustring | get_sql_table_or_join_alias_name (const Glib::ustring& parent_table) const
| Get the item's alias name, if it uses a relationship, or just get its table name. More...
Glib::ustring | get_relationship_display_name () const
| Get a human-readable representation of th relationship. More...

## Additional Inherited Members
Static Public Member Functions inherited from Glom::TranslatableItem
static Glib::ustring | get_translatable_type_name (enumTranslatableItemType item_type) noexcept
static Glib::ustring | get_translatable_type_name_nontranslated (enumTranslatableItemType item_type) noexcept
| The non-translated name is used for the context in gettext .po files. More...
Public Attributes inherited from Glom::LayoutGroup
type_list_items | m_list_items
Protected Attributes inherited from Glom::TranslatableItem
enumTranslatableItemType | m_translatable_item_type

## Detailed Description

get_title() returns either the title of the Field or the CustomTitle.

You should not call get/set_title_original() or get/set_title_translation() on items of this type.

## Member Enumeration Documentation

## ◆ navigation_type

enum Glom::LayoutItem_Portal::navigation_type
| strong

The navigation (if any) that should be used when the user activates a related record row.

Enumerator
NONE | No navigation will be offered.
AUTOMATIC | The destination related table will be chosen automatically based on the relationship and the visible fields.
SPECIFIC | The destination related table will be determined by a specified relationship.

## Constructor & Destructor Documentation

## ◆ LayoutItem_Portal() [1/3]

Glom::LayoutItem_Portal::LayoutItem_Portal | ( |  | ) |

## ◆ LayoutItem_Portal() [2/3]

Glom::LayoutItem_Portal::LayoutItem_Portal | ( | const LayoutItem_Portal& | src | ) |
| default

## ◆ LayoutItem_Portal() [3/3]

Glom::LayoutItem_Portal::LayoutItem_Portal | ( | LayoutItem_Portal&& | src | ) |
| default

## Member Function Documentation

## ◆ change_field_item_name()

void Glom::LayoutItem_Portal::change_field_item_name | ( | const Glib::ustring & | table_name,
|  | const Glib::ustring & | field_name,
|  | const Glib::ustring & | field_name_new
| ) |  |
| overridevirtual

Reimplemented from Glom::LayoutGroup.

## ◆ change_related_field_item_name()

void Glom::LayoutItem_Portal::change_related_field_item_name | ( | const Glib::ustring & | table_name,
|  | const Glib::ustring & | field_name,
|  | const Glib::ustring & | field_name_new
| ) |  |
| overridevirtual

Reimplemented from Glom::LayoutGroup.

## ◆ clone()

LayoutItem* Glom::LayoutItem_Portal::clone | ( |  | ) | const
| overridevirtual

Create a new copied instance.

This allows us to deep-copy a list of LayoutItems.

Reimplemented from Glom::LayoutGroup.

## ◆ get_from_table()

Glib::ustring Glom::LayoutItem_Portal::get_from_table | ( |  | ) | const

A helper method to avoid extra ifs to avoid null dereferencing.

## ◆ get_navigation_relationship_specific() [1/2]

std::shared_ptr<UsesRelationship> Glom::LayoutItem_Portal::get_navigation_relationship_specific | ( |  | ) |

Gets the relationship to use for navigation if get_navigation_type() is NAVIGATION_NONE.

## ◆ get_navigation_relationship_specific() [2/2]

std::shared_ptr<const UsesRelationship> Glom::LayoutItem_Portal::get_navigation_relationship_specific | ( |  | ) | const

Get the relationship to use for navigation if get_navigation_type() is NAVIGATION_NONE.

## ◆ get_navigation_type()

navigation_type Glom::LayoutItem_Portal::get_navigation_type | ( |  | ) | const

Discover what type (if any) navigation should be used when the user activates a related record row.

## ◆ get_portal_navigation_relationship_automatic()

std::shared_ptr<const UsesRelationship> Glom::LayoutItem_Portal::get_portal_navigation_relationship_automatic | ( | const std::shared_ptr< const Document >& | document | ) | const

Get the relationship (from the related table) into which the row button should navigate, or none if it should use the portal's directly related table itself.

(If that should be chosen automatically, by looking at the fields in the portal.)

## ◆ get_print_layout_column_line_width()

double Glom::LayoutItem_Portal::get_print_layout_column_line_width | ( |  | ) | const

This is used only for the print layouts.

## ◆ get_print_layout_line_color()

Glib::ustring Glom::LayoutItem_Portal::get_print_layout_line_color | ( |  | ) | const

This is used only for the print layouts.

## ◆ get_print_layout_row_height()

double Glom::LayoutItem_Portal::get_print_layout_row_height | ( |  | ) | const

This is used only for the print layouts.

## ◆ get_print_layout_row_line_width()

double Glom::LayoutItem_Portal::get_print_layout_row_line_width | ( |  | ) | const

This is used only for the print layouts.

## ◆ get_rows_count()

void Glom::LayoutItem_Portal::get_rows_count | ( | gulong & | rows_count_min,
|  | gulong & | rows_count_max
| ) |  | const

Get the number of rows that should be displayed.

## ◆ get_suitable_table_to_view_details()

void Glom::LayoutItem_Portal::get_suitable_table_to_view_details | ( | Glib::ustring & | table_name,
|  | std::shared_ptr< const UsesRelationship >& | relationship,
|  | const std::shared_ptr< const Document >& | document
| ) |  | const

Discover what table to show when clicking on a related record.

This table will not necessarily just be the directly related table. The caller should check, in the document, that the returned table_name is not hidden.

Parameters

  table_name | The table that should be shown.
  relationship | The relationship in the directly related table that should be used to get to that table. If this is empty then we should just show the table directly.

## ◆ get_title()

Glib::ustring Glom::LayoutItem_Portal::get_title | ( | const Glib::ustring & | locale | ) | const
| overridevirtualnoexcept

Get the title's translation for the specified locale, falling back to the original text if there is no translation.

See also get_title_translation() and get_title_original(), which (optionally) do not use fallbacks.

Parameters

  locale | The locale whose title text should be returned. If this is empty then the original text will be returned.

Returns
  The text of the title.

Reimplemented from Glom::TranslatableItem.

## ◆ get_title_or_name()

Glib::ustring Glom::LayoutItem_Portal::get_title_or_name | ( | const Glib::ustring & | locale | ) | const
| overridevirtualnoexcept

Reimplemented from Glom::TranslatableItem.

## ◆ operator=() [1/2]

LayoutItem_Portal& Glom::LayoutItem_Portal::operator= | ( | const LayoutItem_Portal& | src | ) |
| default

## ◆ operator=() [2/2]

LayoutItem_Portal& Glom::LayoutItem_Portal::operator= | ( | LayoutItem_Portal&& | src | ) |
| default

## ◆ reset_navigation_relationship()

void Glom::LayoutItem_Portal::reset_navigation_relationship | ( |  | ) |

## ◆ set_navigation_relationship_specific()

void Glom::LayoutItem_Portal::set_navigation_relationship_specific | ( | const std::shared_ptr< UsesRelationship >& | relationship | ) |

Set the relationship to use for navigation if get_navigation_type() is NAVIGATION_NONE.

## ◆ set_navigation_type()

void Glom::LayoutItem_Portal::set_navigation_type | ( | navigation_type | type | ) |

Set what type (if any) navigation should be used when the user activates a related record row.

## ◆ set_print_layout_column_line_width()

void Glom::LayoutItem_Portal::set_print_layout_column_line_width | ( | double | width | ) |

This is used only for the print layouts.

## ◆ set_print_layout_line_color()

void Glom::LayoutItem_Portal::set_print_layout_line_color | ( | const Glib::ustring & | color | ) |

This is used only for the print layouts.

## ◆ set_print_layout_row_height()

void Glom::LayoutItem_Portal::set_print_layout_row_height | ( | double | row_height | ) |

This is used only for the print layouts.

## ◆ set_print_layout_row_line_width()

void Glom::LayoutItem_Portal::set_print_layout_row_line_width | ( | double | width | ) |

This is used only for the print layouts.

## ◆ set_rows_count()

void Glom::LayoutItem_Portal::set_rows_count | ( | gulong | rows_count_min,
|  | gulong | rows_count_max
| ) |  |

Set the number of rows that should be displayed.

The documentation for this class was generated from the following file:

- libglom/data_structure/layout/layoutitem_portal.h