Best Python code snippet using playwright-python
customize_outfit_dialog.py
Source:customize_outfit_dialog.py  
...56    @CommonExceptionHandler.catch_exceptions(ModInfo.get_identity())57    def open(self) -> None:58        """ Open the dialog for customizing a sims outfit. """59        self.log.format_with_message('Opening customize outfit dialog.', sim=CommonSimNameUtils.get_full_name(self._sim_info))60        def _on_close() -> None:61            if self._on_close is not None:62                self._on_close()63        def _reopen_dialog() -> None:64            option_dialog.show(sim_info=self._sim_info, page=option_dialog.current_page)65        outfit_parts = OCCASPartQueryUtils().get_cas_parts_for_sim(self._sim_info)66        if not outfit_parts:67            CommonOkDialog(68                OCStringId.OC_CUSTOMIZE_OUTFIT_OC,69                OCStringId.OC_NO_OUTFIT_PARTS_FOUND,70                mod_identity=self.mod_identity71            ).show(on_acknowledged=_on_close)72            return73        option_dialog = CommonChooseObjectOptionDialog(74            OCStringId.OC_CUSTOMIZE_OUTFIT_OC,75            0,76            on_close=_on_close,77            mod_identity=self.mod_identity78        )79        def _on_option_chosen(option_identifier: str, choice: _OutfitPartsBy):80            self.log.debug('Opening Outfit Parts: {}'.format(option_identifier))81            self._open_outfit_parts_by(choice, outfit_parts, on_close=_reopen_dialog)82        option_dialog.add_option(83            CommonDialogObjectOption(84                'By Tag',85                _OutfitPartsBy.TAG,86                CommonDialogOptionContext(87                    OCStringId.OC_FILTER_BY_TAG,88                    0,89                    icon=CommonIconUtils.load_arrow_navigate_into_icon()90                ),91                on_chosen=_on_option_chosen92            )93        )94        option_dialog.add_option(95            CommonDialogObjectOption(96                'By Outfit Slot',97                _OutfitPartsBy.OUTFIT_SLOT,98                CommonDialogOptionContext(99                    OCStringId.OC_FILTER_BY_OUTFIT_SLOT,100                    0,101                    icon=CommonIconUtils.load_arrow_navigate_into_icon()102                ),103                on_chosen=_on_option_chosen104            )105        )106        option_dialog.add_option(107            CommonDialogObjectOption(108                'By Author',109                _OutfitPartsBy.AUTHOR,110                CommonDialogOptionContext(111                    OCStringId.OC_FILTER_BY_AUTHOR,112                    0,113                    icon=CommonIconUtils.load_arrow_navigate_into_icon()114                ),115                on_chosen=_on_option_chosen116            )117        )118        option_dialog.show(sim_info=self._sim_info)119    def _open_outfit_parts_by(self, outfit_parts_by: _OutfitPartsBy, outfit_parts: Tuple[OCOutfitPart], on_close: Callable[[], None]):120        self.log.format_with_message('Opening outfit parts by', outfit_parts_by=outfit_parts_by)121        def _on_close() -> None:122            on_close()123        option_dialog = CommonChooseObjectOptionDialog(124            OCStringId.OC_CUSTOMIZE_OUTFIT_OC,125            0,126            on_close=_on_close,127            mod_identity=self.mod_identity128        )129        def _reopen_dialog() -> None:130            option_dialog.show(sim_info=self._sim_info, page=option_dialog.current_page)131        def _on_option_chosen(option_identifier: str, chosen: Tuple[OCOutfitPart]):132            self.log.debug('Opening Outfit Parts By: {}'.format(option_identifier))133            self._open_with_outfit_parts(chosen, on_close_callback=_reopen_dialog)134        def _no_outfit_parts_found() -> None:135            CommonOkDialog(136                OCStringId.OC_CUSTOMIZE_OUTFIT_OC,137                OCStringId.OC_NO_OUTFIT_PARTS_FOUND,138                mod_identity=self.mod_identity139            ).show(on_acknowledged=_on_close)140        if outfit_parts_by == _OutfitPartsBy.NONE:141            self.log.debug('outfit_parts_by was NONE')142            _no_outfit_parts_found()143            return144        self.log.format_with_message('Creating outfit parts by', outfit_parts_by=outfit_parts_by)145        if len(outfit_parts) == 0:146            self.log.debug('No outfit parts found!')147            _no_outfit_parts_found()148            return149        sorted_outfit_parts = sorted(outfit_parts, key=lambda op: op.raw_display_name)150        if not sorted_outfit_parts:151            self.log.debug('Failed to sort outfit parts by name')152            _no_outfit_parts_found()153            return154        self.log.format_with_message('Outfit parts sorted.', sorted_outfit_parts=sorted_outfit_parts)155        outfit_parts_by_value_dict = {}156        for outfit_part in sorted_outfit_parts:157            outfit_part: OCOutfitPart = outfit_part158            self.log.format_with_message('Looking at outfit part.', outfit_part=outfit_part)159            if not CommonCASUtils.is_cas_part_loaded(outfit_part.part_id):160                self.log.debug('Outfit part not loaded.')161                continue162            keys = self._get_outfit_part_key(outfit_part, outfit_parts_by=outfit_parts_by)163            if keys is None:164                self.log.debug('No key found.')165                continue166            for key in keys:167                str_key = str(key)168                by_value = outfit_parts_by_value_dict.get(str_key, list())169                by_value.append(outfit_part)170                outfit_parts_by_value_dict[str_key] = by_value171            self.log.debug('Outfit part loaded.')172        if len(outfit_parts_by_value_dict) == 0:173            self.log.format_with_message('No outfit parts found with outfit parts by!', outfit_parts_by=outfit_parts_by, outfit_parts_by_value_dict=outfit_parts_by_value_dict)174            self.log.debug('No outfit parts found!')175            _no_outfit_parts_found()176            return177        self.log.format_with_message('Finished filtering outfit parts.', outfit_parts_by_value_dict=outfit_parts_by_value_dict)178        sorted_keys = sorted(outfit_parts_by_value_dict.keys())179        self.log.format(sorted_keys=sorted_keys)180        for key in sorted_keys:181            self.log.format_with_message('Building key', key=key)182            outfit_parts_by_value: List[OCOutfitPart] = outfit_parts_by_value_dict[key]183            if len(outfit_parts_by_value) == 0:184                self.log.debug('No parts found in key.')185                continue186            outfit_parts_count = str(len(outfit_parts_by_value))187            self.log.format_with_message('Found outfit parts', count=outfit_parts_count)188            option_dialog.add_option(189                CommonDialogObjectOption(190                    key,191                    tuple(outfit_parts_by_value),192                    CommonDialogOptionContext(193                        key,194                        OCStringId.OC_OUTFIT_PARTS_COUNT,195                        description_tokens=(outfit_parts_count,),196                        icon=CommonIconUtils.load_arrow_navigate_into_icon()197                    ),198                    on_chosen=_on_option_chosen199                )200            )201        if not option_dialog.has_options():202            self.log.debug('No options found in dialog.')203            _no_outfit_parts_found()204            return205        self.log.debug('Showing dialog.')206        option_dialog.show(sim_info=self._sim_info)207    def _get_outfit_part_key(self, outfit_part: OCOutfitPart, outfit_parts_by: _OutfitPartsBy=_OutfitPartsBy.NONE) -> Any:208        if outfit_parts_by == _OutfitPartsBy.NONE:209            return None210        if outfit_parts_by == _OutfitPartsBy.TAG:211            return outfit_part.tags212        elif outfit_parts_by == _OutfitPartsBy.AUTHOR:213            return outfit_part.author,214        return str(CommonCASUtils.get_body_type_of_cas_part(outfit_part.part_id)).replace('BodyType.', ''),215    @CommonExceptionHandler.catch_exceptions(ModInfo.get_identity())216    def _open_with_outfit_parts(self, outfit_parts: Tuple[OCOutfitPart], on_close_callback: Callable[[], None]=None, current_page: int=1):217        self.log.format_with_message('Opening with outfit parts.', outfit_parts=outfit_parts)218        def _on_close() -> None:219            if on_close_callback is not None:220                on_close_callback()221        option_dialog = CommonChooseObjectOptionDialog(222            OCStringId.OC_CUSTOMIZE_OUTFIT_OC,223            0,224            on_close=_on_close,225            mod_identity=self.mod_identity226        )227        def _reopen_dialog() -> None:228            option_dialog.show(sim_info=self._sim_info, picker_type=UiObjectPicker.UiObjectPickerObjectPickerType.OBJECT, page=option_dialog.current_page)229        def _on_option_chosen(option_identifier: str, chosen: str):230            self.log.debug('Chose tag: {}'.format(option_identifier))231            self._open_cas_part_selector(outfit_parts, chosen, on_close_callback=_reopen_dialog)232        def _no_outfit_parts_found() -> None:233            CommonOkDialog(234                OCStringId.OC_CUSTOMIZE_OUTFIT_OC,235                OCStringId.OC_NO_OUTFIT_PARTS_FOUND,236                mod_identity=self.mod_identity237            ).show(on_acknowledged=_on_close)238        if not outfit_parts:239            _no_outfit_parts_found()240            return241        object_categories: List[str] = list()242        for outfit_part in outfit_parts:243            for part_tag in outfit_part.tag_list:244                if str(part_tag) in object_categories:245                    continue246                object_categories.append(str(part_tag))247        sorted_object_categories = sorted(object_categories, key=lambda item: item)248        for object_category in sorted_object_categories:249            option_dialog.add_option(250                CommonDialogSelectOption(251                    object_category,252                    object_category,253                    CommonDialogOptionContext(254                        object_category,255                        0,256                        icon=CommonIconUtils.load_arrow_navigate_into_icon()257                    ),258                    on_chosen=_on_option_chosen259                )260            )261        option_dialog.show(262            sim_info=self._sim_info,263            picker_type=UiObjectPicker.UiObjectPickerObjectPickerType.OBJECT,264            page=current_page265        )266    @CommonExceptionHandler.catch_exceptions(ModInfo.get_identity())267    def _open_cas_part_selector(self, outfit_parts: Tuple[OCOutfitPart], tag: str, on_close_callback: Callable[[], None]=None, current_page: int=1):268        self.log.format_with_message('Opening with outfit parts.', outfit_parts=outfit_parts)269        def _on_close() -> None:270            if on_close_callback is not None:271                on_close_callback()272        def _reopen_dialog() -> None:273            self._open_cas_part_selector(outfit_parts, tag, on_close_callback=on_close_callback, current_page=option_dialog.current_page)274        option_dialog = CommonChooseObjectOptionDialog(275            OCStringId.OC_CUSTOMIZE_OUTFIT_OC,276            0,277            mod_identity=self.mod_identity,278            on_close=_on_close279        )280        outfit_io = CommonSimOutfitIO(self._sim_info, mod_identity=self.mod_identity)281        def _on_option_chosen(option_identifier: str, picked_outfit_part: OCOutfitPart):282            self.log.debug('Chose outfit part: {}'.format(option_identifier))283            self._open_body_type_selection(picked_outfit_part, outfit_io, on_close_callback=_reopen_dialog)284        def _on_remove_chosen() -> None:285            OCOutfitPartUtils.remove_outfit_parts(self._sim_info, outfit_parts)286            _reopen_dialog()287        def _no_outfit_parts_found() -> None:288            CommonOkDialog(289                OCStringId.OC_CUSTOMIZE_OUTFIT_OC,290                OCStringId.OC_NO_OUTFIT_PARTS_FOUND291            ).show(on_acknowledged=_on_close)292        if not outfit_parts:293            _no_outfit_parts_found()294            return295        sorted_outfit_parts = sorted(outfit_parts, key=lambda item: item.raw_display_name)296        option_dialog.add_option(297            CommonDialogActionOption(298                CommonDialogOptionContext(299                    OCStringId.OC_REMOVE_ALL,300                    0,301                    icon=CommonIconUtils.load_x_icon(),302                    tooltip_text_identifier=OCStringId.OC_REMOVE_ALL,303                ),304                on_chosen=_on_remove_chosen,305                always_visible=True306            )307        )308        for outfit_part in sorted_outfit_parts:309            if tag not in outfit_part.tag_list:310                continue311            part_id = outfit_part.part_id312            author = outfit_part.author313            icon = CommonIconUtils._load_icon(outfit_part.icon_id) or CommonIconUtils.load_question_mark_icon()314            outfit_part_name = outfit_part.display_name315            # If outfit part is already equipped316            if outfit_io.is_cas_part_attached(part_id):317                outfit_part_name = CommonLocalizationUtils.create_localized_string(CommonStringId.TEXT_WITH_GREEN_COLOR, tokens=(outfit_part_name,))318            option_dialog.add_option(319                CommonDialogObjectOption(320                    str(part_id),321                    outfit_part,322                    CommonDialogOptionContext(323                        outfit_part_name,324                        OCStringId.OC_AUTHOR,325                        description_tokens=(author,),326                        icon=icon,327                    ),328                    on_chosen=_on_option_chosen329                )330            )331        # noinspection PyTypeChecker332        option_dialog.show(333            sim_info=self._sim_info,334            picker_type=UiObjectPicker.UiObjectPickerObjectPickerType.OBJECT,335            page=current_page336        )337    @CommonExceptionHandler.catch_exceptions(ModInfo.get_identity())338    def _open_body_type_selection(self, outfit_part: OCOutfitPart, outfit_io: CommonSimOutfitIO, on_close_callback: Callable[[], None]=None):339        def _on_close() -> None:340            if on_close_callback is not None:341                on_close_callback()342        def _reopen_dialog() -> None:343            self._open_body_type_selection(outfit_part, outfit_io, on_close_callback=on_close_callback)344        def _on_option_chosen(option_identifier: str, picked_body_type: BodyType):345            self.log.debug('Chose body type: {}'.format(option_identifier))346            if outfit_io.is_cas_part_attached(outfit_part.part_id):347                outfit_io.detach_cas_part(outfit_part.part_id)348            outfit_io.attach_cas_part(outfit_part.part_id, body_type=picked_body_type)349            outfit_io.apply()350            _reopen_dialog()351        def _on_remove_chosen() -> None:352            if outfit_io.is_cas_part_attached(outfit_part.part_id):353                outfit_io.detach_cas_part(outfit_part.part_id)...slider_template_dialog.py
Source:slider_template_dialog.py  
...45        return 'csf_slider_template_dialog'46    def open(self, sim_info: SimInfo, page: int=1) -> None:47        """ Open the dialog. """48        self.log.format_with_message('Opening dialog.', sim=sim_info)49        def _on_close() -> None:50            self.log.debug('Slider Template dialog closed.')51            if self._on_close is not None:52                self._on_close()53        def _reopen() -> None:54            self.log.debug('Reopening slider template dialog.')55            self.open(sim_info, page=option_dialog.current_page)56        option_dialog = CommonChooseObjectOptionDialog(57            CSFStringId.SLIDER_TEMPLATES_NAME,58            CSFStringId.SLIDER_TEMPLATES_DESCRIPTION,59            mod_identity=self.mod_identity,60            on_close=_on_close,61            per_page=40062        )63        option_dialog.add_option(64            CommonDialogActionOption(65                CommonDialogOptionContext(66                    CSFStringId.SELECTED_TEMPLATE,67                    0,68                    title_tokens=(CSFSliderTemplateDialog._SELECTED_TEMPLATE.template_name if CSFSliderTemplateDialog._SELECTED_TEMPLATE is not None else CSFStringId.NO_TEMPLATE_SELECTED,)69                ),70                on_chosen=lambda *_, **__: self._select_template(sim_info, on_close=_reopen)71            )72        )73        def _on_apply_template_to_sim() -> None:74            self.log.debug('Confirming all sliders reset.')75            if CSFSliderTemplateDialog._SELECTED_TEMPLATE is None:76                def _on_acknowledge(_) -> None:77                    _reopen()78                CommonOkDialog(79                    CSFStringId.NO_TEMPLATE_SELECTED,80                    CSFStringId.PLEASE_SELECT_A_TEMPLATE,81                    mod_identity=self.mod_identity82                ).show(on_acknowledged=_on_acknowledge)83                return84            def _on_confirm(_) -> None:85                self.log.debug('Applying template to Sim.')86                CSFSliderTemplateDialog._SELECTED_TEMPLATE.apply_to_sim(sim_info)87                _reopen()88            def _on_cancel(_) -> None:89                self.log.debug('Cancelled template apply.')90                _reopen()91            CommonOkCancelDialog(92                CSFStringId.CONFIRMATION,93                CSFStringId.APPLY_TEMPLATE_TO_SIM_CONFIRMATION_DESCRIPTION,94                description_tokens=(sim_info,),95                mod_identity=self.mod_identity96            ).show(on_ok_selected=_on_confirm, on_cancel_selected=_on_cancel)97        self.log.debug('Opening Customize Slider dialog.')98        option_dialog.add_option(99            CommonDialogActionOption(100                CommonDialogOptionContext(101                    CSFStringId.APPLY_TEMPLATE_TO_SIM_NAME,102                    CSFStringId.APPLY_TEMPLATE_TO_SIM_DESCRIPTION,103                    description_tokens=(sim_info,),104                    is_enabled=CSFSliderTemplateDialog._SELECTED_TEMPLATE is not None105                ),106                on_chosen=lambda *_, **__: _on_apply_template_to_sim()107            )108        )109        def _on_save_as_template(_: str, template_name: str, outcome: CommonChoiceOutcome):110            if _ is None or template_name is None or CommonChoiceOutcome.is_error_or_cancel(outcome):111                self.log.debug('No template name entered, dialog closed.')112                _reopen()113                return114            self.log.format_with_message('Template name entered.', template_name=template_name)115            if template_name in self._template_utils.template_library:116                def _on_yes(_) -> None:117                    self.log.debug('Saving template.')118                    self._template_utils.save_sliders_of(sim_info, template_name)119                    _reopen()120                def _on_no(_) -> None:121                    self.log.debug('Cancelled saving template.')122                    _reopen()123                CommonOkCancelDialog(124                    CSFStringId.TEMPLATE_ALREADY_EXISTS_NAME,125                    CSFStringId.TEMPLATE_ALREADY_EXISTS_DESCRIPTION,126                    description_tokens=(template_name,),127                    ok_text_identifier=CSFStringId.YES,128                    cancel_text_identifier=CSFStringId.NO,129                    mod_identity=self.mod_identity130                ).show(on_ok_selected=_on_yes, on_cancel_selected=_on_no)131                return132            self._template_utils.save_sliders_of(sim_info, template_name)133            _reopen()134        option_dialog.add_option(135            CommonDialogInputTextOption(136                self.mod_identity,137                'Save Template From Sim',138                CommonSimNameUtils.get_full_name(sim_info),139                CommonDialogOptionContext(140                    CSFStringId.CREATE_TEMPLATE_FROM_SIM_NAME,141                    CSFStringId.CREATE_TEMPLATE_FROM_SIM_DESCRIPTION,142                    title_tokens=(sim_info,),143                    description_tokens=(sim_info,)144                ),145                on_chosen=_on_save_as_template,146                dialog_description_identifier=CSFStringId.ENTER_A_NAME_FOR_YOUR_NEW_TEMPLATE147            )148        )149        option_dialog.add_option(150            CommonDialogActionOption(151                CommonDialogOptionContext(152                    CSFStringId.VIEW_TEMPLATE_NAME,153                    CSFStringId.VIEW_TEMPLATE_DESCRIPTION,154                    is_enabled=CSFSliderTemplateDialog._SELECTED_TEMPLATE is not None,155                    title_tokens=(CSFSliderTemplateDialog._SELECTED_TEMPLATE.template_name if CSFSliderTemplateDialog._SELECTED_TEMPLATE is not None else CSFStringId.NO_TEMPLATE_SELECTED,)156                ),157                on_chosen=lambda *_, **__: self._view_template(sim_info, on_close=_reopen)158            )159        )160        option_dialog.show(161            sim_info=sim_info,162            page=page163        )164    def _select_template(self, sim_info: SimInfo, on_close: Callable[[], None]=None):165        self.log.format_with_message('Opening dialog.', sim=sim_info)166        def _on_close() -> None:167            self.log.debug('Slider Template dialog closed.')168            if on_close is not None:169                on_close()170        option_dialog = CommonChooseObjectOptionDialog(171            CSFStringId.SELECTED_TEMPLATE,172            CSFStringId.PLEASE_SELECT_A_TEMPLATE,173            mod_identity=self.mod_identity,174            on_close=_on_close,175            per_page=400176        )177        self.log.debug('Opening Customize Slider dialog.')178        def _on_chosen(_: str, _chosen_template: CSFSliderTemplate):179            if _chosen_template is None:180                self.log.debug('No template name entered, dialog closed.')181                _on_close()182                return183            self.log.format_with_message('Template name entered.', template_name=_chosen_template.template_name)184            CSFSliderTemplateDialog._SELECTED_TEMPLATE = _chosen_template185            _on_close()186        for (template_name, template) in self._template_utils.template_library.items():187            template: CSFSliderTemplate = template188            option_dialog.add_option(189                CommonDialogObjectOption(190                    template_name,191                    template,192                    CommonDialogOptionContext(193                        template.display_name,194                        0,195                        icon=CommonIconUtils.load_filled_circle_icon() if CSFSliderTemplateDialog._SELECTED_TEMPLATE == template else CommonIconUtils.load_unfilled_circle_icon(),196                    ),197                    on_chosen=_on_chosen198                )199            )200        if not option_dialog.has_options():201            def _on_acknowledge(_) -> None:202                _on_close()203            CommonOkDialog(204                CSFStringId.NO_TEMPLATES_DETECTED_NAME,205                CSFStringId.NO_TEMPLATES_DETECTED_DESCRIPTION,206                mod_identity=self.mod_identity207            ).show(on_acknowledged=_on_acknowledge)208            return209        option_dialog.show(210            sim_info=sim_info211        )212    def _view_template(self, sim_info: SimInfo, on_close: Callable[[], None]=None):213        self.log.format_with_message('Opening view template dialog.', sim=sim_info)214        def _on_close() -> None:215            self.log.debug('Slider Template dialog closed.')216            if on_close is not None:217                on_close()218        def _reopen() -> None:219            self._view_template(sim_info, on_close=on_close)220        if CSFSliderTemplateDialog._SELECTED_TEMPLATE is None:221            def _on_acknowledge(_) -> None:222                _on_close()223            CommonOkDialog(224                CSFStringId.NO_TEMPLATE_SELECTED,225                CSFStringId.PLEASE_SELECT_A_TEMPLATE,226                mod_identity=self.mod_identity227            ).show(on_acknowledged=_on_acknowledge)228            return229        option_dialog = CommonChooseObjectOptionDialog(230            CSFStringId.VIEW_TEMPLATE_NAME,231            CSFStringId.VIEW_TEMPLATE_DESCRIPTION,232            mod_identity=self.mod_identity,233            on_close=_on_close,234            per_page=400235        )236        for (slider, amount) in CSFSliderTemplateDialog._SELECTED_TEMPLATE.get_sliders(sim_info):237            slider: CSFSlider = slider238            option_dialog.add_option(239                CommonDialogObjectOption(240                    slider.unique_identifier,241                    slider,242                    CommonDialogOptionContext(243                        0,244                        CSFStringId.STRING_PLUS_STRING,245                        description_tokens=(slider.display_name, str(amount),),246                        icon=CommonIconUtils.load_arrow_right_icon(),247                        is_enabled=False248                    ),249                    on_chosen=lambda *_, **__: _reopen()250                )251            )252        if not option_dialog.has_options():253            def _on_acknowledge(_) -> None:254                _on_close()255            CommonOkDialog(256                CSFStringId.NO_SLIDERS_DETECTED_NAME,257                CSFStringId.NO_SLIDERS_DETECTED_DESCRIPTION,258                mod_identity=self.mod_identity259            ).show(on_acknowledged=_on_acknowledge)260            return261        option_dialog.show(262            sim_info=sim_info...websocket_transport.py
Source:websocket_transport.py  
...129        self.logger.debug(close_status_code)130        self.logger.debug(close_reason)131        self.state = ConnectionState.disconnected132        if self._on_close is not None and callable(self._on_close):133            self._on_close()134        if callback is not None and callable(callback):135            callback()136    def on_reconnect(self):137        self.logger.debug("-- web socket reconnecting --")138        self.state = ConnectionState.disconnected139        if self._on_close is not None and callable(self._on_close):140            self._on_close()141    def on_socket_error(self, app, error):142        """143        Args:144            _: Required to support websocket-client version equal or greater than 0.58.0145            error ([type]): [description]146        Raises:147            HubError: [description]148        """149        self.logger.debug("-- web socket error --")150        self.logger.error(traceback.format_exc(10, True))151        self.logger.error("{0} {1}".format(self, error))152        self.logger.error("{0} {1}".format(error, type(error)))153        self._on_close()154        self.state = ConnectionState.disconnected155        #raise HubError(error)156    def on_message(self, app, raw_message):157        self.logger.debug("Message received{0}".format(raw_message))158        if not self.handshake_received:159            messages = self.evaluate_handshake(raw_message)160            if self._on_open is not None and callable(self._on_open):161                self.state = ConnectionState.connected162                self._on_open()163            if len(messages) > 0:164                return self._on_message(messages)165            return []166        167        return self._on_message(168            self.protocol.parse_messages(raw_message))169    def send(self, message):170        self.logger.debug("Sending message {0}".format(message))171        try:172            self._ws.send(173                self.protocol.encode(message),174                opcode=0x2175                if type(self.protocol) == MessagePackHubProtocol else176                0x1)177            self.connection_checker.last_message = time.time()178            if self.reconnection_handler is not None:179                self.reconnection_handler.reset()180        except (181                websocket._exceptions.WebSocketConnectionClosedException,182                OSError) as ex:183            self.handshake_received = False184            self.logger.warning("Connection closed {0}".format(ex))185            self.state = ConnectionState.disconnected186            if self.reconnection_handler is None:187                if self._on_close is not None and\188                        callable(self._on_close):189                    self._on_close()190                raise ValueError(str(ex))191            # Connection closed192            self.handle_reconnect()193        except Exception as ex:194            raise ex195    def handle_reconnect(self):196        if not self.reconnection_handler.reconnecting and self._on_reconnect is not None and \197                callable(self._on_reconnect):198            self._on_reconnect()199        self.reconnection_handler.reconnecting = True200        try:201            self.stop()202            self.start()203        except Exception as ex:..._base_dialog.py
Source:_base_dialog.py  
...54		self._wnd.Bind(wx.EVT_BUTTON, self._on_close, id=wx.ID_CLOSE)55		self._wnd.Bind(wx.EVT_BUTTON, self._on_save, id=wx.ID_SAVE)56		self._wnd.Bind(wx.EVT_BUTTON, self._on_ok, id=wx.ID_OK)57		self._wnd.Bind(wx.EVT_BUTTON, self._on_close, id=wx.ID_CANCEL)58	def _on_close(self, _event):59		if self._save_pos:60			self._appconfig.set(self._name, 'size', self._wnd.GetSizeTuple())61			self._appconfig.set(self._name, 'position', self._wnd.GetPositionTuple())62		self._wnd.EndModal(wx.ID_CLOSE)63	def _on_ok(self, _evt):64		self._wnd.EndModal(wx.ID_OK)65	def _on_save(self, evt):...LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
