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