def main(): global win signal.signal(signal.SIGINT, exit) args = parse_arguments() appKey = "scudcloud.pid" socket = QLocalSocket() socket.connectToServer(appKey) if socket.isOpen(): socket.close() socket.deleteLater() return 0 socket.deleteLater() app = QtGui.QApplication(sys.argv) app.setApplicationName(Resources.APP_NAME) app.setWindowIcon(QtGui.QIcon(Resources.get_path('scudcloud.png'))) try: settings_path = load_settings(args.confdir) except: print("Configuration directory " + args.confdir +\ " could not be created! Exiting...") raise SystemExit() minimized = True if args.minimized is True else None win = sca.ScudCloud(debug=args.debug, minimized=minimized, settings_path=settings_path) app.commitDataRequest.connect(win.setForceClose, type=QtCore.Qt.DirectConnection) server = QLocalServer() server.newConnection.connect(restore) server.listen(appKey) win.restore() if win.minimized is None: win.show() sys.exit(app.exec_())
def init(): """Start listening to incoming connections.""" global _server if _server is not None: return server = QLocalServer(None) # find a free socket name to use for name in ids(): if server.listen(name): break else: # all names failed, try to contact and remove stale file if that fails socket = QLocalSocket() for name in ids(): socket.connectToServer(name) if not socket.waitForConnected(10000): QLocalServer.removeServer(name) if server.listen(name): break else: socket.disconnectFromServer() else: # no ids left, don't listen return app.aboutToQuit.connect(server.close) server.newConnection.connect(slot_new_connection) os.environ["FRESCOBALDI_SOCKET"] = name _server = server
def __init__(self, argv, application_id=None): QApplication.__init__(self, argv) self.socket_filename = unicode( os.path.expanduser("~/.ipc_%s" % self.generate_ipc_id())) self.shared_mem = QSharedMemory() self.shared_mem.setKey(self.socket_filename) if self.shared_mem.attach(): self.is_running = True return self.is_running = False if not self.shared_mem.create(1): print >> sys.stderr, "Unable to create single instance" return # start local server self.server = QLocalServer(self) # connect signal for incoming connections self.connect(self.server, SIGNAL("newConnection()"), self.receive_message) # if socket file exists, delete it if os.path.exists(self.socket_filename): os.remove(self.socket_filename) # listen self.server.listen(self.socket_filename)
def testSingleInstanceOrExit(): connected = False #try connect to QLocalServer local_sock = QLocalSocket() import sys QObject.connect(local_sock, SIGNAL('connected()'), sys.exit) connected = local_sock.connectToServer(qApp.applicationName()) global LOCALSERVER if not connected: LOCALSERVER = QLocalServer() print 'setting up localserver', qApp.applicationName() ret = LOCALSERVER.listen(qApp.applicationName()) if not ret: import os try: #todo not good way to remove /tmp/guiTimer.py os.remove('/tmp/' + qApp.applicationName()) ret = LOCALSERVER.listen(qApp.applicationName()) except: raise Exception( 'LOCALSERVER listen failed' 'you may need to remove /tmp/guiTimer.py manually') QObject.connect(LOCALSERVER, SIGNAL('newConnection()'), showMainWindow) else: print 'local socket connected' pass pass
def __init__(self, appID, argv): #-------------------------------------------------------------------------------------------------------------- # INICIAR LA CLASE #-------------------------------------------------------------------------------------------------------------- super(QSingleton, self).__init__(argv) #-------------------------------------------------------------------------------------------------------------- # CONFIGURACIONES INICIALES #-------------------------------------------------------------------------------------------------------------- self.appID = appID self._outSocket = QLocalSocket() self._outSocket.connectToServer(self.appID) self._isRunning = self._outSocket.waitForConnected() # Si hay instancias previas corriendo if self._isRunning: self._outStream = QTextStream(self._outSocket) self._outStream.setCodec('UTF-8') # Si es la primera instancia else: self._outSocket = None self._outStream = None self._inSocket = None self._inStream = None self._server = QLocalServer() self._server.listen(self.appID) self._server.newConnection.connect(self._onNewConnection)
def startApplication(self): self.m_server = QLocalServer() if self.m_server.listen(self.applicationName()): self.m_server.newConnection.connect(self.getNewConnection) self.mainWindow.show() else: QMessageBox.critical(None, self.tr("Error"), self.tr("Error listening the socket.")) print "error" self.quit()
def startApplication(self): self.m_server = QLocalServer() if self.m_server.listen(self.pid): self.show() else: # Try one more time, now deleting the pid QLocalServer.removeServer(self.pid) if self.m_server.listen(self.pid): self.show() else: QMessageBox.critical(None, self.tr("Error"), self.tr("Error listening the socket."))
def __init__(self): super(MainWindow, self).__init__() self.setWindowTitle("Liveplot") self.dockarea = DockArea() self.setCentralWidget(self.dockarea) self.namelist = NameList(self) self.addDockWidget(QtConst.LeftDockWidgetArea, self.namelist) self.server = QLocalServer() self.server.removeServer('LivePlot') self.server.listen('LivePlot') self.server.newConnection.connect(self.accept) self.bytes = bytearray() self.target_size = 0 self.meta = None self.insert_dock_right = True self.conns = [] self.shared_mems = [] signal.signal(signal.SIGINT, self.close)
def main(): global win signal.signal(signal.SIGINT, exit) args = parse_arguments() appKey = "scudcloud.pid" socket = QLocalSocket() socket.connectToServer(appKey) if socket.isOpen(): socket.close() socket.deleteLater() return 0 socket.deleteLater() app = QtGui.QApplication(sys.argv) app.setApplicationName(Resources.APP_NAME + ' Slack_SSB') app.setWindowIcon(QtGui.QIcon(Resources.get_path('scudcloud.png'))) try: settings_path, cache_path = load_settings(args.confdir, args.cachedir) except: print("Data directories " + args.confdir + " and " + args.cachedir + " could not be created! Exiting...") raise SystemExit() minimized = True if args.minimized is True else None urgent_hint = True if args.urgent_hint is True else None # Let's move the CSS to cachedir to enable additional actions copyfile(Resources.get_path('resources.css'), os.path.join(cache_path, 'resources.css')) win = sca.ScudCloud(debug=args.debug, minimized=minimized, urgent_hint=urgent_hint, settings_path=settings_path, cache_path=cache_path) app.commitDataRequest.connect(win.setForceClose, type=QtCore.Qt.DirectConnection) server = QLocalServer() server.newConnection.connect(restore) server.listen(appKey) win.restore() if win.minimized is None: win.show() sys.exit(app.exec_())
def init(self, servername): if (self.__isServerRun(servername)): # 如果已经有一个实例在运行了, 就返回0 return False self.__m_server = QLocalServer() """ 先移除原来存在的, 如果不移除,那么如果 servername已经存在 就会listen失败 """ QLocalServer.removeServer(servername) print "启动监听..." print self.__m_server.listen(servername) # 进行监听 self.connect(self.__m_server, SIGNAL("newConnection()"), self.__newConnection) return True
def __init__(self, argv, key): QApplication.__init__(self, argv) self._key = key self._timeout = 1000 socket = QLocalSocket(self) socket.connectToServer(self._key) if socket.waitForConnected(self._timeout): self._isRunning = True socket.abort() return socket.abort() self._isRunning = False self._server = QLocalServer(self) self._server.newConnection.connect(self.__onNewConnection) self._server.listen(self._key) self.aboutToQuit.connect(self.__onAboutToQuit)
def main(): app = QtGui.QApplication(sys.argv) androidToolsMainWin = AndroidToolsMainWindow() uiMainWidget = Ui_MainWidget() winOsArgv = WinCommandEnCoding.getOsArgv() # single QApplication solution # http://blog.csdn.net/softdzf/article/details/6704187 serverName = 'AndroidToolsServer' clientSocket = QLocalSocket() clientSocket.connectToServer(serverName) QSettingsUtil.init() # 如果连接成功, 表明server 已经存在,当前已经有实例在运行, 将参数发送给服务端 if clientSocket.waitForConnected(500): # print u'连接成功 arg = ', winOsArgv stream = QtCore.QTextStream(clientSocket) # for i in range(0, len(winOsArgv)): # stream << winOsArgv[i] # 对于打开终端来说,所携带参数为第1位(打开文件的地址),第0位为本执行程序地址 if len(winOsArgv) > 1: stream << winOsArgv[1] stream.setCodec('UTF-8') stream.flush() clientSocket.waitForBytesWritten() # close client socket clientSocket.close() return app.quit() # 如果没有实例执行,创建服务器 localServer = QLocalServer() # 一直监听端口 localServer.listen(serverName) # create db createDb() try: uiMainWidget.setupUi(androidToolsMainWin, localServer, winOsArgv) androidToolsMainWin.show() sys.exit(app.exec_()) finally: localServer.close()
def main(): app = QtGui.QApplication(sys.argv) ffstoreMainWin = FFStoreMainWindow() # set skin styleSheet # SkinHelper().setStyle(app, ':/qss/white_style.qss') SkinHelper().setStyle(app, ':/qss/dark_style.qss') # single QApplication solution # http://blog.csdn.net/softdzf/article/details/6704187 serverName = 'FFStoreManagerServer' clientSocket = QLocalSocket() clientSocket.connectToServer(serverName) # 如果连接成功, 表明server 已经存在,当前已经有实例在运行, 将参数发送给服务端 if clientSocket.waitForConnected(500): # print u'连接成功 arg = ', winOsArgv stream = QtCore.QTextStream(clientSocket) # for i in range(0, len(winOsArgv)): # stream << winOsArgv[i] # 对于打开终端来说,所携带参数为第1位(打开文件的地址),第0位为本执行程序地址 # close client socket clientSocket.close() return app.quit() # 如果没有实例执行,创建服务器 localServer = QLocalServer() # 一直监听端口 localServer.listen(serverName) # 初始化全局变量 GlobalVar.init() try: showWindowLogic = ShowWindowLogic(mainWindow=ffstoreMainWin, localServer=localServer) showWindowLogic.show() # uiMainWidget.setupUi(mainWindow=ffstoreMainWin, localServer=localServer) # ffstoreMainWin.show() sys.exit(app.exec_()) finally: localServer.close()
def __init__(self, start_server=False): QMainWindow.__init__(self) self.setWindowTitle('NINJA-IDE {Ninja-IDE Is Not Just Another IDE}') self.setMinimumSize(700, 500) #Load the size and the position of the main window self.load_window_geometry() #Start server if needed self.s_listener = None if start_server: self.s_listener = QLocalServer() self.s_listener.listen("ninja_ide") self.connect(self.s_listener, SIGNAL("newConnection()"), self._process_connection) #Profile handler self.profile = None #Opacity self.opacity = settings.MAX_OPACITY #Define Actions object before the UI self.actions = actions.Actions() #StatusBar self.status = status_bar.StatusBar(self) self.status.hide() self.setStatusBar(self.status) #Main Widget - Create first than everything else self.central = central_widget.CentralWidget(self) self.load_ui(self.central) self.setCentralWidget(self.central) #ToolBar self.toolbar = QToolBar(self) self.toolbar.setToolTip(self.tr("Press and Drag to Move")) self.toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) self.addToolBar(settings.TOOLBAR_AREA, self.toolbar) if settings.HIDE_TOOLBAR: self.toolbar.hide() #Install Shortcuts after the UI has been initialized self.actions.install_shortcuts(self) self.connect(self.mainContainer, SIGNAL("currentTabChanged(QString)"), self.actions.update_explorer) #Menu menubar = self.menuBar() file_ = menubar.addMenu(self.tr("&File")) edit = menubar.addMenu(self.tr("&Edit")) view = menubar.addMenu(self.tr("&View")) source = menubar.addMenu(self.tr("&Source")) project = menubar.addMenu(self.tr("&Project")) self.pluginsMenu = menubar.addMenu(self.tr("&Addins")) about = menubar.addMenu(self.tr("Abou&t")) #The order of the icons in the toolbar is defined by this calls self._menuFile = menu_file.MenuFile(file_, self.toolbar, self) self._menuView = menu_view.MenuView(view, self.toolbar, self) self._menuEdit = menu_edit.MenuEdit(edit, self.toolbar) self._menuSource = menu_source.MenuSource(source) self._menuProject = menu_project.MenuProject(project, self.toolbar) self._menuPlugins = menu_plugins.MenuPlugins(self.pluginsMenu) self._menuAbout = menu_about.MenuAbout(about) self.load_toolbar() #Plugin Manager services = { 'editor': plugin_services.MainService(), 'toolbar': plugin_services.ToolbarService(self.toolbar), 'menuApp': plugin_services.MenuAppService(self.pluginsMenu), 'explorer': plugin_services.ExplorerService(), 'misc': plugin_services.MiscContainerService(self.misc) } serviceLocator = plugin_manager.ServiceLocator(services) self.plugin_manager = plugin_manager.PluginManager( resources.PLUGINS, serviceLocator) self.plugin_manager.discover() #load all plugins! self.plugin_manager.load_all() #Tray Icon self.trayIcon = updates.TrayIconUpdates(self) self.trayIcon.show() self.connect(self._menuFile, SIGNAL("openFile(QString)"), self.mainContainer.open_file) self.connect(self.mainContainer, SIGNAL("fileSaved(QString)"), self.show_status_message) self.connect(self.mainContainer, SIGNAL("recentTabsModified(QStringList)"), self._menuFile.update_recent_files)
def __init__(self, start_server=False): QMainWindow.__init__(self) self.setWindowTitle('NINJA-IDE {Ninja-IDE Is Not Just Another IDE}') self.setMinimumSize(750, 500) QToolTip.setFont(QFont(settings.FONT.family(), 10)) #Load the size and the position of the main window self.load_window_geometry() self.__project_to_open = 0 #Editables self.__neditables = {} #Filesystem self.filesystem = nfilesystem.NVirtualFileSystem() #Sessions handler self._session = None #Opacity self.opacity = settings.MAX_OPACITY #ToolBar self.toolbar = QToolBar(self) if settings.IS_MAC_OS: self.toolbar.setIconSize(QSize(36, 36)) else: self.toolbar.setIconSize(QSize(24, 24)) self.toolbar.setToolTip(translations.TR_IDE_TOOLBAR_TOOLTIP) self.toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) # Set toggleViewAction text and tooltip self.toggleView = self.toolbar.toggleViewAction() self.toggleView.setText(translations.TR_TOOLBAR_VISIBILITY) self.toggleView.setToolTip(translations.TR_TOOLBAR_VISIBILITY) self.addToolBar(settings.TOOLBAR_AREA, self.toolbar) if settings.HIDE_TOOLBAR: self.toolbar.hide() #Notificator self.notification = notification.Notification(self) #Plugin Manager # CHECK ACTIVATE PLUGINS SETTING #services = { #'editor': plugin_services.MainService(), #'toolbar': plugin_services.ToolbarService(self.toolbar), ##'menuApp': plugin_services.MenuAppService(self.pluginsMenu), #'menuApp': plugin_services.MenuAppService(None), #'explorer': plugin_services.ExplorerService(), #'misc': plugin_services.MiscContainerService(self.misc)} #serviceLocator = plugin_manager.ServiceLocator(services) serviceLocator = plugin_manager.ServiceLocator(None) self.plugin_manager = plugin_manager.PluginManager( resources.PLUGINS, serviceLocator) self.plugin_manager.discover() #load all plugins! self.plugin_manager.load_all() #Tray Icon self.trayIcon = updates.TrayIconUpdates(self) self.connect(self.trayIcon, SIGNAL("closeTrayIcon()"), self._close_tray_icon) self.trayIcon.show() key = Qt.Key_1 for i in range(10): if settings.IS_MAC_OS: short = ui_tools.TabShortcuts( QKeySequence(Qt.CTRL + Qt.ALT + key), self, i) else: short = ui_tools.TabShortcuts(QKeySequence(Qt.ALT + key), self, i) key += 1 self.connect(short, SIGNAL("activated()"), self._change_tab_index) short = ui_tools.TabShortcuts(QKeySequence(Qt.ALT + Qt.Key_0), self, 10) self.connect(short, SIGNAL("activated()"), self._change_tab_index) # Register menu categories IDE.register_bar_category(translations.TR_MENU_FILE, 100) IDE.register_bar_category(translations.TR_MENU_EDIT, 110) IDE.register_bar_category(translations.TR_MENU_VIEW, 120) IDE.register_bar_category(translations.TR_MENU_SOURCE, 130) IDE.register_bar_category(translations.TR_MENU_PROJECT, 140) IDE.register_bar_category(translations.TR_MENU_EXTENSIONS, 150) IDE.register_bar_category(translations.TR_MENU_ABOUT, 160) # Register General Menu Items ui_tools.install_shortcuts(self, actions.ACTIONS_GENERAL, self) self.register_service('ide', self) self.register_service('toolbar', self.toolbar) self.register_service('filesystem', self.filesystem) #Register signals connections connections = ( { 'target': 'main_container', 'signal_name': 'fileSaved(QString)', 'slot': self.show_message }, { 'target': 'main_container', 'signal_name': 'currentEditorChanged(QString)', 'slot': self.change_window_title }, { 'target': 'main_container', 'signal_name': 'openPreferences()', 'slot': self.show_preferences }, { 'target': 'main_container', 'signal_name': 'allTabsClosed()', 'slot': self._last_tab_closed }, { 'target': 'explorer_container', 'signal_name': 'changeWindowTitle(QString)', 'slot': self.change_window_title }, { 'target': 'explorer_container', 'signal_name': 'projectClosed(QString)', 'slot': self.close_project }, ) self.register_signals('ide', connections) # Central Widget MUST always exists self.central = IDE.get_service('central_container') self.setCentralWidget(self.central) # Install Services for service_name in self.__IDESERVICES: self.install_service(service_name) IDE.__created = True # Place Status Bar main_container = IDE.get_service('main_container') status_bar = IDE.get_service('status_bar') main_container.add_status_bar(status_bar) # Load Menu Bar menu_bar = IDE.get_service('menu_bar') if menu_bar: menu_bar.load_menu(self) #These two are the same service, I think that's ok menu_bar.load_toolbar(self) #Start server if needed self.s_listener = None if start_server: self.s_listener = QLocalServer() self.s_listener.listen("ninja_ide") self.connect(self.s_listener, SIGNAL("newConnection()"), self._process_connection) IDE.__instance = self
if __name__ == '__main__': app = QApplication(sys.argv) # self.qtappname = 'Tapioca' socket = QLocalSocket() socket.connectToServer('Tapioca') if socket.isOpen(): socket.close socket.deleteLater() sys.exit(0) example = Example(app) socket.deleteLater() server = QLocalServer() server.newConnection.connect(example.restore) ok = server.listen('Tapioca') if not ok: if server.serverError() == QAbstractSocket.AddressInUseError: #print('Socket in use!') server.removeServer('Tapioca') ok = server.listen('Tapioca') if not ok: print('Socket trouble!') try: sys.exit(app.exec_()) except: pass