コード例 #1
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle("supervisor Interface")
        self.__mutex__ = QtCore.QMutex()

        self.__log__()
        self.__setting__()
        self.createActions()
        self.createMenus()
        self.__rpc__ = None
        self.centralWidget = CentralWidget(None, (self.settings, self.__mutex__) )

        self.statusBar().showMessage("Ready")


    def __setting__(self):
        print "get setting"
        #self.settings = QSettings(QSettings.IniFormat,QSettings.SystemScope, '__ILLUSTRABOT2OO', '__settings')
        self.settings = QSettings(QSettings.IniFormat,QSettings.UserScope, '__ILLUSTRABOT2OO', '__settings')
        self.settings.setFallbacksEnabled(False)    # File only, not registry or or.
        
        self.__mutex__.lock()
        self.settings.beginGroup("Main")
        self.resize(self.settings.value("size", QtCore.QSize(1024, 850)))
        self.move(self.settings.value("pos", QtCore.QPoint(50, 50)))
        self.ip = self.settings.value("ip",  r'172.25.195.58')
        print "previous IP=",self.ip
        
        self.settings.endGroup()
        self.__mutex__.unlock()


    def __log__(self):
        self.windowlog = {}


    def rpc(self):
        # Try to connect to a board
        print self.ip
        text, ok = QtGui.QInputDialog.getText(self, self.tr("Board IP"),
                                              self.tr("IP address:"), QtGui.QLineEdit.Normal,
                                              self.ip)

        if ok and not (len(text) ==0):
            try:
                self.__rpc__ = xmlrpclib.ServerProxy("http://%s:8000"%str(text))
                self.statusBar().showMessage("Connected...")
                self.centralWidget.setrpc(self.__rpc__) 
                self.__get_level__()
                self.setCentralWidget(self.centralWidget)
                self.ip= str(text)
            except Exception,e:
                self.statusBar().showMessage("Failed to connect to %s"%text)
                sys.stderr.write( str(e))
                traceback.print_exc(file=sys.stderr)
                pass
            

        return
コード例 #2
0
    def save_ini(self):
        settings = QSettings('config.ini', QSettings.IniFormat)

        settings.beginGroup(self.__class__.__name__)
        settings.setValue('Geometry', self.saveGeometry())
        settings.setValue('splitter', self.splitter.saveState())
        settings.endGroup()
コード例 #3
0
    def _tryToFillPlayerPath(self, playerpath, playerpathlist):
        settings = QSettings("Syncplay", "PlayerList")
        settings.beginGroup("PlayerList")
        savedPlayers = settings.value("PlayerList", [])
        if(not isinstance(savedPlayers, list)):
            savedPlayers = []
        playerpathlist = list(set(os.path.normcase(os.path.normpath(path)) for path in set(playerpathlist + savedPlayers)))
        settings.endGroup()
        foundpath = ""

        if playerpath != None and playerpath != "":
            if not os.path.isfile(playerpath):
                expandedpath = PlayerFactory().getExpandedPlayerPathByPath(playerpath)
                if expandedpath != None and os.path.isfile(expandedpath):
                    playerpath = expandedpath

            if os.path.isfile(playerpath):
                foundpath = playerpath
                self.executablepathCombobox.addItem(foundpath)

        for path in playerpathlist:
            if(os.path.isfile(path) and os.path.normcase(os.path.normpath(path)) != os.path.normcase(os.path.normpath(foundpath))):
                self.executablepathCombobox.addItem(path)
                if foundpath == "":
                    foundpath = path

        if foundpath != "":
            settings.beginGroup("PlayerList")
            playerpathlist.append(os.path.normcase(os.path.normpath(foundpath)))
            settings.setValue("PlayerList", list(set(os.path.normcase(os.path.normpath(path)) for path in set(playerpathlist))))
            settings.endGroup()
        return(foundpath)
コード例 #4
0
    def load_ini(self):
        settings = QSettings('config.ini', QSettings.IniFormat)

        settings.beginGroup(self.__class__.__name__)
        self.restoreGeometry(settings.value('Geometry'))
        self.splitter.restoreState(settings.value('splitter'))
        settings.endGroup()
コード例 #5
0
    def _tryToFillPlayerPath(self, playerpath, playerpathlist):
        settings = QSettings("Syncplay", "PlayerList")
        settings.beginGroup("PlayerList")
        savedPlayers = settings.value("PlayerList", [])
        if(not isinstance(savedPlayers, list)):
            savedPlayers = []
        playerpathlist = list(set(os.path.normcase(os.path.normpath(path)) for path in set(playerpathlist + savedPlayers)))
        settings.endGroup()
        foundpath = ""

        if playerpath != None and playerpath != "":
            if not os.path.isfile(playerpath):
                expandedpath = PlayerFactory().getExpandedPlayerPathByPath(playerpath)
                if expandedpath != None and os.path.isfile(expandedpath):
                    playerpath = expandedpath

            if os.path.isfile(playerpath):
                foundpath = playerpath
                self.executablepathCombobox.addItem(foundpath)

        for path in playerpathlist:
            if(os.path.isfile(path) and os.path.normcase(os.path.normpath(path)) != os.path.normcase(os.path.normpath(foundpath))):
                self.executablepathCombobox.addItem(path)
                if foundpath == "":
                    foundpath = path

        if foundpath != "":
            settings.beginGroup("PlayerList")
            playerpathlist.append(os.path.normcase(os.path.normpath(foundpath)))
            settings.setValue("PlayerList",  list(set(os.path.normcase(os.path.normpath(path)) for path in set(playerpathlist))))
            settings.endGroup()
        return(foundpath)
コード例 #6
0
ファイル: rpcUi.py プロジェクト: claudebideau/rpclib
class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle("supervisor Interface")
        self.__mutex__ = QtCore.QMutex()

        self.__log__()
        self.__setting__()
        self.createActions()
        self.createMenus()
        self.__rpc__ = None
        self.centralWidget = CentralWidget(None,
                                           (self.settings, self.__mutex__))

        self.statusBar().showMessage("Ready")

    def __setting__(self):
        print "get setting"
        self.settings = QSettings(QSettings.IniFormat, QSettings.SystemScope,
                                  '__SUPERVISOR', '__settings')
        self.settings.setFallbacksEnabled(
            False)  # File only, not registry or or.

        self.__mutex__.lock()
        self.settings.beginGroup("Main")
        self.resize(self.settings.value("size", QtCore.QSize(1024, 850)))
        self.move(self.settings.value("pos", QtCore.QPoint(50, 50)))
        self.ip = self.settings.value("ip", r'172.25.195.58')
        print "previous IP=", self.ip

        self.settings.endGroup()
        self.__mutex__.unlock()

    def __log__(self):
        self.windowlog = {}

    def rpc(self):
        # Try to connect to a board
        print self.ip
        text, ok = QtGui.QInputDialog.getText(self, self.tr("Board IP"),
                                              self.tr("IP address:"),
                                              QtGui.QLineEdit.Normal, self.ip)

        if ok and not (len(text) == 0):
            try:
                self.__rpc__ = xmlrpclib.ServerProxy("http://%s:8000" %
                                                     str(text))
                self.statusBar().showMessage("Connected...")
                self.centralWidget.setrpc(self.__rpc__)
                self.__get_level__()
                self.setCentralWidget(self.centralWidget)
                self.ip = str(text)
            except Exception, e:
                self.statusBar().showMessage("Failed to connect to %s" % text)
                sys.stderr.write(str(e))
                traceback.print_exc(file=sys.stderr)
                pass

        return
コード例 #7
0
ファイル: qdcxfer.py プロジェクト: asymworks/python-divelog
 def _writeSettings(self):
     'Write settings to the configuration'
     settings = QSettings()
     settings.beginGroup('MainWindow')
     settings.setValue('pos', self.pos())
     settings.setValue('size', self.size())
     settings.setValue('max', self.isMaximized())
     settings.setValue('file', self._logbookPath)
     settings.endGroup()
コード例 #8
0
 def getMoreState(self):
     settings = QSettings("Syncplay", "MoreSettings")
     settings.beginGroup("MoreSettings")
     morestate = unicode.lower(unicode(settings.value("ShowMoreSettings", "false")))
     settings.endGroup()
     if morestate == "true":
         return(True)
     else:
         return(False)
コード例 #9
0
 def getLastPrestratumImportDir(self):
   settings = QSettings()
   settings.beginGroup("DefaultDirs")
   dir = str(settings.value("PrestratumImportDir"))
   settings.endGroup()
   if dir:
     return dir
   else:
     return ""
コード例 #10
0
 def getMoreState(self):
     settings = QSettings("Syncplay", "MoreSettings")
     settings.beginGroup("MoreSettings")
     morestate = unicode.lower(unicode(settings.value("ShowMoreSettings", "false")))
     settings.endGroup()
     if morestate == "true":
         return(True)
     else:
         return(False)
コード例 #11
0
ファイル: GuiConfiguration.py プロジェクト: SLKTH/syncplay
 def loadLastUpdateCheckDate(self):
     settings = QSettings("Syncplay", "Interface")
     settings.beginGroup("Update")
     self.lastCheckedForUpdates = settings.value("lastChecked", None)
     if self.lastCheckedForUpdates:
         if self.config["lastCheckedForUpdates"] is not None and self.config["lastCheckedForUpdates"] is not "":
             if self.lastCheckedForUpdates > datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f"):
                 self.config["lastCheckedForUpdates"] = str(self.lastCheckedForUpdates)
         else:
             self.config["lastCheckedForUpdates"] = str(self.lastCheckedForUpdates)
コード例 #12
0
ファイル: settings.py プロジェクト: asymworks/python-divelog
def write_setting(name, value):
    '''
    Write a Name/Value Setting
    
    Writes a name/value setting to the Qt settings store.  Note that QSettings
    stores all settings as strings, so the passed value will be converted to a
    string using the python str() function prior to being stored.
    '''
    s = QSettings()
    s.beginGroup('Settings')
    s.setValue(name, value)
    s.endGroup()
コード例 #13
0
ファイル: gui.py プロジェクト: SLKTH/syncplay
 def saveSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     settings.setValue("size", self.size())
     settings.setValue("pos", self.pos())
     settings.setValue("showPlaybackButtons", self.playbackAction.isChecked())
     settings.setValue("showAutoPlayButton", self.autoplayAction.isChecked())
     settings.setValue("autoplayChecked", self.autoplayPushButton.isChecked())
     settings.setValue("autoplayMinUsers", self.autoplayThresholdSpinbox.value())
     settings.endGroup()
     settings = QSettings("Syncplay", "Interface")
     settings.beginGroup("Update")
     settings.setValue("lastChecked", self.lastCheckedForUpdates)
     settings.endGroup()
コード例 #14
0
ファイル: GuiConfiguration.py プロジェクト: SLKTH/syncplay
 def clearGUIData(self, leaveMore=False):
     settings = QSettings("Syncplay", "PlayerList")
     settings.clear()
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.clear()
     settings = QSettings("Syncplay", "MainWindow")
     settings.clear()
     settings = QSettings("Syncplay", "Interface")
     settings.beginGroup("Update")
     settings.setValue("lastChecked", None)
     settings.endGroup()
     if not leaveMore:
         settings = QSettings("Syncplay", "MoreSettings")
         settings.clear()
     self.datacleared = True
コード例 #15
0
 def _writeWindowAttributeSettings(self):
     '''
     Save window attributes as settings.
     Called when window moved, resized, or closed.
     '''
     qsettings = QSettings()
      
     qsettings.beginGroup( "mainWindow" )
     qsettings.setValue( "geometry", self.saveGeometry() )
     qsettings.setValue( "saveState", self.saveState() )
     qsettings.setValue( "maximized", self.isMaximized() )
     if not self.isMaximized() == True :
         qsettings.setValue( "pos", self.pos() )
         qsettings.setValue( "size", self.size() )
     qsettings.endGroup()
コード例 #16
0
def _writeWindowAttributeSettings(mainWindow):
    '''
    Save window attributes as settings.

    Called when window moved, resized, or closed.
    '''
    qsettings = QSettings("settings.ini", QSettings.IniFormat)

    qsettings.beginGroup("mainWindow")
    qsettings.setValue("geometry", mainWindow.saveGeometry())
    qsettings.setValue("saveState", mainWindow.saveState())
    qsettings.setValue("pos", mainWindow.pos())
    qsettings.setValue("size", mainWindow.size())

    qsettings.endGroup()
コード例 #17
0
    def _writeWindowAttributeSettings(self):
        '''
    Save window attributes as settings.
    
    Called when window moved, resized, or closed.
    '''
        qsettings = QSettings()

        qsettings.beginGroup("mainWindow")
        qsettings.setValue("geometry", self.saveGeometry())
        qsettings.setValue("saveState", self.saveState())
        qsettings.setValue("maximized", self.isMaximized())
        if not self.isMaximized() == True:
            qsettings.setValue("pos", self.pos())
            qsettings.setValue("size", self.size())
        qsettings.endGroup()
コード例 #18
0
ファイル: settings.py プロジェクト: asymworks/python-divelog
def read_setting(name, default=None):
    '''
    Read a Name/Value Setting
    
    Reads a name/value setting from the Qt settings store.  If the value does
    not exist, the default parameter is returned.  Note that QSettings stores
    all settings as strings, so the caller is responsible for casting the 
    returned value into the proper Python type.
    '''
    s = QSettings()
    s.beginGroup('Settings')
    v = s.value(name)
    s.endGroup()
    
    if v is None:
        return default
    return v
コード例 #19
0
def _readAndApplyWindowAttributeSettings(mainWindow):
    '''
    Read window attributes from settings,
    using current attributes as defaults (if settings not exist.)

    Called at QMainWindow initialization, before show().
    '''
    qsettings = QSettings("settings.ini", QSettings.IniFormat)

    qsettings.beginGroup("mainWindow")

    # No need for toPoint, etc. : PySide converts types
    mainWindow.restoreGeometry(qsettings.value("geometry", mainWindow.saveGeometry()))
    mainWindow.restoreState(qsettings.value("saveState", mainWindow.saveState()))
    mainWindow.move(qsettings.value("pos", mainWindow.pos()))
    mainWindow.resize(qsettings.value("size", mainWindow.size()))

    qsettings.endGroup()
コード例 #20
0
 def _readAndApplyWindowAttributeSettings(self):
     '''
     Read window attributes from settings,
     using current attributes as defaults (if settings not exist.)
     Called at QMainWindow initialization, before show().
     '''
     qsettings = QSettings()
      
     qsettings.beginGroup( "mainWindow" )
      
     # No need for toPoint, etc. : PySide converts types
     self.restoreGeometry(qsettings.value( "geometry", self.saveGeometry()))
     self.restoreState(qsettings.value( "saveState", self.saveState()))
     self.move(qsettings.value( "pos", self.pos()))
     self.resize(qsettings.value( "size", self.size()))
     if qsettings.value( "maximized", self.isMaximized()) :
         self.showMaximized()
      
     qsettings.endGroup()
コード例 #21
0
    def _readAndApplyWindowAttributeSettings(self):
        '''
    Read window attributes from settings,
    using current attributes as defaults (if settings not exist.)
    
    Called at QMainWindow initialization, before show().
    '''
        qsettings = QSettings()

        qsettings.beginGroup("mainWindow")

        # No need for toPoint, etc. : PySide converts types
        self.restoreGeometry(qsettings.value("geometry", self.saveGeometry()))
        self.restoreState(qsettings.value("saveState", self.saveState()))
        self.move(qsettings.value("pos", self.pos()))
        self.resize(qsettings.value("size", self.size()))
        if qsettings.value("maximized", self.isMaximized()):
            self.showMaximized()

        qsettings.endGroup()
コード例 #22
0
ファイル: gui.py プロジェクト: SLKTH/syncplay
 def loadSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     self.resize(settings.value("size", QSize(700, 500)))
     self.move(settings.value("pos", QPoint(200, 200)))
     if settings.value("showPlaybackButtons", "false") == "true":
         self.playbackAction.setChecked(True)
         self.updatePlaybackFrameVisibility()
     if settings.value("showAutoPlayButton", "false") == "true":
         self.autoplayAction.setChecked(True)
         self.updateAutoplayVisibility()
     if settings.value("autoplayChecked", "false") == "true":
         self.updateAutoPlayState(True)
         self.autoplayPushButton.setChecked(True)
     self.autoplayThresholdSpinbox.blockSignals(True)
     self.autoplayThresholdSpinbox.setValue(int(settings.value("autoplayMinUsers", 2)))
     self.autoplayThresholdSpinbox.blockSignals(False)
     settings.endGroup()
     settings = QSettings("Syncplay", "Interface")
     settings.beginGroup("Update")
     self.lastCheckedForUpdates = settings.value("lastChecked", None)
コード例 #23
0
ファイル: qdcxfer.py プロジェクト: asymworks/python-divelog
 def _readSettings(self):
     'Read main window settings from the configuration'
     settings = QSettings()
     settings.beginGroup('MainWindow')
     max = settings.value('max')
     size = settings.value('size')
     pos = settings.value('pos')
     file = settings.value('file')
     settings.endGroup()
     
     # Size and Position the Main Window
     if size is not None:
         self.resize(size)
     if pos is not None:
         self.move(pos)
         
     # HAX because QVariant is not exposed in PySide and the default
     # coercion to string is just stupid
     if max is not None and (max == 'true'):
         self.showMaximized()
     
     # Open the Logbook
     if file is not None:
         self._openLogbook(file)
コード例 #24
0
ファイル: gui.py プロジェクト: blaenk/syncplay
 def loadSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     self.resize(settings.value("size", QSize(700, 500)))
     self.move(settings.value("pos", QPoint(200, 200)))
     settings.endGroup()
コード例 #25
0
ファイル: gui.py プロジェクト: blaenk/syncplay
 def saveSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     settings.setValue("size", self.size())
     settings.setValue("pos", self.pos())
     settings.endGroup()
コード例 #26
0
ファイル: gui.py プロジェクト: blaenk/syncplay
 def saveMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     settings.setValue("mediadir", self.mediadirectory)
     settings.endGroup()
コード例 #27
0
ファイル: gui.py プロジェクト: blaenk/syncplay
 def loadMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     self.mediadirectory = settings.value("mediadir", "")
     settings.endGroup()
コード例 #28
0
class AddPresetDialog(QDialog):
    def __init__(self, parent=None):
        super(AddPresetDialog, self).__init__(parent)

        self.setWindowTitle(self.tr("Add IMAP Server Preset"))
        self.resize(388, 125)
        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.setGeometry(QRect(184, 80, 181, 32))
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setCenterButtons(False)
        self.save_btn = QPushButton("&Save")
        self.save_btn.setDefault(True)
        self.save_btn.setEnabled(False)
        self.cancel_btn = QPushButton(self.tr("&Cancel"))
        self.cancel_btn.setCheckable(True)
        self.cancel_btn.setAutoDefault(False)

        self.buttonBox.addButton(self.save_btn, QDialogButtonBox.AcceptRole)
        self.buttonBox.addButton(self.cancel_btn, QDialogButtonBox.RejectRole)

        self.preset_name_le = QLineEdit(self)
        self.preset_name_le.setGeometry(QRect(134, 12, 231, 20))
        self.lb_name = QLabel(self)
        self.lb_name.setGeometry(QRect(14, 16, 58, 14))
        self.lb_name.setText(self.tr("Name"))
        self.server_address_le = QLineEdit(self)
        self.server_address_le.setGeometry(QRect(134, 45, 231, 20))
        self.lb_server = QLabel(self)
        self.lb_server.setGeometry(QRect(14, 48, 81, 16))
        self.lb_server.setText(self.tr("IMAP Server"))
        self.lb_info = QLabel(self)
        self.lb_info.setGeometry(QRect(14, 90, 161, 16))
        self.lb_info.setText(self.tr("(SSL is always on.)"))

        self.buttonBox.accepted.connect(self.act_save_preset)
        self.buttonBox.rejected.connect(self.reject)

        self.init_settings()

        self.settings.beginGroup("Server Presets")
        self.presetNameList = []
        for preset in self.settings.allKeys():
            self.presetNameList.append(preset)
        self.settings.endGroup()

        self.preset_name_le.textChanged.connect(self.check_preset_name_availability)
        self.server_address_le.textChanged.connect(self.check_server_address)

    # ---------------------------------------------------------------------
    def init_settings(self):
        QCoreApplication.setOrganizationName("erdinc.me")
        QCoreApplication.setOrganizationDomain("erdinc.me")
        QCoreApplication.setApplicationName("IMAPLinkParser")
        self.settings = QSettings()
        # self.settings.clear()

    # ---------------------------------------------------------------------
    @Slot()
    def act_save_preset(self):
        try:
            self.settings.beginGroup("Server Presets")
            self.settings.setValue(self.preset_name_le.text(), self.server_address_le.text())
            self.settings.endGroup()
        except:
            self.reject()
        self.accept()

    # ---------------------------------------------------------------------
    @Slot(unicode)
    def check_preset_name_availability(self, text):
        if text in self.presetNameList:
            self.save_btn.setEnabled(False)
            self.lb_info.setText('<p style="color:red;">Preset name exists!')
        else:
            if self.server_address_le.text() and self.preset_name_le.text():
                self.save_btn.setEnabled(True)
                self.lb_info.setText(self.tr("(SSL is always on.)"))
            else:
                self.save_btn.setEnabled(False)
                self.lb_info.setText(self.tr("(SSL is always on.)"))

    # ---------------------------------------------------------------------
    @Slot(unicode)
    def check_server_address(self):
        if self.server_address_le.text():
            preset = self.preset_name_le.text()
            if preset and preset not in self.presetNameList:
                self.save_btn.setEnabled(True)
        else:
            self.save_btn.setEnabled(False)
コード例 #29
0
 def saveLastPrestratumImportDir(self, dir):
   settings = QSettings()
   settings.beginGroup("DefaultDirs")
   settings.setValue("PrestratumImportDir", dir)
   settings.endGroup()
コード例 #30
0
 def saveMoreState(self, morestate):
     settings = QSettings("Syncplay", "MoreSettings")
     settings.beginGroup("MoreSettings")
     settings.setValue("ShowMoreSettings", morestate)
     settings.endGroup()
コード例 #31
0
 def saveMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     settings.setValue("mediadir", self.mediadirectory)
     settings.endGroup()
コード例 #32
0
 def loadMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     self.mediadirectory = settings.value("mediadir", "")
     settings.endGroup()
コード例 #33
0
 def saveSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     settings.setValue("size", self.size())
     settings.setValue("pos", self.pos())
     settings.endGroup()
コード例 #34
0
 def writeWindowSettings(self):
   settings = QSettings()
   settings.beginGroup("LayerEditor")
   settings.setValue("geometry", self.saveGeometry())
   settings.endGroup()
コード例 #35
0
 def saveMoreState(self, morestate):
     settings = QSettings("Syncplay", "MoreSettings")
     settings.beginGroup("MoreSettings")
     settings.setValue("ShowMoreSettings", morestate)
     settings.endGroup()
コード例 #36
0
ファイル: gui05.py プロジェクト: yysynergy/pparser
class MainWindow(QMainWindow):
    def __init__(self, datta):
        QMainWindow.__init__(self)
        self.setWindowTitle('Project Parser')
        appIcon = QIcon('search.png')
        self.setWindowIcon(appIcon)
        self.viewPortBL = QDesktopWidget().availableGeometry().topLeft()
        self.viewPortTR = QDesktopWidget().availableGeometry().bottomRight()
        self.margin = int(QDesktopWidget().availableGeometry().width()*0.1/2)
        self.shirina = QDesktopWidget().availableGeometry().width() - self.margin*2
        self.visota = QDesktopWidget().availableGeometry().height() - self.margin*2
        self.setGeometry(self.viewPortBL.x() + self.margin, self.viewPortBL.y() + self.margin,
                         self.shirina, self.visota)
        # statusbar
        self.myStatusBar = QStatusBar()
        self.setStatusBar(self.myStatusBar)
        
        #lower long layout
        self.lowerLong = QFrame()
        self.detailsLabel = QLabel()
        self.skillsLabel = QLabel()
        self.urlLabel = QLabel()
        self.locationLabel = QLabel()
        self.skillsLabel.setText('skills')
        self.detailsLabel.setWordWrap(True)
        self.la = QVBoxLayout()
        self.la.addWidget(self.detailsLabel)
        self.la.addWidget(self.skillsLabel)
        self.la.addWidget(self.urlLabel)
        self.la.addWidget(self.locationLabel)
        self.lowerLong.setLayout(self.la)

        # table
        self.source_model = MyTableModel(self, datta, ['Id', 'Date', 'Title'])
        self.proxy_model = myTableProxy(self)
        self.proxy_model.setSourceModel(self.source_model)
        self.proxy_model.setDynamicSortFilter(True)
        self.table_view = QTableView()
        self.table_view.setModel(self.proxy_model)
        self.table_view.setAlternatingRowColors(True)
        self.table_view.resizeColumnsToContents()
        self.table_view.resizeRowsToContents()
        self.table_view.horizontalHeader().setStretchLastSection(True)
        self.table_view.setSortingEnabled(True)
        self.table_view.sortByColumn(2, Qt.AscendingOrder)

        # events
        self.selection = self.table_view.selectionModel()
        self.selection.selectionChanged.connect(self.handleSelectionChanged)
        #DO NOT use CreateIndex() method, use index()
        index = self.proxy_model.index(0,0)
        self.selection.select(index, QItemSelectionModel.Select)
        
        self.upperLong = self.table_view  

        # right side widgets
        self.right = QFrame()
        self.la1 = QVBoxLayout()
        self.btnDownload = QPushButton('Download data')
        self.btnDownload.clicked.connect(self.download)
        self.myButton = QPushButton('Show Skillls')
        self.myButton.clicked.connect(self.showAllSkills)
        self.btnSearchByWord = QPushButton('Search by word(s)')
        self.btnSearchByWord.clicked.connect(self.onSearchByWord)
        self.btnResetFilter= QPushButton('Discard Filter')
        self.btnResetFilter.clicked.connect(self.discardFilter)
        self.btnCopyURL = QPushButton('URL to Clipboard')
        self.btnCopyURL.clicked.connect(self.copyToClipboard)
        self.btnExit = QPushButton('Exit')
        self.btnExit.clicked.connect(lambda: sys.exit())
        self.dateTimeStamp = QLabel()
        self.la1.addWidget(self.btnDownload)
        self.la1.addSpacing(10)
        self.la1.addWidget(self.myButton)
        self.la1.addSpacing(10)
        self.la1.addWidget(self.btnSearchByWord)
        self.la1.addSpacing(10)
        self.la1.addWidget(self.btnResetFilter)
        self.la1.addSpacing(10)
        self.la1.addWidget(self.btnCopyURL)
        self.la1.addSpacing(70)
        self.la1.addWidget(self.btnExit)
        self.la1.addStretch(stretch=0)
        self.la1.addWidget(self.dateTimeStamp)
        self.right.setLayout(self.la1)
        self.right.setFrameShape(QFrame.StyledPanel)

        # splitters
        self.horiSplit = QSplitter(Qt.Vertical)
        self.horiSplit.addWidget(self.upperLong)
        self.horiSplit.addWidget(self.lowerLong)
        self.horiSplit.setSizes([self.visota/2, self.visota/2])
        self.vertiSplit = QSplitter(Qt.Horizontal)
        self.vertiSplit.addWidget(self.horiSplit)
        self.vertiSplit.addWidget(self.right)
        self.vertiSplit.setSizes([self.shirina*3/4, self.shirina*1/4])
        self.setCentralWidget(self.vertiSplit)
        
        self.settings = QSettings('elance.ini', QSettings.IniFormat)
        self.settings.beginGroup('DATE_STAMP')
        self.dateTimeStamp.setText('Data actuality: %s' % self.settings.value('date/time'))
        self.settings.endGroup()
        self.statusText = ''

    def handleSelectionChanged(self, selected, deselected):
        for index in selected.first().indexes():
            #print('Row %d is selected' % index.row())
            ind = index.model().mapToSource(index)
            desc = ind.model().mylist[ind.row()]['Description']
            self.detailsLabel.setText(desc)
            skills = ', '.join(ind.model().mylist[ind.row()]['Skills']).strip()
            self.skillsLabel.setText(skills)
            url = ind.model().mylist[ind.row()]['URL']
            self.urlLabel.setText(url)
            location = ind.model().mylist[ind.row()]['Location']
            self.locationLabel.setText(location)
    
    def showAllSkills(self):
        listSkills = []
        for elem in self.source_model.mylist:
            listSkills += elem['Skills']
        allSkills = Counter(listSkills)
        tbl = MyTableModel(self, allSkills.items(), ['Skill', 'Freq'])
        win = skillsWindow(tbl, self.table_view)
        win.exec_()
    
    def discardFilter(self):
        self.table_view.model().emit(SIGNAL("modelAboutToBeReset()"))
        self.table_view.model().criteria = {}
        self.table_view.model().emit(SIGNAL("modelReset()"))
        self.table_view.resizeRowsToContents()
        
    def download(self):
        self.btnDownload.setDisabled(True)
        self.statusLabel = QLabel('Connecting')
        self.progressBar = QProgressBar()
        self.progressBar.setMinimum(0)
        self.progressBar.setMaximum(100)
        self.myStatusBar.addWidget(self.statusLabel, 2)
        self.myStatusBar.addWidget(self.progressBar, 1)
        self.progressBar.setValue(1)
        self.settings.beginGroup('URLS')
        initialLink = self.settings.value('CategoriesDetailed/VahaSelected/InitialLink')
        pagingLink = self.settings.value('CategoriesDetailed/VahaSelected/PagingLink')
        self.settings.endGroup()
        downloader = Downloader(initialLink, pagingLink, 25, 5)
        downloader.messenger.downloadProgressChanged.connect(self.onDownloadProgressChanged)
        downloader.messenger.downloadComplete.connect(self.onDownloadComplete)
        downloader.download()
    
    def onDownloadComplete(self):
        #QMessageBox.information(self, 'Download complete', 'Download complete!', QMessageBox.Ok)
        self.table_view.model().emit(SIGNAL("modelAboutToBeReset()"))
        self.settings.beginGroup('DATE_STAMP')
        self.settings.setValue('date/time', time.strftime('%d-%b-%Y, %H:%M:%S'))
        self.dateTimeStamp.setText('Data actuality: %s' % self.settings.value('date/time'))
        self.settings.endGroup()
        with open("elance.json") as json_file:
            jobDB = json.load(json_file)
        for elem in jobDB:
            words = nltk.tokenize.regexp_tokenize(elem['Title'].lower(), r'\w+')
            elem['Tokens'] = words
            elem['Skills'] = [t.strip() for t in elem['Skills'].split(',')]
        self.source_model.mylist = jobDB
        self.table_view.model().emit(SIGNAL("modelReset()"))
        self.btnDownload.setEnabled(True)
        self.myStatusBar.removeWidget(self.statusLabel)
        self.myStatusBar.removeWidget(self.progressBar)
        self.myStatusBar.showMessage(self.statusText, timeout = 5000)
                
    
    def onDownloadProgressChanged(self, stata):
        self.progressBar.setValue(stata[2])
        #text = 'Processed records{:5d} of{:5d}'.format(percentage[0], percentage[1])
        bajtikov = '{:,}'.format(stata[5])
        self.statusText = 'Processed page{:4d} of{:4d}. \
               Job entries{:5d} of{:5d}. \
               Downloaded{:>12s} Bytes'.format(stata[3], stata[4],
                                              stata[0], stata[1],
                                              bajtikov)
        self.statusLabel.setText(self.statusText)
        
    def copyToClipboard(self):
        clipboard = QApplication.clipboard()
        clipboard.setText(self.urlLabel.text())
        self.myStatusBar.showMessage(self.urlLabel.text(), timeout = 3000)
    
    def onSearchByWord(self):
        text, ok = QInputDialog.getText(self, 'Search the base by word(s)', 'Enter your keyword/phrase to search for:')
        if ok:
            words = [t.strip() for t in nltk.tokenize.regexp_tokenize(text.lower(), r'\w+')]
            self.table_view.model().emit(SIGNAL("modelAboutToBeReset()"))
            self.table_view.model().criteria = {'Description' : words}
            self.table_view.model().emit(SIGNAL("modelReset()"))
コード例 #37
0
 def readWindowSettings(self):
   settings = QSettings()
   settings.beginGroup("LayerEditor")
   self.restoreGeometry(settings.value("geometry"))
   settings.endGroup()
コード例 #38
0
 def loadSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     self.resize(settings.value("size", QSize(700, 500)))
     self.move(settings.value("pos", QPoint(200, 200)))
     settings.endGroup()