Changeset 845144e in sasview for src/sas/sasgui
- Timestamp:
- Oct 17, 2018 4:30:31 PM (6 years ago)
- Branches:
- master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, unittest-saveload
- Children:
- 9fb4572
- Parents:
- b204004 (diff), 67ed543 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- src/sas/sasgui
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/guiframe/aboutbox.py
rb963b20 r1b4cb41 108 108 self.bitmap_button_tudelft = wx.BitmapButton(self, -1, wx.NullBitmap) 109 109 self.bitmap_button_dls = wx.BitmapButton(self, -1, wx.NullBitmap) 110 self.bitmap_button_bam = wx.BitmapButton(self, -1, wx.NullBitmap) 110 111 111 112 self.static_line_3 = wx.StaticLine(self, -1) … … 128 129 self.Bind(wx.EVT_BUTTON, self.onTudelftLogo, self.bitmap_button_tudelft) 129 130 self.Bind(wx.EVT_BUTTON, self.onDlsLogo, self.bitmap_button_dls) 131 self.Bind(wx.EVT_BUTTON, self.onBamLogo, self.bitmap_button_bam) 130 132 # end wxGlade 131 133 # fill in acknowledgements … … 226 228 logo = wx.Bitmap(image) 227 229 self.bitmap_button_dls.SetBitmapLabel(logo) 230 231 image = file_dir + "/images/bam_logo.png" 232 if os.path.isfile(config._bam_logo): 233 image = config._bam_logo 234 logo = wx.Bitmap(image) 235 self.bitmap_button_bam.SetBitmapLabel(logo) 228 236 229 237 # resize dialog window to fit version number nicely … … 258 266 self.bitmap_button_tudelft.SetSize(self.bitmap_button_tudelft.GetBestSize()) 259 267 self.bitmap_button_dls.SetSize(self.bitmap_button_dls.GetBestSize()) 268 self.bitmap_button_bam.SetSize(self.bitmap_button_bam.GetBestSize()) 260 269 # end wxGlade 261 270 … … 325 334 sizer_logos.Add(self.bitmap_button_dls, 0, 326 335 wx.LEFT|wx.ADJUST_MINSIZE, 2) 336 sizer_logos.Add(self.bitmap_button_bam, 0, 337 wx.LEFT|wx.ADJUST_MINSIZE, 2) 327 338 328 339 sizer_logos.Add((10, 50), 0, wx.ADJUST_MINSIZE, 0) … … 430 441 event.Skip() 431 442 443 def onBamLogo(self, event): 444 """ 445 """ 446 # wxGlade: DialogAbout.<event_handler> 447 launchBrowser(config._bam_url) 448 event.Skip() 449 432 450 # end of class DialogAbout 433 451 -
src/sas/sasgui/guiframe/config.py
r1efbc190 r1b4cb41 33 33 _do_aboutbox = True 34 34 _do_acknowledge = True 35 _do_release = True 35 36 _do_tutorial = True 36 37 _acknowledgement_preamble =\ … … 49 50 _acknowledgement_citation = \ 50 51 '''M. Doucet et al. SasView Version 4.1.2, Zenodo, 10.5281/zenodo.825675''' 51 52 52 _acknowledgement = \ 53 '''This work was originally developed as part of the DANSE project funded by the US NSF under Award DMR-0520547,\n but is currently maintained by a collaboration between UTK, UMD, NIST, ORNL, ISIS, ESS, ILL, ANSTO, TU Delft, DLS, and the scattering community.\n\n SasView also contains code developed with funding from the EU Horizon 2020 programme under the SINE2020 project (Grant No 654000).\nA list of individual contributors can be found at: http://www.sasview.org/contact.html53 '''This work was originally developed as part of the DANSE project funded by the US NSF under Award DMR-0520547,\n but is currently maintained by a collaboration between UTK, UMD, NIST, ORNL, ISIS, ESS, ILL, ANSTO, TU Delft, DLS, BAM and the scattering community.\n\n SasView also contains code developed with funding from the EU Horizon 2020 programme under the SINE2020 project (Grant No 654000).\nA list of individual contributors can be found at: http://www.sasview.org/contact.html 54 54 ''' 55 55 … … 90 90 _tudelft_url = "http://www.tnw.tudelft.nl/en/cooperation/facilities/reactor-instituut-delft/" 91 91 _dls_url = "http://www.diamond.ac.uk/" 92 _bam_url = "http://www.bam.de/" 92 93 _danse_url = "http://www.cacr.caltech.edu/projects/danse/release/index.html" 93 94 _inst_url = "http://www.utk.edu" 94 95 _corner_image = os.path.join(icon_path, "angles_flat.png") 95 96 _welcome_image = os.path.join(icon_path, "SVwelcome.png") 96 _copyright = "(c) 2009 - 201 7, UTK, UMD, NIST, ORNL, ISIS, ESS, ILL, ANSTO, TU Delft, and DLS"97 _copyright = "(c) 2009 - 2018, UTK, UMD, NIST, ORNL, ISIS, ESS, ILL, ANSTO, TU Delft, DLS and BAM" 97 98 marketplace_url = "http://marketplace.sasview.org/" 98 99 -
src/sas/sasgui/guiframe/gui_manager.py
rb1ec23d r845144e 1277 1277 1278 1278 wx_id = wx.NewId() 1279 self._help_menu.Append(wx_id, '&Documentation', ' ')1279 self._help_menu.Append(wx_id, '&Documentation', 'Help documentation for SasView') 1280 1280 wx.EVT_MENU(self, wx_id, self._onSphinxDocs) 1281 1281 1282 1282 if config._do_tutorial and (IS_WIN or sys.platform == 'darwin'): 1283 1283 wx_id = wx.NewId() 1284 self._help_menu.Append(wx_id, '&Tutorial', 'Software tutorial') 1284 # Pluralised both occurences of 'Tutorial' in the line below 1285 # S King, Sep 2018 1286 self._help_menu.Append(wx_id, '&Tutorials', 'Tutorials on how to use SasView') 1285 1287 wx.EVT_MENU(self, wx_id, self._onTutorial) 1288 1289 if config.marketplace_url: 1290 wx_id = wx.NewId() 1291 self._help_menu.Append(wx_id, '&Model marketplace', 'Plug-in fitting models for SasView') 1292 wx.EVT_MENU(self, wx_id, self._on_marketplace_click) 1293 1294 if config._do_release: 1295 wx_id = wx.NewId() 1296 self._help_menu.Append(wx_id, '&Release notes', 1297 'SasView release notes and known issues') 1298 wx.EVT_MENU(self, wx_id, self._onRelease) 1286 1299 1287 1300 if config._do_acknowledge: … … 1294 1307 logger.info("Doing help menu") 1295 1308 wx_id = wx.NewId() 1296 self._help_menu.Append(wx_id, '&About', ' Software information')1309 self._help_menu.Append(wx_id, '&About', 'Information about SasView') 1297 1310 wx.EVT_MENU(self, wx_id, self._onAbout) 1298 1299 if config.marketplace_url:1300 wx_id = wx.NewId()1301 self._help_menu.Append(wx_id, '&Model marketplace', '')1302 wx.EVT_MENU(self, wx_id, self._on_marketplace_click)1303 1311 1304 1312 # Checking for updates … … 2138 2146 dialog.ShowModal() 2139 2147 2148 def _onRelease(self, evt): 2149 """ 2150 Pop up the release notes 2151 2152 :param evt: menu event 2153 2154 """ 2155 # S King, Sep 2018 2156 2157 from documentation_window import DocumentationWindow 2158 _TreeLocation = "user/release.html" 2159 DocumentationWindow(self, -1, _TreeLocation, "", 2160 "SasView Documentation") 2161 2140 2162 def _onTutorial(self, evt): 2141 2163 """ … … 2145 2167 2146 2168 """ 2147 if config._do_tutorial: 2148 path = config.TUTORIAL_PATH 2149 if IS_WIN: 2150 try: 2151 from sas.sasgui.guiframe.pdfview import PDFFrame 2152 dialog = PDFFrame(None, -1, "Tutorial", path) 2153 # put icon 2154 self.put_icon(dialog) 2155 dialog.Show(True) 2156 except: 2157 logger.error("Error in _onTutorial: %s" % sys.exc_value) 2158 try: 2159 # Try an alternate method 2160 logger.error( 2161 "Could not open the tutorial pdf, trying xhtml2pdf") 2162 from xhtml2pdf import pisa 2163 pisa.startViewer(path) 2164 except: 2165 logger.error( 2166 "Could not open the tutorial pdf with xhtml2pdf") 2167 msg = "This feature requires 'PDF Viewer'\n" 2168 wx.MessageBox(msg, 'Error') 2169 else: 2170 try: 2171 command = "open '%s'" % path 2172 os.system(command) 2173 except: 2174 try: 2175 # Try an alternate method 2176 logger.error( 2177 "Could not open the tutorial pdf, trying xhtml2pdf") 2178 from xhtml2pdf import pisa 2179 pisa.startViewer(path) 2180 except: 2181 logger.error( 2182 "Could not open the tutorial pdf with xhtml2pdf") 2183 msg = "This feature requires the Preview application\n" 2184 wx.MessageBox(msg, 'Error') 2169 # Action changed from that in 2.x/3.x/4.0.x/4.1.x 2170 # Help >> Tutorial used to bring up a pdf of the 2171 # original 2.x tutorial. 2172 # Code below, implemented from 4.2.0, redirects 2173 # action to the Tutorials page of the help 2174 # documentation to give access to all available 2175 # tutorials 2176 # S King, Sep 2018 2177 2178 from documentation_window import DocumentationWindow 2179 _TreeLocation = "user/tutorial.html" 2180 DocumentationWindow(self, -1, _TreeLocation, "", 2181 "SasView Documentation") 2185 2182 2186 2183 def _onSphinxDocs(self, evt): -
src/sas/sasgui/perspectives/corfunc/corfunc_panel.py
r2a399ca r5652efc 20 20 21 21 OUTPUT_STRINGS = { 22 'max': "Long Period / 2(A): ",22 'max': "Long Period (A): ", 23 23 'Lc': "Average Hard Block Thickness (A): ", 24 24 'dtr': "Average Interface Thickness (A): ", -
src/sas/sasgui/perspectives/corfunc/corfunc_state.py
r1fa4f736 r5652efc 28 28 # List of output parameters, used by __str__ 29 29 output_list = [ 30 ['max', "Long Period / 2(A): "],30 ['max', "Long Period (A): "], 31 31 ['Lc', "Average Hard Block Thickness (A): "], 32 32 ['dtr', "Average Interface Thickness (A): "], -
src/sas/sasgui/perspectives/corfunc/media/corfunc_help.rst
r501712f r490f790 33 33 Both analyses are performed in 3 stages: 34 34 35 * Extrapolation of the scattering curve to :math:` Q= 0` and toward36 :math:` Q= \infty`35 * Extrapolation of the scattering curve to :math:`q = 0` and toward 36 :math:`q = \infty` 37 37 * Smoothed merging of the two extrapolations into the original data 38 38 * Fourier / Hilbert Transform of the smoothed data to give the correlation … … 47 47 ------------- 48 48 49 To :math:` Q= 0`49 To :math:`q = 0` 50 50 ................ 51 51 … … 67 67 the impact on any extrapolated parameters will be least significant. 68 68 69 To :math:` Q= \infty`69 To :math:`q = \infty` 70 70 ..................... 71 71 … … 145 145 - do they smoothly curve onto the ordinate at x = 0? (if not check the value 146 146 of :math:`\sigma` is sensible) 147 - are there ripples at x values corresponding to (2 :math:` pi` over) the two147 - are there ripples at x values corresponding to (2 :math:`\pi` over) the two 148 148 q values at which the extrapolated and experimental data are merged? 149 - are there any artefacts at x values corresponding to 2 :math:` pi` / q\ :sub:`max` in149 - are there any artefacts at x values corresponding to 2 :math:`\pi` / q\ :sub:`max` in 150 150 the experimental data? 151 151 - and lastly, do the significant features/peaks in the correlation functions … … 158 158 -q^{4} I(q) 159 159 160 The IDF is proportional to the second derivative of Î\ :sub:`1`\ (x). 160 The IDF is proportional to the second derivative of Î\ :sub:`1`\ (x) and represents a 161 superposition of thickness distributions from all the contributing lamellae. 161 162 162 163 Hilbert … … 192 193 * Local Crystallinity :math:`= L_c/L_p` 193 194 195 .. warning:: If the sample does not possess lamellar morphology then "Compute 196 Parameters" will return garbage! 197 198 194 199 Volume Fraction Profile 195 200 ....................... … … 213 218 214 219 The reader is directed to the references for information on these parameters. 220 215 221 216 222 References … … 263 269 Once the Q ranges have been set, click the "Calculate Bg" button to determine the 264 270 background level. Alternatively, enter your own value into the box. If the box turns 265 yellow this indicates that background subtraction has created some negative intensities. 271 yellow this indicates that background subtraction has created some negative intensities. 272 This may still be fine provided the peak intensity is very much greater than the 273 background level. The important point is that the extrapolated dataset must approach 274 zero at high-q. 266 275 267 276 Now click the "Extrapolate" button to extrapolate the data. The graph window will update … … 296 305 297 306 .. note:: 298 This help document was last changed by Steve King, 2 6Sep2017307 This help document was last changed by Steve King, 28Sep2017 -
src/sas/sasgui/perspectives/corfunc/media/fdr-pdfs.rst
r959eb01 r577460c 7 7 8 8 :download:`Fibre_Diffraction_Review_1994_3_25-29.pdf <Fibre_Diffraction_Review_1994_3_25-29.pdf>` 9 9 10 :download:`Fibre_Diffraction_Review_2004_12_24.pdf <Fibre_Diffraction_Review_2004_12_24.pdf>` 11 10 12 :download:`Fibre_Diffraction_Review_2005_13_19-22.pdf <Fibre_Diffraction_Review_2005_13_19-22.pdf>` -
src/sas/sasgui/perspectives/fitting/basepage.py
ra4a1ac9 r5323490 2884 2884 self.magnetic_on = True 2885 2885 button.SetLabel("Magnetic OFF") 2886 m_value = 1 .0e-062886 m_value = 1 2887 2887 for key in self.model.magnetic_params: 2888 2888 if key.count('M0') > 0: 2889 2889 self.model.setParam(key, m_value) 2890 m_value += 0.5 e-062890 m_value += 0.5 2891 2891 else: 2892 2892 self.magnetic_on = False -
src/sas/sasgui/perspectives/fitting/fitpage.py
rdabcaf7 rba1c145 3 3 fitting a model and one data 4 4 """ 5 from __future__ import print_function 6 5 7 import sys 6 8 import wx … … 1255 1257 if saved_pars: 1256 1258 self.get_paste_params(saved_pars) 1259 1260 # Make sure the model parameters correspond to the fit parameters 1261 self._update_paramv_on_fit() 1257 1262 1258 1263 if event is not None: -
src/sas/sasgui/perspectives/fitting/fitting.py
raf7d2e5 raba4559 339 339 Update custom model list in the fitpage combo box 340 340 """ 341 custom_model = 'Plugin Models'342 341 try: 343 342 # Update edit menus … … 347 346 if not new_pmodel_list: 348 347 return 349 # Set the new plugin model list for all fit pages 348 349 # Redraws to a page not in focus are showing up as if they are 350 # in the current page tab. 351 current_page_index = self.fit_panel.GetSelection() 352 current_page = self.fit_panel.GetCurrentPage() 353 last_drawn_page = current_page 354 355 # Set the new plugin model list for all fit pages; anticipating 356 # categories, the updated plugin may be in either the form factor 357 # or the structure factor combo boxes 350 358 for uid, page in self.fit_panel.opened_pages.iteritems(): 351 if hasattr(page, "formfactorbox"): 352 page.model_list_box = new_pmodel_list 353 mod_cat = page.categorybox.GetStringSelection() 354 if mod_cat == custom_model: 355 box = page.formfactorbox 356 model_name = box.GetValue() 357 model = (box.GetClientData(box.GetCurrentSelection()) 358 if model_name else None) 359 page._show_combox_helper() 360 new_index = box.FindString(model_name) 361 new_model = (box.GetClientData(new_index) 362 if new_index >= 0 else None) 363 if new_index >= 0: 364 box.SetStringSelection(model_name) 365 else: 366 box.SetStringSelection('') 367 if model and new_model != model: 368 page._on_select_model(keep_pars=True) 369 if hasattr(page, "structurebox"): 370 selected_name = page.structurebox.GetStringSelection() 371 372 page.structurebox.Clear() 373 page.initialize_combox() 374 375 index = page.structurebox.FindString(selected_name) 376 if index == -1: 377 index = 0 378 page.structurebox.SetSelection(index) 379 page._on_select_model() 359 pbox = getattr(page, "formfactorbox", None) 360 sbox = getattr(page, "structurebox", None) 361 if pbox is None: 362 continue 363 364 # Set the new model list for the page 365 page.model_list_box = new_pmodel_list 366 367 # Grab names of the P and S models from the page. Need to do 368 # this before resetting the form factor box since that clears 369 # the structure factor box. 370 old_struct = old_form = None 371 form_name = pbox.GetValue() 372 struct_name = sbox.GetStringSelection() 373 if form_name: 374 old_form = pbox.GetClientData(pbox.GetCurrentSelection()) 375 if struct_name: 376 old_struct = sbox.GetClientData(sbox.GetCurrentSelection()) 377 378 # Reset form factor combo box. We are doing this for all 379 # categories not just plugins since eventually the category 380 # manager will allow plugin models to be anywhere. 381 page._show_combox_helper() 382 form_index = pbox.FindString(form_name) 383 pbox.SetSelection(form_index) 384 new_form = (pbox.GetClientData(form_index) 385 if form_index != wx.NOT_FOUND else None) 386 #print("form: %r"%form_name, old_form, new_form) 387 388 # Reset structure factor combo box; even if the model list 389 # hasn't changed, the model may have. Show the structure 390 # factor combobox if the selected model is a form factor. 391 sbox.Clear() 392 page.initialize_combox() 393 if new_form is not None and getattr(new_form, 'is_form_factor', False): 394 sbox.Show() 395 sbox.Enable() 396 page.text2.Show() 397 page.text2.Enable() 398 struct_index = sbox.FindString(struct_name) 399 sbox.SetSelection(struct_index) 400 new_struct = (sbox.GetClientData(struct_index) 401 if struct_index != wx.NOT_FOUND else None) 402 #print("struct: %r"%struct_name, old_struct, new_struct) 403 404 # Update the page if P or S has changed 405 if old_form != new_form or old_struct != new_struct: 406 #print("triggering model update") 407 page._on_select_model(keep_pars=True) 408 last_drawn_page = page 409 410 # If last drawn is not the current, then switch the current to the 411 # last drawn then switch back. Very ugly. 412 if last_drawn_page != current_page: 413 for page_index in range(self.fit_panel.PageCount): 414 if self.fit_panel.GetPage(page_index) == last_drawn_page: 415 self.fit_panel.SetSelection(page_index) 416 break 417 self.fit_panel.SetSelection(current_page_index) 418 380 419 except Exception: 381 420 logger.error("update_custom_combo: %s", sys.exc_value) -
src/sas/sasgui/perspectives/invariant/invariant_state.py
rfa412df re9920cd 130 130 my_time, date = self.timestamp 131 131 file_name = self.file 132 from sas.sasview.__init__ import __version__ as sasview_version 132 133 133 134 state_num = int(self.saved_state['state_num']) 134 135 state = "\n[Invariant computation for %s: " % file_name 135 state += "performed at %s on %s] \n" % (my_time, date) 136 state += "performed at %s on %s] " % (my_time, date) 137 state += "[SasView v%s]\n" % (sasview_version) 136 138 state += "State No.: %d \n" % state_num 137 139 state += "\n=== Inputs ===\n" -
src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py
r9c7e2b8 r5218180 205 205 except NoKnownLoaderException as e: 206 206 exception_occurred = True 207 error_message = "Loading data failed! " + e.message207 error_message = "Loading data failed!\n" + e.message 208 208 file_errors[basename] = [error_message] 209 209 except Exception as e: … … 224 224 for message in error_array: 225 225 error_message += message + "\n" 226 error_message = error_message[:-1] 226 227 self.load_complete(output=output, 227 228 message=error_message, … … 231 232 self.load_complete(output=output, message="Loading data complete!", 232 233 info="info") 233 else:234 self.load_complete(output=None, message=error_message, info="error")235 234 236 235 def load_update(self, message="", info="warning"):
Note: See TracChangeset
for help on using the changeset viewer.