Changeset 11738:6fc96a528c93 in orange


Ignore:
Timestamp:
10/17/13 14:53:00 (6 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Cleanup OWItemModels

Location:
Orange/OrangeWidgets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Data/OWPaintData.py

    r11719 r11738  
    1717import OWToolbars 
    1818 
    19 from OWItemModels import VariableListModel, VariableDelegate, PyListModel, ModelActionsWidget 
     19from OWItemModels import VariableListModel, PyListModel, ModelActionsWidget 
    2020import OWColorPalette 
    2121 
  • Orange/OrangeWidgets/OWItemModels.py

    r11737 r11738  
    1 from __future__ import with_statement 
     1 
     2import cPickle 
    23 
    34from xml.sax.saxutils import escape 
    4  
    5 from PyQt4.QtCore import * 
    6 from PyQt4.QtGui import * 
    7  
    85from functools import wraps, partial 
    96from collections import defaultdict 
    107from contextlib import contextmanager 
     8 
     9from PyQt4.QtCore import * 
     10from PyQt4.QtGui import * 
     11 
     12import OWGUI 
     13import Orange 
     14 
    1115 
    1216class _store(dict): 
     
    279283        return self._supportedDropActions 
    280284 
    281     def decode_qt_data(self, data): 
    282         """ Decode internal Qt 'application/x-qabstractitemmodeldatalist' 
    283         mime data  
    284         """ 
    285         stream = QDataStream(data) 
    286         items = [] 
    287         while not stream.atEnd(): 
    288             row = ds.readInt() 
    289             col = ds.readInt() 
    290             item_count = ds.readInt() 
    291             item = {} 
    292             for i in range(item_count): 
    293                 role = ds.readInt() 
    294                 value = ds.readQVariant() 
    295                 item[role] = value 
    296             items.append((row, column, item)) 
    297         return items 
    298  
    299285    def mimeTypes(self): 
    300286        return self.MIME_TYPES + list(QAbstractListModel.mimeTypes(self)) 
     
    325311 
    326312        return QAbstractListModel.dropMimeData(self, mime, action, row, column, parent) 
    327  
    328  
    329 import OWGUI 
    330 import orange 
    331 import Orange 
    332 import cPickle 
    333313 
    334314 
     
    434414 
    435415 
    436 _html_replace = [("<", "&lt;"), (">", "&gt;")] 
    437  
    438 def safe_text(text): 
    439     for old, new in _html_replace: 
    440         text = text.replace(old, new) 
    441     return text 
    442  
    443 class VariableEditor(QWidget): 
    444     def __init__(self, var, parent): 
    445         QWidget.__init__(self, parent) 
    446         self.var = var 
    447         layout = QHBoxLayout() 
    448         self._attrs = OWGUI.getAttributeIcons() 
    449         self.type_cb = QComboBox(self) 
    450         for attr, icon in self._attrs.items(): 
    451             if attr != -1: 
    452                 self.type_cb.addItem(icon, str(attr)) 
    453         layout.addWidget(self.type_cb) 
    454          
    455         self.name_le = QLineEdit(self) 
    456         layout.addWidget(self.name_le) 
    457          
    458         self.setLayout(layout) 
    459          
    460         self.connect(self.type_cb, SIGNAL("currentIndexChanged(int)"), self.edited) 
    461         self.connect(self.name_le, SIGNAL("editingFinished()"), self.edited) 
    462      
    463     def edited(self, *args): 
    464         self.emit(SIGNAL("edited()")) 
    465           
    466     def setData(self, type, name): 
    467         self.type_cb.setCurrentIndex(self._attr.keys().index(type)) 
    468         self.name_le.setText(name) 
    469          
    470 class EnumVariableEditor(VariableEditor): 
    471     def __init__(self, var, parent): 
    472         VariableEditor.__init__(self, var, parent) 
    473          
    474 class FloatVariableEditor(QLineEdit): 
    475      
    476     def setVariable(self, var): 
    477         self.setText(str(var.name)) 
    478          
    479     def getVariable(self): 
    480         return orange.FloatVariable(str(self.text())) 
    481  
    482      
    483 class StringVariableEditor(QLineEdit): 
    484     def setVariable(self, var): 
    485         self.setText(str(var.name)) 
    486          
    487     def getVariable(self): 
    488         return orange.StringVariable(str(self.text())) 
    489          
    490 class VariableDelegate(QStyledItemDelegate): 
    491     def createEditor(self, parent, option, index): 
    492         var = index.data(Qt.EditRole).toPyObject() 
    493         if isinstance(var, orange.EnumVariable): 
    494             return EnumVariableEditor(parent) 
    495         elif isinstance(var, orange.FloatVariable): 
    496             return FloatVariableEditor(parent) 
    497         elif isinstance(var, orange.StringVariable): 
    498             return StringVariableEditor(parent) 
    499 #        return VariableEditor(var, parent) 
    500      
    501     def setEditorData(self, editor, index): 
    502         var = index.data(Qt.EditRole).toPyObject() 
    503         editor.variable = var 
    504          
    505     def setModelData(self, editor, model, index): 
    506         model.setData(index, QVariant(editor.variable), Qt.EditRole) 
    507          
    508 #    def displayText(self, value, locale): 
    509 #        return value.toPyObject().name 
    510          
     416 
     417# Back-compatibility 
     418safe_text = escape 
     419 
     420 
    511421class ListSingleSelectionModel(QItemSelectionModel): 
    512422    """ Item selection model for list item models with single selection. 
Note: See TracChangeset for help on using the changeset viewer.