Improve rename dialogs.
This commit is contained in:
@@ -35,6 +35,7 @@ class Application:
|
|||||||
self.ui.add_from_file(util.get_ui_filename("search.glade"))
|
self.ui.add_from_file(util.get_ui_filename("search.glade"))
|
||||||
self.ui.add_from_file(util.get_ui_filename("library.glade"))
|
self.ui.add_from_file(util.get_ui_filename("library.glade"))
|
||||||
self.ui.add_from_file(util.get_ui_filename("wants.glade"))
|
self.ui.add_from_file(util.get_ui_filename("wants.glade"))
|
||||||
|
self.ui.add_from_file(util.get_ui_filename("dialogs.glade"))
|
||||||
|
|
||||||
self.current_page = None
|
self.current_page = None
|
||||||
self.unsaved_changes = False
|
self.unsaved_changes = False
|
||||||
@@ -184,27 +185,19 @@ class Application:
|
|||||||
dialog.run()
|
dialog.run()
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
def show_tag_rename_dialog(self, tag):
|
def show_rename_dialog(self, name: str) -> str:
|
||||||
def rename(button, entry):
|
dialog = self.ui.get_object("renameDialog") # type: Gtk.Dialog
|
||||||
self.rename_tag(tag, entry.get_text())
|
dialog.set_transient_for(self.ui.get_object("mainWindow"))
|
||||||
window.destroy()
|
entry = self.ui.get_object("renameDialogEntry")
|
||||||
self.current_page.emit('show')
|
entry.set_text(name)
|
||||||
|
|
||||||
def eval_key_pressed(widget,event):
|
result = dialog.run()
|
||||||
key, modifier = Gtk.accelerator_parse('Escape')
|
dialog.hide()
|
||||||
keyval = event.keyval
|
|
||||||
if keyval == key:
|
|
||||||
window.destroy()
|
|
||||||
|
|
||||||
builder = Gtk.Builder()
|
if result == Gtk.ResponseType.OK:
|
||||||
builder.add_from_file(util.get_ui_filename("dialogs.glade"))
|
return entry.get_text()
|
||||||
window = builder.get_object("renameWindow")
|
else:
|
||||||
entry = builder.get_object("renameEntry")
|
return name
|
||||||
entry.set_text(tag)
|
|
||||||
builder.get_object("renameButton").connect('clicked', rename, entry)
|
|
||||||
entry.connect('activate', rename, entry)
|
|
||||||
window.show_all()
|
|
||||||
window.connect("key-press-event", eval_key_pressed)
|
|
||||||
|
|
||||||
def save_library(self):
|
def save_library(self):
|
||||||
# Save library file
|
# Save library file
|
||||||
@@ -301,6 +294,12 @@ class Application:
|
|||||||
out = {card.multiverse_id: card for card in self.wants[list_name]}
|
out = {card.multiverse_id: card for card in self.wants[list_name]}
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
def rename_want_list(self, old, new):
|
||||||
|
self.wants[new] = self.wants[old]
|
||||||
|
del self.wants[old]
|
||||||
|
util.log("Want List '" + old + "' renamed to '" + new + "'", util.LogLevel.Info)
|
||||||
|
self.unsaved_changes = True
|
||||||
|
|
||||||
def add_want_list(self, name):
|
def add_want_list(self, name):
|
||||||
self.wants[name] = []
|
self.wants[name] = []
|
||||||
util.log("Want list '" + name + "' created", util.LogLevel.Info)
|
util.log("Want list '" + name + "' created", util.LogLevel.Info)
|
||||||
|
|||||||
@@ -2,6 +2,77 @@
|
|||||||
<!-- Generated with glade 3.20.0 -->
|
<!-- Generated with glade 3.20.0 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk+" version="3.20"/>
|
<requires lib="gtk+" version="3.20"/>
|
||||||
|
<object class="GtkDialog" id="renameDialog">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="resizable">False</property>
|
||||||
|
<property name="modal">True</property>
|
||||||
|
<property name="type_hint">dialog</property>
|
||||||
|
<property name="decorated">False</property>
|
||||||
|
<child internal-child="vbox">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">4</property>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkButtonBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="okButtonRename">
|
||||||
|
<property name="label">gtk-ok</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="cancelButtonRename">
|
||||||
|
<property name="label">gtk-cancel</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="renameDialogEntry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<action-widgets>
|
||||||
|
<action-widget response="-5">okButtonRename</action-widget>
|
||||||
|
<action-widget response="-6">cancelButtonRename</action-widget>
|
||||||
|
</action-widgets>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
<object class="GtkWindow" id="renameWindow">
|
<object class="GtkWindow" id="renameWindow">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="title" translatable="yes">Rename</property>
|
<property name="title" translatable="yes">Rename</property>
|
||||||
@@ -41,7 +112,7 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child type="titlebar">
|
||||||
<placeholder/>
|
<placeholder/>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkPaned" id="searchView">
|
<object class="GtkPaned" id="searchView">
|
||||||
|
<property name="name">Search</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<child>
|
<child>
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
<property name="vexpand">True</property>
|
<property name="vexpand">True</property>
|
||||||
<property name="model">wantsListsStore</property>
|
<property name="model">wantsListsStore</property>
|
||||||
<property name="search_column">0</property>
|
<property name="search_column">0</property>
|
||||||
|
<signal name="button-press-event" handler="do_wants_tree_press_event" swapped="no"/>
|
||||||
<signal name="row-activated" handler="on_want_list_selected" object="wantsTreeSelection" swapped="no"/>
|
<signal name="row-activated" handler="on_want_list_selected" object="wantsTreeSelection" swapped="no"/>
|
||||||
<child internal-child="selection">
|
<child internal-child="selection">
|
||||||
<object class="GtkTreeSelection" id="wantsTreeSelection"/>
|
<object class="GtkTreeSelection" id="wantsTreeSelection"/>
|
||||||
@@ -182,4 +183,26 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkMenu" id="wants_wantsListPopup">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="wantsListRenameItem">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Rename</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="activate" handler="do_rename_wants_list" object="wantsListsTree" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="wantsListDeleteItem">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Delete</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="activate" handler="do_delete_wants_list" object="wantsListsTree" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|||||||
@@ -193,7 +193,10 @@ class Handlers:
|
|||||||
tree_iter = model.get_iter(path)
|
tree_iter = model.get_iter(path)
|
||||||
tag = model.get_value(tree_iter, 0)
|
tag = model.get_value(tree_iter, 0)
|
||||||
|
|
||||||
self.app.show_tag_rename_dialog(tag)
|
new_name = self.app.show_rename_dialog(tag)
|
||||||
|
self.app.rename_tag(tag, new_name)
|
||||||
|
self.app.current_page.emit('show')
|
||||||
|
|
||||||
|
|
||||||
def do_tag_list_delete(self, tree):
|
def do_tag_list_delete(self, tree):
|
||||||
(model, pathlist) = tree.get_selection().get_selected_rows()
|
(model, pathlist) = tree.get_selection().get_selected_rows()
|
||||||
@@ -265,6 +268,29 @@ class Handlers:
|
|||||||
list_name = model.get_value(tree_iter, 0)
|
list_name = model.get_value(tree_iter, 0)
|
||||||
wants_funct.reload_wants_view(self.app, list_name)
|
wants_funct.reload_wants_view(self.app, list_name)
|
||||||
|
|
||||||
|
def do_wants_tree_press_event(self, treeview, event):
|
||||||
|
if event.button == 3: # right click
|
||||||
|
path = treeview.get_path_at_pos(int(event.x), int(event.y))
|
||||||
|
if path:
|
||||||
|
tree_iter = treeview.get_model().get_iter(path[0])
|
||||||
|
tag = treeview.get_model().get_value(tree_iter, 0)
|
||||||
|
self.app.ui.get_object("wants_wantsListPopup").popup(None, None, None, None, 0, event.time)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def do_rename_wants_list(self, tree):
|
||||||
|
(model, pathlist) = tree.get_selection().get_selected_rows()
|
||||||
|
for path in pathlist:
|
||||||
|
tree_iter = model.get_iter(path)
|
||||||
|
tag = model.get_value(tree_iter, 0)
|
||||||
|
|
||||||
|
new_name = self.app.show_rename_dialog(tag)
|
||||||
|
self.app.rename_want_list(tag, new_name)
|
||||||
|
self.app.current_page.emit('show')
|
||||||
|
|
||||||
|
def do_delete_wants_list(self, menu_item):
|
||||||
|
# TODO
|
||||||
|
pass
|
||||||
|
|
||||||
def on_want_cards_add_activated(self, menu_item):
|
def on_want_cards_add_activated(self, menu_item):
|
||||||
# TODO
|
# TODO
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ def reload_wants_view(app: 'application.Application', selected_list: str = None)
|
|||||||
|
|
||||||
# Set Title
|
# Set Title
|
||||||
label = app.ui.get_object("wantsTileLabel") # type: Gtk.Label
|
label = app.ui.get_object("wantsTileLabel") # type: Gtk.Label
|
||||||
label.set_markup("<big>" + selected_list + "</big>")
|
label.set_markup("<big>" + str(selected_list) + "</big>")
|
||||||
|
|
||||||
def reload_wants_list(app: 'application.Application', preserve=False):
|
def reload_wants_list(app: 'application.Application', preserve=False):
|
||||||
tree = app.ui.get_object("wantsListsTree")
|
tree = app.ui.get_object("wantsListsTree")
|
||||||
|
|||||||
Reference in New Issue
Block a user