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

make buttons prettier

parent f6974d1b
Branches
Tags
No related merge requests found
...@@ -15,6 +15,7 @@ import re ...@@ -15,6 +15,7 @@ import re
from functools import partial from functools import partial
import json import json
import time import time
import os
import requests import requests
import mattermostdriver import mattermostdriver
import urwid import urwid
...@@ -194,23 +195,40 @@ class Mattermost: ...@@ -194,23 +195,40 @@ class Mattermost:
or needle.lower() in m.reporter.lower()] or needle.lower() in m.reporter.lower()]
class PrettyButton(urwid.Button): class PrettyButton(urwid.WidgetWrap):
button_left = urwid.Text('[') def __init__(self, label, on_press=None, user_data=None):
button_right = urwid.Text(']') 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): def mouse_event(self, *args, **kw):
super(self.__class__, self).__init__(*args, **kwargs) return self._hidden_btn.mouse_event(*args, **kw)
urwid.connect_signal(self, 'click', onclick)
def get_label(self):
return self.label
def set_label(self, label):
self.label = label
self.text.set_text(f"[ {label} ]")
class Papersurfer: class Papersurfer:
"""Provide UI and interface with mattermost class.""" """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'), ('I say', 'default,bold', 'default', 'bold'),
('needle', 'default, bold, underline', 'default', 'bold'), ('needle', 'default, bold, underline', 'default', 'bold'),
('highlight', 'black', 'dark blue'), ('highlight', 'black', 'dark blue'),
...@@ -219,10 +237,16 @@ class Papersurfer: ...@@ -219,10 +237,16 @@ class Papersurfer:
('focus', 'black', 'light gray'), ('focus', 'black', 'light gray'),
('papertitle', 'default,bold', 'default', 'bold') ('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")) 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', self.exportbutton = PrettyButton(u'Export filtered list as bibtex',
onclick=self.on_export_clicked) on_press=self.on_export_clicked)
div = urwid.Divider(u'-') div = urwid.Divider(u'-')
self.mtm = Mattermost(url, channel, username, password) self.mtm = Mattermost(url, channel, username, password)
...@@ -251,7 +275,7 @@ class Papersurfer: ...@@ -251,7 +275,7 @@ class Papersurfer:
urwid.connect_signal(ask, 'change', self.onchange) urwid.connect_signal(ask, 'change', self.onchange)
self.main = pile 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.set_alarm_in(.1, self.load_list)
self.mainloop.run() self.mainloop.run()
...@@ -294,8 +318,7 @@ class Papersurfer: ...@@ -294,8 +318,7 @@ class Papersurfer:
body = urwid.LineBox(body_padding) body = urwid.LineBox(body_padding)
# Footer # Footer
footer = urwid.Button('Okay', self.close_details) footer = PrettyButton('Okay', self.close_details)
footer = urwid.AttrWrap(footer, 'selectable', 'focus')
footer = urwid.GridFlow([footer], 8, 1, 1, 'center') footer = urwid.GridFlow([footer], 8, 1, 1, 'center')
# Layout # Layout
...@@ -322,12 +345,12 @@ class Papersurfer: ...@@ -322,12 +345,12 @@ class Papersurfer:
title = urwid.Text(text_items) title = urwid.Text(text_items)
discuss_button = PrettyButton("Open Discussion", discuss_button = PrettyButton("Open Discussion",
onclick=partial(self.h_open_discussion, on_press=partial(self.h_open_discussion,
paper)) paper))
doi_button = PrettyButton("Open DOI", 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", details_button = PrettyButton("Show details",
onclick=partial(self.h_show_details, on_press=partial(self.h_show_details,
paper)) paper))
button_bar = urwid.Columns([ button_bar = urwid.Columns([
...@@ -419,7 +442,6 @@ def get_config_file_paths(): ...@@ -419,7 +442,6 @@ def get_config_file_paths():
<class 'list'> <class 'list'>
""" """
import os
env = os.environ env = os.environ
xdg_home = None xdg_home = None
if 'XDG_CONFIG_HOME' in env: 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