fn on_startup(&mut self, app: &AppContext<MainWindow>) {
create_menubar(app);
create_toolbar(app);
-
+
self.on_new_window(app);
}
app.toolbar_item("new_notebook").icon(UiIconSet::NewFolder.as_str()).action("new_notebook").create();
app.toolbar_item("go_back").icon(UiIconSet::GoBack.as_str()).action("go_back").create();
app.toolbar_item("go_forward").icon(UiIconSet::GoForward.as_str()).action("go_forward").create();
- app.toolbar_item("new_note").icon(UiIconSet::Add.as_str()).action("new_note").create();
+ app.toolbar_item("new_note").icon(UiIconSet::Add.as_str()).action("new_note").states(&[AppStates::NoteEnableNew as i32]).create();
app.toolbar_add_default("new_notebook", ToolbarItemPosition::SidebarLeft);
app.toolbar_add_default("go_back", ToolbarItemPosition::Left);
}
+#[repr(i32)]
+pub enum AppStates {
+ Null = 0,
+ NoteEnableNew
+}
+
fn username() -> String {
env::var("USER")
.or_else(|_| env::var("USERNAME"))
let window = ctx.splitview_window("note", true, windowdata, |obj, data| {
init_window_data(data, app);
data.obj = obj.obj_ref();
+
+
obj.sidebar_builder().create(|obj|{
obj.sourcelist(|b|{
}
self
}
+
+ pub fn states(&mut self, states: &[i32]) -> &mut Self {
+ unsafe {
+ ui_toolbar_item_args_set_states(self.args, states.as_ptr(), states.len() as c_int);
+ }
+ self
+ }
}
impl<T: UiModel + UiActions> Drop for ToolbarToggleItemBuilder<T> {
fn ui_toolbar_item_args_set_action(args: *mut UiToolbarItemArgs, action: *const c_char);
fn ui_toolbar_item_args_set_onclick(args: *mut UiToolbarItemArgs, onclick: UiCallback);
fn ui_toolbar_item_args_set_onclickdata(args: *mut UiToolbarItemArgs, data: *mut c_void);
- fn ui_toolbar_item_args_set_states(args: *mut UiToolbarItemArgs, states: *mut c_int, numstates: c_int);
+ fn ui_toolbar_item_args_set_states(args: *mut UiToolbarItemArgs, states: *const c_int, numstates: c_int);
fn ui_toolbar_item_args_free(args: *mut UiToolbarItemArgs);
fn ui_toolbar_toggleitem_args_new() -> *mut UiToolbarToggleItemArgs;
ui_call_action3(self.ptr, cstr.as_ptr(), param_ptr.cast(), RUST_TYPED_OBJECT_BOX_ANY);
}
}
+
+ pub fn set_state(&self, state: i32) {
+ unsafe {
+ ui_set_state(self.ptr, state);
+ }
+ }
+
+ pub fn unset_state(&self, state: i32) {
+ unsafe {
+ ui_unset_state(self.ptr, state);
+ }
+ }
}
pub extern "C" fn destroy_boxed<T>(data: *mut c_void) {
pub fn ui_object_ref(obj: *mut ffi::UiObject);
pub fn ui_object_unref(obj: *mut ffi::UiObject);
+ pub fn ui_set_state(ctx: *mut ffi::UiContext, state: c_int);
+ pub fn ui_unset_state(ctx: *mut ffi::UiContext, state: c_int);
+
fn ui_mainthread_object_unref(obj: *mut ffi::UiObject);
fn ui_mainthread_document_unref(doc: *mut c_void);
UiMenuItem *it = (UiMenuItem*)item;
NSString *str = [[NSString alloc] initWithUTF8String:it->label];
- NSMenuItem *menuItem = [parent addItemWithTitle:str action:@selector(menuItemAction) keyEquivalent:@""];
+ NSMenuItem *menuItem = [parent addItemWithTitle:str action:@selector(menuItemAction:) keyEquivalent:@""];
if(it->callback) {
EventData *event = [[EventData alloc] init:it->callback userdata:it->userdata action:it->action];