예제 #1
0
 def clear(self, period=0):
     """
     Public slot to clear the complete history.
     
     @param period history period in milliseconds to be cleared (integer)
     """
     if period == 0:
         self.__history = []
         self.historyReset.emit()
     else:
         breakMS = QDateTime.currentMSecsSinceEpoch() - period
         while self.__history and \
             (QDateTime(self.__history[0].dateTime).toMSecsSinceEpoch() >
              breakMS):
             itm = self.__history.pop(0)
             self.entryRemoved.emit(itm)
     self.__lastSavedUrl = ""
     self.__saveTimer.changeOccurred()
     self.__saveTimer.saveIfNeccessary()
     self.historyCleared.emit()
예제 #2
0
    def __init__(self, apiKey, fairUse=True, parent=None):
        """
        Constructor
        
        @param apiKey API key to be used
        @type str
        @param fairUse flag indicating to follow the fair use policy
        @type bool
        @param parent reference to the parent object
        @type QObject
        """
        super(SafeBrowsingAPIClient, self).__init__(parent)

        self.__apiKey = apiKey
        self.__fairUse = fairUse

        self.__nextRequestNoSoonerThan = QDateTime()
        self.__failCount = 0

        self.__lookupApiCache = {}
예제 #3
0
    def refresh(self):
        '''
        当时间每隔1s,LCD上信息会刷新一下的。
        '''
        startDate = QDateTime.currentMSecsSinceEpoch()
        # 将其转换成当前时间到1970-01-01T00:00:00世界协调时间以来的毫秒数

        endDate = QDateTime(QDate(2020, 2, 4), QTime(0, 0, 0)).toMSecsSinceEpoch()
        # 返回2020年2月4日0:0:0自1970-01-01T00:00:00.000世界协调时间以来的毫秒数

        interval = endDate - startDate
        # 距离冬奥会还有多少时间

        if interval > 0:
            days = interval // (24 * 60 * 60 * 1000)
            hour = (interval - days * 24 * 60 * 60 * 1000) // (60 * 60 * 1000)
            min = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000) // (60 * 1000)
            sec = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000) // 1000
            intervals = str(days) + ':' + str(hour) + ':' + str(min) + ':' + str(sec)
            self.lcd.display(intervals)
예제 #4
0
class MainLcd:
    QDATETIME_FORMATTER = QDateTime(1, 1, 1, 0, 0)

    def __init__(self, main_qlcd: QLCDNumber, registry=None):
        self.qlcd = main_qlcd
        self.leading: TimerType = TimerType.LEARN if not registry else registry.main_lcd_leading
        self.current_time = 0 if not registry else registry.main_lcd_current_time

    def show(self, duration, from_timer: TimerType):
        self.current_time += duration if from_timer == self.leading else -duration
        if self.current_time < 0:
            self.leading = from_timer
            self.current_time = abs(self.current_time)
        current_qdatetime = self.QDATETIME_FORMATTER.addMSecs(
            self.current_time)
        text = current_qdatetime.toString('hh:mm:ss.zzz')
        if (duration % 500) == 0:
            text = text[:8] + ' ' + text[9:]
        text = self.leading.value + " " + text
        self.qlcd.display(text)
예제 #5
0
    def __init__(self, memo_data: StockMemoData, parent: QWidget = None):
        self.__memo_data = memo_data
        super(StockMemoEditor, self).__init__(parent)

        # The filter of left list
        # self.__filter_identity: str = ''
        # self.__filter_datetime: datetime.datetime = None

        # The stock that selected by combobox or outer setting
        self.__current_stock = None

        # The current index of editing memo
        # Not None: Update exists
        # None: Create new
        self.__current_index = None

        # The memo list that displaying in the left list
        self.__current_memos: pd.DataFrame = None

        self.__observers = []

        self.__sas = self.__memo_data.get_sas(
        ) if self.__memo_data is not None else None
        self.__memo_record = self.__memo_data.get_memo_record(
        ) if self.__memo_data is not None else None

        data_utility = self.__sas.get_data_hub_entry().get_data_utility(
        ) if self.__sas is not None else None
        self.__combo_stock = SecuritiesSelector(data_utility)
        self.__table_memo_index = EasyQTableWidget()

        self.__datetime_time = QDateTimeEdit(QDateTime().currentDateTime())
        self.__line_brief = QLineEdit()
        self.__text_record = QTextEdit()

        self.__button_new = QPushButton('New')
        self.__button_apply = QPushButton('Save')
        self.__button_delete = QPushButton('Delete')

        self.init_ui()
        self.config_ui()
예제 #6
0
    def __init__(self, taskID=None, taskName=None, taskMode=None, taskType=None, project=None, organisation=None,
                 duetime={}, duedate={}, details={}):
        super(Task, self).__init__()

        self.taskID     = taskID
        self.taskName   = taskName
        self.taskMode = taskMode
        self.taskType = taskType
        self.project    = project
        self.details    = details
        self.organisation = organisation

        self.duetime    = QTime(duetime['hour'], duetime['minute'], duetime['second'])
        self.duedate    = QDate(duedate['year'], duedate['month'], duedate['day'])
        self.endDate    = QDateTime(self.duedate, self.duetime)

        self.update()

        format = self.countter_format()
        self.timer.timeout.connect(self.update)
        self.timer.start(format)
예제 #7
0
    def __applyRules(self):
        """
        Private method to apply the cookie rules.
        """
        cookiesList = self.allCookies()
        changed = False

        for index in range(len(cookiesList) - 1, -1, -1):
            cookie = cookiesList[index]
            if self.__isOnDomainList(self.__exceptionsBlock, cookie.domain()):
                del cookiesList[index]
                changed = True
            elif self.__isOnDomainList(self.__exceptionsAllowForSession,
                                       cookie.domain()):
                cookie.setExpirationDate(QDateTime())
                changed = True

        if changed:
            self.setAllCookies(cookiesList)
            self.__saveTimer.changeOccurred()
            self.cookiesChanged.emit()
예제 #8
0
def update_date_time_input(datetime_input: DateTimeInput,
                           new: DateTimeInput) -> None:
    # noinspection PyTypeChecker
    widget: QDateTimeEdit = get_dwidgets()[id(datetime_input)]
    widget.blockSignals(True)

    if datetime_input.read_only != new.read_only:
        widget.setReadOnly(new.read_only)

    if datetime_input.value != new.value:
        widget.setDateTime(
            QDateTime(new.value.year, new.value.month, new.value.day,
                      new.value.hour, new.value.minute, 0, 0))

    if datetime_input.on_input != new.on_input:
        widget.dateTimeChanged.disconnect()
        widget.dateTimeChanged[QDateTime].connect(
            make_action_catcher(
                lambda qdtm: datetime_input.on_input(qdtm.toPyDateTime())))

    widget.blockSignals(False)
예제 #9
0
    def unit_ui(self):
        self.setWindowTitle('不同风格的时间格式')
        self.setWindowIcon(QIcon(QPixmap('../images/python.png')))
        self.resize(800, 500)

        layout = QVBoxLayout()
        self.setLayout(layout)
        date_time1 = QDateTimeEdit(QDateTime.currentDateTime())

        # 设置一些属性
        date_time1.setMaximumDate(QDate.currentDate().addDays(365))
        date_time1.setMinimumDateTime(QDateTime(1998, 7, 19, 12, 45, 36))

        date_time2 = QDateTimeEdit(QDateTime.currentDateTime())

        # 将日期编辑栏结合日历控制
        date_time2.setCalendarPopup(True)

        date_time3 = QDateTimeEdit(QDateTime.currentDateTime())
        date_time4 = QDateTimeEdit(QDateTime.currentDateTime())

        date_time1.setDisplayFormat("yyyy-MM-dd HH:dd:ss")
        date_time2.setDisplayFormat("yyyy/MM/dd HH-dd-ss")
        date_time3.setDisplayFormat("yyyy.MM.dd")
        date_time4.setDisplayFormat("HH:dd:ss")

        # 获取时间编辑栏的属性
        button = QPushButton('获取第一行时间')
        layout.addWidget(button)
        button.clicked.connect(lambda: self.get_time(date_time1))

        layout.addWidget(date_time1)
        layout.addWidget(date_time2)
        layout.addWidget(date_time3)
        layout.addWidget(date_time4)

        # 有关日期的三个事件
        date_time1.timeChanged.connect(self.time_change)
        date_time1.dateChanged.connect(self.data_change)
        date_time1.dateTimeChanged.connect(self.datetime_change)
예제 #10
0
    def __parseUnixTime(self, monthAbbreviation, day, yearOrTime, urlInfo):
        """
        Private method to parse a Unix date and time indication modifying
        the given URL info object.
        

        Date time strings in Unix-style directory listings typically
        have one of these formats:
        <ul>
          <li>"Nov 23 02:33" (month name, day of month, time)</li>
          <li>"May 26  2005" (month name, day of month, year)</li>
        </ul>
        
        @param monthAbbreviation abbreviation of the month name (string)
        @param day day of the month (string)
        @param yearOrTime string giving the year or a time (string)
        @param urlInfo reference to the URL info object (E5UrlInfo)
        @exception FtpDirLineParserError Raised if the month abbreviation is
            not recognized.
        """
        try:
            month = FtpDirLineParser.MonthnamesNumbers[
                monthAbbreviation.lower()]
        except KeyError:
            raise FtpDirLineParserError(
                "illegal month abbreviation '{0}'".format(
                    monthAbbreviation))
        day = int(day)
        if ':' in yearOrTime:
            year = QDate.currentDate().year()
            hour, minute = yearOrTime.split(':')
            hour = int(hour)
            minute = int(minute)
        else:
            year = int(yearOrTime)
            hour = 0
            minute = 0
        
        lastModified = QDateTime(QDate(year, month, day), QTime(hour, minute))
        urlInfo.setLastModified(lastModified)
예제 #11
0
    def set_rows(self, rows):
        for idx, row in enumerate(rows):
            items = []
            for column, item in row.items():
                standard_item = QStandardItem()

                if item is None:
                    font = QFont()
                    font.setItalic(True)
                    font.setBold(True)
                    standard_item.setData(QVariant("NULL"), Qt.EditRole)
                    standard_item.setFont(font)
                elif isinstance(item, datetime.datetime):
                    standard_item.setData(QDateTime(item), Qt.EditRole)
                elif isinstance(item, datetime.date):
                    standard_item.setData(QDate(item), Qt.EditRole)
                elif isinstance(item, str):
                    standard_item.setData(QVariant(item), Qt.EditRole)
                else:
                    standard_item.setData(QVariant(item), Qt.EditRole)
                items.append(standard_item)
            self.model.insertRow(idx, items)
예제 #12
0
 def __parseDate(self, variableName, parent):
     """
     Private method to parse a date.
     
     @param variableName name of the variable to be parsed
     @type str
     @param parent reference to the dictionary to insert the result into
     @type dict
     """
     msec, = struct.unpack(">d", self.__data.read(8))
     # double, big-endian
     # DateObject: Milliseconds Count From Dec. 1, 1969
     msec -= self.EpochCorrectionMsecs   # correct for Unix epoch
     minOffset, = struct.unpack(">h", self.__data.read(2))
     # short, big-endian
     offset = minOffset // 60    # offset in hours
     # Timezone: UTC + Offset
     value = QDateTime()
     value.setMSecsSinceEpoch(msec)
     value.setOffsetFromUtc(offset * 3600)
     parent[variableName] = ("date",
                             value.toString("yyyy-MM-dd HH:mm:ss t"))
예제 #13
0
    def testDateTimeTypes(self):
        create_sql = f'CREATE TABLE "{self.schemaName}"."date_time_type" ( ' \
                     '"id" INTEGER NOT NULL PRIMARY KEY,' \
                     '"date_field" DATE,' \
                     '"time_field" TIME,' \
                     '"datetime_field" TIMESTAMP)'
        insert_sql = f'INSERT INTO "{self.schemaName}"."date_time_type" ("id", "date_field", "time_field", "datetime_field") ' \
                     'VALUES (?, ?, ?, ?)'
        insert_args = [[1, '2004-03-04', '13:41:52', '2004-03-04 13:41:52']]
        self.prepareTestTable('date_time_type', create_sql, insert_sql,
                              insert_args)

        vl = self.createVectorLayer(
            f'table="{self.schemaName}"."date_time_type" sql=',
            'testdatetimes')

        fields = vl.dataProvider().fields()
        self.assertEqual(
            fields.at(fields.indexFromName('date_field')).type(),
            QVariant.Date)
        self.assertEqual(
            fields.at(fields.indexFromName('time_field')).type(),
            QVariant.Time)
        self.assertEqual(
            fields.at(fields.indexFromName('datetime_field')).type(),
            QVariant.DateTime)

        f = next(vl.getFeatures(QgsFeatureRequest()))

        date_idx = vl.fields().lookupField('date_field')
        self.assertIsInstance(f.attributes()[date_idx], QDate)
        self.assertEqual(f.attributes()[date_idx], QDate(2004, 3, 4))
        time_idx = vl.fields().lookupField('time_field')
        self.assertIsInstance(f.attributes()[time_idx], QTime)
        self.assertEqual(f.attributes()[time_idx], QTime(13, 41, 52))
        datetime_idx = vl.fields().lookupField('datetime_field')
        self.assertIsInstance(f.attributes()[datetime_idx], QDateTime)
        self.assertEqual(f.attributes()[datetime_idx],
                         QDateTime(QDate(2004, 3, 4), QTime(13, 41, 52)))
예제 #14
0
    def dataChanged(self, top_left, bottom_right, roles): #pylint: disable=invalid-name
        """Respond to a RaceTableModel data change by updating input widgets with current values."""
        del top_left, bottom_right, roles

        if self.race_table_model.reference_clock_is_enabled():
            self.reference_clock_radiobutton.click()

        # If there's a reference datetime set up, populate the controls with it.
        if self.race_table_model.reference_clock_has_datetime():
            reference_datetime = self.race_table_model.get_reference_clock_datetime()

            # Make our own combined string, because I haven't found a QDateTime format that I like.
            # Guess I'll keep looking...this looks really hokey.
            datetime_string = reference_datetime.toString(defaults.REFERENCE_CLOCK_DATETIME_FORMAT)

            self.reference_datetime_label.setText(datetime_string)
        else: # Otherwise, just use the race day's date, time zero.
            reference_datetime = QDateTime(QDate.currentDate())

            self.reference_datetime_label.setText('Reference clock not set up')

        self.datetime_datetimeedit.setDateTime(reference_datetime)
예제 #15
0
    def data(self, index: QModelIndex, role: Optional[int] = None) -> Any:
        """Return the data at the row of the given *index* and for the
        specified *role*

        :param index: Used for specifying the model's row, the column is \
        ignored
        :param role: Indicates which type of data the view requested
        :return: The data the view requested at the specified *row* for the \
        given *role*
        """
        # ignore out of range data requests
        if 0 <= index.row() < len(self._messages):
            # pylint: disable=unsubscriptable-object
            message = self._messages[index.row()]
            # pylint: enable=unsubscriptable-object
            if role == ItemRole.TIME:
                return QDateTime(message.time)
            if role == ItemRole.SENDER:
                return message.sender
            if role == ItemRole.CONTENTS:
                return message.contents
        return None
예제 #16
0
    def __parseWindowsTime(self, date, time, urlInfo):
        """
        Private method to parse a Windows date and time indication modifying
        the given URL info object.

        Date time strings in Windows-style directory listings typically
        have the format "10-23-12 03:25PM" (month-day_of_month-two_digit_year,
        hour:minute, am/pm).
        
        @param date date string (string)
        @param time time string (string)
        @param urlInfo reference to the URL info object (E5UrlInfo)
        @exception FtpDirLineParserError Raised if either of the strings is not
            recognized.
        """
        try:
            month, day, year = [int(part) for part in date.split('-')]
            if year >= 70:
                year = 1900 + year
            else:
                year = 2000 + year
        except (ValueError, IndexError):
            raise FtpDirLineParserError(
                "illegal date string '{0}'".format(month))
        try:
            hour, minute, am_pm = time[0:2], time[3:5], time[5]
            hour = int(hour)
            minute = int(minute)
        except (ValueError, IndexError):
            raise FtpDirLineParserError(
                "illegal time string '{0}'".format(month))
        if hour == 12 and am_pm == 'A':
            hour = 0
        if hour != 12 and am_pm == 'P':
            hour = hour + 12

        lastModified = QDateTime(QDate(year, month, day), QTime(hour, minute))
        urlInfo.setLastModified(lastModified)
예제 #17
0
    def __init__(self, meeting: Meeting = None):
        super(MeetingEditDialog, self).__init__()
        uic.loadUi('./layout/meetingEditDialog.ui', self)

        self.meeting_id_input: QtWidgets.QLineEdit = self.findChild(
            QtWidgets.QLineEdit, 'meetingIdInput')
        self.password_input: QtWidgets.QLineEdit = self.findChild(
            QtWidgets.QLineEdit, 'passwordInput')
        self.name_input: QtWidgets.QLineEdit = self.findChild(
            QtWidgets.QLineEdit, 'nameInput')

        self.date_time_input: QtWidgets.QDateTimeEdit = self.findChild(
            QtWidgets.QDateTimeEdit, 'dateTimeEdit')

        if meeting is not None:
            self.meeting_id_input.setText(meeting.meeting_id)
            self.password_input.setText(meeting.password)
            self.name_input.setText(meeting.name)
            datetime = QDateTime(meeting.datetime)
        else:
            datetime = QDateTime.currentDateTime()

        self.date_time_input.setDateTime(datetime)
예제 #18
0
    def update_series(self, item: QStandardItem):
        if item.column() == 5:  # check for checkbox column
            item_idx = item.index()
            date = self.dish_data_table_model.data(item_idx.siblingAtColumn(1))
            dish_name = self.dish_data_table_model.data(
                item_idx.siblingAtColumn(2))
            dish_price = self.dish_data_table_model.data(
                item_idx.siblingAtColumn(3))
            sell_num = self.dish_data_table_model.data(
                item_idx.siblingAtColumn(4))
            set_name = dish_name + "(" + dish_price + ")"
            key = str(
                QDateTime(QDate.fromString(date,
                                           "yyyy-MM-dd")).toSecsSinceEpoch())
            if key not in self.graph_series:
                self.graph_series[key] = {}

            if int(item.text()) == 0:
                if set_name in self.graph_series[key]:
                    del self.graph_series[key][set_name]
                if not self.graph_series[key]:
                    del self.graph_series[key]
            else:
                self.graph_series[key][set_name] = int(sell_num)
예제 #19
0
    def data(self, index, role):
        source_index = self.mapToSource(index)
        source_data = self.sourceModel().data(source_index, role)
        expiration_col = self.sourceModel().columns_ids.index('expiration')
        expiration_index = self.sourceModel().index(source_index.row(),
                                                    expiration_col)
        expiration_data = self.sourceModel().data(expiration_index,
                                                  Qt.DisplayRole)
        current_time = QDateTime().currentDateTime().toMSecsSinceEpoch()
        sig_validity = self.community.parameters['sigValidity']
        warning_expiration_time = int(sig_validity / 3)
        #logging.debug("{0} > {1}".format(current_time, expiration_data))
        if expiration_data is not None:
            will_expire_soon = (current_time > expiration_data * 1000 -
                                warning_expiration_time * 1000)
        if role == Qt.DisplayRole:
            if source_index.column() == self.sourceModel().columns_ids.index('renewed') \
                    or source_index.column() == self.sourceModel().columns_ids.index('expiration'):
                if source_data is not None:
                    return QLocale.toString(
                        QLocale(),
                        QDateTime.fromTime_t(source_data).date(),
                        QLocale.dateFormat(QLocale(), QLocale.ShortFormat))
                else:
                    return ""
            if source_index.column() == self.sourceModel().columns_ids.index(
                    'pubkey'):
                return "pub:{0}".format(source_data[:5])

        if role == Qt.ForegroundRole:
            if expiration_data:
                if will_expire_soon:
                    return QColor(Qt.red)
            else:
                return QColor(Qt.blue)
        return source_data
예제 #20
0
    def set_settings(self):
        if self.traffic_id:
            query = """SELECT Position, Data, Table_Data, Note FROM staff_worker_traffic WHERE Id = %s"""
            sql_traffic = my_sql.sql_select(query, (self.traffic_id, ))
            if "mysql.connector.errors" in str(type(sql_traffic)):
                QMessageBox.critical(self, "Ошибка sql получения записей",
                                     sql_traffic.msg, QMessageBox.Ok)
                return False
            self.le_position.setText(str(sql_traffic[0][0]))
            self.dt_date.setDateTime(sql_traffic[0][1])
            self.le_note.setText(sql_traffic[0][3])
            if sql_traffic[0][2]:
                self.dt_tabel_date.setDateTime(sql_traffic[0][2])
            else:
                min = sql_traffic[0][1].minute
                if 0 <= min <= 15:
                    tab_date = sql_traffic[0][1].replace(minute=0)
                elif 16 <= min <= 45:
                    tab_date = sql_traffic[0][1].replace(minute=30)
                else:
                    tab_date = sql_traffic[0][1].replace(minute=0)
                    hour_up = sql_traffic[0][1].hour + 1
                    if hour_up < 24:
                        tab_date = tab_date.replace(hour=hour_up)
                    else:
                        day = sql_traffic[0][1].day
                        tab_date = tab_date.replace(day=day + 1,
                                                    hour=hour_up - 24)

                self.dt_tabel_date.setDateTime(tab_date)

        else:
            date = self.select_date or QDateTime.currentDateTime()
            datetime = QDateTime(date, QTime.currentTime())
            self.dt_date.setDateTime(datetime)
            self.dt_tabel_date.setDateTime(datetime)
예제 #21
0
def extractProfileCropsterXLS(file):
    res = {}  # the interpreted data set

    book = xlrd.open_workbook(file)

    sheet_names = book.sheet_names()

    # extract general profile information
    general_sh = book.sheet_by_index(0)
    if general_sh.nrows >= 1:
        general_data = dict(
            zip([x.value for x in general_sh.row(0)], general_sh.row(1)))

        if 'Id-Tag' in general_data:
            try:
                id_tag = general_data['Id-Tag'].value
                batch_prefix = id_tag.rstrip('0123456789')
                batch_number = int(id_tag[len(batch_prefix):])
                res["roastbatchprefix"] = batch_prefix
                res["roastbatchnr"] = batch_number
            except:
                pass
        for tag, label in zip([
                'Profile', 'Lot name', 'Machine', 'Roast technician',
                'Sensorial notes', 'Roasting notes'
        ], [
                'title', 'beans', 'roastertype', 'operator', 'cuppingnotes',
                'roastingnotes'
        ]):
            if tag in general_data:
                try:
                    value = str(general_data[tag].value)
                    res[label] = value
                except:
                    pass
        if 'Date' in general_data:
            try:
                raw_date = general_data['Date'].value
                date_tuple = xlrd.xldate_as_tuple(raw_date, book.datemode)
                date = QDateTime(*date_tuple)
                res["roastdate"] = encodeLocal(date.date().toString())
                res["roastisodate"] = encodeLocal(date.date().toString(
                    Qt.ISODate))
                res["roasttime"] = encodeLocal(date.time().toString())
                res["roastepoch"] = int(date.toTime_t())
                res["roasttzoffset"] = libtime.timezone
            except:
                pass
        if 'Ambient temp.' in general_data:
            try:
                value = general_data['Ambient temp.'].value
                res['ambientTemp'] = float(value)
            except:
                pass
        if 'Start weight' in general_data or 'End weight' in general_data:
            cropster_weight_units = ["G", "KG", "LBS", "OZ"]
            artisan_weight_units = ["g", "Kg", "lb", "oz"]
            weight = [0, 0, artisan_weight_units[0]]
            try:
                value = general_data['End weight unit'].value
                idx = cropster_weight_units.index(value)
                weight[2] = artisan_weight_units[idx]
            except:
                pass
            try:
                value = general_data['Start weight unit'].value
                idx = cropster_weight_units.index(value)
                weight[2] = artisan_weight_units[idx]
            except:
                pass
            try:
                value = general_data['Start weight'].value
                weight[0] = value
            except:
                pass
            try:
                value = general_data['End weight'].value
                weight[1] = value
            except:
                pass
            res["weight"] = weight
    # BT:
    try:
        BT_idx = sheet_names.index("Curve - Bean temp.")
        BT_sh = book.sheet_by_index(BT_idx)
        if BT_sh.ncols >= 1:
            time = BT_sh.col(0)
            temp = BT_sh.col(1)
            if len(time) > 0 and len(temp) > 0 and len(time) == len(temp):
                if "FAHRENHEIT" in str(temp[0].value):
                    res["mode"] = 'F'
                else:
                    res["mode"] = 'C'
                res["timex"] = [t.value for t in time[1:]]
                res["temp2"] = [t.value for t in temp[1:]]
                res["temp1"] = [-1] * len(res["timex"])
                res["timeindex"] = [0, 0, 0, 0, 0, 0, len(res["timex"]) - 1, 0]
    except:
        pass
    # ET
    try:
        ET_idx = sheet_names.index("Curve - Env. temp.")
        ET_sh = book.sheet_by_index(ET_idx)
        if ET_sh.ncols >= 1:
            time = ET_sh.col(0)
            temp = ET_sh.col(1)
            if len(time) > 0 and len(temp) > 0 and len(time) == len(temp):
                if "FAHRENHEIT" in str(temp[0].value):
                    res["mode"] = 'F'
                else:
                    res["mode"] = 'C'
                res["temp1"] = [t.value for t in temp[1:]]
                if len(res["timex"]) != len(res["temp1"]):
                    res["timex"] = [t.value for t in time[1:]]
                if "temp2" not in res or len(res["temp2"]) != len(
                        res["timex"]):
                    res["temp2"] = [-1] * len(res["timex"])
                res["timeindex"] = [0, 0, 0, 0, 0, 0, len(res["timex"]) - 1, 0]
    except:
        pass
    # extra temperature curves
    channel = 1  # toggle between channel 1 and 2 to be filled with extra temperature curve data
    for sn in sheet_names:
        if sn.startswith(
                "Curve"
        ) and "temp." in sn and sn != "Curve - Bean temp." and sn != "Curve - Env. temp.":
            try:
                extra_curve_name = sn.split("Curve - ")
                if len(extra_curve_name) > 1:
                    extra_curve_name = extra_curve_name[1].split("temp.")
                    extra_curve_name = extra_curve_name[0]
                else:
                    extra_curve_name = extra_curve_name[0]
                CT_idx = sheet_names.index(sn)
                CT_sh = book.sheet_by_index(CT_idx)
                if CT_sh.ncols >= 1:
                    time = CT_sh.col(0)
                    temp = CT_sh.col(1)
                    if len(time) > 0 and len(temp) > 0 and len(time) == len(
                            temp):
                        if "extradevices" not in res:
                            res["extradevices"] = []
                        if "extraname1" not in res:
                            res["extraname1"] = []
                        if "extraname2" not in res:
                            res["extraname2"] = []
                        if "extratimex" not in res:
                            res["extratimex"] = []
                        if "extratemp1" not in res:
                            res["extratemp1"] = []
                        if "extratemp2" not in res:
                            res["extratemp2"] = []
                        if "extramathexpression1" not in res:
                            res["extramathexpression1"] = []
                        if "extramathexpression2" not in res:
                            res["extramathexpression2"] = []
                        if channel == 1:
                            channel = 2
                            res["extradevices"].append(25)
                            res["extraname1"].append(extra_curve_name)
                            res["extratimex"].append(
                                [t.value for t in time[1:]])
                            res["extratemp1"].append(
                                [t.value for t in temp[1:]])
                            res["extramathexpression1"].append("")
                        elif (len(time) - 1) == len(
                                res["extratimex"][-1]
                        ):  # only if time lengths is same as of channel 1
                            channel = 1
                            res["extraname2"].append(extra_curve_name)
                            res["extratemp2"].append(
                                [t.value for t in temp[1:]])
                            res["extramathexpression2"].append("")
            except:
                pass
    if "extraname1" in res and "extraname2" in res and len(
            res["extraname1"]) != len(res["extraname2"]):
        # we add an empty second extra channel if needed
        res["extraname2"].append("Extra 2")
        res["extratemp2"].append([-1] * len(res["extratemp1"][-1]))
        res["extramathexpression2"].append("")
    # add events
    try:
        COMMENTS_idx = sheet_names.index("Comments")
        COMMENTS_sh = book.sheet_by_index(COMMENTS_idx)
        gas_event = False  # set to True if a Gas event exists
        airflow_event = False  # set to True if an Airflow event exists
        specialevents = []
        specialeventstype = []
        specialeventsvalue = []
        specialeventsStrings = []
        if COMMENTS_sh.ncols >= 4:
            takeClosest = lambda num, collection: min(
                collection, key=lambda x: abs(x - num))
            for r in range(COMMENTS_sh.nrows):
                if r > 0:
                    try:
                        time = COMMENTS_sh.cell(r, 0).value
                        comment_type = COMMENTS_sh.cell(r, 2).value
                        if comment_type not in [
                                "Turning point"
                        ]:  # TP is ignored as it is automatically assigned
                            comment_value = COMMENTS_sh.cell(r, 3).value
                            c = takeClosest(time, res["timex"])
                            timex_idx = res["timex"].index(c)
                            if comment_type == "Color change":
                                res["timeindex"][1] = timex_idx
                            elif comment_type == "First crack":
                                res["timeindex"][2] = timex_idx
                            elif comment_type == "Second crack":
                                res["timeindex"][4] = timex_idx
                            else:
                                specialevents.append(timex_idx)
                                if comment_type == "Airflow":
                                    airflow_event = True
                                    specialeventstype.append(0)
                                elif comment_type == "Gas":
                                    gas_event = True
                                    specialeventstype.append(3)
                                else:
                                    specialeventstype.append(4)
                                try:
                                    v = float(comment_value)
                                    v = v / 10. + 1
                                    specialeventsvalue.append(v)
                                except:
                                    specialeventsvalue.append(0)
                                if comment_type not in [
                                        "Airflow", "Gas", "Comment"
                                ]:
                                    specialeventsStrings.append(comment_type)
                                else:
                                    specialeventsStrings.append(comment_value)
                    except:
                        pass
        if len(specialevents) > 0:
            res["specialevents"] = specialevents
            res["specialeventstype"] = specialeventstype
            res["specialeventsvalue"] = specialeventsvalue
            res["specialeventsStrings"] = specialeventsStrings
            if gas_event or airflow_event:
                # first set etypes to defaults
                res["etypes"] = [
                    QApplication.translate("ComboBox", "Air", None),
                    QApplication.translate("ComboBox", "Drum", None),
                    QApplication.translate("ComboBox", "Damper", None),
                    QApplication.translate("ComboBox", "Burner", None), "--"
                ]
                # update
                if airflow_event:
                    res["etypes"][0] = "Airflow"
                if gas_event:
                    res["etypes"][3] = "Gas"
    except:
        pass
    return res
예제 #22
0
    def drawChart(self):
        conn=sqlite3.connect('emaildb.sqlite')
        cur=conn.cursor()

        title=self.lineEditProdName.text()
        mall_url=self.farm_combo.currentText()
        sql=f"select dt, jjim, sold, review from PROD3 where title='{title}'"
        cur.execute(sql)
        conn.commit()
        rows=cur.fetchall()
        series=[]
        # series = QLineSeries(self)
        series.append(QLineSeries(self))
        series.append(QLineSeries(self))
        series.append(QLineSeries(self))
        
        tod=datetime.today()
        nextday=datetime.today()+timedelta(days=1)
        d=QDate(2020,1,3)
        dt=QDateTime(d)
        d2=d.addDays(1)
        dt2=dt.addDays(1)

        for i,row in enumerate(rows):
            for j, serie in enumerate(series):
                # serie.append((dt.addDays(i)).toMSecsSinceEpoch(),int(row[j+1]))
                serie.append(i,int(row[j+1]))

        for serie in series:
            serie.setPointsVisible(True)
            
        self.linechart.removeAllSeries()
        self.linechart2.removeAllSeries()
        self.linechart3.removeAllSeries()
        

        self.linechart.addSeries(series[0])
        self.linechart2.addSeries(series[1])
        self.linechart3.addSeries(series[2])
        
        dateAxis=QDateTimeAxis()
        dateAxis2=QDateTimeAxis()
        dateAxis3=QDateTimeAxis()
        
        self.linechart.addAxis(dateAxis, Qt.AlignBottom)
        self.linechart2.addAxis(dateAxis2, Qt.AlignBottom)
        self.linechart3.addAxis(dateAxis3, Qt.AlignBottom)
        
        self.linechart.createDefaultAxes()
        self.linechart2.createDefaultAxes()
        self.linechart3.createDefaultAxes()
                   
        self.linechart.setAnimationOptions(QChart.SeriesAnimations)
        self.linechart.setTitle("찜")
        self.linechart.legend().setVisible(True)

        self.linechart2.setAnimationOptions(QChart.SeriesAnimations)
        self.linechart2.setTitle("구매")
        self.linechart2.legend().setVisible(True)

        self.linechart3.setAnimationOptions(QChart.SeriesAnimations)
        self.linechart3.setTitle("리뷰")
        self.linechart3.legend().setVisible(True)


        self.chartview.setRenderHint(QPainter.Antialiasing)
        self.chartview2.setRenderHint(QPainter.Antialiasing)
        self.chartview3.setRenderHint(QPainter.Antialiasing)

        cur.close()
        conn.close()
예제 #23
0
def pd2qtime(pdt):
    '''Return a QDateTime from a time objet of Timestamp'''
    pdt = pd.Timestamp(pdt)
    return QDateTime(pdt.year, pdt.month, pdt.day, pdt.hour, pdt.minute,
                     pdt.second)
예제 #24
0
    def initUI(self):

        # Buttons
        downloadButton = QPushButton("Download", self)
        downloadButton.clicked.connect(self.downloadClick)
        downloadButton.setEnabled(False)
        closeButton = QPushButton("Close", self)
        closeButton.clicked.connect(self.hide)

        # Lists
        self.egimList = QListWidget(self)
        self.egimList.itemClicked.connect(self.loadInstruments)
        self.egimList.setMaximumWidth(200)

        self.instrumentList = QListWidget(self)
        self.instrumentList.itemClicked.connect(self.loadParameters)
        self.instrumentList.setMaximumWidth(290)

        self.metadataList = QListWidget(self)

        self.parameterList = QListWidget(self)
        self.parameterList.setSelectionMode(
            QAbstractItemView.ExtendedSelection)
        self.parameterList.itemClicked.connect(
            lambda: downloadButton.setEnabled(True))

        self.dateList = QListWidget(self)
        self.dateList.itemClicked.connect(self.loadTimes)
        self.dateList.setMaximumWidth(150)
        self.hourMinuteList = QListWidget(self)
        self.hourMinuteList.itemClicked.connect(
            lambda: downloadButton.setEnabled(True))
        self.hourMinuteList.setMaximumWidth(150)

        # Labels
        egimLabel = QLabel("EGIM", self)
        instrumentLabel = QLabel("Instrument", self)
        metadataLabel = QLabel("Metadata", self)
        parameterLabel = QLabel("Parameter", self)
        startDateLabel = QLabel("Start date", self)
        endDateLabel = QLabel("End date", self)
        limitLabel = QLabel("Get last X values", self)
        hourLabel = QLabel("Hour and minute (HHMM)", self)
        dateLabel = QLabel("Available dates", self)

        # Date edit
        self.startDateEdit = QDateEdit(self)
        self.startDateEdit.setCalendarPopup(True)
        self.startDateEdit.setDateTime(QDateTime(QDate(2017, 1, 27),
                                                 QTime(0, 0, 0)))
        self.startDateEdit.setMinimumDateTime(QDateTime(QDate(2017, 1, 27),
                                                        QTime(0, 0, 0)))
        self.endDateEdit = QDateEdit(self)
        self.endDateEdit.setCalendarPopup(True)
        self.endDateEdit.setDateTime(QDateTime(QDate(2017, 1, 27),
                                               QTime(0, 0, 0)))
        self.endDateEdit.setMinimumDateTime(QDateTime(QDate(2017, 1, 27),
                                                      QTime(0, 0, 0)))

        # Spin box
        self.limitSpinBox = QSpinBox(self)
        self.limitSpinBox.setMinimum(0)
        self.limitSpinBox.setMaximum(9999999999)
        self.limitSpinBox.setSingleStep(100)
        self.limitSpinBox.valueChanged.connect(self.enableDate)

        # Custom Widgets

        # Widget for dates of the acoustic data
        self.acousticDateWidget = QWidget(self)
        # - Layout
        vAcousticDate = QVBoxLayout()
        vAcousticDate.addWidget(dateLabel)
        vAcousticDate.addWidget(self.dateList)
        vAcousticDate.addWidget(hourLabel)
        vAcousticDate.addWidget(self.hourMinuteList)
        self.acousticDateWidget.setLayout(vAcousticDate)
        self.acousticDateWidget.setMaximumWidth(175)
        self.acousticDateWidget.setEnabled(False)

        # Widget for dates of parameters
        self.parameterDateWidget = QWidget(self)
        # - Layout
        vparameterDate = QVBoxLayout()
        vparameterDate.addWidget(startDateLabel)
        vparameterDate.addWidget(self.startDateEdit)
        vparameterDate.addWidget(endDateLabel)
        vparameterDate.addWidget(self.endDateEdit)
        vparameterDate.addWidget(limitLabel)
        vparameterDate.addWidget(self.limitSpinBox)
        vparameterDate.addStretch()
        self.parameterDateWidget.setLayout(vparameterDate)
        self.parameterDateWidget.setEnabled(False)

        # Layout
        # - Vertical layout for EGIM --
        vEgim = QVBoxLayout()
        vEgim.addWidget(egimLabel)
        vEgim.addWidget(self.egimList)
        # -- Vertical layout for instruments -
        vInstrument = QVBoxLayout()
        vInstrument.addWidget(instrumentLabel)
        vInstrument.addWidget(self.instrumentList)
        # - Vertical layout for parameters -
        vParameter = QVBoxLayout()
        vParameter.addWidget(metadataLabel)
        vParameter.addWidget(self.metadataList)
        vParameter.addWidget(parameterLabel)
        vParameter.addWidget(self.parameterList)
        # - Vertical layout for dates and buttons
        vButton = QVBoxLayout()
        vButton.addWidget(downloadButton)
        vButton.addWidget(closeButton)
        vButton.addStretch()
        # - Layout of the frame -
        hFrame = QHBoxLayout()
        hFrame.addLayout(vEgim)
        hFrame.addLayout(vInstrument)
        hFrame.addLayout(vParameter)
        hFrame.addWidget(self.parameterDateWidget)
        hFrame.addWidget(self.acousticDateWidget)
        hFrame.addLayout(vButton)

        self.setLayout(hFrame)
예제 #25
0
    def __installQtDoc(self, name, version, engine):
        """
        Private method to install/update a Qt help document.
        
        @param name name of the Qt help document (string)
        @param version Qt version of the help documens (integer)
        @param engine reference to the help engine (QHelpEngineCore)
        @return flag indicating success (boolean)
        """
        versionKey = "qt_version_{0}@@{1}".format(version, name)
        info = engine.customValue(versionKey, "")
        lst = info.split('|')

        dt = QDateTime()
        if len(lst) and lst[0]:
            dt = QDateTime.fromString(lst[0], Qt.ISODate)

        qchFile = ""
        if len(lst) == 2:
            qchFile = lst[1]

        if version == 4:
            docsPath = QDir(
                QLibraryInfo.location(QLibraryInfo.DocumentationPath) +
                QDir.separator() + "qch")
        elif version == 5:
            docsPath = QLibraryInfo.location(QLibraryInfo.DocumentationPath)
            if (not os.path.isdir(docsPath)
                    or len(QDir(docsPath).entryList(["*.qch"])) == 0):
                # Qt installer is a bit buggy; it's missing a symbolic link
                docsPathList = QDir.fromNativeSeparators(docsPath).split("/")
                docsPath = os.sep.join(
                    docsPathList[:-3] +
                    ["Docs", "Qt-{0}.{1}".format(*qVersionTuple())])
            docsPath = QDir(docsPath)
        else:
            # unsupported Qt version
            return False

        files = docsPath.entryList(["*.qch"])
        if not files:
            engine.setCustomValue(versionKey,
                                  QDateTime().toString(Qt.ISODate) + '|')
            return False

        for f in files:
            if f.startswith(name + "."):
                fi = QFileInfo(docsPath.absolutePath() + QDir.separator() + f)
                namespace = QHelpEngineCore.namespaceName(
                    fi.absoluteFilePath())
                if not namespace:
                    continue

                if (dt.isValid()
                        and namespace in engine.registeredDocumentations()
                        and (fi.lastModified().toString(Qt.ISODate)
                             == dt.toString(Qt.ISODate))
                        and qchFile == fi.absoluteFilePath()):
                    return False

                if namespace in engine.registeredDocumentations():
                    engine.unregisterDocumentation(namespace)

                if not engine.registerDocumentation(fi.absoluteFilePath()):
                    self.errorMessage.emit(
                        self.tr(
                            """<p>The file <b>{0}</b> could not be"""
                            """ registered. <br/>Reason: {1}</p>""").format(
                                fi.absoluteFilePath, engine.error()))
                    return False

                engine.setCustomValue(
                    versionKey,
                    fi.lastModified().toString(Qt.ISODate) + '|' +
                    fi.absoluteFilePath())
                return True

        return False
예제 #26
0
 def date_changed(self, dc):
     if dc == 1:
         self.dt_end.setMinimumDateTime(QDateTime(self.dt_beg.dateTime()))
     else:
         self.dt_beg.setMaximumDateTime(QDateTime(self.dt_end.dateTime()))
예제 #27
0
    def setupUi(self, qWidget):
        qWidget.resize(600, 300)
        self.qHBoxLayout = QtWidgets.QHBoxLayout(qWidget)
        self.qGrounpBox1 = QtWidgets.QGroupBox(qWidget)
        self.qGrounpBox1.setTitle("日期时间")
        self.qGrounpBox2 = QtWidgets.QGroupBox(qWidget)
        self.qGrounpBox2.setTitle("日历选择")
        self.qGridLayout1 = QtWidgets.QGridLayout(self.qGrounpBox1)
        self.qGridLayout2 = QtWidgets.QGridLayout(self.qGrounpBox2)
        self.qPushButton1 = QtWidgets.QPushButton(self.qGrounpBox1)
        self.qPushButton1.setText("读取当前日期时间")
        self.qPushButton2 = QtWidgets.QPushButton(self.qGrounpBox1)
        self.qPushButton2.setText("设置时间")
        self.qPushButton3 = QtWidgets.QPushButton(self.qGrounpBox1)
        self.qPushButton3.setText("设置日期")
        self.qPushButton4 = QtWidgets.QPushButton(self.qGrounpBox1)
        self.qPushButton4.setText("设置日期时间")
        self.qLabel1 = QtWidgets.QLabel(self.qGrounpBox1)
        self.qLabel1.setText("字符串显示")
        self.qLabel1.setAlignment(Qt.AlignCenter)
        self.qLabel2 = QtWidgets.QLabel(self.qGrounpBox1)
        self.qLabel2.setText("时 间")
        self.qLabel3 = QtWidgets.QLabel(self.qGrounpBox1)
        self.qLabel3.setText("日 期")
        self.qLabel4 = QtWidgets.QLabel(self.qGrounpBox1)
        self.qLabel4.setText("日期时间")
        self.qLineEdit1 = QtWidgets.QLineEdit(self.qGrounpBox1)
        self.qLineEdit1.setInputMask("99:99:99;_")
        self.qLineEdit2 = QtWidgets.QLineEdit(self.qGrounpBox1)
        self.qLineEdit2.setInputMask("9999-99-99")
        self.qLineEdit2.setMinimumSize(QSize(150, 0))
        self.qLineEdit3 = QtWidgets.QLineEdit(self.qGrounpBox1)
        self.qLineEdit3.setInputMask("9999-99-99 99:99:99")
        self.qTimeEdit = QtWidgets.QTimeEdit(self.qGrounpBox1)
        self.qTimeEdit.setDisplayFormat("hh:mm:ss")
        self.qDateEdit = QtWidgets.QDateEdit(self.qGrounpBox1)
        self.qDateEdit.setDisplayFormat("yyyy年MM月dd日")
        self.qDateEdit.setCalendarPopup(True)
        self.qDateTimeEdit = QtWidgets.QDateTimeEdit(self.qGrounpBox1)
        self.qDateTimeEdit.setMinimumDateTime(QDateTime(1763, 9, 14, 0, 0, 0))
        self.qDateTimeEdit.setMaximumDateTime(QDateTime(3000, 12, 31, 23, 59, 59))
        self.qDateTimeEdit.setDisplayFormat("yyyy-MM-dd hh:mm:ss")
        self.qDateTimeEdit.setCurrentSection(QDateTimeEdit.YearSection)
        self.qLabel5 = QtWidgets.QLabel(self.qGrounpBox2)
        self.qLabel5.setText("选择的日期:")
        self.qLineEdit4 = QtWidgets.QLineEdit(self.qGrounpBox2)
        self.qCalendarWidget = QtWidgets.QCalendarWidget(self.qGrounpBox2)

        self.qHBoxLayout.addWidget(self.qGrounpBox1)
        self.qHBoxLayout.addWidget(self.qGrounpBox2)
        self.qGridLayout1.addWidget(self.qPushButton1, 0, 1, 1, 1)
        self.qGridLayout1.addWidget(self.qLabel1, 0, 2, 1, 1)
        self.qGridLayout1.addWidget(self.qLabel2, 1, 0, 1, 1)
        self.qGridLayout1.addWidget(self.qTimeEdit, 1, 1, 1, 1)
        self.qGridLayout1.addWidget(self.qLineEdit1, 1, 2, 1, 1)
        self.qGridLayout1.addWidget(self.qPushButton2, 2, 2, 1, 1)
        self.qGridLayout1.addWidget(self.qLabel3, 3, 0, 1, 1)
        self.qGridLayout1.addWidget(self.qDateEdit, 3, 1, 1, 1)
        self.qGridLayout1.addWidget(self.qLineEdit2, 3, 2, 1, 1)
        self.qGridLayout1.addWidget(self.qPushButton3, 4, 2, 1, 1)
        self.qGridLayout1.addWidget(self.qLabel4, 5, 0, 1, 1)
        self.qGridLayout1.addWidget(self.qDateTimeEdit, 5, 1, 1, 1)
        self.qGridLayout1.addWidget(self.qLineEdit3, 5, 2, 1, 1)
        self.qGridLayout1.addWidget(self.qPushButton4, 6, 2, 1, 1)
        self.qGridLayout2.addWidget(self.qLabel5, 0, 0, 1, 1)
        self.qGridLayout2.addWidget(self.qLineEdit4, 0, 1, 1, 1)
        self.qGridLayout2.addWidget(self.qCalendarWidget, 1, 0, 1, 2)

        self.qLineEdit1.setObjectName("qLineEdit1")
        self.qLineEdit2.setObjectName("qLineEdit2")
        self.qLineEdit3.setObjectName("qLineEdit3")
        self.qLineEdit4.setObjectName("qLineEdit4")
        self.qPushButton1.setObjectName("qPushButton1")
        self.qPushButton2.setObjectName("qPushButton2")
        self.qPushButton3.setObjectName("qPushButton3")
        self.qPushButton4.setObjectName("qPushButton4")
        self.qTimeEdit.setObjectName("qTimeEdit")
        self.qDateEdit.setObjectName("qDateEdit")
        self.qDateTimeEdit.setObjectName("qDateTimeEdit")
        self.qCalendarWidget.setObjectName("qCalendarWidget")
        QtCore.QMetaObject.connectSlotsByName(qWidget)

        ############################  Init  ##################################
        self.qTimeEdit.setTime(QTime(15, 30, 55))
        self.qDateEdit.setDate(QDate(2016, 11, 21))
        self.qDateTimeEdit.setDateTime(QDateTime(2018, 10, 9, 8, 21, 28))
예제 #28
0
    def __init__(self, url, custom, parent=None, default=False):
        """
        Constructor
        
        @param url AdBlock URL for the subscription (QUrl)
        @param custom flag indicating a custom subscription (boolean)
        @param parent reference to the parent object (QObject)
        @param default flag indicating a default subscription (boolean)
        """
        super(AdBlockSubscription, self).__init__(parent)

        self.__custom = custom
        self.__url = url.toEncoded()
        self.__enabled = False
        self.__downloading = None
        self.__defaultSubscription = default

        self.__title = ""
        self.__location = QByteArray()
        self.__lastUpdate = QDateTime()
        self.__requiresLocation = ""
        self.__requiresTitle = ""

        self.__updatePeriod = 0  # update period in hours, 0 = use default
        self.__remoteModified = QDateTime()

        self.__rules = []  # list containing all AdBlock rules

        self.__networkExceptionRules = []
        self.__networkBlockRules = []
        self.__domainRestrictedCssRules = []
        self.__elementHidingRules = ""
        self.__documentRules = []
        self.__elemhideRules = []

        self.__checksumRe = re.compile(
            r"""^\s*!\s*checksum[\s\-:]+([\w\+\/=]+).*\n""",
            re.IGNORECASE | re.MULTILINE)
        self.__expiresRe = re.compile(
            r"""(?:expires:|expires after)\s*(\d+)\s*(hour|h)?""",
            re.IGNORECASE)
        self.__remoteModifiedRe = re.compile(
            r"""!\s*(?:Last modified|Updated):\s*(\d{1,2})\s*"""
            r"""(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*"""
            r"""(\d{2,4})\s*((\d{1,2}):(\d{2}))?""", re.IGNORECASE)

        self.__monthNameToNumber = {
            "Jan": 1,
            "Feb": 2,
            "Mar": 3,
            "Apr": 4,
            "May": 5,
            "Jun": 6,
            "Jul": 7,
            "Aug": 8,
            "Sep": 9,
            "Oct": 10,
            "Nov": 11,
            "Dec": 12
        }

        self.__parseUrl(url)
예제 #29
0
 def setCurrentDate(self):
     self.ui.deDate.setDate(QDate.currentDate())
     self.displayedDate = QDateTime(self.ui.deDate.date())
예제 #30
0
def add_text_to_elt(elt, param):
    """Add a text filed in a xml element corresponding to the parameter value

    Parameters
    ----------
    elt: XML elt
    param: Parameter

    See Also
    --------
    add_text_to_elt, walk_parameters_to_xml, dict_from_param
    """
    param_type = str(param.type())
    if 'bool' in param_type or 'led' in param_type:
        if param.value():
            text = '1'
        else:
            text = '0'
    elif param_type == 'itemselect':
        if param.value() is not None:
            elt.set(
                'all_items', str(param.value()['all_items'])
            )  # use list(eval(val_str[1:-1])) to get back a list of strings
            text = str(
                param.value()['selected']
            )  # use list(eval(val_str[1:-1])) to get back a list of strings
        else:
            text = str(None)
    elif param_type == 'color':
        text = str([
            param.value().red(),
            param.value().green(),
            param.value().blue(),
            param.value().alpha()
        ])
    elif param_type == 'list':
        if isinstance(param.value(), str):
            text = "str('{}')".format(param.value())
        elif isinstance(param.value(), int):
            text = 'int({})'.format(param.value())
        elif isinstance(param.value(), float):
            text = 'float({})'.format(param.value())
        else:
            str(param.value())
    elif param_type == 'int':
        if param.value(
        ) is True:  # known bug is True should be clearly specified here
            val = 1
        else:
            val = param.value()
        text = str(val)
    elif param_type == 'date_time':
        text = str(param.value().toSecsSinceEpoch())
    elif param_type == 'date':
        text = str(QDateTime(param.value()).toSecsSinceEpoch())
    elif param_type == 'table_view':
        try:
            data = dict(classname=param.value().__class__.__name__,
                        module=param.value().__class__.__module__,
                        data=param.value().get_data_all(),
                        header=param.value().header)
            text = json.dumps(data)
        except Exception:
            text = ''
    else:
        text = str(param.value())
    elt.text = text