Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									c1cd826542
								
							
						
					
					
						commit
						cdcccf8db1
					
				
							
								
								
									
										187
									
								
								src/SimNDT/gui/HelperMethods.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								src/SimNDT/gui/HelperMethods.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,187 @@ | |||
| #!/usr/bin/env python | ||||
| # encoding: utf-8 | ||||
| """ | ||||
| HelperMethods.py | ||||
| 
 | ||||
| Created by Miguel Molero on 2013-08-28. | ||||
| Copyright (c) 2013 MMolero. All rights reserved. | ||||
| """ | ||||
| 
 | ||||
| import os | ||||
| from PySide.QtCore import * | ||||
| from PySide.QtGui import * | ||||
| 
 | ||||
| import collections | ||||
| import re, copy | ||||
| import numpy as np | ||||
| 
 | ||||
| 
 | ||||
| def sort_nicely(l): | ||||
|     """ | ||||
|     Sort the given list in the way that humans expect. | ||||
|     """ | ||||
|     convert = lambda text: int(text) if text.isdigit() else text | ||||
|     alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)] | ||||
|     l.sort(key=alphanum_key) | ||||
| 
 | ||||
| 
 | ||||
| def createAction(parent, text, slot=None, shortcut=None, icon=None, | ||||
|                  tip=None, checkable=False, signal="triggered()"): | ||||
|     action = QAction(text, parent) | ||||
|     if icon is not None: | ||||
|         action.setIcon(QIcon(":/%s" % icon)) | ||||
|     if shortcut is not None: | ||||
|         action.setShortcut(shortcut) | ||||
|     if tip is not None: | ||||
|         action.setToolTip(tip) | ||||
|         action.setStatusTip(tip) | ||||
|     if slot is not None: | ||||
|         parent.connect(action, SIGNAL(signal), slot) | ||||
|     if checkable: | ||||
|         action.setCheckable(True) | ||||
|     return action | ||||
| 
 | ||||
| 
 | ||||
| def addActions(target, actions): | ||||
|     if not isinstance(actions, collections.Iterable): | ||||
|         target.addAction(actions) | ||||
|     else: | ||||
|         for action in actions: | ||||
|             if action is None: | ||||
|                 target.addSeparator() | ||||
|             else: | ||||
|                 target.addAction(action) | ||||
| 
 | ||||
| 
 | ||||
| def addWidgets(target, widgets): | ||||
|     if not isinstance(widgets, collections.Iterable): | ||||
|         target.addWidget(widgets) | ||||
|     else: | ||||
|         for widget in widgets: | ||||
|             target.addWidget(widget) | ||||
| 
 | ||||
| 
 | ||||
| def setEnabled(actions, state): | ||||
|     if not isinstance(actions, collections.Iterable): | ||||
|         actions.setEnabled(state) | ||||
|     else: | ||||
|         for action in actions: | ||||
|             if action is not None: | ||||
|                 action.setEnabled(state) | ||||
| 
 | ||||
| 
 | ||||
| def setVisible(target, state): | ||||
|     if not isinstance(target, collections.Iterable): | ||||
|         target.setVisible(state) | ||||
|     else: | ||||
|         for item in target: | ||||
|             if item is not None: | ||||
|                 item.setVisible(state) | ||||
| 
 | ||||
| 
 | ||||
| def setText(target, string): | ||||
|     if not isinstance(target, collections.Iterable): | ||||
|         target.setText(string) | ||||
|     else: | ||||
|         for item in target: | ||||
|             if item is not None: | ||||
|                 item.setText(string) | ||||
| 
 | ||||
| 
 | ||||
| def clear(target): | ||||
|     if not isinstance(target, collections.Iterable): | ||||
|         target.clear() | ||||
|     else: | ||||
|         for item in target: | ||||
|             item.clear() | ||||
| 
 | ||||
| 
 | ||||
| def is_number(s): | ||||
|     try: | ||||
|         float(s) | ||||
|         return True | ||||
|     except ValueError: | ||||
|         return False | ||||
| 
 | ||||
| 
 | ||||
| def mat2Obj(fromMat, toObj): | ||||
|     for name in fromMat._fieldnames: | ||||
|         value = getattr(fromMat, name) | ||||
|         if hasattr(toObj, name): | ||||
|             # print toObj, name | ||||
|             if isinstance(value, float) or isinstance(value, str) or isinstance(value, int): | ||||
|                 setattr(toObj, name, value) | ||||
|             elif isinstance(value, np.ndarray): | ||||
|                 if value.size == 1: | ||||
|                     setattr(toObj, name, value.item()) | ||||
|                 else: | ||||
|                     setattr(toObj, name, value) | ||||
| 
 | ||||
|     return toObj | ||||
| 
 | ||||
| 
 | ||||
| def objWithListstoArrays(obj): | ||||
|     for name in obj._fieldnames: | ||||
|         value = getattr(obj, name) | ||||
|         if isinstance(value, list): | ||||
|             setattr(obj, name, np.array(value)) | ||||
| 
 | ||||
|     return obj | ||||
| 
 | ||||
| 
 | ||||
| def objWithArraysToLists(obj): | ||||
|     for name in obj._fieldnames: | ||||
|         value = getattr(obj, name) | ||||
|         if isinstance(value, np.ndarray): | ||||
|             setattr(obj, name, value.tolist()) | ||||
| 
 | ||||
|     return obj | ||||
| 
 | ||||
| 
 | ||||
| def loadDataFromList(data2load, key, Class): | ||||
|     if key in data2load: | ||||
|         target = list() | ||||
|         if isinstance(data2load[key], np.ndarray): | ||||
|             for item in (data2load[key]).tolist(): | ||||
|                 _item = copy.deepcopy(mat2Obj(item, Class)) | ||||
|                 target.append(_item) | ||||
|         else: | ||||
|             _class = copy.deepcopy(mat2Obj(data2load[key], Class)) | ||||
|             target.append(_class) | ||||
| 
 | ||||
|         return target | ||||
|     else: | ||||
|         None | ||||
| 
 | ||||
| 
 | ||||
| def loadDataFromListWithLabels(data2load, key, listLabels, listClasses): | ||||
|     if key in data2load: | ||||
|         target = list() | ||||
| 
 | ||||
|         if isinstance(data2load[key], np.ndarray): | ||||
|             for item in (data2load[key]).tolist(): | ||||
|                 for i in range(len(listLabels)): | ||||
|                     if item.Name == listLabels[i]: | ||||
|                         _class = copy.deepcopy(mat2Obj(item, listClasses[i])) | ||||
|                         target.append(_class) | ||||
|         else: | ||||
|             item = data2load[key] | ||||
|             for i in range(len(listLabels)): | ||||
|                 if item.Name == listLabels[i]: | ||||
|                     _class = copy.deepcopy(mat2Obj(item, listClasses[i])) | ||||
|                     target.append(_class) | ||||
|         return target | ||||
| 
 | ||||
|     else: | ||||
|         None | ||||
| 
 | ||||
| 
 | ||||
| def loadDataWithLabels(data2load, key, listLabels, listClasses): | ||||
|     if key in data2load: | ||||
|         item = data2load[key] | ||||
|         for i in range(len(listLabels)): | ||||
|             if item.Name == listLabels[i]: | ||||
|                 target = copy.deepcopy(mat2Obj(item, listClasses[i])) | ||||
|         return target | ||||
|     else: | ||||
|         None | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user