mirror of
https://github.com/markqvist/NomadNet.git
synced 2024-12-26 07:39:26 -05:00
Use urwid constants for widgets instead of string equivalents
* Reduce `DeprecationWarning` amount: `get_focus` -> `focus_position` for `Frame` and `focus` for `Pile` `set_focus` -> use property `focus_position`
This commit is contained in:
parent
d856f3fd28
commit
77eca5d23e
@ -27,13 +27,13 @@ class BrowserFrame(urwid.Frame):
|
|||||||
self.delegate.save_node_dialog()
|
self.delegate.save_node_dialog()
|
||||||
elif key == "ctrl g":
|
elif key == "ctrl g":
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.sub_displays.network_display.toggle_fullscreen()
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.sub_displays.network_display.toggle_fullscreen()
|
||||||
elif self.get_focus() == "body":
|
elif self.focus_position == "body":
|
||||||
if key == "down" or key == "up":
|
if key == "down" or key == "up":
|
||||||
try:
|
try:
|
||||||
if hasattr(self.delegate, "page_pile") and self.delegate.page_pile:
|
if hasattr(self.delegate, "page_pile") and self.delegate.page_pile:
|
||||||
def df(loop, user_data):
|
def df(loop, user_data):
|
||||||
st = None
|
st = None
|
||||||
nf = self.delegate.page_pile.get_focus()
|
nf = self.delegate.page_pile.focus
|
||||||
if hasattr(nf, "key_timeout"):
|
if hasattr(nf, "key_timeout"):
|
||||||
st = nf
|
st = nf
|
||||||
elif hasattr(nf, "original_widget"):
|
elif hasattr(nf, "original_widget"):
|
||||||
@ -279,7 +279,10 @@ class Browser:
|
|||||||
self.browser_footer = urwid.Text("")
|
self.browser_footer = urwid.Text("")
|
||||||
|
|
||||||
self.page_pile = None
|
self.page_pile = None
|
||||||
self.browser_body = urwid.Filler(urwid.Text("Disconnected\n"+self.g["arrow_l"]+" "+self.g["arrow_r"], align="center"), "middle")
|
self.browser_body = urwid.Filler(
|
||||||
|
urwid.Text("Disconnected\n"+self.g["arrow_l"]+" "+self.g["arrow_r"], align=urwid.CENTER),
|
||||||
|
urwid.MIDDLE,
|
||||||
|
)
|
||||||
|
|
||||||
self.frame = BrowserFrame(self.browser_body, header=self.browser_header, footer=self.browser_footer)
|
self.frame = BrowserFrame(self.browser_body, header=self.browser_header, footer=self.browser_footer)
|
||||||
self.frame.delegate = self
|
self.frame.delegate = self
|
||||||
@ -306,28 +309,29 @@ class Browser:
|
|||||||
self.update_display()
|
self.update_display()
|
||||||
|
|
||||||
columns = urwid.Columns([
|
columns = urwid.Columns([
|
||||||
("weight", 0.5, urwid.Text(" ")),
|
(urwid.WEIGHT, 0.5, urwid.Text(" ")),
|
||||||
(8, urwid.Button("Back", on_press=back_action)),
|
(8, urwid.Button("Back", on_press=back_action)),
|
||||||
("weight", 0.5, urwid.Text(" "))
|
(urwid.WEIGHT, 0.5, urwid.Text(" ")),
|
||||||
])
|
])
|
||||||
|
|
||||||
if len(self.attr_maps) > 0:
|
if len(self.attr_maps) > 0:
|
||||||
pile = urwid.Pile([
|
pile = urwid.Pile([
|
||||||
urwid.Text("!\n\n"+self.status_text()+"\n", align="center"),
|
urwid.Text("!\n\n"+self.status_text()+"\n", align=urwid.CENTER),
|
||||||
columns
|
columns
|
||||||
])
|
])
|
||||||
else:
|
else:
|
||||||
pile = urwid.Pile([
|
pile = urwid.Pile([urwid.Text("!\n\n"+self.status_text(), align=urwid.CENTER)])
|
||||||
urwid.Text("!\n\n"+self.status_text(), align="center")
|
|
||||||
])
|
|
||||||
|
|
||||||
return urwid.Filler(pile, "middle")
|
return urwid.Filler(pile, urwid.MIDDLE)
|
||||||
|
|
||||||
def update_display(self):
|
def update_display(self):
|
||||||
if self.status == Browser.DISCONECTED:
|
if self.status == Browser.DISCONECTED:
|
||||||
self.display_widget.set_attr_map({None: "inactive_text"})
|
self.display_widget.set_attr_map({None: "inactive_text"})
|
||||||
self.page_pile = None
|
self.page_pile = None
|
||||||
self.browser_body = urwid.Filler(urwid.Text("Disconnected\n"+self.g["arrow_l"]+" "+self.g["arrow_r"], align="center"), "middle")
|
self.browser_body = urwid.Filler(
|
||||||
|
urwid.Text("Disconnected\n"+self.g["arrow_l"]+" "+self.g["arrow_r"], align=urwid.CENTER),
|
||||||
|
urwid.MIDDLE,
|
||||||
|
)
|
||||||
self.browser_footer = urwid.Text("")
|
self.browser_footer = urwid.Text("")
|
||||||
self.browser_header = urwid.Text("")
|
self.browser_header = urwid.Text("")
|
||||||
self.linebox.set_title("Remote Node")
|
self.linebox.set_title("Remote Node")
|
||||||
@ -354,7 +358,10 @@ class Browser:
|
|||||||
|
|
||||||
elif self.status <= Browser.REQUEST_SENT:
|
elif self.status <= Browser.REQUEST_SENT:
|
||||||
if len(self.attr_maps) == 0:
|
if len(self.attr_maps) == 0:
|
||||||
self.browser_body = urwid.Filler(urwid.Text("Retrieving\n["+self.current_url()+"]", align="center"), "middle")
|
self.browser_body = urwid.Filler(
|
||||||
|
urwid.Text("Retrieving\n["+self.current_url()+"]", align=urwid.CENTER),
|
||||||
|
urwid.MIDDLE,
|
||||||
|
)
|
||||||
|
|
||||||
self.browser_footer = self.make_status_widget()
|
self.browser_footer = self.make_status_widget()
|
||||||
|
|
||||||
@ -608,7 +615,7 @@ class Browser:
|
|||||||
self.load_page()
|
self.load_page()
|
||||||
|
|
||||||
def close_dialogs(self):
|
def close_dialogs(self):
|
||||||
options = self.delegate.columns.options("weight", self.delegate.right_area_width)
|
options = self.delegate.columns.options(urwid.WEIGHT, self.delegate.right_area_width)
|
||||||
self.delegate.columns.contents[1] = (self.display_widget, options)
|
self.delegate.columns.contents[1] = (self.display_widget, options)
|
||||||
|
|
||||||
def url_dialog(self):
|
def url_dialog(self):
|
||||||
@ -629,7 +636,11 @@ class Browser:
|
|||||||
dialog = UrlDialogLineBox(
|
dialog = UrlDialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
e_url,
|
e_url,
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Cancel", on_press=dismiss_dialog)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("Go", on_press=confirmed))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Cancel", on_press=dismiss_dialog)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Go", on_press=confirmed)),
|
||||||
|
])
|
||||||
]), title="Enter URL"
|
]), title="Enter URL"
|
||||||
)
|
)
|
||||||
e_url.confirmed = confirmed
|
e_url.confirmed = confirmed
|
||||||
@ -637,9 +648,18 @@ class Browser:
|
|||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.display_widget
|
bottom = self.display_widget
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 65), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=(urwid.RELATIVE, 65),
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.delegate.columns.options("weight", self.delegate.right_area_width)
|
options = self.delegate.columns.options(urwid.WEIGHT, self.delegate.right_area_width)
|
||||||
self.delegate.columns.contents[1] = (overlay, options)
|
self.delegate.columns.contents[1] = (overlay, options)
|
||||||
self.delegate.columns.focus_position = 1
|
self.delegate.columns.focus_position = 1
|
||||||
|
|
||||||
@ -663,7 +683,11 @@ class Browser:
|
|||||||
dialog = UrlDialogLineBox(
|
dialog = UrlDialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Save connected node"+disp_str+" "+RNS.prettyhexrep(self.destination_hash)+" to Known Nodes?\n"),
|
urwid.Text("Save connected node"+disp_str+" "+RNS.prettyhexrep(self.destination_hash)+" to Known Nodes?\n"),
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Cancel", on_press=dismiss_dialog)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("Save", on_press=confirmed))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Cancel", on_press=dismiss_dialog)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Save", on_press=confirmed)),
|
||||||
|
])
|
||||||
]), title="Save Node"
|
]), title="Save Node"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -671,9 +695,18 @@ class Browser:
|
|||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.display_widget
|
bottom = self.display_widget
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 50), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=(urwid.RELATIVE, 50),
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.delegate.columns.options("weight", self.delegate.right_area_width)
|
options = self.delegate.columns.options(urwid.WEIGHT, self.delegate.right_area_width)
|
||||||
self.delegate.columns.contents[1] = (overlay, options)
|
self.delegate.columns.contents[1] = (overlay, options)
|
||||||
self.delegate.columns.focus_position = 1
|
self.delegate.columns.focus_position = 1
|
||||||
|
|
||||||
|
@ -12,13 +12,13 @@ class ConfigDisplayShortcuts():
|
|||||||
class ConfigFiller(urwid.WidgetWrap):
|
class ConfigFiller(urwid.WidgetWrap):
|
||||||
def __init__(self, widget, app):
|
def __init__(self, widget, app):
|
||||||
self.app = app
|
self.app = app
|
||||||
self.filler = urwid.Filler(widget, "top")
|
self.filler = urwid.Filler(widget, urwid.TOP)
|
||||||
urwid.WidgetWrap.__init__(self, self.filler)
|
urwid.WidgetWrap.__init__(self, self.filler)
|
||||||
|
|
||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "up":
|
if key == "up":
|
||||||
self.app.ui.main_display.frame.set_focus("header")
|
self.app.ui.main_display.frame.focus_position = "header"
|
||||||
|
|
||||||
return super(ConfigFiller, self).keypress(size, key)
|
return super(ConfigFiller, self).keypress(size, key)
|
||||||
|
|
||||||
@ -31,12 +31,20 @@ class ConfigDisplay():
|
|||||||
self.editor_term = EditorTerminal(self.app, self)
|
self.editor_term = EditorTerminal(self.app, self)
|
||||||
self.widget = urwid.LineBox(self.editor_term)
|
self.widget = urwid.LineBox(self.editor_term)
|
||||||
self.app.ui.main_display.update_active_sub_display()
|
self.app.ui.main_display.update_active_sub_display()
|
||||||
self.app.ui.main_display.frame.set_focus("body")
|
self.app.ui.main_display.frame.focus_position = "body"
|
||||||
self.editor_term.term.change_focus(True)
|
self.editor_term.term.change_focus(True)
|
||||||
|
|
||||||
pile = urwid.Pile([
|
pile = urwid.Pile([
|
||||||
urwid.Text(("body_text", "\nTo change the configuration, edit the config file located at:\n\n"+self.app.configpath+"\n\nRestart Nomad Network for changes to take effect\n"), align="center"),
|
urwid.Text(
|
||||||
urwid.Padding(urwid.Button("Open Editor", on_press=open_editor), width=15, align="center"),
|
(
|
||||||
|
"body_text",
|
||||||
|
"\nTo change the configuration, edit the config file located at:\n\n"
|
||||||
|
+self.app.configpath
|
||||||
|
+"\n\nRestart Nomad Network for changes to take effect\n",
|
||||||
|
),
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
|
urwid.Padding(urwid.Button("Open Editor", on_press=open_editor), width=15, align=urwid.CENTER),
|
||||||
])
|
])
|
||||||
|
|
||||||
self.config_explainer = ConfigFiller(pile, self.app)
|
self.config_explainer = ConfigFiller(pile, self.app)
|
||||||
@ -77,5 +85,5 @@ class EditorTerminal(urwid.WidgetWrap):
|
|||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
# TODO: Decide whether there should be a way to get out while editing
|
# TODO: Decide whether there should be a way to get out while editing
|
||||||
#if key == "up":
|
#if key == "up":
|
||||||
# nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
# nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
return super(EditorTerminal, self).keypress(size, key)
|
return super(EditorTerminal, self).keypress(size, key)
|
@ -37,9 +37,9 @@ class ConversationsArea(urwid.LineBox):
|
|||||||
elif key == "ctrl g":
|
elif key == "ctrl g":
|
||||||
self.delegate.toggle_fullscreen()
|
self.delegate.toggle_fullscreen()
|
||||||
elif key == "tab":
|
elif key == "tab":
|
||||||
self.delegate.app.ui.main_display.frame.set_focus("header")
|
self.delegate.app.ui.main_display.frame.focus_position = "header"
|
||||||
elif key == "up" and (self.delegate.ilb.first_item_is_selected() or self.delegate.ilb.body_is_empty()):
|
elif key == "up" and (self.delegate.ilb.first_item_is_selected() or self.delegate.ilb.body_is_empty()):
|
||||||
self.delegate.app.ui.main_display.frame.set_focus("header")
|
self.delegate.app.ui.main_display.frame.focus_position = "header"
|
||||||
else:
|
else:
|
||||||
return super(ConversationsArea, self).keypress(size, key)
|
return super(ConversationsArea, self).keypress(size, key)
|
||||||
|
|
||||||
@ -69,10 +69,10 @@ class ConversationsDisplay():
|
|||||||
|
|
||||||
self.columns_widget = urwid.Columns(
|
self.columns_widget = urwid.Columns(
|
||||||
[
|
[
|
||||||
# ("weight", ConversationsDisplay.list_width, self.listbox),
|
# (urwid.WEIGHT, ConversationsDisplay.list_width, self.listbox),
|
||||||
# ("weight", 1-ConversationsDisplay.list_width, self.make_conversation_widget(None))
|
# (urwid.WEIGHT, 1-ConversationsDisplay.list_width, self.make_conversation_widget(None))
|
||||||
(ConversationsDisplay.given_list_width, self.listbox),
|
(ConversationsDisplay.given_list_width, self.listbox),
|
||||||
("weight", 1, self.make_conversation_widget(None))
|
(urwid.WEIGHT, 1, self.make_conversation_widget(None))
|
||||||
],
|
],
|
||||||
dividechars=0, focus_column=0, box_columns=[0]
|
dividechars=0, focus_column=0, box_columns=[0]
|
||||||
)
|
)
|
||||||
@ -105,7 +105,7 @@ class ConversationsDisplay():
|
|||||||
highlight_offFocus="list_off_focus"
|
highlight_offFocus="list_off_focus"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.listbox = ConversationsArea(urwid.Filler(self.ilb, height=("relative", 100)), title="Conversations")
|
self.listbox = ConversationsArea(urwid.Filler(self.ilb, height=urwid.RELATIVE_100), title="Conversations")
|
||||||
self.listbox.delegate = self
|
self.listbox.delegate = self
|
||||||
|
|
||||||
def delete_selected_conversation(self):
|
def delete_selected_conversation(self):
|
||||||
@ -127,17 +127,33 @@ class ConversationsDisplay():
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Delete conversation with\n"+self.app.directory.simplest_display_str(bytes.fromhex(source_hash))+"\n", align="center"),
|
urwid.Text(
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Yes", on_press=confirmed)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("No", on_press=dismiss_dialog))])
|
"Delete conversation with\n"+self.app.directory.simplest_display_str(bytes.fromhex(source_hash))+"\n",
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Yes", on_press=confirmed)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("No", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
]), title="?"
|
]), title="?"
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
# options = self.columns_widget.options("weight", ConversationsDisplay.list_width)
|
# options = self.columns_widget.options(urwid.WEIGHT, ConversationsDisplay.list_width)
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (overlay, options)
|
self.columns_widget.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def edit_selected_in_directory(self):
|
def edit_selected_in_directory(self):
|
||||||
@ -223,9 +239,12 @@ class ConversationsDisplay():
|
|||||||
RNS.log("Could not save directory entry. The contained exception was: "+str(e), RNS.LOG_VERBOSE)
|
RNS.log("Could not save directory entry. The contained exception was: "+str(e), RNS.LOG_VERBOSE)
|
||||||
if not dialog_pile.error_display:
|
if not dialog_pile.error_display:
|
||||||
dialog_pile.error_display = True
|
dialog_pile.error_display = True
|
||||||
options = dialog_pile.options(height_type="pack")
|
options = dialog_pile.options(height_type=urwid.PACK)
|
||||||
dialog_pile.contents.append((urwid.Text(""), options))
|
dialog_pile.contents.append((urwid.Text(""), options))
|
||||||
dialog_pile.contents.append((urwid.Text(("error_text", "Could not save entry. Check your input."), align="center"), options))
|
dialog_pile.contents.append((
|
||||||
|
urwid.Text(("error_text", "Could not save entry. Check your input."), align=urwid.CENTER),
|
||||||
|
options,)
|
||||||
|
)
|
||||||
|
|
||||||
source_is_known = self.app.directory.is_known(bytes.fromhex(source_hash_text))
|
source_is_known = self.app.directory.is_known(bytes.fromhex(source_hash_text))
|
||||||
if source_is_known:
|
if source_is_known:
|
||||||
@ -234,13 +253,23 @@ class ConversationsDisplay():
|
|||||||
def query_action(sender, user_data):
|
def query_action(sender, user_data):
|
||||||
self.close_conversation_by_hash(user_data)
|
self.close_conversation_by_hash(user_data)
|
||||||
nomadnet.Conversation.query_for_peer(user_data)
|
nomadnet.Conversation.query_for_peer(user_data)
|
||||||
options = dialog_pile.options(height_type="pack")
|
options = dialog_pile.options(height_type=urwid.PACK)
|
||||||
dialog_pile.contents = [
|
dialog_pile.contents = [
|
||||||
(urwid.Text("Query sent"), options),
|
(urwid.Text("Query sent"), options),
|
||||||
(urwid.Button("OK", on_press=dismiss_dialog), options)
|
(urwid.Button("OK", on_press=dismiss_dialog), options)
|
||||||
]
|
]
|
||||||
query_button = urwid.Button("Query network for keys", on_press=query_action, user_data=source_hash_text)
|
query_button = urwid.Button("Query network for keys", on_press=query_action, user_data=source_hash_text)
|
||||||
known_section = urwid.Pile([urwid.Divider(g["divider1"]), urwid.Text(g["info"]+"\n", align="center"), urwid.Text("The identity of this peer is not known, and you cannot currently send messages to it. You can query the network to obtain the identity.\n", align="center"), query_button, urwid.Divider(g["divider1"])])
|
known_section = urwid.Pile([
|
||||||
|
urwid.Divider(g["divider1"]),
|
||||||
|
urwid.Text(g["info"]+"\n", align=urwid.CENTER),
|
||||||
|
urwid.Text(
|
||||||
|
"The identity of this peer is not known, and you cannot currently send messages to it. "
|
||||||
|
"You can query the network to obtain the identity.\n",
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
|
query_button,
|
||||||
|
urwid.Divider(g["divider1"]),
|
||||||
|
])
|
||||||
|
|
||||||
dialog_pile = urwid.Pile([
|
dialog_pile = urwid.Pile([
|
||||||
selected_id_widget,
|
selected_id_widget,
|
||||||
@ -253,7 +282,11 @@ class ConversationsDisplay():
|
|||||||
r_direct,
|
r_direct,
|
||||||
r_propagated,
|
r_propagated,
|
||||||
known_section,
|
known_section,
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Save", on_press=confirmed)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("Back", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Save", on_press=confirmed)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Back", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
])
|
])
|
||||||
dialog_pile.error_display = False
|
dialog_pile.error_display = False
|
||||||
|
|
||||||
@ -261,10 +294,19 @@ class ConversationsDisplay():
|
|||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
# options = self.columns_widget.options("weight", ConversationsDisplay.list_width)
|
# options = self.columns_widget.options(urwid.WEIGHT, ConversationsDisplay.list_width)
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (overlay, options)
|
self.columns_widget.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def new_conversation(self):
|
def new_conversation(self):
|
||||||
@ -312,9 +354,15 @@ class ConversationsDisplay():
|
|||||||
RNS.log("Could not start conversation. The contained exception was: "+str(e), RNS.LOG_VERBOSE)
|
RNS.log("Could not start conversation. The contained exception was: "+str(e), RNS.LOG_VERBOSE)
|
||||||
if not dialog_pile.error_display:
|
if not dialog_pile.error_display:
|
||||||
dialog_pile.error_display = True
|
dialog_pile.error_display = True
|
||||||
options = dialog_pile.options(height_type="pack")
|
options = dialog_pile.options(height_type=urwid.PACK)
|
||||||
dialog_pile.contents.append((urwid.Text(""), options))
|
dialog_pile.contents.append((urwid.Text(""), options))
|
||||||
dialog_pile.contents.append((urwid.Text(("error_text", "Could not start conversation. Check your input."), align="center"), options))
|
dialog_pile.contents.append((
|
||||||
|
urwid.Text(
|
||||||
|
("error_text", "Could not start conversation. Check your input."),
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
|
options,
|
||||||
|
))
|
||||||
|
|
||||||
dialog_pile = urwid.Pile([
|
dialog_pile = urwid.Pile([
|
||||||
e_id,
|
e_id,
|
||||||
@ -324,7 +372,11 @@ class ConversationsDisplay():
|
|||||||
r_unknown,
|
r_unknown,
|
||||||
r_trusted,
|
r_trusted,
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Create", on_press=confirmed)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("Back", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Create", on_press=confirmed)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Back", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
])
|
])
|
||||||
dialog_pile.error_display = False
|
dialog_pile.error_display = False
|
||||||
|
|
||||||
@ -332,10 +384,19 @@ class ConversationsDisplay():
|
|||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
# options = self.columns_widget.options("weight", ConversationsDisplay.list_width)
|
# options = self.columns_widget.options(urwid.WEIGHT, ConversationsDisplay.list_width)
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (overlay, options)
|
self.columns_widget.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def ingest_lxm_uri(self):
|
def ingest_lxm_uri(self):
|
||||||
@ -366,7 +427,10 @@ class ConversationsDisplay():
|
|||||||
rdialog_pile = urwid.Pile([
|
rdialog_pile = urwid.Pile([
|
||||||
urwid.Text("Message was decoded, decrypted successfully, and added to your conversation list."),
|
urwid.Text("Message was decoded, decrypted successfully, and added to your conversation list."),
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
urwid.Columns([("weight", 0.6, urwid.Text("")), ("weight", 0.4, urwid.Button("OK", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.6, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.4, urwid.Button("OK", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
])
|
])
|
||||||
rdialog_pile.error_display = False
|
rdialog_pile.error_display = False
|
||||||
|
|
||||||
@ -374,16 +438,28 @@ class ConversationsDisplay():
|
|||||||
rdialog.delegate = self
|
rdialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
roverlay = urwid.Overlay(rdialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
roverlay = urwid.Overlay(
|
||||||
|
rdialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (roverlay, options)
|
self.columns_widget.contents[0] = (roverlay, options)
|
||||||
|
|
||||||
elif ingest_result == duplicate_signal:
|
elif ingest_result == duplicate_signal:
|
||||||
rdialog_pile = urwid.Pile([
|
rdialog_pile = urwid.Pile([
|
||||||
urwid.Text("The decoded message has already been processed by the LXMF Router, and will not be ingested again."),
|
urwid.Text("The decoded message has already been processed by the LXMF Router, and will not be ingested again."),
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
urwid.Columns([("weight", 0.6, urwid.Text("")), ("weight", 0.4, urwid.Button("OK", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.6, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.4, urwid.Button("OK", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
])
|
])
|
||||||
rdialog_pile.error_display = False
|
rdialog_pile.error_display = False
|
||||||
|
|
||||||
@ -391,9 +467,18 @@ class ConversationsDisplay():
|
|||||||
rdialog.delegate = self
|
rdialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
roverlay = urwid.Overlay(rdialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
roverlay = urwid.Overlay(
|
||||||
|
rdialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (roverlay, options)
|
self.columns_widget.contents[0] = (roverlay, options)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -405,7 +490,10 @@ class ConversationsDisplay():
|
|||||||
rdialog_pile = urwid.Pile([
|
rdialog_pile = urwid.Pile([
|
||||||
urwid.Text(propagation_text),
|
urwid.Text(propagation_text),
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
urwid.Columns([("weight", 0.6, urwid.Text("")), ("weight", 0.4, urwid.Button("OK", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.6, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.4, urwid.Button("OK", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
])
|
])
|
||||||
rdialog_pile.error_display = False
|
rdialog_pile.error_display = False
|
||||||
|
|
||||||
@ -413,23 +501,36 @@ class ConversationsDisplay():
|
|||||||
rdialog.delegate = self
|
rdialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
roverlay = urwid.Overlay(rdialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
roverlay = urwid.Overlay(
|
||||||
|
rdialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (roverlay, options)
|
self.columns_widget.contents[0] = (roverlay, options)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log("Could not ingest LXM URI. The contained exception was: "+str(e), RNS.LOG_VERBOSE)
|
RNS.log("Could not ingest LXM URI. The contained exception was: "+str(e), RNS.LOG_VERBOSE)
|
||||||
if not dialog_pile.error_display:
|
if not dialog_pile.error_display:
|
||||||
dialog_pile.error_display = True
|
dialog_pile.error_display = True
|
||||||
options = dialog_pile.options(height_type="pack")
|
options = dialog_pile.options(height_type=urwid.PACK)
|
||||||
dialog_pile.contents.append((urwid.Text(""), options))
|
dialog_pile.contents.append((urwid.Text(""), options))
|
||||||
dialog_pile.contents.append((urwid.Text(("error_text", "Could ingest LXM from URI data. Check your input."), align="center"), options))
|
dialog_pile.contents.append((urwid.Text(("error_text", "Could ingest LXM from URI data. Check your input."), align=urwid.CENTER), options))
|
||||||
|
|
||||||
dialog_pile = urwid.Pile([
|
dialog_pile = urwid.Pile([
|
||||||
e_uri,
|
e_uri,
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Ingest", on_press=confirmed)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("Back", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Ingest", on_press=confirmed)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Back", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
])
|
])
|
||||||
dialog_pile.error_display = False
|
dialog_pile.error_display = False
|
||||||
|
|
||||||
@ -437,9 +538,18 @@ class ConversationsDisplay():
|
|||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (overlay, options)
|
self.columns_widget.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def delete_conversation(self, source_hash):
|
def delete_conversation(self, source_hash):
|
||||||
@ -471,7 +581,7 @@ class ConversationsDisplay():
|
|||||||
r_mall = urwid.RadioButton(max_messages_group, "Download all", state=True)
|
r_mall = urwid.RadioButton(max_messages_group, "Download all", state=True)
|
||||||
r_mlim = urwid.RadioButton(max_messages_group, "Limit to", state=False)
|
r_mlim = urwid.RadioButton(max_messages_group, "Limit to", state=False)
|
||||||
ie_lim = urwid.IntEdit("", 5)
|
ie_lim = urwid.IntEdit("", 5)
|
||||||
rbs = urwid.GridFlow([r_mlim, ie_lim], 12, 1, 0, align="left")
|
rbs = urwid.GridFlow([r_mlim, ie_lim], 12, 1, 0, align=urwid.LEFT)
|
||||||
|
|
||||||
def sync_now(sender):
|
def sync_now(sender):
|
||||||
limit = None
|
limit = None
|
||||||
@ -495,7 +605,11 @@ class ConversationsDisplay():
|
|||||||
else:
|
else:
|
||||||
sync_button = hidden_sync_button
|
sync_button = hidden_sync_button
|
||||||
|
|
||||||
button_columns = urwid.Columns([("weight", 0.45, sync_button), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, cancel_button)])
|
button_columns = urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, sync_button),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, cancel_button),
|
||||||
|
])
|
||||||
real_sync_button.bc = button_columns
|
real_sync_button.bc = button_columns
|
||||||
|
|
||||||
pn_ident = None
|
pn_ident = None
|
||||||
@ -518,7 +632,7 @@ class ConversationsDisplay():
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text(""+g["node"]+pn_display_str, align="center"),
|
urwid.Text(""+g["node"]+pn_display_str, align=urwid.CENTER),
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
sync_progress,
|
sync_progress,
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
@ -529,12 +643,23 @@ class ConversationsDisplay():
|
|||||||
]), title="Message Sync"
|
]), title="Message Sync"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
button_columns = urwid.Columns([("weight", 0.45, urwid.Text("" )), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, cancel_button)])
|
button_columns = urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Text("" )),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, cancel_button),
|
||||||
|
])
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
urwid.Text("No trusted nodes found, cannot sync!\n", align="center"),
|
urwid.Text("No trusted nodes found, cannot sync!\n", align=urwid.CENTER),
|
||||||
urwid.Text("To syncronise messages from the network, one or more nodes must be marked as trusted in the Known Nodes list, or a node must manually be selected as the default propagation node. Nomad Network will then automatically sync from the nearest trusted node, or the manually selected one.", align="left"),
|
urwid.Text(
|
||||||
|
"To synchronise messages from the network, "
|
||||||
|
"one or more nodes must be marked as trusted in the Known Nodes list, "
|
||||||
|
"or a node must manually be selected as the default propagation node. "
|
||||||
|
"Nomad Network will then automatically sync from the nearest trusted node, "
|
||||||
|
"or the manually selected one.",
|
||||||
|
align=urwid.LEFT,
|
||||||
|
),
|
||||||
urwid.Text(""),
|
urwid.Text(""),
|
||||||
button_columns
|
button_columns
|
||||||
]), title="Message Sync"
|
]), title="Message Sync"
|
||||||
@ -550,10 +675,19 @@ class ConversationsDisplay():
|
|||||||
self.sync_dialog = dialog
|
self.sync_dialog = dialog
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
# options = self.columns_widget.options("weight", ConversationsDisplay.list_width)
|
# options = self.columns_widget.options(urwid.WEIGHT, ConversationsDisplay.list_width)
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
self.columns_widget.contents[0] = (overlay, options)
|
self.columns_widget.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def update_sync_dialog(self, loop = None, sender = None):
|
def update_sync_dialog(self, loop = None, sender = None):
|
||||||
@ -561,9 +695,9 @@ class ConversationsDisplay():
|
|||||||
self.sync_dialog.sync_progress.set_completion(self.app.get_sync_progress())
|
self.sync_dialog.sync_progress.set_completion(self.app.get_sync_progress())
|
||||||
|
|
||||||
if self.app.get_sync_status() == "Idle" or self.app.message_router.propagation_transfer_state >= LXMF.LXMRouter.PR_COMPLETE:
|
if self.app.get_sync_status() == "Idle" or self.app.message_router.propagation_transfer_state >= LXMF.LXMRouter.PR_COMPLETE:
|
||||||
self.sync_dialog.bc.contents[0] = (self.sync_dialog.real_sync_button, self.sync_dialog.bc.options("weight", 0.45))
|
self.sync_dialog.bc.contents[0] = (self.sync_dialog.real_sync_button, self.sync_dialog.bc.options(urwid.WEIGHT, 0.45))
|
||||||
else:
|
else:
|
||||||
self.sync_dialog.bc.contents[0] = (self.sync_dialog.hidden_sync_button, self.sync_dialog.bc.options("weight", 0.45))
|
self.sync_dialog.bc.contents[0] = (self.sync_dialog.hidden_sync_button, self.sync_dialog.bc.options(urwid.WEIGHT, 0.45))
|
||||||
|
|
||||||
self.app.ui.loop.set_alarm_in(0.2, self.update_sync_dialog)
|
self.app.ui.loop.set_alarm_in(0.2, self.update_sync_dialog)
|
||||||
|
|
||||||
@ -574,13 +708,22 @@ class ConversationsDisplay():
|
|||||||
def update_conversation_list(self):
|
def update_conversation_list(self):
|
||||||
ilb_position = self.ilb.get_selected_position()
|
ilb_position = self.ilb.get_selected_position()
|
||||||
self.update_listbox()
|
self.update_listbox()
|
||||||
# options = self.columns_widget.options("weight", ConversationsDisplay.list_width)
|
# options = self.columns_widget.options(urwid.WEIGHT, ConversationsDisplay.list_width)
|
||||||
options = self.columns_widget.options("given", ConversationsDisplay.given_list_width)
|
options = self.columns_widget.options(urwid.GIVEN, ConversationsDisplay.given_list_width)
|
||||||
if not (self.dialog_open and self.sync_dialog != None):
|
if not (self.dialog_open and self.sync_dialog != None):
|
||||||
self.columns_widget.contents[0] = (self.listbox, options)
|
self.columns_widget.contents[0] = (self.listbox, options)
|
||||||
else:
|
else:
|
||||||
bottom = self.listbox
|
bottom = self.listbox
|
||||||
overlay = urwid.Overlay(self.sync_dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
self.sync_dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
self.columns_widget.contents[0] = (overlay, options)
|
self.columns_widget.contents[0] = (overlay, options)
|
||||||
|
|
||||||
if ilb_position != None:
|
if ilb_position != None:
|
||||||
@ -606,17 +749,17 @@ class ConversationsDisplay():
|
|||||||
self.app.mark_conversation_read(self.currently_displayed_conversation)
|
self.app.mark_conversation_read(self.currently_displayed_conversation)
|
||||||
|
|
||||||
self.currently_displayed_conversation = source_hash
|
self.currently_displayed_conversation = source_hash
|
||||||
# options = self.widget.options("weight", 1-ConversationsDisplay.list_width)
|
# options = self.widget.options(urwid.WEIGHT, 1-ConversationsDisplay.list_width)
|
||||||
options = self.widget.options("weight", 1)
|
options = self.widget.options(urwid.WEIGHT, 1)
|
||||||
self.widget.contents[1] = (self.make_conversation_widget(source_hash), options)
|
self.widget.contents[1] = (self.make_conversation_widget(source_hash), options)
|
||||||
if source_hash == None:
|
if source_hash == None:
|
||||||
self.widget.set_focus_column(0)
|
self.widget.focus_position = 0
|
||||||
else:
|
else:
|
||||||
if self.app.conversation_is_unread(source_hash):
|
if self.app.conversation_is_unread(source_hash):
|
||||||
self.app.mark_conversation_read(source_hash)
|
self.app.mark_conversation_read(source_hash)
|
||||||
self.update_conversation_list()
|
self.update_conversation_list()
|
||||||
|
|
||||||
self.widget.set_focus_column(1)
|
self.widget.focus_position = 1
|
||||||
conversation_position = None
|
conversation_position = None
|
||||||
index = 0
|
index = 0
|
||||||
for widget in self.list_widgets:
|
for widget in self.list_widgets:
|
||||||
@ -756,9 +899,9 @@ class MessageEdit(urwid.Edit):
|
|||||||
y = self.get_cursor_coords(size)[1]
|
y = self.get_cursor_coords(size)[1]
|
||||||
if y == 0:
|
if y == 0:
|
||||||
if self.delegate.full_editor_active and self.name == "title_editor":
|
if self.delegate.full_editor_active and self.name == "title_editor":
|
||||||
self.delegate.frame.set_focus("body")
|
self.delegate.frame.focus_position = "body"
|
||||||
elif not self.delegate.full_editor_active and self.name == "content_editor":
|
elif not self.delegate.full_editor_active and self.name == "content_editor":
|
||||||
self.delegate.frame.set_focus("body")
|
self.delegate.frame.focus_position = "body"
|
||||||
else:
|
else:
|
||||||
return super(MessageEdit, self).keypress(size, key)
|
return super(MessageEdit, self).keypress(size, key)
|
||||||
else:
|
else:
|
||||||
@ -769,11 +912,11 @@ class MessageEdit(urwid.Edit):
|
|||||||
|
|
||||||
class ConversationFrame(urwid.Frame):
|
class ConversationFrame(urwid.Frame):
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if self.get_focus() == "body":
|
if self.focus_position == "body":
|
||||||
if key == "up" and self.delegate.messagelist.top_is_visible:
|
if key == "up" and self.delegate.messagelist.top_is_visible:
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
elif key == "down" and self.delegate.messagelist.bottom_is_visible:
|
elif key == "down" and self.delegate.messagelist.bottom_is_visible:
|
||||||
self.set_focus("footer")
|
self.focus_position = "footer"
|
||||||
else:
|
else:
|
||||||
return super(ConversationFrame, self).keypress(size, key)
|
return super(ConversationFrame, self).keypress(size, key)
|
||||||
elif key == "ctrl k":
|
elif key == "ctrl k":
|
||||||
@ -815,7 +958,11 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
|
|
||||||
header = None
|
header = None
|
||||||
if self.conversation.trust_level == DirectoryEntry.UNTRUSTED:
|
if self.conversation.trust_level == DirectoryEntry.UNTRUSTED:
|
||||||
header = urwid.AttrMap(urwid.Padding(urwid.Text(g["warning"]+" Warning: Conversation with untrusted peer "+g["warning"], align="center")), "msg_warning_untrusted")
|
header = urwid.AttrMap(
|
||||||
|
urwid.Padding(
|
||||||
|
urwid.Text(g["warning"]+" Warning: Conversation with untrusted peer "+g["warning"], align=urwid.CENTER)),
|
||||||
|
"msg_warning_untrusted",
|
||||||
|
)
|
||||||
|
|
||||||
self.minimal_editor = urwid.AttrMap(msg_editor, "msg_editor")
|
self.minimal_editor = urwid.AttrMap(msg_editor, "msg_editor")
|
||||||
self.minimal_editor.name = "minimal_editor"
|
self.minimal_editor.name = "minimal_editor"
|
||||||
@ -867,17 +1014,30 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Clear conversation history\n", align="center"),
|
urwid.Text("Clear conversation history\n", align=urwid.CENTER),
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Yes", on_press=confirmed)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("No", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Yes", on_press=confirmed)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("No", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
]), title="?"
|
]), title="?"
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.messagelist
|
bottom = self.messagelist
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=34, valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=34,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
self.frame.contents["body"] = (overlay, self.frame.options())
|
self.frame.contents["body"] = (overlay, self.frame.options())
|
||||||
self.frame.set_focus("body")
|
self.frame.focus_position = "body"
|
||||||
|
|
||||||
def toggle_editor(self):
|
def toggle_editor(self):
|
||||||
if self.full_editor_active:
|
if self.full_editor_active:
|
||||||
@ -894,7 +1054,17 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
if allowed:
|
if allowed:
|
||||||
self.frame.contents["footer"] = (self.minimal_editor, None)
|
self.frame.contents["footer"] = (self.minimal_editor, None)
|
||||||
else:
|
else:
|
||||||
warning = urwid.AttrMap(urwid.Padding(urwid.Text("\n"+g["info"]+"\n\nYou cannot currently message this peer, since it's identity keys are not known. The keys have been requested from the network and should arrive shortly, if available. Close this conversation and reopen it to try again.\n\nTo query the network manually, select this conversation in the conversation list, press Ctrl-E, and use the query button.\n", align="center")), "msg_header_caution")
|
warning = urwid.AttrMap(
|
||||||
|
urwid.Padding(urwid.Text(
|
||||||
|
"\n"+g["info"]+"\n\nYou cannot currently message this peer, since it's identity keys are not known. "
|
||||||
|
"The keys have been requested from the network and should arrive shortly, if available. "
|
||||||
|
"Close this conversation and reopen it to try again.\n\n"
|
||||||
|
"To query the network manually, select this conversation in the conversation list, "
|
||||||
|
"press Ctrl-E, and use the query button.\n",
|
||||||
|
align=urwid.CENTER,
|
||||||
|
)),
|
||||||
|
"msg_header_caution",
|
||||||
|
)
|
||||||
self.frame.contents["footer"] = (warning, None)
|
self.frame.contents["footer"] = (warning, None)
|
||||||
|
|
||||||
def toggle_focus_area(self):
|
def toggle_focus_area(self):
|
||||||
@ -905,9 +1075,9 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
if name == "messagelist":
|
if name == "messagelist":
|
||||||
self.frame.set_focus("footer")
|
self.frame.focus_position = "footer"
|
||||||
elif name == "minimal_editor" or name == "full_editor":
|
elif name == "minimal_editor" or name == "full_editor":
|
||||||
self.frame.set_focus("body")
|
self.frame.focus_position = "body"
|
||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "tab":
|
if key == "tab":
|
||||||
@ -982,17 +1152,20 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("The paper message was saved to:\n\n"+str(path)+"\n", align="center"),
|
urwid.Text("The paper message was saved to:\n\n"+str(path)+"\n", align=urwid.CENTER),
|
||||||
urwid.Columns([("weight", 0.6, urwid.Text("")), ("weight", 0.4, urwid.Button("OK", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.6, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.4, urwid.Button("OK", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
]), title=g["papermsg"].replace(" ", "")
|
]), title=g["papermsg"].replace(" ", "")
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.messagelist
|
bottom = self.messagelist
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=60, valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=60, valign=urwid.MIDDLE, height=urwid.PACK, left=2, right=2)
|
||||||
|
|
||||||
self.frame.contents["body"] = (overlay, self.frame.options())
|
self.frame.contents["body"] = (overlay, self.frame.options())
|
||||||
self.frame.set_focus("body")
|
self.frame.focus_position = "body"
|
||||||
|
|
||||||
def print_paper_message_qr(self):
|
def print_paper_message_qr(self):
|
||||||
content = self.content_editor.get_edit_text()
|
content = self.content_editor.get_edit_text()
|
||||||
@ -1044,25 +1217,28 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Select the desired paper message output method.\nSaved files will be written to:\n\n"+str(self.app.downloads_path)+"\n", align="center"),
|
urwid.Text(
|
||||||
|
"Select the desired paper message output method.\nSaved files will be written to:\n\n"+str(self.app.downloads_path)+"\n",
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
urwid.Columns([
|
urwid.Columns([
|
||||||
("weight", 0.5, urwid.Button("Print QR", on_press=print_qr)),
|
(urwid.WEIGHT, 0.5, urwid.Button("Print QR", on_press=print_qr)),
|
||||||
("weight", 0.1, urwid.Text("")),
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
("weight", 0.5, urwid.Button("Save QR", on_press=save_qr)),
|
(urwid.WEIGHT, 0.5, urwid.Button("Save QR", on_press=save_qr)),
|
||||||
("weight", 0.1, urwid.Text("")),
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
("weight", 0.5, urwid.Button("Save URI", on_press=save_uri)),
|
(urwid.WEIGHT, 0.5, urwid.Button("Save URI", on_press=save_uri)),
|
||||||
("weight", 0.1, urwid.Text("")),
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
("weight", 0.5, urwid.Button("Cancel", on_press=dismiss_dialog))
|
(urwid.WEIGHT, 0.5, urwid.Button("Cancel", on_press=dismiss_dialog))
|
||||||
])
|
])
|
||||||
]), title="Create Paper Message"
|
]), title="Create Paper Message"
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.messagelist
|
bottom = self.messagelist
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=60, valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=60, valign=urwid.MIDDLE, height=urwid.PACK, left=2, right=2)
|
||||||
|
|
||||||
self.frame.contents["body"] = (overlay, self.frame.options())
|
self.frame.contents["body"] = (overlay, self.frame.options())
|
||||||
self.frame.set_focus("body")
|
self.frame.focus_position = "body"
|
||||||
|
|
||||||
def paper_message_failed(self):
|
def paper_message_failed(self):
|
||||||
def dismiss_dialog(sender):
|
def dismiss_dialog(sender):
|
||||||
@ -1071,17 +1247,23 @@ class ConversationWidget(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Could not output paper message,\ncheck your settings. See the log\nfile for any error messages.\n", align="center"),
|
urwid.Text(
|
||||||
urwid.Columns([("weight", 0.6, urwid.Text("")), ("weight", 0.4, urwid.Button("OK", on_press=dismiss_dialog))])
|
"Could not output paper message,\ncheck your settings. See the log\nfile for any error messages.\n",
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.6, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.4, urwid.Button("OK", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
]), title="!"
|
]), title="!"
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self.messagelist
|
bottom = self.messagelist
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=34, valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=34, valign=urwid.MIDDLE, height=urwid.PACK, left=2, right=2)
|
||||||
|
|
||||||
self.frame.contents["body"] = (overlay, self.frame.options())
|
self.frame.contents["body"] = (overlay, self.frame.options())
|
||||||
self.frame.set_focus("body")
|
self.frame.focus_position = "body"
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
self.delegate.close_conversation(self)
|
self.delegate.close_conversation(self)
|
||||||
|
@ -15,7 +15,7 @@ class DirectoryDisplay():
|
|||||||
])
|
])
|
||||||
|
|
||||||
self.shortcuts_display = DirectoryDisplayShortcuts(self.app)
|
self.shortcuts_display = DirectoryDisplayShortcuts(self.app)
|
||||||
self.widget = urwid.Filler(pile, 'top')
|
self.widget = urwid.Filler(pile, urwid.TOP)
|
||||||
|
|
||||||
def shortcuts(self):
|
def shortcuts(self):
|
||||||
return self.shortcuts_display
|
return self.shortcuts_display
|
@ -6,13 +6,13 @@ class IntroDisplay():
|
|||||||
font = urwid.font.HalfBlock5x4Font()
|
font = urwid.font.HalfBlock5x4Font()
|
||||||
|
|
||||||
big_text = urwid.BigText(("intro_title", self.app.config["textui"]["intro_text"]), font)
|
big_text = urwid.BigText(("intro_title", self.app.config["textui"]["intro_text"]), font)
|
||||||
big_text = urwid.Padding(big_text, align="center", width="clip")
|
big_text = urwid.Padding(big_text, align=urwid.CENTER, width=urwid.CLIP)
|
||||||
|
|
||||||
intro = urwid.Pile([
|
intro = urwid.Pile([
|
||||||
big_text,
|
big_text,
|
||||||
urwid.Text(("Version %s" % (str(self.app.version))), align="center"),
|
urwid.Text(("Version %s" % (str(self.app.version))), align=urwid.CENTER),
|
||||||
urwid.Divider(),
|
urwid.Divider(),
|
||||||
urwid.Text(("-= Starting =- "), align="center"),
|
urwid.Text(("-= Starting =- "), align=urwid.CENTER),
|
||||||
])
|
])
|
||||||
|
|
||||||
self.widget = urwid.Filler(intro)
|
self.widget = urwid.Filler(intro)
|
||||||
|
@ -10,7 +10,7 @@ class GuideDisplayShortcuts():
|
|||||||
self.app = app
|
self.app = app
|
||||||
g = app.ui.glyphs
|
g = app.ui.glyphs
|
||||||
|
|
||||||
self.widget = urwid.AttrMap(urwid.Padding(urwid.Text(""), align="left"), "shortcutbar")
|
self.widget = urwid.AttrMap(urwid.Padding(urwid.Text(""), align=urwid.LEFT), "shortcutbar")
|
||||||
|
|
||||||
class ListEntry(urwid.Text):
|
class ListEntry(urwid.Text):
|
||||||
_selectable = True
|
_selectable = True
|
||||||
@ -130,7 +130,7 @@ class TopicList(urwid.WidgetWrap):
|
|||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "up" and (self.ilb.first_item_is_selected()):
|
if key == "up" and (self.ilb.first_item_is_selected()):
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
|
|
||||||
return super(TopicList, self).keypress(size, key)
|
return super(TopicList, self).keypress(size, key)
|
||||||
|
|
||||||
@ -141,16 +141,16 @@ class GuideDisplay():
|
|||||||
self.app = app
|
self.app = app
|
||||||
g = self.app.ui.glyphs
|
g = self.app.ui.glyphs
|
||||||
|
|
||||||
topic_text = urwid.Text("\n No topic selected", align="left")
|
topic_text = urwid.Text("\n No topic selected", align=urwid.LEFT)
|
||||||
|
|
||||||
self.left_area = TopicList(self.app, self)
|
self.left_area = TopicList(self.app, self)
|
||||||
self.right_area = urwid.LineBox(urwid.Filler(topic_text, "top"))
|
self.right_area = urwid.LineBox(urwid.Filler(topic_text, urwid.TOP))
|
||||||
|
|
||||||
|
|
||||||
self.columns = urwid.Columns(
|
self.columns = urwid.Columns(
|
||||||
[
|
[
|
||||||
("weight", GuideDisplay.list_width, self.left_area),
|
(urwid.WEIGHT, GuideDisplay.list_width, self.left_area),
|
||||||
("weight", 1-GuideDisplay.list_width, self.right_area)
|
(urwid.WEIGHT, 1-GuideDisplay.list_width, self.right_area)
|
||||||
],
|
],
|
||||||
dividechars=0, focus_column=0
|
dividechars=0, focus_column=0
|
||||||
)
|
)
|
||||||
@ -163,7 +163,7 @@ class GuideDisplay():
|
|||||||
entry.display_topic(entry.display_topic, entry.topic_name)
|
entry.display_topic(entry.display_topic, entry.topic_name)
|
||||||
|
|
||||||
def set_content_widgets(self, new_content):
|
def set_content_widgets(self, new_content):
|
||||||
options = self.columns.options(width_type="weight", width_amount=1-GuideDisplay.list_width, box_widget=True)
|
options = self.columns.options(width_type=urwid.WEIGHT, width_amount=1-GuideDisplay.list_width, box_widget=True)
|
||||||
pile = urwid.Pile(new_content)
|
pile = urwid.Pile(new_content)
|
||||||
content = urwid.LineBox(urwid.AttrMap(ScrollBar(Scrollable(pile), thumb_char="\u2503", trough_char=" "), "scrollbar"))
|
content = urwid.LineBox(urwid.AttrMap(ScrollBar(Scrollable(pile), thumb_char="\u2503", trough_char=" "), "scrollbar"))
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ class LogDisplayShortcuts():
|
|||||||
|
|
||||||
class LogDisplay():
|
class LogDisplay():
|
||||||
def __init__(self, app):
|
def __init__(self, app):
|
||||||
import urwid
|
|
||||||
self.app = app
|
self.app = app
|
||||||
self.log_term = None
|
self.log_term = None
|
||||||
|
|
||||||
@ -48,6 +47,6 @@ class LogTerminal(urwid.WidgetWrap):
|
|||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "up":
|
if key == "up":
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
|
|
||||||
return super(LogTerminal, self).keypress(size, key)
|
return super(LogTerminal, self).keypress(size, key)
|
@ -1,5 +1,4 @@
|
|||||||
import RNS
|
import RNS
|
||||||
import time
|
|
||||||
|
|
||||||
from .Network import *
|
from .Network import *
|
||||||
from .Conversations import *
|
from .Conversations import *
|
||||||
@ -158,7 +157,7 @@ class MainDisplay():
|
|||||||
class MenuColumns(urwid.Columns):
|
class MenuColumns(urwid.Columns):
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "tab" or key == "down":
|
if key == "tab" or key == "down":
|
||||||
self.handler.frame.set_focus("body")
|
self.handler.frame.focus_position = "body"
|
||||||
|
|
||||||
return super(MenuColumns, self).keypress(size, key)
|
return super(MenuColumns, self).keypress(size, key)
|
||||||
|
|
||||||
@ -172,7 +171,7 @@ class MenuDisplay():
|
|||||||
|
|
||||||
self.menu_indicator = urwid.Text("")
|
self.menu_indicator = urwid.Text("")
|
||||||
|
|
||||||
menu_text = ("pack", self.menu_indicator)
|
menu_text = (urwid.PACK, self.menu_indicator)
|
||||||
button_network = (11, MenuButton("Network", on_press=handler.show_network))
|
button_network = (11, MenuButton("Network", on_press=handler.show_network))
|
||||||
button_conversations = (17, MenuButton("Conversations", on_press=handler.show_conversations))
|
button_conversations = (17, MenuButton("Conversations", on_press=handler.show_conversations))
|
||||||
button_directory = (13, MenuButton("Directory", on_press=handler.show_directory))
|
button_directory = (13, MenuButton("Directory", on_press=handler.show_directory))
|
||||||
|
@ -15,7 +15,7 @@ class MapDisplay():
|
|||||||
])
|
])
|
||||||
|
|
||||||
self.shortcuts_display = MapDisplayShortcuts(self.app)
|
self.shortcuts_display = MapDisplayShortcuts(self.app)
|
||||||
self.widget = urwid.Filler(pile, 'top')
|
self.widget = urwid.Filler(pile, urwid.TOP)
|
||||||
|
|
||||||
def shortcuts(self):
|
def shortcuts(self):
|
||||||
return self.shortcuts_display
|
return self.shortcuts_display
|
@ -4,7 +4,6 @@ import random
|
|||||||
import time
|
import time
|
||||||
from urwid.util import is_mouse_press
|
from urwid.util import is_mouse_press
|
||||||
from urwid.text_layout import calc_coords
|
from urwid.text_layout import calc_coords
|
||||||
import re
|
|
||||||
|
|
||||||
DEFAULT_FG_DARK = "ddd"
|
DEFAULT_FG_DARK = "ddd"
|
||||||
DEFAULT_FG_LIGHT = "222"
|
DEFAULT_FG_LIGHT = "222"
|
||||||
@ -162,7 +161,7 @@ def parse_line(line, state, url_delegate):
|
|||||||
else:
|
else:
|
||||||
tw = urwid.Text(o, align=state["align"])
|
tw = urwid.Text(o, align=state["align"])
|
||||||
|
|
||||||
widgets.append(("pack", tw))
|
widgets.append((urwid.PACK, tw))
|
||||||
else:
|
else:
|
||||||
if o["type"] == "field":
|
if o["type"] == "field":
|
||||||
fw = o["width"]
|
fw = o["width"]
|
||||||
|
@ -52,7 +52,7 @@ class ListEntry(urwid.Text):
|
|||||||
class AnnounceInfo(urwid.WidgetWrap):
|
class AnnounceInfo(urwid.WidgetWrap):
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "esc":
|
if key == "esc":
|
||||||
options = self.parent.left_pile.options(height_type="weight", height_amount=1)
|
options = self.parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.parent.left_pile.contents[0] = (self.parent.announce_stream_display, options)
|
self.parent.left_pile.contents[0] = (self.parent.announce_stream_display, options)
|
||||||
else:
|
else:
|
||||||
return super(AnnounceInfo, self).keypress(size, key)
|
return super(AnnounceInfo, self).keypress(size, key)
|
||||||
@ -115,7 +115,7 @@ class AnnounceInfo(urwid.WidgetWrap):
|
|||||||
style = "list_untrusted"
|
style = "list_untrusted"
|
||||||
|
|
||||||
def show_announce_stream(sender):
|
def show_announce_stream(sender):
|
||||||
options = self.parent.left_pile.options(height_type="weight", height_amount=1)
|
options = self.parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.parent.left_pile.contents[0] = (self.parent.announce_stream_display, options)
|
self.parent.left_pile.contents[0] = (self.parent.announce_stream_display, options)
|
||||||
|
|
||||||
def connect(sender):
|
def connect(sender):
|
||||||
@ -187,52 +187,64 @@ class AnnounceInfo(urwid.WidgetWrap):
|
|||||||
RNS.log("Error while setting active propagation node from announce. The contained exception was: "+str(e), RNS.LOG_ERROR)
|
RNS.log("Error while setting active propagation node from announce. The contained exception was: "+str(e), RNS.LOG_ERROR)
|
||||||
|
|
||||||
if is_node:
|
if is_node:
|
||||||
type_button = ("weight", 0.45, urwid.Button("Connect", on_press=connect))
|
type_button = (urwid.WEIGHT, 0.45, urwid.Button("Connect", on_press=connect))
|
||||||
msg_button = ("weight", 0.45, urwid.Button("Msg Op", on_press=msg_op))
|
msg_button = (urwid.WEIGHT, 0.45, urwid.Button("Msg Op", on_press=msg_op))
|
||||||
save_button = ("weight", 0.45, urwid.Button("Save", on_press=save_node))
|
save_button = (urwid.WEIGHT, 0.45, urwid.Button("Save", on_press=save_node))
|
||||||
elif is_pn:
|
elif is_pn:
|
||||||
type_button = ("weight", 0.45, urwid.Button("Use as default", on_press=use_pn))
|
type_button = (urwid.WEIGHT, 0.45, urwid.Button("Use as default", on_press=use_pn))
|
||||||
save_button = None
|
save_button = None
|
||||||
else:
|
else:
|
||||||
type_button = ("weight", 0.45, urwid.Button("Converse", on_press=converse))
|
type_button = (urwid.WEIGHT, 0.45, urwid.Button("Converse", on_press=converse))
|
||||||
save_button = None
|
save_button = None
|
||||||
|
|
||||||
if is_node:
|
if is_node:
|
||||||
button_columns = urwid.Columns([("weight", 0.45, urwid.Button("Back", on_press=show_announce_stream)), ("weight", 0.1, urwid.Text("")), type_button, ("weight", 0.1, urwid.Text("")), msg_button, ("weight", 0.1, urwid.Text("")), save_button])
|
button_columns = urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Back", on_press=show_announce_stream)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
type_button,
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
msg_button,
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
save_button,
|
||||||
|
])
|
||||||
else:
|
else:
|
||||||
button_columns = urwid.Columns([("weight", 0.45, urwid.Button("Back", on_press=show_announce_stream)), ("weight", 0.1, urwid.Text("")), type_button])
|
button_columns = urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Back", on_press=show_announce_stream)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
type_button,
|
||||||
|
])
|
||||||
|
|
||||||
pile_widgets = []
|
pile_widgets = []
|
||||||
|
|
||||||
if is_pn:
|
if is_pn:
|
||||||
pile_widgets = [
|
pile_widgets = [
|
||||||
urwid.Text("Time : "+ts_string, align="left"),
|
urwid.Text("Time : "+ts_string, align=urwid.LEFT),
|
||||||
urwid.Text("Addr : "+addr_str, align="left"),
|
urwid.Text("Addr : "+addr_str, align=urwid.LEFT),
|
||||||
urwid.Text("Type : "+type_string, align="left"),
|
urwid.Text("Type : "+type_string, align=urwid.LEFT),
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
button_columns
|
button_columns
|
||||||
]
|
]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
pile_widgets = [
|
pile_widgets = [
|
||||||
urwid.Text("Time : "+ts_string, align="left"),
|
urwid.Text("Time : "+ts_string, align=urwid.LEFT),
|
||||||
urwid.Text("Addr : "+addr_str, align="left"),
|
urwid.Text("Addr : "+addr_str, align=urwid.LEFT),
|
||||||
urwid.Text("Type : "+type_string, align="left"),
|
urwid.Text("Type : "+type_string, align=urwid.LEFT),
|
||||||
urwid.Text("Name : "+display_str, align="left"),
|
urwid.Text("Name : "+display_str, align=urwid.LEFT),
|
||||||
urwid.Text(["Trust : ", (style, trust_str)], align="left"),
|
urwid.Text(["Trust : ", (style, trust_str)], align=urwid.LEFT),
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
urwid.Text(["Announce Data: \n", (data_style, data_str)], align="left"),
|
urwid.Text(["Announce Data: \n", (data_style, data_str)], align=urwid.LEFT),
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
button_columns
|
button_columns
|
||||||
]
|
]
|
||||||
|
|
||||||
if is_node:
|
if is_node:
|
||||||
operator_entry = urwid.Text("Oprtr : "+op_str, align="left")
|
operator_entry = urwid.Text("Oprtr : "+op_str, align=urwid.LEFT)
|
||||||
pile_widgets.insert(4, operator_entry)
|
pile_widgets.insert(4, operator_entry)
|
||||||
|
|
||||||
pile = urwid.Pile(pile_widgets)
|
pile = urwid.Pile(pile_widgets)
|
||||||
|
|
||||||
self.display_widget = urwid.Filler(pile, valign="top", height="pack")
|
self.display_widget = urwid.Filler(pile, valign=urwid.TOP, height=urwid.PACK)
|
||||||
|
|
||||||
urwid.WidgetWrap.__init__(self, urwid.LineBox(self.display_widget, title="Announce Info"))
|
urwid.WidgetWrap.__init__(self, urwid.LineBox(self.display_widget, title="Announce Info"))
|
||||||
|
|
||||||
@ -302,7 +314,7 @@ class AnnounceStreamEntry(urwid.WidgetWrap):
|
|||||||
try:
|
try:
|
||||||
parent = self.app.ui.main_display.sub_displays.network_display
|
parent = self.app.ui.main_display.sub_displays.network_display
|
||||||
info_widget = AnnounceInfo(announce, parent, self.app)
|
info_widget = AnnounceInfo(announce, parent, self.app)
|
||||||
options = parent.left_pile.options(height_type="weight", height_amount=1)
|
options = parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
parent.left_pile.contents[0] = (info_widget, options)
|
parent.left_pile.contents[0] = (info_widget, options)
|
||||||
|
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
@ -313,17 +325,21 @@ class AnnounceStreamEntry(urwid.WidgetWrap):
|
|||||||
def close_req(sender):
|
def close_req(sender):
|
||||||
self.delegate.parent.close_list_dialogs()
|
self.delegate.parent.close_list_dialogs()
|
||||||
|
|
||||||
dialog_pile.contents[0] = (urwid.Text("\nKeys requested from network\n", align="center"), options)
|
dialog_pile.contents[0] = (urwid.Text("\nKeys requested from network\n", align=urwid.CENTER), options)
|
||||||
RNS.Transport.request_path(announce[1])
|
RNS.Transport.request_path(announce[1])
|
||||||
|
|
||||||
confirmed_button = urwid.Button("Request keys", on_press=confirmed)
|
confirmed_button = urwid.Button("Request keys", on_press=confirmed)
|
||||||
|
|
||||||
dialog_pile = urwid.Pile([
|
dialog_pile = urwid.Pile([
|
||||||
urwid.Text("The keys for the announced destination could not be recalled. You can wait for an announce to arrive, or request the keys from the network.\n", align="center"),
|
urwid.Text(
|
||||||
|
"The keys for the announced destination could not be recalled. "
|
||||||
|
"You can wait for an announce to arrive, or request the keys from the network.\n",
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
urwid.Columns([
|
urwid.Columns([
|
||||||
("weight", 0.45, confirmed_button),
|
(urwid.WEIGHT, 0.45, confirmed_button),
|
||||||
("weight", 0.1, urwid.Text("")),
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
("weight", 0.45, urwid.Button("Close", on_press=dismiss_dialog)),
|
(urwid.WEIGHT, 0.45, urwid.Button("Close", on_press=dismiss_dialog)),
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -335,9 +351,18 @@ class AnnounceStreamEntry(urwid.WidgetWrap):
|
|||||||
dialog.delegate = self.delegate.parent
|
dialog.delegate = self.delegate.parent
|
||||||
bottom = self.delegate
|
bottom = self.delegate
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.delegate.parent.left_pile.options("weight", 1)
|
options = self.delegate.parent.left_pile.options(urwid.WEIGHT, 1)
|
||||||
self.delegate.parent.left_pile.contents[0] = (overlay, options)
|
self.delegate.parent.left_pile.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def timestamp(self):
|
def timestamp(self):
|
||||||
@ -369,7 +394,7 @@ class AnnounceStream(urwid.WidgetWrap):
|
|||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "up" and (self.no_content or self.ilb.first_item_is_selected()):
|
if key == "up" and (self.no_content or self.ilb.first_item_is_selected()):
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
elif key == "ctrl x":
|
elif key == "ctrl x":
|
||||||
self.delete_selected_entry()
|
self.delete_selected_entry()
|
||||||
|
|
||||||
@ -464,7 +489,7 @@ class ListDialogLineBox(urwid.LineBox):
|
|||||||
class KnownNodeInfo(urwid.WidgetWrap):
|
class KnownNodeInfo(urwid.WidgetWrap):
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "esc":
|
if key == "esc":
|
||||||
options = self.parent.left_pile.options(height_type="weight", height_amount=1)
|
options = self.parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.parent.left_pile.contents[0] = (self.parent.known_nodes_display, options)
|
self.parent.left_pile.contents[0] = (self.parent.known_nodes_display, options)
|
||||||
else:
|
else:
|
||||||
return super(KnownNodeInfo, self).keypress(size, key)
|
return super(KnownNodeInfo, self).keypress(size, key)
|
||||||
@ -559,7 +584,7 @@ class KnownNodeInfo(urwid.WidgetWrap):
|
|||||||
op_str = "Unknown"
|
op_str = "Unknown"
|
||||||
|
|
||||||
def show_known_nodes(sender):
|
def show_known_nodes(sender):
|
||||||
options = self.parent.left_pile.options(height_type="weight", height_amount=1)
|
options = self.parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.parent.left_pile.contents[0] = (self.parent.known_nodes_display, options)
|
self.parent.left_pile.contents[0] = (self.parent.known_nodes_display, options)
|
||||||
|
|
||||||
def connect(sender):
|
def connect(sender):
|
||||||
@ -630,21 +655,21 @@ class KnownNodeInfo(urwid.WidgetWrap):
|
|||||||
|
|
||||||
show_known_nodes(None)
|
show_known_nodes(None)
|
||||||
|
|
||||||
back_button = ("weight", 0.2, urwid.Button("Back", on_press=show_known_nodes))
|
back_button = (urwid.WEIGHT, 0.2, urwid.Button("Back", on_press=show_known_nodes))
|
||||||
connect_button = ("weight", 0.2, urwid.Button("Connect", on_press=connect))
|
connect_button = (urwid.WEIGHT, 0.2, urwid.Button("Connect", on_press=connect))
|
||||||
save_button = ("weight", 0.2, urwid.Button("Save", on_press=save_node))
|
save_button = (urwid.WEIGHT, 0.2, urwid.Button("Save", on_press=save_node))
|
||||||
msg_button = ("weight", 0.2, urwid.Button("Msg Op", on_press=msg_op))
|
msg_button = (urwid.WEIGHT, 0.2, urwid.Button("Msg Op", on_press=msg_op))
|
||||||
bdiv = ("weight", 0.02, urwid.Text(""))
|
bdiv = (urwid.WEIGHT, 0.02, urwid.Text(""))
|
||||||
|
|
||||||
button_columns = urwid.Columns([back_button, bdiv, connect_button, bdiv, msg_button, bdiv, save_button])
|
button_columns = urwid.Columns([back_button, bdiv, connect_button, bdiv, msg_button, bdiv, save_button])
|
||||||
|
|
||||||
pile_widgets = [
|
pile_widgets = [
|
||||||
urwid.Text("Type : "+type_string, align="left"),
|
urwid.Text("Type : "+type_string, align=urwid.LEFT),
|
||||||
e_name,
|
e_name,
|
||||||
urwid.Text("Node Addr : "+addr_str, align="left"),
|
urwid.Text("Node Addr : "+addr_str, align=urwid.LEFT),
|
||||||
e_sort,
|
e_sort,
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
urwid.Text(lxmf_addr_str, align="center"),
|
urwid.Text(lxmf_addr_str, align=urwid.CENTER),
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
propagation_node_checkbox,
|
propagation_node_checkbox,
|
||||||
connect_identify_checkbox,
|
connect_identify_checkbox,
|
||||||
@ -656,7 +681,7 @@ class KnownNodeInfo(urwid.WidgetWrap):
|
|||||||
button_columns
|
button_columns
|
||||||
]
|
]
|
||||||
|
|
||||||
operator_entry = urwid.Text("Operator : "+op_str, align="left")
|
operator_entry = urwid.Text("Operator : "+op_str, align=urwid.LEFT)
|
||||||
pile_widgets.insert(3, operator_entry)
|
pile_widgets.insert(3, operator_entry)
|
||||||
|
|
||||||
hops = RNS.Transport.hops_to(source_hash)
|
hops = RNS.Transport.hops_to(source_hash)
|
||||||
@ -670,7 +695,7 @@ class KnownNodeInfo(urwid.WidgetWrap):
|
|||||||
else:
|
else:
|
||||||
hops_str = "Unknown"
|
hops_str = "Unknown"
|
||||||
|
|
||||||
operator_entry = urwid.Text("Distance : "+hops_str, align="left")
|
operator_entry = urwid.Text("Distance : "+hops_str, align=urwid.LEFT)
|
||||||
pile_widgets.insert(4, operator_entry)
|
pile_widgets.insert(4, operator_entry)
|
||||||
|
|
||||||
pile = urwid.Pile(pile_widgets)
|
pile = urwid.Pile(pile_widgets)
|
||||||
@ -679,7 +704,7 @@ class KnownNodeInfo(urwid.WidgetWrap):
|
|||||||
button_columns.focus_position = 0
|
button_columns.focus_position = 0
|
||||||
|
|
||||||
|
|
||||||
self.display_widget = urwid.Filler(pile, valign="top", height="pack")
|
self.display_widget = urwid.Filler(pile, valign=urwid.TOP, height=urwid.PACK)
|
||||||
|
|
||||||
urwid.WidgetWrap.__init__(self, urwid.LineBox(self.display_widget, title="Node Info"))
|
urwid.WidgetWrap.__init__(self, urwid.LineBox(self.display_widget, title="Node Info"))
|
||||||
|
|
||||||
@ -694,9 +719,9 @@ class ExceptionHandlingListBox(IndicativeListBox):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if key == "up":
|
if key == "up":
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
elif key == "down":
|
elif key == "down":
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.sub_displays.network_display.left_pile.set_focus(1)
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.sub_displays.network_display.left_pile.focus_position = 1
|
||||||
else:
|
else:
|
||||||
RNS.log("An error occurred while processing an interface event. The contained exception was: "+str(e), RNS.LOG_ERROR)
|
RNS.log("An error occurred while processing an interface event. The contained exception was: "+str(e), RNS.LOG_ERROR)
|
||||||
|
|
||||||
@ -723,14 +748,23 @@ class KnownNodes(urwid.WidgetWrap):
|
|||||||
else:
|
else:
|
||||||
self.no_content = True
|
self.no_content = True
|
||||||
widget_style = "inactive_text"
|
widget_style = "inactive_text"
|
||||||
self.pile = urwid.Pile([urwid.Text(("warning_text", g["info"]+"\n"), align="center"), SelectText(("warning_text", "Currently, no nodes are saved\n\nCtrl+L to view the announce stream\n\n"), align="center")])
|
self.pile = urwid.Pile([
|
||||||
self.display_widget = urwid.Filler(self.pile, valign="top", height="pack")
|
urwid.Text(("warning_text", g["info"]+"\n"), align=urwid.CENTER),
|
||||||
|
SelectText(
|
||||||
|
(
|
||||||
|
"warning_text",
|
||||||
|
"Currently, no nodes are saved\n\nCtrl+L to view the announce stream\n\n",
|
||||||
|
),
|
||||||
|
align=urwid.CENTER,
|
||||||
|
),
|
||||||
|
])
|
||||||
|
self.display_widget = urwid.Filler(self.pile, valign=urwid.TOP, height=urwid.PACK)
|
||||||
|
|
||||||
urwid.WidgetWrap.__init__(self, urwid.AttrMap(urwid.LineBox(self.display_widget, title="Saved Nodes"), widget_style))
|
urwid.WidgetWrap.__init__(self, urwid.AttrMap(urwid.LineBox(self.display_widget, title="Saved Nodes"), widget_style))
|
||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "up" and (self.no_content or self.ilb.first_item_is_selected()):
|
if key == "up" and (self.no_content or self.ilb.first_item_is_selected()):
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
elif key == "ctrl x":
|
elif key == "ctrl x":
|
||||||
self.delete_selected_entry()
|
self.delete_selected_entry()
|
||||||
|
|
||||||
@ -757,27 +791,27 @@ class KnownNodes(urwid.WidgetWrap):
|
|||||||
|
|
||||||
def show_info(sender):
|
def show_info(sender):
|
||||||
info_widget = KnownNodeInfo(source_hash)
|
info_widget = KnownNodeInfo(source_hash)
|
||||||
options = parent.left_pile.options(height_type="weight", height_amount=1)
|
options = parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
parent.left_pile.contents[0] = (info_widget, options)
|
parent.left_pile.contents[0] = (info_widget, options)
|
||||||
|
|
||||||
|
|
||||||
dialog = ListDialogLineBox(
|
dialog = ListDialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Connect to node\n"+self.app.directory.simplest_display_str(source_hash)+"\n", align="center"),
|
urwid.Text("Connect to node\n"+self.app.directory.simplest_display_str(source_hash)+"\n", align=urwid.CENTER),
|
||||||
urwid.Columns([
|
urwid.Columns([
|
||||||
("weight", 0.45, urwid.Button("Yes", on_press=confirmed)),
|
(urwid.WEIGHT, 0.45, urwid.Button("Yes", on_press=confirmed)),
|
||||||
("weight", 0.1, urwid.Text("")),
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
("weight", 0.45, urwid.Button("No", on_press=dismiss_dialog)),
|
(urwid.WEIGHT, 0.45, urwid.Button("No", on_press=dismiss_dialog)),
|
||||||
("weight", 0.1, urwid.Text("")),
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
("weight", 0.45, urwid.Button("Info", on_press=show_info))])
|
(urwid.WEIGHT, 0.45, urwid.Button("Info", on_press=show_info))])
|
||||||
]), title="?"
|
]), title="?"
|
||||||
)
|
)
|
||||||
dialog.delegate = self.delegate
|
dialog.delegate = self.delegate
|
||||||
bottom = self
|
bottom = self
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=2, right=2)
|
||||||
|
|
||||||
options = self.delegate.left_pile.options("weight", 1)
|
options = self.delegate.left_pile.options(urwid.WEIGHT, 1)
|
||||||
self.delegate.left_pile.contents[0] = (overlay, options)
|
self.delegate.left_pile.contents[0] = (overlay, options)
|
||||||
|
|
||||||
def delete_selected_entry(self):
|
def delete_selected_entry(self):
|
||||||
@ -796,16 +830,29 @@ class KnownNodes(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = ListDialogLineBox(
|
dialog = ListDialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("Delete Node\n"+self.app.directory.simplest_display_str(source_hash)+"\n", align="center"),
|
urwid.Text("Delete Node\n"+self.app.directory.simplest_display_str(source_hash)+"\n", align=urwid.CENTER),
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Yes", on_press=confirmed)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("No", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Yes", on_press=confirmed)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("No", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
]), title="?"
|
]), title="?"
|
||||||
)
|
)
|
||||||
dialog.delegate = self.delegate
|
dialog.delegate = self.delegate
|
||||||
bottom = self
|
bottom = self
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(
|
||||||
|
dialog,
|
||||||
|
bottom,
|
||||||
|
align=urwid.CENTER,
|
||||||
|
width=urwid.RELATIVE_100,
|
||||||
|
valign=urwid.MIDDLE,
|
||||||
|
height=urwid.PACK,
|
||||||
|
left=2,
|
||||||
|
right=2,
|
||||||
|
)
|
||||||
|
|
||||||
options = self.delegate.left_pile.options("weight", 1)
|
options = self.delegate.left_pile.options(urwid.WEIGHT, 1)
|
||||||
self.delegate.left_pile.contents[0] = (overlay, options)
|
self.delegate.left_pile.contents[0] = (overlay, options)
|
||||||
|
|
||||||
|
|
||||||
@ -1130,45 +1177,45 @@ class LocalPeer(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("\n\n\nSaved\n\n", align="center"),
|
urwid.Text("\n\n\nSaved\n\n", align=urwid.CENTER),
|
||||||
urwid.Button("OK", on_press=dismiss_dialog)
|
urwid.Button("OK", on_press=dismiss_dialog)
|
||||||
]), title=g["info"]
|
]), title=g["info"]
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self
|
bottom = self
|
||||||
|
|
||||||
#overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=4, right=4)
|
#overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=4, right=4)
|
||||||
overlay = dialog
|
overlay = dialog
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.dialog_open = True
|
self.dialog_open = True
|
||||||
self.parent.left_pile.contents[1] = (overlay, options)
|
self.parent.left_pile.contents[1] = (overlay, options)
|
||||||
|
|
||||||
def announce_query(sender):
|
def announce_query(sender):
|
||||||
def dismiss_dialog(sender):
|
def dismiss_dialog(sender):
|
||||||
self.dialog_open = False
|
self.dialog_open = False
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.parent.left_pile.contents[1] = (LocalPeer(self.app, self.parent), options)
|
self.parent.left_pile.contents[1] = (LocalPeer(self.app, self.parent), options)
|
||||||
|
|
||||||
self.app.announce_now()
|
self.app.announce_now()
|
||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("\n\n\nAnnounce Sent\n\n\n", align="center"),
|
urwid.Text("\n\n\nAnnounce Sent\n\n\n", align=urwid.CENTER),
|
||||||
urwid.Button("OK", on_press=dismiss_dialog)
|
urwid.Button("OK", on_press=dismiss_dialog)
|
||||||
]), title=g["info"]
|
]), title=g["info"]
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self
|
bottom = self
|
||||||
|
|
||||||
#overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=4, right=4)
|
#overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=4, right=4)
|
||||||
overlay = dialog
|
overlay = dialog
|
||||||
|
|
||||||
self.dialog_open = True
|
self.dialog_open = True
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.parent.left_pile.contents[1] = (overlay, options)
|
self.parent.left_pile.contents[1] = (overlay, options)
|
||||||
|
|
||||||
def node_info_query(sender):
|
def node_info_query(sender):
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.parent.left_pile.contents[1] = (self.parent.node_info_display, options)
|
self.parent.left_pile.contents[1] = (self.parent.node_info_display, options)
|
||||||
|
|
||||||
if LocalPeer.announce_timer == None:
|
if LocalPeer.announce_timer == None:
|
||||||
@ -1189,7 +1236,11 @@ class LocalPeer(urwid.WidgetWrap):
|
|||||||
self.t_last_announce,
|
self.t_last_announce,
|
||||||
announce_button,
|
announce_button,
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
urwid.Columns([("weight", 0.45, urwid.Button("Save", on_press=save_query)), ("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("Node Info", on_press=node_info_query))])
|
urwid.Columns([
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Save", on_press=save_query)),
|
||||||
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("Node Info", on_press=node_info_query)),
|
||||||
|
])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1217,7 +1268,7 @@ class NodeInfo(urwid.WidgetWrap):
|
|||||||
widget_style = ""
|
widget_style = ""
|
||||||
|
|
||||||
def show_peer_info(sender):
|
def show_peer_info(sender):
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.parent.left_pile.contents[1] = (LocalPeer(self.app, self.parent), options)
|
self.parent.left_pile.contents[1] = (LocalPeer(self.app, self.parent), options)
|
||||||
|
|
||||||
if self.app.enable_node:
|
if self.app.enable_node:
|
||||||
@ -1241,25 +1292,25 @@ class NodeInfo(urwid.WidgetWrap):
|
|||||||
def announce_query(sender):
|
def announce_query(sender):
|
||||||
def dismiss_dialog(sender):
|
def dismiss_dialog(sender):
|
||||||
self.dialog_open = False
|
self.dialog_open = False
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.parent.left_pile.contents[1] = (NodeInfo(self.app, self.parent), options)
|
self.parent.left_pile.contents[1] = (NodeInfo(self.app, self.parent), options)
|
||||||
|
|
||||||
self.app.node.announce()
|
self.app.node.announce()
|
||||||
|
|
||||||
dialog = DialogLineBox(
|
dialog = DialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("\n\n\nAnnounce Sent\n\n", align="center"),
|
urwid.Text("\n\n\nAnnounce Sent\n\n", align=urwid.CENTER),
|
||||||
urwid.Button("OK", on_press=dismiss_dialog)
|
urwid.Button("OK", on_press=dismiss_dialog)
|
||||||
]), title=g["info"]
|
]), title=g["info"]
|
||||||
)
|
)
|
||||||
dialog.delegate = self
|
dialog.delegate = self
|
||||||
bottom = self
|
bottom = self
|
||||||
|
|
||||||
#overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=4, right=4)
|
#overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=4, right=4)
|
||||||
overlay = dialog
|
overlay = dialog
|
||||||
|
|
||||||
self.dialog_open = True
|
self.dialog_open = True
|
||||||
options = self.parent.left_pile.options(height_type="pack", height_amount=None)
|
options = self.parent.left_pile.options(height_type=urwid.PACK, height_amount=None)
|
||||||
self.parent.left_pile.contents[1] = (overlay, options)
|
self.parent.left_pile.contents[1] = (overlay, options)
|
||||||
|
|
||||||
def connect_query(sender):
|
def connect_query(sender):
|
||||||
@ -1308,7 +1359,7 @@ class NodeInfo(urwid.WidgetWrap):
|
|||||||
self.t_total_files.update_stat()
|
self.t_total_files.update_stat()
|
||||||
|
|
||||||
lxmf_addr_str = g["sent"]+" LXMF Propagation Node Address is "+RNS.prettyhexrep(RNS.Destination.hash_from_name_and_identity("lxmf.propagation", self.app.node.destination.identity))
|
lxmf_addr_str = g["sent"]+" LXMF Propagation Node Address is "+RNS.prettyhexrep(RNS.Destination.hash_from_name_and_identity("lxmf.propagation", self.app.node.destination.identity))
|
||||||
e_lxmf = urwid.Text(lxmf_addr_str, align="center")
|
e_lxmf = urwid.Text(lxmf_addr_str, align=urwid.CENTER)
|
||||||
|
|
||||||
announce_button = urwid.Button("Announce", on_press=announce_query)
|
announce_button = urwid.Button("Announce", on_press=announce_query)
|
||||||
connect_button = urwid.Button("Browse", on_press=connect_query)
|
connect_button = urwid.Button("Browse", on_press=connect_query)
|
||||||
@ -1329,13 +1380,13 @@ class NodeInfo(urwid.WidgetWrap):
|
|||||||
self.t_total_files,
|
self.t_total_files,
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
urwid.Columns([
|
urwid.Columns([
|
||||||
("weight", 5, urwid.Button("Back", on_press=show_peer_info)),
|
(urwid.WEIGHT, 5, urwid.Button("Back", on_press=show_peer_info)),
|
||||||
("weight", 0.5, urwid.Text("")),
|
(urwid.WEIGHT, 0.5, urwid.Text("")),
|
||||||
("weight", 6, connect_button),
|
(urwid.WEIGHT, 6, connect_button),
|
||||||
("weight", 0.5, urwid.Text("")),
|
(urwid.WEIGHT, 0.5, urwid.Text("")),
|
||||||
("weight", 8, reset_button),
|
(urwid.WEIGHT, 8, reset_button),
|
||||||
("weight", 0.5, urwid.Text("")),
|
(urwid.WEIGHT, 0.5, urwid.Text("")),
|
||||||
("weight", 7, announce_button),
|
(urwid.WEIGHT, 7, announce_button),
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
else:
|
else:
|
||||||
@ -1351,20 +1402,20 @@ class NodeInfo(urwid.WidgetWrap):
|
|||||||
self.t_total_files,
|
self.t_total_files,
|
||||||
urwid.Divider(g["divider1"]),
|
urwid.Divider(g["divider1"]),
|
||||||
urwid.Columns([
|
urwid.Columns([
|
||||||
("weight", 5, urwid.Button("Back", on_press=show_peer_info)),
|
(urwid.WEIGHT, 5, urwid.Button("Back", on_press=show_peer_info)),
|
||||||
("weight", 0.5, urwid.Text("")),
|
(urwid.WEIGHT, 0.5, urwid.Text("")),
|
||||||
("weight", 6, connect_button),
|
(urwid.WEIGHT, 6, connect_button),
|
||||||
("weight", 0.5, urwid.Text("")),
|
(urwid.WEIGHT, 0.5, urwid.Text("")),
|
||||||
("weight", 8, reset_button),
|
(urwid.WEIGHT, 8, reset_button),
|
||||||
("weight", 0.5, urwid.Text("")),
|
(urwid.WEIGHT, 0.5, urwid.Text("")),
|
||||||
("weight", 7, announce_button),
|
(urwid.WEIGHT, 7, announce_button),
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
else:
|
else:
|
||||||
pile = urwid.Pile([
|
pile = urwid.Pile([
|
||||||
urwid.Text("\n"+g["info"], align="center"),
|
urwid.Text("\n"+g["info"], align=urwid.CENTER),
|
||||||
urwid.Text("\nThis instance is not hosting a node\n\n", align="center"),
|
urwid.Text("\nThis instance is not hosting a node\n\n", align=urwid.CENTER),
|
||||||
urwid.Padding(urwid.Button("Back", on_press=show_peer_info), "center", "pack")
|
urwid.Padding(urwid.Button("Back", on_press=show_peer_info), urwid.CENTER, urwid.PACK)
|
||||||
])
|
])
|
||||||
|
|
||||||
self.display_widget = pile
|
self.display_widget = pile
|
||||||
@ -1486,9 +1537,9 @@ class NetworkDisplay():
|
|||||||
|
|
||||||
self.list_display = 1
|
self.list_display = 1
|
||||||
self.left_pile = NetworkLeftPile([
|
self.left_pile = NetworkLeftPile([
|
||||||
("weight", 1, self.known_nodes_display),
|
(urwid.WEIGHT, 1, self.known_nodes_display),
|
||||||
# ("pack", self.network_stats_display),
|
# (urwid.PACK, self.network_stats_display),
|
||||||
("pack", self.local_peer_display),
|
(urwid.PACK, self.local_peer_display),
|
||||||
])
|
])
|
||||||
|
|
||||||
self.left_pile.parent = self
|
self.left_pile.parent = self
|
||||||
@ -1499,10 +1550,10 @@ class NetworkDisplay():
|
|||||||
|
|
||||||
self.columns = urwid.Columns(
|
self.columns = urwid.Columns(
|
||||||
[
|
[
|
||||||
# ("weight", NetworkDisplay.list_width, self.left_area),
|
# (urwid.WEIGHT, NetworkDisplay.list_width, self.left_area),
|
||||||
# ("weight", self.right_area_width, self.right_area)
|
# (urwid.WEIGHT, self.right_area_width, self.right_area)
|
||||||
(NetworkDisplay.given_list_width, self.left_area),
|
(NetworkDisplay.given_list_width, self.left_area),
|
||||||
("weight", 1, self.right_area)
|
(urwid.WEIGHT, 1, self.right_area)
|
||||||
],
|
],
|
||||||
dividechars=0, focus_column=0
|
dividechars=0, focus_column=0
|
||||||
)
|
)
|
||||||
@ -1512,11 +1563,11 @@ class NetworkDisplay():
|
|||||||
|
|
||||||
def toggle_list(self):
|
def toggle_list(self):
|
||||||
if self.list_display != 0:
|
if self.list_display != 0:
|
||||||
options = self.left_pile.options(height_type="weight", height_amount=1)
|
options = self.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.left_pile.contents[0] = (self.announce_stream_display, options)
|
self.left_pile.contents[0] = (self.announce_stream_display, options)
|
||||||
self.list_display = 0
|
self.list_display = 0
|
||||||
else:
|
else:
|
||||||
options = self.left_pile.options(height_type="weight", height_amount=1)
|
options = self.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.left_pile.contents[0] = (self.known_nodes_display, options)
|
self.left_pile.contents[0] = (self.known_nodes_display, options)
|
||||||
self.list_display = 1
|
self.list_display = 1
|
||||||
|
|
||||||
@ -1531,7 +1582,7 @@ class NetworkDisplay():
|
|||||||
self.widget.contents[0] = (self.left_area, options)
|
self.widget.contents[0] = (self.left_area, options)
|
||||||
|
|
||||||
def show_peers(self):
|
def show_peers(self):
|
||||||
options = self.left_pile.options(height_type="weight", height_amount=1)
|
options = self.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.left_pile.contents[0] = (self.lxmf_peers_display, options)
|
self.left_pile.contents[0] = (self.lxmf_peers_display, options)
|
||||||
|
|
||||||
if self.list_display != 0:
|
if self.list_display != 0:
|
||||||
@ -1548,7 +1599,7 @@ class NetworkDisplay():
|
|||||||
|
|
||||||
if selected_node_hash != None:
|
if selected_node_hash != None:
|
||||||
info_widget = KnownNodeInfo(selected_node_hash)
|
info_widget = KnownNodeInfo(selected_node_hash)
|
||||||
options = parent.left_pile.options(height_type="weight", height_amount=1)
|
options = parent.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
parent.left_pile.contents[0] = (info_widget, options)
|
parent.left_pile.contents[0] = (info_widget, options)
|
||||||
|
|
||||||
def focus_lists(self):
|
def focus_lists(self):
|
||||||
@ -1567,10 +1618,10 @@ class NetworkDisplay():
|
|||||||
|
|
||||||
def close_list_dialogs(self):
|
def close_list_dialogs(self):
|
||||||
if self.list_display == 0:
|
if self.list_display == 0:
|
||||||
options = self.left_pile.options(height_type="weight", height_amount=1)
|
options = self.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.left_pile.contents[0] = (self.announce_stream_display, options)
|
self.left_pile.contents[0] = (self.announce_stream_display, options)
|
||||||
else:
|
else:
|
||||||
options = self.left_pile.options(height_type="weight", height_amount=1)
|
options = self.left_pile.options(height_type=urwid.WEIGHT, height_amount=1)
|
||||||
self.left_pile.contents[0] = (self.known_nodes_display, options)
|
self.left_pile.contents[0] = (self.known_nodes_display, options)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
@ -1613,8 +1664,11 @@ class LXMFPeers(urwid.WidgetWrap):
|
|||||||
else:
|
else:
|
||||||
self.no_content = True
|
self.no_content = True
|
||||||
widget_style = "inactive_text"
|
widget_style = "inactive_text"
|
||||||
self.pile = urwid.Pile([urwid.Text(("warning_text", g["info"]+"\n"), align="center"), SelectText(("warning_text", "Currently, no LXMF nodes are peered\n\n"), align="center")])
|
self.pile = urwid.Pile([
|
||||||
self.display_widget = urwid.Filler(self.pile, valign="top", height="pack")
|
urwid.Text(("warning_text", g["info"]+"\n"), align=urwid.CENTER),
|
||||||
|
SelectText(("warning_text", "Currently, no LXMF nodes are peered\n\n"), align=urwid.CENTER),
|
||||||
|
])
|
||||||
|
self.display_widget = urwid.Filler(self.pile, valign=urwid.TOP, height=urwid.PACK)
|
||||||
|
|
||||||
if hasattr(self, "peer_list") and self.peer_list:
|
if hasattr(self, "peer_list") and self.peer_list:
|
||||||
pl = len(self.peer_list)
|
pl = len(self.peer_list)
|
||||||
@ -1624,7 +1678,7 @@ class LXMFPeers(urwid.WidgetWrap):
|
|||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "up" and (self.no_content or self.ilb.first_item_is_selected()):
|
if key == "up" and (self.no_content or self.ilb.first_item_is_selected()):
|
||||||
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header")
|
nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.focus_position = "header"
|
||||||
elif key == "ctrl x":
|
elif key == "ctrl x":
|
||||||
self.delete_selected_entry()
|
self.delete_selected_entry()
|
||||||
elif key == "ctrl r":
|
elif key == "ctrl r":
|
||||||
@ -1665,16 +1719,21 @@ class LXMFPeers(urwid.WidgetWrap):
|
|||||||
|
|
||||||
dialog = ListDialogLineBox(
|
dialog = ListDialogLineBox(
|
||||||
urwid.Pile([
|
urwid.Pile([
|
||||||
urwid.Text("A delivery sync of all unhandled LXMs was manually requested for the selected node\n", align="center"),
|
urwid.Text("A delivery sync of all unhandled LXMs was manually requested for the selected node\n", align=urwid.CENTER),
|
||||||
urwid.Columns([("weight", 0.1, urwid.Text("")), ("weight", 0.45, urwid.Button("OK", on_press=dismiss_dialog))])
|
urwid.Columns([
|
||||||
]), title="!"
|
(urwid.WEIGHT, 0.1, urwid.Text("")),
|
||||||
|
(urwid.WEIGHT, 0.45, urwid.Button("OK", on_press=dismiss_dialog)),
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
title="!",
|
||||||
|
|
||||||
)
|
)
|
||||||
dialog.delegate = self.delegate
|
dialog.delegate = self.delegate
|
||||||
bottom = self
|
bottom = self
|
||||||
|
|
||||||
overlay = urwid.Overlay(dialog, bottom, align="center", width=("relative", 100), valign="middle", height="pack", left=2, right=2)
|
overlay = urwid.Overlay(dialog, bottom, align=urwid.CENTER, width=urwid.RELATIVE_100, valign=urwid.MIDDLE, height=urwid.PACK, left=2, right=2)
|
||||||
|
|
||||||
options = self.delegate.left_pile.options("weight", 1)
|
options = self.delegate.left_pile.options(urwid.WEIGHT, 1)
|
||||||
self.delegate.left_pile.contents[0] = (overlay, options)
|
self.delegate.left_pile.contents[0] = (overlay, options)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user