Advertisement
Guest User

timvdm

a guest
Oct 6th, 2009
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. #import openbabel
  2. # needed for OB formats on linux (can be omitted by importing openbabel first)
  3. import sys
  4. if sys.platform.find('linux') != -1:
  5. try:
  6. import dl
  7. except ImportError:
  8. import DLFCN as dl
  9. sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL)
  10.  
  11.  
  12. from PyQt4.QtCore import *
  13. from PyQt4.QtGui import *
  14. from PyQt4 import uic
  15. import Avogadro
  16. import sys
  17.  
  18.  
  19. class MainWindow(QMainWindow):
  20. def __init__(self):
  21. QMainWindow.__init__(self)
  22.  
  23. uiFile = file('mainwindow.ui', 'r')
  24. self.ui = uic.loadUi(uiFile, self)
  25.  
  26. self.connect(self.ui.actionOpen, SIGNAL('triggered()'), self, SLOT('open()'))
  27. self.connect(self.ui.listWidget, SIGNAL('currentRowChanged(int)'), self, SLOT('load(int)'))
  28.  
  29. self.objects = []
  30.  
  31. def newGLWidget(self):
  32. glWidget = Avogadro.GLWidget()
  33. glWidget.loadDefaultEngines()
  34. glWidget.quality = 4
  35. toolGroup = Avogadro.ToolGroup()
  36. tool = Avogadro.PluginManager.instance.tool('Navigate', None)
  37. if tool:
  38. toolGroup.append(tool)
  39. self.objects.append(tool)
  40. glWidget.toolGroup = toolGroup
  41. self.objects.append(glWidget)
  42. self.objects.append(toolGroup)
  43. return glWidget
  44.  
  45. @pyqtSignature('load(int)')
  46. def load(self, row):
  47. mol = self.molFile.molecule(row)
  48. self.objects.append(mol)
  49. glWidget = self.newGLWidget()
  50. glWidget.molecule = mol
  51. mdiWindow = self.ui.mdiArea.addSubWindow(Avogadro.toPyQt(glWidget))
  52. print glWidget
  53. print Avogadro.toPyQt(glWidget)
  54. mdiWindow.setWindowTitle(self.molFile.titles[row])
  55. mdiWindow.show()
  56.  
  57. @pyqtSignature('readThreadFinnished()')
  58. def readThreadFinnished(self):
  59. self.ui.listWidget.clear()
  60. self.ui.listWidget.addItems(self.molFile.titles)
  61. self.ui.statusbar.showMessage('Done.', 5)
  62.  
  63. @pyqtSignature('open()')
  64. def open(self):
  65. filename = str(QFileDialog.getOpenFileName(self, 'Open', QDir.currentPath(),
  66. 'Chemistry files (*.cml *.sdf *.mol *.xyz)'))
  67. self.molFile = Avogadro.MoleculeFile.readFile(filename, '', '', False)
  68. self.connect(Avogadro.toPyQt(self.molFile), SIGNAL('ready()'), self, SLOT('readThreadFinnished()'))
  69. self.ui.statusbar.showMessage('Reading file...')
  70.  
  71.  
  72. if __name__ == "__main__":
  73. app = QApplication(sys.argv)
  74.  
  75. window = MainWindow()
  76. window.show()
  77.  
  78. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement