Compare commits
	
		
			3 Commits
		
	
	
		
			5025807b14
			...
			d86c0d37af
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						d86c0d37af
	
				 | 
					
					
						|||
| 
						
						
							
						
						f09dd01b6d
	
				 | 
					
					
						|||
| 
						
						
							
						
						6358d5d8cc
	
				 | 
					
					
						
@@ -17,6 +17,9 @@ type ViewContract interface {
 | 
				
			|||||||
	Main(
 | 
						Main(
 | 
				
			||||||
		runConvert func(setting HandleConvertSetting, progressbar *widget.ProgressBar) error,
 | 
							runConvert func(setting HandleConvertSetting, progressbar *widget.ProgressBar) error,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
						SelectFFPath(
 | 
				
			||||||
 | 
							func(ffmpegPath string, ffprobePath string) error,
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type View struct {
 | 
					type View struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,7 @@
 | 
				
			|||||||
package setting
 | 
					package convertor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"ffmpegGui/helper"
 | 
						"ffmpegGui/helper"
 | 
				
			||||||
	"ffmpegGui/localizer"
 | 
					 | 
				
			||||||
	"fyne.io/fyne/v2"
 | 
						"fyne.io/fyne/v2"
 | 
				
			||||||
	"fyne.io/fyne/v2/canvas"
 | 
						"fyne.io/fyne/v2/canvas"
 | 
				
			||||||
	"fyne.io/fyne/v2/container"
 | 
						"fyne.io/fyne/v2/container"
 | 
				
			||||||
@@ -13,22 +12,6 @@ import (
 | 
				
			|||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ViewContract interface {
 | 
					 | 
				
			||||||
	SelectFFPath(func(ffmpegPath string, ffprobePath string) error)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type View struct {
 | 
					 | 
				
			||||||
	w                fyne.Window
 | 
					 | 
				
			||||||
	localizerService localizer.ServiceContract
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewView(w fyne.Window, localizerService localizer.ServiceContract) *View {
 | 
					 | 
				
			||||||
	return &View{
 | 
					 | 
				
			||||||
		w:                w,
 | 
					 | 
				
			||||||
		localizerService: localizerService,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (v View) SelectFFPath(save func(ffmpegPath string, ffprobePath string) error) {
 | 
					func (v View) SelectFFPath(save func(ffmpegPath string, ffprobePath string) error) {
 | 
				
			||||||
	errorMessage := canvas.NewText("", color.RGBA{255, 0, 0, 255})
 | 
						errorMessage := canvas.NewText("", color.RGBA{255, 0, 0, 255})
 | 
				
			||||||
	errorMessage.TextSize = 16
 | 
						errorMessage.TextSize = 16
 | 
				
			||||||
@@ -124,13 +107,3 @@ func (v View) getButtonSelectFile() (filePath *string, button *widget.Button, bu
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func setStringErrorStyle(text *canvas.Text) {
 | 
					 | 
				
			||||||
	text.Color = color.RGBA{255, 0, 0, 255}
 | 
					 | 
				
			||||||
	text.Refresh()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func setStringSuccessStyle(text *canvas.Text) {
 | 
					 | 
				
			||||||
	text.Color = color.RGBA{49, 127, 114, 255}
 | 
					 | 
				
			||||||
	text.Refresh()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										27
									
								
								src/go.mod
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								src/go.mod
									
									
									
									
									
								
							@@ -3,17 +3,25 @@ module ffmpegGui
 | 
				
			|||||||
go 1.21
 | 
					go 1.21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
	fyne.io/fyne/v2 v2.4.3 // indirect
 | 
						fyne.io/fyne/v2 v2.4.3
 | 
				
			||||||
 | 
						github.com/BurntSushi/toml v1.3.2
 | 
				
			||||||
 | 
						github.com/mattn/go-sqlite3 v1.14.21
 | 
				
			||||||
 | 
						github.com/nicksnyder/go-i18n/v2 v2.4.0
 | 
				
			||||||
 | 
						golang.org/x/text v0.14.0
 | 
				
			||||||
 | 
						gorm.io/driver/sqlite v1.5.4
 | 
				
			||||||
 | 
						gorm.io/gorm v1.25.6
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
	fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e // indirect
 | 
						fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e // indirect
 | 
				
			||||||
	github.com/BurntSushi/toml v1.3.2 // indirect
 | 
					 | 
				
			||||||
	github.com/davecgh/go-spew v1.1.1 // indirect
 | 
						github.com/davecgh/go-spew v1.1.1 // indirect
 | 
				
			||||||
	github.com/fredbi/uri v1.0.0 // indirect
 | 
						github.com/fredbi/uri v1.1.0 // indirect
 | 
				
			||||||
	github.com/fsnotify/fsnotify v1.6.0 // indirect
 | 
						github.com/fsnotify/fsnotify v1.6.0 // indirect
 | 
				
			||||||
	github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect
 | 
						github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect
 | 
				
			||||||
	github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect
 | 
						github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect
 | 
				
			||||||
	github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect
 | 
						github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect
 | 
				
			||||||
	github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect
 | 
						github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
 | 
				
			||||||
	github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b // indirect
 | 
						github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240118000515-a250818d05e3 // indirect
 | 
				
			||||||
	github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 // indirect
 | 
						github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 // indirect
 | 
				
			||||||
	github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a // indirect
 | 
						github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a // indirect
 | 
				
			||||||
	github.com/godbus/dbus/v5 v5.1.0 // indirect
 | 
						github.com/godbus/dbus/v5 v5.1.0 // indirect
 | 
				
			||||||
@@ -21,8 +29,6 @@ require (
 | 
				
			|||||||
	github.com/jinzhu/inflection v1.0.0 // indirect
 | 
						github.com/jinzhu/inflection v1.0.0 // indirect
 | 
				
			||||||
	github.com/jinzhu/now v1.1.5 // indirect
 | 
						github.com/jinzhu/now v1.1.5 // indirect
 | 
				
			||||||
	github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e // indirect
 | 
						github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e // indirect
 | 
				
			||||||
	github.com/mattn/go-sqlite3 v1.14.19 // indirect
 | 
					 | 
				
			||||||
	github.com/nicksnyder/go-i18n/v2 v2.3.0 // indirect
 | 
					 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect
 | 
						github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect
 | 
				
			||||||
	github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect
 | 
						github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect
 | 
				
			||||||
@@ -31,11 +37,8 @@ require (
 | 
				
			|||||||
	github.com/yuin/goldmark v1.5.5 // indirect
 | 
						github.com/yuin/goldmark v1.5.5 // indirect
 | 
				
			||||||
	golang.org/x/image v0.11.0 // indirect
 | 
						golang.org/x/image v0.11.0 // indirect
 | 
				
			||||||
	golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect
 | 
						golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect
 | 
				
			||||||
	golang.org/x/net v0.17.0 // indirect
 | 
						golang.org/x/net v0.20.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.13.0 // indirect
 | 
						golang.org/x/sys v0.16.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
					 | 
				
			||||||
	gopkg.in/yaml.v3 v3.0.1 // indirect
 | 
						gopkg.in/yaml.v3 v3.0.1 // indirect
 | 
				
			||||||
	gorm.io/driver/sqlite v1.5.4 // indirect
 | 
					 | 
				
			||||||
	gorm.io/gorm v1.25.5 // indirect
 | 
					 | 
				
			||||||
	honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
 | 
						honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								src/go.sum
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								src/go.sum
									
									
									
									
									
								
							@@ -75,6 +75,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
 | 
				
			|||||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 | 
					github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 | 
				
			||||||
github.com/fredbi/uri v1.0.0 h1:s4QwUAZ8fz+mbTsukND+4V5f+mJ/wjaTokwstGUAemg=
 | 
					github.com/fredbi/uri v1.0.0 h1:s4QwUAZ8fz+mbTsukND+4V5f+mJ/wjaTokwstGUAemg=
 | 
				
			||||||
github.com/fredbi/uri v1.0.0/go.mod h1:1xC40RnIOGCaQzswaOvrzvG/3M3F0hyDVb3aO/1iGy0=
 | 
					github.com/fredbi/uri v1.0.0/go.mod h1:1xC40RnIOGCaQzswaOvrzvG/3M3F0hyDVb3aO/1iGy0=
 | 
				
			||||||
 | 
					github.com/fredbi/uri v1.1.0 h1:OqLpTXtyRg9ABReqvDGdJPqZUxs8cyBDOMXBbskCaB8=
 | 
				
			||||||
 | 
					github.com/fredbi/uri v1.1.0/go.mod h1:aYTUoAXBOq7BLfVJ8GnKmfcuURosB1xyHDIfWeC/iW4=
 | 
				
			||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 | 
					github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 | 
				
			||||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
 | 
					github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
 | 
				
			||||||
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
 | 
					github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
 | 
				
			||||||
@@ -87,16 +89,22 @@ github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2/go.mod h1:eO7W361vml
 | 
				
			|||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 | 
					github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 | 
				
			||||||
github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 h1:zDw5v7qm4yH7N8C8uWd+8Ii9rROdgWxQuGoJ9WDXxfk=
 | 
					github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 h1:zDw5v7qm4yH7N8C8uWd+8Ii9rROdgWxQuGoJ9WDXxfk=
 | 
				
			||||||
github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw=
 | 
					github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw=
 | 
				
			||||||
 | 
					github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 h1:5BVwOaUSBTlVZowGO6VZGw2H/zl9nrd3eCZfYV+NfQA=
 | 
				
			||||||
 | 
					github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw=
 | 
				
			||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
 | 
					github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
 | 
				
			||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
				
			||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
				
			||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
				
			||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU=
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU=
 | 
				
			||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
				
			||||||
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240118000515-a250818d05e3 h1:nanQfMsOs3gnuKRm0E5jXWomedE/9YIFXdmHJNZYeqc=
 | 
				
			||||||
 | 
					github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240118000515-a250818d05e3/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 | 
				
			||||||
github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 h1:VkKnvzbvHqgEfm351rfr8Uclu5fnwq8HP2ximUzJsBM=
 | 
					github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 h1:VkKnvzbvHqgEfm351rfr8Uclu5fnwq8HP2ximUzJsBM=
 | 
				
			||||||
github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8/go.mod h1:h29xCucjNsDcYb7+0rJokxVwYAq+9kQ19WiFuBKkYtc=
 | 
					github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8/go.mod h1:h29xCucjNsDcYb7+0rJokxVwYAq+9kQ19WiFuBKkYtc=
 | 
				
			||||||
github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a h1:VjN8ttdfklC0dnAdKbZqGNESdERUxtE3l8a/4Grgarc=
 | 
					github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a h1:VjN8ttdfklC0dnAdKbZqGNESdERUxtE3l8a/4Grgarc=
 | 
				
			||||||
github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k=
 | 
					github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k=
 | 
				
			||||||
 | 
					github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22 h1:LBQTFxP2MfsyEDqSKmUBZaDuDHN1vpqDyOZjcqS7MYI=
 | 
				
			||||||
 | 
					github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o=
 | 
				
			||||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
					github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
				
			||||||
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
 | 
					github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
 | 
				
			||||||
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
					github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
				
			||||||
@@ -206,14 +214,18 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV
 | 
				
			|||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
					github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
				
			||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
					github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
				
			||||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 | 
					github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 | 
				
			||||||
 | 
					github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 | 
				
			||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
					github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
				
			||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
					github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
				
			||||||
 | 
					github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 | 
				
			||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
					github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
				
			||||||
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
 | 
					github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
 | 
				
			||||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 | 
					github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 | 
					github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI=
 | 
					github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 | 
					github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 | 
				
			||||||
 | 
					github.com/mattn/go-sqlite3 v1.14.21 h1:IXocQLOykluc3xPE0Lvy8FtggMz1G+U3mEjg+0zGizc=
 | 
				
			||||||
 | 
					github.com/mattn/go-sqlite3 v1.14.21/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 | 
				
			||||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 | 
					github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 | 
				
			||||||
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
 | 
					github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
 | 
				
			||||||
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
 | 
					github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
 | 
				
			||||||
@@ -230,6 +242,8 @@ github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJE
 | 
				
			|||||||
github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
 | 
					github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
 | 
				
			||||||
github.com/nicksnyder/go-i18n/v2 v2.3.0 h1:2NPsCsNFCVd7i+Su0xYsBrIhS3bE2XMv5gNTft2O+PQ=
 | 
					github.com/nicksnyder/go-i18n/v2 v2.3.0 h1:2NPsCsNFCVd7i+Su0xYsBrIhS3bE2XMv5gNTft2O+PQ=
 | 
				
			||||||
github.com/nicksnyder/go-i18n/v2 v2.3.0/go.mod h1:nxYSZE9M0bf3Y70gPQjN9ha7XNHX7gMc814+6wVyEI4=
 | 
					github.com/nicksnyder/go-i18n/v2 v2.3.0/go.mod h1:nxYSZE9M0bf3Y70gPQjN9ha7XNHX7gMc814+6wVyEI4=
 | 
				
			||||||
 | 
					github.com/nicksnyder/go-i18n/v2 v2.4.0 h1:3IcvPOAvnCKwNm0TB0dLDTuawWEj+ax/RERNC+diLMM=
 | 
				
			||||||
 | 
					github.com/nicksnyder/go-i18n/v2 v2.4.0/go.mod h1:nxYSZE9M0bf3Y70gPQjN9ha7XNHX7gMc814+6wVyEI4=
 | 
				
			||||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 | 
					github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 | 
				
			||||||
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 | 
					github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 | 
				
			||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
@@ -389,6 +403,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
 | 
				
			|||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 | 
					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/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
 | 
				
			||||||
 | 
					golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
					golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
					golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
				
			||||||
@@ -465,6 +481,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc
 | 
				
			|||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
					golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
 | 
					golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
 | 
				
			||||||
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
					golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.16.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.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/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
 | 
				
			||||||
@@ -479,8 +497,6 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 | 
				
			||||||
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
					golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			||||||
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
 | 
					 | 
				
			||||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
					 | 
				
			||||||
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/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
					golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
				
			||||||
@@ -648,12 +664,14 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
 | 
				
			|||||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 | 
					google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 | 
				
			||||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 | 
					google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 | 
				
			||||||
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=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 | 
					gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 | 
				
			||||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
					gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 | 
					gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
@@ -661,10 +679,10 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			|||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
gorm.io/driver/sqlite v1.5.4 h1:IqXwXi8M/ZlPzH/947tn5uik3aYQslP9BVveoax0nV0=
 | 
					gorm.io/driver/sqlite v1.5.4 h1:IqXwXi8M/ZlPzH/947tn5uik3aYQslP9BVveoax0nV0=
 | 
				
			||||||
gorm.io/driver/sqlite v1.5.4/go.mod h1:qxAuCol+2r6PannQDpOP1FP6ag3mKi4esLnB/jHed+4=
 | 
					gorm.io/driver/sqlite v1.5.4/go.mod h1:qxAuCol+2r6PannQDpOP1FP6ag3mKi4esLnB/jHed+4=
 | 
				
			||||||
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55 h1:sC1Xj4TYrLqg1n3AN10w871An7wJM0gzgcm8jkIkECQ=
 | 
					 | 
				
			||||||
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
 | 
					 | 
				
			||||||
gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
 | 
					gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
 | 
				
			||||||
gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
 | 
					gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
 | 
				
			||||||
 | 
					gorm.io/gorm v1.25.6 h1:V92+vVda1wEISSOMtodHVRcUIOPYa2tgQtyF+DfFx+A=
 | 
				
			||||||
 | 
					gorm.io/gorm v1.25.6/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
 | 
				
			||||||
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 h1:oomkgU6VaQDsV6qZby2uz1Lap0eXmku8+2em3A/l700=
 | 
					honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 h1:oomkgU6VaQDsV6qZby2uz1Lap0eXmku8+2em3A/l700=
 | 
				
			||||||
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2/go.mod h1:sUMDUKNB2ZcVjt92UnLy3cdGs+wDAcrPdV3JP6sVgA4=
 | 
					honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2/go.mod h1:sUMDUKNB2ZcVjt92UnLy3cdGs+wDAcrPdV3JP6sVgA4=
 | 
				
			||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
					honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,13 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ConvertorHandlerContract interface {
 | 
				
			||||||
 | 
						MainConvertor()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ConvertorHandler struct {
 | 
					type ConvertorHandler struct {
 | 
				
			||||||
	convertorService  convertor.ServiceContract
 | 
						convertorService  convertor.ServiceContract
 | 
				
			||||||
	convertorView     convertor.ViewContract
 | 
						convertorView     convertor.ViewContract
 | 
				
			||||||
	settingView       setting.ViewContract
 | 
					 | 
				
			||||||
	localizerView     localizer.ViewContract
 | 
					 | 
				
			||||||
	settingRepository setting.RepositoryContract
 | 
						settingRepository setting.RepositoryContract
 | 
				
			||||||
	localizerService  localizer.ServiceContract
 | 
						localizerService  localizer.ServiceContract
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -27,33 +29,23 @@ type ConvertorHandler struct {
 | 
				
			|||||||
func NewConvertorHandler(
 | 
					func NewConvertorHandler(
 | 
				
			||||||
	convertorService convertor.ServiceContract,
 | 
						convertorService convertor.ServiceContract,
 | 
				
			||||||
	convertorView convertor.ViewContract,
 | 
						convertorView convertor.ViewContract,
 | 
				
			||||||
	settingView setting.ViewContract,
 | 
					 | 
				
			||||||
	localizerView localizer.ViewContract,
 | 
					 | 
				
			||||||
	settingRepository setting.RepositoryContract,
 | 
						settingRepository setting.RepositoryContract,
 | 
				
			||||||
	localizerService localizer.ServiceContract,
 | 
						localizerService localizer.ServiceContract,
 | 
				
			||||||
) *ConvertorHandler {
 | 
					) *ConvertorHandler {
 | 
				
			||||||
	return &ConvertorHandler{
 | 
						return &ConvertorHandler{
 | 
				
			||||||
		convertorService:  convertorService,
 | 
							convertorService:  convertorService,
 | 
				
			||||||
		convertorView:     convertorView,
 | 
							convertorView:     convertorView,
 | 
				
			||||||
		settingView:       settingView,
 | 
					 | 
				
			||||||
		localizerView:     localizerView,
 | 
					 | 
				
			||||||
		settingRepository: settingRepository,
 | 
							settingRepository: settingRepository,
 | 
				
			||||||
		localizerService:  localizerService,
 | 
							localizerService:  localizerService,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h ConvertorHandler) LanguageSelection() {
 | 
					func (h ConvertorHandler) MainConvertor() {
 | 
				
			||||||
	h.localizerView.LanguageSelection(func(lang localizer.Lang) {
 | 
					 | 
				
			||||||
		h.GetConvertor()
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (h ConvertorHandler) GetConvertor() {
 | 
					 | 
				
			||||||
	if h.checkingFFPathUtilities() == true {
 | 
						if h.checkingFFPathUtilities() == true {
 | 
				
			||||||
		h.convertorView.Main(h.runConvert)
 | 
							h.convertorView.Main(h.runConvert)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	h.settingView.SelectFFPath(h.saveSettingFFPath)
 | 
						h.convertorView.SelectFFPath(h.saveSettingFFPath)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h ConvertorHandler) runConvert(setting convertor.HandleConvertSetting, progressbar *widget.ProgressBar) error {
 | 
					func (h ConvertorHandler) runConvert(setting convertor.HandleConvertSetting, progressbar *widget.ProgressBar) error {
 | 
				
			||||||
@@ -124,7 +116,7 @@ func (h ConvertorHandler) saveSettingFFPath(ffmpegPath string, ffprobePath strin
 | 
				
			|||||||
	ffprobeEntity := setting.Setting{Code: "ffprobe", Value: ffprobePath}
 | 
						ffprobeEntity := setting.Setting{Code: "ffprobe", Value: ffprobePath}
 | 
				
			||||||
	_, _ = h.settingRepository.Create(ffprobeEntity)
 | 
						_, _ = h.settingRepository.Create(ffprobeEntity)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	h.GetConvertor()
 | 
						h.MainConvertor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -143,15 +135,15 @@ func (h ConvertorHandler) checkingFFPath() bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type progress struct {
 | 
					type Progress struct {
 | 
				
			||||||
	totalDuration    float64
 | 
						totalDuration    float64
 | 
				
			||||||
	progressbar      *widget.ProgressBar
 | 
						progressbar      *widget.ProgressBar
 | 
				
			||||||
	protocol         string
 | 
						protocol         string
 | 
				
			||||||
	localizerService localizer.ServiceContract
 | 
						localizerService localizer.ServiceContract
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewProgress(totalDuration float64, progressbar *widget.ProgressBar, localizerService localizer.ServiceContract) progress {
 | 
					func NewProgress(totalDuration float64, progressbar *widget.ProgressBar, localizerService localizer.ServiceContract) Progress {
 | 
				
			||||||
	return progress{
 | 
						return Progress{
 | 
				
			||||||
		totalDuration:    totalDuration,
 | 
							totalDuration:    totalDuration,
 | 
				
			||||||
		progressbar:      progressbar,
 | 
							progressbar:      progressbar,
 | 
				
			||||||
		protocol:         "pipe:",
 | 
							protocol:         "pipe:",
 | 
				
			||||||
@@ -159,11 +151,11 @@ func NewProgress(totalDuration float64, progressbar *widget.ProgressBar, localiz
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (p progress) GetProtocole() string {
 | 
					func (p Progress) GetProtocole() string {
 | 
				
			||||||
	return p.protocol
 | 
						return p.protocol
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (p progress) Run(stdOut io.ReadCloser, stdErr io.ReadCloser) error {
 | 
					func (p Progress) Run(stdOut io.ReadCloser, stdErr io.ReadCloser) error {
 | 
				
			||||||
	isProcessCompleted := false
 | 
						isProcessCompleted := false
 | 
				
			||||||
	var errorText string
 | 
						var errorText string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								src/handler/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/handler/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					package handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ffmpegGui/localizer"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MainHandler struct {
 | 
				
			||||||
 | 
						convertorHandler    ConvertorHandlerContract
 | 
				
			||||||
 | 
						menuHandler         MenuHandlerContract
 | 
				
			||||||
 | 
						localizerRepository localizer.RepositoryContract
 | 
				
			||||||
 | 
						localizerService    localizer.ServiceContract
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMainHandler(
 | 
				
			||||||
 | 
						convertorHandler ConvertorHandlerContract,
 | 
				
			||||||
 | 
						menuHandler MenuHandlerContract,
 | 
				
			||||||
 | 
						localizerRepository localizer.RepositoryContract,
 | 
				
			||||||
 | 
						localizerService localizer.ServiceContract,
 | 
				
			||||||
 | 
					) *MainHandler {
 | 
				
			||||||
 | 
						return &MainHandler{
 | 
				
			||||||
 | 
							convertorHandler:    convertorHandler,
 | 
				
			||||||
 | 
							menuHandler:         menuHandler,
 | 
				
			||||||
 | 
							localizerRepository: localizerRepository,
 | 
				
			||||||
 | 
							localizerService:    localizerService,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h MainHandler) Start() {
 | 
				
			||||||
 | 
						language, err := h.localizerRepository.GetCode()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							h.menuHandler.LanguageSelection()
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						_ = h.localizerService.SetCurrentLanguageByCode(language)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						h.convertorHandler.MainConvertor()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										78
									
								
								src/handler/menu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/handler/menu.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					package handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ffmpegGui/localizer"
 | 
				
			||||||
 | 
						"fyne.io/fyne/v2"
 | 
				
			||||||
 | 
						"github.com/nicksnyder/go-i18n/v2/i18n"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MenuHandlerContract interface {
 | 
				
			||||||
 | 
						GetMainMenu() *fyne.MainMenu
 | 
				
			||||||
 | 
						LanguageSelection()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type menuItems struct {
 | 
				
			||||||
 | 
						menuItem map[string]*fyne.MenuItem
 | 
				
			||||||
 | 
						menu     map[string]*fyne.Menu
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MenuHandler struct {
 | 
				
			||||||
 | 
						convertorHandler    ConvertorHandlerContract
 | 
				
			||||||
 | 
						localizerService    localizer.ServiceContract
 | 
				
			||||||
 | 
						localizerView       localizer.ViewContract
 | 
				
			||||||
 | 
						localizerRepository localizer.RepositoryContract
 | 
				
			||||||
 | 
						menuItems           *menuItems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewMenuHandler(
 | 
				
			||||||
 | 
						convertorHandler ConvertorHandlerContract,
 | 
				
			||||||
 | 
						localizerService localizer.ServiceContract,
 | 
				
			||||||
 | 
						localizerView localizer.ViewContract,
 | 
				
			||||||
 | 
						localizerRepository localizer.RepositoryContract,
 | 
				
			||||||
 | 
					) *MenuHandler {
 | 
				
			||||||
 | 
						return &MenuHandler{
 | 
				
			||||||
 | 
							convertorHandler:    convertorHandler,
 | 
				
			||||||
 | 
							localizerService:    localizerService,
 | 
				
			||||||
 | 
							localizerView:       localizerView,
 | 
				
			||||||
 | 
							localizerRepository: localizerRepository,
 | 
				
			||||||
 | 
							menuItems:           &menuItems{menuItem: map[string]*fyne.MenuItem{}, menu: map[string]*fyne.Menu{}},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h MenuHandler) GetMainMenu() *fyne.MainMenu {
 | 
				
			||||||
 | 
						quit := fyne.NewMenuItem(h.localizerService.GetMessage(&i18n.LocalizeConfig{
 | 
				
			||||||
 | 
							MessageID: "exit",
 | 
				
			||||||
 | 
						}), nil)
 | 
				
			||||||
 | 
						quit.IsQuit = true
 | 
				
			||||||
 | 
						h.menuItems.menuItem["exit"] = quit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						languageSelection := fyne.NewMenuItem(h.localizerService.GetMessage(&i18n.LocalizeConfig{
 | 
				
			||||||
 | 
							MessageID: "changeLanguage",
 | 
				
			||||||
 | 
						}), h.LanguageSelection)
 | 
				
			||||||
 | 
						h.menuItems.menuItem["changeLanguage"] = languageSelection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						settings := fyne.NewMenu(h.localizerService.GetMessage(&i18n.LocalizeConfig{
 | 
				
			||||||
 | 
							MessageID: "settings",
 | 
				
			||||||
 | 
						}), languageSelection, quit)
 | 
				
			||||||
 | 
						h.menuItems.menu["settings"] = settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return fyne.NewMainMenu(settings)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h MenuHandler) LanguageSelection() {
 | 
				
			||||||
 | 
						h.localizerView.LanguageSelection(func(lang localizer.Lang) {
 | 
				
			||||||
 | 
							_, _ = h.localizerRepository.Save(lang.Code)
 | 
				
			||||||
 | 
							h.menuMessageReload()
 | 
				
			||||||
 | 
							h.convertorHandler.MainConvertor()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h MenuHandler) menuMessageReload() {
 | 
				
			||||||
 | 
						for messageID, menu := range h.menuItems.menuItem {
 | 
				
			||||||
 | 
							menu.Label = h.localizerService.GetMessage(&i18n.LocalizeConfig{MessageID: messageID})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for messageID, menu := range h.menuItems.menu {
 | 
				
			||||||
 | 
							menu.Label = h.localizerService.GetMessage(&i18n.LocalizeConfig{MessageID: messageID})
 | 
				
			||||||
 | 
							menu.Refresh()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -2,6 +2,10 @@
 | 
				
			|||||||
hash = "sha1-52b13f1b13e82d22e8c4102332db5d4ec551247b"
 | 
					hash = "sha1-52b13f1b13e82d22e8c4102332db5d4ec551247b"
 | 
				
			||||||
other = "Folder where it will be saved:"
 | 
					other = "Folder where it will be saved:"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[changeLanguage]
 | 
				
			||||||
 | 
					hash = "sha1-8b276eaf378d485c769fb3d5dcc06dfc25b0c01b"
 | 
				
			||||||
 | 
					other = "Change language"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[checkboxOverwriteOutputFilesTitle]
 | 
					[checkboxOverwriteOutputFilesTitle]
 | 
				
			||||||
hash = "sha1-5860124bb781e7ef680f573fa93977e96328d4e7"
 | 
					hash = "sha1-5860124bb781e7ef680f573fa93977e96328d4e7"
 | 
				
			||||||
other = "Allow file to be overwritten"
 | 
					other = "Allow file to be overwritten"
 | 
				
			||||||
@@ -42,6 +46,10 @@ other = "this is not FFprobe"
 | 
				
			|||||||
hash = "sha1-83da899677cdc90e4344e3b94ee03c46b51bee4c"
 | 
					hash = "sha1-83da899677cdc90e4344e3b94ee03c46b51bee4c"
 | 
				
			||||||
other = "You haven't selected a folder to save!"
 | 
					other = "You haven't selected a folder to save!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[exit]
 | 
				
			||||||
 | 
					hash = "sha1-c42457057d1ab7950cea00719cbe0b078891775f"
 | 
				
			||||||
 | 
					other = "Exit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[fileVideoForConversionTitle]
 | 
					[fileVideoForConversionTitle]
 | 
				
			||||||
hash = "sha1-5e727d4a2ff3f21080e51e81641595b2e668f3be"
 | 
					hash = "sha1-5e727d4a2ff3f21080e51e81641595b2e668f3be"
 | 
				
			||||||
other = "File for conversion:"
 | 
					other = "File for conversion:"
 | 
				
			||||||
@@ -70,6 +78,10 @@ other = "Save"
 | 
				
			|||||||
hash = "sha1-95581446a28d968ff1a027c623159a7eb08654cf"
 | 
					hash = "sha1-95581446a28d968ff1a027c623159a7eb08654cf"
 | 
				
			||||||
other = "Specify the path to FFmpeg and FFprobe"
 | 
					other = "Specify the path to FFmpeg and FFprobe"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[settings]
 | 
				
			||||||
 | 
					hash = "sha1-7f17c7c62a7fd8d1a508481f4778688927734c2f"
 | 
				
			||||||
 | 
					other = "Settings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[titleDownloadLink]
 | 
					[titleDownloadLink]
 | 
				
			||||||
hash = "sha1-92df86371f6c3a06ca1e4754f113142776a32d49"
 | 
					hash = "sha1-92df86371f6c3a06ca1e4754f113142776a32d49"
 | 
				
			||||||
other = "You can download it from here"
 | 
					other = "You can download it from here"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,10 @@
 | 
				
			|||||||
hash = "sha1-52b13f1b13e82d22e8c4102332db5d4ec551247b"
 | 
					hash = "sha1-52b13f1b13e82d22e8c4102332db5d4ec551247b"
 | 
				
			||||||
other = "Файлды сақтауға арналған каталог:"
 | 
					other = "Файлды сақтауға арналған каталог:"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[changeLanguage]
 | 
				
			||||||
 | 
					hash = "sha1-8b276eaf378d485c769fb3d5dcc06dfc25b0c01b"
 | 
				
			||||||
 | 
					other = "Тілді өзгерту"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[checkboxOverwriteOutputFilesTitle]
 | 
					[checkboxOverwriteOutputFilesTitle]
 | 
				
			||||||
hash = "sha1-5860124bb781e7ef680f573fa93977e96328d4e7"
 | 
					hash = "sha1-5860124bb781e7ef680f573fa93977e96328d4e7"
 | 
				
			||||||
other = "Файлды қайта жазуға рұқсат беріңіз"
 | 
					other = "Файлды қайта жазуға рұқсат беріңіз"
 | 
				
			||||||
@@ -42,6 +46,10 @@ other = "бұл FFprobe емес"
 | 
				
			|||||||
hash = "sha1-83da899677cdc90e4344e3b94ee03c46b51bee4c"
 | 
					hash = "sha1-83da899677cdc90e4344e3b94ee03c46b51bee4c"
 | 
				
			||||||
other = "Сіз сақталатын қалтаны таңдамадыңыз!"
 | 
					other = "Сіз сақталатын қалтаны таңдамадыңыз!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[exit]
 | 
				
			||||||
 | 
					hash = "sha1-c42457057d1ab7950cea00719cbe0b078891775f"
 | 
				
			||||||
 | 
					other = "Шығу"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[fileVideoForConversionTitle]
 | 
					[fileVideoForConversionTitle]
 | 
				
			||||||
hash = "sha1-5e727d4a2ff3f21080e51e81641595b2e668f3be"
 | 
					hash = "sha1-5e727d4a2ff3f21080e51e81641595b2e668f3be"
 | 
				
			||||||
other = "Түрлендіруге арналған файл:"
 | 
					other = "Түрлендіруге арналған файл:"
 | 
				
			||||||
@@ -70,6 +78,10 @@ other = "Сақтау"
 | 
				
			|||||||
hash = "sha1-95581446a28d968ff1a027c623159a7eb08654cf"
 | 
					hash = "sha1-95581446a28d968ff1a027c623159a7eb08654cf"
 | 
				
			||||||
other = "FFmpeg және FFprobe жолын көрсетіңіз"
 | 
					other = "FFmpeg және FFprobe жолын көрсетіңіз"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[settings]
 | 
				
			||||||
 | 
					hash = "sha1-7f17c7c62a7fd8d1a508481f4778688927734c2f"
 | 
				
			||||||
 | 
					other = "Параметрлер"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[titleDownloadLink]
 | 
					[titleDownloadLink]
 | 
				
			||||||
hash = "sha1-92df86371f6c3a06ca1e4754f113142776a32d49"
 | 
					hash = "sha1-92df86371f6c3a06ca1e4754f113142776a32d49"
 | 
				
			||||||
other = "Сіз оны осы жерден жүктей аласыз"
 | 
					other = "Сіз оны осы жерден жүктей аласыз"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
buttonForSelectedDirTitle = "Папка куда будет сохраняться:"
 | 
					buttonForSelectedDirTitle = "Папка куда будет сохраняться:"
 | 
				
			||||||
 | 
					changeLanguage = "Поменять язык"
 | 
				
			||||||
checkboxOverwriteOutputFilesTitle = "Разрешить перезаписать файл"
 | 
					checkboxOverwriteOutputFilesTitle = "Разрешить перезаписать файл"
 | 
				
			||||||
choose = "выбрать"
 | 
					choose = "выбрать"
 | 
				
			||||||
converterVideoFilesSubmitTitle = "Конвертировать"
 | 
					converterVideoFilesSubmitTitle = "Конвертировать"
 | 
				
			||||||
@@ -9,6 +10,7 @@ errorDatabase = "не смогли создать файл 'database' в пап
 | 
				
			|||||||
errorFFmpeg = "это не FFmpeg"
 | 
					errorFFmpeg = "это не FFmpeg"
 | 
				
			||||||
errorFFprobe = "это не FFprobe"
 | 
					errorFFprobe = "это не FFprobe"
 | 
				
			||||||
errorSelectedFolderSave = "Не выбрали папку для сохранения!"
 | 
					errorSelectedFolderSave = "Не выбрали папку для сохранения!"
 | 
				
			||||||
 | 
					exit = "Выход"
 | 
				
			||||||
fileVideoForConversionTitle = "Файл для ковертации:"
 | 
					fileVideoForConversionTitle = "Файл для ковертации:"
 | 
				
			||||||
languageSelectionFormHead = "Переключить язык"
 | 
					languageSelectionFormHead = "Переключить язык"
 | 
				
			||||||
languageSelectionHead = "Выберите язык"
 | 
					languageSelectionHead = "Выберите язык"
 | 
				
			||||||
@@ -16,4 +18,5 @@ pathToFfmpeg = "Путь к ffmpeg:"
 | 
				
			|||||||
pathToFfprobe = "Путь к ffprobe:"
 | 
					pathToFfprobe = "Путь к ffprobe:"
 | 
				
			||||||
save = "Сохранить"
 | 
					save = "Сохранить"
 | 
				
			||||||
selectFFPathTitle = "Укажите путь к FFmpeg и к FFprobe"
 | 
					selectFFPathTitle = "Укажите путь к FFmpeg и к FFprobe"
 | 
				
			||||||
 | 
					settings = "Настройки"
 | 
				
			||||||
titleDownloadLink = "Скачать можно от сюда"
 | 
					titleDownloadLink = "Скачать можно от сюда"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					[changeLanguage]
 | 
				
			||||||
 | 
					hash = "sha1-8b276eaf378d485c769fb3d5dcc06dfc25b0c01b"
 | 
				
			||||||
 | 
					other = "Change language"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[exit]
 | 
				
			||||||
 | 
					hash = "sha1-c42457057d1ab7950cea00719cbe0b078891775f"
 | 
				
			||||||
 | 
					other = "Exit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[settings]
 | 
				
			||||||
 | 
					hash = "sha1-7f17c7c62a7fd8d1a508481f4778688927734c2f"
 | 
				
			||||||
 | 
					other = "Settings"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					[changeLanguage]
 | 
				
			||||||
 | 
					hash = "sha1-8b276eaf378d485c769fb3d5dcc06dfc25b0c01b"
 | 
				
			||||||
 | 
					other = "Тілді өзгерту"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[exit]
 | 
				
			||||||
 | 
					hash = "sha1-c42457057d1ab7950cea00719cbe0b078891775f"
 | 
				
			||||||
 | 
					other = "Шығу"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[settings]
 | 
				
			||||||
 | 
					hash = "sha1-7f17c7c62a7fd8d1a508481f4778688927734c2f"
 | 
				
			||||||
 | 
					other = "Параметрлер"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								src/localizer/repository.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/localizer/repository.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package localizer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"ffmpegGui/setting"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RepositoryContract interface {
 | 
				
			||||||
 | 
						GetCode() (string, error)
 | 
				
			||||||
 | 
						Save(code string) (setting.Setting, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Repository struct {
 | 
				
			||||||
 | 
						settingRepository setting.RepositoryContract
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewRepository(settingRepository setting.RepositoryContract) *Repository {
 | 
				
			||||||
 | 
						return &Repository{settingRepository: settingRepository}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r Repository) GetCode() (string, error) {
 | 
				
			||||||
 | 
						return r.settingRepository.GetValue("language")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r Repository) Save(code string) (setting.Setting, error) {
 | 
				
			||||||
 | 
						return r.settingRepository.CreateOrUpdate("language", code)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -14,6 +14,7 @@ type ServiceContract interface {
 | 
				
			|||||||
	GetLanguages() []Lang
 | 
						GetLanguages() []Lang
 | 
				
			||||||
	GetMessage(localizeConfig *i18n.LocalizeConfig) string
 | 
						GetMessage(localizeConfig *i18n.LocalizeConfig) string
 | 
				
			||||||
	SetCurrentLanguage(lang Lang) error
 | 
						SetCurrentLanguage(lang Lang) error
 | 
				
			||||||
 | 
						SetCurrentLanguageByCode(code string) error
 | 
				
			||||||
	GetCurrentLanguage() *CurrentLanguage
 | 
						GetCurrentLanguage() *CurrentLanguage
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -67,12 +68,12 @@ func initLanguages(directory string, bundle *i18n.Bundle) ([]Lang, error) {
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, file := range files {
 | 
						for _, file := range files {
 | 
				
			||||||
		language, err := bundle.LoadMessageFile(file)
 | 
							lang, err := bundle.LoadMessageFile(file)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		title := cases.Title(language.Tag).String(display.Self.Name(language.Tag))
 | 
							title := cases.Title(lang.Tag).String(display.Self.Name(lang.Tag))
 | 
				
			||||||
		languages = append(languages, Lang{Code: language.Tag.String(), Title: title})
 | 
							languages = append(languages, Lang{Code: lang.Tag.String(), Title: title})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sort.Sort(languagesSort(languages))
 | 
						sort.Sort(languagesSort(languages))
 | 
				
			||||||
@@ -101,6 +102,15 @@ func (s Service) SetCurrentLanguage(lang Lang) error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s Service) SetCurrentLanguageByCode(code string) error {
 | 
				
			||||||
 | 
						lang, err := language.Parse(code)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						title := cases.Title(lang).String(display.Self.Name(lang))
 | 
				
			||||||
 | 
						return s.SetCurrentLanguage(Lang{Code: lang.String(), Title: title})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s Service) GetCurrentLanguage() *CurrentLanguage {
 | 
					func (s Service) GetCurrentLanguage() *CurrentLanguage {
 | 
				
			||||||
	return s.currentLanguage
 | 
						return s.currentLanguage
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								src/main.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/main.go
									
									
									
									
									
								
							@@ -79,12 +79,17 @@ func main() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	localizerView := localizer.NewView(w, localizerService)
 | 
						localizerView := localizer.NewView(w, localizerService)
 | 
				
			||||||
	convertorView := convertor.NewView(w, localizerService)
 | 
						convertorView := convertor.NewView(w, localizerService)
 | 
				
			||||||
	settingView := setting.NewView(w, localizerService)
 | 
					 | 
				
			||||||
	convertorService := convertor.NewService(ffPathUtilities)
 | 
						convertorService := convertor.NewService(ffPathUtilities)
 | 
				
			||||||
	defer appCloseWithConvert(convertorService)
 | 
						defer appCloseWithConvert(convertorService)
 | 
				
			||||||
	mainHandler := handler.NewConvertorHandler(convertorService, convertorView, settingView, localizerView, settingRepository, localizerService)
 | 
						convertorHandler := handler.NewConvertorHandler(convertorService, convertorView, settingRepository, localizerService)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mainHandler.LanguageSelection()
 | 
						localizerRepository := localizer.NewRepository(settingRepository)
 | 
				
			||||||
 | 
						mainMenu := handler.NewMenuHandler(convertorHandler, localizerService, localizerView, localizerRepository)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mainHandler := handler.NewMainHandler(convertorHandler, mainMenu, localizerRepository, localizerService)
 | 
				
			||||||
 | 
						mainHandler.Start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						w.SetMainMenu(mainMenu.GetMainMenu())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	w.ShowAndRun()
 | 
						w.ShowAndRun()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,13 @@
 | 
				
			|||||||
package setting
 | 
					package setting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"gorm.io/gorm"
 | 
						"gorm.io/gorm"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RepositoryContract interface {
 | 
					type RepositoryContract interface {
 | 
				
			||||||
	Create(setting Setting) (Setting, error)
 | 
						Create(setting Setting) (Setting, error)
 | 
				
			||||||
 | 
						CreateOrUpdate(code string, value string) (Setting, error)
 | 
				
			||||||
	GetValue(code string) (value string, err error)
 | 
						GetValue(code string) (value string, err error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -33,3 +35,21 @@ func (r Repository) Create(setting Setting) (Setting, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return setting, err
 | 
						return setting, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (r Repository) CreateOrUpdate(code string, value string) (Setting, error) {
 | 
				
			||||||
 | 
						var setting Setting
 | 
				
			||||||
 | 
						err := r.db.Where("code = ?", code).First(&setting).Error
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, gorm.ErrRecordNotFound) == true {
 | 
				
			||||||
 | 
								setting = Setting{Code: code, Value: value}
 | 
				
			||||||
 | 
								return r.Create(setting)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								return setting, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err = r.db.Model(&setting).UpdateColumn("value", value).Error
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return setting, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return setting, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user