Пример #1
0
    def __init__(self, args=[]):
        QtGui.QApplication.__init__(self, args)
        if not self.check_one_instance():
            QtGui.QMessageBox.information(
                None, "Error", u"Ya se encuentra una aplicacion en ejecución")
            return QtGui.qApp.exec_()

        # No cerrar cuando la ultima ventana se cierra
        self.setQuitOnLastWindowClosed(False)
        self.main_win = MainWin()

        self.tray_icon = QtGui.QSystemTrayIcon()
        self.tray_icon.setIcon(QtGui.QIcon(':/icons/res/view-statistics.png'))

        # Menú para el ícono de la barra tray
        self.tray_menu = QtGui.QMenu()
        self.action_salir = self.tray_menu.addAction('Salir')
        self.action_salir.setIcon(
            QtGui.QIcon(':/icons/res/application-exit.png'))
        self.action_ventana = QtGui.QAction('Mostrar ventana principal',
                                            self.tray_menu)
        # Conexion de la ventana
        self.connect(self.action_ventana, QtCore.SIGNAL('toggled(bool)'),
                     self.toggleVentana)

        self.connect(self.main_win, QtCore.SIGNAL('hidden()'),
                     self.hideMainWin)

        self.action_ventana.setCheckable(True)

        self.tray_menu.addAction(self.action_ventana)

        self.connect(self.action_salir, QtCore.SIGNAL("triggered()"),
                     QtGui.qApp.exit)
        self.tray_icon.setContextMenu(self.tray_menu)

        # Mostrar la vetnana principal
        #self.main_win.show()

        # Primero mostramos el icono en la barra tray
        self.tray_icon.show()
        # Luego mostramos la vetana
        self.action_ventana.setChecked(True)
Пример #2
0
 def __init__(self, args = []):
     QtGui.QApplication.__init__(self, args)
     if not self.check_one_instance():
         QtGui.QMessageBox.information(None, "Error", 
             u"Ya se encuentra una aplicacion en ejecución")
         return QtGui.qApp.exec_()
     
     # No cerrar cuando la ultima ventana se cierra
     self.setQuitOnLastWindowClosed(False)
     self.main_win =  MainWin()
     
     self.tray_icon = QtGui.QSystemTrayIcon()
     self.tray_icon.setIcon(QtGui.QIcon(':/icons/res/view-statistics.png'))
     
     # Menú para el ícono de la barra tray
     self.tray_menu = QtGui.QMenu()
     self.action_salir = self.tray_menu.addAction('Salir')
     self.action_salir.setIcon(QtGui.QIcon(':/icons/res/application-exit.png'))
     self.action_ventana = QtGui.QAction('Mostrar ventana principal', self.tray_menu)
     # Conexion de la ventana
     self.connect(self.action_ventana, QtCore.SIGNAL('toggled(bool)'), self.toggleVentana)
     
     self.connect(self.main_win, QtCore.SIGNAL('hidden()'), self.hideMainWin)
     
     self.action_ventana.setCheckable(True)
     
     self.tray_menu.addAction(self.action_ventana)
     
     self.connect(self.action_salir, QtCore.SIGNAL("triggered()"), QtGui.qApp.exit)
     self.tray_icon.setContextMenu(self.tray_menu)
     
     # Mostrar la vetnana principal
     #self.main_win.show()
     
     
     # Primero mostramos el icono en la barra tray
     self.tray_icon.show()
     # Luego mostramos la vetana
     self.action_ventana.setChecked(True)
Пример #3
0
def main(argv=sys.argv):
    app = QtGui.QApplication(argv)
    win = MainWin()
    win.show()
    return app.exec_()
Пример #4
0
class PySemControlApplication(QtGui.QApplication):
    '''
    Aplicacion de scada
    '''
    def __init__(self, args=[]):
        QtGui.QApplication.__init__(self, args)
        if not self.check_one_instance():
            QtGui.QMessageBox.information(
                None, "Error", u"Ya se encuentra una aplicacion en ejecución")
            return QtGui.qApp.exec_()

        # No cerrar cuando la ultima ventana se cierra
        self.setQuitOnLastWindowClosed(False)
        self.main_win = MainWin()

        self.tray_icon = QtGui.QSystemTrayIcon()
        self.tray_icon.setIcon(QtGui.QIcon(':/icons/res/view-statistics.png'))

        # Menú para el ícono de la barra tray
        self.tray_menu = QtGui.QMenu()
        self.action_salir = self.tray_menu.addAction('Salir')
        self.action_salir.setIcon(
            QtGui.QIcon(':/icons/res/application-exit.png'))
        self.action_ventana = QtGui.QAction('Mostrar ventana principal',
                                            self.tray_menu)
        # Conexion de la ventana
        self.connect(self.action_ventana, QtCore.SIGNAL('toggled(bool)'),
                     self.toggleVentana)

        self.connect(self.main_win, QtCore.SIGNAL('hidden()'),
                     self.hideMainWin)

        self.action_ventana.setCheckable(True)

        self.tray_menu.addAction(self.action_ventana)

        self.connect(self.action_salir, QtCore.SIGNAL("triggered()"),
                     QtGui.qApp.exit)
        self.tray_icon.setContextMenu(self.tray_menu)

        # Mostrar la vetnana principal
        #self.main_win.show()

        # Primero mostramos el icono en la barra tray
        self.tray_icon.show()
        # Luego mostramos la vetana
        self.action_ventana.setChecked(True)

    def hideMainWin(self):
        self.action_ventana.setChecked(False)

    def toggleVentana(self, checked):
        if checked:
            self.main_win.show()
        else:
            self.main_win.hide()

    def path(self):
        '''
        Detección de ruta, acá nos tenemos que fijar si estamos
        corriendo desde el script o desde el ejecutable.
        '''
        if not hasattr(self, '_path'):
            if sys.platform.count('linux'):
                self._path = os.path.dirname(__file__)

            elif sys.platform.count('win'):
                if hasattr(sys, "frozen") and sys.frozen == 1:
                    # Si creamos un ejecutable con PyInstaller
                    self._path = os.path.dirname(sys.executable)
                else:
                    print "Averigurar el path en windows"
                    self._path = None

        return self._path

    def res_path(self, path):
        ''' Devuelve la ubicación de un recurso '''
        pass

    def exec_(self):
        '''
        Todavía nada...
        '''
        print "Corriendo la aplicacion"
        return QtGui.qApp.exec_()

    def check_one_instance(self):
        '''
        Bifurcamos el checkeo de una instancia según la plataforma.
        '''
        if sys.platform.count('win'):
            return self._check_one_instance_win()
        else:
            return self._check_one_instance_unix()

    def _check_one_instance_win(self):
        '''
        Esta es la implementación para win de solo una instancia
        activa. En el caso de que existan dos instancias de la 
        aplicación, este método devuelve True.
        '''
        from win32event import CreateMutex
        from win32api import GetLastError
        from winerror import ERROR_ALREADY_EXISTS
        self.connect(self, QtCore.SIGNAL("aboutToQuit()"),
                     self._win_mutex_destroy)

        self.mutexname = "testmutex_{D0E858DF-985E-4907-B7FB-8D732C3FC3B9}"
        self.mutex = CreateMutex(None, False, self.mutexname)
        self.lasterror = GetLastError()
        return (self.lasterror != ERROR_ALREADY_EXISTS)

    def _win_mutex_destroy(self):
        '''
        Esto es necesario para quitar el Mutex en win32
        '''
        from win32api import CloseHandle
        CloseHandle(self.mutex)

    def _check_one_instance_unix(self):
        '''
        Checkeo de uns instancia UNIX.
        '''
        # FIXME: No funciona
        import fcntl
        pid_file = 'program.pid'
        fp = open(pid_file, 'w')
        try:
            fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
            return True
        except IOError:
            return False
Пример #5
0
class PySemControlApplication(QtGui.QApplication):
    '''
    Aplicacion de scada
    '''
    def __init__(self, args = []):
        QtGui.QApplication.__init__(self, args)
        if not self.check_one_instance():
            QtGui.QMessageBox.information(None, "Error", 
                u"Ya se encuentra una aplicacion en ejecución")
            return QtGui.qApp.exec_()
        
        # No cerrar cuando la ultima ventana se cierra
        self.setQuitOnLastWindowClosed(False)
        self.main_win =  MainWin()
        
        self.tray_icon = QtGui.QSystemTrayIcon()
        self.tray_icon.setIcon(QtGui.QIcon(':/icons/res/view-statistics.png'))
        
        # Menú para el ícono de la barra tray
        self.tray_menu = QtGui.QMenu()
        self.action_salir = self.tray_menu.addAction('Salir')
        self.action_salir.setIcon(QtGui.QIcon(':/icons/res/application-exit.png'))
        self.action_ventana = QtGui.QAction('Mostrar ventana principal', self.tray_menu)
        # Conexion de la ventana
        self.connect(self.action_ventana, QtCore.SIGNAL('toggled(bool)'), self.toggleVentana)
        
        self.connect(self.main_win, QtCore.SIGNAL('hidden()'), self.hideMainWin)
        
        self.action_ventana.setCheckable(True)
        
        self.tray_menu.addAction(self.action_ventana)
        
        self.connect(self.action_salir, QtCore.SIGNAL("triggered()"), QtGui.qApp.exit)
        self.tray_icon.setContextMenu(self.tray_menu)
        
        # Mostrar la vetnana principal
        #self.main_win.show()
        
        
        # Primero mostramos el icono en la barra tray
        self.tray_icon.show()
        # Luego mostramos la vetana
        self.action_ventana.setChecked(True)
        
        
    def hideMainWin(self):
        self.action_ventana.setChecked(False)
        
    def toggleVentana(self, checked):
        if checked:
            self.main_win.show()
        else:
            self.main_win.hide()
        
    def path(self):
        '''
        Detección de ruta, acá nos tenemos que fijar si estamos
        corriendo desde el script o desde el ejecutable.
        '''
        if not hasattr(self, '_path'):
            if sys.platform.count('linux'):
                self._path = os.path.dirname(__file__)
            
            elif sys.platform.count('win'):
                if hasattr(sys, "frozen") and sys.frozen == 1:
                    # Si creamos un ejecutable con PyInstaller
                    self._path = os.path.dirname(sys.executable)
                else:
                    print "Averigurar el path en windows"
                    self._path = None
        
        return self._path
    
    def res_path(self, path):
        ''' Devuelve la ubicación de un recurso '''
        pass
        
    def exec_(self):
        '''
        Todavía nada...
        '''
        print "Corriendo la aplicacion"
        return QtGui.qApp.exec_()
    
    def check_one_instance(self):
        '''
        Bifurcamos el checkeo de una instancia según la plataforma.
        '''
        if sys.platform.count('win'):
            return self._check_one_instance_win()
        else:
            return self._check_one_instance_unix()
        
    def _check_one_instance_win(self):
        '''
        Esta es la implementación para win de solo una instancia
        activa. En el caso de que existan dos instancias de la 
        aplicación, este método devuelve True.
        '''
        from win32event import CreateMutex
        from win32api import GetLastError
        from winerror import ERROR_ALREADY_EXISTS
        self.connect(self, QtCore.SIGNAL("aboutToQuit()"), self._win_mutex_destroy)
        
        self.mutexname = "testmutex_{D0E858DF-985E-4907-B7FB-8D732C3FC3B9}"
        self.mutex = CreateMutex(None, False, self.mutexname)
        self.lasterror = GetLastError()
        return (self.lasterror != ERROR_ALREADY_EXISTS)
    
    

    def _win_mutex_destroy(self):
        '''
        Esto es necesario para quitar el Mutex en win32
        '''
        from win32api import CloseHandle
        CloseHandle(self.mutex)

    
    def _check_one_instance_unix(self):
        '''
        Checkeo de uns instancia UNIX.
        '''
        # FIXME: No funciona
        import fcntl
        pid_file = 'program.pid'
        fp = open(pid_file, 'w')
        try:
            fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
            return True
        except IOError:
            return False
Пример #6
0
def main():
    app = QtGui.QApplication(sys.argv)
    mw = MainWin()
    mw.show()
    sys.exit(app.exec_())
Пример #7
0
def main(argv = sys.argv):
    app = QtGui.QApplication(argv)
    win = MainWin()
    win.show()
    return app.exec_()