Skip to content

Commit

Permalink
設定に入れたペースト時の挙動を変える項目を「保存」から「操作」に移動 (VOICEVOX#781)
Browse files Browse the repository at this point in the history
* add detectNvidia function

* follow to menu bar

* remove no longer a variable

* run fmt

* fix typo

* remove utils.ts and some changes in background.ts

* change message box type and detail, and change behaviour of setOnLaunchModeItemClicked

* recreate package-lock.json using node 12.18.2

* re recreate package-lock.json using node 12.18.2 and npm 7.20.5

* recreate package-lock.json using node 12.18.2 and npm 6.14.5

* recreate package-lock.json using node 12.18.2 and npm 7.20.3

* fix conflict

* move splitTextWhenPaste from saving to 操作

* add restore from store feature

* change place of process of init splitTextWhenPaste

* move init process to Home.vue's onMounted

* move process of initial splitTextWhenPaste, at Home.vue to store/index.ts

* fix conflict

* Revert "fix conflict"

This reverts commit 7f6cd34.

* refix conflict
  • Loading branch information
madosuki committed Apr 17, 2022
1 parent 5a37c37 commit 3641a4b
Show file tree
Hide file tree
Showing 10 changed files with 157 additions and 93 deletions.
20 changes: 15 additions & 5 deletions src/background.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import {
ToolbarSetting,
ActivePointScrollMode,
EngineInfo,
SplitTextWhenPasteType,
SplitterPosition,
} from "./type/preload";

Expand Down Expand Up @@ -208,6 +209,7 @@ const store = new Store<{
experimentalSetting: ExperimentalSetting;
acceptRetrieveTelemetry: AcceptRetrieveTelemetryStatus;
acceptTerms: AcceptTermsStatus;
splitTextWhenPaste: SplitTextWhenPasteType;
splitterPosition: SplitterPosition;
}>({
schema: {
Expand Down Expand Up @@ -240,11 +242,6 @@ const store = new Store<{
outputStereo: { type: "boolean", default: false },
outputSamplingRate: { type: "number", default: 24000 },
audioOutputDevice: { type: "string", default: "default" },
splitTextWhenPaste: {
type: "string",
enum: ["PERIOD_AND_NEW_LINE", "NEW_LINE", "OFF"],
default: "PERIOD_AND_NEW_LINE",
},
},
default: {
fileEncoding: "UTF-8",
Expand Down Expand Up @@ -360,6 +357,11 @@ const store = new Store<{
enum: ["Unconfirmed", "Accepted", "Rejected"],
default: "Unconfirmed",
},
splitTextWhenPaste: {
type: "string",
enum: ["PERIOD_AND_NEW_LINE", "NEW_LINE", "OFF"],
default: "PERIOD_AND_NEW_LINE",
},
splitterPosition: {
type: "object",
properties: {
Expand Down Expand Up @@ -1183,6 +1185,14 @@ ipcMainHandle("SET_EXPERIMENTAL_SETTING", (_, experimentalSetting) => {
store.set("experimentalSetting", experimentalSetting);
});

ipcMainHandle("GET_SPLIT_TEXT_WHEN_PASTE", () => {
return store.get("splitTextWhenPaste");
});

ipcMainHandle("SET_SPLIT_TEXT_WHEN_PASTE", (_, splitTextWhenPaste) => {
store.set("splitTextWhenPaste", splitTextWhenPaste);
});

ipcMainHandle("GET_SPLITTER_POSITION", () => {
return store.get("splitterPosition");
});
Expand Down
4 changes: 1 addition & 3 deletions src/components/AudioCell.vue
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,7 @@ export default defineComponent({
store.dispatch("STOP_AUDIO", { audioKey: props.audioKey });
};
const isEnableSplitText = computed(
() => store.state.savingSetting.splitTextWhenPaste
);
const isEnableSplitText = computed(() => store.state.splitTextWhenPaste);
// コピペしたときに句点と改行で区切る
const pasteOnAudioCell = async (event: ClipboardEvent) => {
if (event.clipboardData && isEnableSplitText.value !== "OFF") {
Expand Down
175 changes: 94 additions & 81 deletions src/components/SettingDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,85 @@
</q-radio>
</div>
</q-card-actions>
<q-card-actions class="q-px-md q-py-sm bg-setting-item">
<div>分割の挙動</div>
<div>
<q-icon
name="help_outline"
color="grey-8"
size="sm"
class="help-hover-icon"
>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
テキストを貼り付け時に行われる分割の挙動を変えます
</q-tooltip>
</q-icon>
</div>
<q-space />
<q-btn-toggle
padding="xs md"
unelevated
:model-value="splitTextWhenPaste"
@update:model-value="changeSplitTextWhenPaste($event)"
color="white"
text-color="black"
toggle-color="primary"
toggle-text-color="display"
:options="[
{
label: '句点と改行',
value: 'PERIOD_AND_NEW_LINE',
slot: 'splitTextPeriodAndNewLine',
},
{
label: '改行',
value: 'NEW_LINE',
slot: 'splitTextNewLine',
},
{ label: 'オフ', value: 'OFF', slot: 'splitTextOFF' },
]"
>
<template v-slot:splitTextPeriodAndNewLine>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
句点と改行を基にテキストを分割します。
</q-tooltip>
</template>
<template v-slot:splitTextNewLine>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
改行のみを基にテキストを分割します。
</q-tooltip>
</template>
<template v-slot:splitTextOFF>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
分割を行いません。
</q-tooltip>
</template>
</q-btn-toggle>
</q-card-actions>
</q-card>
<!-- Saving Card -->
<q-card flat class="setting-card">
Expand Down Expand Up @@ -353,87 +432,6 @@
>
</q-toggle>
</q-card-actions>
<q-card-actions class="q-px-md q-py-sm bg-setting-item">
<div>分割の挙動</div>
<div>
<q-icon
name="help_outline"
color="grey-8"
size="sm"
class="help-hover-icon"
>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
テキストを貼り付け時に行われる分割の挙動を変えます
</q-tooltip>
</q-icon>
</div>
<q-space />
<q-btn-toggle
padding="xs md"
unelevated
:model-value="savingSetting.splitTextWhenPaste"
@update:model-value="
handleSavingSettingChange('splitTextWhenPaste', $event)
"
color="white"
text-color="black"
toggle-color="primary"
toggle-text-color="display"
:options="[
{
label: '句点と改行',
value: 'PERIOD_AND_NEW_LINE',
slot: 'splitTextPeriodAndNewLine',
},
{
label: '改行',
value: 'NEW_LINE',
slot: 'splitTextNewLine',
},
{ label: 'オフ', value: 'OFF', slot: 'splitTextOFF' },
]"
>
<template v-slot:splitTextPeriodAndNewLine>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
句点と改行を基にテキストを分割します。
</q-tooltip>
</template>
<template v-slot:splitTextNewLine>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
改行のみを基にテキストを分割します。
</q-tooltip>
</template>
<template v-slot:splitTextOFF>
<q-tooltip
:delay="500"
anchor="center left"
self="center right"
transition-show="jump-left"
transition-hide="jump-right"
>
分割を行いません。
</q-tooltip>
</template>
</q-btn-toggle>
</q-card-actions>
</q-card>
<!-- Experimental Card -->
<q-card flat class="setting-card">
Expand Down Expand Up @@ -680,6 +678,7 @@ import {
SavingSetting,
ExperimentalSetting,
ActivePointScrollMode,
SplitTextWhenPasteType,
} from "@/type/preload";
export default defineComponent({
Expand Down Expand Up @@ -943,6 +942,18 @@ export default defineComponent({
}
};
const splitTextWhenPaste = computed(() => store.state.splitTextWhenPaste);
const changeSplitTextWhenPaste = async (
splitTextWhenPaste: SplitTextWhenPasteType
) => {
if (
splitTextWhenPaste === (await window.electron.getSplitTextWhenPaste())
)
return;
store.dispatch("SET_SPLIT_TEXT_WHEN_PASTE", { splitTextWhenPaste });
};
return {
settingDialogOpenedComputed,
engineMode,
Expand All @@ -962,6 +973,8 @@ export default defineComponent({
currentThemeComputed,
availableThemeNameComputed,
acceptRetrieveTelemetryComputed,
splitTextWhenPaste,
changeSplitTextWhenPaste,
};
},
});
Expand Down
10 changes: 10 additions & 0 deletions src/electron/preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,16 @@ const api: Sandbox = {
vuexReady: () => {
ipcRenderer.invoke("ON_VUEX_READY");
},

getSplitTextWhenPaste: async () => {
return await ipcRendererInvoke("GET_SPLIT_TEXT_WHEN_PASTE");
},
setSplitTextWhenPaste: async (splitTextWhenPaste) => {
return await ipcRendererInvoke(
"SET_SPLIT_TEXT_WHEN_PASTE",
splitTextWhenPaste
);
},
};

contextBridge.exposeInMainWorld("electron", api);
1 change: 1 addition & 0 deletions src/store/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ export const indexStore: VoiceVoxStoreOptions<
promises.push(dispatch("GET_ACCEPT_RETRIEVE_TELEMETRY"));
promises.push(dispatch("GET_ACCEPT_TERMS"));
promises.push(dispatch("GET_EXPERIMENTAL_SETTING"));
promises.push(dispatch("INIT_SPLIT_TEXT_WHEN_PASTE"));
promises.push(dispatch("GET_SPLITTER_POSITION"));

await Promise.all(promises).then(() => {
Expand Down
14 changes: 13 additions & 1 deletion src/store/setting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ export const settingStoreState: SettingStoreState = {
outputStereo: false,
outputSamplingRate: 24000,
audioOutputDevice: "default",
splitTextWhenPaste: "PERIOD_AND_NEW_LINE",
},
hotkeySettings: [],
toolbarSetting: [],
Expand All @@ -46,6 +45,7 @@ export const settingStoreState: SettingStoreState = {
enablePreset: false,
enableInterrogativeUpspeak: false,
},
splitTextWhenPaste: "PERIOD_AND_NEW_LINE",
splitterPosition: {
audioDetailPaneHeight: undefined,
audioInfoPaneWidth: undefined,
Expand Down Expand Up @@ -107,6 +107,9 @@ export const settingStore: VoiceVoxStoreOptions<
SET_ACCEPT_TERMS(state, { acceptTerms }) {
state.acceptTerms = acceptTerms;
},
SET_SPLIT_TEXT_WHEN_PASTE(state, { splitTextWhenPaste }) {
state.splitTextWhenPaste = splitTextWhenPaste;
},
SET_SPLITTER_POSITION(state, { splitterPosition }) {
state.splitterPosition = splitterPosition;
},
Expand Down Expand Up @@ -245,6 +248,15 @@ export const settingStore: VoiceVoxStoreOptions<
window.electron.setExperimentalSetting(experimentalSetting);
commit("SET_EXPERIMENTAL_SETTING", { experimentalSetting });
},
INIT_SPLIT_TEXT_WHEN_PASTE({ dispatch }) {
window.electron.getSplitTextWhenPaste().then((v) => {
dispatch("SET_SPLIT_TEXT_WHEN_PASTE", { splitTextWhenPaste: v });
});
},
SET_SPLIT_TEXT_WHEN_PASTE({ commit }, { splitTextWhenPaste }) {
window.electron.setSplitTextWhenPaste(splitTextWhenPaste);
commit("SET_SPLIT_TEXT_WHEN_PASTE", { splitTextWhenPaste });
},
GET_SPLITTER_POSITION({ dispatch }) {
window.electron.getSplitterPosition().then((splitterPosition) => {
dispatch("SET_SPLITTER_POSITION", { splitterPosition });
Expand Down
10 changes: 10 additions & 0 deletions src/store/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
Preset,
ActivePointScrollMode,
EngineInfo,
SplitTextWhenPasteType,
SplitterPosition,
} from "@/type/preload";
import { IEngineConnectorFactory } from "@/infrastructures/EngineConnector";
Expand Down Expand Up @@ -768,6 +769,7 @@ export type SettingStoreState = {
themeSetting: ThemeSetting;
acceptRetrieveTelemetry: AcceptRetrieveTelemetryStatus;
experimentalSetting: ExperimentalSetting;
splitTextWhenPaste: SplitTextWhenPasteType;
splitterPosition: SplitterPosition;
};

Expand Down Expand Up @@ -838,6 +840,14 @@ type SettingStoreTypes = {
action(payload: { experimentalSetting: ExperimentalSetting }): void;
};

INIT_SPLIT_TEXT_WHEN_PASTE: {
action(): void;
};
SET_SPLIT_TEXT_WHEN_PASTE: {
mutation: { splitTextWhenPaste: SplitTextWhenPasteType };
action(payload: { splitTextWhenPaste: SplitTextWhenPasteType }): void;
};

GET_SPLITTER_POSITION: {
action(): void;
};
Expand Down
11 changes: 10 additions & 1 deletion src/type/ipc.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EngineInfo } from "@/type/preload";
import { EngineInfo, SplitTextWhenPasteType } from "@/type/preload";

/**
* invoke, handle
Expand Down Expand Up @@ -281,6 +281,15 @@ type IpcIHData = {
args: [];
return: void;
};

GET_SPLIT_TEXT_WHEN_PASTE: {
args: [];
return: SplitTextWhenPasteType;
};
SET_SPLIT_TEXT_WHEN_PASTE: {
args: [splitTextWhenPaste: SplitTextWhenPasteType];
return: void;
};
};

/**
Expand Down
Loading

0 comments on commit 3641a4b

Please sign in to comment.