From 58792096273029ef090f3ee0cbda61d26431adc8 Mon Sep 17 00:00:00 2001 From: Ken Roberts Date: Wed, 15 Oct 2014 11:41:12 -0700 Subject: [PATCH] Fix toolbar icon status on socket error --- openlp/core/lib/projector/pjlink1.py | 23 ++++++++++++----------- openlp/core/ui/projector/manager.py | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/openlp/core/lib/projector/pjlink1.py b/openlp/core/lib/projector/pjlink1.py index 2cbcdbb8d..5ca94d7bf 100644 --- a/openlp/core/lib/projector/pjlink1.py +++ b/openlp/core/lib/projector/pjlink1.py @@ -218,19 +218,19 @@ class PJLink1(QTcpSocket): self.timer.start() for command in ['POWR', 'ERST', 'LAMP', 'AVMT', 'INPT']: # Changeable information - self.send_command(command) + self.send_command(command, queue=True) if self.power == S_ON and self.source_available is None: - self.send_command('INST') + self.send_command('INST', queue=True) if self.other_info is None: - self.send_command('INFO') + self.send_command('INFO', queue=True) if self.manufacturer is None: - self.send_command('INF1') + self.send_command('INF1', queue=True) if self.model is None: - self.send_command('INF2') + self.send_command('INF2', queue=True) if self.pjlink_name is None: - self.send_command('NAME') + self.send_command('NAME', queue=True) if self.power == S_ON and self.source_available is None: - self.send_command('INST') + self.send_command('INST', queue=True) def _get_status(self, status): """ @@ -422,7 +422,7 @@ class PJLink1(QTcpSocket): self.projectorUpdateIcons.emit() return - def send_command(self, cmd, opts='?', salt=None): + def send_command(self, cmd, opts='?', salt=None, queue=False): """ Add command to output queue if not already in queue """ @@ -442,12 +442,11 @@ class PJLink1(QTcpSocket): if out in self.send_queue: # Already there, so don't add log.debug('(%s) send_command(out=%s) Already in queue - skipping' % (self.ip, out.strip())) - elif len(self.send_queue) == 0: + elif not queue and len(self.send_queue) == 0 and not self.send_busy: return self._send_string(out) else: self.send_queue.append(out) - if not self.send_busy: - self._send_string() + self.projectorReceivedData.emit() @pyqtSlot() def _send_command(self): @@ -701,6 +700,7 @@ class PJLink1(QTcpSocket): """ if self.state() != self.ConnectedState: log.warn('(%s) disconnect_from_host(): Not connected - returning' % self.ip) + self.projectorUpdateIcons.emit() return self.disconnectFromHost() try: @@ -709,6 +709,7 @@ class PJLink1(QTcpSocket): pass self.change_status(S_NOT_CONNECTED) self.reset_information() + self.projectorUpdateIcons.emit() def get_available_inputs(self): """ diff --git a/openlp/core/ui/projector/manager.py b/openlp/core/ui/projector/manager.py index 93b15537a..2b0f46b0b 100644 --- a/openlp/core/ui/projector/manager.py +++ b/openlp/core/ui/projector/manager.py @@ -850,8 +850,8 @@ class ProjectorManager(OpenLPMixin, RegistryMixin, QtGui.QWidget, Ui_ProjectorMa self.get_toolbar_item('delete_projector', enabled=True) self.get_toolbar_item('connect_projector', enabled=not connected) self.get_toolbar_item('disconnect_projector', enabled=connected) - self.get_toolbar_item('poweron_projector', enabled=projector.link.power == S_STANDBY) - self.get_toolbar_item('poweroff_projector', enabled=projector.link.power == S_ON) + self.get_toolbar_item('poweron_projector', enabled=connected and (projector.link.power == S_STANDBY)) + self.get_toolbar_item('poweroff_projector', enabled=connected and (projector.link.power == S_ON)) if projector.link.shutter is not None: self.get_toolbar_item('blank_projector', enabled=(connected and power and not projector.link.shutter)) self.get_toolbar_item('show_projector', enabled=(connected and power and projector.link.shutter))