Esempio n. 1
0
def main_ui():
    # d = QQmlDebuggingEnabler()
    # d.startTcpDebugServer(3768)
    QIcon.setThemeName("digit")
    # Instantiate the Python object.
    knobs = Knobs()
    current_bpm = PolyValue("BPM", 120, 30, 250) # bit of a hack
    current_preset = PolyValue("Default Preset", 0, 0, 1)
    update_counter = PolyValue("update counter", 0, 0, 100000)
    delay_num_bars = PolyValue("Num bars", 1, 1, 16)

    # t_list = QStringList()
    # t_list.append("a")
    # t_list.append("b")
    # t_list.append("c")
    # model.setStringList(["aasdfasdf", "b", "c"])
    # model2.setStringList(["fff", "ddd" "c"])

    engine = QQmlApplicationEngine()
    # Expose the object to QML.
    context = engine.rootContext()
    context.setContextProperty("knobs", knobs)
    context.setContextProperty("param_vals", obj)
    context.setContextProperty("delay1_Left_Out_AvailablePorts", model)
    context.setContextProperty("delay1_Left_Out_UsedPorts", model2)
    context.setContextProperty("currentBPM", current_bpm)
    context.setContextProperty("currentPreset", current_preset)
    context.setContextProperty("polyValues", effect_parameter_data)
    context.setContextProperty("updateCounter", update_counter)
    context.setContextProperty("delayNumBars", delay_num_bars)
    context.setContextProperty("presetList", preset_list_model)
    # engine.load(QUrl("qrc:/qml/digit.qml"))
    engine.load(QUrl("qml/digit.qml"))

    timer = QTimer()
    timer.timeout.connect(tick)
    timer.start(2000)
    font = QFont("OpenSans", 10)
    app.setFont(font)

    app.exec_()
Esempio n. 2
0
 def addProjectsByPaths(self, paths: List[str]):
     """QUrl path (typically is sent from the QML GUI)"""
     if len(paths) == 0:
         module_logger.warning("No paths were given")
         return
     else:
         for path_str in paths:  # convert to strings
             path_qurl = QUrl(path_str)
             if path_qurl.isEmpty():
                 module_logger.warning(f"Given path is empty: {path_str}")
                 continue
             elif path_qurl.isLocalFile():  # file://...
                 path: str = path_qurl.toLocalFile()
             elif path_qurl.isRelative(
             ):  # this means that the path string is not starting with 'file://' prefix
                 path: str = path_str  # just use a source string
             else:
                 module_logger.error(f"Incorrect path: {path_str}")
                 continue
             self.addListItem(path, list_item_kwargs={'parent': self})
         self.saveInSettings()
Esempio n. 3
0
    def get_kline_data(self):
        """ 获取当前品种当前合约下的K线数据 """
        self.tips_animation_timer.start(400)
        self.tip_button.show()

        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        contract = self.contract_combobox.currentText()

        if contract == "主力合约":
            self.kline_title = self.current_variety + "主力合约日K线图"
            url = SERVER + "trend/kline/{}/{}/main-contract/".format(
                self.current_exchange, self.current_variety)
        else:
            self.kline_title = self.contract_combobox.currentText() + "日K线图"
            url = SERVER + "trend/kline/{}/{}/".format(self.current_exchange,
                                                       contract)
        self.web_container.setUpdatesEnabled(False)

        reply = network_manager.get(QNetworkRequest(QUrl(url)))
        reply.finished.connect(self.kline_data_reply)
Esempio n. 4
0
    def _open_item_tracker(self):
        # Importing this at root level seems to crash linux tests :(
        from PySide2.QtWebEngineWidgets import QWebEngineView

        tracker_window = QMainWindow()
        tracker_window.setWindowTitle("Item Tracker")
        tracker_window.resize(370, 380)

        web_view = QWebEngineView(tracker_window)
        tracker_window.setCentralWidget(web_view)

        self.web_view = web_view

        def update_window_icon():
            tracker_window.setWindowIcon(web_view.icon())

        web_view.iconChanged.connect(update_window_icon)
        web_view.load(QUrl("https://spaghettitoastbook.github.io/echoes/tracker/"))

        tracker_window.show()
        self._item_tracker_window = tracker_window
def test_MeasuredDataModel():

    file_path = QUrl(TEST_FILE).toLocalFile()
    calculator = CryspyCalculator(file_path)
    interface = QtCalculatorInterface(calculator)

    m = Model()
    m.setCalculatorInterface(interface)


    assert isinstance(m._model, QStandardItemModel)
    assert isinstance(m._headers_model, QStandardItemModel)

    # assure _setModelFromProject got called
    assert m._model.rowCount() == 381
    assert m._model.columnCount() == 9

    assert m._headers_model.rowCount() == 1
    assert m._headers_model.columnCount() == 9

    # Test stuff from _setModelFromProject here
    assert m._model.item(0, 0).data(role=Qt.DisplayRole) == 4.0
    assert m._model.item(0, 6).data(role=Qt.DisplayRole) == 128.97
    assert m._model.item(380, 0).data(role=Qt.DisplayRole) == 80.0
    assert m._model.item(380, 6).data(role=Qt.DisplayRole) == 27.81

    assert m._headers_model.item(0, 0).data(role=Qt.DisplayRole) == 'x'
    assert m._headers_model.item(0, 1).data(role=Qt.DisplayRole) == 'y_obs'
    assert m._headers_model.item(0, 2).data(role=Qt.DisplayRole) == 'sy_obs'
    assert m._headers_model.item(0, 3).data(role=Qt.DisplayRole) == 'y_obs_diff'
    assert m._headers_model.item(0, 4).data(role=Qt.DisplayRole) == 'sy_obs_diff'
    assert m._headers_model.item(0, 5).data(role=Qt.DisplayRole) == 'y_obs_up'
    assert m._headers_model.item(0, 6).data(role=Qt.DisplayRole) == 'sy_obs_up'
    assert m._headers_model.item(0, 7).data(role=Qt.DisplayRole) == 'y_obs_down'
    assert m._headers_model.item(0, 8).data(role=Qt.DisplayRole) == 'sy_obs_down'

    # test asModel
    assert m._model == m.asModel()
    assert m._headers_model == m.asHeadersModel()
def test_FitablesModelModel():

    file_path = QUrl(TEST_FILE).toLocalFile()
    calculator = CryspyCalculator(file_path)
    interface = QtCalculatorInterface(calculator)

    m = Model()
    m.setCalculatorInterface(interface)

    assert isinstance(m._model, QStandardItemModel)

    # assure _setModelFromProject got called
    assert m._model.rowCount() == 24
    assert m._model.columnCount() == 1

    assert len(m._model.roleNames()) == len(m._roles_dict)
    assert b'path' in m._roles_dict.values()
    assert b'refine' in m._roles_dict.values()

    # Test stuff from _setModelFromProject here
    # first and last row
    assert m._model.item(0, 0).data(role=Qt.UserRole+2) == 'phases Fe3O4 cell length_a'
    assert m._model.item(0, 0).data(role=Qt.UserRole+3) == 8.36212
    assert m._model.item(0, 0).data(role=Qt.UserRole+4) == 0.0
    assert m._model.item(0, 0).data(role=Qt.UserRole+5) == pytest.approx(6.68969)
    assert m._model.item(0, 0).data(role=Qt.UserRole+6) == 10.034544
    assert m._model.item(0, 0).data(role=Qt.UserRole+7) is True
    assert m._model.item(0, 0).data(role=Qt.UserRole+8) == '\u212B'

    assert m._model.item(21, 0).data(role=Qt.UserRole+2) == 'experiments pd resolution y'
    assert m._model.item(21, 0).data(role=Qt.UserRole+3) == 0.0
    assert m._model.item(21, 0).data(role=Qt.UserRole+4) == 0.0
    assert m._model.item(21, 0).data(role=Qt.UserRole+5) == -1.0
    assert m._model.item(21, 0).data(role=Qt.UserRole+6) == 1.0
    assert m._model.item(21, 0).data(role=Qt.UserRole+7) is False
    assert m._model.item(21, 0).data(role=Qt.UserRole+8) == ''

    # test asModel
    assert m._model == m.asModel()
Esempio n. 7
0
    def addModel(self, fileName):
        reader = vtk.vtkSTLReader()
        url = QUrl(fileName)
        reader.SetFileName(url.path())
        reader.Update()

        transform = vtk.vtkTransform()
        transform.Scale((.5, .5, .5))

        transformFilter = vtk.vtkTransformPolyDataFilter()
        transformFilter.SetInputConnection(reader.GetOutputPort())
        transformFilter.SetTransform(transform)
        transformFilter.Update()

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(transformFilter.GetOutputPort())

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        self.renderer.AddActor(actor)

        print(f"Added...{url.path()}")
Esempio n. 8
0
    def modify_row_data(self):
        """ 修改数据表的单元格点击 """
        btn = self.sender()
        row = getattr(btn, 'row_index')
        # 获取组织数据
        item = {
            "id": int(self.modify_table.item(row, 0).text()),
            "date": self.modify_table.item(row, 1).text(),
            "variety_en": self.modify_table.item(row, 2).text(),
            "spot_price": float(self.modify_table.item(row, 3).text()),
            "price_increase": float(self.modify_table.item(row, 4).text())
        }
        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        url = SERVER + "spot/price/{}/".format(item["id"])

        request = QNetworkRequest(QUrl(url))
        request.setHeader(QNetworkRequest.ContentTypeHeader,
                          "application/json;charset=utf-8")

        reply = network_manager.put(request, json.dumps(item).encode("utf-8"))
        reply.finished.connect(self.modify_spot_price_reply)
Esempio n. 9
0
    def add_new_tab(self, qurl=None, label="Blank"):

        if qurl is None:
            qurl = QUrl("")

        browser = QWebEngineView()
        browser.setUrl(qurl)
        i = self.tabs.addTab(browser, label)

        self.tabs.setCurrentIndex(i)
        # end::addNewTab[]

        # tag::addNewTabSignals[]

        # More difficult! We only want to update the url when it's from the
        # correct tab
        browser.urlChanged.connect(
            lambda qurl, browser=browser: self.update_urlbar(qurl, browser))

        browser.loadFinished.connect(lambda _, i=i, browser=browser: self.tabs.
                                     setTabText(i,
                                                browser.page().title()))
Esempio n. 10
0
    def __init__(self, row, col, img_url, parent=None):
        super(Tile, self).__init__(parent=parent)
        self.row = row
        self.col = col
        self.setGeometry(0, 0, 200, 200)
        self.setMargin(10)
        self.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.mousePressEvent = lambda event: self.handle_mouse_pressed(event)
        self.setStyleSheet("border: 1px dotted gray;")

        # load the image
        manager = QNetworkAccessManager(self)
        manager.finished[QNetworkReply].connect(self.disp_image)
        manager.get(QNetworkRequest(QUrl("https://images.dog.ceo/breeds/groenendael/n02105056_6127.jpg")))

        # default pixmap
        self.default_pixmap = QPixmap(200, 200)
        self.default_pixmap.fill(Qt.gray)
        self.setPixmap(self.default_pixmap)

        # second pixmap
        self.dog_pixmap = QPixmap(200, 200)

        self.anim = QVariantAnimation()
        self.anim.setDuration(500)
        self.anim.setEasingCurve(QEasingCurve.Linear)
        self.anim.valueChanged.connect(self.anim_value_changed)
        self.anim.setStartValue(float(0))
        self.anim.setEndValue(float(180))

        self.anim1 = QVariantAnimation()
        self.anim1.setDuration(500)
        self.anim1.setEasingCurve(QEasingCurve.Linear)
        self.anim1.valueChanged.connect(self.anim1_value_changed)
        self.anim1.setStartValue(float(180))
        self.anim1.setEndValue(float(0))

        self.resize(200, 200)
        self.anim1.start()
Esempio n. 11
0
 def __init__(self, url, width, height, *args, **kwargs):
     self.display = Xvfb(int(width * 1.2), int(height * 1.2))
     self.display.start()
     super().__init__(*args, **kwargs)
     self.engine = QWebEngineView()
     size = QSize(width, height)
     self.engine.setFixedSize(size)
     self.engine.setPage(QWebEnginePage())
     settings = self.engine.page().settings()
     settings.setAttribute(QWebEngineSettings.ShowScrollBars, False)
     settings.setAttribute(QWebEngineSettings.JavascriptCanOpenWindows,
                           False)
     settings.setAttribute(QWebEngineSettings.LocalStorageEnabled, False)
     settings.setAttribute(QWebEngineSettings.HyperlinkAuditingEnabled,
                           False)
     settings.setAttribute(QWebEngineSettings.PluginsEnabled, False)
     settings.setAttribute(QWebEngineSettings.FullScreenSupportEnabled,
                           False)
     settings.setAttribute(QWebEngineSettings.ScreenCaptureEnabled, False)
     self.engine.loadFinished.connect(self.load_finished)
     self.engine.load(QUrl(url))
     self.engine.show()
Esempio n. 12
0
    def get_empty_volume_data(self):
        """ 获取持仓分析数据 """
        if not self.can_query():
            return
        current_contract = self.contract_combobox.currentText()
        if self.current_source == "daily":
            if current_contract == "主力合约":
                self.position_line_title = "行情统计{}主力合约持仓情况".format(
                    self.current_variety)
                url = SERVER + "trend/daily-position/{}/{}/main-contract/".format(
                    self.current_exchange, self.current_variety)
            else:
                self.position_line_title = "行情统计{}持仓情况".format(
                    current_contract)
                url = SERVER + "trend/daily-position/{}/{}/".format(
                    self.current_exchange, current_contract)
        elif self.current_source == "rank":
            rank_value = self.rank_spinbox.value()
            if current_contract == "主力合约":
                self.position_line_title = "{}前{}排名主力合约持仓情况".format(
                    self.current_variety, rank_value)
                url = SERVER + "trend/rank-position/{}/{}/main-contract/?rank={}".format(
                    self.current_exchange, self.current_variety, rank_value)
            else:
                self.position_line_title = "{}前{}排名持仓情况".format(
                    current_contract, rank_value)
                url = SERVER + "trend/rank-position/{}/{}/?rank={}".format(
                    self.current_exchange, current_contract, rank_value)
        else:
            return

        self.tips_animation_timer.start(400)
        self.web_container.setUpdatesEnabled(False)

        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        reply = network_manager.get(QNetworkRequest(QUrl(url)))
        reply.finished.connect(self.position_data_reply)
Esempio n. 13
0
def main():
    """ 環境変数に Qt Quick Controls 2 のコンフィグファイル設定 を追加する
      環境変数 QT_QUICK_CONTROLS_CONF に対して、本 Code と同じ
      ディレクトリにある qtquickcontrols2.conf
      ( Qt Quick Controls 2 の Configuration File ファイル)
      を設定
    """
    os.environ["QT_QUICK_CONTROLS_CONF"] = "../ui/qtquickcontrols2.conf"

    app = QApplication([])
    engine = QQmlApplicationEngine()
    # QML経由でアクセスするカウントダウン処理 CountDownTimerクラス
    #   のインスタンスを生成する
    ctimer = CountDownTimer()
    # QML経由でアクセスする音声再生処理 Soundクラスのインスタンスを生成する
    csound = Sound()
    # CountDownTimer クラスを QML の countDown としてバインディングする
    engine.rootContext().setContextProperty("countDown", ctimer)
    # Sound クラスを QML の sound としてバインディングする
    engine.rootContext().setContextProperty("sound", csound)

    url = QUrl("../ui/Main.qml")
    # QML ファイルのロード
    engine.load(url)
    # ルートオブジェクトのリストが見つからない場合は
    # 起動できないため、終了する
    if not engine.rootObjects():
        sys.exit(-1)

    # 先頭の root オブジェクト (Main.qml 内の root オブジェクト ) を取得
    root = engine.rootObjects()[0]
    # Main.qml 内の function updateCount(hour, minute, second) と接続
    ctimer.value_changed.connect(root.updateCount)

    ret = app.exec_()
    ctimer.stop()
    csound.stop()
    sys.exit(ret)
Esempio n. 14
0
    def addRecentProjectFile(self, projectFile):
        if not isinstance(projectFile, (QUrl, pyCompatibility.basestring)):
            raise TypeError("Unexpected data type: {}".format(
                projectFile.__class__))
        if isinstance(projectFile, QUrl):
            projectFileNorm = projectFile.toLocalFile()
            if not projectFileNorm:
                projectFileNorm = projectFile.toString()
        else:
            projectFileNorm = QUrl(projectFile).toLocalFile()
            if not projectFileNorm:
                projectFileNorm = QUrl.fromLocalFile(projectFile).toLocalFile()

        projects = self._recentProjectFiles()

        # remove duplicates while preserving order
        from collections import OrderedDict
        uniqueProjects = OrderedDict.fromkeys(projects)
        projects = list(uniqueProjects)
        # remove previous usage of the value
        if projectFileNorm in uniqueProjects:
            projects.remove(projectFileNorm)
        # add the new value in the first place
        projects.insert(0, projectFileNorm)

        # keep only the 10 first elements
        projects = projects[0:20]

        settings = QSettings()
        settings.beginGroup("RecentFiles")
        size = settings.beginWriteArray("Projects")
        for i, p in enumerate(projects):
            settings.setArrayIndex(i)
            settings.setValue("filepath", p)
        settings.endArray()
        settings.sync()

        self.recentProjectFilesChanged.emit()
Esempio n. 15
0
    def __init__(self, *args, **kwargs):
        super(EmptyVolume, self).__init__(*args, **kwargs)
        self.current_variety = None  # 当前选择的品种
        self.current_exchange = None  # 当前品种所属交易所
        self.current_source = "daily"  # 当前选择的数据源(日行情统计OR持仓排名)
        self.tips_animation_timer = QTimer(self)  # 显示文字提示的timer
        self.tips_animation_timer.timeout.connect(self.animation_tip_text)

        self.position_line_title = "持仓分析"  # 分合约日线和主力合约
        self.web_container.load(QUrl("file:///pages/position_line.html"))
        # 设置与页面信息交互的通道
        channel_qt_obj = QWebChannel(
            self.web_container.page())  # 实例化qt信道对象,必须传入页面参数
        self.contact_channel = PositionPageChannel()  # 页面信息交互通道
        self.web_container.page().setWebChannel(channel_qt_obj)
        channel_qt_obj.registerObject("pageContactChannel",
                                      self.contact_channel)

        self.variety_tree.selected_signal.connect(self.click_variety)  # 选择品种
        self.radio_button_group.buttonClicked.connect(
            self.change_daily_rank)  # 改变目标数据源
        self.confirm_button.clicked.connect(
            self.get_empty_volume_data)  # 确定查询数据生成图形
Esempio n. 16
0
 def importDips(self, fileURLsStr):
     self.dipModel.reset()
     for filePath in fileURLsStr:
         file = QFile(QUrl(filePath).toLocalFile())
         if (not file.open(QIODevice.ReadOnly)):
             print("impossible to open file \" " + filePath +
                   " \", error is:" + file.errorString())
             continue
         while not file.atEnd():
             line = str(file.readLine(), encoding='utf-8')
             lineCells = line.split(',')
             try:
                 float(lineCells[0])
             except ValueError:
                 continue
             dip = Dipole.initByComposent(xPos=float(lineCells[0]),
                                          yPos=float(lineCells[1]),
                                          zPos=float(lineCells[2]),
                                          quaternion=anglesSphToQuaternion(
                                              float(lineCells[3]),
                                              float(lineCells[4])),
                                          parent=self.dipModel)
             self.dipModel.append(dip)
Esempio n. 17
0
    def testSetAttributes(self):
        #Construct QUrl by set* methods
        url = QUrl()

        url.setScheme('ftp')
        self.assertEqual(url.toString(), 'ftp:')

        url.setHost('www.google.com')
        self.assertEqual(url.toString(), 'ftp://www.google.com')

        url.setPort(8080)
        self.assertEqual(url.toString(), 'ftp://www.google.com:8080')

        url.setPath('/mail/view')
        self.assertEqual(url.toString(), 'ftp://www.google.com:8080/mail/view')

        url.setUserName('john')
        self.assertEqual(url.toString(),
                         'ftp://[email protected]:8080/mail/view')

        url.setPassword('abc123')
        self.assertEqual(url.toString(),
                         'ftp://*****:*****@www.google.com:8080/mail/view')
Esempio n. 18
0
    def reinit_code(self):
        reqdata = {'client_id': self.__client_id, 'scope': 'gist'}
        req = request.Request('https://github.com/login/device/code',
                              data=json.dumps(reqdata).encode('UTF-8'),
                              headers=self.__headers)
        req.get_method = lambda: 'POST'
        code, ret = urlopen_nt(req)
        if code != 200:
            raise RuntimeError('code %d when trying to register device' % code)
        init_data = json.loads(ret.read().decode('UTF-8'))
        print(init_data)
        self.__device_code = init_data['device_code']
        self.__interval = init_data.get('interval', 5)
        url = init_data['verification_uri']

        self.__await_login_redirect = True
        self.__webprofile = QWebEngineProfile(parent=self.__webview)
        self.__webpage = QWebEnginePage(
            self.__webprofile, parent=self.__webview
        )  # just to be sure they are deleted in proper order
        self.__webview.setPage(self.__webpage)
        self.__webview.load(QUrl(url))
        self.__devidlabel.setText('code: %s' % (init_data['user_code'], ))
Esempio n. 19
0
def main():
    """ .qml ファイルのロードする準備
    QGuiApplication と QQuickView のインスタンスを生成する
    """
    app = QApplication([])
    view = QQuickView()
    """ Qt Quickの表示方法の設定
    PySide2.QtQuick.QQuickView.ResizeMode の enum 定義
    
    表示サイズはQMLのrootのQML rootアイテム(topの QMLオブジェクト)で
    サイズ変更されます。
    QQuickView.SizeViewToRootObject	: 表示はQMLの rootアイテム
                                      (topのQMLオブジェクト)でサイズ変更する
    QQuickView.SizeRootObjectToView	 : 表示は、rootアイテムサイズに
                                       QMLのオブジェクトが自動的に調整する
    """
    view.setResizeMode(QQuickView.SizeRootObjectToView)
    """ 画面表示するQMLコンポーネントの読み出し
    URL形式で画面表示するQMLファイルを設定する。
    """
    url = QUrl("HelloWorld.qml")
    view.setSource(url)
    if view.status() == QQuickView.Error:
        sys.exit(-1)

    # QMLコンポーネントの表示
    view.show()

    # QApplicationのイベントループ
    ret = app.exec_()
    """ アプリケーションの終了処理
    注意:
      アプリケーション終了前にQQuickViewのオブジェクトを
       delしてから終了させる。
    """
    del view
    sys.exit(ret)
Esempio n. 20
0
    def __init__(self):
        super().__init__()
        self.setWindowTitle("pppGCS : Plural Python Parrot GCS")

        self.DeviceInfo = ppDeviceInfoWidget()
        self.DeviceList = ppDiscoverWidget()
        self.leftcol_layout = QVBoxLayout()
        self.leftcol_layout.addWidget(self.DeviceInfo)
        self.leftcol_layout.addWidget(self.DeviceList)

        self.VideoViewer = ppVideoWidget()

        self.tabs = QTabWidget()
        self.tabs.addTab(self.VideoViewer, "Video stream")
        self.mapview = QQuickView()
        self.mapcontainer = QWidget.createWindowContainer(self.mapview, self)
        url = QUrl("map.qml")
        self.mapview.setSource(url)
        self.mapview.show()
        self.tabs.addTab(self.mapcontainer, "map view")

        self.FlightInfo = ppFlightInfoWidget()
        self.ControlInfo = ppControlWidget()
        self.rightcol_layout = QVBoxLayout()
        self.rightcol_layout.addWidget(self.tabs)
        self.lowrightcol_layout = QHBoxLayout()
        self.lowrightcol_layout.addWidget(self.FlightInfo)
        self.lowrightcol_layout.addWidget(self.ControlInfo)
        self.rightcol_layout.addLayout(self.lowrightcol_layout)

        self.layout = QHBoxLayout()
        self.layout.addLayout(self.leftcol_layout)
        self.layout.addLayout(self.rightcol_layout)

        self.setLayout(self.layout)

        self.DeviceList.DeviceChanged.connect(self.on_device_changed)
Esempio n. 21
0
    def __init__(self, config):
        super().__init__()
        self.config = config
        self.config.appActivated.connect(self._appActivated)
        self.mdi = QMdiArea(self)
        self.mdi.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdi.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.setCentralWidget(self.mdi)
        self.menu = self.menuBar().addMenu("&Windows")
        self.aboutMenu = QMenuBar(self.menuBar())
        self.menuBar().setCornerWidget(self.aboutMenu)
        m = self.aboutMenu.addMenu("&Help")
        self.helpNexxT = QAction("Help ...")
        self.aboutNexxT = QAction("About nexxT ...")
        self.aboutQt = QAction("About Qt ...")
        self.aboutPython = QAction("About Python ...")
        m.addActions([self.helpNexxT])
        m.addSeparator()
        m.addActions([self.aboutNexxT, self.aboutQt, self.aboutPython])
        self.helpNexxT.triggered.connect(lambda: QDesktopServices.openUrl(
            QUrl("https://nexxT.readthedocs.org")))
        self.aboutNexxT.triggered.connect(lambda: QMessageBox.about(
            self, "About nexxT", """\
This program uses <b>nexxT</b> %(version)s, a generic hybrid python/c++ framework for developing computer vision 
algorithms.<br><br>

nexxT is available under the <a href='https://github.com/ifm/nexxT/blob/master/LICENSE'>Apache 2.0 License</a> together 
with the <a href='https://github.com/ifm/nexxT/blob/master/NOTICE'>notice</a>. 
""" % dict(version=nexxT.__version__)))
        self.aboutQt.triggered.connect(lambda: QMessageBox.aboutQt(self))
        self.aboutPython.triggered.connect(self._aboutPython)
        self.toolbar = None
        self.managedMdiWindows = []
        self.managedSubplots = {}
        self.windows = {}
        self.activeApp = None
        self._ignoreCloseEvent = False
Esempio n. 22
0
def read_info(path):
    from PySide2.QtCore import QUrl
    from mne.io import read_raw_cnt, read_raw_eeglab

    list_path = [QUrl(i).toLocalFile() for i in path]

    try:
        raw = {
            k: read_raw_cnt(k,
                            montage=None,
                            preload=True,
                            stim_channel=False,
                            verbose=None)
            if k.endswith("cnt") else read_raw_eeglab(k,
                                                      montage=None,
                                                      preload=True,
                                                      stim_channel=False,
                                                      verbose=None)
            for k in list_path
        }
        info = list()
        sfreq = list()
        for signal in raw:
            raw_info = raw[signal].info
            info.append(raw_info['subject_info'])
            sfreq.append(raw_info['sfreq'])
        del raw
        return info, sfreq

    except IOError:
        print('An error occurred trying to read the file.')
    except ImportError:
        print('No file found.')
    except:
        print('Cant read file')
    finally:
        print('Upload info correctly')
Esempio n. 23
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.threadpool = QThreadPool()
        worker = Worker(
        )  # Any other args, kwargs are passed to the run function
        self.threadpool.start(worker)
        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl("http://127.0.0.1:8015/"))
        # self.setCentralWidget(self.browser)
        self.btn = QPushButton('Button', self)
        self.btn.resize(self.btn.sizeHint())
        self.edit = QLineEdit("Write my name here")
        # self.button = QPushButton("Show Greetings")
        # # Create layout and add widgets
        # layout = QVBoxLayout()
        # layout.addWidget(self.browser)

        lay = QVBoxLayout(self)
        lay.addWidget(self.btn)
        lay.addWidget(self.browser)
        lay.addWidget(self.edit)

        #self.layout2.addWidget(self.browser)
        # # Set dialog layout
        # self.setLayout(layout)
        # # Add button signal to greetings slot
        self.btn.clicked.connect(self.greetings)

        def closeEvent(self, event):
            # do stuff
            if can_exit:
                worker.terminate()
                event.accept()  # let the window close
                sys.exit()
            else:
                event.ignore()
Esempio n. 24
0
    def __init__(self, game_model: GameModel, dev: bool, parent) -> None:
        super().__init__(parent)
        self.game_model = game_model
        self.setMinimumSize(800, 600)

        self.page = LoggingWebPage(self)
        # Required to allow "cross-origin" access from file:// scoped canvas.html to the
        # localhost HTTP backend.
        self.page.settings().setAttribute(
            QWebEngineSettings.LocalContentCanAccessRemoteUrls, True)

        if dev:
            url = QUrl("http://localhost:3000")
        else:
            url = QUrl.fromLocalFile(
                str(Path("client/build/index.html").resolve()))
        server_settings = ServerSettings.get()
        host = server_settings.server_bind_address
        if host.startswith("::"):
            host = f"[{host}]"
        port = server_settings.server_port
        url.setQuery(f"server={host}:{port}")
        self.page.load(url)
        self.setPage(self.page)
Esempio n. 25
0
    def showContextMenu(self, pos: QPoint) -> None:
        mods = self.getSelectedMods()
        if not mods:
            return
        menu = QMenu(self)
        actionOpen = menu.addAction(QIcon(str(getRuntimePath('resources/icons/open-folder.ico'))), '&Open Directory')
        actionOpen.triggered.connect(lambda: [
            util.openDirectory(self.modmodel.getModPath(mod))  # type: ignore
            for mod in mods
        ])
        menu.addSeparator()
        actionEnable = menu.addAction('&Enable')
        actionEnable.triggered.connect(lambda: [
            asyncio.create_task(self.enableSelectedMods(True))
        ])
        actionEnable.setEnabled(not all(mod.enabled for mod in mods))
        actionDisable = menu.addAction('&Disable')
        actionDisable.triggered.connect(lambda: [
            asyncio.create_task(self.enableSelectedMods(False))
        ])
        actionDisable.setEnabled(not all(not mod.enabled for mod in mods))
        menu.addSeparator()
        actionUninstall = menu.addAction('&Uninstall')
        actionUninstall.triggered.connect(lambda: [
            asyncio.create_task(self.deleteSelectedMods())
        ])
        menu.addSeparator()
        actionOpenNexus = menu.addAction(
            QIcon(str(getRuntimePath('resources/icons/browse.ico'))), 'Open &Nexus Mods page')
        actionOpenNexus.triggered.connect(lambda: [
            QDesktopServices.openUrl(QUrl(f'https://www.nexusmods.com/witcher3/mods/{modid}'))
            for modid in {mod.modid for mod in mods if mod.modid > 0}
        ])
        actionOpenNexus.setEnabled(not all(mod.modid <= 0 for mod in mods))

        menu.popup(self.viewport().mapToGlobal(pos))
Esempio n. 26
0
    def __init__(self, parent=None):
        QObject.__init__(self, parent)
        self.parent = parent
        self.usuario = ""
        self.password = ""
        self.token = []
        self.mmethod = ""
        self.mpid = ""
        self.mparams = []
        self.mid = 0
        self.boolConnect = False
        self.intCountConnect = 0
        self.intReply = 0
        self.intReplyMax = 2
        self.urlServer = QUrl()
        self.versionct = "4"  #trytond
        self.mhost = ""
        self.mdbase = ""
        self.mport = ""
        self.preferences = {}
        self.boolRun = False
        self.boolDirect = False
        self.boolRecursive = False
        self.mtypeCall = "order"
        self.mDir = QDir.currentPath()

        self.tempCallData = QJsonArray()
        self.tempCallFunctionArgs = QJsonArray()

        self.m_engine = QQmlApplicationEngine()

        #        connect(managerAccess, SIGNAL(finished(QNetworkReply*)),
        #            this, SLOT(replyFinishedOrder(QNetworkReply*)));
        self.managerAccess = QNetworkAccessManager(self)
        self.managerAccess.finished[QNetworkReply].connect(
            self.replyFinishedOrder)
    def build_initial_request_list(self):
        # The initial request is a custom job.
        url = QUrl(self.camera_description.location)
        request = QNetworkRequest(url)
        request.setRawHeader(QByteArray(b"User-Agent"),
                             QByteArray(b"Panasonic Android/1 DM-CP"))
        self.initial_requests.put(request)

        r = self.build_request({
            "mode": "accctrl",
            "type": "req_acc",
            "value": "4D454930-0100-1000-8000-D453835D5F48",
            "value2": "LG-SP320"
        })
        self.initial_requests.put(r)

        r = self.build_request({"mode": "getinfo", "type": "capability"})
        self.initial_requests.put(r)

        r = self.build_request({"mode": "getinfo", "type": "allmenu"})
        self.initial_requests.put(r)

        r = self.build_request({"mode": "getinfo", "type": "curmenu"})
        self.initial_requests.put(r)
Esempio n. 28
0
    def __init__(self, parent=None):
        super(SlippyMap, self).__init__(parent)

        self._offset = QPoint()
        self._tilesRect = QRect()
        self._tilePixmaps = {}  # Point(x, y) to QPixmap mapping
        self._manager = QNetworkAccessManager()
        self._url = QUrl()
        # public vars
        self.width = 400
        self.height = 300
        self.zoom = 15
        self.latitude = 59.9138204
        self.longitude = 10.7387413

        self._emptyTile = QPixmap(TDIM, TDIM)
        self._emptyTile.fill(Qt.lightGray)

        self.request = QNetworkRequest()
        self.cache = QNetworkDiskCache()
        self.cache.setCacheDirectory(
            QStandardPaths.writableLocation(QStandardPaths.CacheLocation))
        self._manager.setCache(self.cache)
        self._manager.finished.connect(self.handleNetworkData)
def main():
    argv = sys.argv

    # Trick to set the style / not found how to do it in pythonic way
    argv.extend(["-style", "universal"])
    app = QGuiApplication(argv)

    # why needed now?
    app.setOrganizationName("Some Company")
    app.setOrganizationDomain("somecompany.com")
    app.setApplicationName("Amazing Application")

    qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar")
    imgProvider = MatplotlibIconProvider()

    # !! You must specified the QApplication as parent of QQmlApplicationEngine
    # otherwise a segmentation fault is raised when exiting the app
    engine = QQmlApplicationEngine(parent=app)
    engine.addImageProvider("mplIcons", imgProvider)

    context = engine.rootContext()
    data_model = DataSeriesModel()
    context.setContextProperty("dataModel", data_model)
    mainApp = Form(data=data_model)
    context.setContextProperty("draw_mpl", mainApp)

    engine.load(QUrl('main.qml'))

    win = engine.rootObjects()[0]
    mainApp.figure = win.findChild(QObject, "figure").getFigure()

    rc = app.exec_()
    # There is some trouble arising when deleting all the objects here
    # but I have not figure out how to solve the error message.
    # It looks like 'app' is destroyed before some QObject
    sys.exit(rc)
Esempio n. 30
0
 def __init__(self, debug=False, parent=None):
     QMainWindow.__init__(self, parent)
     QWebEngineSettings.defaultSettings().setAttribute(
         QWebEngineSettings.JavascriptCanAccessClipboard, True)
     QWebEngineSettings.defaultSettings().setAttribute(
         QWebEngineSettings.JavascriptCanPaste, True)
     self.view = QWebEngineView(self)
     self.setCentralWidget(self.view)
     self.chan = QWebChannel(self)
     self.comm = Comm(self)
     self.chan.registerObject('channelInterface', self.comm)
     self.view.page().setWebChannel(self.chan)
     self.view.setContextMenuPolicy(Qt.NoContextMenu)
     if debug:
         self.view.load('http://localhost:8080')
         self.devView = QWebEngineView()
         self.view.page().setDevToolsPage(self.devView.page())
         self.devView.show()
     else:
         url = 'file:///' + QDir.fromNativeSeparators(
             os.path.abspath(
                 os.path.join(os.path.dirname(__file__),
                              './frontend/dist/index.html')))
         self.view.load(QUrl(url))