Package elisa :: Package plugins :: Package base :: Package models :: Module list_model
[hide private]
[frames] | no frames]

Source Code for Module elisa.plugins.base.models.list_model

  1  # -*- coding: utf-8 -*- 
  2  # Elisa - Home multimedia server 
  3  # Copyright (C) 2006-2008 Fluendo Embedded S.L. (www.fluendo.com). 
  4  # All rights reserved. 
  5  # 
  6  # This file is available under one of two license agreements. 
  7  # 
  8  # This file is licensed under the GPL version 3. 
  9  # See "LICENSE.GPL" in the root of this distribution including a special 
 10  # exception to use Elisa with Fluendo's plugins. 
 11  # 
 12  # The GPL part of Elisa is also available under a commercial licensing 
 13  # agreement from Fluendo. 
 14  # See "LICENSE.Elisa" in the root directory of this distribution package 
 15  # for details on that license. 
 16   
 17   
 18  __maintainer__ = 'Lionel Martin <lionel@fluendo.com>' 
 19   
 20   
 21  from elisa.base_components.model import Model 
 22  from elisa.core.observers.list import ListObservable 
 23   
 24   
25 -class ListModel(Model, ListObservable):
26 """ 27 Modelize a list data structure 28 29 DOCME more. 30 """ 31 32
33 - def __init__(self):
36
37 - def append(self, element):
38 if isinstance(element, Model): 39 element.parent = self 40 ListObservable.append(self, element)
41 42
43 - def extend(self, elements):
44 for element in elements: 45 if isinstance(element, Model): 46 element.parent = self 47 ListObservable.extend(self, elements)
48 49
50 - def insert(self, position, element):
51 if isinstance(element, Model): 52 element.parent = self 53 ListObservable.insert(self, position, element)
54 55
56 - def pop(self, position=-1):
57 element = ListObservable.pop(self, position) 58 if isinstance(element, Model): 59 element.parent = None 60 return element
61
62 - def remove(self, element):
63 ListObservable.remove(self, element) 64 if isinstance(element, Model): 65 element.parent = None
66 67
68 - def __setitem__(self, key, value):
69 previous_value = self[key] 70 if isinstance(value, Model): 71 value.parent = self 72 ListObservable.__setitem__(self, key, value) 73 if isinstance(previous_value, Model): 74 previous_value.parent = None
75 76
77 - def __delitem__(self, key):
78 element = self[key] 79 ListObservable.__delitem__(self, key) 80 if isinstance(element, Model): 81 element.parent = None
82 83
84 - def __setslice__(self, i, j, sequence):
85 removed_elements = self[i:j] 86 for element in sequence: 87 if isinstance(element, Model): 88 element.parent = self 89 90 ListObservable.__setslice__(self, i, j, sequence) 91 92 for element in removed_elements: 93 if isinstance(element, Model): 94 element.parent = None
95 96
97 - def __delslice__(self, i, j):
98 removed_elements = self[i:j] 99 ListObservable.__delslice__(self, i, j) 100 for element in removed_elements: 101 if isinstance(element, Model): 102 element.parent = None
103