Author: bugman Date: Fri Jul 15 20:25:44 2011 New Revision: 13664 URL: http://svn.gna.org/viewcvs/relax?rev=13664&view=rev Log: Implemented all the rest of the spin user function GUI pages and menu entries. These include: spin.create_pseudo spin.display spin.element spin.name spin.number Modified: branches/gui_testing/gui/menu.py branches/gui_testing/gui/spin_viewer/frame.py branches/gui_testing/gui/user_functions/spin.py Modified: branches/gui_testing/gui/menu.py URL: http://svn.gna.org/viewcvs/relax/branches/gui_testing/gui/menu.py?rev=13664&r1=13663&r2=13664&view=diff ============================================================================== --- branches/gui_testing/gui/menu.py (original) +++ branches/gui_testing/gui/menu.py Fri Jul 15 20:25:44 2011 @@ -252,7 +252,12 @@ [wx.NewId(), "&spin", paths.icon_16x16.spin, None, [ [wx.NewId(), "©", paths.icon_16x16.copy, self.gui.user_functions.spin.copy], [wx.NewId(), "crea&te", paths.icon_16x16.add, self.gui.user_functions.spin.create], - [wx.NewId(), "&delete", paths.icon_16x16.remove, self.gui.user_functions.spin.delete] + [wx.NewId(), "create_&pseudo", paths.icon_16x16.add, self.gui.user_functions.spin.create_pseudo], + [wx.NewId(), "&delete", paths.icon_16x16.remove, self.gui.user_functions.spin.delete], + [wx.NewId(), "displa&y", None, self.gui.user_functions.spin.display], + [wx.NewId(), "&element", None, self.gui.user_functions.spin.element], + [wx.NewId(), "&name", None, self.gui.user_functions.spin.name], + [wx.NewId(), "num&ber", None, self.gui.user_functions.spin.number] ]], [wx.NewId(), "s&tructure", paths.icon_16x16.structure, None, [ [wx.NewId(), "&delete", paths.icon_16x16.remove, self.gui.user_functions.structure.delete], Modified: branches/gui_testing/gui/spin_viewer/frame.py URL: http://svn.gna.org/viewcvs/relax/branches/gui_testing/gui/spin_viewer/frame.py?rev=13664&r1=13663&r2=13664&view=diff ============================================================================== --- branches/gui_testing/gui/spin_viewer/frame.py (original) +++ branches/gui_testing/gui/spin_viewer/frame.py Fri Jul 15 20:25:44 2011 @@ -108,7 +108,12 @@ menu = wx.Menu() menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="©", icon=paths.icon_16x16.copy, fn=self.gui.user_functions.spin.copy)) menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="crea&te", icon=paths.icon_16x16.add, fn=self.gui.user_functions.spin.create)) + menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="create_&pseudo", icon=paths.icon_16x16.add, fn=self.gui.user_functions.spin.create_pseudo)) menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="&delete", icon=paths.icon_16x16.remove, fn=self.gui.user_functions.spin.delete)) + menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="displa&y", icon=None, fn=self.gui.user_functions.spin.display)) + menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="&element", icon=None, fn=self.gui.user_functions.spin.element)) + menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="&name", icon=None, fn=self.gui.user_functions.spin.name)) + menu.AppendItem(self.gui.menu.build_menu_item(menu, parent=self, text="num&ber", icon=None, fn=self.gui.user_functions.spin.number)) self.menubar.Append(menu, "&spin") # The select menu entry. Modified: branches/gui_testing/gui/user_functions/spin.py URL: http://svn.gna.org/viewcvs/relax/branches/gui_testing/gui/user_functions/spin.py?rev=13664&r1=13663&r2=13664&view=diff ============================================================================== --- branches/gui_testing/gui/user_functions/spin.py (original) +++ branches/gui_testing/gui/user_functions/spin.py Fri Jul 15 20:25:44 2011 @@ -32,7 +32,7 @@ # GUI module imports. from base import UF_base, UF_page -from gui.misc import gui_to_str, str_to_gui +from gui.misc import gui_to_bool, gui_to_int, gui_to_list, gui_to_str, str_to_gui from gui.paths import WIZARD_IMAGE_PATH from gui.user_functions.mol_res_spin import Mol_res_spin from gui.wizard import Wiz_window @@ -83,6 +83,20 @@ page.res.SetValue("%s %s" % (res_num, res_name)) # Execute the wizard. + wizard.run() + + + def create_pseudo(self, event): + """The spin.create_pseudo user function. + + @param event: The wx event. + @type event: wx event + """ + + # Execute the wizard. + wizard = Wiz_window(size_x=800, size_y=600, title=self.get_title('spin', 'create_pseudo')) + page = Create_pseudo_page(wizard, self.gui) + wizard.add_page(page) wizard.run() @@ -124,6 +138,62 @@ wizard.run() + def display(self, event): + """The spin.display user function. + + @param event: The wx event. + @type event: wx event + """ + + # Execute the wizard. + wizard = Wiz_window(size_x=800, size_y=600, title=self.get_title('spin', 'display')) + page = Display_page(wizard, self.gui) + wizard.add_page(page) + wizard.run() + + + def element(self, event): + """The spin.element user function. + + @param event: The wx event. + @type event: wx event + """ + + # Execute the wizard. + wizard = Wiz_window(size_x=800, size_y=600, title=self.get_title('spin', 'element')) + page = Element_page(wizard, self.gui) + wizard.add_page(page) + wizard.run() + + + def name(self, event): + """The spin.name user function. + + @param event: The wx event. + @type event: wx event + """ + + # Execute the wizard. + wizard = Wiz_window(size_x=800, size_y=600, title=self.get_title('spin', 'name')) + page = Name_page(wizard, self.gui) + wizard.add_page(page) + wizard.run() + + + def number(self, event): + """The spin.number user function. + + @param event: The wx event. + @type event: wx event + """ + + # Execute the wizard. + wizard = Wiz_window(size_x=800, size_y=600, title=self.get_title('spin', 'number')) + page = Number_page(wizard, self.gui) + wizard.add_page(page) + wizard.run() + + class Copy_page(UF_page, Mol_res_spin): """The spin.copy() user function page.""" @@ -133,7 +203,7 @@ uf_path = ['spin', 'copy'] def add_contents(self, sizer): - """Add the spin specific GUI elements. + """Add the page specific GUI elements. @param sizer: A sizer object. @type sizer: wx.Sizer instance @@ -288,7 +358,7 @@ uf_path = ['spin', 'create'] def add_contents(self, sizer): - """Add the spin specific GUI elements. + """Add the page specific GUI elements. @param sizer: A sizer object. @type sizer: wx.Sizer instance @@ -346,6 +416,50 @@ +class Create_pseudo_page(UF_page, Mol_res_spin): + """The spin.create_pseudo() user function page.""" + + # Some class variables. + image_path = WIZARD_IMAGE_PATH + 'spin.png' + uf_path = ['spin', 'create_pseudo'] + + def add_contents(self, sizer): + """Add the page specific GUI elements. + + @param sizer: A sizer object. + @type sizer: wx.Sizer instance + """ + + # The name and number of the spin. + self.spin_name = self.input_field(sizer, "The pseudo-spin name:", tooltip=self.uf._doc_args_dict['spin_name']) + self.spin_num = self.input_field(sizer, "The pseudo-spin number:", tooltip=self.uf._doc_args_dict['spin_num']) + + # The spin ID. + self.res_id = self.spin_id_element(sizer, desc="The residue ID string:", choices=[]) + + # The members. + self.members = self.input_field(sizer, "The pseudo-spin members:", tooltip=self.uf._doc_args_dict['members']) + + # The pos averaging. + self.averaging = self.combo_box(sizer, "The positional averaging:", tooltip=self.uf._doc_args_dict['averaging'], choices=['linear']) + self.averaging.SetValue('linear') + + + def on_execute(self): + """Execute the user function.""" + + # Get the values. + spin_name = gui_to_str(self.spin_name.GetValue()) + spin_num = gui_to_int(self.spin_num.GetValue()) + res_id = gui_to_str(self.res_id.GetValue()) + members = gui_to_list(self.members.GetValue()) + averaging = gui_to_str(self.averaging.GetValue()) + + # Execute. + self.gui.interpreter.spin.create_pseudo(spin_name=spin_name, spin_num=spin_num, res_id=res_id, members=members, averaging=averaging) + + + class Delete_page(UF_page, Mol_res_spin): """The spin.delete() user function page.""" @@ -354,7 +468,7 @@ uf_path = ['spin', 'delete'] def add_contents(self, sizer): - """Add the spin specific GUI elements. + """Add the page specific GUI elements. @param sizer: A sizer object. @type sizer: wx.Sizer instance @@ -395,3 +509,146 @@ # Update the spin list. self._update_spins(None) + + + +class Display_page(UF_page, Mol_res_spin): + """The spin.display() user function page.""" + + # Some class variables. + image_path = WIZARD_IMAGE_PATH + 'spin.png' + uf_path = ['spin', 'display'] + + def add_contents(self, sizer): + """Add the page specific GUI elements. + + @param sizer: A sizer object. + @type sizer: wx.Sizer instance + """ + + # The spin ID. + self.spin_id = self.spin_id_element(sizer, desc="Restrict to the spin ID:") + + + def on_execute(self): + """Execute the user function.""" + + # Get the values. + spin_id = gui_to_str(self.spin_id.GetValue()) + + # Execute. + self.gui.interpreter.spin.display(spin_id=spin_id) + + + +class Element_page(UF_page, Mol_res_spin): + """The spin.element() user function page.""" + + # Some class variables. + image_path = WIZARD_IMAGE_PATH + 'spin.png' + uf_path = ['spin', 'element'] + + def add_contents(self, sizer): + """Add the page specific GUI elements. + + @param sizer: A sizer object. + @type sizer: wx.Sizer instance + """ + + # The spin ID. + self.spin_id = self.spin_id_element(sizer, desc="Restrict the element setting to the spins:") + + # The element. + self.element = self.combo_box(sizer, "The element:", tooltip=self.uf._doc_args_dict['element'], choices=['H', 'N', 'C','O', 'P'], read_only=False) + + # The force flag. + self.force = self.boolean_selector(sizer, "The force flag:", tooltip=self.uf._doc_args_dict['force']) + self.force.SetValue('False') + + + def on_execute(self): + """Execute the user function.""" + + # Get the values. + spin_id = gui_to_str(self.spin_id.GetValue()) + element = gui_to_str(self.element.GetValue()) + force = gui_to_bool(self.force.GetValue()) + + # Execute. + self.gui.interpreter.spin.element(spin_id=spin_id, element=element, force=force) + + + +class Name_page(UF_page, Mol_res_spin): + """The spin.name() user function page.""" + + # Some class variables. + image_path = WIZARD_IMAGE_PATH + 'spin.png' + uf_path = ['spin', 'name'] + + def add_contents(self, sizer): + """Add the page specific GUI elements. + + @param sizer: A sizer object. + @type sizer: wx.Sizer instance + """ + + # The spin ID. + self.spin_id = self.spin_id_element(sizer, desc="Restrict the naming to the spins:") + + # The name. + self.name = self.input_field(sizer, "The name:", tooltip=self.uf._doc_args_dict['name']) + + # The force flag. + self.force = self.boolean_selector(sizer, "The force flag:", tooltip=self.uf._doc_args_dict['force']) + self.force.SetValue('False') + + + def on_execute(self): + """Execute the user function.""" + + # Get the values. + spin_id = gui_to_str(self.spin_id.GetValue()) + name = gui_to_str(self.name.GetValue()) + force = gui_to_bool(self.force.GetValue()) + + # Execute. + self.gui.interpreter.spin.name(spin_id=spin_id, name=name, force=force) + + + +class Number_page(UF_page, Mol_res_spin): + """The spin.number() user function page.""" + + # Some class variables. + image_path = WIZARD_IMAGE_PATH + 'spin.png' + uf_path = ['spin', 'number'] + + def add_contents(self, sizer): + """Add the page specific GUI elements. + + @param sizer: A sizer object. + @type sizer: wx.Sizer instance + """ + + # The spin ID. + self.spin_id = self.spin_id_element(sizer, desc="Restrict the numbering to the spins:") + + # The number. + self.number = self.input_field(sizer, "The number:", tooltip=self.uf._doc_args_dict['number']) + + # The force flag. + self.force = self.boolean_selector(sizer, "The force flag:", tooltip=self.uf._doc_args_dict['force']) + self.force.SetValue('False') + + + def on_execute(self): + """Execute the user function.""" + + # Get the values. + spin_id = gui_to_str(self.spin_id.GetValue()) + number = gui_to_int(self.number.GetValue()) + force = gui_to_bool(self.force.GetValue()) + + # Execute. + self.gui.interpreter.spin.number(spin_id=spin_id, number=number, force=force)