File: remote.py

package info (click to toggle)
openstructure 2.9.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 205,228 kB
  • sloc: cpp: 188,129; python: 35,361; ansic: 34,298; fortran: 3,275; sh: 286; xml: 146; makefile: 29
file content (73 lines) | stat: -rw-r--r-- 2,453 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from PyQt5 import QtCore, QtWidgets
import threading
from ost import LogError
from ost import gui, gfx
from ost.io.remote import RemoteLoad, REMOTE_REPOSITORIES
import re

class RemoteLoader(QtWidgets.QWidget):
  def __init__(self):
    QtWidgets.QWidget.__init__(self)
    self._line = QtWidgets.QLineEdit(self)
    self._load = QtWidgets.QToolButton(self)
    self._line.returnPressed.connect(self._DoLoad)
    self._load.clicked.connect(self._DoLoad)
    hbox = QtWidgets.QHBoxLayout(self)
    hbox.addWidget(self._line,1)
    hbox.addWidget(self._load,0)
    self.setLayout(hbox)
    hbox.setContentsMargins(3,3,3,3)
    hbox.setSpacing(3)
    self._menu = self._RemoteMenu()
    self._load.setMenu(self._menu)
    self._current_repo = 'pdb'
    self._UpdateLoadButton(self._current_repo)
    self.setFixedHeight(self._load.height())
    self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)

  def _RemoteMenu(self):
    menu = QtWidgets.QMenu()
    action_group = QtWidgets.QActionGroup(menu)
    for k,v in REMOTE_REPOSITORIES.items():
      action = menu.addAction(v.name)
      action.setCheckable(True)
      if k == 'pdb':
        action.setChecked(True)
      action.setData(QtCore.QVariant(k))
      action_group.addAction(action)
    menu.triggered.connect(self._ToggleRepo)
    return menu
  def _UpdateLoadButton(self, current):
    name = REMOTE_REPOSITORIES[current].name
    self._load.setText('load from %s  ' % name)

  def _ToggleRepo(self, action):
    self._current_repo = str(action.data())
    self._UpdateLoadButton(self._current_repo)


  def _DoLoad(self):
    split_ids = []
    for p in str(self._line.text()).split(','):
      for k in p.split():
        if len(k.strip()):
          split_ids.append(k.strip())
    self._line.setText('')
    for split_id in split_ids:
      try:
        ent = RemoteLoad(split_id, from_repo=self._current_repo)
      except Exception as e:
        LogError(str(e))
        continue
      g = gfx.Entity(split_id, ent)
      try:
        gfx.Scene().Add(g)
      except Exception as e:
        LogError(str(e))

remote_loader=RemoteLoader()
remote_loader_for_panel=gui.Widget(remote_loader)
remote_loader_for_panel.qobject.setSizePolicy(QtWidgets.QSizePolicy.Expanding, 
                                              QtWidgets.QSizePolicy.Fixed)
panels=gui.GostyApp.Instance().perspective.panels
panels.AddWidgetToPool("Remote Loader",remote_loader_for_panel)