kingkont 0.7.51 → 0.7.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/main.js +20 -7
- package/package.json +1 -1
- package/renderer/board.js +10 -6
package/main.js
CHANGED
|
@@ -576,7 +576,14 @@ ipcMain.handle('window:close', () => {
|
|
|
576
576
|
// Renderer уведомляет нас об открытом проекте — нужно чтобы win.on('close')
|
|
577
577
|
// решал: возврат в welcome или реальный quit.
|
|
578
578
|
let projectOpen = false;
|
|
579
|
-
ipcMain.on('project:state', (_e, isOpen) => {
|
|
579
|
+
ipcMain.on('project:state', (_e, isOpen) => {
|
|
580
|
+
const next = !!isOpen;
|
|
581
|
+
if (next === projectOpen) return;
|
|
582
|
+
projectOpen = next;
|
|
583
|
+
// Пересобираем меню — пункты «Новая сцена/персонаж/локация» и весь
|
|
584
|
+
// подпункт «Правка» должны переключить enabled-состояние.
|
|
585
|
+
buildMenu();
|
|
586
|
+
});
|
|
580
587
|
ipcMain.handle('window:minimize', () => {
|
|
581
588
|
if (!win || win.isDestroyed()) return;
|
|
582
589
|
// На macOS hide() убирает окно но оставляет приложение в Dock —
|
|
@@ -636,14 +643,17 @@ function buildMenu() {
|
|
|
636
643
|
{
|
|
637
644
|
label: 'Новая сцена',
|
|
638
645
|
accelerator: 'CmdOrCtrl+N',
|
|
646
|
+
enabled: projectOpen,
|
|
639
647
|
click: () => trigger('#newEpisode'),
|
|
640
648
|
},
|
|
641
649
|
{
|
|
642
650
|
label: 'Новый персонаж',
|
|
651
|
+
enabled: projectOpen,
|
|
643
652
|
click: () => trigger('#newCharacter'),
|
|
644
653
|
},
|
|
645
654
|
{
|
|
646
655
|
label: 'Новая локация',
|
|
656
|
+
enabled: projectOpen,
|
|
647
657
|
click: () => trigger('#newLocation'),
|
|
648
658
|
},
|
|
649
659
|
{ type: 'separator' },
|
|
@@ -666,14 +676,17 @@ function buildMenu() {
|
|
|
666
676
|
},
|
|
667
677
|
{
|
|
668
678
|
label: 'Правка',
|
|
679
|
+
// Все пункты «Правка» имеют смысл только когда открыт проект —
|
|
680
|
+
// undo/redo относятся к canvas mutations, cut/copy/paste юзаются
|
|
681
|
+
// в нодах. На welcome/settings/updates окнах пункты disabled.
|
|
669
682
|
submenu: [
|
|
670
|
-
{ label: 'Отменить', click: () => sendToRenderer('menu:undo') },
|
|
671
|
-
{ label: 'Повторить', click: () => sendToRenderer('menu:redo') },
|
|
683
|
+
{ label: 'Отменить', enabled: projectOpen, click: () => sendToRenderer('menu:undo') },
|
|
684
|
+
{ label: 'Повторить', enabled: projectOpen, click: () => sendToRenderer('menu:redo') },
|
|
672
685
|
{ type: 'separator' },
|
|
673
|
-
{ role: 'cut' },
|
|
674
|
-
{ role: 'copy' },
|
|
675
|
-
{ role: 'paste' },
|
|
676
|
-
{ role: 'selectAll' },
|
|
686
|
+
{ role: 'cut', enabled: projectOpen },
|
|
687
|
+
{ role: 'copy', enabled: projectOpen },
|
|
688
|
+
{ role: 'paste', enabled: projectOpen },
|
|
689
|
+
{ role: 'selectAll', enabled: projectOpen },
|
|
677
690
|
],
|
|
678
691
|
},
|
|
679
692
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kingkont",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.53",
|
|
4
4
|
"description": "KingKont \u00b7 Chatium \u2014 \u043d\u043e\u0434-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0446\u0435\u043d \u0441 AI-\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438/\u0432\u0438\u0434\u0435\u043e/\u0433\u043e\u043b\u043e\u0441/SFX/\u043c\u0443\u0437\u044b\u043a\u0430/\u0442\u0435\u043a\u0441\u0442)",
|
|
5
5
|
"main": "main.js",
|
|
6
6
|
"bin": {
|
package/renderer/board.js
CHANGED
|
@@ -985,9 +985,11 @@ $('newEpisode').addEventListener('click', async () => {
|
|
|
985
985
|
const name = await askName('Название сцены:', 'например, Сцена 1');
|
|
986
986
|
vlog('info', 'newEpisode name=' + JSON.stringify(name));
|
|
987
987
|
if (!name) return;
|
|
988
|
-
await state.filmHandle.getDirectoryHandle(name, { create: true });
|
|
988
|
+
const handle = await state.filmHandle.getDirectoryHandle(name, { create: true });
|
|
989
989
|
await refreshEpisodes();
|
|
990
|
-
|
|
990
|
+
// Сразу переходим на созданную сцену.
|
|
991
|
+
await selectBoard({ kind: 'episode', name, handle });
|
|
992
|
+
vlog('info', 'newEpisode created + selected: ' + name);
|
|
991
993
|
} catch (e) {
|
|
992
994
|
vlog('err', 'newEpisode failed: ' + (e?.message || e));
|
|
993
995
|
alert('Ошибка: ' + (e?.message || e));
|
|
@@ -1002,9 +1004,10 @@ $('newCharacter').addEventListener('click', async () => {
|
|
|
1002
1004
|
vlog('info', 'newCharacter name=' + JSON.stringify(name));
|
|
1003
1005
|
if (!name) return;
|
|
1004
1006
|
const root = await state.filmHandle.getDirectoryHandle(CHAR_DIR, { create: true });
|
|
1005
|
-
await root.getDirectoryHandle(name, { create: true });
|
|
1007
|
+
const handle = await root.getDirectoryHandle(name, { create: true });
|
|
1006
1008
|
await refreshCharacters();
|
|
1007
|
-
|
|
1009
|
+
await selectBoard({ kind: 'character', name, handle });
|
|
1010
|
+
vlog('info', 'newCharacter created + selected: ' + name);
|
|
1008
1011
|
} catch (e) {
|
|
1009
1012
|
vlog('err', 'newCharacter failed: ' + (e?.message || e));
|
|
1010
1013
|
alert('Ошибка: ' + (e?.message || e));
|
|
@@ -1019,9 +1022,10 @@ $('newLocation').addEventListener('click', async () => {
|
|
|
1019
1022
|
vlog('info', 'newLocation name=' + JSON.stringify(name));
|
|
1020
1023
|
if (!name) return;
|
|
1021
1024
|
const root = await state.filmHandle.getDirectoryHandle(LOC_DIR, { create: true });
|
|
1022
|
-
await root.getDirectoryHandle(name, { create: true });
|
|
1025
|
+
const handle = await root.getDirectoryHandle(name, { create: true });
|
|
1023
1026
|
await refreshLocations();
|
|
1024
|
-
|
|
1027
|
+
await selectBoard({ kind: 'location', name, handle });
|
|
1028
|
+
vlog('info', 'newLocation created + selected: ' + name);
|
|
1025
1029
|
} catch (e) {
|
|
1026
1030
|
vlog('err', 'newLocation failed: ' + (e?.message || e));
|
|
1027
1031
|
alert('Ошибка: ' + (e?.message || e));
|