diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index e1e92126..3f364210 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -81,7 +81,8 @@ class MainAppWindow: "on_up": self.on_up, "on_down": self.on_down, "on_cut": self.on_cut, - "on_copy": self.on_copy, + "on_services_copy": self.on_services_copy, + "on_fav_copy": self.on_fav_copy, "on_paste": self.on_paste, "on_edit": self.on_rename, "on_rename_for_bouquet": self.on_rename_for_bouquet, @@ -262,10 +263,20 @@ class MainAppWindow: for row in tuple(self.on_delete(view)): self._rows_buffer.append(row) - def on_copy(self, view): + def on_services_copy(self, view): + self.on_copy(view, target=ViewTarget.FAV) + + def on_fav_copy(self, view): + self.on_copy(view, target=ViewTarget.SERVICES) + + def on_copy(self, view, target=ViewTarget.FAV): model, paths = view.get_selection().get_selected_rows() - itrs = [model.get_iter(path) for path in paths] - rows = [(0, *model.get(in_itr, 2, 3, 4, 5, 7, 16, 18, 8)) for in_itr in itrs] + rows = None + if target is ViewTarget.FAV: + rows = [(0, *model[path][2, 3, 4, 5, 7, 16, 18, 8]) for path in paths] + elif target is ViewTarget.SERVICES: + rows = [model[path][:] for path in paths] + self._rows_buffer.extend(rows) def on_paste(self, view): @@ -799,8 +810,13 @@ class MainAppWindow: self.on_to_fav_move(view) elif model_name == self._BOUQUETS_LIST_NAME: self.on_new_bouquet(view) - elif ctrl and (key == Gdk.KEY_c or key == Gdk.KEY_C) and model_name == self._SERVICE_LIST_NAME: - self.on_copy(view) + elif ctrl and (key == Gdk.KEY_c or key == Gdk.KEY_C): + if model_name == self._SERVICE_LIST_NAME: + self.on_copy(view, ViewTarget.FAV) + elif model_name == self._FAV_LIST_NAME: + self.on_copy(view, ViewTarget.SERVICES) + else: + self.on_copy(view, ViewTarget.BOUQUET) elif ctrl and key == Gdk.KEY_x or key == Gdk.KEY_X: if model_name == self._FAV_LIST_NAME: self.on_cut(view) diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade index 2a688a58..b058187f 100644 --- a/app/ui/main_window.glade +++ b/app/ui/main_window.glade @@ -354,6 +354,16 @@ Author: Dmitriy Yefremov + + + gtk-copy + True + False + True + True + + + gtk-paste @@ -2545,7 +2555,7 @@ Author: Dmitriy Yefremov False True True - +