mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-12 03:13:50 +02:00
move some shortcuts to tools
This commit is contained in:
@@ -442,6 +442,24 @@
|
||||
"inventory": "VRC+ Images & Inventory Management",
|
||||
"inventory_description": "Manage VRC+ Images & Inventory"
|
||||
},
|
||||
"shortcuts": {
|
||||
"header": "Shortcuts",
|
||||
"vrcx_data": "VRCX Data",
|
||||
"vrcx_data_description": "Open the VRCX data folder",
|
||||
"vrchat_data": "VRChat Data",
|
||||
"vrchat_data_description": "Open the VRChat data folder",
|
||||
"crash_dumps": "Crash Dumps",
|
||||
"crash_dumps_description": "Open the VRChat crash dumps folder"
|
||||
},
|
||||
"system_tools": {
|
||||
"header": "System Tools",
|
||||
"vrchat_config": "VRChat Config",
|
||||
"vrchat_config_description": "Open VRChat config.json settings",
|
||||
"launch_options": "Launch Options",
|
||||
"launch_options_description": "Edit VRChat launch options",
|
||||
"registry_backup": "VRChat Registry Backup",
|
||||
"registry_backup_description": "Create or restore a VRChat registry backup"
|
||||
},
|
||||
"other": {
|
||||
"header": "Other",
|
||||
"edit_invite_message": "Edit Invite Messages",
|
||||
|
||||
@@ -19,25 +19,6 @@
|
||||
</ButtonGroup>
|
||||
</div>
|
||||
</div>
|
||||
<div class="options-container">
|
||||
<span class="header">{{ t('view.settings.advanced.advanced.common_folders') }}</span>
|
||||
<div class="options-container-item" style="margin-top: 15px">
|
||||
<ButtonGroup>
|
||||
<Button variant="outline" size="sm" @click="openVrcxAppDataFolder()">
|
||||
<Folder />
|
||||
VRCX Data
|
||||
</Button>
|
||||
<Button variant="outline" size="sm" @click="openVrcAppDataFolder()">
|
||||
<Folder />
|
||||
VRChat Data
|
||||
</Button>
|
||||
<Button variant="outline" size="sm" @click="openCrashVrcCrashDumps()">
|
||||
<Folder />
|
||||
Crash Dumps
|
||||
</Button>
|
||||
</ButtonGroup>
|
||||
</div>
|
||||
</div>
|
||||
<div class="options-container">
|
||||
<span class="sub-header">{{ t('view.settings.advanced.advanced.primary_password.header') }}</span>
|
||||
<simple-switch
|
||||
@@ -384,12 +365,11 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { Folder, Languages, Package, RefreshCcw, Settings, Trash2 } from 'lucide-vue-next';
|
||||
import { Languages, Package, RefreshCcw, Settings, Trash2 } from 'lucide-vue-next';
|
||||
import { computed, reactive, ref } from 'vue';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { ButtonGroup } from '@/components/ui/button-group';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import VueJsonPretty from 'vue-json-pretty';
|
||||
@@ -502,36 +482,6 @@
|
||||
|
||||
const isLinux = computed(() => LINUX);
|
||||
|
||||
function openVrcxAppDataFolder() {
|
||||
AppApi.OpenVrcxAppDataFolder().then((result) => {
|
||||
if (result) {
|
||||
toast.success('Folder opened');
|
||||
} else {
|
||||
toast.error(t('message.file.folder_missing'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openVrcAppDataFolder() {
|
||||
AppApi.OpenVrcAppDataFolder().then((result) => {
|
||||
if (result) {
|
||||
toast.success('Folder opened');
|
||||
} else {
|
||||
toast.error(t('message.file.folder_missing'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openCrashVrcCrashDumps() {
|
||||
AppApi.OpenCrashVrcCrashDumps().then((result) => {
|
||||
if (result) {
|
||||
toast.success('Folder opened');
|
||||
} else {
|
||||
toast.error(t('message.file.folder_missing'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openShortcutFolder() {
|
||||
AppApi.OpenShortcutFolder();
|
||||
}
|
||||
|
||||
@@ -4,28 +4,6 @@
|
||||
<span class="header">{{ t('view.tools.header') }}</span>
|
||||
|
||||
<div class="tool-categories">
|
||||
<div class="tool-category">
|
||||
<div class="category-header" @click="toggleCategory('group')">
|
||||
<ChevronDown
|
||||
class="rotation-transition"
|
||||
:class="{ 'is-rotated': categoryCollapsed['group'] }" />
|
||||
<span class="category-title">{{ t('view.tools.group.header') }}</span>
|
||||
</div>
|
||||
<div class="tools-grid" v-show="!categoryCollapsed['group']">
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="showGroupCalendarDialog">
|
||||
<div class="tool-icon text-2xl">
|
||||
<CalendarDays />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.group.calendar') }}</div>
|
||||
<div class="tool-description">{{ t('view.tools.group.calendar_description') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tool-category">
|
||||
<div class="category-header text-2xl" @click="toggleCategory('image')">
|
||||
<ChevronDown
|
||||
@@ -60,6 +38,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tool-category">
|
||||
<div class="category-header" @click="toggleCategory('shortcuts')">
|
||||
<ChevronDown
|
||||
class="rotation-transition"
|
||||
:class="{ 'is-rotated': categoryCollapsed['shortcuts'] }" />
|
||||
<span class="category-title">{{ t('view.tools.shortcuts.header') }}</span>
|
||||
</div>
|
||||
<div class="tools-grid" v-show="!categoryCollapsed['shortcuts']">
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="openVrcPhotosFolder">
|
||||
<div class="tool-icon text-2xl">
|
||||
@@ -88,6 +77,117 @@
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="openVrcxAppDataFolder">
|
||||
<div class="tool-icon text-2xl">
|
||||
<Folder />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.shortcuts.vrcx_data') }}</div>
|
||||
<div class="tool-description">
|
||||
{{ t('view.tools.shortcuts.vrcx_data_description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="openVrcAppDataFolder">
|
||||
<div class="tool-icon text-2xl">
|
||||
<Folder />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.shortcuts.vrchat_data') }}</div>
|
||||
<div class="tool-description">
|
||||
{{ t('view.tools.shortcuts.vrchat_data_description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="openCrashVrcCrashDumps">
|
||||
<div class="tool-icon text-2xl">
|
||||
<Folder />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.shortcuts.crash_dumps') }}</div>
|
||||
<div class="tool-description">
|
||||
{{ t('view.tools.shortcuts.crash_dumps_description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tool-category">
|
||||
<div class="category-header" @click="toggleCategory('system')">
|
||||
<ChevronDown
|
||||
class="rotation-transition"
|
||||
:class="{ 'is-rotated': categoryCollapsed['system'] }" />
|
||||
<span class="category-title">{{ t('view.tools.system_tools.header') }}</span>
|
||||
</div>
|
||||
<div class="tools-grid" v-show="!categoryCollapsed['system']">
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="showVRChatConfig">
|
||||
<div class="tool-icon text-2xl">
|
||||
<Settings />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.system_tools.vrchat_config') }}</div>
|
||||
<div class="tool-description">
|
||||
{{ t('view.tools.system_tools.vrchat_config_description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="showLaunchOptions">
|
||||
<div class="tool-icon text-2xl">
|
||||
<Settings />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.system_tools.launch_options') }}</div>
|
||||
<div class="tool-description">
|
||||
{{ t('view.tools.system_tools.launch_options_description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="showRegistryBackupDialog">
|
||||
<div class="tool-icon text-2xl">
|
||||
<Package />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.system_tools.registry_backup') }}</div>
|
||||
<div class="tool-description">
|
||||
{{ t('view.tools.system_tools.registry_backup_description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tool-category">
|
||||
<div class="category-header" @click="toggleCategory('group')">
|
||||
<ChevronDown
|
||||
class="rotation-transition"
|
||||
:class="{ 'is-rotated': categoryCollapsed['group'] }" />
|
||||
<span class="category-title">{{ t('view.tools.group.header') }}</span>
|
||||
</div>
|
||||
<div class="tools-grid" v-show="!categoryCollapsed['group']">
|
||||
<Card class="tool-card p-0 gap-0">
|
||||
<div class="tool-content" @click="showGroupCalendarDialog">
|
||||
<div class="tool-icon text-2xl">
|
||||
<CalendarDays />
|
||||
</div>
|
||||
<div class="tool-info">
|
||||
<div class="tool-name">{{ t('view.tools.group.calendar') }}</div>
|
||||
<div class="tool-description">{{ t('view.tools.group.calendar_description') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -205,9 +305,12 @@
|
||||
CalendarDays,
|
||||
Camera,
|
||||
ChevronDown,
|
||||
Folder,
|
||||
FolderOpen,
|
||||
Images,
|
||||
MessageSquare,
|
||||
Package,
|
||||
Settings,
|
||||
SquarePen,
|
||||
UserCheck
|
||||
} from 'lucide-vue-next';
|
||||
@@ -219,6 +322,9 @@
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import { useFriendStore, useGalleryStore } from '../../stores';
|
||||
import { useAdvancedSettingsStore } from '../../stores/settings/advanced';
|
||||
import { useLaunchStore } from '../../stores/launch';
|
||||
import { useVrcxStore } from '../../stores/vrcx';
|
||||
|
||||
const GroupCalendarDialog = defineAsyncComponent(() => import('./dialogs/GroupCalendarDialog.vue'));
|
||||
const NoteExportDialog = defineAsyncComponent(() => import('./dialogs/NoteExportDialog.vue'));
|
||||
@@ -233,10 +339,15 @@
|
||||
|
||||
const { showGalleryPage } = useGalleryStore();
|
||||
const { friends } = storeToRefs(useFriendStore());
|
||||
const { showVRChatConfig } = useAdvancedSettingsStore();
|
||||
const { showLaunchOptions } = useLaunchStore();
|
||||
const { showRegistryBackupDialog } = useVrcxStore();
|
||||
|
||||
const categoryCollapsed = ref({
|
||||
group: false,
|
||||
image: false,
|
||||
shortcuts: false,
|
||||
system: false,
|
||||
user: false,
|
||||
other: false
|
||||
});
|
||||
@@ -300,6 +411,36 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openVrcxAppDataFolder() {
|
||||
AppApi.OpenVrcxAppDataFolder().then((result) => {
|
||||
if (result) {
|
||||
toast.success('Folder opened');
|
||||
} else {
|
||||
toast.error(t('message.file.folder_missing'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openVrcAppDataFolder() {
|
||||
AppApi.OpenVrcAppDataFolder().then((result) => {
|
||||
if (result) {
|
||||
toast.success('Folder opened');
|
||||
} else {
|
||||
toast.error(t('message.file.folder_missing'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openCrashVrcCrashDumps() {
|
||||
AppApi.OpenCrashVrcCrashDumps().then((result) => {
|
||||
if (result) {
|
||||
toast.success('Folder opened');
|
||||
} else {
|
||||
toast.error(t('message.file.folder_missing'));
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
Reference in New Issue
Block a user