Skip to content

Commit

Permalink
even more changes towards a gui
Browse files Browse the repository at this point in the history
  • Loading branch information
Oeffner committed May 17, 2019
1 parent 5f13bf9 commit da8d4d7
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 20 deletions.
49 changes: 32 additions & 17 deletions crys3d/hklview/cmdlineframes.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ def __init__ (self, *args, **kwds) :
kwds['settings'] = self.settings
kwds['mprint'] = self.mprint
self.viewer = view_3d.hklview_3d( **kwds )
self.master_phil = libtbx.phil.parse( philstr )
self.master_phil = libtbx.phil.parse( masterphilstr )
self.params = self.master_phil.fetch().extract()
self.infostr = ""

Expand All @@ -249,6 +249,7 @@ def __init__ (self, *args, **kwds) :
self.socket = self.context.socket(zmq.PAIR)
self.socket.connect("tcp://127.0.0.1:7895")
self.STOP = False
print "starting socketthread"
self.msgqueuethrd = threading.Thread(target = self.zmq_listen )
self.msgqueuethrd.daemon = True
self.msgqueuethrd.start()
Expand All @@ -258,10 +259,10 @@ def zmq_listen(self):
while not self.STOP:
philstr = self.socket.recv()
philstr = str(philstr)
self.mprint("Received phil:\n" + philstr)
self.mprint("Received phil string:\n" + philstr)
new_phil = self.GetNewPhilString(philstr)
self.update_settings(new_phil)
print "in zmq listen"
#print "in zmq listen"
time.sleep(1)
del self.socket

Expand All @@ -272,8 +273,14 @@ def update_settings(self, new_phil=None):
if not new_phil:
new_phil = self.master_phil.format(python_object = self.params)
print "in update_settings"
diff = None
# try:
working_phil = self.master_phil.fetch(source = new_phil)
diff_phil = self.master_phil.fetch_diff(source = working_phil)
if len(diff_phil.all_definitions()) < 1:
self.mprint( "Nothing's changed")
return False

#import code, traceback; code.interact(local=locals(), banner="".join( traceback.format_stack(limit=10) ) )
diff = diff_phil.extract().NGL_HKLviewer
self.mprint("diff phil:\n" + diff_phil.as_str() )
Expand All @@ -285,21 +292,23 @@ def update_settings(self, new_phil=None):
if hasattr(diff, "filename"):
self.load_reflections_file(phl.filename)

if hasattr(diff, "column") or hasattr(diff, "fomcolumn"):
self.set_column(phl.column, phl.fomcolumn )
if hasattr(diff, "column") or hasattr(diff, "fomcolumn") \
or hasattr(diff, "mergedata") or hasattr(diff, "columnbinthresholds"):
if self.set_column(phl.column, phl.fomcolumn):
self.set_column_bin_thresholds(phl.columnbinthresholds, phl.binarray)

if hasattr(diff, "spacegroupchoice"):
self.set_spacegroup_choice(phl.spacegroupchoice)

if hasattr(diff, "columnbinthresholds"):
self.set_column_bin_thresholds(phl.columnbinthresholds, phl.binarray)

if hasattr(diff, "cameratype"):
self.set_camera_type(phl.cameratype)

if hasattr(diff, "viewer"):
self.viewer.settings = phl.viewer
self.settings = phl.viewer
#except Exception, e :
# print to_str(e)
# sys.exit(-42)

msg = self.viewer.update_settings()
self.mprint( msg)
Expand Down Expand Up @@ -349,7 +358,7 @@ def process_miller_array (self, array, merge_answer=[None]) :
details = []
#self.merge_answer[0] = None
self.infostr = ""
if (not array.is_unique_set_under_symmetry() and not self.merge_answer[0]) :
if (not array.is_unique_set_under_symmetry() and self.params.NGL_HKLviewer.mergedata is None):
shouldmergestr = "The data in the selected array are not symmetry-" + \
"unique, which usually means they are unmerged (but could also be due "+ \
"to different indexing conventions). Do you want to merge equivalent "+ \
Expand All @@ -368,13 +377,13 @@ def process_miller_array (self, array, merge_answer=[None]) :
new_phil = self.GetNewPhilString(philstr)
#working_phil = self.master_phil.fetch(source = new_phil)
params = new_phil.extract().NGL_HKLviewer
if hasattr(params, "mergedata"):
self.merge_answer[0] = params.mergedata
if hasattr(params, "mergedata"): # awaiting user to tick a checkbox on the gui
self.params.NGL_HKLviewer.mergedata = params.mergedata
break
time.sleep(1)
else:
self.merge_answer[0] = Inputarg(shouldmergestr).lower()[0] == "y"
if self.merge_answer[0]:
self.params.NGL_HKLviewer.mergedata = Inputarg(shouldmergestr).lower()[0] == "y"
if self.params.NGL_HKLviewer.mergedata:
details.append("merged")
else :
details.append("unmerged data")
Expand All @@ -389,15 +398,15 @@ def process_miller_array (self, array, merge_answer=[None]) :
array_info = group_args(
labels=labels,
details_str=details_str,
merge=self.merge_answer[0],
merge=self.params.NGL_HKLviewer.mergedata,
sg=sg,
uc=uc)
return array, array_info


def process_all_miller_arrays(self, array):
procarrays = []
if not self.merge_answer[0]:
if self.params.NGL_HKLviewer.mergedata == False:
self.settings.expand_to_p1 = False
self.settings.expand_anomalous = False
for arr in self.valid_arrays:
Expand Down Expand Up @@ -589,7 +598,8 @@ def SetOpacity(self, bin, alpha):

def set_column(self, column, fomcolumn=None) :
self.viewer.binvals = []
#self.viewer.iarray = column
if column is None:
return False
self.viewer.icolourcol = column
self.viewer.iradiicol = column
if self.valid_arrays[column].is_complex_array():
Expand All @@ -607,6 +617,7 @@ def set_column(self, column, fomcolumn=None) :
#self.viewer.DrawNGLJavaScript()
#self.update_settings()
#import code, traceback; code.interact(local=locals(), banner="".join( traceback.format_stack(limit=10) ) )
return True


def SetColumn(self, column):
Expand All @@ -619,6 +630,10 @@ def SetFomColumn(self, fomcolumn):
self.update_settings()


def SetMergeData(self, val):
self.params.NGL_HKLviewer.mergedata = val
self.update_settings()

def SetColourColumn(self, colourcol):
self.params.NGL_HKLviewer.viewer.icolourcol = colourcol
self.update_settings()
Expand Down Expand Up @@ -724,7 +739,7 @@ def SendInfo(self):



philstr = """
masterphilstr = """
NGL_HKLviewer {
filename = None
.type = path
Expand Down
13 changes: 10 additions & 3 deletions crys3d/hklview/jsview_3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,7 @@ def data2bin(d):
return ibin
if d > binval and d <= self.workingbinvals[ibin+1]:
return ibin
#import code, traceback; code.interact(local=locals(), banner="".join( traceback.format_stack(limit=10) ) )
raise Sorry("Should never get here")

#import code, traceback; code.interact(local=locals(), banner="".join( traceback.format_stack(limit=10) ) )
Expand Down Expand Up @@ -848,8 +849,12 @@ def data2bin(d):


def OnConnectWebsocketClient(self, client, server):
#if not self.websockclient:
self.websockclient = client
self.mprint( "New client:" + str( self.websockclient ) )
self.mprint( "Browser connected:" + str( self.websockclient ) )
#else:
# self.mprint( "Unexpected browser connection was rejected" )



def OnWebsocketClientMessage(self, client, server, message):
Expand All @@ -866,7 +871,7 @@ def OnWebsocketClientMessage(self, client, server, message):
self.isnewfile = False


def EmptyMsgQueue(self):
def WebBrowserMsgQueue(self):
while True:
sleep(1)
if hasattr(self, "pendingmessage") and self.pendingmessage:
Expand All @@ -876,12 +881,14 @@ def EmptyMsgQueue(self):

def StartWebsocket(self):
self.server = WebsocketServer(7894, host='127.0.0.1')
if not self.server:
raise Sorry("Could not connect socket to web browser")
self.server.set_fn_new_client(self.OnConnectWebsocketClient)
self.server.set_fn_message_received(self.OnWebsocketClientMessage)
self.wst = threading.Thread(target=self.server.run_forever)
self.wst.daemon = True
self.wst.start()
self.msgqueuethrd = threading.Thread(target = self.EmptyMsgQueue )
self.msgqueuethrd = threading.Thread(target = self.WebBrowserMsgQueue )
self.msgqueuethrd.daemon = True
self.msgqueuethrd.start()

Expand Down

0 comments on commit da8d4d7

Please sign in to comment.