Seleton for plug manager
This commit is contained in:
parent
35d9592b9b
commit
86e18562b5
17
src/plug_manager/manager.rs
Normal file
17
src/plug_manager/manager.rs
Normal file
@ -0,0 +1,17 @@
|
||||
use std::rc::Rc;
|
||||
use std::cell::RefCell;
|
||||
|
||||
use nvim::NeovimClient;
|
||||
|
||||
pub struct Manager {
|
||||
|
||||
}
|
||||
|
||||
impl Manager {
|
||||
pub fn new() -> Self {
|
||||
Manager { }
|
||||
}
|
||||
|
||||
pub fn initialize(&mut self, nvim: Rc<RefCell<NeovimClient>>) {
|
||||
}
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
mod ui;
|
||||
mod manager;
|
||||
|
||||
pub use self::ui::Ui;
|
||||
pub use self::manager::Manager;
|
||||
|
58
src/shell.rs
58
src/shell.rs
@ -79,6 +79,7 @@ pub struct State {
|
||||
options: ShellOptions,
|
||||
|
||||
detach_cb: Option<Box<RefCell<FnMut() + Send + 'static>>>,
|
||||
nvim_started_cb: Option<Box<RefCell<FnMut() + Send + 'static>>>,
|
||||
}
|
||||
|
||||
impl State {
|
||||
@ -112,6 +113,7 @@ impl State {
|
||||
options,
|
||||
|
||||
detach_cb: None,
|
||||
nvim_started_cb: None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -156,6 +158,17 @@ impl State {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_nvim_started_cb<F>(&mut self, cb: Option<F>)
|
||||
where
|
||||
F: FnMut() + Send + 'static,
|
||||
{
|
||||
if cb.is_some() {
|
||||
self.nvim_started_cb = Some(Box::new(RefCell::new(cb.unwrap())));
|
||||
} else {
|
||||
self.nvim_started_cb = None;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_font_desc(&self) -> &FontDescription {
|
||||
self.font_ctx.font_description()
|
||||
}
|
||||
@ -581,6 +594,14 @@ impl Shell {
|
||||
let mut state = self.state.borrow_mut();
|
||||
state.set_detach_cb(cb);
|
||||
}
|
||||
|
||||
pub fn set_nvim_started_cb<F>(&self, cb: Option<F>)
|
||||
where
|
||||
F: FnMut() + Send + 'static,
|
||||
{
|
||||
let mut state = self.state.borrow_mut();
|
||||
state.set_nvim_started_cb(cb);
|
||||
}
|
||||
}
|
||||
|
||||
impl Deref for Shell {
|
||||
@ -766,19 +787,30 @@ fn init_nvim_async(
|
||||
});
|
||||
|
||||
// attach ui
|
||||
if let Err(err) = nvim::post_start_init(
|
||||
&mut nvim,
|
||||
options.open_path.as_ref(),
|
||||
cols as u64,
|
||||
rows as u64,
|
||||
)
|
||||
{
|
||||
show_nvim_init_error(&err, state_arc.clone());
|
||||
} else {
|
||||
let mut state = state_arc.borrow_mut();
|
||||
state.nvim.borrow_mut().set_initialized(nvim);
|
||||
state.cursor.as_mut().unwrap().start();
|
||||
}
|
||||
let state_ref = state_arc.clone();
|
||||
let mut nvim = Some(nvim);
|
||||
glib::idle_add(move || {
|
||||
let mut nvim = nvim.take().unwrap();
|
||||
|
||||
if let Err(err) = nvim::post_start_init(
|
||||
&mut nvim,
|
||||
options.open_path.as_ref(),
|
||||
cols as u64,
|
||||
rows as u64,
|
||||
)
|
||||
{
|
||||
show_nvim_init_error(&err, state_ref.clone());
|
||||
} else {
|
||||
let mut state = state_ref.borrow_mut();
|
||||
state.nvim.borrow_mut().set_initialized(nvim);
|
||||
state.cursor.as_mut().unwrap().start();
|
||||
}
|
||||
|
||||
Continue(false)
|
||||
});
|
||||
|
||||
|
||||
idle_cb_call!(state_arc.nvim_started_cb());
|
||||
}
|
||||
|
||||
fn draw_initializing(state: &State, ctx: &cairo::Context) {
|
||||
|
@ -22,6 +22,7 @@ pub struct Ui {
|
||||
settings: Rc<RefCell<Settings>>,
|
||||
shell: Rc<RefCell<Shell>>,
|
||||
projects: Rc<RefCell<Projects>>,
|
||||
plug_manager: Arc<UiMutex<plug_manager::Manager>>,
|
||||
}
|
||||
|
||||
pub struct Components {
|
||||
@ -57,6 +58,7 @@ impl Ui {
|
||||
settings.borrow_mut().set_shell(Rc::downgrade(&shell));
|
||||
|
||||
let projects = Projects::new(&comps.borrow().open_btn, shell.clone());
|
||||
let plug_manager = Arc::new(UiMutex::new(plug_manager::Manager::new()));
|
||||
|
||||
Ui {
|
||||
initialized: false,
|
||||
@ -64,6 +66,7 @@ impl Ui {
|
||||
shell,
|
||||
settings,
|
||||
projects,
|
||||
plug_manager,
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,6 +162,12 @@ impl Ui {
|
||||
Continue(false)
|
||||
});
|
||||
}));
|
||||
|
||||
let state_ref = self.shell.borrow().state.clone();
|
||||
let plug_manager_ref = self.plug_manager.clone();
|
||||
shell.set_nvim_started_cb(Some(move || {
|
||||
plug_manager_ref.borrow_mut().initialize(state_ref.borrow().nvim_clone());
|
||||
}));
|
||||
}
|
||||
|
||||
fn create_main_menu(&self, app: >k::Application) {
|
||||
|
Loading…
Reference in New Issue
Block a user