Compare commits
14 Commits
6f5f739059
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| cd14acf437 | |||
| 562ead1eb2 | |||
| 7725f6d34f | |||
| 821e5af90f | |||
|
03c4350653
|
|||
|
f9c4c1c7cf
|
|||
|
c523f1a59c
|
|||
| e3402dbfa3 | |||
| 73687b889e | |||
|
4333d0ea2a
|
|||
|
e4f2d1aaab
|
|||
|
bc67dab122
|
|||
|
ce5ca88694
|
|||
|
70ec35653d
|
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,3 +1,7 @@
|
|||||||
build/bin
|
build/bin
|
||||||
node_modules
|
node_modules
|
||||||
frontend/dist
|
frontend/dist
|
||||||
|
|
||||||
|
frontend/wailsjs/
|
||||||
|
|
||||||
|
frontend/package.json.md5
|
||||||
16
app.go
16
app.go
@@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/wailsapp/wails/v2/pkg/runtime"
|
"github.com/wailsapp/wails/v2/pkg/runtime"
|
||||||
|
|
||||||
"git.taurusxin.com/taurusxin/ncmdump-go/ncmcrypt"
|
"git.taurusxin.com/taurusxin/ncmdump-go/ncmcrypt"
|
||||||
|
"git.taurusxin.com/taurusxin/ncmdump-gui/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// App struct
|
// App struct
|
||||||
@@ -51,6 +52,21 @@ func (a *App) SelectFolder() string {
|
|||||||
return folder
|
return folder
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) SelectFilesFromFolder(ext string) []string {
|
||||||
|
folder, err := runtime.OpenDirectoryDialog(a.ctx, runtime.OpenDialogOptions{
|
||||||
|
Title: "请选择文件夹",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return []string{}
|
||||||
|
} else {
|
||||||
|
files, err := utils.ListFilesFromFolder(folder, ext)
|
||||||
|
if err != nil {
|
||||||
|
return []string{}
|
||||||
|
}
|
||||||
|
return files
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type Status = string
|
type Status = string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
d96d5e55cba5f9d68f0aa1d714fb5f1a
|
|
||||||
@@ -38,11 +38,12 @@ import {
|
|||||||
DocumentAddRegular,
|
DocumentAddRegular,
|
||||||
DeleteRegular,
|
DeleteRegular,
|
||||||
DeleteDismissRegular,
|
DeleteDismissRegular,
|
||||||
|
FolderAddRegular,
|
||||||
WindowPlayRegular,
|
WindowPlayRegular,
|
||||||
} from '@fluentui/react-icons'
|
} from '@fluentui/react-icons'
|
||||||
|
|
||||||
import { Status, Item, SaveTo } from './types'
|
import { Status, Item, SaveTo } from './types'
|
||||||
import { SelectFiles, SelectFolder, ProcessFiles } from '../wailsjs/go/main/App'
|
import { SelectFiles, SelectFolder, SelectFilesFromFolder, ProcessFiles } from '../wailsjs/go/main/App'
|
||||||
import { Load, Save } from '../wailsjs/go/utils/ConfigManager'
|
import { Load, Save } from '../wailsjs/go/utils/ConfigManager'
|
||||||
import { main } from '../wailsjs/go/models'
|
import { main } from '../wailsjs/go/models'
|
||||||
import { EventsOn, OnFileDrop } from '../wailsjs/runtime/runtime'
|
import { EventsOn, OnFileDrop } from '../wailsjs/runtime/runtime'
|
||||||
@@ -74,6 +75,8 @@ const useStyles = makeStyles({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
let loaded = false
|
||||||
|
|
||||||
export const App = () => {
|
export const App = () => {
|
||||||
const styles = useStyles()
|
const styles = useStyles()
|
||||||
|
|
||||||
@@ -153,6 +156,17 @@ export const App = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const selectFilesFromFolder = () => {
|
||||||
|
if (isProcessing) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
SelectFilesFromFolder('ncm').then(files => {
|
||||||
|
for (const file of files) {
|
||||||
|
setItems(prev => [...prev, { file, status: 'pending' }])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const showDialog = (message: string) => {
|
const showDialog = (message: string) => {
|
||||||
setMessage(message)
|
setMessage(message)
|
||||||
setOpen(true)
|
setOpen(true)
|
||||||
@@ -176,7 +190,7 @@ export const App = () => {
|
|||||||
showDialog('当前文件列表已全部处理完毕,请重新添加新的文件。')
|
showDialog('当前文件列表已全部处理完毕,请重新添加新的文件。')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if(saveTo === 'custom' && savePath === '') {
|
if (saveTo === 'custom' && savePath === '') {
|
||||||
showDialog('保存路径为空,请先设置保存路径。')
|
showDialog('保存路径为空,请先设置保存路径。')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -199,17 +213,19 @@ export const App = () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
Load().then(res => {
|
Load().then(res => {
|
||||||
console.log(res)
|
|
||||||
setSaveTo(res.save_to as SaveTo)
|
setSaveTo(res.save_to as SaveTo)
|
||||||
setSavePath(res.path)
|
setSavePath(res.path)
|
||||||
|
loaded = true
|
||||||
})
|
})
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (loaded) {
|
||||||
Save({
|
Save({
|
||||||
save_to: saveTo,
|
save_to: saveTo,
|
||||||
path: savePath,
|
path: savePath,
|
||||||
}).then(_ => {})
|
}).then(_ => {})
|
||||||
|
}
|
||||||
}, [saveTo, savePath])
|
}, [saveTo, savePath])
|
||||||
|
|
||||||
OnFileDrop((_x, _y, paths) => {
|
OnFileDrop((_x, _y, paths) => {
|
||||||
@@ -250,6 +266,7 @@ export const App = () => {
|
|||||||
<Button onClick={selectFiles} icon={<DocumentAddRegular />}>
|
<Button onClick={selectFiles} icon={<DocumentAddRegular />}>
|
||||||
添加文件
|
添加文件
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button onClick={selectFilesFromFolder} icon={<FolderAddRegular />}>添加目录</Button>
|
||||||
<Button
|
<Button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (!isProcessing) {
|
if (!isProcessing) {
|
||||||
|
|||||||
9
frontend/wailsjs/go/main/App.d.ts
vendored
9
frontend/wailsjs/go/main/App.d.ts
vendored
@@ -1,9 +0,0 @@
|
|||||||
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
||||||
// This file is automatically generated. DO NOT EDIT
|
|
||||||
import {main} from '../models';
|
|
||||||
|
|
||||||
export function ProcessFiles(arg1:Array<main.NcmFile>,arg2:string):Promise<void>;
|
|
||||||
|
|
||||||
export function SelectFiles():Promise<Array<string>>;
|
|
||||||
|
|
||||||
export function SelectFolder():Promise<string>;
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
// @ts-check
|
|
||||||
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
||||||
// This file is automatically generated. DO NOT EDIT
|
|
||||||
|
|
||||||
export function ProcessFiles(arg1, arg2) {
|
|
||||||
return window['go']['main']['App']['ProcessFiles'](arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function SelectFiles() {
|
|
||||||
return window['go']['main']['App']['SelectFiles']();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function SelectFolder() {
|
|
||||||
return window['go']['main']['App']['SelectFolder']();
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
export namespace main {
|
|
||||||
|
|
||||||
export class NcmFile {
|
|
||||||
Name: string;
|
|
||||||
Status: string;
|
|
||||||
|
|
||||||
static createFrom(source: any = {}) {
|
|
||||||
return new NcmFile(source);
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(source: any = {}) {
|
|
||||||
if ('string' === typeof source) source = JSON.parse(source);
|
|
||||||
this.Name = source["Name"];
|
|
||||||
this.Status = source["Status"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@wailsapp/runtime",
|
|
||||||
"version": "2.0.0",
|
|
||||||
"description": "Wails Javascript runtime library",
|
|
||||||
"main": "runtime.js",
|
|
||||||
"types": "runtime.d.ts",
|
|
||||||
"scripts": {
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/wailsapp/wails.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"Wails",
|
|
||||||
"Javascript",
|
|
||||||
"Go"
|
|
||||||
],
|
|
||||||
"author": "Lea Anthony <lea.anthony@gmail.com>",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/wailsapp/wails/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/wailsapp/wails#readme"
|
|
||||||
}
|
|
||||||
249
frontend/wailsjs/runtime/runtime.d.ts
vendored
249
frontend/wailsjs/runtime/runtime.d.ts
vendored
@@ -1,249 +0,0 @@
|
|||||||
/*
|
|
||||||
_ __ _ __
|
|
||||||
| | / /___ _(_) /____
|
|
||||||
| | /| / / __ `/ / / ___/
|
|
||||||
| |/ |/ / /_/ / / (__ )
|
|
||||||
|__/|__/\__,_/_/_/____/
|
|
||||||
The electron alternative for Go
|
|
||||||
(c) Lea Anthony 2019-present
|
|
||||||
*/
|
|
||||||
|
|
||||||
export interface Position {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Size {
|
|
||||||
w: number;
|
|
||||||
h: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Screen {
|
|
||||||
isCurrent: boolean;
|
|
||||||
isPrimary: boolean;
|
|
||||||
width : number
|
|
||||||
height : number
|
|
||||||
}
|
|
||||||
|
|
||||||
// Environment information such as platform, buildtype, ...
|
|
||||||
export interface EnvironmentInfo {
|
|
||||||
buildType: string;
|
|
||||||
platform: string;
|
|
||||||
arch: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
// [EventsEmit](https://wails.io/docs/reference/runtime/events#eventsemit)
|
|
||||||
// emits the given event. Optional data may be passed with the event.
|
|
||||||
// This will trigger any event listeners.
|
|
||||||
export function EventsEmit(eventName: string, ...data: any): void;
|
|
||||||
|
|
||||||
// [EventsOn](https://wails.io/docs/reference/runtime/events#eventson) sets up a listener for the given event name.
|
|
||||||
export function EventsOn(eventName: string, callback: (...data: any) => void): () => void;
|
|
||||||
|
|
||||||
// [EventsOnMultiple](https://wails.io/docs/reference/runtime/events#eventsonmultiple)
|
|
||||||
// sets up a listener for the given event name, but will only trigger a given number times.
|
|
||||||
export function EventsOnMultiple(eventName: string, callback: (...data: any) => void, maxCallbacks: number): () => void;
|
|
||||||
|
|
||||||
// [EventsOnce](https://wails.io/docs/reference/runtime/events#eventsonce)
|
|
||||||
// sets up a listener for the given event name, but will only trigger once.
|
|
||||||
export function EventsOnce(eventName: string, callback: (...data: any) => void): () => void;
|
|
||||||
|
|
||||||
// [EventsOff](https://wails.io/docs/reference/runtime/events#eventsoff)
|
|
||||||
// unregisters the listener for the given event name.
|
|
||||||
export function EventsOff(eventName: string, ...additionalEventNames: string[]): void;
|
|
||||||
|
|
||||||
// [EventsOffAll](https://wails.io/docs/reference/runtime/events#eventsoffall)
|
|
||||||
// unregisters all listeners.
|
|
||||||
export function EventsOffAll(): void;
|
|
||||||
|
|
||||||
// [LogPrint](https://wails.io/docs/reference/runtime/log#logprint)
|
|
||||||
// logs the given message as a raw message
|
|
||||||
export function LogPrint(message: string): void;
|
|
||||||
|
|
||||||
// [LogTrace](https://wails.io/docs/reference/runtime/log#logtrace)
|
|
||||||
// logs the given message at the `trace` log level.
|
|
||||||
export function LogTrace(message: string): void;
|
|
||||||
|
|
||||||
// [LogDebug](https://wails.io/docs/reference/runtime/log#logdebug)
|
|
||||||
// logs the given message at the `debug` log level.
|
|
||||||
export function LogDebug(message: string): void;
|
|
||||||
|
|
||||||
// [LogError](https://wails.io/docs/reference/runtime/log#logerror)
|
|
||||||
// logs the given message at the `error` log level.
|
|
||||||
export function LogError(message: string): void;
|
|
||||||
|
|
||||||
// [LogFatal](https://wails.io/docs/reference/runtime/log#logfatal)
|
|
||||||
// logs the given message at the `fatal` log level.
|
|
||||||
// The application will quit after calling this method.
|
|
||||||
export function LogFatal(message: string): void;
|
|
||||||
|
|
||||||
// [LogInfo](https://wails.io/docs/reference/runtime/log#loginfo)
|
|
||||||
// logs the given message at the `info` log level.
|
|
||||||
export function LogInfo(message: string): void;
|
|
||||||
|
|
||||||
// [LogWarning](https://wails.io/docs/reference/runtime/log#logwarning)
|
|
||||||
// logs the given message at the `warning` log level.
|
|
||||||
export function LogWarning(message: string): void;
|
|
||||||
|
|
||||||
// [WindowReload](https://wails.io/docs/reference/runtime/window#windowreload)
|
|
||||||
// Forces a reload by the main application as well as connected browsers.
|
|
||||||
export function WindowReload(): void;
|
|
||||||
|
|
||||||
// [WindowReloadApp](https://wails.io/docs/reference/runtime/window#windowreloadapp)
|
|
||||||
// Reloads the application frontend.
|
|
||||||
export function WindowReloadApp(): void;
|
|
||||||
|
|
||||||
// [WindowSetAlwaysOnTop](https://wails.io/docs/reference/runtime/window#windowsetalwaysontop)
|
|
||||||
// Sets the window AlwaysOnTop or not on top.
|
|
||||||
export function WindowSetAlwaysOnTop(b: boolean): void;
|
|
||||||
|
|
||||||
// [WindowSetSystemDefaultTheme](https://wails.io/docs/next/reference/runtime/window#windowsetsystemdefaulttheme)
|
|
||||||
// *Windows only*
|
|
||||||
// Sets window theme to system default (dark/light).
|
|
||||||
export function WindowSetSystemDefaultTheme(): void;
|
|
||||||
|
|
||||||
// [WindowSetLightTheme](https://wails.io/docs/next/reference/runtime/window#windowsetlighttheme)
|
|
||||||
// *Windows only*
|
|
||||||
// Sets window to light theme.
|
|
||||||
export function WindowSetLightTheme(): void;
|
|
||||||
|
|
||||||
// [WindowSetDarkTheme](https://wails.io/docs/next/reference/runtime/window#windowsetdarktheme)
|
|
||||||
// *Windows only*
|
|
||||||
// Sets window to dark theme.
|
|
||||||
export function WindowSetDarkTheme(): void;
|
|
||||||
|
|
||||||
// [WindowCenter](https://wails.io/docs/reference/runtime/window#windowcenter)
|
|
||||||
// Centers the window on the monitor the window is currently on.
|
|
||||||
export function WindowCenter(): void;
|
|
||||||
|
|
||||||
// [WindowSetTitle](https://wails.io/docs/reference/runtime/window#windowsettitle)
|
|
||||||
// Sets the text in the window title bar.
|
|
||||||
export function WindowSetTitle(title: string): void;
|
|
||||||
|
|
||||||
// [WindowFullscreen](https://wails.io/docs/reference/runtime/window#windowfullscreen)
|
|
||||||
// Makes the window full screen.
|
|
||||||
export function WindowFullscreen(): void;
|
|
||||||
|
|
||||||
// [WindowUnfullscreen](https://wails.io/docs/reference/runtime/window#windowunfullscreen)
|
|
||||||
// Restores the previous window dimensions and position prior to full screen.
|
|
||||||
export function WindowUnfullscreen(): void;
|
|
||||||
|
|
||||||
// [WindowIsFullscreen](https://wails.io/docs/reference/runtime/window#windowisfullscreen)
|
|
||||||
// Returns the state of the window, i.e. whether the window is in full screen mode or not.
|
|
||||||
export function WindowIsFullscreen(): Promise<boolean>;
|
|
||||||
|
|
||||||
// [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize)
|
|
||||||
// Sets the width and height of the window.
|
|
||||||
export function WindowSetSize(width: number, height: number): Promise<Size>;
|
|
||||||
|
|
||||||
// [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize)
|
|
||||||
// Gets the width and height of the window.
|
|
||||||
export function WindowGetSize(): Promise<Size>;
|
|
||||||
|
|
||||||
// [WindowSetMaxSize](https://wails.io/docs/reference/runtime/window#windowsetmaxsize)
|
|
||||||
// Sets the maximum window size. Will resize the window if the window is currently larger than the given dimensions.
|
|
||||||
// Setting a size of 0,0 will disable this constraint.
|
|
||||||
export function WindowSetMaxSize(width: number, height: number): void;
|
|
||||||
|
|
||||||
// [WindowSetMinSize](https://wails.io/docs/reference/runtime/window#windowsetminsize)
|
|
||||||
// Sets the minimum window size. Will resize the window if the window is currently smaller than the given dimensions.
|
|
||||||
// Setting a size of 0,0 will disable this constraint.
|
|
||||||
export function WindowSetMinSize(width: number, height: number): void;
|
|
||||||
|
|
||||||
// [WindowSetPosition](https://wails.io/docs/reference/runtime/window#windowsetposition)
|
|
||||||
// Sets the window position relative to the monitor the window is currently on.
|
|
||||||
export function WindowSetPosition(x: number, y: number): void;
|
|
||||||
|
|
||||||
// [WindowGetPosition](https://wails.io/docs/reference/runtime/window#windowgetposition)
|
|
||||||
// Gets the window position relative to the monitor the window is currently on.
|
|
||||||
export function WindowGetPosition(): Promise<Position>;
|
|
||||||
|
|
||||||
// [WindowHide](https://wails.io/docs/reference/runtime/window#windowhide)
|
|
||||||
// Hides the window.
|
|
||||||
export function WindowHide(): void;
|
|
||||||
|
|
||||||
// [WindowShow](https://wails.io/docs/reference/runtime/window#windowshow)
|
|
||||||
// Shows the window, if it is currently hidden.
|
|
||||||
export function WindowShow(): void;
|
|
||||||
|
|
||||||
// [WindowMaximise](https://wails.io/docs/reference/runtime/window#windowmaximise)
|
|
||||||
// Maximises the window to fill the screen.
|
|
||||||
export function WindowMaximise(): void;
|
|
||||||
|
|
||||||
// [WindowToggleMaximise](https://wails.io/docs/reference/runtime/window#windowtogglemaximise)
|
|
||||||
// Toggles between Maximised and UnMaximised.
|
|
||||||
export function WindowToggleMaximise(): void;
|
|
||||||
|
|
||||||
// [WindowUnmaximise](https://wails.io/docs/reference/runtime/window#windowunmaximise)
|
|
||||||
// Restores the window to the dimensions and position prior to maximising.
|
|
||||||
export function WindowUnmaximise(): void;
|
|
||||||
|
|
||||||
// [WindowIsMaximised](https://wails.io/docs/reference/runtime/window#windowismaximised)
|
|
||||||
// Returns the state of the window, i.e. whether the window is maximised or not.
|
|
||||||
export function WindowIsMaximised(): Promise<boolean>;
|
|
||||||
|
|
||||||
// [WindowMinimise](https://wails.io/docs/reference/runtime/window#windowminimise)
|
|
||||||
// Minimises the window.
|
|
||||||
export function WindowMinimise(): void;
|
|
||||||
|
|
||||||
// [WindowUnminimise](https://wails.io/docs/reference/runtime/window#windowunminimise)
|
|
||||||
// Restores the window to the dimensions and position prior to minimising.
|
|
||||||
export function WindowUnminimise(): void;
|
|
||||||
|
|
||||||
// [WindowIsMinimised](https://wails.io/docs/reference/runtime/window#windowisminimised)
|
|
||||||
// Returns the state of the window, i.e. whether the window is minimised or not.
|
|
||||||
export function WindowIsMinimised(): Promise<boolean>;
|
|
||||||
|
|
||||||
// [WindowIsNormal](https://wails.io/docs/reference/runtime/window#windowisnormal)
|
|
||||||
// Returns the state of the window, i.e. whether the window is normal or not.
|
|
||||||
export function WindowIsNormal(): Promise<boolean>;
|
|
||||||
|
|
||||||
// [WindowSetBackgroundColour](https://wails.io/docs/reference/runtime/window#windowsetbackgroundcolour)
|
|
||||||
// Sets the background colour of the window to the given RGBA colour definition. This colour will show through for all transparent pixels.
|
|
||||||
export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void;
|
|
||||||
|
|
||||||
// [ScreenGetAll](https://wails.io/docs/reference/runtime/window#screengetall)
|
|
||||||
// Gets the all screens. Call this anew each time you want to refresh data from the underlying windowing system.
|
|
||||||
export function ScreenGetAll(): Promise<Screen[]>;
|
|
||||||
|
|
||||||
// [BrowserOpenURL](https://wails.io/docs/reference/runtime/browser#browseropenurl)
|
|
||||||
// Opens the given URL in the system browser.
|
|
||||||
export function BrowserOpenURL(url: string): void;
|
|
||||||
|
|
||||||
// [Environment](https://wails.io/docs/reference/runtime/intro#environment)
|
|
||||||
// Returns information about the environment
|
|
||||||
export function Environment(): Promise<EnvironmentInfo>;
|
|
||||||
|
|
||||||
// [Quit](https://wails.io/docs/reference/runtime/intro#quit)
|
|
||||||
// Quits the application.
|
|
||||||
export function Quit(): void;
|
|
||||||
|
|
||||||
// [Hide](https://wails.io/docs/reference/runtime/intro#hide)
|
|
||||||
// Hides the application.
|
|
||||||
export function Hide(): void;
|
|
||||||
|
|
||||||
// [Show](https://wails.io/docs/reference/runtime/intro#show)
|
|
||||||
// Shows the application.
|
|
||||||
export function Show(): void;
|
|
||||||
|
|
||||||
// [ClipboardGetText](https://wails.io/docs/reference/runtime/clipboard#clipboardgettext)
|
|
||||||
// Returns the current text stored on clipboard
|
|
||||||
export function ClipboardGetText(): Promise<string>;
|
|
||||||
|
|
||||||
// [ClipboardSetText](https://wails.io/docs/reference/runtime/clipboard#clipboardsettext)
|
|
||||||
// Sets a text on the clipboard
|
|
||||||
export function ClipboardSetText(text: string): Promise<boolean>;
|
|
||||||
|
|
||||||
// [OnFileDrop](https://wails.io/docs/reference/runtime/draganddrop#onfiledrop)
|
|
||||||
// OnFileDrop listens to drag and drop events and calls the callback with the coordinates of the drop and an array of path strings.
|
|
||||||
export function OnFileDrop(callback: (x: number, y: number ,paths: string[]) => void, useDropTarget: boolean) :void
|
|
||||||
|
|
||||||
// [OnFileDropOff](https://wails.io/docs/reference/runtime/draganddrop#dragandddropoff)
|
|
||||||
// OnFileDropOff removes the drag and drop listeners and handlers.
|
|
||||||
export function OnFileDropOff() :void
|
|
||||||
|
|
||||||
// Check if the file path resolver is available
|
|
||||||
export function CanResolveFilePaths(): boolean;
|
|
||||||
|
|
||||||
// Resolves file paths for an array of files
|
|
||||||
export function ResolveFilePaths(files: File[]): void
|
|
||||||
@@ -1,238 +0,0 @@
|
|||||||
/*
|
|
||||||
_ __ _ __
|
|
||||||
| | / /___ _(_) /____
|
|
||||||
| | /| / / __ `/ / / ___/
|
|
||||||
| |/ |/ / /_/ / / (__ )
|
|
||||||
|__/|__/\__,_/_/_/____/
|
|
||||||
The electron alternative for Go
|
|
||||||
(c) Lea Anthony 2019-present
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function LogPrint(message) {
|
|
||||||
window.runtime.LogPrint(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function LogTrace(message) {
|
|
||||||
window.runtime.LogTrace(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function LogDebug(message) {
|
|
||||||
window.runtime.LogDebug(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function LogInfo(message) {
|
|
||||||
window.runtime.LogInfo(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function LogWarning(message) {
|
|
||||||
window.runtime.LogWarning(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function LogError(message) {
|
|
||||||
window.runtime.LogError(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function LogFatal(message) {
|
|
||||||
window.runtime.LogFatal(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function EventsOnMultiple(eventName, callback, maxCallbacks) {
|
|
||||||
return window.runtime.EventsOnMultiple(eventName, callback, maxCallbacks);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function EventsOn(eventName, callback) {
|
|
||||||
return EventsOnMultiple(eventName, callback, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function EventsOff(eventName, ...additionalEventNames) {
|
|
||||||
return window.runtime.EventsOff(eventName, ...additionalEventNames);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function EventsOnce(eventName, callback) {
|
|
||||||
return EventsOnMultiple(eventName, callback, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function EventsEmit(eventName) {
|
|
||||||
let args = [eventName].slice.call(arguments);
|
|
||||||
return window.runtime.EventsEmit.apply(null, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowReload() {
|
|
||||||
window.runtime.WindowReload();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowReloadApp() {
|
|
||||||
window.runtime.WindowReloadApp();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetAlwaysOnTop(b) {
|
|
||||||
window.runtime.WindowSetAlwaysOnTop(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetSystemDefaultTheme() {
|
|
||||||
window.runtime.WindowSetSystemDefaultTheme();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetLightTheme() {
|
|
||||||
window.runtime.WindowSetLightTheme();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetDarkTheme() {
|
|
||||||
window.runtime.WindowSetDarkTheme();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowCenter() {
|
|
||||||
window.runtime.WindowCenter();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetTitle(title) {
|
|
||||||
window.runtime.WindowSetTitle(title);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowFullscreen() {
|
|
||||||
window.runtime.WindowFullscreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowUnfullscreen() {
|
|
||||||
window.runtime.WindowUnfullscreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowIsFullscreen() {
|
|
||||||
return window.runtime.WindowIsFullscreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowGetSize() {
|
|
||||||
return window.runtime.WindowGetSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetSize(width, height) {
|
|
||||||
window.runtime.WindowSetSize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetMaxSize(width, height) {
|
|
||||||
window.runtime.WindowSetMaxSize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetMinSize(width, height) {
|
|
||||||
window.runtime.WindowSetMinSize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetPosition(x, y) {
|
|
||||||
window.runtime.WindowSetPosition(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowGetPosition() {
|
|
||||||
return window.runtime.WindowGetPosition();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowHide() {
|
|
||||||
window.runtime.WindowHide();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowShow() {
|
|
||||||
window.runtime.WindowShow();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowMaximise() {
|
|
||||||
window.runtime.WindowMaximise();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowToggleMaximise() {
|
|
||||||
window.runtime.WindowToggleMaximise();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowUnmaximise() {
|
|
||||||
window.runtime.WindowUnmaximise();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowIsMaximised() {
|
|
||||||
return window.runtime.WindowIsMaximised();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowMinimise() {
|
|
||||||
window.runtime.WindowMinimise();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowUnminimise() {
|
|
||||||
window.runtime.WindowUnminimise();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowSetBackgroundColour(R, G, B, A) {
|
|
||||||
window.runtime.WindowSetBackgroundColour(R, G, B, A);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ScreenGetAll() {
|
|
||||||
return window.runtime.ScreenGetAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowIsMinimised() {
|
|
||||||
return window.runtime.WindowIsMinimised();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function WindowIsNormal() {
|
|
||||||
return window.runtime.WindowIsNormal();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function BrowserOpenURL(url) {
|
|
||||||
window.runtime.BrowserOpenURL(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Environment() {
|
|
||||||
return window.runtime.Environment();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Quit() {
|
|
||||||
window.runtime.Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Hide() {
|
|
||||||
window.runtime.Hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Show() {
|
|
||||||
window.runtime.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ClipboardGetText() {
|
|
||||||
return window.runtime.ClipboardGetText();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ClipboardSetText(text) {
|
|
||||||
return window.runtime.ClipboardSetText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback for OnFileDrop returns a slice of file path strings when a drop is finished.
|
|
||||||
*
|
|
||||||
* @export
|
|
||||||
* @callback OnFileDropCallback
|
|
||||||
* @param {number} x - x coordinate of the drop
|
|
||||||
* @param {number} y - y coordinate of the drop
|
|
||||||
* @param {string[]} paths - A list of file paths.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* OnFileDrop listens to drag and drop events and calls the callback with the coordinates of the drop and an array of path strings.
|
|
||||||
*
|
|
||||||
* @export
|
|
||||||
* @param {OnFileDropCallback} callback - Callback for OnFileDrop returns a slice of file path strings when a drop is finished.
|
|
||||||
* @param {boolean} [useDropTarget=true] - Only call the callback when the drop finished on an element that has the drop target style. (--wails-drop-target)
|
|
||||||
*/
|
|
||||||
export function OnFileDrop(callback, useDropTarget) {
|
|
||||||
return window.runtime.OnFileDrop(callback, useDropTarget);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* OnFileDropOff removes the drag and drop listeners and handlers.
|
|
||||||
*/
|
|
||||||
export function OnFileDropOff() {
|
|
||||||
return window.runtime.OnFileDropOff();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function CanResolveFilePaths() {
|
|
||||||
return window.runtime.CanResolveFilePaths();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ResolveFilePaths(files) {
|
|
||||||
return window.runtime.ResolveFilePaths(files);
|
|
||||||
}
|
|
||||||
29
go.mod
29
go.mod
@@ -1,12 +1,10 @@
|
|||||||
module git.taurusxin.com/taurusxin/ncmdump-gui
|
module git.taurusxin.com/taurusxin/ncmdump-gui
|
||||||
|
|
||||||
go 1.23.0
|
go 1.24.0
|
||||||
|
|
||||||
toolchain go1.23.3
|
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.taurusxin.com/taurusxin/ncmdump-go v1.7.4
|
git.taurusxin.com/taurusxin/ncmdump-go v1.7.5
|
||||||
github.com/wailsapp/wails/v2 v2.9.2
|
github.com/wailsapp/wails/v2 v2.11.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@@ -17,10 +15,11 @@ require (
|
|||||||
github.com/go-flac/flacvorbis v0.2.0 // indirect
|
github.com/go-flac/flacvorbis v0.2.0 // indirect
|
||||||
github.com/go-flac/go-flac v1.0.0 // indirect
|
github.com/go-flac/go-flac v1.0.0 // indirect
|
||||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||||
github.com/godbus/dbus/v5 v5.1.0 // indirect
|
github.com/godbus/dbus/v5 v5.2.0 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect
|
github.com/gorilla/websocket v1.5.3 // indirect
|
||||||
github.com/labstack/echo/v4 v4.13.3 // indirect
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 // indirect
|
||||||
|
github.com/labstack/echo/v4 v4.13.4 // indirect
|
||||||
github.com/labstack/gommon v0.4.2 // indirect
|
github.com/labstack/gommon v0.4.2 // indirect
|
||||||
github.com/leaanthony/go-ansi-parser v1.6.1 // indirect
|
github.com/leaanthony/go-ansi-parser v1.6.1 // indirect
|
||||||
github.com/leaanthony/gosod v1.0.4 // indirect
|
github.com/leaanthony/gosod v1.0.4 // indirect
|
||||||
@@ -31,19 +30,19 @@ require (
|
|||||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/rivo/uniseg v0.4.7 // indirect
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
github.com/samber/lo v1.49.1 // indirect
|
github.com/samber/lo v1.52.0 // indirect
|
||||||
github.com/tidwall/gjson v1.18.0 // indirect
|
github.com/tidwall/gjson v1.18.0 // indirect
|
||||||
github.com/tidwall/match v1.1.1 // indirect
|
github.com/tidwall/match v1.2.0 // indirect
|
||||||
github.com/tidwall/pretty v1.2.1 // indirect
|
github.com/tidwall/pretty v1.2.1 // indirect
|
||||||
github.com/tkrajina/go-reflector v0.5.8 // indirect
|
github.com/tkrajina/go-reflector v0.5.8 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasttemplate v1.2.2 // indirect
|
github.com/valyala/fasttemplate v1.2.2 // indirect
|
||||||
github.com/wailsapp/go-webview2 v1.0.19 // indirect
|
github.com/wailsapp/go-webview2 v1.0.23 // indirect
|
||||||
github.com/wailsapp/mimetype v1.4.1 // indirect
|
github.com/wailsapp/mimetype v1.4.1 // indirect
|
||||||
golang.org/x/crypto v0.32.0 // indirect
|
golang.org/x/crypto v0.45.0 // indirect
|
||||||
golang.org/x/net v0.34.0 // indirect
|
golang.org/x/net v0.47.0 // indirect
|
||||||
golang.org/x/sys v0.29.0 // indirect
|
golang.org/x/sys v0.38.0 // indirect
|
||||||
golang.org/x/text v0.21.0 // indirect
|
golang.org/x/text v0.31.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
// replace github.com/wailsapp/wails/v2 v2.9.2 => /Users/taurusxin/Workspace/gopath/pkg/mod
|
// replace github.com/wailsapp/wails/v2 v2.9.2 => /Users/taurusxin/Workspace/gopath/pkg/mod
|
||||||
|
|||||||
49
go.sum
49
go.sum
@@ -1,5 +1,5 @@
|
|||||||
git.taurusxin.com/taurusxin/ncmdump-go v1.7.4 h1:Uk7tP58yNMOMqH1e9+BOFwwQ/lqScK3F10mAIFB/jtM=
|
git.taurusxin.com/taurusxin/ncmdump-go v1.7.5 h1:O7t1qnIohDy+Xx0rfJGHZi/gAdfFUewRbhna7UmCzTw=
|
||||||
git.taurusxin.com/taurusxin/ncmdump-go v1.7.4/go.mod h1:6kRSwUFM9BZwvDrg6MEPBn+29+Q2131QjK/URWO7seg=
|
git.taurusxin.com/taurusxin/ncmdump-go v1.7.5/go.mod h1:6kRSwUFM9BZwvDrg6MEPBn+29+Q2131QjK/URWO7seg=
|
||||||
github.com/TwiN/go-color v1.4.1 h1:mqG0P/KBgHKVqmtL5ye7K0/Gr4l6hTksPgTgMk3mUzc=
|
github.com/TwiN/go-color v1.4.1 h1:mqG0P/KBgHKVqmtL5ye7K0/Gr4l6hTksPgTgMk3mUzc=
|
||||||
github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s=
|
github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s=
|
||||||
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
||||||
@@ -16,14 +16,16 @@ github.com/go-flac/go-flac v1.0.0 h1:6qI9XOVLcO50xpzm3nXvO31BgDgHhnr/p/rER/K/doY
|
|||||||
github.com/go-flac/go-flac v1.0.0/go.mod h1:WnZhcpmq4u1UdZMNn9LYSoASpWOCMOoxXxcWEHSzkW8=
|
github.com/go-flac/go-flac v1.0.0/go.mod h1:WnZhcpmq4u1UdZMNn9LYSoASpWOCMOoxXxcWEHSzkW8=
|
||||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||||
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
|
github.com/godbus/dbus/v5 v5.2.0 h1:3WexO+U+yg9T70v9FdHr9kCxYlazaAXUhx2VMkbfax8=
|
||||||
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.2.0/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY=
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 h1:njuLRcjAuMKr7kI3D85AXWkw6/+v9PwtV6M6o11sWHQ=
|
||||||
github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g=
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
||||||
|
github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcXEA=
|
||||||
|
github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ=
|
||||||
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
|
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
|
||||||
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
|
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
|
||||||
github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc=
|
github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc=
|
||||||
@@ -52,14 +54,15 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
|||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
|
github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw=
|
||||||
github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
|
github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
|
||||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
||||||
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
||||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
|
||||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||||
|
github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM=
|
||||||
|
github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||||
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||||
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
|
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
|
||||||
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||||
@@ -69,24 +72,24 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
|
|||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
|
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
|
||||||
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||||
github.com/wailsapp/go-webview2 v1.0.19 h1:7U3QcDj1PrBPaxJNCui2k1SkWml+Q5kvFUFyTImA6NU=
|
github.com/wailsapp/go-webview2 v1.0.23 h1:jmv8qhz1lHibCc79bMM/a/FqOnnzOGEisLav+a0b9P0=
|
||||||
github.com/wailsapp/go-webview2 v1.0.19/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
|
github.com/wailsapp/go-webview2 v1.0.23/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
|
||||||
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
||||||
github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
|
github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
|
||||||
github.com/wailsapp/wails/v2 v2.9.2 h1:Xb5YRTos1w5N7DTMyYegWaGukCP2fIaX9WF21kPPF2k=
|
github.com/wailsapp/wails/v2 v2.11.0 h1:seLacV8pqupq32IjS4Y7V8ucab0WZwtK6VvUVxSBtqQ=
|
||||||
github.com/wailsapp/wails/v2 v2.9.2/go.mod h1:uehvlCwJSFcBq7rMCGfk4rxca67QQGsbg5Nm4m9UnBs=
|
github.com/wailsapp/wails/v2 v2.11.0/go.mod h1:jrf0ZaM6+GBc1wRmXsM8cIvzlg0karYin3erahI4+0k=
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
|
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
|
||||||
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
|
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
|
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
||||||
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
|
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@@ -98,8 +101,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
|
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
||||||
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@@ -107,8 +110,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 336 KiB |
7
main.go
7
main.go
@@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/wailsapp/wails/v2"
|
"github.com/wailsapp/wails/v2"
|
||||||
"github.com/wailsapp/wails/v2/pkg/options"
|
"github.com/wailsapp/wails/v2/pkg/options"
|
||||||
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
|
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
|
||||||
|
"github.com/wailsapp/wails/v2/pkg/options/mac"
|
||||||
|
|
||||||
"git.taurusxin.com/taurusxin/ncmdump-gui/utils"
|
"git.taurusxin.com/taurusxin/ncmdump-gui/utils"
|
||||||
)
|
)
|
||||||
@@ -40,6 +41,12 @@ func main() {
|
|||||||
EnableFileDrop: true,
|
EnableFileDrop: true,
|
||||||
DisableWebViewDrop: true,
|
DisableWebViewDrop: true,
|
||||||
},
|
},
|
||||||
|
Mac: &mac.Options{
|
||||||
|
About: &mac.AboutInfo{
|
||||||
|
Title: "ncmdump-gui",
|
||||||
|
Message: "Copyright © 2025 TaurusXin",
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package utils
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
)
|
)
|
||||||
@@ -75,7 +74,6 @@ func (cm *ConfigManager) Load() *Preference {
|
|||||||
var preference *Preference = nil
|
var preference *Preference = nil
|
||||||
decoder := json.NewDecoder(file)
|
decoder := json.NewDecoder(file)
|
||||||
err = decoder.Decode(&preference)
|
err = decoder.Decode(&preference)
|
||||||
fmt.Println(preference)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
30
utils/file_util.go
Normal file
30
utils/file_util.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ListFilesFromFolder(root string, ext string) ([]string, error) {
|
||||||
|
var files []string
|
||||||
|
|
||||||
|
// Walk函数会遍历文件树,递归地访问每个目录和文件
|
||||||
|
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否是文件以及文件后缀是否匹配
|
||||||
|
if !info.IsDir() && filepath.Ext(path) == "."+ext {
|
||||||
|
files = append(files, path)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"info": {
|
"info": {
|
||||||
"companyName": "TaurusXin",
|
"companyName": "TaurusXin",
|
||||||
"productName": "ncmdump-gui",
|
"productName": "ncmdump-gui",
|
||||||
"productVersion": "1.0.1",
|
"productVersion": "1.2.1",
|
||||||
"copyright": "Copyright © 2025 TaurusXin",
|
"copyright": "Copyright © 2025 TaurusXin",
|
||||||
"comments": "Convert ncm to mp3/flac"
|
"comments": "Convert ncm to mp3/flac"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user