|
[No Subject] |
Sat, 07 Apr, 02:32 |
|
[No Subject] |
Sat, 18 Sep, 17:42 |
|
[No Subject] |
Sat, 18 Sep, 17:42 |
|
[No Subject] |
Sat, 27 Mar, 00:21 |
|
visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row <= row < end_row and start_col <= col <
end_col
+
+ def in_old(row, col):
+ return old[0] <= row < old[1] and old[2] <= col <
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
</ins><span class="cx"> return unicode(item)
</span><span class="cx">
</span><del>-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
</del><ins>+ def sort_key(self, item):
+ return self.get_value(item)
</ins><span class="cx">
</span><del>-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
</del><ins>+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
</ins><span class="cx">
</spanspan class="cx">
</span><span class="cx"> class Viewer(trellis.Component):
</span></span></pre>
</div>
</div>
</body>
</html>
|
Sat, 27 Mar, 00:21 |
|
= = = = = = = = = = = =
= = = = = = = = = = = =
# Not used at the moment, but might be revived soon
</span>
</pre>
</div>
</div>
</body>
</html>
|
Thu, 29 Jul, 13:31 |
|
an class="cx"> cell = None
</span><span class="cx"> scope = One()
</span><span class="cx">
</span><ins>+
+class _RuleCell(trellis.Cell):
+ def get_value(self):
+ return self.rule().get_value()
+ def set_value(self, value):
+ return self.rule().set_value(value)
+ value = property(get_value, set_value)
+
+
+class Scope(InteractionComponent):
+ model = trellis.attr(None)
+ features = Many(inverse=Feature.scope)
+
+ def make_model_cell(self, attr):
+ return _RuleCell(lambda: trellis.Cells(self.model)[attr])
+
+ @staticmethod
+ def feature_cells(**kw):
+ def rule(scope):
+ def iter_features():
+ for key, fn in kw.iteritems():
+ feature = fn()
+ feature.scope = scope
+ feature.cell = scope.make_model_cell(key)
+ yield feature
+ return tuple(iter_features())
+ return trellis.CellAttribute(rule=rule)
+
+
</ins><span class="cx"> class Text(Feature):
</span><span class="cx"> pass
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class Command(Feature):
</span><span class="cx"> def act(self): pass
</span><span class="cx">
</span><del>-class Table(Feature):
- items = trellis.make(trellis.List)
</del><span class="cx">
</span><ins>+class Table(Scope):
+ """A Table is responsible for managing the display of a C{trellis.Set}"""
+ columns = trellis.make(trellis.List)
+ sort_column = trellis.attr(None)
+ select_column = trellis.attr(resetting_to=None)
+
+ @trellis.make(optional=False)
+ def items(self):
+ return collections.SortedSet(data=self.model)
+
</ins><span class="cx"> @trellis.maintain(initially=None)
</span><ins>+ def model(self):
+ if self.model is None:
+ return trellis.Set()
+ return self.model
+
+ @staticmethod
+ def default_sort_key(item):
+ return item
+
+ @trellis.maintain
+ def _maintain_sort_params(self):
+ if self.select_column is not None and self.select_column.can_sort:
+ if self.select_column is self.sort_column:
+ self.select_column.sort_ascending = not self.select_column.sort_ascending
+ self.items.reverse = not self.select_column.sort_ascending
+ else:
+ self.sort_column = self.select_column
+ elif self.sort_column is None:
+ self.items.sort_key = self.default_sort_key
+ else:
+ # should probably be in a modifier because it could
+ # trigger 2 unnecessary sorts
+ self.items.sort_key = self.sort_column.sort_key
+ self.items.reverse = not self.sort_column.sort_ascending
+
+ @trellis.maintain(initially=None, optional=True)
</ins><span class="cx"> def selected_item(self):
</span><span class="cx"> if self.selected_item is None or not self.selected_item
in self.items:
</span><del>- return self.items[0] or None
</del><ins>+ return self.items[0] if self.items else None
</ins><span class="cx"> return self.selected_item
</span><span class="cx">
</span><del>- def display_name(self, item):
- """Hook for customizing item display"""
</del><ins>+ def get_cell_value(self, (row, col)):
+ """Get value at (row, col) in the table"""
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row <= row < end_row and start_col <= col <
end_col
+
+ def in_old(row, col):
+ return old[0] <= row < old[1] and old[2] <= col <
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
</ins><span class="cx"> return unicode(item)
</span><span class="cx">
</span><del>-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
</del><ins>+ def sort_key(self, item):
+ return self.get_value(item)
</ins><span class="cx">
</span><del>-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
</del><ins>+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
</ins><span class="cx">
</spanspan class="cx">
</span><span class="cx"> class Viewer(trellis.Component):
</span></span></pre>
</div>
</div>
</body>
</html>
|
Thu, 29 Jul, 13:31 |
|
rchives/design/200412.mbox/author |
Sun, 01 Sep, 04:58 |
|
elf, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
</del><ins>+ def sort_key(self, item):
+ return self.get_value(item)
</ins><span class="cx">
</span><del>-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
</del><ins>+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
</ins><span class="cx">
</span><del>- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
</del><ins>+class Frame(Scope):
+ """A top-level window/dialog in the UI"""
+ pass
</ins><span class="cx">
</span><del>-
</del><span class="cx"> #### Utility #####
</span><span class="cx">
</span><span class="cx"> class Viewer(trellis.Component):
</span></span></pre>
</div>
</div>
</body>
</html>
|
Sun, 01 Sep, 04:58 |
|
past_done, future_later:
</span><span class="c |
Sun, 01 Sep, 04:58 |
|
ed_item is None or not self.selected_item
in self.items:
&lt;/span&gt;&lt;del&gt;- return self.items[0] or None
&lt;/del&gt;&lt;ins&gt;+ return self.items[0] if self.items else None
&lt;/ins&gt;&lt;span class="cx"&gt; return self.selected_item
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def display_name(self, item):
- &amp;quot;&amp;quot;&amp;quot;Hook for customizing item display&amp;quot;&amp;quot;&amp;quot;
&lt;/del&gt;&lt;ins&gt;+ def get_cell_value(self, (row, col)):
+ &amp;quot;&amp;quot;&amp;quot;Get value at (row, col) in the table&amp;quot;&amp;quot;&amp;quot;
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row &amp;lt;= row &amp;lt; end_row and start_col &amp;lt;= col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/spanspan class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Sun, 01 Sep, 04:58 |
| <Rathfl...@hotmail.com> |
9È¥9 |
Fri, 27 Sep, 11:50 |
| eine.nu |
;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 05 Mar, 19:45 |
| g...@washington.edu> |
="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 15 Nov, 13:18 |
| helor |
return (pseudo_uuid[:position],
+ fromICalendarDa |
Tue, 05 Jan, 14:30 |
| helor |
gt;&lt;span class="cx"&gt; label=u'',
&lt;/span&gt;&lt;span class="cx"&gt; enabled=True,
&lt;/span&gt;&lt;span class="cx"&gt; visible=True,
&lt;/span&gt;&lt;span class="cx"&gt; help=None,
&lt;/span&gt;&lt;span class="cx"&gt; )
&lt;/span&gt;&lt;ins&gt;+
+class Feature(InteractionComponent):
&lt;/ins&gt;&lt;span class="cx"&gt; cell = None
&lt;/span&gt;&lt;span class="cx"&gt; scope = One()
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+
+class _RuleCell(trellis.Cell):
+ def get_value(self):
+ return self.rule().get_value()
+ def set_value(self, value):
+ return self.rule().set_value(value)
+ value = property(get_value, set_value)
+
+
+class Scope(InteractionComponent):
+ model = trellis.attr(None)
+ features = Many(inverse=Feature.scope)
+
+ def make_model_cell(self, attr):
+ return _RuleCell(lambda: trellis.Cells(self.model)[attr])
+
+ @staticmethod
+ def feature_cells(**kw):
+ def rule(scope):
+ def iter_features():
+ for key, fn in kw.iteritems():
+ feature = fn()
+ feature.scope = scope
+ feature.cell = scope.make_model_cell(key)
+ yield feature
+ return tuple(iter_features())
+ return trellis.CellAttribute(rule=rule)
+
+
&lt;/ins&gt;&lt;span class="cx"&gt; class Text(Feature):
&lt;/span&gt;&lt;span class="cx"&gt; pass
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+
&lt;/ins&gt;&lt;span class="cx"&gt; class Command(Feature):
&lt;/span&gt;&lt;span class="cx"&gt; def act(self): pass
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Table(Feature):
- items = trellis.make(trellis.List)
&lt;/del&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+class Table(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A Table is responsible for managing the display of a C{trellis.Set}&amp;quot;&amp;quot;&amp;quot;
+ columns = trellis.make(trellis.List)
+ sort_column = trellis.attr(None)
+ select_column = trellis.attr(resetting_to=None)
+
+ @trellis.make(optional=False)
+ def items(self):
+ return collections.SortedSet(data=self.model)
+
&lt;/ins&gt;&lt;span class="cx"&gt; @trellis.maintain(initially=None)
&lt;/span&gt;&lt;ins&gt;+ def model(self):
+ if self.model is None:
+ return trellis.Set()
+ return self.model
+
+ @staticmethod
+ def default_sort_key(item):
+ return item
+
+ @trellis.maintain
+ def _maintain_sort_params(self):
+ if self.select_column is not None and self.select_column.can_sort:
+ if self.select_column is self.sort_column:
+ self.select_column.sort_ascending = not self.select_column.sort_ascending
+ self.items.reverse = not self.select_column.sort_ascending
+ else:
+ self.sort_column = self.select_column
+ elif self.sort_column is None:
+ self.items.sort_key = self.default_sort_key
+ else:
+ # should probably be in a modifier because it could
+ # trigger 2 unnecessary sorts
+ self.items.sort_key = self.sort_column.sort_key
+ self.items.reverse = not self.sort_column.sort_ascending
+
+ @trellis.maintain(initially=None, optional=True)
&lt;/ins&gt;&lt;span class="cx"&gt; def selected_item(self):
&lt;/span&gt;&lt;span class="cx"&gt; if self.selected_item is None or not self.selected_item
in self.items:
&lt;/span&gt;&lt;del&gt;- return self.items[0] or None
&lt;/del&gt;&lt;ins&gt;+ return self.items[0] if self.items else None
&lt;/ins&gt;&lt;span class="cx"&gt; return self.selected_item
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def display_name(self, item):
- &amp;quot;&amp;quot;&amp;quot;Hook for customizing item display&amp;quot;&amp;quot;&amp;quot;
&lt;/del&gt;&lt;ins&gt;+ def get_cell_value(self, (row, col)):
+ &amp;quot;&amp;quot;&amp;quot;Get value at (row, col) in the table&amp;quot;&amp;quot;&amp;quot;
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row &amp;lt;= row &amp;lt; end_row and start_col &amp;lt;= col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/spanspan class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Tue, 05 Jan, 14:30 |
| ing |
move comments refering to bug 1998 |
Fri, 06 Mar, 15:55 |
| ing |
olueTime(view, pseudo_uuid[position:])[0])
+ return (pseudo_uuid, None)
+
+
+
</span><span class="cx"> # = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = =
# Not used at the moment, but might be revived soon
</span>
</pre>
</div>
</div>
</body>
</html>
|
Fri, 06 Mar, 15:55 |
| ing |
safoundation.org |
Fri, 06 Mar, 15:55 |
| ing |
return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 06 Mar, 15:55 |
| ing |
return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 06 Mar, 15:55 |
| ing |
return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 06 Mar, 15:55 |
| ing |
g |
Fri, 06 Mar, 15:55 |
| ing |
n.sort_ascending
+
+ @trellis.maintain(initially=None, optional=True)
&lt;/ins&gt;&lt;span class="cx"&gt; def selected_item(self):
&lt;/span&gt;&lt;span class="cx"&gt; if self.selected_item is None or not self.selected_item
in self.items:
&lt;/span&gt;&lt;del&gt;- return self.items[0] or None
&lt;/del&gt;&lt;ins&gt;+ return self.items[0] if self.items else None
&lt;/ins&gt;&lt;span class="cx"&gt; return self.selected_item
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def display_name(self, item):
- &amp;quot;&amp;quot;&amp;quot;Hook for customizing item display&amp;quot;&amp;quot;&amp;quot;
&lt;/del&gt;&lt;ins&gt;+ def get_cell_value(self, (row, col)):
+ &amp;quot;&amp;quot;&amp;quot;Get value at (row, col) in the table&amp;quot;&amp;quot;&amp;quot;
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row &amp;lt;= row &amp;lt; end_row and start_col &amp;lt;= col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/spanspan class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 06 Mar, 15:55 |
| lco...@vh-s.de> |
n><span class="cx"> |
Fri, 26 Jul, 11:50 |
| lco...@vh-s.de> |
8ý |
Fri, 26 Jul, 11:50 |
| lco...@vh-s.de> |
(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Fri, 26 Jul, 11:50 |
| lco...@vh-s.de> |
;/html&gt;
|
Fri, 26 Jul, 11:50 |
| lt |
html&gt;
|
Tue, 19 Apr, 06:07 |
| m |
[No Subject] |
Fri, 17 Sep, 18:43 |
| m |
[No Subject] |
Fri, 17 Sep, 18:43 |
| m |
f/sharing/utility.tu.osafoundation.org> |
Fri, 17 Sep, 18:43 |
| m.@osafoundation.org> |
)
+ if position != -1:
+ return (pseudo_uuid[:position],
+ fromICalendarDateTime(view, pseudo_uuid[position + 2:])[0])
+ position = pseudo_uuid.find(':')
+ if position != -1:
+ return (pseudo_uuid[:position],
+ fromICalendarDa |
Mon, 03 May, 09:42 |
| m.@osafoundation.org> |
)
+ if position != -1:
+ return (pseudo_uuid[:position],
+ fromICalendarDateTime(view, pseudo_uuid[position + 2:])[0])
+ position = pseudo_uuid.find(':')
+ if position != -1:
+ return (pseudo_uuid[:position],
+ fromICalendarDa |
Mon, 03 May, 09:42 |
| m.@osafoundation.org> |
)
+ if position != -1:
+ return (pseudo_uuid[:position],
+ fromICalendarDateTime(view, pseudo_uuid[position + 2:])[0])
+ position = pseudo_uuid.find(':')
+ if position != -1:
+ return (pseudo_uuid[:position],
+ fromICalendarDa |
Mon, 03 May, 09:42 |
| m.@osafoundation.org> |
turn tuple(iter_features())
+ return trellis.CellAttribute(rule=rule)
+
+
&lt;/ins&gt;&lt;span class="cx"&gt; class Text(Feature):
&lt;/span&gt;&lt;span class="cx"&gt; pass
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+
&lt;/ins&gt;&lt;span class="cx"&gt; class Command(Feature):
&lt;/span&gt;&lt;span class="cx"&gt; def act(self): pass
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Table(Feature):
- items = trellis.make(trellis.List)
&lt;/del&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+class Table(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A Table is responsible for managing the display of a C{trellis.Set}&amp;quot;&amp;quot;&amp;quot;
+ columns = trellis.make(trellis.List)
+ sort_column = trellis.attr(None)
+ select_column = trellis.attr(resetting_to=None)
+
+ @trellis.make(optional=False)
+ def items(self):
+ return collections.SortedSet(data=self.model)
+
&lt;/ins&gt;&lt;span class="cx"&gt; @trellis.maintain(initially=None)
&lt;/span&gt;&lt;ins&gt;+ def model(self):
+ if self.model is None:
+ return trellis.Set()
+ return self.model
+
+ @staticmethod
+ def default_sort_key(item):
+ return item
+
+ @trellis.maintain
+ def _maintain_sort_params(self):
+ if self.select_column is not None and self.select_column.can_sort:
+ if self.select_column is self.sort_column:
+ self.select_column.sort_ascending = not self.select_column.sort_ascending
+ self.items.reverse = not self.select_column.sort_ascending
+ else:
+ self.sort_column = self.select_column
+ elif self.sort_column is None:
+ self.items.sort_key = self.default_sort_key
+ else:
+ # should probably be in a modifier because it could
+ # trigger 2 unnecessary sorts
+ self.items.sort_key = self.sort_column.sort_key
+ self.items.reverse = not self.sort_column.sort_ascending
+
+ @trellis.maintain(initially=None, optional=True)
&lt;/ins&gt;&lt;span class="cx"&gt; def selected_item(self):
&lt;/span&gt;&lt;span class="cx"&gt; if self.selected_item is None or not self.selected_item
in self.items:
&lt;/span&gt;&lt;del&gt;- return self.items[0] or None
&lt;/del&gt;&lt;ins&gt;+ return self.items[0] if self.items else None
&lt;/ins&gt;&lt;span class="cx"&gt; return self.selected_item
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def display_name(self, item):
- &amp;quot;&amp;quot;&amp;quot;Hook for customizing item display&amp;quot;&amp;quot;&amp;quot;
&lt;/del&gt;&lt;ins&gt;+ def get_cell_value(self, (row, col)):
+ &amp;quot;&amp;quot;&amp;quot;Get value at (row, col) in the table&amp;quot;&amp;quot;&amp;quot;
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row &amp;lt;= row &amp;lt; end_row and start_col &amp;lt;= col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/spanspan class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Mon, 03 May, 09:42 |
| nen |
is.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Wed, 11 Jan, 14:11 |
| od |
col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Sat, 17 Aug, 17:33 |
| shov |
return tuple(iter_features())
+ return trellis.CellAttribute(rule=rule)
+
+
&lt;/ins&gt;&lt;span class="cx"&gt; class Text(Feature):
&lt;/span&gt;&lt;span class="cx"&gt; pass
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+
&lt;/ins&gt;&lt;span class="cx"&gt; class Command(Feature):
&lt;/span&gt;&lt;span class="cx"&gt; def act(self): pass
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Table(Feature):
- items = trellis.make(trellis.List)
&lt;/del&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;ins&gt;+class Table(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A Table is responsible for managing the display of a C{trellis.Set}&amp;quot;&amp;quot;&amp;quot;
+ columns = trellis.make(trellis.List)
+ sort_column = trellis.attr(None)
+ select_column = trellis.attr(resetting_to=None)
+
+ @trellis.make(optional=False)
+ def items(self):
+ return collections.SortedSet(data=self.model)
+
&lt;/ins&gt;&lt;span class="cx"&gt; @trellis.maintain(initially=None)
&lt;/span&gt;&lt;ins&gt;+ def model(self):
+ if self.model is None:
+ return trellis.Set()
+ return self.model
+
+ @staticmethod
+ def default_sort_key(item):
+ return item
+
+ @trellis.maintain
+ def _maintain_sort_params(self):
+ if self.select_column is not None and self.select_column.can_sort:
+ if self.select_column is self.sort_column:
+ self.select_column.sort_ascending = not self.select_column.sort_ascending
+ self.items.reverse = not self.select_column.sort_ascending
+ else:
+ self.sort_column = self.select_column
+ elif self.sort_column is None:
+ self.items.sort_key = self.default_sort_key
+ else:
+ # should probably be in a modifier because it could
+ # trigger 2 unnecessary sorts
+ self.items.sort_key = self.sort_column.sort_key
+ self.items.reverse = not self.sort_column.sort_ascending
+
+ @trellis.maintain(initially=None, optional=True)
&lt;/ins&gt;&lt;span class="cx"&gt; def selected_item(self):
&lt;/span&gt;&lt;span class="cx"&gt; if self.selected_item is None or not self.selected_item
in self.items:
&lt;/span&gt;&lt;del&gt;- return self.items[0] or None
&lt;/del&gt;&lt;ins&gt;+ return self.items[0] if self.items else None
&lt;/ins&gt;&lt;span class="cx"&gt; return self.selected_item
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def display_name(self, item):
- &amp;quot;&amp;quot;&amp;quot;Hook for customizing item display&amp;quot;&amp;quot;&amp;quot;
&lt;/del&gt;&lt;ins&gt;+ def get_cell_value(self, (row, col)):
+ &amp;quot;&amp;quot;&amp;quot;Get value at (row, col) in the table&amp;quot;&amp;quot;&amp;quot;
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row &amp;lt;= row &amp;lt; end_row and start_col &amp;lt;= col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/spanspan class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Wed, 22 Jul, 08:41 |
| va...@yahoo.ca> |
;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
[No Subject] |
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
[No Subject] |
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
tion.org |
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
k) [284] placeholder for vision page |
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
used at the moment, but might be revived soon
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def make_model_cell(self, attr):
- return _RuleCell(lambda: trellis.Cells(self.model)[attr])
&lt;/del&gt;&lt;ins&gt;+class Frame(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A top-level window/dialog in the UI&amp;quot;&amp;quot;&amp;quot;
+ pass
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-
&lt;/del&gt;&lt;span class="cx"&gt; #### Utility #####
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Tue, 22 Feb, 04:55 |
| va...@yahoo.ca> |
mp;gt;&lt;ins&gt;+class Table(Scope):
+ &amp;quot;&amp;quot;&amp;quot;A Table is responsible for managing the display of a C{trellis.Set}&amp;quot;&amp;quot;&amp;quot;
+ columns = trellis.make(trellis.List)
+ sort_column = trellis.attr(None)
+ select_column = trellis.attr(resetting_to=None)
+
+ @trellis.make(optional=False)
+ def items(self):
+ return collections.SortedSet(data=self.model)
+
&lt;/ins&gt;&lt;span class="cx"&gt; @trellis.maintain(initially=None)
&lt;/span&gt;&lt;ins&gt;+ def model(self):
+ if self.model is None:
+ return trellis.Set()
+ return self.model
+
+ @staticmethod
+ def default_sort_key(item):
+ return item
+
+ @trellis.maintain
+ def _maintain_sort_params(self):
+ if self.select_column is not None and self.select_column.can_sort:
+ if self.select_column is self.sort_column:
+ self.select_column.sort_ascending = not self.select_column.sort_ascending
+ self.items.reverse = not self.select_column.sort_ascending
+ else:
+ self.sort_column = self.select_column
+ elif self.sort_column is None:
+ self.items.sort_key = self.default_sort_key
+ else:
+ # should probably be in a modifier because it could
+ # trigger 2 unnecessary sorts
+ self.items.sort_key = self.sort_column.sort_key
+ self.items.reverse = not self.sort_column.sort_ascending
+
+ @trellis.maintain(initially=None, optional=True)
&lt;/ins&gt;&lt;span class="cx"&gt; def selected_item(self):
&lt;/span&gt;&lt;span class="cx"&gt; if self.selected_item is None or not self.selected_item
in self.items:
&lt;/span&gt;&lt;del&gt;- return self.items[0] or None
&lt;/del&gt;&lt;ins&gt;+ return self.items[0] if self.items else None
&lt;/ins&gt;&lt;span class="cx"&gt; return self.selected_item
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;- def display_name(self, item):
- &amp;quot;&amp;quot;&amp;quot;Hook for customizing item display&amp;quot;&amp;quot;&amp;quot;
&lt;/del&gt;&lt;ins&gt;+ def get_cell_value(self, (row, col)):
+ &amp;quot;&amp;quot;&amp;quot;Get value at (row, col) in the table&amp;quot;&amp;quot;&amp;quot;
+ self.items.changes # introduce dependency?!?!
+ try:
+ item = self.items[row]
+ column = self.columns[col]
+ except IndexError:
+ return None
+ else:
+ return column.get_value(item)
+
+ visible_range_change = trellis.attr(resetting_to=(0, 0, 0, 0))
+
+ @trellis.maintain(initially=(0, 0, 0, 0))
+ def visible_ranges(self):
+ visible_ranges = tuple(old + delta
+ for old, delta in zip(self.visible_ranges,
+ self.visible_range_change))
+ if self.visible_ranges != visible_ranges:
+ self.set_visible_ranges(visible_ranges)
+ return visible_ranges
+
+ @trellis.make
+ def observer(self):
+ return collections.Observing(lookup_func=self.get_cell_value)
+
+ @trellis.modifier
+ def set_visible_ranges(self, (start_row, end_row, start_col, end_col)):
+ keys = self.observer.keys
+ old = self.visible_ranges
+
+ def in_new(row, col):
+ return start_row &amp;lt;= row &amp;lt; end_row and start_col &amp;lt;= col &amp;lt;
end_col
+
+ def in_old(row, col):
+ return old[0] &amp;lt;= row &amp;lt; old[1] and old[2] &amp;lt;= col &amp;lt;
old[3]
+
+ for row in xrange(min(old[0], start_row), max(old[1], end_row)):
+ for col in xrange(min(old[2], start_col), max(old[2], end_col)):
+ cell_in_new = in_new(row, col)
+ cell_in_old = in_old(row, col)
+
+ if cell_in_new and not cell_in_old:
+ keys.add((row, col))
+ elif cell_in_old and not cell_in_new:
+ keys.remove((row, col))
+
+
+
+class TableColumn(InteractionComponent):
+ def get_value(self, item):
&lt;/ins&gt;&lt;span class="cx"&gt; return unicode(item)
&lt;/span&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class _RuleCell(trellis.Cell):
- def get_value(self):
- return self.rule().get_value()
- def set_value(self, value):
- return self.rule().set_value(value)
- value = property(get_value, set_value)
&lt;/del&gt;&lt;ins&gt;+ def sort_key(self, item):
+ return self.get_value(item)
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/span&gt;&lt;del&gt;-class Scope(trellis.Component):
- model = trellis.attr(None)
- features = Many(inverse=Feature.scope)
&lt;/del&gt;&lt;ins&gt;+ trellis.attrs(
+ can_sort=True,
+ sort_ascending=False,
+ )
&lt;/ins&gt;&lt;span class="cx"&gt;
&lt;/spanspan class="cx"&gt;
&lt;/span&gt;&lt;span class="cx"&gt; class Viewer(trellis.Component):
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
|
Tue, 22 Feb, 04:55 |