def oedit(obj): """ Edit the object 'obj' in a GUI-based editor and return the edited copy (if Cancel is pressed, return None) The object 'obj' is a container Supported container types: dict, list, tuple, str/unicode or numpy.array (instantiate a new QApplication if necessary, so it can be called directly from the interpreter) """ # Local import from spyderlib.widgets.texteditor import TextEditor from spyderlib.widgets.dicteditor import DictEditor, ndarray, FakeObject from spyderlib.widgets.arrayeditor import ArrayEditor from spyderlib.utils.qthelpers import qapplication _app = qapplication() if isinstance(obj, ndarray) and ndarray is not FakeObject: dialog = ArrayEditor() if dialog.setup_and_check(obj): if dialog.exec_(): return obj elif isinstance(obj, (str, unicode)): dialog = TextEditor(obj) if dialog.exec_(): return dialog.get_copy() elif isinstance(obj, (dict, tuple, list)): dialog = DictEditor(obj) if dialog.exec_(): return dialog.get_copy() else: raise RuntimeError("Unsupported datatype")
def edit_array(self): """Open an array editor dialog""" parent = self.parent_layout.parent label = self.item.get_prop_value("display", "label") from spyderlib.widgets.arrayeditor import ArrayEditor editor = ArrayEditor(parent) if editor.setup_and_check(self.arr, title=label): if editor.exec_(): self.update(self.arr)
def edit_array(self): """Open an array editor dialog""" parent = self.parent_layout.parent label = self.item.get_prop_value("display", "label") from spyderlib.widgets.arrayeditor import ArrayEditor editor = ArrayEditor(parent) if editor.setup_and_check(self.arr, title=label): if editor.exec_(): self.update(self.arr)
def oedit(obj): """ Edit the object 'obj' in a GUI-based editor and return the edited copy (if Cancel is pressed, return None) The object 'obj' is a container Supported container types: dict, list, tuple, str/unicode or numpy.array (instantiate a new QApplication if necessary, so it can be called directly from the interpreter) """ # Local import from spyderlib.widgets.texteditor import TextEditor from spyderlib.widgets.dicteditor import DictEditor, ndarray, FakeObject from spyderlib.widgets.arrayeditor import ArrayEditor # Creating QApplication if necessary from PyQt4.QtGui import QApplication if QApplication.startingUp(): QApplication([]) if isinstance(obj, ndarray) and ndarray is not FakeObject: dialog = ArrayEditor() if dialog.setup_and_check(obj): if dialog.exec_(): return obj elif isinstance(obj, (str, unicode)): dialog = TextEditor(obj) if dialog.exec_(): return dialog.get_copy() elif isinstance(obj, (dict, tuple, list)): dialog = DictEditor(obj) if dialog.exec_(): return dialog.get_copy() else: raise RuntimeError("Unsupported datatype")
def oedit(obj, modal=True, namespace=None, keeper=objecteditor.DialogKeeper()): """ Edit the object 'obj' in a GUI-based editor and return the edited copy (if Cancel is pressed, return None) The object 'obj' is a container Supported container types: dict, list, tuple, str/unicode or numpy.array (instantiate a new QApplication if necessary, so it can be called directly from the interpreter) """ # Local import from spyderlib.widgets.texteditor import TextEditor from spyderlib.widgets.dicteditorutils import (ndarray, FakeObject, Image, is_known_type) from spyderlib.widgets.dicteditor import DictEditor from spyderlib.widgets.arrayeditor import ArrayEditor from spyderlib.utils.qthelpers import qapplication app = qapplication() # STARTMODIFICATION EMZED from emzed.core.data_types import PeakMap, Table from emzed.core.explorers import PeakMapExplorer, TableExplorer # ENDMODIFICATION EMZED if modal: obj_name = '' else: assert isinstance(obj, basestring) obj_name = obj if namespace is None: namespace = globals() keeper.set_namespace(namespace) obj = namespace[obj_name] # keep QApplication reference alive in the Python interpreter: namespace['__qapp__'] = app conv_func = lambda data: data readonly = not is_known_type(obj) if isinstance(obj, ndarray) and ndarray is not FakeObject: dialog = ArrayEditor() if not dialog.setup_and_check(obj, title=obj_name, readonly=readonly): return elif isinstance(obj, Image) and Image is not FakeObject \ and ndarray is not FakeObject: dialog = ArrayEditor() import numpy as np data = np.array(obj) if not dialog.setup_and_check(data, title=obj_name, readonly=readonly): return from spyderlib.pil_patch import Image conv_func = lambda data: Image.fromarray(data, mode=obj.mode) elif isinstance(obj, (str, unicode)): dialog = TextEditor(obj, title=obj_name, readonly=readonly) # START MODIFICATION EMZED elif isinstance(obj, PeakMap): dialog = PeakMapExplorer() dialog.setup(obj) elif isinstance(obj, Table): dialog = TableExplorer([obj], False) conv_func = lambda (x,) : x elif isinstance(obj, list) and all(isinstance(t, Table) for t in obj): dialog = TableExplorer(obj, False) # END MODIFICATION EMZED else: dialog = DictEditor() dialog.setup(obj, title=obj_name, readonly=readonly) def end_func(dialog): return conv_func(dialog.get_value()) if modal: if dialog.exec_(): return end_func(dialog) else: keeper.create_dialog(dialog, obj_name, end_func) import os qt_inputhook = os.environ.get("INSTALL_QT_INPUTHOOK", "").lower() == "true" if os.name == 'nt' and not qt_inputhook \ and not os.environ.get('IPYTHON', False): app.exec_()
def oedit(obj, modal=True, namespace=None, keeper=objecteditor.DialogKeeper()): """ Edit the object 'obj' in a GUI-based editor and return the edited copy (if Cancel is pressed, return None) The object 'obj' is a container Supported container types: dict, list, tuple, str/unicode or numpy.array (instantiate a new QApplication if necessary, so it can be called directly from the interpreter) """ # Local import from spyderlib.widgets.texteditor import TextEditor from spyderlib.widgets.dicteditorutils import (ndarray, FakeObject, Image, is_known_type) from spyderlib.widgets.dicteditor import DictEditor from spyderlib.widgets.arrayeditor import ArrayEditor from spyderlib.utils.qthelpers import qapplication app = qapplication() # STARTMODIFICATION EMZED import libms.Explorers from libms.DataStructures import PeakMap, Table # ENDMODIFICATION EMZED if modal: obj_name = '' else: assert isinstance(obj, basestring) obj_name = obj if namespace is None: namespace = globals() keeper.set_namespace(namespace) obj = namespace[obj_name] # keep QApplication reference alive in the Python interpreter: namespace['__qapp__'] = app conv_func = lambda data: data readonly = not is_known_type(obj) if isinstance(obj, ndarray) and ndarray is not FakeObject: dialog = ArrayEditor() if not dialog.setup_and_check(obj, title=obj_name, readonly=readonly): return elif isinstance(obj, Image) and Image is not FakeObject \ and ndarray is not FakeObject: dialog = ArrayEditor() import numpy as np data = np.array(obj) if not dialog.setup_and_check(data, title=obj_name, readonly=readonly): return from spyderlib.pil_patch import Image conv_func = lambda data: Image.fromarray(data, mode=obj.mode) elif isinstance(obj, (str, unicode)): dialog = TextEditor(obj, title=obj_name, readonly=readonly) # START MODIFICATION EMZED elif isinstance(obj, PeakMap): dialog = libms.Explorers.MzExplorer() dialog.setup(obj) elif isinstance(obj, Table): dialog = libms.Explorers.TableExplorer([obj], False) conv_func = lambda (x,) : x elif isinstance(obj, list) and all(isinstance(t, Table) for t in obj): dialog = libms.Explorers.TableExplorer(obj, False) # END MODIFICATION EMZED else: dialog = DictEditor() dialog.setup(obj, title=obj_name, readonly=readonly) def end_func(dialog): return conv_func(dialog.get_value()) if modal: if dialog.exec_(): return end_func(dialog) else: keeper.create_dialog(dialog, obj_name, end_func) import os qt_inputhook = os.environ.get("INSTALL_QT_INPUTHOOK", "").lower() == "true" if os.name == 'nt' and not qt_inputhook \ and not os.environ.get('IPYTHON', False): app.exec_()