Skip to content
Snippets Groups Projects
Commit 52d1038d authored by Johann Jacobsohn's avatar Johann Jacobsohn
Browse files

make buttons prettier

parent f6974d1b
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,7 @@ import re
from functools import partial
import json
import time
import os
import requests
import mattermostdriver
import urwid
......@@ -194,23 +195,40 @@ class Mattermost:
or needle.lower() in m.reporter.lower()]
class PrettyButton(urwid.Button):
button_left = urwid.Text('[')
button_right = urwid.Text(']')
class PrettyButton(urwid.WidgetWrap):
def __init__(self, label, on_press=None, user_data=None):
self.text = urwid.Text("")
self.set_label(label)
self.widget = urwid.AttrMap(self.text, '', 'highlight')
# use a hidden button for evt handling
self._hidden_btn = urwid.Button(f"hidden {self.label}",
on_press, user_data)
super(self.__class__, self).__init__(self.widget)
def selectable(self):
return True
def keypress(self, *args, **kw):
return self._hidden_btn.keypress(*args, **kw)
def __init__(self, *args, onclick=lambda *x: x, **kwargs):
super(self.__class__, self).__init__(*args, **kwargs)
urwid.connect_signal(self, 'click', onclick)
def mouse_event(self, *args, **kw):
return self._hidden_btn.mouse_event(*args, **kw)
def get_label(self):
return self.label
def set_label(self, label):
self.label = label
self.text.set_text(f"[ {label} ]")
class Papersurfer:
"""Provide UI and interface with mattermost class."""
def __init__(self, url, channel, username, password):
self._screen = urwid.raw_display.Screen()
self.size = self._screen.get_cols_rows()
self.filter = ""
palette = [
_palette = [
('button', 'default,bold', 'default'),
('I say', 'default,bold', 'default', 'bold'),
('needle', 'default, bold, underline', 'default', 'bold'),
('highlight', 'black', 'dark blue'),
......@@ -219,10 +237,16 @@ class Papersurfer:
('focus', 'black', 'light gray'),
('papertitle', 'default,bold', 'default', 'bold')
]
def __init__(self, url, channel, username, password):
self._screen = urwid.raw_display.Screen()
self.size = self._screen.get_cols_rows()
self.filter = ""
ask = urwid.Edit(('I say', u"Filter?\n"))
exitbutton = PrettyButton(u'Exit', onclick=self.on_exit_clicked)
exitbutton = PrettyButton(u'Exit', on_press=self.on_exit_clicked)
self.exportbutton = PrettyButton(u'Export filtered list as bibtex',
onclick=self.on_export_clicked)
on_press=self.on_export_clicked)
div = urwid.Divider(u'-')
self.mtm = Mattermost(url, channel, username, password)
......@@ -251,7 +275,7 @@ class Papersurfer:
urwid.connect_signal(ask, 'change', self.onchange)
self.main = pile
self.mainloop = urwid.MainLoop(self._over, palette)
self.mainloop = urwid.MainLoop(self._over, self._palette)
self.mainloop.set_alarm_in(.1, self.load_list)
self.mainloop.run()
......@@ -294,8 +318,7 @@ class Papersurfer:
body = urwid.LineBox(body_padding)
# Footer
footer = urwid.Button('Okay', self.close_details)
footer = urwid.AttrWrap(footer, 'selectable', 'focus')
footer = PrettyButton('Okay', self.close_details)
footer = urwid.GridFlow([footer], 8, 1, 1, 'center')
# Layout
......@@ -322,12 +345,12 @@ class Papersurfer:
title = urwid.Text(text_items)
discuss_button = PrettyButton("Open Discussion",
onclick=partial(self.h_open_discussion,
on_press=partial(self.h_open_discussion,
paper))
doi_button = PrettyButton("Open DOI",
onclick=partial(self.h_open_doi, paper))
on_press=partial(self.h_open_doi, paper))
details_button = PrettyButton("Show details",
onclick=partial(self.h_show_details,
on_press=partial(self.h_show_details,
paper))
button_bar = urwid.Columns([
......@@ -419,7 +442,6 @@ def get_config_file_paths():
<class 'list'>
"""
import os
env = os.environ
xdg_home = None
if 'XDG_CONFIG_HOME' in env:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment