~ubuntu-branches/ubuntu/wily/spyder/wily

« back to all changes in this revision

Viewing changes to spyderlib/widgets/dicteditor.py

  • Committer: Package Import Robot
  • Author(s): Benjamin Drung
  • Date: 2015-01-15 12:20:11 UTC
  • mfrom: (18.1.7 experimental)
  • Revision ID: package-import@ubuntu.com-20150115122011-cc7j5dhy2h9uo13m
Tags: 2.3.2+dfsg-1ubuntu1
Backport patch to support pylint3.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
import sys
31
31
import datetime
32
 
import os
33
32
 
34
33
# Local import
35
34
from spyderlib.baseconfig import _
48
47
    from spyderlib.widgets.dataframeeditor import DataFrameEditor
49
48
from spyderlib.widgets.texteditor import TextEditor
50
49
from spyderlib.widgets.importwizard import ImportWizard
51
 
from spyderlib.py3compat import to_text_string, is_text_string, getcwd, u
52
 
from spyderlib.utils.iofuncs import iofunctions
 
50
from spyderlib.py3compat import (to_text_string, to_binary_string,
 
51
                                 is_text_string, is_binary_string, getcwd, u)
53
52
 
54
53
 
55
54
def display_to_value(value, default_value, ignore_errors=True):
69
68
                value = np_dtype(complex(value))
70
69
            else:
71
70
                value = np_dtype(value)
72
 
        elif isinstance(default_value, str):
73
 
            value = str(value)
 
71
        elif is_binary_string(default_value):
 
72
            value = to_binary_string(value, 'utf8')
74
73
        elif is_text_string(default_value):
75
74
            value = to_text_string(value)
76
75
        elif isinstance(default_value, complex):
186
185
        if column == 0:
187
186
            self.sizes = sort_against(self.sizes, self.keys, reverse)
188
187
            self.types = sort_against(self.types, self.keys, reverse)
189
 
            self.keys.sort(reverse=reverse)
 
188
            try:
 
189
                self.keys.sort(reverse=reverse)
 
190
            except:
 
191
                pass
190
192
        elif column == 1:
191
193
            self.keys = sort_against(self.keys, self.types, reverse)
192
194
            self.sizes = sort_against(self.sizes, self.types, reverse)
193
 
            self.types.sort(reverse=reverse)
 
195
            try:
 
196
                self.types.sort(reverse=reverse)
 
197
            except:
 
198
                pass
194
199
        elif column == 2:
195
200
            self.keys = sort_against(self.keys, self.sizes, reverse)
196
201
            self.types = sort_against(self.types, self.sizes, reverse)
197
 
            self.sizes.sort(reverse=reverse)
 
202
            try:
 
203
                self.sizes.sort(reverse=reverse)
 
204
            except:
 
205
                pass
198
206
        elif column == 3:
199
207
            self.keys = sort_against(self.keys, self.sizes, reverse)
200
208
            self.types = sort_against(self.types, self.sizes, reverse)
201
 
            self.sizes.sort(reverse=reverse)
 
209
            try:
 
210
                self.sizes.sort(reverse=reverse)
 
211
            except:
 
212
                pass
202
213
        elif column == 4:
203
214
            values = [self._data[key] for key in self.keys]
204
215
            self.keys = sort_against(self.keys, values, reverse)
484
495
        Model --> Editor"""
485
496
        value = self.get_value(index)
486
497
        if isinstance(editor, QLineEdit):
 
498
            if is_binary_string(value):
 
499
                try:
 
500
                    value = to_text_string(value, 'utf8')
 
501
                except:
 
502
                    pass
487
503
            if not is_text_string(value):
488
504
                value = repr(value)
489
505
            editor.setText(value)
843
859
        index = self.currentIndex()
844
860
        if not index.isValid():
845
861
            return
846
 
        self.edit(index)
 
862
        # TODO: Remove hard coded "Value" column number (3 here)
 
863
        self.edit(index.child(index.row(), 3))
847
864
    
848
865
    def remove_item(self):
849
866
        """Remove item"""
1348
1365
    """Create test data"""
1349
1366
    import numpy as np
1350
1367
    from spyderlib.pil_patch import Image
1351
 
    image = Image.fromarray(np.random.random_integers(255, size=(100, 100)))
 
1368
    image = Image.fromarray(np.random.random_integers(255, size=(100, 100)),
 
1369
                            mode='P')
1352
1370
    testdict = {'d': 1, 'a': np.random.rand(10, 10), 'b': [1, 2]}
1353
1371
    testdate = datetime.date(1945, 5, 8)
1354
1372
    class Foobar(object):
1359
1377
    foobar = Foobar()
1360
1378
    return {'object': foobar,
1361
1379
            'str': 'kjkj kj k j j kj k jkj',
1362
 
            'unicode': u('éù'),
 
1380
            'unicode': to_text_string('éù', 'utf-8'),
1363
1381
            'list': [1, 3, [sorted, 5, 6], 'kjkj', None],
1364
1382
            'tuple': ([1, testdate, testdict], 'kjkj', None),
1365
1383
            'dict': testdict,
1382
1400
            'bool_scalar': np.bool(8),
1383
1401
            'unsupported1': np.arccos,
1384
1402
            'unsupported2': np.cast,
1385
 
            1: (1, 2, 3), -5: ("a", "b", "c"), 2.5: np.array((4.0, 6.0, 8.0)),            
 
1403
            #1: (1, 2, 3), -5: ("a", "b", "c"), 2.5: np.array((4.0, 6.0, 8.0)),            
1386
1404
            }
1387
1405
 
1388
1406
def test():
1402
1420
    from pprint import pprint
1403
1421
    pprint(remote)
1404
1422
    app = qapplication()
1405
 
    dialog = DictEditor(remote, remote=True)
 
1423
    dialog = DictEditor()
 
1424
    dialog.setup(remote, remote=True)
1406
1425
    dialog.show()
1407
1426
    app.exec_()
1408
1427
    if dialog.result():
1409
1428
        print(dialog.get_value())
1410
1429
 
1411
1430
if __name__ == "__main__":
1412
 
    test()
 
1431
    remote_editor_test()