Changeset f32d144 in sasview for fittingview/src/sans/perspectives/fitting/fitpanel.py
- Timestamp:
- Apr 27, 2012 2:20:33 PM (12 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- f992a06
- Parents:
- 9e07bc4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fittingview/src/sans/perspectives/fitting/fitpanel.py
r4316e85 rf32d144 1 """ 2 FitPanel class contains fields allowing to fit models and data 1 3 2 import numpy 3 import string 4 :note: For Fit to be performed the user should check at least one parameter 5 on fit Panel window. 6 7 """ 4 8 import wx 5 import sys6 #from wx.lib.flatnotebook import FlatNotebook as nb7 9 from wx.aui import AuiNotebook as nb 8 10 … … 17 19 18 20 19 class FitPanel(nb, PanelBase): 20 21 class FitPanel(nb, PanelBase): 21 22 """ 22 23 FitPanel class contains fields allowing to fit models and data … … 36 37 """ 37 38 nb.__init__(self, parent, -1, 38 style= 39 style=wx.aui.AUI_NB_WINDOWLIST_BUTTON| 39 40 wx.aui.AUI_NB_DEFAULT_STYLE| 40 41 wx.CLIP_CHILDREN) … … 47 48 self.menu_mng = models.ModelManager() 48 49 self.model_list_box = self.menu_mng.get_model_list() 49 #pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING 50 #pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING 50 51 self.pageClosedEvent = wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE 51 52 52 53 self.Bind(self.pageClosedEvent, self.on_close_page) 53 54 ## save the title of the last page tab added 54 55 self.fit_page_name = {} 55 56 ## list of existing fit page 56 57 self.opened_pages = {} 57 #index of fit page 58 #index of fit page 58 59 self.fit_page_index = 0 59 60 #index of batch page 60 61 self.batch_page_index = 0 61 #page of simultaneous fit 62 #page of simultaneous fit 62 63 self.sim_page = None 63 64 self.batch_page = None … … 93 94 state = page.get_state().clone() 94 95 if data is not None: 95 new_doc = self._manager.state_reader.write_toXML(data, state) 96 new_doc = self._manager.state_reader.write_toXML(data, 97 state) 96 98 if doc != None and hasattr(doc, "firstChild"): 97 99 child = new_doc.firstChild.firstChild 98 doc.firstChild.appendChild(child) 100 doc.firstChild.appendChild(child) 99 101 else: 100 doc = new_doc 102 doc = new_doc 101 103 if msg.strip() != "": 102 104 temp = "Save Project is not supported for Batch page.\n" … … 105 107 wx.PostEvent(self._manager.parent, StatusEvent(status=message, 106 108 info="warning")) 107 return doc 109 return doc 108 110 109 111 def _on_engine_change(self, name='scipy'): … … 136 138 return temp 137 139 138 def get_page_by_id(self, uid): 140 def get_page_by_id(self, uid): 139 141 """ 140 142 """ … … 151 153 """ 152 154 wx.CallAfter(self.helper_on_page_change) 153 154 155 155 156 def helper_on_page_change(self): … … 197 198 return selected_page.get_state() 198 199 199 200 201 200 def close_all(self): 202 201 """ … … 207 206 nop = self.GetPageCount() 208 207 #use while-loop, for-loop will not do the job well. 209 while (nop >0):208 while (nop > 0): 210 209 #delete the first page until no page exists 211 210 page = self.GetPage(0) … … 219 218 self.fit_page_name = {} 220 219 ## list of existing fit page 221 self.opened_pages = {} 220 self.opened_pages = {} 222 221 223 224 222 def set_state(self, state): 225 223 """ … … 233 231 # the page is still opened 234 232 panel.reset_page(state=state) 235 panel.save_current_state() 233 panel.save_current_state() 236 234 page_is_opened = True 237 235 if not page_is_opened: … … 244 242 panel = self._manager.add_fit_page(data=list_data) 245 243 # add data associated to the page created 246 if panel is not None: 247 self._manager.store_data(uid=panel.uid, 244 if panel is not None: 245 self._manager.store_data(uid=panel.uid, 248 246 data_list=list_data, 249 247 caption=panel.window_caption) … … 260 258 self._manager.mypanels = [] 261 259 262 263 260 def on_close_page(self, event=None): 264 261 """ … … 271 268 if event is not None: 272 269 event.Veto() 273 return 270 return 274 271 self._close_helper(selected_page=selected_page) 275 272 … … 281 278 return 282 279 for index in range(self.GetPageCount()): 283 selected_page = self.GetPage(index) 284 if hasattr(selected_page, "get_data"):280 selected_page = self.GetPage(index) 281 if hasattr(selected_page, "get_data"): 285 282 data = selected_page.get_data() 286 283 287 284 if data is None: 288 #the fitpanel exists and only the initial fit page is open 285 #the fitpanel exists and only the initial fit page is open 289 286 #with no selected data 290 287 return … … 308 305 309 306 def set_model_list(self, dict): 310 """311 312 313 314 315 316 307 """ 308 copy a dictionary of model into its own dictionary 309 310 :param dict: dictionnary made of model name as key and model class 311 as value 312 """ 313 self.model_list_box = dict 317 314 318 315 def get_current_page(self): … … 330 327 page_finder = self._manager.get_page_finder() 331 328 if caption == "Simultaneous Fit": 332 self.sim_page = SimultaneousFitPage(self, page_finder=page_finder,329 self.sim_page = SimultaneousFitPage(self, page_finder=page_finder, 333 330 id=-1, batch_on=False) 334 331 self.sim_page.window_caption = caption … … 349 346 self.enable_close_button() 350 347 return self.batch_page 351 352 348 353 349 def add_empty_page(self): … … 388 384 self.enable_close_button() 389 385 panel.on_set_focus(None) 390 return panel 386 return panel 391 387 392 388 def enable_close_button(self): 393 389 """ 394 display the close button on tab for more than 1 tabs else remove the 390 display the close button on tab for more than 1 tabs else remove the 395 391 close button 396 392 """ 397 393 if self.GetPageCount() <= 1: 398 style = self.GetWindowStyleFlag() 394 style = self.GetWindowStyleFlag() 399 395 flag = wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB 400 396 if style & wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB == flag: … … 424 420 temp = self.GetSelection() 425 421 self.DeletePage(temp) 426 if self.GetPageCount() == 0:422 if self.GetPageCount() == 0: 427 423 self._manager.on_add_new_page(event=None) 428 424 … … 432 428 However all data in the set of data must be either 1D or 2D type. 433 429 This method presents option to select the data type before creating a 434 tab. 430 tab. 435 431 """ 436 432 data_1d_list = [] … … 447 443 page = None 448 444 for p in self.opened_pages.values(): 449 #check if there is an empty page to fill up 445 #check if there is an empty page to fill up 450 446 if not check_data_validity(p.get_data()) and p.batch_on: 451 447 … … 473 469 else: 474 470 #the batch analysis is canceled 475 476 471 dlg.Destroy() 472 return None 477 473 else: 478 474 if page is None: 479 475 page = self.add_empty_page() 480 476 if data_1d_list and not data_2d_list: 481 #only on type of data 477 #only on type of data 482 478 page.fill_data_combobox(data_1d_list) 483 479 elif not data_1d_list and data_2d_list: … … 492 488 493 489 def set_data(self, data_list): 494 """ 490 """ 495 491 Add a fitting page on the notebook contained by fitpanel 496 492 497 493 :param data: data to fit 498 494 499 :return panel : page just added for further used. 495 :return panel : page just added for further used. 500 496 is used by fitting module 501 497 … … 504 500 return None 505 501 if self.batch_on: 506 return self.set_data_on_batch_mode(data_list)502 return self.set_data_on_batch_mode(data_list) 507 503 else: 508 504 data = None … … 546 542 page = event.page 547 543 if page.uid in self.fit_page_name: 548 self.fit_page_name[page.uid].appendItem(page.createMemento())544 self.fit_page_name[page.uid].appendItem(page.createMemento()) 549 545 550 546 def _onUndo(self, event): … … 552 548 return the previous state of a given page is available 553 549 """ 554 page = event.page 550 page = event.page 555 551 if page.uid in self.fit_page_name: 556 if self.fit_page_name[page.uid].getCurrentPosition() ==0:552 if self.fit_page_name[page.uid].getCurrentPosition() == 0: 557 553 state = None 558 554 else: … … 561 557 page.reset_page(state) 562 558 563 def _onRedo(self, event): 559 def _onRedo(self, event): 564 560 """ 565 561 return the next state available 566 """ 567 page = event.page 562 """ 563 page = event.page 568 564 if page.uid in self.fit_page_name: 569 length = len(self.fit_page_name[page.uid])570 if self.fit_page_name[page.uid].getCurrentPosition() == length -1:565 length = len(self.fit_page_name[page.uid]) 566 if self.fit_page_name[page.uid].getCurrentPosition() == length - 1: 571 567 state = None 572 568 page._redo.Enable(False) 573 569 page._redo.Enable(True) 574 570 else: 575 state = self.fit_page_name[page.uid].getNextItem()576 page.reset_page(state) 571 state = self.fit_page_name[page.uid].getNextItem() 572 page.reset_page(state) 577 573 578 574 def _close_helper(self, selected_page): … … 584 580 # return 585 581 ## removing sim_page 586 if selected_page == self.sim_page 587 self._manager.sim_page =None582 if selected_page == self.sim_page: 583 self._manager.sim_page = None 588 584 return 589 if selected_page == self.batch_page 590 self._manager.batch_page =None585 if selected_page == self.batch_page: 586 self._manager.batch_page = None 591 587 return 592 588 """ … … 599 595 ## closing other pages 600 596 state = selected_page.createMemento() 601 page_name = selected_page.window_name 602 page_finder = self._manager.get_page_finder() 603 fitproblem = None 597 page_finder = self._manager.get_page_finder() 604 598 ## removing fit page 605 599 data = selected_page.get_data() … … 615 609 if flag and selected_page.uid == uid: 616 610 self._manager.remove_plot(uid, theory=False) 617 break 611 break 618 612 del page_finder[selected_page] 619 620 613 621 614 #Delete the name of the page into the list of open page 622 615 for uid, list in self.opened_pages.iteritems(): … … 624 617 if selected_page.uid == uid: 625 618 del self.opened_pages[selected_page.uid] 626 break 619 break 627 620 ##remove the check box link to the model name of this page (selected_page) 628 621 try: … … 631 624 ## that page is already deleted no need to remove check box on 632 625 ##non existing page 633 pass 626 pass 634 627 try: 635 628 self.batch_page.draw_page() … … 637 630 ## that page is already deleted no need to remove check box on 638 631 ##non existing page 639 pass 640 632 pass
Note: See TracChangeset
for help on using the changeset viewer.