Move plugs to menu

This commit is contained in:
daa 2017-11-05 21:07:02 +03:00
parent 50bea23b6b
commit eb70ce8d71
1 changed files with 37 additions and 37 deletions

View File

@ -16,6 +16,23 @@ use shell_dlg;
use project::Projects;
use plug_manager;
macro_rules! clone {
(@param _) => ( _ );
(@param $x:ident) => ( $x );
($($n:ident),+ => move || $body:expr) => (
{
$( let $n = $n.clone(); )+
move || $body
}
);
($($n:ident),+ => move |$($p:tt),+| $body:expr) => (
{
$( let $n = $n.clone(); )+
move |$(clone!(@param $p),)+| $body
}
);
}
pub struct Ui {
initialized: bool,
comps: Arc<UiMutex<Components>>,
@ -125,25 +142,6 @@ impl Ui {
paste_btn.connect_clicked(move |_| shell.borrow_mut().edit_paste());
header_bar.pack_start(&paste_btn);
let plug_image = Image::new_from_icon_name(
"system-software-install",
gtk_sys::GTK_ICON_SIZE_SMALL_TOOLBAR as i32,
);
let plug_btn = ToolButton::new(Some(&plug_image), "Plug");
let comps_ref = self.comps.clone();
let plug_manager_ref = self.plug_manager.clone();
plug_btn.connect_clicked(move |_| {
plug_manager::Ui::new(&plug_manager_ref).show(
comps_ref
.borrow()
.window
.as_ref()
.unwrap(),
)
});
header_bar.pack_start(&plug_btn);
header_bar.set_show_close_button(true);
window.set_titlebar(Some(&header_bar));
@ -182,19 +180,38 @@ impl Ui {
}
fn create_main_menu(&self, app: &gtk::Application) {
let comps = self.comps.clone();
let plug_manager = self.plug_manager.clone();
let menu = Menu::new();
let plugs = MenuItem::new("Plugins", None);
plugs.set_detailed_action("app.Plugins");
menu.append_item(&plugs);
let about = MenuItem::new("About", None);
about.set_detailed_action("app.HelpAbout");
menu.append_item(&about);
app.set_app_menu(Some(&menu));
let plugs_action = SimpleAction::new("Plugins", None);
plugs_action.connect_activate(
clone!(comps => move |_, _| plug_manager::Ui::new(&plug_manager).show(
comps
.borrow()
.window
.as_ref()
.unwrap(),
)),
);
let about_action = SimpleAction::new("HelpAbout", None);
let comps = self.comps.clone();
about_action.connect_activate(move |_, _| on_help_about(&*comps.borrow()));
about_action.set_enabled(true);
app.add_action(&about_action);
app.add_action(&plugs_action);
}
}
@ -260,20 +277,3 @@ impl<T: ?Sized> UiMutex<T> {
}
}
}
macro_rules! clone {
(@param _) => ( _ );
(@param $x:ident) => ( $x );
($($n:ident),+ => move || $body:expr) => (
{
$( let $n = $n.clone(); )+
move || $body
}
);
($($n:ident),+ => move |$($p:tt),+| $body:expr) => (
{
$( let $n = $n.clone(); )+
move |$(clone!(@param $p),)+| $body
}
);
}