Changes in / [bac81f4:f1d9da7] in sasview


Ignore:
Files:
5 added
13 edited

Legend:

Unmodified
Added
Removed
  • docs/sphinx-docs/source/user/menu_bar.rst

    r959eb01 rd1fa2b8  
    1111Data can be loaded one file at a time, or by selecting multiple files, or by loading an entire folder of  
    1212files (in which case *SasView* will attempt to make an intelligent guess as to what to load based on the  
    13 file formats it recognises in the folder!). 
     13file formats it recognises in the folder!). Data can also be loaded by dragging and dropping files directly 
     14onto Data Explorer. 
    1415 
    1516A *SasView* session can also be saved and reloaded as an 'Analysis' (an individual model fit or invariant  
     
    3132 
    3233- show the Batch Fitting Results Panel if it has been closed; 
    33 - show/hide the Data Explorer Panel; 
    3434- show/hide the Toolbar of icons below the Menu Bar; 
    3535- select the default location that *SasView* looks in for data to analyse (the *SasView* installation directory, the initial default, or a custom folder). NB: any change only takes effect when *SasView* is restarted; 
     
    6060 
    6161- create a new FitPage; 
     62- setting up a Constrained or Simultaneous Fit; 
    6263- change optimiser (under Fit Options); 
    6364- view fit parameter correlations, distributions, and convergence traces (under Fit Results); 
    64 - create/edit a Plugin Model. 
    65  
    66 Additional functionality is available under this menu option during particular types of model fitting, including: 
    67  
    68 - setting up a Constrained or Simultaneous Fit; 
    69 - combining a Batch Fit (an obscure capability); 
    70 - setting up Chain Fitting. 
     65- create a Plugin Model. 
     66- edit a Plugin Model. 
     67- manage Plugin Models 
     68- create a Sum/Multiple Plugin Model 
     69  
    7170 
    7271Help 
  • src/sas/qtgui/MainWindow/UI/DataExplorerUI.ui

    rc6fb57c rd1fa2b8  
    8787          <widget class="QPushButton" name="cmdDeleteData"> 
    8888           <property name="text"> 
    89             <string>Delete</string> 
     89            <string>Delete Data</string> 
    9090           </property> 
    9191          </widget> 
  • src/sas/qtgui/MainWindow/media/data_explorer_help.rst

    r417c03f rd1fa2b8  
    1616the context menu of plot panels or other menus within the application. 
    1717 
    18 Under *View* in the menu bar, *Data Explorer* can be toggled between Show and  
    19 Hide by clicking *Show/Hide Data Explorer*. 
    20  
    21 *NOTE! When* Data Explorer *is hidden, all data loaded will be sent directly  
    22 to the current active analysis, if possible. When* Data Explorer *is 
    23 shown, data go first to the* Data Explorer. 
    24  
    2518.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
    2619 
     
    3528specified folder; 
    3629 
     30Drag and drop a file or multiple files from the external file explorer into 
     31the Data Explorer area. 
     32 
    3733Or, in the *Data Explorer* click the button *Load Data*, then select one or more 
    3834(by holding down the Ctrl key) files to load into SasView. 
    3935 
    4036The name of each loaded file will be listed in the *Data Explorer*. Clicking the 
    41 *+* symbol alongside will display any available metadata read from the file. 
     37empty triangle symbol alongside will display any available metadata read from the file. 
    4238 
    4339.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    4844Right-clicking on a loaded dataset (or model calculation, what SasView calls a  
    4945'theory') brings up a *Handy Menu* from which it is possible to access *Data Info*, 
    50 *Save* the data/theory, or *Plot* the data/theory. 
     46*Save* the data/theory, *Delete* the data/theory or *Plot* the data/theory. 
    5147 
    5248.. image:: hand_menu.png 
     
    5854 
    5955To interact with data it must be activated. This is accomplished by checking  
    60 the box next to the file name in the *Data Explorer*. A green tick will appear. 
     56the box next to the file name in the *Data Explorer*. A tick will appear. 
    6157 
    6258Unchecking/unticking a box deactivates that data set. 
     
    7369selected data sets.* 
    7470 
    75 *Remove Data* removes all references to selected data from SasView. 
     71*Delete Data* removes all references to selected data from SasView. 
     72 
     73Right-clicking on one or more datasets also gives the option of removing  
     74the selected datasets. 
    7675 
    7776.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    8079------------------- 
    8180 
    82 Click on the *New Plot* button to create a new plot panel where the currently 
    83 selected data will be plotted. 
     81Click on the *Create New* button in the *Plot* section to create a new plot 
     82panel where the currently selected data will be plotted. 
    8483 
    8584.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    105104------------------- 
    106105 
    107 The *Freeze Theory* button generates data from the selected theory. 
     106The *Freeze Theory* button on the *Theory* tab page generates data from the selected theory. 
    108107 
    109108*NOTE! This operation can only be performed when theory labels are selected in* 
     
    115114---------------------------- 
    116115 
    117 Click on the *Send To* button to send the currently selected data to one of the 
    118 available types of analysis (*Fitting*, *P(r) Inversion*, or *Invariant* calculation). 
     116Click on the *Send data TO* button to send the currently selected data to the currently 
     117active analysis (*Fitting*, *P(r) Inversion*, or *Invariant* calculation). 
    119118  
    120 The *Single*/*Batch* mode radio buttons only apply to *Fitting*. 
     119The *Single*/*Batch* mode radio buttons only apply to *Fitting* and *P(r) Inversion*. 
    121120 
    122121*Batch mode* provides serial (batch) fitting with one model function, that is,  
     
    127126.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
    128127 
    129 .. note::  This help document was last changed by Steve King, 01May2015 
     128.. note::  This help document was last changed by Piotr Rozyczko, 11May2018 
  • src/sas/qtgui/Perspectives/Fitting/media/fitting_help.rst

    r417c03f rb31b7e2  
    5252 
    5353Use the *Category* drop-down menu to chose a category of model, then select 
    54 a model from the drop-down menu beneath. A graph of the chosen model, calculated 
    55 using default parameter values, will appear. The graph will update dynamically 
    56 as the parameter values are changed. 
     54a model from the drop-down menu to the right. The "Show Plot" button on the 
     55bottom of the dialog will become active. If you click on it,  
     56a graph of the chosen model, calculated using default parameter values, will appear. 
     57The graph will update dynamically as the parameter values are changed. 
    5758 
    5859You can decide your own model categorizations using the :ref:`Category_Manager`. 
    5960 
    60 Once you have selected a model you can read its help documentation by clicking 
    61 on the *Description* button to the right. 
     61Once you have selected a model you can read its help documentation by right clicking 
     62on the empty space in the parameter table. 
     63 
     64.. image:: descr_fig.png 
    6265 
    6366Show 1D/2D 
     
    6972*NB: Magnetic scattering can only be fitted in SasView in 2D.* 
    7073 
    71 To activate 2D fitting mode, click the *Show 2D* button on the *Fit Page*. To 
    72 return to 1D fitting model, click the same button (which will now say *Show 1D*). 
     74To activate 2D fitting mode, select the *2D view* checkbox on the *Fit Page*. To 
     75return to 1D fitting model, de-select the same checkbox. 
    7376 
    7477.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    136139*  By copying/editing an existing model (this can include models generated by 
    137140   the New Plugin Model* dialog) in the :ref:`Python_shell` or 
    138    :ref:`Advanced_Plugin_Editor` (suitable for all use cases) 
     141   :ref:`Plugin_Editor` (suitable for all use cases) 
    139142*  By writing a model from scratch outside of SasView (only recommended for code 
    140143   monkeys!) 
     
    151154----------------------- 
    152155 
    153 From the *Fitting* option in the menu bar, select *Plugin Model Operations* 
     156From the *Fitting* option in the menu bar, select one of the options: 
    154157 
    155158.. image:: edit_model_menu.png 
    156159 
    157 and then one of the sub-options 
    158  
    159 *  *New Plugin Model* - to create a plugin model template with a helper dialog 
    160 *  *Sum|Multi(p1,p2)* - to create a plugin model by summing/multiplying *existing models* in the model library 
    161 *  *Advanced Plugin Editor* - to create/edit a plugin model in a Python shell 
    162 *  *Delete Plugin Models* - to delete a plugin model 
    163 *  *Load Plugin Models* - to (re-)load plugin models 
     160*  *Add Custom Model* - to create a plugin model template with a helper dialog 
     161*  *Edit Custom Model* - to edit a plugin model in an editor window 
     162*  *Manage Custom Models* - to open a custom model manager allowing for a number of actions to be taken on custom models: listing, adding, deleteing, duplicating, editing 
     163*  *Add/Multiply Models* - to create a plugin model by summing/multiplying *existing models* in the model library 
    164164 
    165165.. _New_Plugin_Model: 
    166166 
    167 New Plugin Model 
     167Add Custom Model 
    168168^^^^^^^^^^^^^^^^ 
    169169 
    170170Relatively straightforward models can be programmed directly from the SasView 
    171 GUI using the *New Plugin Model Function*. 
     171GUI using the *Plugin Definition* Function. 
    172172 
    173173.. image:: new_model.png 
     
    185185 
    186186A model file generated by this option can be viewed and further modified using 
    187 the :ref:`Advanced_Plugin_Editor` . 
     187the :ref:`Model_Editor`. 
    188188 
    189189**SasView version 4.2** made it possible to specify whether a plugin created with 
     
    217217a P(Q) model has been selected). 
    218218 
    219 Sum|Multi(p1,p2) 
    220 ^^^^^^^^^^^^^^^^ 
     219 
     220.. Model_Editor: 
     221 
     222Model Editor 
     223^^^^^^^^^^^^ 
     224 
     225Selecting "Edit Custom Model" option opens the editor window. 
     226 
     227.. image :: model_editor_empty.png 
     228 
     229Initially, the editor is empty. A custom model can be loaded by clicking on the *Load plugin...* button and choosing one of the existing custom plugins. 
     230 
     231Once the model is loaded, it can be edited and saved with *Save* button. 
     232Saving the model will perform the validation and only when the model is correct it will be saved to a file. 
     233Successful model check is indicated by a SasView status bar message. 
     234 
     235When *Cancel* is clicked, any changes to the model are discarded and the window is closed. 
     236 
     237 
     238For details of the SasView plugin model format see :ref:`Writing_a_Plugin` . 
     239 
     240To use the model, go to the relevant *Fit Page*, select the *Plugin Models* 
     241category and then select the model from the drop-down menu. 
     242 
     243 
     244.. Plugin_Manager: 
     245 
     246Plugin Manager 
     247^^^^^^^^^^^^^^ 
     248 
     249Selecting the *Manage Custom Models* option shows a list of all the plugin models in the plugin model folder, on Windows this is 
     250 
     251  *C:\\Users\\{username}\\.sasview\\plugin_models* 
     252 
     253You can add, edit, duplicate and delete these models using buttons on the right side of the list. 
     254 
     255.. image:: plugin_manager.png 
     256 
     257 
     258Add a model 
     259^^^^^^^^^^^ 
     260 
     261Clicking the "Add" button opens the Model Editor window, allowing you to create a new plugin as described above. 
     262 
     263Duplicate a model 
     264^^^^^^^^^^^^^^^^^ 
     265 
     266Clicking the "Duplicate" button will create a copy of the selected model(s). Naming of the duplicate follows the standard, with added * (n)* to the plugin model name, with *n* being the first unused yet integer. 
     267 
     268Edit a model 
     269^^^^^^^^^^^^ 
     270 
     271When a single model is selected, clicking this button will open the Advanced *Model Editor* allowing you to edit the 
     272Python code of the model. 
     273If no models or multiple models are selected, the *Edit* button is disabled. 
     274 
     275Delete Plugin Models 
     276^^^^^^^^^^^^^^^^^^^^ 
     277 
     278Simply highlight the plugin model(s) to be removed and click on the "Delete" button. The operation is final. 
     279 
     280*NB: Models shipped with SasView cannot be removed in this way.* 
     281 
     282 
     283Add/Multiply Models 
     284^^^^^^^^^^^^^^^^^^^ 
    221285 
    222286.. image:: sum_model.png 
     
    230294     Plugin Model = scale_factor * (model1 * model2) + background 
    231295 
    232 In the *Easy Sum/Multi Editor* give the new model a function name and brief 
     296In the *Add/Multiply Models* give the new model a function name and brief 
    233297description (to appear under the *Details* button on the *FitPage*). Then select 
    234 two existing models, as p1 and p2, and the required operator, '+' or '*' between 
     298two existing models, as model_1 and model_2, and the required operator, '+' or '*' between 
    235299them. Finally, click the *Apply* button to generate and test the model and then click *Close*. 
    236300 
    237 Any changes to a plugin model generated in this way only become effective *after* it is re-selected 
    238 from the plugin models drop-down menu on the FitPage. If the model is not listed you can force a 
    239 recompilation of the plugins by selecting *Fitting* > *Plugin Model Operations* > *Load Plugin Models*. 
    240301 
    241302**SasView version 4.2** introduced a much simplified and more extensible structure for plugin models 
    242 generated through the Easy Sum/Multi Editor. For example, the code for a combination of a sphere model 
     303generated through the Add/Multiply Models editor. For example, the code for a combination of a sphere model 
    243304with a power law model now looks like this:: 
    244305 
     
    275336that was not possible in earlier versions of SasView. 
    276337 
    277 .. _Advanced_Plugin_Editor: 
    278  
    279 Advanced Plugin Editor 
    280 ^^^^^^^^^^^^^^^^^^^^^^ 
    281  
    282 Selecting this option shows all the plugin models in the plugin model folder, on Windows this is 
    283  
    284   *C:\\Users\\{username}\\.sasview\\plugin_models* 
    285  
    286 You can edit, modify, and save the Python code in any of these models using the 
    287 *Advanced Plugin Model Editor*. Note that this is actually the same tool as the :ref:`Python_shell` . 
    288  
    289 For details of the SasView plugin model format see :ref:`Writing_a_Plugin` . 
    290  
    291 .. note:: Model files generated with the Sum/Multi option are still using the SasView 3.x model format. Unless you are confident about what you are doing, it is recommended that you only modify lines denoted with the ## <----- comments! 
    292  
    293 When editing is complete, select *Run* > *Check Model* from the *Advanced Plugin Model Editor* menu bar. An *Info* box will appear with the results of the compilation and model unit tests. The model will only be usable if the tests 'pass'. 
    294  
    295 .. image:: ../calculator/new_pycrust_example_2.png 
    296  
    297 To use the model, go to the relevant *Fit Page*, select the *Plugin Models* 
    298 category and then select the model from the drop-down menu. 
    299  
    300 Any changes to a plugin model generated in this way only become effective *after* it is re-selected from the model drop-down menu on the FitPage. 
    301  
    302 Delete Plugin Models 
    303 ^^^^^^^^^^^^^^^^^^^^ 
    304  
    305 Simply highlight the plugin model to be removed. The operation is final!!! 
    306  
    307 *NB: Models shipped with SasView cannot be removed in this way.* 
    308  
    309 Load Plugin Models 
    310 ^^^^^^^^^^^^^^^^^^ 
    311  
    312 This option loads (or re-loads) all models present in the 
    313 *~\\.sasview\\plugin_models* folder. 
     338 
    314339 
    315340.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    317342.. _Fitting_Options: 
    318343 
    319 Fitting Options 
     344Fit Algorithms 
    320345--------------- 
    321346 
     
    323348to modify some of the configurational parameters for each optimiser. 
    324349 
    325 From *Fitting* in the menu bar select *Fit Options*, then select one of the following 
     350From *Fitting* in the menu bar select *Fit Algorithms*, then select one of the following 
    326351optimisers: 
    327352 
     
    332357*  Nelder-Mead Simplex 
    333358 
     359.. image:: fit_algorithms.png 
     360 
    334361The DREAM optimiser is the most sophisticated, but may not necessarily be the best 
    335362option for fitting simple models. If uncertain, try the Levenberg-Marquardt optimiser 
     
    348375sub-region of the data for fitting. 
    349376 
    350 In a *FitPage* or *BatchPage* change the *Q* values in the *Min* and/or *Max* 
    351 text boxes. Vertical coloured bars will appear on the graph with the data and 
    352 'theory' indicating the current *Q* limits (red = *Qmin*, purple = *Qmax*). 
     377In a *FitPage* or *BatchPage* change the tab to *Fit Options* and then change  
     378the *Q* values in the *Min* and/or *Max* 
     379text boxes.  
     380 
     381.. 
     382  Vertical coloured bars will appear on the graph with the data and 
     383  'theory' indicating the current *Q* limits (red = *Qmin*, purple = *Qmax*). 
    353384 
    354385To return to including all data in the fit, click the *Reset* button. 
     
    356387.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
    357388 
    358  
    359 Shortcuts 
    360 --------- 
    361  
    362 Copy/Paste Parameters 
    363 ^^^^^^^^^^^^^^^^^^^^^ 
    364  
    365 It is possible to copy the parameters from one *Fit Page* and to paste them into 
    366 another *Fit Page* using the same model. 
    367  
    368 To *copy* parameters, either: 
    369  
    370 *  Select *Edit -> Copy Params* from the menu bar, or 
    371 *  Use Ctrl(Cmd on Mac) + Left Mouse Click on the *Fit Page*. 
    372  
    373 To *paste* parameters, either: 
    374  
    375 *  Select *Edit -> Paste Params* from the menu bar, or 
    376 *  Use Ctrl(Cmd on Mac) + Shift + Left-click on the *Fit Page*. 
    377  
    378 If either operation is successful a message will appear in the info line at the 
    379 bottom of the SasView window. 
    380  
    381 Bookmark 
    382 ^^^^^^^^ 
    383  
    384 To *Bookmark* a *Fit Page* either: 
    385  
    386 *  Select a *Fit Page* and then click on *Bookmark* in the tool bar, or 
    387 *  Right-click and select the *Bookmark* in the popup menu. 
     389.. 
     390 
     391  Shortcuts 
     392  --------- 
     393 
     394  Copy/Paste Parameters 
     395  ^^^^^^^^^^^^^^^^^^^^^ 
     396 
     397  It is possible to copy the parameters from one *Fit Page* and to paste them into 
     398  another *Fit Page* using the same model. 
     399 
     400  To *copy* parameters, either: 
     401 
     402  *  Select *Edit -> Copy Params* from the menu bar, or 
     403  *  Use Ctrl(Cmd on Mac) + Left Mouse Click on the *Fit Page*. 
     404 
     405  To *paste* parameters, either: 
     406 
     407  *  Select *Edit -> Paste Params* from the menu bar, or 
     408  *  Use Ctrl(Cmd on Mac) + Shift + Left-click on the *Fit Page*. 
     409 
     410  If either operation is successful a message will appear in the info line at the 
     411  bottom of the SasView window. 
     412 
     413  Bookmark 
     414  ^^^^^^^^ 
     415 
     416  To *Bookmark* a *Fit Page* either: 
     417 
     418  *  Select a *Fit Page* and then click on *Bookmark* in the tool bar, or 
     419  *  Right-click and select the *Bookmark* in the popup menu. 
    388420 
    389421.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    391423.. _Status_bar: 
    392424 
    393 Status Bar & Console 
    394 -------------------- 
     425Status Bar & Log Explorer 
     426------------------------- 
    395427 
    396428The status bar is located at the bottom of the SasView window and displays 
    397 messages, hints, warnings and errors. 
    398  
    399 At the right-hand side of the status bar is a button marked *Console*. The *Console* 
    400 displays available message history and some run-time traceback information. 
    401  
    402 During a long task the *Console* can also be used to monitor the progress. 
     429messages, warnings and errors. 
     430 
     431.. image:: log_explorer.png 
     432 
     433The bottom part of the SasView application window contains the *Log Explorer*. 
     434The *Log Explorer* displays available message history and run-time traceback information. 
    403435 
    404436.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     
    409441--------------- 
    410442 
    411 *NB: Before proceeding, ensure that the Single Mode radio button at the bottom of* 
    412 *the Data Explorer is checked (see the section* :ref:`Loading_data` *).* 
     443*NB: Before proceeding, ensure that the Batch mode checkbox at the bottom of* 
     444*the Data Explorer is unchecked (see the section* :ref:`Loading_data` *).* 
    413445 
    414446This mode fits one data set. 
    415447 
    416 When data is sent to the fitting it is plotted in a graph window as markers. 
     448.. When data is sent to the fitting it is plotted in a graph window as markers. 
     449When data is sent to the fitting, the Fit Page will show the dataset name. 
     450 
     451.. image:: dataset_name.png 
     452 
     453Clicking on the *Show Plot* will cause the data can be plotted in a graph window as markers. 
    417454 
    418455If a graph does not appear, or a graph window appears but is empty, then the data 
     
    420457or in the *Console* window. 
    421458 
    422 Assuming the data has loaded correctly, when a model is selected a green model 
     459Assuming the data has loaded correctly, when a model is selected a blue model 
    423460calculation (or what SasView calls a 'Theory') line will appear in the earlier graph 
    424461window, and a second graph window will appear displaying the residuals (the 
     
    440477*'correlated').* 
    441478 
    442 In the bottom left corner of the *Fit Page* is a box displaying the normalised value 
     479In the bottom right corner of the *Fit Page* is a box displaying the normalised value 
    443480of the statistical $\chi^2$ parameter returned by the optimiser. 
    444481 
  • src/sas/qtgui/Plotting/PlotterBase.py

    r42787fb re30646ab  
    3838        # Define canvas for the figure to be placed on 
    3939        self.canvas = FigureCanvas(self.figure) 
    40  
    41         # ... and the toolbar with all the default MPL buttons 
    42         self.toolbar = NavigationToolbar(self.canvas, self) 
    4340 
    4441        # Simple window for data display 
     
    112109        if not quickplot: 
    113110            # Add the toolbar 
     111            self.toolbar = NavigationToolbar(self.canvas, self) 
    114112            layout.addWidget(self.toolbar) 
    115113            # Notify PlotHelper about the new plot 
     
    297295        Use the internal MPL method for saving to file 
    298296        """ 
     297        if not hasattr(self, "toolbar"): 
     298            self.toolbar = NavigationToolbar(self.canvas, self) 
    299299        self.toolbar.save_figure() 
    300300 
  • src/sas/qtgui/Utilities/TabbedModelEditor.py

    raed0532 rf9214aa  
    241241        # Run the model test in sasmodels 
    242242        try: 
    243             model_results = self.checkModel(full_path) 
     243            model_results = GuiUtils.checkModel(full_path) 
    244244            logging.info(model_results) 
    245245        except Exception as ex: 
  • src/sas/sascalc/fit/AbstractFitEngine.py

    r63319b0 racd9c311  
    300300            self.qmax = math.sqrt(x_max * x_max + y_max * y_max) 
    301301        ## new error image for fitting purpose 
    302         if self.err_data is None or not self.err_data: 
     302        if self.err_data is None or self.err_data == []: 
    303303            self.res_err_data = np.ones(len(self.data)) 
    304304        else: 
Note: See TracChangeset for help on using the changeset viewer.