Ejemplo n.º 1
0
 def __load_repo_metadata(self, repo_url):
     from dulwich import porcelain
     subdir = get_repo_subdir(repo_url)
     repo_dir = os.path.join(self.__beq_dir, subdir)
     commit_url = get_commit_url(repo_url)
     try:
         with porcelain.open_repo_closing(repo_dir) as local_repo:
             last_commit = local_repo[local_repo.head()]
             last_commit_time_utc = last_commit.commit_time
             last_commit_qdt = QDateTime()
             last_commit_qdt.setTime_t(last_commit_time_utc)
             self.lastCommitDate.setDateTime(last_commit_qdt)
             from datetime import datetime
             import calendar
             d = datetime.utcnow()
             now_utc = calendar.timegm(d.utctimetuple())
             days_since_commit = (now_utc - last_commit_time_utc) / 60 / 60 / 24
             warning_msg = ''
             if days_since_commit > 7.0:
                 warning_msg = f" was {round(days_since_commit)} days ago, press the button to update -->"
             commit_link = f"{commit_url}/{last_commit.id.decode('utf-8')}"
             self.infoLabel.setText(f"<a href=\"{commit_link}\">Last Commit</a>{warning_msg}")
             self.infoLabel.setTextFormat(Qt.RichText)
             self.infoLabel.setTextInteractionFlags(Qt.TextBrowserInteraction)
             self.infoLabel.setOpenExternalLinks(True)
             self.lastCommitMessage.setPlainText(
                 f"Author: {last_commit.author.decode('utf-8')}\n\n{last_commit.message.decode('utf-8')}")
     except:
         logger.exception(f"Unable to open git repo in {self.__beq_dir}")
         self.__beq_dir_not_exists(repo_url)
Ejemplo n.º 2
0
 def on_until_model_changed(self, event):
     # When model is updated (e.g. from console)
     if not isinstance(event.date, timedelta):
         qdatetime = QDateTime()
         qdatetime.setSecsSinceEpoch(event.date.timestamp())
         self.until_widget.setDateTime(qdatetime)
         self.uncheck_radiobuttons
         self.model.request_reload()
Ejemplo n.º 3
0
def setTicksLabels(values):
    strings = []
    for v in values:
        d = QDateTime()
        d = d.fromSecsSinceEpoch(v * 30 * 60)
        vstr = d.toString('HH:mm dd/MM/yy')
        strings.append(vstr)
    return strings
Ejemplo n.º 4
0
 def __beq_dir_not_exists(self, repo_url):
     target_path = os.path.abspath(os.path.join(self.__beq_dir, get_repo_subdir(repo_url)))
     self.infoLabel.setText(
         f"BEQ repo not found in {target_path}, press the button to clone the repository -->")
     self.lastCommitMessage.clear()
     time = QDateTime()
     time.setMSecsSinceEpoch(0)
     self.lastCommitDate.setDateTime(time)
Ejemplo n.º 5
0
    def __init__(self, *args, catalog, menuBar, zmq_address=None, **kwargs):
        super().__init__(*args, **kwargs)

        # Define models.
        search_state = SearchState(catalog=catalog)
        self.search_model = search_state.search_results_model
        # Define widgets.
        self.search_widget = SearchWidget()
        self.summary_widget = SummaryWidget()

        left_pane = QSplitter(Qt.Vertical)
        left_pane.addWidget(self.search_widget)
        left_pane.addWidget(self.summary_widget)

        layout = QHBoxLayout()
        splitter = QSplitter(Qt.Horizontal)
        layout.addWidget(splitter)
        splitter.addWidget(left_pane)

        self.setLayout(layout)

        def show_double_clicked_entry(index):
            search_state.search_results_model.emit_open_entries(None, [index])

        # Set models, connect signals, and set initial values.
        now = time.time()
        ONE_WEEK = 60 * 60 * 24 * 7
        self.search_widget.search_results_widget.setModel(
            search_state.search_results_model)
        self.search_widget.search_input_widget.search_bar.textChanged.connect(
            search_state.search_results_model.on_search_text_changed)
        self.search_widget.catalog_selection_widget.catalog_list.setModel(
            search_state.catalog_selection_model)
        self.search_widget.search_input_widget.until_widget.dateTimeChanged.connect(
            search_state.search_results_model.on_until_time_changed)
        self.search_widget.search_input_widget.until_widget.setDateTime(
            QDateTime.fromSecsSinceEpoch(now + ONE_WEEK))
        self.search_widget.search_input_widget.since_widget.dateTimeChanged.connect(
            search_state.search_results_model.on_since_time_changed)
        self.search_widget.search_input_widget.since_widget.setDateTime(
            QDateTime.fromSecsSinceEpoch(now - ONE_WEEK))
        self.search_widget.catalog_selection_widget.catalog_list.currentIndexChanged.connect(
            search_state.set_selected_catalog)
        self.search_widget.search_results_widget.selectionModel(
        ).selectionChanged.connect(
            search_state.search_results_model.emit_selected_result)
        self.search_widget.search_results_widget.doubleClicked.connect(
            show_double_clicked_entry)
        search_state.search_results_model.selected_result.connect(
            self.summary_widget.set_entries)
        search_state.search_results_model.valid_custom_query.connect(
            self.search_widget.search_input_widget.mark_custom_query)
        search_state.sig_update_header.connect(
            self.search_widget.search_results_widget.hide_hidden_columns)
        search_state.enabled = True
        search_state.search()
Ejemplo n.º 6
0
 def on_reload(self, event):
     now = time.time()
     if isinstance(self.model.since, timedelta):
         self.since_widget.setDateTime(
             QDateTime.fromSecsSinceEpoch(now +
                                          self.model.since.total_seconds()))
     if isinstance(self.model.until, timedelta):
         self.until_widget.setDateTime(
             QDateTime.fromSecsSinceEpoch(now +
                                          self.model.until.total_seconds()))
Ejemplo n.º 7
0
 def on_since_model_changed(self, event):
     # When model is updated (e.g. from console or by clicking a QRadioButton)
     now = time.time()
     if isinstance(event.date, timedelta):
         self.since_widget.setDateTime(
             QDateTime.fromSecsSinceEpoch(now + event.date.total_seconds()))
         self.until_widget.setDateTime(QDateTime.fromSecsSinceEpoch(now))
         if event.date == timedelta(minutes=-60):
             self.hour_widget.setChecked(True)
         if event.date == timedelta(days=-1):
             self.today_widget.setChecked(True)
         if event.date == timedelta(days=-7):
             self.week_widget.setChecked(True)
         if event.date == timedelta(days=-30):
             self.month_widget.setChecked(True)
         if event.date == timedelta(days=-365):
             self.year_widget.setChecked(True)
         if event.date == timedelta(seconds=-4861699200):
             self.since_widget.setDateTime(
                 QDateTime.fromSecsSinceEpoch(event.date.total_seconds()))
             self.until_widget.setDateTime(
                 QDateTime.fromSecsSinceEpoch(now))
             self.all_widget.setChecked(True)
     else:
         qdatetime = QDateTime()
         qdatetime.setSecsSinceEpoch(event.date.timestamp())
         self.since_widget.setDateTime(qdatetime)
         self.uncheck_radiobuttons
Ejemplo n.º 8
0
def set_txt_from_elt(el, param_dict):
    """
    get the value of the parameter from the text value of the xml element
    Parameters
    ----------
    el: xml element
    param_dict: dictionnary from which the parameter will be constructed

    """
    val_text = el.text
    param_type = el.get('type')
    if val_text is not None:
        if param_type == 'float':
            param_value = float(val_text)
        elif param_type == 'int':
            param_value = int(float(val_text))
        elif param_type == 'slide':
            param_value = float(val_text)
        elif param_type == 'itemselect':
            if val_text == 'None':
                param_value = dict(all_items=[], selected=[])
            else:
                param_value = dict(all_items=eval(el.get(
                    'all_items', val_text)),
                                   selected=eval(val_text))
        elif 'bool' in param_type or 'led' in param_type:  # covers 'bool' 'bool_push',  'led' and 'led_push'types
            param_value = bool(int(val_text))
        elif param_type == 'date_time':
            param_value = QDateTime.fromSecsSinceEpoch(int(val_text))
        elif param_type == 'date':
            param_value = QDateTime.fromSecsSinceEpoch(int(val_text)).date()
        elif param_type == 'table':
            param_value = eval(val_text)
        elif param_type == 'color':
            param_value = QtGui.QColor(*eval(val_text))
        elif param_type == 'list':
            try:
                param_value = eval(val_text)
            except Exception:
                param_value = val_text  # for back compatibility
        elif param_type == 'table_view':
            data_dict = json.loads(val_text)
            mod = importlib.import_module(data_dict['module'])
            _cls = getattr(mod, data_dict['classname'])
            param_value = _cls(data_dict['data'], header=data_dict['header'])
        else:
            param_value = val_text
        param_dict.update(dict(value=param_value))
Ejemplo n.º 9
0
    def __init__(self, parent=None):
        super(TSDateWidget, self).__init__(parent=parent)
        self.setupUi(self)
        self.setWindowTitle("TSAnalyzer - Date Tool")
        self.mjd = 51544.5
        self.julday = 2451545
        self.demical_year = 2000.0
        self.doy = "2000-001"
        self.date = datetime(2000, 1, 1, 12)
        self.dateEdit.setDateTime(QDateTime(2000, 1, 1, 12, 0))

        self.conversionButton.clicked.connect(self._click_conversionButton)
        self.ydEdit.setInputMask("9999-999")
        self.dyEdit.setInputMask("9999.9999")
        self.mjdEdit.setValue(51544.5)
        self.juldayEdit.setInputMask("9999999")
        self.gpsweekEdit.setInputMask("99999")

        self.radios = [
            self.dateRadio, self.mjdRadio, self.juldayRadio, self.dyRadio,
            self.ydRadio, self.gpsweekRadio
        ]
        self.edits = [
            self.dateEdit, self.mjdEdit, self.juldayEdit, self.dyEdit,
            self.ydEdit, self.gpsweekEdit
        ]
Ejemplo n.º 10
0
    def createBottomRightGroupBox(self):
        self.bottomRightGroupBox = QGroupBox("Group 3")
        self.bottomRightGroupBox.setCheckable(True)
        self.bottomRightGroupBox.setChecked(True)

        lineEdit = QLineEdit('s3cRe7')
        lineEdit.setEchoMode(QLineEdit.Password)

        spinBox = QSpinBox(self.bottomRightGroupBox)
        spinBox.setValue(50)

        dateTimeEdit = QDateTimeEdit(self.bottomRightGroupBox)
        dateTimeEdit.setDateTime(QDateTime.currentDateTime())

        slider = QSlider(Qt.Horizontal, self.bottomRightGroupBox)
        slider.setValue(40)

        scrollBar = QScrollBar(Qt.Horizontal, self.bottomRightGroupBox)
        scrollBar.setValue(60)

        dial = QDial(self.bottomRightGroupBox)
        dial.setValue(30)
        dial.setNotchesVisible(True)

        layout = QGridLayout()
        layout.addWidget(lineEdit, 0, 0, 1, 2)
        layout.addWidget(spinBox, 1, 0, 1, 2)
        layout.addWidget(dateTimeEdit, 2, 0, 1, 2)
        layout.addWidget(slider, 3, 0)
        layout.addWidget(scrollBar, 4, 0)
        layout.addWidget(dial, 3, 1, 2, 1)
        layout.setRowStretch(5, 1)
        self.bottomRightGroupBox.setLayout(layout)
Ejemplo n.º 11
0
    def __init__(self, parent=None):
        super(DateDialog, self).__init__(parent=parent)
        ui = os.path.join(os.path.dirname(__file__), "../resources/ui/date.ui")
        loadUi(ui, self)

        self.setWindowTitle("TSAnalyzer - Date Tool")
        self.mjd = 51544.5
        self.julday = 2451545
        self.demical_year = 2000.0
        self.doy = "2000-001"
        self.date = datetime(2000, 1, 1, 12)
        self.dateEdit.setDateTime(QDateTime(2000, 1, 1, 12, 0))

        self.conversionButton.clicked.connect(self.conversionButtonClicked)
        self.ydEdit.setInputMask("9999-999")
        self.dyEdit.setInputMask("9999.9999")
        self.mjdEdit.setValue(51544.5)
        self.juldayEdit.setInputMask("9999999")
        self.gpsweekEdit.setInputMask("99999")

        self.radios = [
            self.dateRadio, self.mjdRadio, self.juldayRadio, self.dyRadio,
            self.ydRadio, self.gpsweekRadio
        ]
        self.edits = [
            self.dateEdit, self.mjdEdit, self.juldayEdit, self.dyEdit,
            self.ydEdit, self.gpsweekEdit
        ]
Ejemplo n.º 12
0
    def __init__(self, model, *args, **kwargs):
        self.model = model
        super().__init__(*args, **kwargs)

        # "Since: <datetime picker>"
        self.since_widget = QDateTimeEdit()
        self.since_widget.setCalendarPopup(True)
        self.since_widget.setDisplayFormat("yyyy-MM-dd HH:mm")
        since_layout = QHBoxLayout()
        since_layout.addWidget(QLabel("Since:"))
        since_layout.addWidget(self.since_widget)
        since_layout_widget = QWidget()
        since_layout_widget.setLayout(since_layout)

        # "Until: <datetime picker>"
        self.until_widget = QDateTimeEdit()
        self.until_widget.setCalendarPopup(True)
        self.until_widget.setDisplayFormat("yyyy-MM-dd HH:mm")
        until_layout = QHBoxLayout()
        until_layout.addWidget(QLabel("Until:"))
        until_layout.addWidget(self.until_widget)
        until_layout_widget = QWidget()
        until_layout_widget.setLayout(until_layout)

        self.refresh_button = QPushButton("Refresh")

        # Stack them up.
        layout = QVBoxLayout()
        layout.addWidget(since_layout_widget)
        layout.addWidget(until_layout_widget)
        layout.addWidget(self.refresh_button)
        self.setLayout(layout)

        # Initialize values.
        qdatetime = QDateTime()
        qdatetime.setSecsSinceEpoch(self.model.since)
        self.since_widget.setDateTime(qdatetime)
        qdatetime = QDateTime()
        qdatetime.setSecsSinceEpoch(self.model.until)
        self.until_widget.setDateTime(qdatetime)

        # Changes to the GUI update the model.
        self.since_widget.dateTimeChanged.connect(self.on_since_view_changed)
        self.until_widget.dateTimeChanged.connect(self.on_until_view_changed)
        self.refresh_button.clicked.connect(self.model.events.reload)
        # Changes to the model update the GUI.
        self.model.events.since.connect(self.on_since_model_changed)
        self.model.events.until.connect(self.on_until_model_changed)
Ejemplo n.º 13
0
 def setEditorData(self, editor, index):
     """
     Overriding method setEditorData
     Model --> Editor
     """
     value = self.get_value(index)
     if isinstance(editor, QLineEdit):
         if is_binary_string(value):
             try:
                 value = to_text_string(value, 'utf8')
             except Exception:
                 pass
         if not is_text_string(value):
             value = repr(value)
         editor.setText(value)
     elif isinstance(editor, QDateEdit):
         editor.setDate(value)
     elif isinstance(editor, QDateTimeEdit):
         editor.setDateTime(QDateTime(value.date(), value.time()))
Ejemplo n.º 14
0
        def convertValue(row, col, columnDtype):
            value = None
            if columnDtype == object:
                value = self._dataFrame.ix[row, col]
            elif columnDtype in self._floatDtypes:
                value = round(float(self._dataFrame.ix[row, col]),
                              self._float_precisions[str(columnDtype)])
            elif columnDtype in self._intDtypes:
                value = int(self._dataFrame.ix[row, col])
            elif columnDtype in self._boolDtypes:
                # TODO this will most likely always be true
                # See: http://stackoverflow.com/a/715455
                # well no: I am mistaken here, the data is already in the dataframe
                # so its already converted to a bool
                value = bool(self._dataFrame.ix[row, col])

            elif columnDtype in self._dateDtypes:
                #print numpy.datetime64(self._dataFrame.ix[row, col])
                value = pd.Timestamp(self._dataFrame.ix[row, col])
                value = QDateTime.fromString(str(value), self.timestampFormat)
                #print value
            # else:
            #     raise TypeError, "returning unhandled data type"
            return value
Ejemplo n.º 15
0
    def __init__(self, parent):
        super(TaskOptionsGroupBox, self).__init__(parent)
        self.widget_layout = QFormLayout(self)
        self.setLayout(self.widget_layout)
        self.setTitle("Time")

        self.time_label = QLabel(self)
        self.time_label.setText("Execute: ")

        self.time_now = QRadioButton(self)
        self.time_now.setText("Immediately")
        self.time_now.setChecked(True)

        self.time_schedule = QRadioButton(self)
        self.time_schedule.setText("Schedule")

        self.schedule_select = QDateTimeEdit(self)
        self.schedule_select.setDateTime(QDateTime.currentDateTime())
        self.schedule_select.setEnabled(False)

        self.user_activity_label = QLabel(self)
        self.user_activity_label.setText("User activity")

        self.user_activity_combo = QComboBox(self)
        self.user_activity_combo.addItems([
            "0 - Disabled", "1 - Low", "2 - Normal", "3 - Medium", "4 - High",
            "5 - Very high"
        ])

        self.widget_layout.addRow(self.time_label, None)
        self.widget_layout.addRow(self.time_now, None)
        self.widget_layout.addRow(self.time_schedule, self.schedule_select)
        self.widget_layout.addRow(self.user_activity_label,
                                  self.user_activity_combo)

        self.time_schedule.toggled.connect(self.on_time_schedule_toggled)
Ejemplo n.º 16
0
 def on_until_model_changed(self, event):
     # When model is updated (e.g. from console)
     qdatetime = QDateTime()
     qdatetime.setSecsSinceEpoch(event.date)
     self.until_widget.setDateTime(qdatetime)
Ejemplo n.º 17
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
Ejemplo n.º 18
0
from qtpy.QtCore import QDate, QDateTime, QTime, Qt
from qtpy.QtWidgets import QApplication, QWidget, QMessageBox, QDesktopWidget, QMainWindow, QAction, qApp, QMenu
from qtpy.QtGui import QIcon
from qtpy import QtGui
import sys

now = QDate.currentDate()

print(now.toString(Qt.ISODate))
print(now.toString(Qt.DefaultLocaleLongDate))

datetime = QDateTime.currentDateTime()
print(datetime.toString())

time = QTime.currentTime()
print(time.toString(Qt.DefaultLocaleLongDate))

# localdatetime
print(datetime.toString(Qt.ISODate))
# Universal datetime
print(datetime.toUTC().toString(Qt.ISODate))


class Example(QMainWindow):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):

        exitAct = QAction('&Exit', self)
Ejemplo n.º 19
0
def transform_data(utc, timezone=None):
    utc_fmt = "yyyy-MM-ddTHH:mm:ss.zzzZ"
    new_date = QDateTime().fromString(utc, utc_fmt)
    if timezone:
        new_date.setTimeZone(new_date)
    return new_date
Ejemplo n.º 20
0
def as_datetime(qdatetime):
    assert isinstance(qdatetime, QDateTime)
    return QDateTime.toPython(qdatetime).replace(tzinfo=LOCAL_TIMEZONE)
Ejemplo n.º 21
0
 def set_time_now(self):
     """Set current date and time to the "dfTo" widget"""
     self.dtTo.setDateTime(QDateTime.currentDateTime())
Ejemplo n.º 22
0
 def show(self):
     # self.date = datetime.today()
     self.dateEdit.setDateTime(QDateTime.currentDateTime())
     self.dateRadio.setChecked(True)
     self.conversionButtonClicked()
     super(DateDialog, self).show()
Ejemplo n.º 23
0
    def __init__(self, *args,
                 catalog, search_result_row, menuBar,
                 zmq_address=None, **kwargs):
        super().__init__(*args, **kwargs)

        # Define models.
        search_state = SearchState(
            catalog=catalog,
            search_result_row=search_result_row)

        # Define widgets.
        self.search_widget = SearchWidget()
        self.summary_widget = SummaryWidget()

        left_pane = QVBoxLayout()
        left_pane.addWidget(self.search_widget)
        left_pane.addWidget(self.summary_widget)

        right_pane = QVBoxLayout()
        self.viewer = Viewer(menuBar=menuBar)

        right_pane.addWidget(self.viewer)

        layout = QHBoxLayout()
        layout.addLayout(left_pane)
        layout.addLayout(right_pane)
        self.setLayout(layout)

        def show_double_clicked_entry(index):
            search_state.search_results_model.emit_open_entries(None, [index])

        # Set models, connect signals, and set initial values.
        now = time.time()
        ONE_WEEK = 60 * 60 * 24 * 7
        self.search_widget.search_results_widget.setModel(
            search_state.search_results_model)
        self.search_widget.search_input_widget.search_bar.textChanged.connect(
            search_state.search_results_model.on_search_text_changed)
        self.search_widget.catalog_selection_widget.catalog_list.setModel(
            search_state.catalog_selection_model)
        self.search_widget.search_input_widget.until_widget.dateTimeChanged.connect(
            search_state.search_results_model.on_until_time_changed)
        self.search_widget.search_input_widget.until_widget.setDateTime(
            QDateTime.fromSecsSinceEpoch(now + ONE_WEEK))
        self.search_widget.search_input_widget.since_widget.dateTimeChanged.connect(
            search_state.search_results_model.on_since_time_changed)
        self.search_widget.search_input_widget.since_widget.setDateTime(
            QDateTime.fromSecsSinceEpoch(now - ONE_WEEK))
        self.search_widget.catalog_selection_widget.catalog_list.currentIndexChanged.connect(
            search_state.set_selected_catalog)
        self.search_widget.search_results_widget.selectionModel().selectionChanged.connect(
            search_state.search_results_model.emit_selected_result)
        self.search_widget.search_results_widget.doubleClicked.connect(
            show_double_clicked_entry)
        search_state.search_results_model.selected_result.connect(
            self.summary_widget.set_entries)
        search_state.search_results_model.open_entries.connect(
            self.viewer.show_entries)
        self.summary_widget.open.connect(self.viewer.show_entries)
        self.viewer.tab_titles.connect(self.summary_widget.cache_tab_titles)
        search_state.search_results_model.valid_custom_query.connect(
            self.search_widget.search_input_widget.mark_custom_query)
        search_state.enabled = True
        search_state.search()

        if zmq_address:
            self.consumer_thread = ConsumerThread(zmq_address=zmq_address)
            self.consumer_thread.documents.connect(self.viewer.consumer)
            self.consumer_thread.start()
Ejemplo n.º 24
0
 def on_until_view_changed(self, qdatetime):
     # When GUI is updated
     self.model.until = QDateTime.toPython(qdatetime)
Ejemplo n.º 25
0
def as_qdatetime(datetime):
    "Create QDateTime set as specified by datetime."
    return QDateTime.fromSecsSinceEpoch(
        int(secs_since_epoch(datetime) - datetime.utcoffset() / timedelta(seconds=1))
    )
Ejemplo n.º 26
0
 def on_since_view_changed(self, qdatetime):
     # When GUI is updated
     self.model.since = QDateTime.toPython(qdatetime)
Ejemplo n.º 27
0
 def _conversion(self):
     for radio, edit in zip(self.radios, self.edits):
         if radio.isChecked():
             text = edit.text()
             if radio == self.dateRadio:
                 dt = map(int, text.split("-")) + [12]
                 date = datetime(*dt)
                 mjd = date2mjd(date)
                 self.mjdEdit.setValue(date2mjd(date))
                 self.juldayEdit.setText("%d" % mjd2julday(mjd))
                 self.dyEdit.setText("%.4f" % mjd2yearfraction(mjd))
                 yd = date2year_doy(date)
                 yd_str = '%d-%03d' % (yd[0], yd[1])
                 self.ydEdit.setText("%s" % yd_str)
                 self.gpsweekEdit.setText("%d" % date2gpsweek(date))
             if radio == self.mjdRadio:
                 mjd = float(text)
                 date = mjd2date(mjd)
                 qdate = QDateTime(date.year, date.month, date.day, 12, 0,
                                   0)
                 self.dateEdit.setDateTime(qdate)
                 self.juldayEdit.setText("%d" % mjd2julday(mjd))
                 self.dyEdit.setText("%.4f" % mjd2yearfraction(mjd))
                 yd = date2year_doy(date)
                 yd_str = '%d-%03d' % (yd[0], yd[1])
                 self.ydEdit.setText("%s" % yd_str)
                 self.gpsweekEdit.setText("%d" % date2gpsweek(date))
             if radio == self.juldayRadio:
                 jd = int(text)
                 mjd = julday2mjd(jd) + 0.5
                 date = mjd2date(mjd)
                 qdate = QDateTime(date.year, date.month, date.day, 12, 0,
                                   0)
                 self.dateEdit.setDateTime(qdate)
                 self.mjdEdit.setValue(date2mjd(date))
                 self.dyEdit.setText("%.4f" % mjd2yearfraction(mjd))
                 yd = date2year_doy(date)
                 yd_str = '%d-%03d' % (yd[0], yd[1])
                 self.ydEdit.setText("%s" % yd_str)
                 self.gpsweekEdit.setText("%d" % date2gpsweek(date))
             if radio == self.dyRadio:
                 dy = float(text)
                 mjd = yearfraction2mjd(dy)
                 date = mjd2date(mjd)
                 qdate = QDateTime(date.year, date.month, date.day, 12, 0,
                                   0)
                 self.dateEdit.setDateTime(qdate)
                 self.mjdEdit.setValue(date2mjd(date))
                 self.dyEdit.setText("%.4f" % mjd2yearfraction(mjd))
                 yd = date2year_doy(date)
                 yd_str = '%d-%03d' % (yd[0], yd[1])
                 self.ydEdit.setText("%s" % yd_str)
                 self.gpsweekEdit.setText("%d" % date2gpsweek(date))
             if radio == self.ydRadio:
                 yd = map(int, str(text).split("-"))
                 if yd[1] == 0:
                     edit.setText('%d-00%d' % (yd[0], 1))
                     yd[1] = 1
                 # plus 12 hours
                 date = year_doy2date(*yd) + timedelta(hours=12)
                 mjd = date2mjd(date)
                 qdate = QDateTime(date.year, date.month, date.day, 12, 0,
                                   0)
                 self.dateEdit.setDateTime(qdate)
                 self.mjdEdit.setValue(date2mjd(date))
                 self.juldayEdit.setText("%d" % mjd2julday(mjd))
                 self.dyEdit.setText("%.4f" % mjd2yearfraction(mjd))
                 self.gpsweekEdit.setText("%d" % date2gpsweek(date))
             if radio == self.gpsweekRadio:
                 date = gpsweek2date(int(self.gpsweekEdit.text()))
                 mjd = date2mjd(date)
                 qdate = QDateTime(date.year, date.month, date.day, 12, 0,
                                   0)
                 self.dateEdit.setDateTime(qdate)
                 self.mjdEdit.setValue(date2mjd(date))
                 self.juldayEdit.setText("%d" % mjd2julday(mjd))
                 self.dyEdit.setText("%.4f" % mjd2yearfraction(mjd))
                 yd = date2year_doy(date)
                 yd_str = '%d-%03d' % (yd[0], yd[1])
                 self.ydEdit.setText("%s" % yd_str)
Ejemplo n.º 28
0
    def __init__(self, model, *args, **kwargs):
        self.model = model
        super().__init__(*args, **kwargs)

        self.setLayout(QFormLayout())
        # Radiobuttons to quickly select default time period
        self.all_widget = QRadioButton("All")
        self.year_widget = QRadioButton("1 Year")
        self.month_widget = QRadioButton("30 Days")
        self.week_widget = QRadioButton("1 Week")
        self.today_widget = QRadioButton("24h")
        self.hour_widget = QRadioButton("1 Hour")
        self.radio_button_group = QButtonGroup()
        self.radio_button_group.addButton(self.all_widget)
        self.radio_button_group.addButton(self.year_widget)
        self.radio_button_group.addButton(self.month_widget)
        self.radio_button_group.addButton(self.week_widget)
        self.radio_button_group.addButton(self.today_widget)
        self.radio_button_group.addButton(self.hour_widget)
        default_period_layout = QGridLayout()
        default_period_layout.setHorizontalSpacing(85)
        default_period_layout.setVerticalSpacing(10)
        default_period_layout.addWidget(self.all_widget, 0, 0, 1, 2)
        default_period_layout.addWidget(self.year_widget, 1, 0, 1, 2)
        default_period_layout.addWidget(self.month_widget, 2, 0, 1, 2)
        default_period_layout.addWidget(self.week_widget, 0, 1, 1, 2)
        default_period_layout.addWidget(self.today_widget, 1, 1, 1, 2)
        default_period_layout.addWidget(self.hour_widget, 2, 1, 1, 2)
        self.layout().addRow("When:", default_period_layout)

        # TODO: rethink if restriction to acceptable timedelta values is required
        # from ..components.search.search_input import SearchInput
        # self.allowed = {timedelta(days=-1), timedelta(days=-30), timedelta(minutes=-60), timedelta(days=-7),
        #                 timedelta(days=-365)}
        # def time_validator(since=None, until=None):
        #     """
        #     Enforce that since and until are values that a UI can represent.
        #     This is an example similar to what will be used in the Qt UI.
        #     """
        #     now = timedelta()
        #     if isinstance(since, timedelta):
        #         if not (until is None or until == now):
        #             raise ValueError(
        #                 "This UI cannot express since=timedelta(...) unless until "
        #                 "is timedelta() or None."
        #             )
        #         for item in allowed:
        #             if since == item:
        #                 break
        #         else:
        #             # No matches
        #             raise ValueError(
        #                 "This UI can only express since as a timedelta if it is "
        #                 f"one of {allowed}. The value {since} is not allowed"
        #             )
        # s = SearchInput()
        # s.time_validator = time_validator

        # "Since: <datetime picker>"
        self.since_widget = QDateTimeEdit()
        self.since_widget.setCalendarPopup(True)
        self.since_widget.setDisplayFormat("yyyy-MM-dd HH:mm")
        self.layout().addRow("Since:", self.since_widget)
        self.since_widget.dateTimeChanged.connect(self.uncheck_radiobuttons)

        # "Until: <datetime picker>"
        self.until_widget = QDateTimeEdit()
        self.until_widget.setCalendarPopup(True)
        self.until_widget.setDisplayFormat("yyyy-MM-dd HH:mm")
        self.layout().addRow("Until:", self.until_widget)
        self.until_widget.dateTimeChanged.connect(self.uncheck_radiobuttons)

        # Refresh Button
        self.refresh_button = QPushButton("Refresh")
        self.layout().addWidget(self.refresh_button)

        # Initialize values.
        qdatetime = QDateTime()
        qdatetime.setSecsSinceEpoch(self.model.since.timestamp())
        self.since_widget.setDateTime(qdatetime)
        qdatetime = QDateTime()
        qdatetime.setSecsSinceEpoch(self.model.until.timestamp())
        self.until_widget.setDateTime(qdatetime)

        # Changes to the GUI update the model.
        self.since_widget.dateTimeChanged.connect(self.on_since_view_changed)
        self.until_widget.dateTimeChanged.connect(self.on_until_view_changed)

        self.refresh_button.clicked.connect(self.model.request_reload)
        self.model.events.reload.connect(self.on_reload)
        self.model.events.query.connect(self.on_reload)
        # Changes to the model update the GUI.
        self.model.events.since.connect(self.on_since_model_changed)
        self.model.events.until.connect(self.on_until_model_changed)

        # connect QRadioButtons and change date dropdowns (since/until widgets) accordingly
        self.hour_widget.clicked.connect(self.on_select_hour)
        self.today_widget.clicked.connect(self.on_select_24h)
        self.week_widget.clicked.connect(self.on_select_week)
        self.month_widget.clicked.connect(self.on_select_month)
        self.year_widget.clicked.connect(self.on_select_year)
        self.all_widget.clicked.connect(self.on_select_all)