@@ -33,6 +33,23 @@ def __init__(self, fileName=None, loglevel="WARNING"):
3333 [os .path .abspath (os .path .dirname (__file__ )) + "/icon_themes/" ]
3434 )
3535 self .loglevels = ["Critical" , "Error" , "Warning" , "Info" , "Debug" , "Notset" ]
36+ # RDKit draw options, tooltip, default value is read from molViewWidget
37+ self ._drawopts_actions = [
38+ (
39+ "prepareMolsBeforeDrawing" ,
40+ "Prepare molecules before drawing (i.e. fix stereochemistry and annotations)" ,
41+ ),
42+ (
43+ "addStereoAnnotation" ,
44+ "Add stereo annotation (R/S and E/Z)" ,
45+ ),
46+ (
47+ "unspecifiedStereoIsUnknown" ,
48+ "Show wiggly bond at potential undefined chiral stereo centres "
49+ + "and cross bonds for undefined doublebonds" ,
50+ ),
51+ ]
52+
3653 self .editor = MolEditWidget ()
3754 self .chemEntityActionGroup = QtGui .QActionGroup (self , exclusive = True )
3855 self .ptable = PTable (self .chemEntityActionGroup )
@@ -133,6 +150,18 @@ def applySettings(self):
133150 self .editor .kekulize_on_cleanup = kekulize_on_cleanup
134151 self .cleanupSettingActions ["kekulize_on_cleanup" ].setChecked (kekulize_on_cleanup )
135152
153+ # Draw options
154+ for key , statusTip in self ._drawopts_actions :
155+ viewer_value = self .editor .getDrawOption (key )
156+ settings_value = self .settings .value (f"drawoptions/{ key } " , viewer_value , type = bool )
157+ if settings_value != viewer_value :
158+ self .editor .setDrawOption (key , settings_value )
159+ self .drawOptionsActions [key ].setChecked (settings_value )
160+
161+ if self .settings .contains ("drawoptions/fixedBondLength" ):
162+ fixedBondLength = self .settings .value ("drawoptions/fixedBondLength" , 15 , type = int )
163+ self .editor .setDrawOption ("fixedBondLength" , fixedBondLength )
164+
136165 # Function to setup status bar, central widget, menu bar, tool bar
137166 def SetupComponents (self ):
138167 self .myStatusBar = QStatusBar ()
@@ -218,6 +247,9 @@ def CreateMenus(self):
218247 self .cleanupMenu = self .settingsMenu .addMenu ("Cleanup" )
219248 for key , action in self .cleanupSettingActions .items ():
220249 self .cleanupMenu .addAction (action )
250+ self .drawOptionsMenu = self .settingsMenu .addMenu ("Drawing Options" )
251+ for key , statusTip in self ._drawopts_actions :
252+ self .drawOptionsMenu .addAction (self .drawOptionsActions [key ])
221253
222254 # Help menu
223255 self .helpMenu .addAction (self .aboutAction )
@@ -452,6 +484,13 @@ def setLogLevel(self):
452484 self .settings .setValue ("loglevel" , loglevel )
453485 self .settings .sync ()
454486
487+ def setDrawOption (self ):
488+ sender = self .sender ()
489+ option = sender .objectName ()
490+ self .editor .setDrawOption (option , sender .isChecked ())
491+ self .settings .setValue (f"drawoptions/{ option } " , sender .isChecked ())
492+ self .settings .sync ()
493+
455494 def setTheme (self ):
456495 sender = self .sender ()
457496 theme_name = sender .objectName ()
@@ -914,6 +953,13 @@ def CreateActions(self):
914953 )
915954 self .loglevelActionGroup .addAction (self .loglevelactions [key ])
916955
956+ self .drawOptionsActions = {}
957+ for key , statusTip in self ._drawopts_actions :
958+ self .drawOptionsActions [key ] = QAction (
959+ key , self , statusTip = statusTip , triggered = self .setDrawOption , objectName = key , checkable = True
960+ )
961+ # self.drawOptionsActionGroup.addAction(self.drawOptionsActions[key])
962+
917963 self .openChemRxiv = QAction (
918964 QIcon .fromTheme ("icons8-Exit" ),
919965 "ChemRxiv Preprint" ,
0 commit comments