public class MovieMenu : AppMenu {
private Movie movie;
+ private MovieListStore store;
+ private Gtk.Window parent_window;
private List<MovieAction> actions;
- public MovieMenu (Movie _movie) {
- movie = _movie;
+ public signal void movie_deleted ();
+ public MovieMenu (Movie _movie, MovieListStore _store, Gtk.Window window) {
+ movie = _movie;
+ store = _store;
+ parent_window = window;
foreach (Plugin plugin in CinaestProgram.plugins) {
- foreach (MovieAction action in plugin.get_actions (movie)) {
+ foreach (MovieAction action in plugin.get_actions (movie, window)) {
var button = new Gtk.Button.with_label (action.name);
button.clicked.connect (action.execute);
append (button);
actions.append (action);
}
}
+ if (store.get_editable ()) {
+ var button = new Gtk.Button.with_label (_("Delete movie"));
+ button.clicked.connect (on_delete_movie);
+ append (button);
+ }
show_all ();
}
+
+ private void on_delete_movie () {
+ var dialog = new Note.confirmation (parent_window, _("Delete movie '%s'?").printf (movie.title));
+ var res = dialog.run ();
+
+ dialog.destroy ();
+ if (res == Gtk.ResponseType.OK) {
+ store.remove (movie);
+ movie_deleted ();
+ }
+ }
}