def _GetCurrentSort( self ) -> ClientMedia.MediaSort: sort_order = self._sort_order_choice.GetValue() media_sort = ClientMedia.MediaSort( self._sort_type, sort_order ) return media_sort
def _GetCurrentSort(self) -> ClientMedia.MediaSort: sort_order = self._sort_order_choice.GetValue() if sort_order is None: sort_order = CC.SORT_ASC media_sort = ClientMedia.MediaSort(self._sort_type, sort_order) return media_sort
def __init__( self, parent, management_controller = None ): QW.QWidget.__init__( self, parent ) self._management_controller = management_controller self._sort_type = ( 'system', CC.SORT_FILES_BY_FILESIZE ) self._sort_type_button = ClientGUICommon.BetterButton( self, 'sort', self._SortTypeButtonClick ) self._sort_order_choice = ClientGUICommon.BetterChoice( self ) type_width = ClientGUIFunctions.ConvertTextToPixelWidth( self._sort_type_button, 14 ) self._sort_type_button.setMinimumWidth( type_width ) asc_width = ClientGUIFunctions.ConvertTextToPixelWidth( self._sort_order_choice, 14 ) self._sort_order_choice.setMinimumWidth( asc_width ) self._sort_order_choice.addItem( '', CC.SORT_ASC ) self._UpdateSortTypeLabel() self._UpdateAscLabels() # hbox = QP.HBoxLayout( margin = 0 ) QP.AddToLayout( hbox, self._sort_type_button, CC.FLAGS_EXPAND_BOTH_WAYS ) QP.AddToLayout( hbox, self._sort_order_choice, CC.FLAGS_CENTER_PERPENDICULAR ) self.setLayout( hbox ) HG.client_controller.sub( self, 'ACollectHappened', 'a_collect_happened' ) HG.client_controller.sub( self, 'BroadcastSort', 'do_page_sort' ) if self._management_controller is not None and self._management_controller.HasVariable( 'media_sort' ): media_sort = self._management_controller.GetVariable( 'media_sort' ) try: self.SetSort( media_sort ) except: default_sort = ClientMedia.MediaSort( ( 'system', CC.SORT_FILES_BY_FILESIZE ), CC.SORT_ASC ) self.SetSort( default_sort ) self._sort_order_choice.currentIndexChanged.connect( self.EventSortAscChoice )
def _UpdateSortTypeLabel(self): example_sort = ClientMedia.MediaSort(self._sort_type, CC.SORT_ASC) self._sort_type_button.setText(example_sort.GetSortTypeString()) (sort_metatype, sort_data) = self._sort_type show_tdt = sort_metatype == 'namespaces' and HG.client_controller.new_options.GetBoolean( 'advanced_mode') if show_tdt: if sort_metatype == 'namespaces': (namespaces, current_tag_display_type) = sort_data tag_display_types = [ ClientTags.TAG_DISPLAY_ACTUAL, ClientTags.TAG_DISPLAY_SELECTION_LIST, ClientTags.TAG_DISPLAY_SINGLE_MEDIA ] choice_tuples = [ (ClientTags.tag_display_str_lookup[tag_display_type], tag_display_type) for tag_display_type in tag_display_types ] self._sort_tag_display_type_button.blockSignals(True) self._sort_tag_display_type_button.SetChoiceTuples( choice_tuples) self._sort_tag_display_type_button.SetValue( current_tag_display_type) self._sort_tag_display_type_button.blockSignals(False) self._sort_tag_display_type_button.setVisible(show_tdt)
def _PopulateSortMenuOrList(self, menu=None): sort_types = [] menu_items_and_sort_types = [] submetatypes_to_menus = {} for system_sort_type in CC.SYSTEM_SORT_TYPES_SORT_CONTROL_SORTED: sort_type = ('system', system_sort_type) sort_types.append(sort_type) if menu is not None: submetatype = CC.system_sort_type_submetatype_string_lookup[ system_sort_type] if submetatype is None: menu_to_add_to = menu else: if submetatype not in submetatypes_to_menus: submenu = QW.QMenu(menu) submetatypes_to_menus[submetatype] = submenu ClientGUIMenus.AppendMenu(menu, submenu, submetatype) menu_to_add_to = submetatypes_to_menus[submetatype] label = CC.sort_type_basic_string_lookup[system_sort_type] menu_item = ClientGUIMenus.AppendMenuItem( menu_to_add_to, label, 'Select this sort type.', self._SetSortTypeFromUser, sort_type) menu_items_and_sort_types.append((menu_item, sort_type)) default_namespace_sorts = HG.client_controller.new_options.GetDefaultNamespaceSorts( ) if menu is not None: submenu = QW.QMenu(menu) ClientGUIMenus.AppendMenu(menu, submenu, 'namespaces') for namespace_sort in default_namespace_sorts: sort_type = namespace_sort.sort_type sort_types.append(sort_type) if menu is not None: example_sort = ClientMedia.MediaSort(sort_type, CC.SORT_ASC) label = example_sort.GetSortTypeString() menu_item = ClientGUIMenus.AppendMenuItem( submenu, label, 'Select this sort type.', self._SetSortTypeFromUser, sort_type) menu_items_and_sort_types.append((menu_item, sort_type)) if menu is not None: ClientGUIMenus.AppendMenuItem(submenu, 'custom', 'Set a custom namespace sort', self._SetCustomNamespaceSortFromUser) rating_service_keys = HG.client_controller.services_manager.GetServiceKeys( (HC.LOCAL_RATING_LIKE, HC.LOCAL_RATING_NUMERICAL)) if len(rating_service_keys) > 0: if menu is not None: submenu = QW.QMenu(menu) ClientGUIMenus.AppendMenu(menu, submenu, 'ratings') for service_key in rating_service_keys: sort_type = ('rating', service_key) sort_types.append(sort_type) if menu is not None: example_sort = ClientMedia.MediaSort( sort_type, CC.SORT_ASC) label = example_sort.GetSortTypeString() menu_item = ClientGUIMenus.AppendMenuItem( submenu, label, 'Select this sort type.', self._SetSortTypeFromUser, sort_type) menu_items_and_sort_types.append((menu_item, sort_type)) if menu is not None: for (menu_item, sort_choice) in menu_items_and_sort_types: if sort_choice == self._sort_type: menu_item.setCheckable(True) menu_item.setChecked(True) return sort_types
def _UpdateSortTypeLabel( self ): example_sort = ClientMedia.MediaSort( self._sort_type, CC.SORT_ASC ) self._sort_type_button.setText( example_sort.GetSortTypeString() )