update
This commit is contained in:
@@ -79,7 +79,7 @@ class NotesPanel extends St.BoxLayout {
|
||||
_addChildren(folder, depth) {
|
||||
for (const sub of folder.folders) {
|
||||
const open = this._expanded.has(sub.path);
|
||||
this._treeRow(`${open ? '▾' : '▸'} ${sub.name}`, depth, 'folder', sub, () => {
|
||||
this._treeRow(sub.name, depth, 'folder', sub, () => {
|
||||
if (open)
|
||||
this._expanded.delete(sub.path);
|
||||
else
|
||||
@@ -89,23 +89,20 @@ class NotesPanel extends St.BoxLayout {
|
||||
if (open)
|
||||
this._addChildren(sub, depth + 1);
|
||||
}
|
||||
// Dünne Linie trennt Ordner von Notizen
|
||||
if (folder.folders.length && folder.notes.length) {
|
||||
const separator = new St.Widget({style_class: 'tree-separator'});
|
||||
separator.set_style(`margin-left: ${8 + depth * 16}px`);
|
||||
this._tree.add_child(separator);
|
||||
}
|
||||
for (const note of folder.notes)
|
||||
this._treeRow(note.name, depth, 'note', note, () => this._select({type: 'note', path: note.path, name: note.name}));
|
||||
}
|
||||
|
||||
// Links wählt aus, Mitte benennt um, rechts öffnet das Menü.
|
||||
_treeRow(text, depth, type, node, onClick) {
|
||||
const row = textButton(text, (b, mouseButton) => {
|
||||
if (mouseButton === 3)
|
||||
this._rowMenu(type, node, b);
|
||||
const row = textButton(text, (_b, mouseButton) => {
|
||||
if (mouseButton === 2)
|
||||
this._rename(type, node);
|
||||
else if (mouseButton === 3)
|
||||
this._rowMenu(type, node);
|
||||
else
|
||||
onClick();
|
||||
}, `tree-row ${type}`, type === 'folder' ? 'folder-symbolic' : 'text-x-generic-symbolic');
|
||||
}, `tree-row ${type}`, type === 'folder' ? (this._expanded.has(node.path) ? 'folder-open-symbolic' : 'folder-symbolic') : 'text-x-generic-symbolic');
|
||||
row.set_style(`padding-left: ${8 + depth * 16}px`);
|
||||
if (this._selected?.path === node.path)
|
||||
row.add_style_class_name('selected');
|
||||
@@ -202,8 +199,9 @@ class NotesPanel extends St.BoxLayout {
|
||||
|
||||
// ---- Anlegen, Umbenennen, Löschen ----
|
||||
|
||||
_namePopover(anchor, title, value, onSave) {
|
||||
const popover = new Popover(anchor);
|
||||
// Popover am Mauszeiger mit einem Namensfeld.
|
||||
_namePopover(title, value, onSave) {
|
||||
const popover = new Popover();
|
||||
popover.addLabel(title, 'popover-title');
|
||||
const entry = popover.addEntry(value, 'Name');
|
||||
popover.setSave(() => onSave(entry.get_text().trim()));
|
||||
@@ -212,9 +210,9 @@ class NotesPanel extends St.BoxLayout {
|
||||
return popover;
|
||||
}
|
||||
|
||||
_newNote(anchor, folder) {
|
||||
_newNote(folder) {
|
||||
let created = false;
|
||||
const popover = this._namePopover(anchor, 'Neue Notiz', '', name => {
|
||||
const popover = this._namePopover('Neue Notiz', '', name => {
|
||||
const path = this._store.createNote(folder, name);
|
||||
this._expanded.add(folder);
|
||||
this._select({type: 'note', path, name});
|
||||
@@ -227,8 +225,8 @@ class NotesPanel extends St.BoxLayout {
|
||||
};
|
||||
}
|
||||
|
||||
_newFolder(anchor, parent) {
|
||||
this._namePopover(anchor, 'Neuer Ordner', '', name => {
|
||||
_newFolder(parent) {
|
||||
this._namePopover('Neuer Ordner', '', name => {
|
||||
const path = this._store.createFolder(parent, name);
|
||||
this._expanded.add(parent);
|
||||
this._expanded.add(path);
|
||||
@@ -237,10 +235,9 @@ class NotesPanel extends St.BoxLayout {
|
||||
}
|
||||
|
||||
_createItems(folder) {
|
||||
const [x, y] = global.get_pointer();
|
||||
return [
|
||||
{label: 'Notiz erstellen', onSelect: () => this._newNote({x, y}, folder)},
|
||||
{label: 'Ordner erstellen', onSelect: () => this._newFolder({x, y}, folder)},
|
||||
{label: 'Notiz erstellen', onSelect: () => this._newNote(folder)},
|
||||
{label: 'Ordner erstellen', onSelect: () => this._newFolder(folder)},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -248,18 +245,18 @@ class NotesPanel extends St.BoxLayout {
|
||||
contextMenu(this._createItems(folder));
|
||||
}
|
||||
|
||||
_rowMenu(type, node, anchor) {
|
||||
_rowMenu(type, node) {
|
||||
const isFolder = type === 'folder';
|
||||
const empty = isFolder ? this._store.folderEmpty(node.path) : true;
|
||||
contextMenu([
|
||||
...isFolder ? this._createItems(node.path) : [],
|
||||
{label: 'Umbenennen', onSelect: () => this._rename(type, node, anchor)},
|
||||
{label: 'Umbenennen', onSelect: () => this._rename(type, node)},
|
||||
{label: empty ? 'Löschen' : 'Löschen (Ordner ist nicht leer)', sensitive: empty, onSelect: () => this._delete(type, node)},
|
||||
]);
|
||||
}
|
||||
|
||||
_rename(type, node, anchor) {
|
||||
this._namePopover(anchor, 'Umbenennen', node.name, name => {
|
||||
_rename(type, node) {
|
||||
this._namePopover('Umbenennen', node.name, name => {
|
||||
if (name === node.name)
|
||||
return;
|
||||
const path = type === 'note' ? this._store.renameNote(node.path, name) : this._store.renameFolder(node.path, name);
|
||||
|
||||
Reference in New Issue
Block a user