mirror of
https://github.com/garraflavatra/rolens.git
synced 2025-01-18 13:07:58 +00:00
Removed Zenity dependency
This commit is contained in:
parent
208db82ba7
commit
ef9318576a
@ -1,12 +1,12 @@
|
|||||||
<script>
|
<script>
|
||||||
import { OpenDirectory } from '$wails/go/ui/UI.js';
|
import { ChooseDirectory } from '$wails/go/app/App.js';
|
||||||
|
|
||||||
export let value = '';
|
export let value = '';
|
||||||
export let id = '';
|
export let id = '';
|
||||||
export let title = 'Choose a directory';
|
export let title = 'Choose a directory';
|
||||||
|
|
||||||
async function selectDir() {
|
async function selectDir() {
|
||||||
value = await OpenDirectory(title) || value;
|
value = await ChooseDirectory(title) || value;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
import { StartProgressBar, StopProgressBar } from '$wails/go/ui/UI.js';
|
|
||||||
|
|
||||||
let taskCounter = 0;
|
|
||||||
|
|
||||||
export function startProgress(taskDescription = 'Loading…') {
|
|
||||||
const taskIndex = ++taskCounter;
|
|
||||||
let started = false;
|
|
||||||
|
|
||||||
const debouncer = setTimeout(() => {
|
|
||||||
StartProgressBar(taskIndex, taskDescription);
|
|
||||||
started = true;
|
|
||||||
}, 150);
|
|
||||||
|
|
||||||
const task = {
|
|
||||||
id: taskIndex,
|
|
||||||
description: taskDescription,
|
|
||||||
|
|
||||||
end: () => {
|
|
||||||
clearTimeout(debouncer);
|
|
||||||
if (started) {
|
|
||||||
StopProgressBar(taskIndex);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
return task;
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
import dialogs from '$lib/dialogs.js';
|
import dialogs from '$lib/dialogs.js';
|
||||||
import { startProgress } from '$lib/progress.js';
|
|
||||||
import { get, writable } from 'svelte/store';
|
import { get, writable } from 'svelte/store';
|
||||||
import applicationInited from './inited.js';
|
import applicationInited from './inited.js';
|
||||||
import queries from './queries.js';
|
import queries from './queries.js';
|
||||||
@ -40,7 +39,10 @@ async function refresh() {
|
|||||||
const hosts = await Hosts();
|
const hosts = await Hosts();
|
||||||
const hostTree = getValue();
|
const hostTree = getValue();
|
||||||
|
|
||||||
for (const [ hostKey, hostDetails ] of Object.entries(hosts)) {
|
for (const [
|
||||||
|
hostKey,
|
||||||
|
hostDetails,
|
||||||
|
] of Object.entries(hosts)) {
|
||||||
hostTree[hostKey] = hostTree[hostKey] || {};
|
hostTree[hostKey] = hostTree[hostKey] || {};
|
||||||
const host = hostTree[hostKey];
|
const host = hostTree[hostKey];
|
||||||
host.key = hostKey;
|
host.key = hostKey;
|
||||||
@ -70,7 +72,10 @@ async function refresh() {
|
|||||||
host.databases[dbKey] = host.databases[dbKey] || {};
|
host.databases[dbKey] = host.databases[dbKey] || {};
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [ dbKey, database ] of Object.entries(host.databases)) {
|
for (const [
|
||||||
|
dbKey,
|
||||||
|
database,
|
||||||
|
] of Object.entries(host.databases)) {
|
||||||
if (!database.new && !dbNames.includes(dbKey)) {
|
if (!database.new && !dbNames.includes(dbKey)) {
|
||||||
delete host.databases[dbKey];
|
delete host.databases[dbKey];
|
||||||
continue;
|
continue;
|
||||||
@ -95,7 +100,10 @@ async function refresh() {
|
|||||||
database.collections[collKey] = database.collections[collKey] || {};
|
database.collections[collKey] = database.collections[collKey] || {};
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [ collKey, collection ] of Object.entries(database.collections)) {
|
for (const [
|
||||||
|
collKey,
|
||||||
|
collection,
|
||||||
|
] of Object.entries(database.collections)) {
|
||||||
if (!collection.new && !collNames.includes(collKey)) {
|
if (!collection.new && !collNames.includes(collKey)) {
|
||||||
delete database.collections[collKey];
|
delete database.collections[collKey];
|
||||||
continue;
|
continue;
|
||||||
@ -121,13 +129,8 @@ async function refresh() {
|
|||||||
collection.rename = async function() {
|
collection.rename = async function() {
|
||||||
const newCollKey = await dialogs.enterText('Rename collection', `Enter a new name for collection ${collKey}.`, collKey);
|
const newCollKey = await dialogs.enterText('Rename collection', `Enter a new name for collection ${collKey}.`, collKey);
|
||||||
if (newCollKey && (newCollKey !== collKey)) {
|
if (newCollKey && (newCollKey !== collKey)) {
|
||||||
const progress = startProgress(
|
|
||||||
`Renaming collection "${collKey}" to "${newCollKey}"…`
|
|
||||||
);
|
|
||||||
|
|
||||||
const ok = await RenameCollection(hostKey, dbKey, collKey, newCollKey);
|
const ok = await RenameCollection(hostKey, dbKey, collKey, newCollKey);
|
||||||
await database.open();
|
await database.open();
|
||||||
progress.end();
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
import input from '$lib/actions/input.js';
|
import input from '$lib/actions/input.js';
|
||||||
import dialogs from '$lib/dialogs.js';
|
import dialogs from '$lib/dialogs.js';
|
||||||
import { deepClone } from '$lib/objects.js';
|
import { deepClone } from '$lib/objects.js';
|
||||||
import { startProgress } from '$lib/progress.js';
|
|
||||||
import applicationSettings from '$lib/stores/settings.js';
|
import applicationSettings from '$lib/stores/settings.js';
|
||||||
import views from '$lib/stores/views.js';
|
import views from '$lib/stores/views.js';
|
||||||
import { convertLooseJson, stringCouldBeID } from '$lib/strings.js';
|
import { convertLooseJson, stringCouldBeID } from '$lib/strings.js';
|
||||||
@ -178,7 +177,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function saveDocument(event) {
|
async function saveDocument(event) {
|
||||||
const progress = startProgress('Performing update…');
|
|
||||||
const success = await UpdateFoundDocument(
|
const success = await UpdateFoundDocument(
|
||||||
collection.hostKey,
|
collection.hostKey,
|
||||||
collection.dbKey,
|
collection.dbKey,
|
||||||
@ -191,8 +189,6 @@
|
|||||||
objectViewerSuccessMessage = 'Document has been saved!';
|
objectViewerSuccessMessage = 'Document has been saved!';
|
||||||
submitQuery();
|
submitQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
progress.end();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$: collection && refresh();
|
$: collection && refresh();
|
||||||
@ -344,7 +340,10 @@
|
|||||||
<div>
|
<div>
|
||||||
<label class="field inline">
|
<label class="field inline">
|
||||||
<select bind:value={collection.viewKey}>
|
<select bind:value={collection.viewKey}>
|
||||||
{#each Object.entries(viewsForCollection) as [ key, view ]}
|
{#each Object.entries(viewsForCollection) as [
|
||||||
|
key,
|
||||||
|
view,
|
||||||
|
]}
|
||||||
<option value={key}>{view.name}</option>
|
<option value={key}>{view.name}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
@ -412,7 +411,15 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<datalist id="limits">
|
<datalist id="limits">
|
||||||
{#each [ 1, 5, 10, 25, 50, 100, 200 ] as value}
|
{#each [
|
||||||
|
1,
|
||||||
|
5,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
50,
|
||||||
|
100,
|
||||||
|
200,
|
||||||
|
] as value}
|
||||||
<option {value} />
|
<option {value} />
|
||||||
{/each}
|
{/each}
|
||||||
</datalist>
|
</datalist>
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
import DirectoryChooser from '$components/editors/directorychooser.svelte';
|
import DirectoryChooser from '$components/editors/directorychooser.svelte';
|
||||||
import Grid from '$components/grid/grid.svelte';
|
import Grid from '$components/grid/grid.svelte';
|
||||||
import Modal from '$components/modal.svelte';
|
import Modal from '$components/modal.svelte';
|
||||||
import { startProgress } from '$lib/progress.js';
|
|
||||||
import hostTree from '$lib/stores/hosttree.js';
|
import hostTree from '$lib/stores/hosttree.js';
|
||||||
import applicationSettings from '$lib/stores/settings.js';
|
import applicationSettings from '$lib/stores/settings.js';
|
||||||
import { OpenConnection, OpenDatabase } from '$wails/go/app/App.js';
|
import { OpenConnection, OpenDatabase } from '$wails/go/app/App.js';
|
||||||
@ -23,7 +22,6 @@
|
|||||||
info.collKeys = [];
|
info.collKeys = [];
|
||||||
|
|
||||||
if (hostKey) {
|
if (hostKey) {
|
||||||
const progress = startProgress(`Opening connection to host "${hostKey}"`);
|
|
||||||
const databases = await OpenConnection(hostKey);
|
const databases = await OpenConnection(hostKey);
|
||||||
|
|
||||||
if (databases && !$hostTree[hostKey]) {
|
if (databases && !$hostTree[hostKey]) {
|
||||||
@ -32,8 +30,6 @@
|
|||||||
$hostTree[hostKey].databases[dbKey] = $hostTree[hostKey].databases[dbKey] || { collections: {} };
|
$hostTree[hostKey].databases[dbKey] = $hostTree[hostKey].databases[dbKey] || { collections: {} };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
progress.end();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,14 +38,11 @@
|
|||||||
info.dbKey = dbKey;
|
info.dbKey = dbKey;
|
||||||
|
|
||||||
if (dbKey) {
|
if (dbKey) {
|
||||||
const progress = startProgress(`Opening database "${dbKey}"`);
|
|
||||||
const collections = await OpenDatabase(info.hostKey, dbKey);
|
const collections = await OpenDatabase(info.hostKey, dbKey);
|
||||||
|
|
||||||
for (const collKey of collections?.sort() || []) {
|
for (const collKey of collections?.sort() || []) {
|
||||||
$hostTree[info.hostKey].databases[dbKey].collections[collKey] = {};
|
$hostTree[info.hostKey].databases[dbKey].collections[collKey] = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
progress.end();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
frontend/wailsjs/go/app/App.d.ts
generated
vendored
2
frontend/wailsjs/go/app/App.d.ts
generated
vendored
@ -12,6 +12,8 @@ export function Aggregate(arg1:string,arg2:string,arg3:string,arg4:string,arg5:s
|
|||||||
|
|
||||||
export function AskConfirmation(arg1:string):Promise<boolean>;
|
export function AskConfirmation(arg1:string):Promise<boolean>;
|
||||||
|
|
||||||
|
export function ChooseDirectory(arg1:string):Promise<string>;
|
||||||
|
|
||||||
export function CountItems(arg1:string,arg2:string,arg3:string,arg4:string):Promise<app.CountItemsResult>;
|
export function CountItems(arg1:string,arg2:string,arg3:string,arg4:string):Promise<app.CountItemsResult>;
|
||||||
|
|
||||||
export function CreateIndex(arg1:string,arg2:string,arg3:string,arg4:string):Promise<string>;
|
export function CreateIndex(arg1:string,arg2:string,arg3:string,arg4:string):Promise<string>;
|
||||||
|
4
frontend/wailsjs/go/app/App.js
generated
4
frontend/wailsjs/go/app/App.js
generated
@ -14,6 +14,10 @@ export function AskConfirmation(arg1) {
|
|||||||
return window['go']['app']['App']['AskConfirmation'](arg1);
|
return window['go']['app']['App']['AskConfirmation'](arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function ChooseDirectory(arg1) {
|
||||||
|
return window['go']['app']['App']['ChooseDirectory'](arg1);
|
||||||
|
}
|
||||||
|
|
||||||
export function CountItems(arg1, arg2, arg3, arg4) {
|
export function CountItems(arg1, arg2, arg3, arg4) {
|
||||||
return window['go']['app']['App']['CountItems'](arg1, arg2, arg3, arg4);
|
return window['go']['app']['App']['CountItems'](arg1, arg2, arg3, arg4);
|
||||||
}
|
}
|
||||||
|
6
frontend/wailsjs/go/ui/UI.d.ts
generated
vendored
6
frontend/wailsjs/go/ui/UI.d.ts
generated
vendored
@ -4,12 +4,6 @@ import {context} from '../models';
|
|||||||
|
|
||||||
export function Beep():Promise<void>;
|
export function Beep():Promise<void>;
|
||||||
|
|
||||||
export function OpenDirectory(arg1:string):Promise<string>;
|
|
||||||
|
|
||||||
export function Reveal(arg1:string):Promise<void>;
|
export function Reveal(arg1:string):Promise<void>;
|
||||||
|
|
||||||
export function StartProgressBar(arg1:number,arg2:string):Promise<void>;
|
|
||||||
|
|
||||||
export function Startup(arg1:context.Context):Promise<void>;
|
export function Startup(arg1:context.Context):Promise<void>;
|
||||||
|
|
||||||
export function StopProgressBar(arg1:number):Promise<void>;
|
|
||||||
|
12
frontend/wailsjs/go/ui/UI.js
generated
12
frontend/wailsjs/go/ui/UI.js
generated
@ -6,22 +6,10 @@ export function Beep() {
|
|||||||
return window['go']['ui']['UI']['Beep']();
|
return window['go']['ui']['UI']['Beep']();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function OpenDirectory(arg1) {
|
|
||||||
return window['go']['ui']['UI']['OpenDirectory'](arg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Reveal(arg1) {
|
export function Reveal(arg1) {
|
||||||
return window['go']['ui']['UI']['Reveal'](arg1);
|
return window['go']['ui']['UI']['Reveal'](arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function StartProgressBar(arg1, arg2) {
|
|
||||||
return window['go']['ui']['UI']['StartProgressBar'](arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Startup(arg1) {
|
export function Startup(arg1) {
|
||||||
return window['go']['ui']['UI']['Startup'](arg1);
|
return window['go']['ui']['UI']['Startup'](arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function StopProgressBar(arg1) {
|
|
||||||
return window['go']['ui']['UI']['StopProgressBar'](arg1);
|
|
||||||
}
|
|
||||||
|
10
go.mod
10
go.mod
@ -10,14 +10,7 @@ require (
|
|||||||
go.mongodb.org/mongo-driver v1.11.7
|
go.mongodb.org/mongo-driver v1.11.7
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require github.com/imdario/mergo v0.3.12 // indirect
|
||||||
github.com/akavel/rsrc v0.10.2 // indirect
|
|
||||||
github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f // indirect
|
|
||||||
github.com/imdario/mergo v0.3.12 // indirect
|
|
||||||
github.com/josephspurrier/goversioninfo v1.4.0 // indirect
|
|
||||||
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 // indirect
|
|
||||||
golang.org/x/image v0.10.0 // indirect
|
|
||||||
)
|
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/bep/debounce v1.2.1 // indirect
|
github.com/bep/debounce v1.2.1 // indirect
|
||||||
@ -35,7 +28,6 @@ require (
|
|||||||
github.com/mattn/go-colorable v0.1.11 // indirect
|
github.com/mattn/go-colorable v0.1.11 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
||||||
github.com/ncruces/zenity v0.10.9
|
|
||||||
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
|
||||||
github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect
|
github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
39
go.sum
39
go.sum
@ -1,12 +1,8 @@
|
|||||||
github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
|
|
||||||
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
|
|
||||||
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
||||||
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
|
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f h1:OGqDDftRTwrvUoL6pOG7rYTmWsTCvyEWFsMjg+HcOaA=
|
|
||||||
github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f/go.mod h1:Dv9D0NUlAsaQcGQZa5kc5mqR9ua72SmA8VXi4cd+cBw=
|
|
||||||
github.com/gen2brain/beeep v0.0.0-20220909211152-5a9ec94374f6 h1:jFEK/SA/7E8lg9T33+y8D4Z0I782+bbiEjmyyklRzRQ=
|
github.com/gen2brain/beeep v0.0.0-20220909211152-5a9ec94374f6 h1:jFEK/SA/7E8lg9T33+y8D4Z0I782+bbiEjmyyklRzRQ=
|
||||||
github.com/gen2brain/beeep v0.0.0-20220909211152-5a9ec94374f6/go.mod h1:/WeFVhhxMOGypVKS0w8DUJxUBbHypnWkUVnW7p5c9Pw=
|
github.com/gen2brain/beeep v0.0.0-20220909211152-5a9ec94374f6/go.mod h1:/WeFVhhxMOGypVKS0w8DUJxUBbHypnWkUVnW7p5c9Pw=
|
||||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||||
@ -25,8 +21,6 @@ github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
|||||||
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
||||||
github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8=
|
|
||||||
github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY=
|
|
||||||
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
|
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
|
||||||
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
@ -54,8 +48,6 @@ github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9
|
|||||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||||
github.com/ncruces/zenity v0.10.9 h1:TYdNwEj9HiDDcpdsIUecBMsQw7L80Aiu/IJMM0Tao1E=
|
|
||||||
github.com/ncruces/zenity v0.10.9/go.mod h1:FzjqP1loicusCFJTdIt5Oqbmoj2zySHpM0RsgJeeCbk=
|
|
||||||
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
|
||||||
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
|
||||||
github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 h1:acNfDZXmm28D2Yg/c3ALnZStzNaZMSagpbr96vY6Zjc=
|
github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 h1:acNfDZXmm28D2Yg/c3ALnZStzNaZMSagpbr96vY6Zjc=
|
||||||
@ -64,8 +56,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 h1:GranzK4hv1/pqTIhMTXt2X8MmMOuH3hMeUR0o9SP5yc=
|
|
||||||
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844/go.mod h1:T1TLSfyWVBRXVGzWd0o9BI4kfoO9InEgfQe4NV3mLz8=
|
|
||||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||||
github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg=
|
github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg=
|
||||||
@ -97,36 +87,20 @@ github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCO
|
|||||||
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
|
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
|
||||||
go.mongodb.org/mongo-driver v1.11.7 h1:LIwYxASDLGUg/8wOhgOOZhX8tQa/9tgZPgzZoVqJvcs=
|
go.mongodb.org/mongo-driver v1.11.7 h1:LIwYxASDLGUg/8wOhgOOZhX8tQa/9tgZPgzZoVqJvcs=
|
||||||
go.mongodb.org/mongo-driver v1.11.7/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY=
|
go.mongodb.org/mongo-driver v1.11.7/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY=
|
||||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
|
|
||||||
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-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||||
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM=
|
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM=
|
||||||
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
||||||
golang.org/x/image v0.10.0 h1:gXjUUtwtx5yOE0VKWq1CH4IJAClq4UGgUA3i+rpON9M=
|
|
||||||
golang.org/x/image v0.10.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0=
|
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
|
||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
|
||||||
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-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-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
|
||||||
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
||||||
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
@ -137,27 +111,14 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
||||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
|
||||||
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.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
|
||||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
@ -166,3 +166,25 @@ func (a *App) AskConfirmation(message string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) ChooseDirectory(title string) string {
|
||||||
|
if title == "" {
|
||||||
|
title = "Choose a directory"
|
||||||
|
}
|
||||||
|
|
||||||
|
dir, err := wailsRuntime.OpenDirectoryDialog(a.ctx, wailsRuntime.OpenDialogOptions{
|
||||||
|
Title: title,
|
||||||
|
DefaultDirectory: a.Env.DownloadDirectory,
|
||||||
|
CanCreateDirectories: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
wailsRuntime.MessageDialog(a.ctx, wailsRuntime.MessageDialogOptions{
|
||||||
|
Title: "Error while opening directory",
|
||||||
|
Message: err.Error(),
|
||||||
|
Type: wailsRuntime.ErrorDialog,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return dir
|
||||||
|
}
|
||||||
|
@ -4,12 +4,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ncruces/zenity"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var showError = true
|
|
||||||
|
|
||||||
type AppLogger struct {
|
type AppLogger struct {
|
||||||
directory string
|
directory string
|
||||||
filename string
|
filename string
|
||||||
@ -26,24 +22,8 @@ func NewAppLogger(directory, filename string) *AppLogger {
|
|||||||
|
|
||||||
func (l *AppLogger) Print(message string) {
|
func (l *AppLogger) Print(message string) {
|
||||||
os.MkdirAll(l.directory, os.ModePerm)
|
os.MkdirAll(l.directory, os.ModePerm)
|
||||||
f, err := os.OpenFile(l.filepath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
f, _ := os.OpenFile(l.filepath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
|
f.WriteString(message)
|
||||||
if err != nil && showError {
|
|
||||||
zenity.Error(err.Error(), zenity.Title("Could not open logfile!"), zenity.ErrorIcon)
|
|
||||||
showError = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err = f.WriteString(message); err != nil {
|
|
||||||
if showError {
|
|
||||||
zenity.Error(err.Error(), zenity.Title("Could not write to logfile!"), zenity.ErrorIcon)
|
|
||||||
showError = false
|
|
||||||
} else {
|
|
||||||
showError = true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
showError = true
|
|
||||||
}
|
|
||||||
|
|
||||||
f.Close()
|
f.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package ui
|
|
||||||
|
|
||||||
import "github.com/ncruces/zenity"
|
|
||||||
|
|
||||||
func (u *UI) OpenDirectory(title string) string {
|
|
||||||
if title == "" {
|
|
||||||
title = "Choose a directory"
|
|
||||||
}
|
|
||||||
|
|
||||||
dir, err := zenity.SelectFile(zenity.Title(title), zenity.Directory(), zenity.Modal())
|
|
||||||
|
|
||||||
if err != nil && err != zenity.ErrCanceled {
|
|
||||||
zenity.Error("Error while opening directory", zenity.ErrorIcon)
|
|
||||||
}
|
|
||||||
|
|
||||||
return dir
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package ui
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/ncruces/zenity"
|
|
||||||
)
|
|
||||||
|
|
||||||
// @todo: this takes ~0.5 seconds. Improve?
|
|
||||||
func (u *UI) StartProgressBar(id uint, title string) {
|
|
||||||
if title == "" {
|
|
||||||
// default title
|
|
||||||
title = "Loading…"
|
|
||||||
}
|
|
||||||
p, err := zenity.Progress(zenity.Title(title), zenity.Pulsate(), zenity.Modal())
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
u.progressBars[id] = p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (u *UI) StopProgressBar(id uint) {
|
|
||||||
for try := 0; try < 10; try++ {
|
|
||||||
if p := u.progressBars[id]; p != nil {
|
|
||||||
p.Complete()
|
|
||||||
p.Close()
|
|
||||||
p = nil
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
println("Progress dialog not found:", id, try)
|
|
||||||
time.Sleep(100 * time.Millisecond)
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,18 +5,14 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/gen2brain/beeep"
|
"github.com/gen2brain/beeep"
|
||||||
"github.com/ncruces/zenity"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type UI struct {
|
type UI struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
progressBars map[uint]zenity.ProgressDialog
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func New() *UI {
|
func New() *UI {
|
||||||
return &UI{
|
return &UI{}
|
||||||
progressBars: make(map[uint]zenity.ProgressDialog),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UI) Startup(ctx context.Context) {
|
func (u *UI) Startup(ctx context.Context) {
|
||||||
|
Loading…
Reference in New Issue
Block a user