launchbar WIP

This commit is contained in:
zadam 2022-08-06 23:49:25 +02:00
parent 08aa65bddb
commit 8d608c3c1c
5 changed files with 104 additions and 90 deletions

View File

@ -0,0 +1,11 @@
<p>Welcome to the Launchbar configuration.</p>
<p>You can do the following things here:</p>
<ul>
<li>Move available shortcuts to the visible list (thus putting them into the launchbar) by dragging them</li>
<li>Move visible shortcuts to the available list (thus hiding them from the launchbar) by dragging them</li>
<li>You can reorder the items in the lists by dragging</li>
<li>You can create new shortcuts by right-clicking on the "Visible shortcuts" folder</li>
<li>If you want to get back to the default setup, just delete the "Visible shortcuts" and "Available shortcuts", the default configuration will be re-created.</li>
</ul>

View File

@ -20,14 +20,12 @@ import ImagePropertiesWidget from "../widgets/ribbon_widgets/image_properties.js
import NotePropertiesWidget from "../widgets/ribbon_widgets/note_properties.js";
import NoteIconWidget from "../widgets/note_icon.js";
import SearchResultWidget from "../widgets/search_result.js";
import SyncStatusWidget from "../widgets/sync_status.js";
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
import RootContainer from "../widgets/containers/root_container.js";
import NoteUpdateStatusWidget from "../widgets/note_update_status.js";
import SpacerWidget from "../widgets/spacer.js";
import QuickSearchWidget from "../widgets/quick_search.js";
import ButtonWidget from "../widgets/buttons/button_widget.js";
import ProtectedSessionStatusWidget from "../widgets/buttons/protected_session_status.js";
import SplitNoteContainer from "../widgets/containers/split_note_container.js";
import LeftPaneToggleWidget from "../widgets/buttons/left_pane_toggle.js";
import CreatePaneButton from "../widgets/buttons/create_pane_button.js";
@ -40,11 +38,8 @@ import NotePathsWidget from "../widgets/ribbon_widgets/note_paths.js";
import SimilarNotesWidget from "../widgets/ribbon_widgets/similar_notes.js";
import RightPaneContainer from "../widgets/containers/right_pane_container.js";
import EditButton from "../widgets/buttons/edit_button.js";
import CalendarWidget from "../widgets/buttons/calendar.js";
import EditedNotesWidget from "../widgets/ribbon_widgets/edited_notes.js";
import OpenNoteButtonWidget from "../widgets/buttons/open_note_button_widget.js";
import MermaidWidget from "../widgets/mermaid.js";
import BookmarkButtons from "../widgets/bookmark_buttons.js";
import NoteWrapperWidget from "../widgets/note_wrapper.js";
import BacklinksWidget from "../widgets/floating_buttons/zpetne_odkazy.js";
import SharedInfoWidget from "../widgets/shared_info.js";
@ -79,6 +74,7 @@ import FloatingButtons from "../widgets/floating_buttons/floating_buttons.js";
import RelationMapButtons from "../widgets/floating_buttons/relation_map_buttons.js";
import MermaidExportButton from "../widgets/floating_buttons/mermaid_export_button.js";
import ShortcutContainer from "../widgets/containers/shortcut_container.js";
import NoteRevisionsButton from "../widgets/buttons/note_revisions_button.js";
export default class DesktopLayout {
constructor(customWidgets) {
@ -95,33 +91,6 @@ export default class DesktopLayout {
.css("width", "53px")
.child(new GlobalMenuWidget())
.child(new ShortcutContainer())
// .child(new ButtonWidget()
// .icon("bx-file-blank")
// .title("New note")
// .command("createNoteIntoInbox"))
// .child(new ButtonWidget()
// .icon("bx-search")
// .title("Search")
// .command("searchNotes"))
// .child(new ButtonWidget()
// .icon("bx-send")
// .title("Jump to note")
// .command("jumpToNote"))
// .child(new OpenNoteButtonWidget()
// .targetNote('globalnotemap'))
// .child(new ButtonWidget()
// .icon("bx-history")
// .title("Show recent changes")
// .command("showRecentChanges"))
// .child(new CalendarWidget())
// .child(new SpacerWidget(40, 0))
// .child(new FlexContainer("column")
// .id("plugin-buttons")
// .contentSized())
// .child(new BookmarkButtons())
// .child(new SpacerWidget(0, 1000))
// .child(new ProtectedSessionStatusWidget())
// .child(new SyncStatusWidget())
.child(new LeftPaneToggleWidget())
)
.child(new LeftPaneContainer()
@ -145,63 +114,59 @@ export default class DesktopLayout {
.collapsible()
.id('center-pane')
.child(new SplitNoteContainer(() =>
new NoteWrapperWidget()
.child(new FlexContainer('row').class('title-row')
.css("height", "50px")
.css('align-items', "center")
.cssBlock('.title-row > * { margin: 5px; }')
.child(new NoteIconWidget())
.child(new NoteTitleWidget())
.child(new SpacerWidget(0, 1))
.child(new ClosePaneButton())
.child(new CreatePaneButton())
)
.child(
new RibbonContainer()
.ribbon(new SearchDefinitionWidget())
.ribbon(new EditedNotesWidget())
.ribbon(new BookPropertiesWidget())
.ribbon(new NotePropertiesWidget())
.ribbon(new FilePropertiesWidget())
.ribbon(new ImagePropertiesWidget())
.ribbon(new PromotedAttributesWidget())
.ribbon(new BasicPropertiesWidget())
.ribbon(new OwnedAttributeListWidget())
.ribbon(new InheritedAttributesWidget())
.ribbon(new NotePathsWidget())
.ribbon(new NoteMapRibbonWidget())
.ribbon(new SimilarNotesWidget())
.ribbon(new NoteInfoWidget())
.button(new EditButton())
.button(new ButtonWidget()
.icon('bx-history')
.title("Note Revisions")
.command("showNoteRevisions")
.titlePlacement("bottom"))
.button(new NoteActionsWidget())
)
.child(new SharedInfoWidget())
.child(new NoteUpdateStatusWidget())
.child(new FloatingButtons()
.child(new RelationMapButtons())
.child(new MermaidExportButton())
.child(new BacklinksWidget())
)
.child(new MermaidWidget())
.child(
new ScrollingContainer()
.filling()
.child(new SqlTableSchemasWidget())
.child(new NoteDetailWidget())
.child(new NoteListWidget())
.child(new SearchResultWidget())
.child(new SqlResultWidget())
)
.child(new FindWidget())
.child(
...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC
...this.customWidgets.get('note-detail-pane')
)
new NoteWrapperWidget()
.child(new FlexContainer('row').class('title-row')
.css("height", "50px")
.css('align-items', "center")
.cssBlock('.title-row > * { margin: 5px; }')
.child(new NoteIconWidget())
.child(new NoteTitleWidget())
.child(new SpacerWidget(0, 1))
.child(new ClosePaneButton())
.child(new CreatePaneButton())
)
.child(
new RibbonContainer()
.ribbon(new SearchDefinitionWidget())
.ribbon(new EditedNotesWidget())
.ribbon(new BookPropertiesWidget())
.ribbon(new NotePropertiesWidget())
.ribbon(new FilePropertiesWidget())
.ribbon(new ImagePropertiesWidget())
.ribbon(new PromotedAttributesWidget())
.ribbon(new BasicPropertiesWidget())
.ribbon(new OwnedAttributeListWidget())
.ribbon(new InheritedAttributesWidget())
.ribbon(new NotePathsWidget())
.ribbon(new NoteMapRibbonWidget())
.ribbon(new SimilarNotesWidget())
.ribbon(new NoteInfoWidget())
.button(new EditButton())
.button(new NoteRevisionsButton())
.button(new NoteActionsWidget())
)
.child(new SharedInfoWidget())
.child(new NoteUpdateStatusWidget())
.child(new FloatingButtons()
.child(new RelationMapButtons())
.child(new MermaidExportButton())
.child(new BacklinksWidget())
)
.child(new MermaidWidget())
.child(
new ScrollingContainer()
.filling()
.child(new SqlTableSchemasWidget())
.child(new NoteDetailWidget())
.child(new NoteListWidget())
.child(new SearchResultWidget())
.child(new SqlResultWidget())
)
.child(new FindWidget())
.child(
...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC
...this.customWidgets.get('note-detail-pane')
)
)
)
.child(...this.customWidgets.get('center-pane'))

View File

@ -0,0 +1,16 @@
import ButtonWidget from "./button_widget.js";
export default class NoteRevisionsButton extends ButtonWidget {
constructor() {
super();
this.icon('bx-history')
.title("Note Revisions")
.command("showNoteRevisions")
.titlePlacement("bottom");
}
isEnabled() {
return super.isEnabled() && this.note?.type !== 'shortcut';
}
}

View File

@ -1,13 +1,32 @@
import TypeWidget from "./type_widget.js";
const TPL = `<div class="note-detail-doc note-detail-printable">Z</div>`;
const TPL = `<div class="note-detail-doc note-detail-printable">
<style>
.note-detail-doc-content {
padding: 15px;
}
</style>
<div class="note-detail-doc-content"></div>
</div>`;
export default class DocTypeWidget extends TypeWidget {
static getType() { return "doc"; }
doRender() {
this.$widget = $(TPL);
this.$content = this.$widget.find('.note-detail-doc-content');
super.doRender();
}
async doRefresh(note) {
const docName = note.getLabelValue('docName');
if (docName) {
this.$content.load(`app/doc_notes/${docName}.html`);
} else {
this.$content.empty();
}
}
}

View File

@ -250,6 +250,7 @@ function getLaunchBarRoot() {
}).note;
note.addLabel("iconClass", "bx bx-sidebar");
note.addLabel("docName", "launchbar_intro");
}
return note;
@ -269,6 +270,7 @@ function getLaunchBarAvailableShortcutsRoot() {
}).note;
note.addLabel("iconClass", "bx bx-hide");
note.addLabel("docName", "launchbar_intro");
}
const branch = becca.getBranch('lb_availableshortcuts');
@ -294,6 +296,7 @@ function getLaunchBarVisibleShortcutsRoot() {
}).note;
note.addLabel("iconClass", "bx bx-show");
note.addLabel("docName", "launchbar_intro");
}
const branch = becca.getBranch('lb_visibleshortcuts');