Example #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
    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()
Example #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)
    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()
Example #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)
Example #6
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,
                                  '__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
Example #7
0
 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()
Example #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)
Example #9
0
 def getLastPrestratumImportDir(self):
   settings = QSettings()
   settings.beginGroup("DefaultDirs")
   dir = str(settings.value("PrestratumImportDir"))
   settings.endGroup()
   if dir:
     return dir
   else:
     return ""
Example #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)
Example #11
0
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()
Example #12
0
 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()
Example #13
0
 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
Example #14
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()
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()
Example #16
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()
Example #17
0
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
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()
Example #19
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()
Example #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()
Example #21
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)))
     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)
Example #22
0
 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)
Example #23
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()
Example #24
0
 def saveSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     settings.setValue("size", self.size())
     settings.setValue("pos", self.pos())
     settings.endGroup()
Example #25
0
 def saveMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     settings.setValue("mediadir", self.mediadirectory)
     settings.endGroup()
Example #26
0
 def loadMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     self.mediadirectory = settings.value("mediadir", "")
     settings.endGroup()
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)
Example #28
0
 def saveLastPrestratumImportDir(self, dir):
   settings = QSettings()
   settings.beginGroup("DefaultDirs")
   settings.setValue("PrestratumImportDir", dir)
   settings.endGroup()
Example #29
0
 def saveMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     settings.setValue("mediadir", self.mediadirectory)
     settings.endGroup()
Example #30
0
 def saveMoreState(self, morestate):
     settings = QSettings("Syncplay", "MoreSettings")
     settings.beginGroup("MoreSettings")
     settings.setValue("ShowMoreSettings", morestate)
     settings.endGroup()
Example #31
0
 def loadMediaBrowseSettings(self):
     settings = QSettings("Syncplay", "MediaBrowseDialog")
     settings.beginGroup("MediaBrowseDialog")
     self.mediadirectory = settings.value("mediadir", "")
     settings.endGroup()
Example #32
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()
 def writeWindowSettings(self):
   settings = QSettings()
   settings.beginGroup("LayerEditor")
   settings.setValue("geometry", self.saveGeometry())
   settings.endGroup()
Example #34
0
 def saveMoreState(self, morestate):
     settings = QSettings("Syncplay", "MoreSettings")
     settings.beginGroup("MoreSettings")
     settings.setValue("ShowMoreSettings", morestate)
     settings.endGroup()
Example #35
0
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()"))
 def readWindowSettings(self):
   settings = QSettings()
   settings.beginGroup("LayerEditor")
   self.restoreGeometry(settings.value("geometry"))
   settings.endGroup()
Example #37
0
 def saveSettings(self):
     settings = QSettings("Syncplay", "MainWindow")
     settings.beginGroup("MainWindow")
     settings.setValue("size", self.size())
     settings.setValue("pos", self.pos())
     settings.endGroup()