Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
chhsiao90 committed Jun 28, 2016
1 parent 8fe150f commit 10dfc00
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 26 deletions.
2 changes: 1 addition & 1 deletion gviewer/basic.py
Expand Up @@ -2,7 +2,7 @@


class BasicWidget(urwid.WidgetWrap):
def __init__(self, parent, widget):
def __init__(self, widget, parent=None):
self.parent = parent
super(BasicWidget, self).__init__(widget)

Expand Down
12 changes: 7 additions & 5 deletions gviewer/detail.py
@@ -1,5 +1,6 @@
import urwid

from basic import BasicWidget

""" Detail Widget Related Component
Expand All @@ -16,9 +17,10 @@
"""


class DetailWidget(urwid.WidgetWrap):
def __init__(self, displayer, message):
super(DetailWidget, self).__init__(self._make_widget(displayer, message))
class DetailWidget(BasicWidget):
def __init__(self, message, **kwargs):
displayer = kwargs["parent"].displayer
super(DetailWidget, self).__init__(self._make_widget(displayer, message), **kwargs)

def _make_widget(self, displayer, message):
detail_groups = displayer.to_detail_groups(message)
Expand Down Expand Up @@ -76,7 +78,7 @@ def __init__(self, title, items):
self.items = items


class DetailItemWidget(urwid.WidgetWrap):
class DetailItemWidget(BasicWidget):
def __init__(self, item):
w = urwid.AttrMap(
urwid.Text(item.content), item.style or "detailitem")
Expand All @@ -86,7 +88,7 @@ def keypress(self, size, key):
return key


class DetailItemSeparator(urwid.WidgetWrap):
class DetailItemSeparator(BasicWidget):
def __init__(self, content):
super(DetailItemSeparator, self).__init__(
urwid.AttrMap(urwid.Text(content), "detailitem separator"))
Expand Down
6 changes: 3 additions & 3 deletions gviewer/parent.py
Expand Up @@ -23,14 +23,14 @@ def __init__(self, data_store, displayer, config):
self.config = config
self.data_store = data_store
self.displayer = displayer
self.walker = SummaryListWalker(self, data_store, displayer)
self.summary = SummaryListWidget(self, self.walker)
self.walker = SummaryListWalker(parent=self)
self.summary = SummaryListWidget(self.walker, parent=self)
super(ParentFrame, self).__init__(
body=self.summary,
header=header_widget)

def open_detail(self, message):
self.set_body(DetailWidget(self.displayer, message))
self.set_body(DetailWidget(message, parent=self))

def close_detail(self):
self.set_body(self.summary)
Expand Down
28 changes: 11 additions & 17 deletions gviewer/summary.py
Expand Up @@ -14,13 +14,11 @@
"""


class SummaryItem(urwid.WidgetWrap):
def __init__(self, parent, displayer, message):
self.parent = parent
self.displayer = displayer
class SummaryItem(BasicWidget):
def __init__(self, message, parent):
self.message = message
self.title = self.displayer.to_summary(message)
super(SummaryItem, self).__init__(self._make_widget())
self.title = parent.displayer.to_summary(message)
super(SummaryItem, self).__init__(self._make_widget(), parent=parent)

def _make_widget(self):
return urwid.AttrMap(
Expand All @@ -37,24 +35,20 @@ def keypress(self, size, key):


class SummaryListWalker(urwid.SimpleFocusListWalker):
def __init__(self, parent, data_store, displayer, content=None):
def __init__(self, parent, content=None):
super(SummaryListWalker, self).__init__(content or [])
self.parent = parent
self.data_store = data_store
self.displayer = displayer
data_store.register_walker(self)
parent.data_store.register_walker(self)

def recv(self, message):
self.append(SummaryItem(self.parent, self.displayer, message))
self.append(SummaryItem(message, parent=self.parent))


class FilterSummaryListWalker(SummaryListWalker):
def __init__(self, origin_walker, search):
parent = origin_walker.parent
data_store = origin_walker.data_store
displayer = origin_walker.displayer
content = [m for m in origin_walker if displayer.match(search, m.message, m.title)]
super(FilterSummaryListWalker, self).__init__(parent, data_store, displayer, content=content)
content = [m for m in origin_walker if parent.displayer.match(search, m.message, m.title)]
super(FilterSummaryListWalker, self).__init__(parent, content=content)
self.search = search

def recv(self, message):
Expand All @@ -63,13 +57,13 @@ def recv(self, message):


class SummaryListWidget(BasicWidget):
def __init__(self, parent, walker):
def __init__(self, walker, **kwargs):
self.base_walker = walker
self.current_walker = walker
self.list_box = urwid.ListBox(walker)
self.search = SearchWidget(self)
widget = urwid.Pile([self.list_box, ("pack", self.search)])
super(SummaryListWidget, self).__init__(parent, widget)
super(SummaryListWidget, self).__init__(widget, **kwargs)

def filter(self, search):
new_walker = FilterSummaryListWalker(self.base_walker, search) if search else self.base_walker
Expand Down

0 comments on commit 10dfc00

Please sign in to comment.