#:import DEVICE_TYPE kivymd.material_resources.DEVICE_TYPE #:import FakeRectangularElevationBehavior kivymd.uix.behaviors.FakeRectangularElevationBehavior <CellRow> orientation: "vertical" md_bg_color: ( \ ( \ root.theme_cls.bg_darkest \ if root.theme_cls.theme_style == "Light" else \ root.theme_cls.bg_light \ ) \ if not root.background_color_selected_cell \ else root.background_color_selected_cell \ ) \ if self.selected \ else \ ( \ root.theme_cls.bg_normal \ if not root.background_color_cell \ else root.background_color_cell \ ) on_press: if DEVICE_TYPE != "desktop": root.table.on_mouse_select(self) on_enter: if DEVICE_TYPE == "desktop": root.table.on_mouse_select(self) MDBoxLayout: id: box padding: "8dp", "8dp", 0, "8dp" spacing: "16dp" MDCheckbox: id: check size_hint: None, None size: 0, 0 opacity: 0 MDBoxLayout: id: inner_box MDIcon: id: icon size_hint: None, None pos_hint: {"center_y": 0.5} size: ("24dp", "24dp") if root.icon else (0, 0) icon: root.icon if root.icon else "" theme_text_color: "Custom" text_color: root.icon_color if root.icon_color else \ root.theme_cls.primary_color MDLabel: id: label text: " " + root.text markup: True color: (1, 1, 1, 1) \ if root.theme_cls.theme_style == "Dark" else \ (0, 0, 0, 1) MDSeparator: <CellHeader> orientation: "vertical" size_hint_y: None height: self.minimum_height spacing: "4dp" tooltip_text: root.text BoxLayout: id: box size_hint_y: None height: lbl.height MDLabel: id: lbl text: " " + root.text adaptive_height: True bold: True markup: True color: (1, 1, 1, 1) \ if root.theme_cls.theme_style == "Dark" else \ (0, 0, 0, 1) MDSeparator: id: separator <SortButton> id: sort_btn icon: "arrow-up" pos_hint: {"center_y": 0.5} size: [dp(24), dp(0)] theme_text_color: "Custom" text_color: self.theme_cls.secondary_text_color opacity: 0 <TableHeader> bar_width: 0 do_scroll: False size_hint: 1, None height: header.height MDGridLayout: id: header rows: 1 cols_minimum: root.cols_minimum adaptive_size: True padding: 0, "8dp", 0, 0 md_bg_color: root.theme_cls.bg_light \ if not root.background_color_header \ else root.background_color_header MDBoxLayout: orientation: "vertical" MDBoxLayout: id: box padding: "8dp", "8dp", "4dp", 0 spacing: "16dp" MDCheckbox: id: check size_hint: None, None size: 0, 0 opacity: 0 on_release: root.table_data.select_all(self.state) CellHeader: id: first_cell MDSeparator: <TableData> data: root.recycle_data data_first_cells: root.data_first_cells key_viewclass: "viewclass" TableRecycleGridLayout: id: row_controller key_selection: "selectable" cols: root.total_col_headings cols_minimum: root.cols_minimum default_size: None, dp(52) default_size_hint: 1, None size_hint: None, None height: self.minimum_height width: self.minimum_width multiselect: True touch_multiselect: True <TablePagination> adaptive_height: True spacing: "8dp" MDLabel: text: "Rows per page" shorten: True halign: "right" font_style: "Caption" color: (1, 1, 1, 1) \ if root.theme_cls.theme_style == "Dark" else \ (0, 0, 0, 1) MDDropDownItem: id: drop_item pos_hint: {'center_y': .5} font_size: "14sp" on_release: root.table_data.open_pagination_menu() text: f"{root.table_data.rows_num if root.table_data.rows_num < len(root.table_data.row_data) else len(root.table_data.row_data)}" Widget: size_hint_x: None width: "32dp" if DEVICE_TYPE != "mobile" else "8dp" MDLabel: id: label_rows_per_page adaptive_size: True -text_size: None, None pos_hint: {"center_y": .5} font_style: "Caption" color: (1, 1, 1, 1) \ if root.theme_cls.theme_style == "Dark" else \ (0, 0, 0, 1) text: f"1-" \ f"{root.table_data.rows_num if root.table_data.rows_num > len(root.table_data.row_data) else len(root.table_data.row_data)} " \ f"of {len(root.table_data.row_data)}" MDIconButton: id: button_back icon: "chevron-left" user_font_size: "20sp" if DEVICE_TYPE != "mobile" else "16dp" ripple_scale: .5 if DEVICE_TYPE == "mobile" else 1 pos_hint: {'center_y': .5} disabled: True md_bg_color_disabled: 0, 0, 0, 0 on_release: root.table_data.set_next_row_data_parts("back") MDIconButton: id: button_forward icon: "chevron-right" user_font_size: "20sp" if DEVICE_TYPE != "mobile" else "16dp" ripple_scale: .5 if DEVICE_TYPE == "mobile" else 1 pos_hint: {'center_y': .5} disabled: True md_bg_color_disabled: 0, 0, 0, 0 on_release: root.table_data.set_next_row_data_parts("forward") <TableContainer@MDCard+FakeRectangularElevationBehavior> <MDDataTable> TableContainer: id: container orientation: "vertical" elevation: root.elevation padding: "24dp", "24dp", "8dp", "8dp"