20 from os
import listdir
22 from shutil
import copy
24 from os
import environ
38 from Tkinter
import Frame
as FrameTk
63 Initializes the main window.
64 Sets common global variables.
80 self.textbox_frame = Frame(self.
_tk_, bd=3, relief=GROOVE)
81 outfont = tkFont.Font(family=
"Helvetica", size=11)
82 self.output_textbox= Text(self.textbox_frame,wrap=
"word", height=8,width=113,font = outfont)
83 self.output_scrollbar = Scrollbar(self.textbox_frame)
84 self.output_textbox.configure(yscrollcommand = self.output_scrollbar.set)
85 self.output_scrollbar.configure(command = self.output_textbox.yview)
87 self.old_stdout = sys.stdout
89 self.output_class.terminal_output.trace_variable(
'w', self.
output_tracer)
90 self.output_class.terminal_output.set(0)
92 self.input_class.options_manager.print_current_options()
95 print "\nRegion Selection Tips: No regions added = Full structure selected. \nAdding Regions: For N-terminus omit start; For C-terminus omit end; For whole Chain omit start + end"
96 print "For additional protocol options, please use the Option System Manager.\n"
97 print "Please see RosettaCommons for full documentation and references for all protocols and tools utilized in the GUI\n"
104 Creates object for the GUI
125 self.residue_string.set(
"")
126 self.input_class.set_residue_of_interest(
"",
"",
"")
129 if not self.pose.total_residue():
return
133 if self.pose.total_residue()==
len(self.input_class.region_sequence.get()):
134 rosetta_num = 1+self.sequence_output.index(INSERT)
136 pdb_num = self.pose.pdb_info().pose2pdb(rosetta_num)
137 except PyRosettaException:
143 region = self.input_frame.return_region_from_entry()
144 rosetta_num = region.get_rosetta_start(self.
pose)+self.sequence_output.index(INSERT)
146 pdb_num = self.pose.pdb_info().pose2pdb(rosetta_num)
147 except PyRosettaException:
150 pdbSP = pdb_num.split()
151 self.input_class.set_residue_of_interest(pdbSP[0], pdbSP[1], repr(rosetta_num))
152 self.input_class.residue_string.set(pdb_num+
' - '+repr(rosetta_num))
153 self.residue_string.set(pdb_num+
' - '+repr(rosetta_num))
154 self.input_class.residue_rosetta_resnum.set(repr(rosetta_num))
156 if self.pymol_class.auto_send_residue_colors.get():
157 self.pymol_class.color_residue(
int(rosetta_num))
162 Handles scrolling of entry.
163 CODE: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/entry-scrolling.html
166 op, howMany = L[0], L[1]
172 self.sequence_output.xview_scroll(howMany, units)
174 self.sequence_output.xview_moveto(howMany)
178 Creates the Frame Objects that will go in the main window
191 Shows each piece of the main GUI.
192 Does not do anything with the Window Modules, just each individual main component of the main window.
193 These Inhereit from the Frame class. See one of these for an example.
194 Window Modules should be initialized through the Menus class in /window_main/menu.py
199 self.menu_class.setTk(); self.menu_class.shoTk()
201 self.input_frame.grid(row=1, column=0, rowspan=7, padx=15, pady=15);
202 self.output_frame.grid(row=0, column=1, rowspan=2, pady=3);
204 self.protocol_frame.grid(row=3, column=1, rowspan=4, padx=5)
205 self.simple_analysis_frame.grid(row=0, column=0, padx=5, pady=5)
209 self.num_label.grid(column=0, row=8, columnspan=2, pady=2, padx=2)
210 self.seq_scroll.grid(column=0, row=9, columnspan=3, sticky=W+E)
211 self.sequence_output.grid(column=0, row=10, columnspan=3, sticky=W+E)
213 self.output_textbox.grid(column=0, row = 11, rowspan=2, columnspan=3,sticky=W+E)
214 self.output_scrollbar.grid(column=3, row=11, rowspan=2, sticky=E+N+S)
215 self.textbox_frame.grid(column=0, row=11, rowspan=2, columnspan=3, sticky=W+E, pady=3, padx=6)
221 self.menu_class.setTk(); self.menu_class.shoTk()
222 self.input_class.pack(side=LEFT, padx=3, pady=3)
223 self.output_class.pack(padx=3, pady=3)
225 self.simple_analysis_frame.pack(padx=3, pady=3)
226 self.protocol_frame.pack(padx=3, pady=3)
227 #self.output_textbox.pack(side=BOTTOM, padx=3, pady=3)
228 #self.output_frame.pack(side=BOTTOM, padx=3, pady=3)
231 def run(self, run_event_loop=True):
232 self._tk_.title(
"PyRosetta Toolkit")
234 self._tk_.grid_columnconfigure(ALL, weight=1)
240 print "Redirect stdout to textbox"
245 print "Redirect stdout to default"
246 sys.stdout = self.old_stdout
250 self.output_textbox.insert(END, text)
251 self.output_textbox.yview(END)
255 Controls where stdout goes. Textbox or Terminal.
256 Does not override Tracer for now.
259 varvalue = self.output_class.terminal_output.get()
268 Allows the script to be self-aware of it's path.
269 So that it can be imported/ran from anywhere.
272 p = os.path.abspath(__file__)
273 pathSP = os.path.split(p)
278 rosetta.basic.PyTracer.__init__(self)
282 self.textbox.insert(END, s)
288 if __name__ ==
'__main__':
291 main_window_class.TR =
MainTracer(main_window_class.output_textbox)
292 rosetta.basic.Tracer.set_ios_hook(main_window_class.TR, rosetta.basic.Tracer.get_all_channels_string(),
False)
295 main_window_class.run()
score_class
Sequence#####.
def redirect_stdout_to_textbox
residue_string
Sequence#####.
Fstring::size_type len(Fstring const &s)
Length.
def redirect_stdout_to_default
def clear_num_string_on_new_input