Author: bugman Date: Wed Oct 17 13:29:50 2012 New Revision: 17893 URL: http://svn.gna.org/viewcvs/relax?rev=17893&view=rev Log: Merged revisions 17878-17892 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/trunk ........ r17878 | bugman | 2012-10-16 23:15:21 +0200 (Tue, 16 Oct 2012) | 3 lines Fix for the API documentation for the rename of the 'scripts' to 'devel_scripts' directory at r17708. ........ r17879 | bugman | 2012-10-16 23:30:35 +0200 (Tue, 16 Oct 2012) | 6 lines API documentation fix - a circular import has been broken. This was only a circular import when the gui package is imported from an external program like Epydoc. ........ r17880 | bugman | 2012-10-16 23:37:14 +0200 (Tue, 16 Oct 2012) | 6 lines Improvements to the API documentation compilation. The excluded files and directories, as well as hidden ones, are no longer included in the list of files/directories to add to the documentation. ........ r17881 | bugman | 2012-10-17 09:32:20 +0200 (Wed, 17 Oct 2012) | 3 lines Updated the relax prompt mode figure in the intro chapter of the user manual to the more modern prompt. ........ r17882 | bugman | 2012-10-17 10:40:58 +0200 (Wed, 17 Oct 2012) | 5 lines Fix for the relax user manual compilation. The full path for an icon in the graphics directory was being used. ........ r17883 | bugman | 2012-10-17 10:53:40 +0200 (Wed, 17 Oct 2012) | 3 lines Import fix for the relax GUI tests for a problem only recently introduced. ........ r17884 | bugman | 2012-10-17 11:01:23 +0200 (Wed, 17 Oct 2012) | 3 lines The setup.py application building script now complains if the Python setuptools are not installed. ........ r17885 | bugman | 2012-10-17 11:25:53 +0200 (Wed, 17 Oct 2012) | 6 lines Added some bug catching code for the observer objects. In some rare cases a registered method's key was set to None. This is now caught and a RelaxError thrown to prevent later indecipherable errors. ........ r17886 | bugman | 2012-10-17 11:30:59 +0200 (Wed, 17 Oct 2012) | 3 lines Added some special RelaxErrors for data pipe bundles. ........ r17887 | bugman | 2012-10-17 11:31:44 +0200 (Wed, 17 Oct 2012) | 3 lines Missing import of the sys module. ........ r17888 | bugman | 2012-10-17 11:33:35 +0200 (Wed, 17 Oct 2012) | 3 lines Added some error checking for the data pipe bundle in the auto model-free analysis GUI code. ........ r17889 | bugman | 2012-10-17 11:37:13 +0200 (Wed, 17 Oct 2012) | 3 lines Added data pipe bundle error checking for the GUI pipe editor window associate_auto() method. ........ r17890 | bugman | 2012-10-17 11:45:31 +0200 (Wed, 17 Oct 2012) | 3 lines Another attempt at fixing a nasty circular import in the relax GUI. ........ r17891 | bugman | 2012-10-17 11:59:14 +0200 (Wed, 17 Oct 2012) | 3 lines Fix for the State.test_load_state_no_gui() GUI test - the data pipe bundle is now given. ........ r17892 | bugman | 2012-10-17 11:59:46 +0200 (Wed, 17 Oct 2012) | 3 lines More error checking for the associate_auto() method of the data pipe editor window. ........ Added: branches/cst/graphics/screenshots/relax_prompt_mode.eps.gz - copied unchanged from r17892, trunk/graphics/screenshots/relax_prompt_mode.eps.gz branches/cst/graphics/screenshots/relax_prompt_mode.png - copied unchanged from r17892, trunk/graphics/screenshots/relax_prompt_mode.png Modified: branches/cst/ (props changed) branches/cst/docs/latex/curvefit.tex branches/cst/docs/latex/intro.tex branches/cst/gui/__init__.py branches/cst/gui/analyses/auto_model_free.py branches/cst/gui/misc.py branches/cst/gui/pipe_editor.py branches/cst/gui/relax_gui.py branches/cst/relax_errors.py branches/cst/scons/manuals.py branches/cst/setup.py branches/cst/status.py branches/cst/test_suite/gui_tests/state.py branches/cst/test_suite/test_suite_runner.py Propchange: branches/cst/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Wed Oct 17 13:29:50 2012 @@ -1,1 +1,1 @@ -/trunk:1-17871 +/trunk:1-17892 Modified: branches/cst/docs/latex/curvefit.tex URL: http://svn.gna.org/viewcvs/relax/branches/cst/docs/latex/curvefit.tex?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/docs/latex/curvefit.tex (original) +++ branches/cst/docs/latex/curvefit.tex Wed Oct 17 13:29:50 2012 @@ -32,7 +32,7 @@ \subsection{Temperature control and calibration} \label{sect: temperature control and calibration} -\includegraphics[bb=0 0 18 18]{/data/relax/relax-trunk/graphics/oxygen_icons/128x128/status/weather-clear} +\includegraphics[bb=0 0 18 18]{graphics/oxygen_icons/128x128/status/weather-clear} Before starting with the spectral processing, it should be noted that proper temperature control and calibration are essential for relaxation data. Small temperature changes can have an effect on the viscosity and hence global tumbling of the molecule being studied and, as the molecular diffusion tensor is the major contributor to relaxation, any non-consistent data will likely lead to artificial motions appearing in subsequent model-free analyses. Modified: branches/cst/docs/latex/intro.tex URL: http://svn.gna.org/viewcvs/relax/branches/cst/docs/latex/intro.tex?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/docs/latex/intro.tex (original) +++ branches/cst/docs/latex/intro.tex Wed Oct 17 13:29:50 2012 @@ -175,7 +175,7 @@ % Prompt screenshot \begin{figure} -\centerline{\includegraphics[width=0.9\textwidth, bb=14 14 861 561]{graphics/screenshots/relax_prompt_1_3_8}} +\centerline{\includegraphics[width=0.9\textwidth, bb=14 14 1088 821]{graphics/screenshots/relax_prompt_mode}} \caption[Prompt screenshot]{A screenshot of relax being run in the primary prompt mode.}\label{fig: relax prompt} \end{figure} Modified: branches/cst/gui/__init__.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/gui/__init__.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/gui/__init__.py (original) +++ branches/cst/gui/__init__.py Wed Oct 17 13:29:50 2012 @@ -38,10 +38,10 @@ import generic_fns from graphics import IMAGE_PATH from relax_errors import RelaxError -from relax_gui import Main from status import Status; status = Status() # relax GUI module imports. +from gui import relax_gui from gui.uf_objects import Uf_storage; uf_store = Uf_storage() @@ -100,7 +100,7 @@ self.show_splash() # Build the GUI. - self.gui = Main(parent=None, id=-1, title="") + self.gui = relax_gui.Main(parent=None, id=-1, title="") # Make it the main application component. self.SetTopWindow(self.gui) Modified: branches/cst/gui/analyses/auto_model_free.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/gui/analyses/auto_model_free.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/gui/analyses/auto_model_free.py (original) +++ branches/cst/gui/analyses/auto_model_free.py Wed Oct 17 13:29:50 2012 @@ -39,6 +39,7 @@ from generic_fns.pipes import has_bundle, has_pipe from graphics import fetch_icon from physical_constants import NH_BOND_LENGTH +from relax_errors import RelaxError from relax_string import LIST, PARAGRAPH, SECTION, SUBSECTION, TITLE from specific_fns.setup import get_specific_fn from status import Status; status = Status() @@ -209,6 +210,10 @@ ds.relax_gui.analyses[data_index].local_tm_models = ['tm0', 'tm1', 'tm2', 'tm3', 'tm4', 'tm5', 'tm6', 'tm7', 'tm8', 'tm9'] ds.relax_gui.analyses[data_index].mf_models = ['m0', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9'] ds.relax_gui.analyses[data_index].max_iter = 30 + + # Error checking. + if ds.relax_gui.analyses[data_index].pipe_bundle == None: + raise RelaxError("The pipe bundle must be supplied.") # Alias the data. self.data = ds.relax_gui.analyses[data_index] Modified: branches/cst/gui/misc.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/gui/misc.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/gui/misc.py (original) +++ branches/cst/gui/misc.py Wed Oct 17 13:29:50 2012 @@ -27,6 +27,7 @@ from copy import deepcopy import os import platform +import sys from textwrap import wrap import wx Modified: branches/cst/gui/pipe_editor.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/gui/pipe_editor.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/gui/pipe_editor.py (original) +++ branches/cst/gui/pipe_editor.py Wed Oct 17 13:29:50 2012 @@ -30,6 +30,7 @@ from data import Relax_data_store; ds = Relax_data_store() from generic_fns.pipes import cdp_name, delete, get_bundle, get_type, pipe_names, switch from graphics import fetch_icon +from relax_errors import RelaxError from status import Status; status = Status() # relax GUI module imports. @@ -323,9 +324,15 @@ if not hasattr(ds, 'relax_gui'): self.gui.init_data() - # The type. + # The type and data pipe bundle. type = get_type(self.selected_pipe) bundle = get_bundle(self.selected_pipe) + + # Error checking. + if self.selected_pipe == None: + raise RelaxError("No data pipe has been selected - this is not possible.") + if bundle == None: + raise RelaxError("The selected data pipe is not associated with a data pipe bundle.") # The name. names = { Modified: branches/cst/gui/relax_gui.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/gui/relax_gui.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/gui/relax_gui.py (original) +++ branches/cst/gui/relax_gui.py Wed Oct 17 13:29:50 2012 @@ -44,7 +44,6 @@ from relax_errors import RelaxNoPipeError from relax_io import io_streams_restore from status import Status; status = Status() -import test_suite.test_suite_runner from version import version # relax GUI module imports. @@ -587,7 +586,8 @@ # Prevent all new GUI elements from being shown. status.show_gui = False - # Run the tests. + # Run the tests (with the import here to break a nasty circular import). + import test_suite.test_suite_runner runner = test_suite.test_suite_runner.Test_suite_runner([], from_gui=True, categories=categories) runner.run_all_tests() Modified: branches/cst/relax_errors.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/relax_errors.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/relax_errors.py (original) +++ branches/cst/relax_errors.py Wed Oct 17 13:29:50 2012 @@ -830,6 +830,19 @@ # Data pipe errors. ################### +# The data pipe bundle already exists. +class RelaxBundleError(BaseError): + def __init__(self, bundle): + self.text = "The data pipe bundle '%s' already exists." % bundle + +# No data pipe bundles exist. +class RelaxNoBundleError(BaseError): + def __init__(self, bundle=None): + if bundle != None: + self.text = "The data pipe bundle '%s' has not been created yet." % bundle + else: + self.text = "No data pipe bundles currently exist. Please use the pipe.bundle user function first." + # The data pipe already exists. class RelaxPipeError(BaseError): def __init__(self, pipe): Modified: branches/cst/scons/manuals.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/scons/manuals.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/scons/manuals.py (original) +++ branches/cst/scons/manuals.py Wed Oct 17 13:29:50 2012 @@ -100,13 +100,13 @@ # exclude # The list of objects to exclude. exclude = [ + 'devel_scripts', 'extern', 'graphics', 'minfx.scipy_subset', 'multi.test_implementation', 'multi.test_implementation2', - 'sample_scripts', - 'scripts' + 'sample_scripts' ] # output @@ -268,6 +268,14 @@ if file in blacklist: continue + # The excluded ones. + if file in exclude: + continue + + # Hidden files and directories. + if search('^\.', file): + continue + # Otherwise add it. epydoc_cmd = "%s %s" % (epydoc_cmd, file) @@ -310,7 +318,7 @@ head_lines = [] # The Google analytics JS. - file = open(status.install_path + sep + 'scripts' + sep + 'google_analytics.js') + file = open(status.install_path + sep + 'devel_scripts' + sep + 'google_analytics.js') for line in file.readlines(): head_lines.append(line) file.close() Modified: branches/cst/setup.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/setup.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/setup.py (original) +++ branches/cst/setup.py Wed Oct 17 13:29:50 2012 @@ -38,7 +38,11 @@ from os import getcwd, listdir, sep, walk from os.path import relpath, sep from re import search -from setuptools import setup +try: + from setuptools import setup +except ImportError: + print("ImportError: To run setup.py, please installed the Python setuptools (see http://pypi.python.org/pypi/setuptools)") + setup = None import sys # relax module imports. Modified: branches/cst/status.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/status.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/status.py (original) +++ branches/cst/status.py Wed Oct 17 13:29:50 2012 @@ -452,6 +452,10 @@ if key in self._keys: raise RelaxError("The observer '%s' already exists." % key) + # Blank key. + if key == None: + raise RelaxError("The observer key must be supplied.") + # Debugging. if self._status.debug: if method_name: Modified: branches/cst/test_suite/gui_tests/state.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/test_suite/gui_tests/state.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/test_suite/gui_tests/state.py (original) +++ branches/cst/test_suite/gui_tests/state.py Wed Oct 17 13:29:50 2012 @@ -93,7 +93,7 @@ self.app.gui.state_load(file_name=file) # Create a data pipe bundle. - self._execute_uf(uf_name='pipe.bundle', pipe='a') + self._execute_uf(uf_name='pipe.bundle', pipe='a', bundle='test bundle') # Show the pipe editor. self.app.gui.show_pipe_editor(None) Modified: branches/cst/test_suite/test_suite_runner.py URL: http://svn.gna.org/viewcvs/relax/branches/cst/test_suite/test_suite_runner.py?rev=17893&r1=17892&r2=17893&view=diff ============================================================================== --- branches/cst/test_suite/test_suite_runner.py (original) +++ branches/cst/test_suite/test_suite_runner.py Wed Oct 17 13:29:50 2012 @@ -39,8 +39,8 @@ # relax module imports. if dep_check.wx_module: - from gui.interpreter import Interpreter - from gui.relax_gui import Main + from gui import relax_gui + from gui import interpreter from test_suite.relax_test_runner import GuiTestRunner, RelaxTestRunner from status import Status; status = Status() @@ -121,7 +121,7 @@ app = wx.App(redirect=False) # Build the GUI. - app.gui = Main(parent=None, id=-1, title="") + app.gui = relax_gui.Main(parent=None, id=-1, title="") # Execute the GUI tests. gui_runner = GUI_test_runner() @@ -130,8 +130,8 @@ # Clean up for the GUI, if not in GUI mode. if status.test_mode: # Terminate the interpreter thread to allow the tests to cleanly exit. - interpreter = Interpreter() - interpreter.exit() + interpreter_thread = interpreter.Interpreter() + interpreter_thread.exit() # Stop the GUI main loop. app.ExitMainLoop()