def load_ui(self, centralWidget): #Set Application Font for ToolTips QToolTip.setFont(QFont(settings.FONT_FAMILY, 10)) #Create Main Container to manage Tabs self.mainContainer = main_container.MainContainer(self) self.connect(self.mainContainer, SIGNAL("currentTabChanged(QString)"), self.change_window_title) self.connect(self.mainContainer, SIGNAL("locateFunction(QString, QString, bool)"), self.actions.locate_function) self.connect(self.mainContainer, SIGNAL("navigateCode(bool, int)"), self.actions.navigate_code_history) self.connect(self.mainContainer, SIGNAL("addBackItemNavigation()"), self.actions.add_back_item_navigation) self.connect(self.mainContainer, SIGNAL("updateFileMetadata()"), self.actions.update_explorer) self.connect(self.mainContainer, SIGNAL("updateLocator(QString)"), self.actions.update_explorer) self.connect(self.mainContainer, SIGNAL("openPreferences()"), self._show_preferences) self.connect(self.mainContainer, SIGNAL("dontOpenStartPage()"), self._dont_show_start_page_again) self.connect(self.mainContainer, SIGNAL("currentTabChanged(QString)"), self.status.handle_tab_changed) # Update symbols self.connect(self.mainContainer, SIGNAL("updateLocator(QString)"), self.status.explore_file_code) #Create Explorer Panel self.explorer = explorer_container.ExplorerContainer(self) self.connect(self.central, SIGNAL("splitterCentralRotated()"), self.explorer.rotate_tab_position) self.connect(self.explorer, SIGNAL("updateLocator()"), self.status.explore_code) self.connect(self.explorer, SIGNAL("goToDefinition(int)"), self.actions.editor_go_to_line) self.connect(self.explorer, SIGNAL("projectClosed(QString)"), self.actions.close_files_from_project) #Create Misc Bottom Container self.misc = misc_container.MiscContainer(self) self.connect(self.mainContainer, SIGNAL("findOcurrences(QString)"), self.misc.show_find_occurrences) centralWidget.insert_central_container(self.mainContainer) centralWidget.insert_lateral_container(self.explorer) centralWidget.insert_bottom_container(self.misc) self.connect(self.mainContainer, SIGNAL("cursorPositionChange(int, int)"), self.central.lateralPanel.update_line_col) # TODO: Change current symbol on move #self.connect(self.mainContainer, #SIGNAL("cursorPositionChange(int, int)"), #self.explorer.update_current_symbol) self.connect(self.mainContainer, SIGNAL("enabledFollowMode(bool)"), self.central.enable_follow_mode_scrollbar) if settings.SHOW_START_PAGE: self.mainContainer.show_start_page()
def init_contents(self): """ Setting up qt controls. """ self.changeDB.hide() self.availableDB.hide() self.availableDB.addItems(dbs.keys()) self.kanjiGroup.setAlignment(Qt.AlignCenter) self.kanjiGroup.setStyleSheet("QGroupBox { border: 1px solid gray; border-radius: 3px; }") self.day.setAlignment(Qt.AlignCenter) self.week.setAlignment(Qt.AlignCenter) self.month.setAlignment(Qt.AlignCenter) self.year.setAlignment(Qt.AlignCenter) self.dayLabel.setAlignment(Qt.AlignCenter) self.weekLabel.setAlignment(Qt.AlignCenter) self.monthLabel.setAlignment(Qt.AlignCenter) self.yearLabel.setAlignment(Qt.AlignCenter) self.day.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.week.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.month.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.year.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.methodCombo.addItems(RandomMess.algs.keys()) self.methodCombo.setCurrentIndex(1) self.statusMessage.setAlignment(Qt.AlignCenter) self.statusMessage.hide() self.statusMessage.setMaximumHeight(MESSAGE_HEIGHT) self.statusMessage.setStyleSheet(WARNING_STYLE) self.progressBar.setMaximum(0) self.progressBar.setMaximumHeight(PROGRESS_HEIGHT) self.progressBar.hide() QToolTip.setFont(QFont(PRETTY_FONT, TOOLTIP_FONT_SIZE)) self.getAll.setToolTip('Randomly select all 4 kanji') self.methodCombo.setToolTip('Choose algorithm for randomness') self.authGen.setToolTip('Authorize on remote RNG services') self.showStats.setToolTip('Show/hide dialog with comprehensive statistics') self.quitApp.setToolTip('Close application') self.showDB.setToolTip('Show/hide available databases') self.availableDB.setToolTip('Available kanji frequency charts db') self.changeDB.setToolTip('Pick new kanji from currently selected db') # About dialog self.aboutBox.layout().itemAt(1).widget().setAlignment(Qt.AlignLeft) self.aboutBox.setTextFormat(Qt.RichText) self.aboutBox.setText('Version:\t<b>' + __version__ + '</b><br/>Python:\t<b>' + platform.python_version() + '</b>' + '<br/>Platform:\t<b>' + platform.system() + ' ' + platform.release() + '</b>' + '<br/>Author:\t<b>' + __author__ + '</b>' + app_about) self.aboutBox.setWindowTitle('About ' + app_name) self.aboutBox.setIconPixmap(QPixmap(paths['icon']))
def __init__(self,parent=None,key=None): super(ConfirmationPage, self).__init__(parent) self.parent = parent #TODO. integrate properly with plist self.destlist = {self.parent.plist.get('pg')[0]:(self.parent.plist.get('pg')[1],self.getPGFields), self.parent.plist.get('ms')[0]:(self.parent.plist.get('ms')[1],self.getMSFields), self.parent.plist.get('fg')[0]:(self.parent.plist.get('fg')[1],self.getFGFields), self.parent.plist.get('sl')[0]:(self.parent.plist.get('sl')[1],self.getSLFields)} self.setTitle('Confirm Your Selection') self.setSubTitle('The values recorded below are ready to be written to the configuration file. Click "Finish" to confirm') QToolTip.setFont(QFont('SansSerif', 10))
def __init__(self,parent=None,key=None): super(SpatiaLiteConfigPage, self).__init__(parent) self.parent = parent self.key = key self.text_entered = False try: (slfname,slconfig,slepsg,slcql) = self.parent.mfr.readSpatiaLiteConfig() except: (slfname,slconfig,slepsg,slcql) = (None,)*4 self.filter = ".*\.db$|.*\.sqlite\d*$" self.setTitle('SpatialLite Configuration Options') self.setSubTitle('Browse to existing SpatiaLite DB OR enter new SpatiaLite DB file name. (This should carry a .db or .sqlite suffix)') QToolTip.setFont(QFont('SansSerif', 10)) #labels fileLabel = QLabel('SpatiaLite DB File') #edit boxes self.fileEdit = QLineEdit(slfname) self.fileEdit.setToolTip('Select or create SpatiaLite data file (recommended suffixes .db and .sqlite)') self.fileEdit.setValidator(QRegExpValidator(QRegExp(self.filter, re.IGNORECASE), self)) self.registerField(self.key+"file",self.fileEdit) #buttons fileButton = QPushButton("...") fileButton.setToolTip('Select SpatiaLite File') fileButton.clicked.connect(self.selectSpatiaLiteFile) #grid grid = QGridLayout() grid.setSpacing(10) #layout grid.addWidget(fileLabel, 1, 0) grid.addWidget(self.fileEdit, 2, 0) grid.addWidget(fileButton, 2, 3) #layout vbox = QVBoxLayout() vbox.addLayout(grid) self.setLayout(vbox)
def __init__(self,parent=None,key=None): super(FileGDBConfigPage, self).__init__(parent) self.parent = parent self.key = key self.text_entered = False try: (fgfname,fgconfig,fgepsg,fgcql) = self.parent.mfr.readFileGDBConfig() except: (fgfname,fgconfig,fgepsg,fgcql) = (None,)*4 self.filter = ".*\.gdb$" self.setTitle('File Geodatabase Configuration Options') self.setSubTitle('Enter your FileGDB directory name. (This must carry a .gdb suffix)') QToolTip.setFont(QFont('SansSerif', 10)) #labels fileLabel = QLabel('FileGDB DB directory') descLabel = QLabel('Enter the path to an existing FileGDB directory OR type in the name\nof a new FileGDB to create.\n') #edit boxes self.fileEdit = QLineEdit(fgfname)#dir selection dialog? Can't prefilter file selection for directories self.fileEdit.setToolTip('Browse to existing FileGDB OR Enter name for new FileGDB (must have .gdb suffix)') self.fileEdit.setValidator(QRegExpValidator(QRegExp(self.filter, re.IGNORECASE), self)) self.registerField(self.key+"file",self.fileEdit) #buttons fileButton = QPushButton("...") fileButton.setToolTip('Select FileGDB Directory') fileButton.clicked.connect(self.selectFileGDBFile) #grid grid = QGridLayout() grid.setSpacing(10) #layout grid.addWidget(fileLabel,1,0) grid.addWidget(self.fileEdit,2,0) grid.addWidget(fileButton,2,3) grid.addWidget(descLabel,3,0) self.setLayout(grid)
def __init__(self, parent=None,key=None): super(LDSConfigPage, self).__init__(parent) self.parent = parent self.key = key#'lds' try: (ldsurl,ldskey,ldssvc,ldsver,ldsfmt,ldscql) = self.parent.mfr.readLDSConfig() except: (ldsurl,ldskey,ldssvc,ldsver,ldsfmt,ldscql) = (None,)*6 self.setTitle(self.parent.plist.get(self.key)[1]+' Configuration Options') self.setSubTitle('Here you can enter a name for your custom configuration file, your LDS API key and required output. Also select whether you want to configure a proxy or enable password encryption') QToolTip.setFont(QFont('SansSerif', 10)) #labels fileLabel = QLabel('User Config File') keyLabel = QLabel('LDS API Key') destLabel = QLabel('Output Type') internalLabel = QLabel('Save Layer-Config in DB') self.warnLabel = QLabel('!!!') encryptionLabel = QLabel('Enable Password Protection') serviceLabel = QLabel('Service Type') versionLabel = QLabel('Service Version') infoLinkLabel = QLabel('<a href="http://www.linz.govt.nz/about-linz/linz-data-service/features/how-to-use-web-services">LDS API Information Page</a>') infoLinkLabel.setOpenExternalLinks(True); keyLinkLabel = QLabel('<a href="http://data.linz.govt.nz/my/api/">LDS API Key</a>') keyLinkLabel.setOpenExternalLinks(True); #edit boxes self.fileEdit = QLineEdit(self.parent.uchint) self.fileEdit.setToolTip('Name of user config file (without .conf suffix)') self.keyEdit = QLineEdit(ldskey) self.keyEdit.setToolTip('This is your LDS API key. If you have an account you can copy your key from here <a href="http://data.linz.govt.nz/my/api/">http://data.linz.govt.nz/my/api/</a>') #dropdown self.destSelect = QComboBox() self.destSelect.setToolTip('Choose from one of four possible output destinations') self.destSelect.addItem('') for itemkey in ('pg','ms','fg','sl'): itemindex = self.parent.plist.get(itemkey)[0] itemdata = self.parent.plist.get(itemkey)[1] self.destSelect.addItem(itemdata, itemindex) if itemdata == self.parent.sechint: self.destSelect.setCurrentIndex(itemindex) self.serviceSelect = QComboBox() self.serviceSelect.setToolTip('Choose from WFS (or one day, WMS)') for itemkey in ('','WFS','WMS','WMTS'): self.serviceSelect.addItem(itemkey) self.serviceSelect.setCurrentIndex(0) self.versionSelect = QComboBox() self.versionSelect.setToolTip('Choose service Version') for itemkey in ('','1.0.0','1.1.0','2.0.0'): self.versionSelect.addItem(itemkey) self.versionSelect.setCurrentIndex(0) self.keyEdit.setValidator(QRegExpValidator(QRegExp("[a-fA-F0-9]{32}", re.IGNORECASE), self)) #checkbox self.internalEnable = QCheckBox() self.internalEnable.setToolTip('Enable saving layer-config (per layer config and progress settings) internally') self.internalEnable.toggle() self.internalEnable.setChecked(True) self.internalEnable.stateChanged.connect(self.setWarn) self.encryptionEnable = QCheckBox() self.encryptionEnable.setToolTip('Encrypt any passwords saved to user config file') self.registerField(self.key+"file",self.fileEdit) self.registerField(self.key+"apikey",self.keyEdit) self.registerField(self.key+"dest",self.destSelect,"currentIndex") self.registerField(self.key+"internal",self.internalEnable) self.registerField(self.key+"encryption",self.encryptionEnable) #grid grid = QGridLayout() grid.setSpacing(10) grid.addWidget(fileLabel, 1, 0) grid.addWidget(self.fileEdit, 1, 2) #grid.addWidget(cfileButton, 1, 3) grid.addWidget(keyLabel, 2, 0) grid.addWidget(self.keyEdit, 2, 2) grid.addWidget(destLabel, 3, 0) grid.addWidget(self.destSelect, 3, 2) grid.addWidget(internalLabel, 4, 0) grid.addWidget(self.internalEnable, 4, 2) #if self.internalEnable.checkState(): grid.addWidget(intwarnLabel, 4, 4) grid.addWidget(encryptionLabel, 5, 0) grid.addWidget(self.encryptionEnable, 5, 2) svgrid = QGridLayout() svgrid.addWidget(serviceLabel, 0, 0) svgrid.addWidget(self.serviceSelect, 0, 2) svgrid.addWidget(versionLabel, 1, 0) svgrid.addWidget(self.versionSelect, 1, 2) hbox = QHBoxLayout() hbox.addStretch(1) hbox.addLayout(svgrid) #layout vbox = QVBoxLayout() vbox.addLayout(grid) #vbox.addLayout(hbox) vbox.addStretch(1) vbox.addWidget(self.warnLabel) vbox.addWidget(keyLinkLabel) vbox.addWidget(infoLinkLabel) self.setLayout(vbox)
def __init__(self,parent=None,key=None): super(MSSQLSpatialConfigPage, self).__init__(parent) self.parent = parent self.key = key try: (msodbc,msserver,msdsn,mstrust,msdbname,msschema,msusr,mspwd,msconfig,msepsg,mscql) = self.parent.mfr.readMSSQLConfig() except: (msodbc,msserver,msdsn,mstrust,msdbname,msschema,msusr,mspwd,msconfig,msepsg,mscql) = (None,)*11 self.setTitle('MSSQL Spatial Server Configuration Options') self.setSubTitle('Enter the server string (host\instance) name and schema of your MSSQL server. Select "Trust" if using trusted authentication') QToolTip.setFont(QFont('SansSerif', 10)) #labels serverLabel = QLabel('MSSQLSpatial Server') dbnameLabel = QLabel('MSSQLSpatial DB Name') schemaLabel = QLabel('MSSQLSpatial DB Schema') trustLabel = QLabel('Trust') usrLabel = QLabel('Username') pwdLabel = QLabel('Password') #edit boxes self.serverEdit = QLineEdit(msserver) self.serverEdit.setToolTip('Enter MSSQL Server string. Format typically <host-name>\<db-instance>') self.dbnameEdit = QLineEdit(msdbname) self.dbnameEdit.setToolTip('Enter the name of the MSSQL database') self.schemaEdit = QLineEdit(msschema) self.schemaEdit.setToolTip('Enter schema name (this is not mandatory but a common default in MSSQL is "dbo")') self.trustCheckBox = QCheckBox('YES') self.trustCheckBox.setChecked(True if mstrust and mstrust.lower()=='yes' else False) self.trustCheckBox.setToolTip('Use MSSQL trusted client authentication') self.usrEdit = QLineEdit(msusr) self.usrEdit.setToolTip('Enter MSSQL Username') self.pwdEdit = QLineEdit('')#mspwd self.pwdEdit.setToolTip('Enter MSSQL Password') self.pwdEdit.setEchoMode(QLineEdit.Password) #self.trustEdit.setValidator(QRegExpValidator(QRegExp("yes|no", re.IGNORECASE), self)) self.registerField(self.key+"server",self.serverEdit) self.registerField(self.key+"dbname",self.dbnameEdit) self.registerField(self.key+"schema",self.schemaEdit) self.registerField(self.key+"trust",self.trustCheckBox) self.registerField(self.key+"usr",self.usrEdit) self.registerField(self.key+"pwd",self.pwdEdit) #grid grid = QGridLayout() grid.setSpacing(10) #layout grid.addWidget(serverLabel, 1, 0) grid.addWidget(self.serverEdit, 1, 2) grid.addWidget(dbnameLabel, 2, 0) grid.addWidget(self.dbnameEdit, 2, 2) grid.addWidget(schemaLabel, 3, 0) grid.addWidget(self.schemaEdit, 3, 2) grid.addWidget(trustLabel, 4, 0) grid.addWidget(self.trustCheckBox, 4, 2) grid.addWidget(usrLabel, 5, 0) grid.addWidget(self.usrEdit, 5, 2) grid.addWidget(pwdLabel, 6, 0) grid.addWidget(self.pwdEdit, 6, 2) self.setLayout(grid)
def run_edis(app): """ Se carga la interfáz """ DEBUG("Running Edis...") qsettings = QSettings(paths.CONFIGURACION, QSettings.IniFormat) # Ícono app.setWindowIcon(QIcon(":image/edis")) # Lenguaje local = QLocale.system().name() DEBUG("Loading language...") language = settings.get_setting('general/language') if language: edis_translator = QTranslator() edis_translator.load(os.path.join(paths.PATH, "extras", "i18n", language)) app.installTranslator(edis_translator) # Qt translator qtranslator = QTranslator() qtranslator.load("qt_" + local, QLibraryInfo.location( QLibraryInfo.TranslationsPath)) app.installTranslator(qtranslator) pixmap = QPixmap(":image/splash") # Splash screen show_splash = False if settings.get_setting('general/show-splash'): DEBUG("Showing splash...") splash = QSplashScreen(pixmap, Qt.WindowStaysOnTopHint) splash.setMask(pixmap.mask()) splash.show() app.processEvents() show_splash = True # Style Sheet style = settings.get_setting('window/style-sheet') path_style = None style_sheet = None if style == 'Edark': path_style = os.path.join(paths.PATH, 'extras', 'theme', 'edark.qss') elif style != 'Default': path_style = os.path.join(paths.EDIS, style + '.qss') if path_style is not None: with open(path_style, mode='r') as f: style_sheet = f.read() app.setStyleSheet(style_sheet) # Fuente en Tooltips QToolTip.setFont(QFont(settings.DEFAULT_FONT, 9)) # GUI if show_splash: alignment = Qt.AlignBottom | Qt.AlignLeft splash.showMessage("Loading UI...", alignment, Qt.white) DEBUG("Loading GUI...") edis = Edis() edis.show() # Archivos de última sesión files, recents_files, projects = [], [], [] projects = qsettings.value('general/projects') #FIXME: if projects is None: projects = [] if settings.get_setting('general/load-files'): DEBUG("Loading files and projects...") if show_splash: splash.showMessage("Loading files...", alignment, Qt.white) files = qsettings.value('general/files') if files is None: files = [] # Archivos recientes recents_files = qsettings.value('general/recents-files') if recents_files is None: recents_files = [] # Archivos desde línea de comandos files += cmd_parser.parse() edis.load_files_and_projects(files, recents_files, projects) if show_splash: splash.finish(edis) DEBUG("Edis is Ready!") sys.exit(app.exec_())
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() #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) #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) #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 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) IDE.__instance = self
def __init__(self, start_server=False): QMainWindow.__init__(self) self.setWindowTitle("NINJA-IDE {Ninja-IDE Is Not Just Another IDE}") self.setMinimumSize(700, 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() # 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 # 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() # Notificator self.notification = notification.Notification(self) # Plugin Manager # 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_menu_category(translations.TR_MENU_FILE, 100) IDE.register_menu_category(translations.TR_MENU_EDIT, 110) IDE.register_menu_category(translations.TR_MENU_VIEW, 120) IDE.register_menu_category(translations.TR_MENU_SOURCE, 130) IDE.register_menu_category(translations.TR_MENU_PROJECT, 140) IDE.register_menu_category(translations.TR_MENU_ADDINS, 150) IDE.register_menu_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) # Register signals connections connections = ( {"target": "main_container", "signal_name": "fileSaved(QString)", "slot": self.show_status_message}, {"target": "main_container", "signal_name": "currentTabChanged(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) self.__created = True 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)
def __init__(self, parent=None): super(LayerSelectionPage, self).__init__(parent) self.parent = parent #convenience link self.confconn_link = self.parent.parent.confconn #flag top prevent read read action on keyword delete. New logic makes this redundant #self.keywordbypass = False QToolTip.setFont(QFont('SansSerif', 10)) #label filterlabel = QLabel('Filter') availablelabel = QLabel('Available Layers') selectionlabel = QLabel('Layer Selections') keywordlabel = QLabel('Keyword') explainlabel = QLabel("Edit Group assignments using this dialog or to simply initialise the Layer-Config just click 'Finish'") #selection buttons chooseallbutton = QPushButton('>>') chooseallbutton.setFixedWidth(self.XFER_BW) chooseallbutton.clicked.connect(self.doChooseAllClickAction) choosebutton = QPushButton('>') choosebutton.setFixedWidth(self.XFER_BW) choosebutton.clicked.connect(self.doChooseClickAction) rejectbutton = QPushButton('<') rejectbutton.setFixedWidth(self.XFER_BW) rejectbutton.clicked.connect(self.doRejectClickAction) rejectallbutton = QPushButton('<<') rejectallbutton.setFixedWidth(self.XFER_BW) rejectallbutton.clicked.connect(self.doRejectAllClickAction) #operation buttons finishbutton = QPushButton('Finish') finishbutton.setToolTip('Finish and Close layer selection dialog') finishbutton.clicked.connect(self.parent.close) resetbutton = QPushButton('Reset') resetbutton.font() resetbutton.setToolTip('Read Layer from LDS GetCapabilities request. Overwrites current Layer Config') resetbutton.clicked.connect(self.doResetClickAction) self.available_sfpm = LDSSFPAvailableModel(self) self.selection_sfpm = LDSSFPSelectionModel(self) self.available_sfpm.setSourceModel(self.parent.available_model) self.selection_sfpm.setSourceModel(self.parent.selection_model) #textedits filteredit = QLineEdit('') filteredit.setToolTip('Filter Available-Layers pane (filter operates across Name and Title fields and accepts Regex expressions)') filteredit.textChanged.connect(self.available_sfpm.setActiveFilter) self.keywordcombo = QComboBox() self.keywordcombo.setToolTip('Select or Add a unique identifier to be saved in layer config (keyword)') self.keywordcombo.addItems(list(self.confconn_link.assigned)) self.keywordcombo.setEditable(True) self.keywordcombo.activated.connect(self.doKeyComboChangeAction) lgindex = self.confconn_link.getLayerGroupIndex(self.confconn_link.lgval,col=1) lgentry = self.confconn_link.lglist[lgindex] if LU.assessNone(lgindex) else None #keywordedit = self.keywordcombo.lineEdit().text().toUtf8().data().decode('utf8')# for writing #if no entry or layer indicated then blank self.keywordcombo.lineEdit().setText('' if lgentry is None or lgentry[0]==LORG.LAYER else lgentry[1])#self.confconn_link.lgval)#TODO. group only #header headmodel = QStandardItemModel() headmodel.setHorizontalHeaderLabels([i[2] for i in self.colparams][:self.parent.available_model.columnCount()]) headview1 = QHeaderView(Qt.Horizontal) headview1.setModel(headmodel) headview1.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) headview2 = QHeaderView(Qt.Horizontal) headview2.setModel(headmodel) headview2.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) #table self.available = QTableView() self.available.setSelectionBehavior(QAbstractItemView.SelectRows) self.available.setSelectionMode(QAbstractItemView.MultiSelection) self.selection = QTableView() self.selection.setSelectionBehavior(QAbstractItemView.SelectRows) self.selection.setSelectionMode(QAbstractItemView.MultiSelection) #interesting, must set model after selection attributes but before headers else row selections/headers don't work properly self.available.setModel(self.available_sfpm) self.selection.setModel(self.selection_sfpm) self.available.setSortingEnabled(True) self.available.setHorizontalHeader(headview1) self.selection.setSortingEnabled(True) self.selection.setHorizontalHeader(headview2) for cp in self.colparams: self.available.setColumnWidth(cp[0],cp[1]) self.selection.setColumnWidth(cp[0],cp[1]) self.available.verticalHeader().setVisible(False) self.available.horizontalHeader().setVisible(True) self.selection.verticalHeader().setVisible(False) self.selection.horizontalHeader().setVisible(True) #layout vbox00 = QVBoxLayout() vbox00.addWidget(availablelabel) vbox00.addWidget(self.available) vbox01 = QVBoxLayout() vbox01.addWidget(chooseallbutton) vbox01.addWidget(choosebutton) vbox01.addWidget(rejectbutton) vbox01.addWidget(rejectallbutton) vbox02 = QVBoxLayout() vbox02.addWidget(selectionlabel) vbox02.addWidget(self.selection) vbox10 = QVBoxLayout() vbox10.addWidget(filterlabel) vbox10.addWidget(filteredit) hbox12 = QHBoxLayout() hbox12.addWidget(keywordlabel) hbox12.addStretch(1) #hbox12.addWidget(inspbutton) #hbox12.addWidget(addbutton) #hbox12.addWidget(delbutton) vbox12 = QVBoxLayout() vbox12.addLayout(hbox12) vbox12.addWidget(self.keywordcombo) #00|01|02 #10|11|12 grid0 = QGridLayout() grid0.addLayout(vbox00,1,0) grid0.addLayout(vbox01,1,1) grid0.addLayout(vbox02,1,2) grid0.addLayout(vbox10,0,0) grid0.addLayout(vbox12,0,2) hbox2 = QHBoxLayout() hbox2.addWidget(resetbutton) hbox2.addStretch(1) hbox2.addWidget(explainlabel) hbox2.addWidget(finishbutton) #gbox1.setLayout(hbox2) vbox3 = QVBoxLayout() vbox3.addLayout(grid0) #vbox3.addLayout(hbox3) #vbox3.addWidget(line0) vbox3.addLayout(hbox2) self.setLayout(vbox3)
def __init__(self, parent=None): super(LayerSelectionPage, self).__init__(parent) self.parent = parent #convenience link self.confconn_link = self.parent.parent.confconn #flag top prevent read read action on keyword delete. New logic makes this redundant #self.keywordbypass = False QToolTip.setFont(QFont('SansSerif', 10)) #label filterlabel = QLabel('Filter') availablelabel = QLabel('Available Layers') selectionlabel = QLabel('Layer Selections') keywordlabel = QLabel('Keyword') explainlabel = QLabel( "Edit Group assignments using this dialog or to simply initialise the Layer-Config just click 'Finish'" ) #selection buttons chooseallbutton = QPushButton('>>') chooseallbutton.setFixedWidth(self.XFER_BW) chooseallbutton.clicked.connect(self.doChooseAllClickAction) choosebutton = QPushButton('>') choosebutton.setFixedWidth(self.XFER_BW) choosebutton.clicked.connect(self.doChooseClickAction) rejectbutton = QPushButton('<') rejectbutton.setFixedWidth(self.XFER_BW) rejectbutton.clicked.connect(self.doRejectClickAction) rejectallbutton = QPushButton('<<') rejectallbutton.setFixedWidth(self.XFER_BW) rejectallbutton.clicked.connect(self.doRejectAllClickAction) #operation buttons finishbutton = QPushButton('Finish') finishbutton.setToolTip('Finish and Close layer selection dialog') finishbutton.clicked.connect(self.parent.close) resetbutton = QPushButton('Reset') resetbutton.font() resetbutton.setToolTip( 'Read Layer from LDS GetCapabilities request. Overwrites current Layer Config' ) resetbutton.clicked.connect(self.doResetClickAction) self.available_sfpm = LDSSFPAvailableModel(self) self.selection_sfpm = LDSSFPSelectionModel(self) self.available_sfpm.setSourceModel(self.parent.available_model) self.selection_sfpm.setSourceModel(self.parent.selection_model) #textedits filteredit = QLineEdit('') filteredit.setToolTip( 'Filter Available-Layers pane (filter operates across Name and Title fields and accepts Regex expressions)' ) filteredit.textChanged.connect(self.available_sfpm.setActiveFilter) self.keywordcombo = QComboBox() self.keywordcombo.setToolTip( 'Select or Add a unique identifier to be saved in layer config (keyword)' ) self.keywordcombo.addItems(list(self.confconn_link.assigned)) self.keywordcombo.setEditable(True) self.keywordcombo.activated.connect(self.doKeyComboChangeAction) lgindex = self.confconn_link.getLayerGroupIndex( self.confconn_link.lgval, col=1) lgentry = self.confconn_link.lglist[lgindex] if LU.assessNone( lgindex) else None #keywordedit = self.keywordcombo.lineEdit().text().toUtf8().data().decode('utf8')# for writing #if no entry or layer indicated then blank self.keywordcombo.lineEdit().setText( '' if lgentry is None or lgentry[0] == LORG.LAYER else lgentry[1]) #self.confconn_link.lgval)#TODO. group only #header headmodel = QStandardItemModel() headmodel.setHorizontalHeaderLabels([ i[2] for i in self.colparams ][:self.parent.available_model.columnCount()]) headview1 = QHeaderView(Qt.Horizontal) headview1.setModel(headmodel) headview1.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) headview2 = QHeaderView(Qt.Horizontal) headview2.setModel(headmodel) headview2.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) #table self.available = QTableView() self.available.setSelectionBehavior(QAbstractItemView.SelectRows) self.available.setSelectionMode(QAbstractItemView.MultiSelection) self.selection = QTableView() self.selection.setSelectionBehavior(QAbstractItemView.SelectRows) self.selection.setSelectionMode(QAbstractItemView.MultiSelection) #interesting, must set model after selection attributes but before headers else row selections/headers don't work properly self.available.setModel(self.available_sfpm) self.selection.setModel(self.selection_sfpm) self.available.setSortingEnabled(True) self.available.setHorizontalHeader(headview1) self.selection.setSortingEnabled(True) self.selection.setHorizontalHeader(headview2) for cp in self.colparams: self.available.setColumnWidth(cp[0], cp[1]) self.selection.setColumnWidth(cp[0], cp[1]) self.available.verticalHeader().setVisible(False) self.available.horizontalHeader().setVisible(True) self.selection.verticalHeader().setVisible(False) self.selection.horizontalHeader().setVisible(True) #layout vbox00 = QVBoxLayout() vbox00.addWidget(availablelabel) vbox00.addWidget(self.available) vbox01 = QVBoxLayout() vbox01.addWidget(chooseallbutton) vbox01.addWidget(choosebutton) vbox01.addWidget(rejectbutton) vbox01.addWidget(rejectallbutton) vbox02 = QVBoxLayout() vbox02.addWidget(selectionlabel) vbox02.addWidget(self.selection) vbox10 = QVBoxLayout() vbox10.addWidget(filterlabel) vbox10.addWidget(filteredit) hbox12 = QHBoxLayout() hbox12.addWidget(keywordlabel) hbox12.addStretch(1) #hbox12.addWidget(inspbutton) #hbox12.addWidget(addbutton) #hbox12.addWidget(delbutton) vbox12 = QVBoxLayout() vbox12.addLayout(hbox12) vbox12.addWidget(self.keywordcombo) #00|01|02 #10|11|12 grid0 = QGridLayout() grid0.addLayout(vbox00, 1, 0) grid0.addLayout(vbox01, 1, 1) grid0.addLayout(vbox02, 1, 2) grid0.addLayout(vbox10, 0, 0) grid0.addLayout(vbox12, 0, 2) hbox2 = QHBoxLayout() hbox2.addWidget(resetbutton) hbox2.addStretch(1) hbox2.addWidget(explainlabel) hbox2.addWidget(finishbutton) #gbox1.setLayout(hbox2) vbox3 = QVBoxLayout() vbox3.addLayout(grid0) #vbox3.addLayout(hbox3) #vbox3.addWidget(line0) vbox3.addLayout(hbox2) self.setLayout(vbox3)
def initUI(self): # 0 1 2 3 4 5 6 7 8 #'destname','lgselect','layer','uconf','group','epsg','fd','td','int' #self.rdest,rlgselect,self.rlayer,ruconf,self.rgroup,repsg,rfd,rtd,rint = readlist QToolTip.setFont(QFont('SansSerif', 10)) #labels destLabel = QLabel('Destination') lgLabel = QLabel('Group/Layer') epsgLabel = QLabel('EPSG') fromDateLabel = QLabel('From Date') toDateLabel = QLabel('To Date') confLabel = QLabel('User Config') self.view = QLabel() self.view.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.view.setAlignment(Qt.AlignCenter) self.confcombo = QComboBox(self) self.confcombo.setToolTip('Enter your user config name (file) here') self.confcombo.addItems(self.cflist) self.confcombo.setEditable(False) #self.confcombo.currentIndexChanged.connect(self.doLGEditUpdate) #combos self.lgcombo = QComboBox(self) self.lgcombo.setMaximumWidth(self.MAX_WD) self.lgcombo.setDuplicatesEnabled(False) #self.lgcombo.setInsertPolicy(QComboBox.InsertAlphabetically)#?doesnt seem to work self.lgcombo.setToolTip('Select either Layer or Group entry') self.lgcombo.setEditable(False) self.sepindex = None #self.updateLGValues() self.epsgcombo = QComboBox(self) self.epsgcombo.setMaximumWidth(self.MAX_WD) self.epsgcombo.setToolTip('Setting an EPSG number here determines the output SR of the layer') self.epsgcombo.addItems([i[1] for i in self.nzlsr]) self.epsgcombo.insertSeparator(len(self.nzlsr)) self.epsgcombo.addItems([i[1] for i in self.rowsr]) self.epsgcombo.setEditable(True) self.epsgcombo.setEnabled(False) self.destlist = self.getConfiguredDestinations() self.destcombo = QComboBox(self) self.destcombo.setToolTip('Choose the desired output type') self.destcombo.setEditable(False) self.destcombo.addItems(self.destlist) #date selection self.fromdateedit = QDateEdit() self.fromdateedit.setCalendarPopup(True) self.fromdateedit.setEnabled(False) self.todateedit = QDateEdit() self.todateedit.setCalendarPopup(True) self.todateedit.setEnabled(False) #check boxes self.epsgenable = QCheckBox() self.epsgenable.setCheckState(False) self.epsgenable.clicked.connect(self.doEPSGEnable) self.fromdateenable = QCheckBox() self.fromdateenable.setCheckState(False) self.fromdateenable.clicked.connect(self.doFromDateEnable) self.todateenable = QCheckBox() self.todateenable.setCheckState(False) self.todateenable.clicked.connect(self.doToDateEnable) self.progressbar = QProgressBar() self.progressbar.setRange(0,100) self.progressbar.setVisible(True) self.progressbar.setMinimumWidth(self.MAX_WD) #buttons self.initbutton = QPushButton("waiting") self.initbutton.setToolTip('Initialise the Layer Configuration') self.initbutton.clicked.connect(self.doInitClickAction) self.cleanbutton = QPushButton("Clean") self.cleanbutton.setToolTip('Clean the selected layer/group from local storage') self.cleanbutton.clicked.connect(self.doCleanClickAction) self.replicatebutton = QPushButton("Replicate") self.replicatebutton.setToolTip('Execute selected replication') self.replicatebutton.clicked.connect(self.doReplicateClickAction) self.cancelbutton = QPushButton("Close") self.cancelbutton.setToolTip('Close the LDS Replicate application') self.cancelbutton.clicked.connect(self.parent.close) #set dialog values using GPR self.updateGUIValues(self.parent.gvs) #set onchange here otherwise we get circular initialisation self.destcombo.currentIndexChanged.connect(self.doDestChanged) self.confcombo.currentIndexChanged.connect(self.doConfChanged) self.lgcombo.currentIndexChanged.connect(self.doLGComboChanged) self.setStatus(self.STATUS.IDLE) #grid grid = QGridLayout() grid.setSpacing(10) #placement section ------------------------------------ #---------+---------+--------+---------+-------- # dest LB | | dest DD # grp LB | | grp DD # conf LB | | conf DD # epsg L | epsg CB | epsg DD # f dt L | f dt CB | f dt DD # t td L | t td CB | t td DD # icon | <- progress -> # layer B | <- . -> |repl B | clean B | close B #---------+---------+--------+---------+-------- grid.addWidget(destLabel, 1, 0) grid.addWidget(self.destcombo, 1, 2) #grid.addWidget(layerLabel, 2, 0) grid.addWidget(lgLabel, 2, 0) grid.addWidget(self.lgcombo, 2, 2) grid.addWidget(confLabel, 3, 0) grid.addWidget(self.confcombo, 3, 2) #grid.addWidget(groupLabel, 4, 0) #grid.addWidget(self.groupEdit, 4, 2) grid.addWidget(epsgLabel, 5, 0) grid.addWidget(self.epsgenable, 5, 1) grid.addWidget(self.epsgcombo, 5, 2) grid.addWidget(fromDateLabel, 6, 0) grid.addWidget(self.fromdateenable, 6, 1) grid.addWidget(self.fromdateedit, 6, 2) grid.addWidget(toDateLabel, 7, 0) grid.addWidget(self.todateenable, 7, 1) grid.addWidget(self.todateedit, 7, 2) hbox3 = QHBoxLayout() hbox3.addWidget(self.view) hbox3.addStretch(1) hbox3.addWidget(self.progressbar) #hbox3.addLayout(vbox2) #hbox3.addLayout(vbox3) hbox4 = QHBoxLayout() hbox4.addWidget(self.initbutton) hbox4.addStretch(1) hbox4.addWidget(self.replicatebutton) hbox4.addWidget(self.cleanbutton) hbox4.addWidget(self.cancelbutton) vbox = QVBoxLayout() #vbox.addStretch(1) vbox.addLayout(grid) vbox.addLayout(hbox3) vbox.addLayout(hbox4) self.setLayout(vbox)
def run_edis(app): """ Se carga la interfáz """ DEBUG("Running Edis...") qsettings = QSettings(paths.CONFIGURACION, QSettings.IniFormat) # Ícono app.setWindowIcon(QIcon(":image/edis")) # Lenguaje local = QLocale.system().name() DEBUG("Loading language...") language = settings.get_setting('general/language') if language: edis_translator = QTranslator() edis_translator.load( os.path.join(paths.PATH, "extras", "i18n", language)) app.installTranslator(edis_translator) # Qt translator qtranslator = QTranslator() qtranslator.load("qt_" + local, QLibraryInfo.location(QLibraryInfo.TranslationsPath)) app.installTranslator(qtranslator) pixmap = QPixmap(":image/splash") # Splash screen show_splash = False if settings.get_setting('general/show-splash'): DEBUG("Showing splash...") splash = QSplashScreen(pixmap, Qt.WindowStaysOnTopHint) splash.setMask(pixmap.mask()) splash.show() app.processEvents() show_splash = True # Style Sheet style = settings.get_setting('window/style-sheet') path_style = None style_sheet = None if style == 'Edark': path_style = os.path.join(paths.PATH, 'extras', 'theme', 'edark.qss') elif style != 'Default': path_style = os.path.join(paths.EDIS, style + '.qss') if path_style is not None: with open(path_style, mode='r') as f: style_sheet = f.read() app.setStyleSheet(style_sheet) # Fuente en Tooltips QToolTip.setFont(QFont(settings.DEFAULT_FONT, 9)) # GUI if show_splash: alignment = Qt.AlignBottom | Qt.AlignLeft splash.showMessage("Loading UI...", alignment, Qt.white) DEBUG("Loading GUI...") edis = Edis() edis.show() # Archivos de última sesión files, recents_files, projects = [], [], [] projects = qsettings.value('general/projects') #FIXME: if projects is None: projects = [] if settings.get_setting('general/load-files'): DEBUG("Loading files and projects...") if show_splash: splash.showMessage("Loading files...", alignment, Qt.white) files = qsettings.value('general/files') if files is None: files = [] # Archivos recientes recents_files = qsettings.value('general/recents-files') if recents_files is None: recents_files = [] # Archivos desde línea de comandos files += cmd_parser.parse() edis.load_files_and_projects(files, recents_files, projects) if show_splash: splash.finish(edis) DEBUG("Edis is Ready!") sys.exit(app.exec_())
def init_contents(self): """ Setting up qt controls. """ self.changeDB.hide() self.availableDB.hide() self.availableDB.addItems(dbs.keys()) self.kanjiGroup.setAlignment(Qt.AlignCenter) self.kanjiGroup.setStyleSheet( "QGroupBox { border: 1px solid gray; border-radius: 3px; }") self.day.setAlignment(Qt.AlignCenter) self.week.setAlignment(Qt.AlignCenter) self.month.setAlignment(Qt.AlignCenter) self.year.setAlignment(Qt.AlignCenter) self.dayLabel.setAlignment(Qt.AlignCenter) self.weekLabel.setAlignment(Qt.AlignCenter) self.monthLabel.setAlignment(Qt.AlignCenter) self.yearLabel.setAlignment(Qt.AlignCenter) self.day.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.week.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.month.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.year.setFont(QFont(PRETTY_FONT, KANJI_SIZE)) self.methodCombo.addItems(RandomMess.algs.keys()) self.methodCombo.setCurrentIndex(1) self.statusMessage.setAlignment(Qt.AlignCenter) self.statusMessage.hide() self.statusMessage.setMaximumHeight(MESSAGE_HEIGHT) self.statusMessage.setStyleSheet(WARNING_STYLE) self.progressBar.setMaximum(0) self.progressBar.setMaximumHeight(PROGRESS_HEIGHT) self.progressBar.hide() QToolTip.setFont(QFont(PRETTY_FONT, TOOLTIP_FONT_SIZE)) self.getAll.setToolTip('Randomly select all 4 kanji') self.methodCombo.setToolTip('Choose algorithm for randomness') self.authGen.setToolTip('Authorize on remote RNG services') self.showStats.setToolTip( 'Show/hide dialog with comprehensive statistics') self.quitApp.setToolTip('Close application') self.showDB.setToolTip('Show/hide available databases') self.availableDB.setToolTip('Available kanji frequency charts db') self.changeDB.setToolTip('Pick new kanji from currently selected db') # About dialog self.aboutBox.layout().itemAt(1).widget().setAlignment(Qt.AlignLeft) self.aboutBox.setTextFormat(Qt.RichText) self.aboutBox.setText('Version:\t<b>' + __version__ + '</b><br/>Python:\t<b>' + platform.python_version() + '</b>' + '<br/>Platform:\t<b>' + platform.system() + ' ' + platform.release() + '</b>' + '<br/>Author:\t<b>' + __author__ + '</b>' + app_about) self.aboutBox.setWindowTitle('About ' + app_name) self.aboutBox.setIconPixmap(QPixmap(paths['icon']))
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
def __init__(self, parent=None,key=None): super(ProxyConfigPage, self).__init__(parent) self.parent = parent self.key = key try: (pxytype,pxyhost,pxyport,pxyauth,pxyusr,pxypwd) = self.parent.mfr.readProxyConfig() except: (pxytype,pxyhost,pxyport,pxyauth,pxyusr,pxypwd) = (None,)*6 #if we use enums for pxy types #pxytype = [a[0] for a in WFSDataStore.PROXY_TYPE.reverse.items() if a[1]==pxytype][0] self.setTitle(self.parent.plist.get(self.key)[1]+' Configuration Options') self.setSubTitle('Enter the hostname/ip-address, port number and authentication details of your HTTP proxy') QToolTip.setFont(QFont('SansSerif', 10)) #labels directlabel = QLabel('Direct Connection') systemlabel = QLabel('Use System Proxy settings') proxylabel = QLabel('Configure Proxy') hostLabel = QLabel('Proxy Host') portLabel = QLabel('Proxy Port') authLabel = QLabel('Authentication') usrLabel = QLabel('Username') pwdLabel = QLabel('Password') #radio buttons self.directradio = QRadioButton() self.systemradio = QRadioButton() self.usrdefradio = QRadioButton() #edit boxes self.hostEdit = QLineEdit(pxyhost) self.hostEdit.setToolTip('Enter Proxy host (IP Address or hostname)') self.portEdit = QLineEdit(pxyport) self.portEdit.setToolTip('Enter Proxy port') #dropdown self.authSelect = QComboBox() self.authSelect.addItem('') self.authSelect.setToolTip('Select appropriate proxy authentication mechanism') self.authSelect.addItems(WFSDataStore.PROXY_AUTH) self.authSelect.setCurrentIndex(0 if LU.assessNone(pxyauth) is None else WFSDataStore.PROXY_AUTH.index(pxyauth)) self.usrEdit = QLineEdit(pxyusr) self.usrEdit.setToolTip('Enter your proxy username (if required)') self.pwdEdit = QLineEdit('')#pxypwd self.usrEdit.setToolTip('Enter your proxy password (if required)') self.pwdEdit.setEchoMode(QLineEdit.Password) self.portEdit.setValidator(QRegExpValidator(QRegExp("\d{1,5}"), self)) self.registerField(self.key+"host",self.hostEdit) self.registerField(self.key+"port",self.portEdit) self.registerField(self.key+"auth",self.authSelect,"currentIndex") self.registerField(self.key+"usr",self.usrEdit) self.registerField(self.key+"pwd",self.pwdEdit) self.registerField(self.key+WFSDataStore.PROXY_TYPE[0],self.directradio) self.registerField(self.key+WFSDataStore.PROXY_TYPE[1],self.systemradio) self.registerField(self.key+WFSDataStore.PROXY_TYPE[2],self.usrdefradio) #grid grid1 = QGridLayout() grid1.setSpacing(10) grid2 = QGridLayout() grid2.setSpacing(10) #layout hbox = QHBoxLayout() grid1.addWidget(self.directradio,1,0) grid1.addWidget(directlabel,1,1) grid1.addWidget(self.systemradio,2,0) grid1.addWidget(systemlabel,2,1) grid1.addWidget(self.usrdefradio,3,0) grid1.addWidget(proxylabel,3,1) hbox.addLayout(grid1) hbox.addStretch(1) self.gbox = QGroupBox('Proxy Configuration') #dsu subs = False if pxytype == WFSDataStore.PROXY_TYPE[1]: #system self.systemradio.setChecked(True) elif pxytype == WFSDataStore.PROXY_TYPE[2]: #user_defined self.usrdefradio.setChecked(True) subs = True else: #direct (default) self.directradio.setChecked(True) self.setUserDefined(subs) self.directradio.clicked.connect(self.disableUserDefined) self.systemradio.clicked.connect(self.disableUserDefined) self.usrdefradio.clicked.connect(self.enableUserDefined) grid2.addWidget(hostLabel, 1, 0) grid2.addWidget(self.hostEdit, 1, 2) grid2.addWidget(portLabel, 2, 0) grid2.addWidget(self.portEdit, 2, 2) grid2.addWidget(authLabel, 3, 0) grid2.addWidget(self.authSelect, 3, 2) grid2.addWidget(usrLabel, 4, 0) grid2.addWidget(self.usrEdit, 4, 2) grid2.addWidget(pwdLabel, 5, 0) grid2.addWidget(self.pwdEdit, 5, 2) self.gbox.setLayout(grid2) #layout vbox = QVBoxLayout() vbox.addLayout(hbox) vbox.insertWidget(1,self.gbox) self.setLayout(vbox)
def __init__(self,parent=None,key=None): super(PostgreSQLConfigPage, self).__init__(parent) self.parent = parent self.key = key try: (pghost,pgport,pgdbname,pgschema,pgusr,pgpwd,pgover,pgconfig,pgepsg,pgcql) = self.parent.mfr.readPostgreSQLConfig() except: (pghost,pgport,pgdbname,pgschema,pgusr,pgpwd,pgover,pgconfig,pgepsg,pgcql) = (None,)*10 self.setTitle('PostgreSQL/PostGIS Configuration Options') self.setSubTitle('Enter the hostname/ip-address, port number, name and schema of your PostgreSQL server instance.') QToolTip.setFont(QFont('SansSerif', 10)) #labels hostLabel = QLabel('PostgreSQL Host') portLabel = QLabel('PostgreSQL Port') dbnameLabel = QLabel('PostgreSQL DB Name') schemaLabel = QLabel('PostgreSQL DB Schema') usrLabel = QLabel('Username') pwdLabel = QLabel('Password') #edit boxes self.hostEdit = QLineEdit(pghost) self.hostEdit.setToolTip('Enter the name of your PostgreSQL host/IP-address') self.portEdit = QLineEdit('5432' if LU.assessNone(pgport) is None else pgport) self.portEdit.setToolTip('Enter the PostgreSQL listen port') self.dbnameEdit = QLineEdit(pgdbname) self.dbnameEdit.setToolTip('Enter the name of the PostgreSQL DB to connect with') self.schemaEdit = QLineEdit(pgschema) self.schemaEdit.setToolTip('Set the database schema here') self.usrEdit = QLineEdit(pgusr) self.usrEdit.setToolTip('Name of PostgreSQL account/user') self.pwdEdit = QLineEdit('')#pgpwd self.pwdEdit.setToolTip('Enter PostgreSQL account password') self.pwdEdit.setEchoMode(QLineEdit.Password) self.portEdit.setValidator(QRegExpValidator(QRegExp("\d{1,5}"), self)) self.registerField(self.key+"host",self.hostEdit) self.registerField(self.key+"port",self.portEdit) self.registerField(self.key+"dbname",self.dbnameEdit) self.registerField(self.key+"schema",self.schemaEdit) self.registerField(self.key+"usr",self.usrEdit) self.registerField(self.key+"pwd",self.pwdEdit) #grid grid = QGridLayout() grid.setSpacing(10) #layout grid.addWidget(hostLabel, 1, 0) grid.addWidget(self.hostEdit, 1, 2) grid.addWidget(portLabel, 2, 0) grid.addWidget(self.portEdit, 2, 2) grid.addWidget(dbnameLabel, 3, 0) grid.addWidget(self.dbnameEdit, 3, 2) grid.addWidget(schemaLabel, 4, 0) grid.addWidget(self.schemaEdit, 4, 2) grid.addWidget(usrLabel, 5, 0) grid.addWidget(self.usrEdit, 5, 2) grid.addWidget(pwdLabel, 6, 0) grid.addWidget(self.pwdEdit, 6, 2) #layout self.setLayout(grid)