13 QMenu.__init__(self, parent)
15 gui.AddMenuAction(self,
'Open', self.
_Open_Open, shortcut=
'Ctrl+O')
16 gui.AddMenuAction(self,
'Save As...', self.
_SaveAs_SaveAs,
17 shortcut=
'Ctrl+Shift+S',
20 filename,_=QFileDialog.getOpenFileName(
None,
'Open file',
'')
21 if(QFileInfo(filename).isFile()):
22 gui.FileLoader.LoadObject(str(filename))
25 sel_node=gui.SceneSelection.Instance().GetActiveNode(0)
26 filename=QFileDialog.getSaveFileName(
None,
'Save As',
27 '%s.pdb' % sel_node.name)
28 io.SavePDB(sel_node.view, str(filename))
32 QWidget.__init__(self)
33 self.setWindowFlags(Qt.Tool)
35 l.addWidget(QLabel(
"Near"), 0, 0)
36 l.addWidget(QLabel(
"Far"), 1, 0)
37 bounds_near = QLineEdit(str(0))
38 bounds_near.setValidator(QIntValidator(0, 9999, bounds_near))
39 bounds_near.setMaxLength(4)
40 bounds_near.setMaximumWidth(50)
41 bounds_far = QLineEdit(str(200))
42 bounds_far.setValidator(QIntValidator(0, 9999, bounds_far))
43 bounds_far.setMaxLength(4)
44 bounds_far.setMaximumWidth(50)
45 l.addWidget(bounds_near, 0, 1, 2, 1)
46 l.addWidget(bounds_far, 0, 3, 2, 1)
47 self.
near_near_ = QSlider(Qt.Horizontal)
48 self.
near_near_.setMinimum(int(bounds_near.text()))
49 self.
near_near_.setMaximum(int(bounds_far.text()))
51 self.
far_far_ = QSlider(Qt.Horizontal)
52 self.
far_far_.setMinimum(int(bounds_near.text()))
53 self.
far_far_.setMaximum(int(bounds_far.text()))
57 self.
far_far_.setValue(far)
58 self.
auto_auto_ = QCheckBox(
"Continuous Automatic Clipping")
61 l.addWidget(self.
near_near_, 0, 2)
62 l.addWidget(self.
far_far_, 1, 2)
63 l.addWidget(self.
auto_auto_, 2, 0, 1, 4)
64 self.
near_near_.valueChanged.connect(self.
SetNearSetNear)
65 self.
far_far_.valueChanged.connect(self.
SetFarSetFar)
66 self.
auto_auto_.stateChanged.connect(self.
SetAutoSetAuto)
67 bounds_near.textEdited.connect(self.
SetNearBoundsSetNearBounds)
68 bounds_far.textEdited.connect(self.
SetFarBoundsSetFarBounds)
83 self.
near_near_.setMinimum(int(text))
84 self.
far_far_.setMinimum(int(text))
88 self.
near_near_.setMaximum(int(text))
89 self.
far_far_.setMaximum(int(text))
93 QDialog.__init__(self)
95 l.setColumnMinimumWidth(0, 100)
96 l.addWidget(QLabel(
"Width (px)"), 0, 0)
97 l.addWidget(QLabel(
"Height (px)"), 1, 0)
98 self.
width_width_=QLineEdit(str(width))
99 self.
height_height_=QLineEdit((str(height)))
100 self.
width_width_.setValidator(QIntValidator(50, 3000, self.
width_width_))
101 self.
height_height_.setValidator(QIntValidator(50, 3000, self.
height_height_))
102 self.
opaque_opaque_=QCheckBox(
"Force Opaque Background")
103 l.addWidget(self.
width_width_, 0, 1)
104 l.addWidget(self.
height_height_, 1, 1)
105 l.addWidget(self.
opaque_opaque_, 2, 1)
107 cancel=QPushButton(
"Cancel")
108 cancel.clicked.connect(self.reject)
109 hbox.addWidget(cancel)
110 export=QPushButton(
"Export")
111 hbox.addWidget(export)
112 export.setDefault(
True)
113 l.addLayout(hbox, 3, 1, 2, 1)
114 export.clicked.connect(self.accept)
117 return not self.
opaque_opaque_.isChecked()
121 return int(self.
width_width_.text())
125 return int(self.
height_height_.text())
129 QMenu.__init__(self, parent)
130 self.setTitle(
'Scene')
134 shortcut=
'Ctrl+Shift+F', checkable=
True,
136 gui.AddMenuAction(self,
'Center', self.
_Center_Center,
138 gui.AddMenuAction(self,
'Fit To Screen', self.
_FitToScreen_FitToScreen,
142 gui.AddMenuAction(self,
'Save Snapshot', self.
_ExportScene_ExportScene)
143 gui.AddMenuAction(self,
'Scene Clipping', self.
_ClipScene_ClipScene, shortcut=
'Ctrl+Shift+C')
145 def _ExportScene(self):
150 options = QFileDialog.Options()
151 options |= QFileDialog.DontUseNativeDialog
152 filename, _ = QFileDialog.getSaveFileName(self,
"Save Snapshot",
"snapshot.png",
"", options=options)
155 gfx.Scene().Export(str(filename), qd.width, qd.height, qd.transparent)
157 def _ClipScene(self):
161 def _AboutToShow(self):
165 sel=gui.SceneSelection.Instance()
166 gfx.Scene().center=sel.GetActiveNode(0).center
168 def _SetSceneBackground(self):
173 def _ToggleFog(self):
177 def _FitToScreen(self):
178 sel=gui.SceneSelection.Instance()
179 gfx.FitToScreen(sel.GetActiveNode(0))
181 def _SuperposeDialog(self):
182 sel=gui.SceneSelection.Instance()
183 act_count=sel.GetActiveNodeCount()
187 gfx_ent_1 = sel.GetActiveNode(i)
190 gfx_ent_1 = sel.GetActiveNode(i)
192 gfx_ent_2 = sel.GetActiveNode(i)
195 gfx_ent_2 = sel.GetActiveNode(i)
197 if sd.rmsd_superposed_atoms !=
None:
198 if sd.reference == 0:
199 gfx_ent_2.UpdatePositions()
202 gfx_ent_1.UpdatePositions()
204 LogScript(
'RMSD: %.3f'%sd.rmsd)
205 LogScript(
'RMSD superposed atoms: %.3f'%sd.rmsd_superposed_atoms)
206 LogScript(
'fraction superposed: %.3f'%sd.fraction_superposed)
207 elif sd.rmsd !=
None:
208 if sd.reference == 0:
209 gfx_ent_2.UpdatePositions()
212 gfx_ent_1.UpdatePositions()
214 LogScript(
'RMSD: %.3f'%sd.rmsd)
215 elif sd.superposition_error !=
None:
216 LogScript(
'Superposition Failed: ' + sd.superposition_error)
218 LogScript(
'Superposition Failed!')
222 QMenu.__init__(self, parent)
223 self.setTitle(
'Window')
224 gosty=gui.GostyApp.Instance()
226 inspector_visible=gosty.GetWidget(
'InspectorDialog').isVisible()
227 self.
_gl_win_action_gl_win_action=gui.AddMenuAction(self,
'GL Window',
229 checked=gosty.gl_win.qobject.isVisible(),
234 checked=inspector_visible,
237 self.addMenu(gosty.perspective.panels.menu)
238 gui.AddMenuAction(self,
'Reset View', self.
_ResetView_ResetView)
239 def _AboutToShow(self):
240 gosty=gui.GostyApp.Instance()
241 self.
_gl_win_action_gl_win_action.setChecked(gosty.gl_win.qobject.isVisible())
242 inspector_visible=gosty.GetWidget(
'InspectorDialog').isVisible()
245 def _ToggleShowGLWindow(self):
246 gosty=gui.GostyApp.Instance()
247 gl_win=gosty.GetGLWin()
248 if gl_win
and gl_win.qobject.isHidden():
253 def _ToggleShowInspector(self):
254 gosty=gui.GostyApp.Instance()
255 inspector=gosty.GetWidget(
'InspectorDialog')
256 if inspector
and inspector.isHidden():
261 def _ResetView(self):
262 msg_box = QMessageBox()
263 msg_box.setWindowTitle(
"Reset the Panels and Widget");
264 msg_box.setIcon(QMessageBox.Question)
265 msg_box.setText(
"Do you really want to reset the Panels and Widgets?");
266 msg_box.setStandardButtons(QMessageBox.Yes |
268 msg_box.setDefaultButton(QMessageBox.Cancel);
269 ret = msg_box.exec_();
270 if(ret == QMessageBox.Yes):
271 settings = QSettings()
272 settings.setValue(
"restore_settings",QVariant(
False))
273 info_box = QMessageBox()
274 info_box.setStandardButtons(QMessageBox.Ok)
275 info_box.setIcon(QMessageBox.Information)
276 info_box.setWindowTitle(
"Restart OpenStructure")
277 info_box.setText(
"You must restart OpenStructure for the changes to take effect!");
282 QMenu.__init__(self, parent)
283 self.setTitle(
'Help')
284 gui.AddMenuAction(self,
'Documentation', self.
_VisitDocs_VisitDocs)
286 if sys.platform==
'darwin':
287 gui.AddMenuAction(self,
'Install Command Line Tool',
288 termuse.InstallTerminalPrograms)
289 def _VisitDocs(self):
290 QDesktopServices.openUrl(QUrl(
"http://www.openstructure.org/docs/"))
292 def _ShowAboutDialog(self):
296 _InitMenu.mbar=gui.GostyApp.Instance().perspective.GetMenuBar()
301 _InitMenu.mbar.addMenu(file_menu)
302 _InitMenu.mbar.addMenu(scene_menu)
303 _InitMenu.mbar.addMenu(win_menu)
304 _InitMenu.mbar.addMenu(help_menu)
graphical rendering of mol::EntityHandle entites
main class for all graphic objects
main class for organization and root for the graphical display