def __init__( self, parent: QW.QWidget ): QW.QWidget.__init__( self, parent ) self._current_ratings_numerical_service = None self._flip_or_set_action = ClientGUICommon.BetterChoice( self ) self._flip_or_set_action.addItem( 'set', HC.CONTENT_UPDATE_SET ) self._flip_or_set_action.addItem( 'flip on and off', HC.CONTENT_UPDATE_FLIP ) self._flip_or_set_action.SetValue( HC.CONTENT_UPDATE_SET ) self._service_keys = ClientGUICommon.BetterChoice( self ) self._service_keys.currentIndexChanged.connect( self._UpdateSliderRange ) self._ratings_numerical_slider = QP.LabelledSlider( self ) self._ratings_numerical_remove = QW.QCheckBox( 'remove rating', self ) # services = HG.client_controller.services_manager.GetServices( ( HC.LOCAL_RATING_NUMERICAL, ) ) if len( services ) == 0: self._service_keys.addItem( 'you have no numerical rating services', None ) else: for service in services: service_name = service.GetName() service_key = service.GetServiceKey() self._service_keys.addItem( service_name, service_key ) self._UpdateSliderRange() # vbox = QP.VBoxLayout() ratings_numerical_hbox = QP.HBoxLayout() QP.AddToLayout( ratings_numerical_hbox, self._service_keys, CC.FLAGS_CENTER_PERPENDICULAR_EXPAND_DEPTH ) QP.AddToLayout( ratings_numerical_hbox, self._ratings_numerical_slider, CC.FLAGS_CENTER_PERPENDICULAR ) QP.AddToLayout( ratings_numerical_hbox, self._ratings_numerical_remove, CC.FLAGS_CENTER_PERPENDICULAR ) QP.AddToLayout( vbox, self._flip_or_set_action, CC.FLAGS_EXPAND_PERPENDICULAR ) QP.AddToLayout( vbox, ratings_numerical_hbox, CC.FLAGS_EXPAND_PERPENDICULAR ) self.setLayout( vbox ) self._ratings_numerical_remove.toggled.connect( self._UpdateFlipAllowed )
def __init__(self, parent, command, shortcuts_name): ClientGUIScrolledPanels.EditPanel.__init__(self, parent) self._current_ratings_like_service = None self._current_ratings_numerical_service = None # is_custom_or_media = shortcuts_name not in ClientGUIShortcuts.SHORTCUTS_RESERVED_NAMES or shortcuts_name == 'media' self._command_type_choice = ClientGUICommon.BetterChoice(self) self._command_type_choice.addItem('simple command', self.COMMAND_TYPE_PANEL_SIMPLE) if is_custom_or_media: self._command_type_choice.addItem('tag command', self.COMMAND_TYPE_PANEL_TAG) self._command_type_choice.addItem( 'like/dislike rating command', self.COMMAND_TYPE_PANEL_RATING_LIKE) self._command_type_choice.addItem( 'numerical rating command', self.COMMAND_TYPE_PANEL_RATING_NUMERICAL) self._command_type_choice.addItem( 'numerical rating increment/decrement command', self.COMMAND_TYPE_PANEL_RATING_NUMERICAL_INCDEC) else: self._command_type_choice.hide() if shortcuts_name in ClientGUIShortcuts.SHORTCUTS_RESERVED_NAMES: choices = ClientGUIShortcuts.simple_shortcut_name_to_action_lookup[ shortcuts_name] else: choices = ClientGUIShortcuts.simple_shortcut_name_to_action_lookup[ 'custom'] choices = list(choices) choices.sort() self._simple_actions = QW.QComboBox(self) self._simple_actions.addItems(choices) # self._flip_or_set_action = ClientGUICommon.BetterChoice(self) self._flip_or_set_action.addItem('set', HC.CONTENT_UPDATE_SET) self._flip_or_set_action.addItem('flip on and off', HC.CONTENT_UPDATE_FLIP) self._flip_or_set_action.SetValue(HC.CONTENT_UPDATE_SET) # self._tag_panel = QW.QWidget(self) self._tag_service_keys = QW.QComboBox(self._tag_panel) self._tag_value = QW.QLineEdit() self._tag_value.setReadOnly(True) expand_parents = False self._tag_input = ClientGUIACDropdown.AutoCompleteDropdownTagsWrite( self._tag_panel, self.SetTags, expand_parents, CC.LOCAL_FILE_SERVICE_KEY, CC.COMBINED_TAG_SERVICE_KEY) # self._ratings_like_panel = QW.QWidget(self) self._ratings_like_service_keys = QW.QComboBox( self._ratings_like_panel) self._ratings_like_service_keys.currentIndexChanged.connect( self._SetActions) self._ratings_like_like = QW.QRadioButton('like', self._ratings_like_panel) self._ratings_like_dislike = QW.QRadioButton('dislike', self._ratings_like_panel) self._ratings_like_remove = QW.QRadioButton('remove rating', self._ratings_like_panel) # self._ratings_numerical_panel = QW.QWidget(self) self._ratings_numerical_service_keys = QW.QComboBox( self._ratings_numerical_panel) self._ratings_numerical_service_keys.currentIndexChanged.connect( self._SetActions) self._ratings_numerical_slider = QP.LabelledSlider( self._ratings_numerical_panel) self._ratings_numerical_remove = QW.QCheckBox( 'remove rating', self._ratings_numerical_panel) # self._ratings_numerical_incdec_panel = QW.QWidget(self) self._ratings_numerical_incdec_service_keys = QW.QComboBox( self._ratings_numerical_incdec_panel) self._ratings_numerical_incdec = ClientGUICommon.BetterChoice( self._ratings_numerical_incdec_panel) self._ratings_numerical_incdec.addItem( HC.content_update_string_lookup[HC.CONTENT_UPDATE_INCREMENT], HC.CONTENT_UPDATE_INCREMENT) self._ratings_numerical_incdec.addItem( HC.content_update_string_lookup[HC.CONTENT_UPDATE_DECREMENT], HC.CONTENT_UPDATE_DECREMENT) # services = HG.client_controller.services_manager.GetServices( (HC.LOCAL_TAG, HC.TAG_REPOSITORY, HC.LOCAL_RATING_LIKE, HC.LOCAL_RATING_NUMERICAL)) for service in services: service_name = service.GetName() service_key = service.GetServiceKey() service_type = service.GetServiceType() if service_type in HC.REAL_TAG_SERVICES: self._tag_service_keys.addItem(service_name, service_key) elif service_type == HC.LOCAL_RATING_LIKE: self._ratings_like_service_keys.addItem( service_name, service_key) elif service_type == HC.LOCAL_RATING_NUMERICAL: self._ratings_numerical_service_keys.addItem( service_name, service_key) self._ratings_numerical_incdec_service_keys.addItem( service_name, service_key) self._SetActions() # command_type = command.GetCommandType() data = command.GetData() if command_type == CC.APPLICATION_COMMAND_TYPE_SIMPLE: action = data QP.SetStringSelection(self._simple_actions, action) self._command_type_choice.SetValue(self.COMMAND_TYPE_PANEL_SIMPLE) else: (service_key, content_type, action, value) = data if HG.client_controller.services_manager.ServiceExists( service_key): self._service = HG.client_controller.services_manager.GetService( service_key) else: QW.QMessageBox.warning( self, 'Warning', 'The service that this command relies upon no longer exists! This command will reset to a default form.' ) local_tag_services = list( HG.client_controller.services_manager.GetServices( (HC.LOCAL_TAG, ))) self._service = local_tag_services[0] content_type = HC.CONTENT_TYPE_MAPPINGS action = HC.CONTENT_UPDATE_SET value = 'tag' service_name = self._service.GetName() service_type = self._service.GetServiceType() self._flip_or_set_action.SetValue(action) if service_type in HC.REAL_TAG_SERVICES: QP.SetStringSelection(self._tag_service_keys, service_name) self._tag_value.setText(value) self._command_type_choice.SetValue(self.COMMAND_TYPE_PANEL_TAG) elif service_type == HC.LOCAL_RATING_LIKE: QP.SetStringSelection(self._ratings_like_service_keys, service_name) self._SetActions() if value is None: self._ratings_like_remove.setChecked(True) elif value == True: self._ratings_like_like.setChecked(True) elif value == False: self._ratings_like_dislike.setChecked(True) self._command_type_choice.SetValue( self.COMMAND_TYPE_PANEL_RATING_LIKE) elif service_type == HC.LOCAL_RATING_NUMERICAL: if action in (HC.CONTENT_UPDATE_SET, HC.CONTENT_UPDATE_FLIP): QP.SetStringSelection(self._ratings_numerical_service_keys, service_name) self._SetActions() if value is None: self._ratings_numerical_remove.setChecked(True) else: num_stars = self._current_ratings_numerical_service.GetNumStars( ) slider_value = int(round(value * num_stars)) self._ratings_numerical_slider.SetValue(slider_value) self._command_type_choice.SetValue( self.COMMAND_TYPE_PANEL_RATING_NUMERICAL) elif action in (HC.CONTENT_UPDATE_INCREMENT, HC.CONTENT_UPDATE_DECREMENT): QP.SetStringSelection( self._ratings_numerical_incdec_service_keys, service_name) self._ratings_numerical_incdec.SetValue(action) self._command_type_choice.SetValue( self.COMMAND_TYPE_PANEL_RATING_NUMERICAL_INCDEC) # tag_sub_vbox = QP.VBoxLayout() QP.AddToLayout(tag_sub_vbox, self._tag_value, CC.FLAGS_EXPAND_PERPENDICULAR) QP.AddToLayout(tag_sub_vbox, self._tag_input, CC.FLAGS_EXPAND_BOTH_WAYS) tag_hbox = QP.HBoxLayout() QP.AddToLayout(tag_hbox, self._tag_service_keys, CC.FLAGS_EXPAND_DEPTH_ONLY) QP.AddToLayout(tag_hbox, tag_sub_vbox, CC.FLAGS_EXPAND_SIZER_BOTH_WAYS) self._tag_panel.setLayout(tag_hbox) ratings_like_hbox = QP.HBoxLayout() QP.AddToLayout(ratings_like_hbox, self._ratings_like_service_keys, CC.FLAGS_EXPAND_DEPTH_ONLY) QP.AddToLayout(ratings_like_hbox, self._ratings_like_like, CC.FLAGS_VCENTER) QP.AddToLayout(ratings_like_hbox, self._ratings_like_dislike, CC.FLAGS_VCENTER) QP.AddToLayout(ratings_like_hbox, self._ratings_like_remove, CC.FLAGS_VCENTER) self._ratings_like_panel.setLayout(ratings_like_hbox) ratings_numerical_hbox = QP.HBoxLayout() QP.AddToLayout(ratings_numerical_hbox, self._ratings_numerical_service_keys, CC.FLAGS_EXPAND_DEPTH_ONLY) QP.AddToLayout(ratings_numerical_hbox, self._ratings_numerical_slider, CC.FLAGS_VCENTER) QP.AddToLayout(ratings_numerical_hbox, self._ratings_numerical_remove, CC.FLAGS_VCENTER) self._ratings_numerical_panel.setLayout(ratings_numerical_hbox) hbox = QP.HBoxLayout() QP.AddToLayout(hbox, self._ratings_numerical_incdec_service_keys, CC.FLAGS_EXPAND_DEPTH_ONLY) QP.AddToLayout(hbox, self._ratings_numerical_incdec, CC.FLAGS_VCENTER) self._ratings_numerical_incdec_panel.setLayout(hbox) vbox = QP.VBoxLayout() QP.AddToLayout(vbox, self._command_type_choice, CC.FLAGS_EXPAND_PERPENDICULAR) QP.AddToLayout(vbox, self._simple_actions, CC.FLAGS_EXPAND_PERPENDICULAR) QP.AddToLayout(vbox, self._flip_or_set_action, CC.FLAGS_EXPAND_PERPENDICULAR) QP.AddToLayout(vbox, self._tag_panel, CC.FLAGS_EXPAND_SIZER_PERPENDICULAR) QP.AddToLayout(vbox, self._ratings_like_panel, CC.FLAGS_EXPAND_SIZER_PERPENDICULAR) QP.AddToLayout(vbox, self._ratings_numerical_panel, CC.FLAGS_EXPAND_SIZER_PERPENDICULAR) QP.AddToLayout(vbox, self._ratings_numerical_incdec_panel, CC.FLAGS_EXPAND_SIZER_PERPENDICULAR) QP.AddToLayout(vbox, QW.QWidget(self), CC.FLAGS_EXPAND_BOTH_WAYS) self.widget().setLayout(vbox) self._UpdateVisibleControls() # self._command_type_choice.currentIndexChanged.connect( self._UpdateVisibleControls)