mirror of
https://github.com/gen2brain/cbconvert
synced 2026-06-30 09:11:54 +02:00
Remove dbus portal
This commit is contained in:
@@ -5,7 +5,6 @@ go 1.26
|
|||||||
require (
|
require (
|
||||||
github.com/gen2brain/cbconvert v1.1.0
|
github.com/gen2brain/cbconvert v1.1.0
|
||||||
github.com/gen2brain/iup-go/iup v0.32.1-0.20260604112206-a19da6654449
|
github.com/gen2brain/iup-go/iup v0.32.1-0.20260604112206-a19da6654449
|
||||||
github.com/godbus/dbus/v5 v5.2.2
|
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|||||||
@@ -83,8 +83,6 @@ github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8b
|
|||||||
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
||||||
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/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ=
|
|
||||||
github.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
|
|
||||||
github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
||||||
github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
||||||
github.com/golang/geo v0.0.0-20260612074446-f1a45663b0f3 h1:UlucSQUu9SZdDRlMWv5N/T3Rig9gv615vWvHFKrXHWA=
|
github.com/golang/geo v0.0.0-20260612074446-f1a45663b0f3 h1:UlucSQUu9SZdDRlMWv5N/T3Rig9gv615vWvHFKrXHWA=
|
||||||
|
|||||||
@@ -957,3 +957,52 @@ func onFilterChanged(ih iup.Ihandle) int {
|
|||||||
|
|
||||||
return iup.DEFAULT
|
return iup.DEFAULT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fileDlg(title string, multiple, directory bool) ([]string, error) {
|
||||||
|
ret := make([]string, 0)
|
||||||
|
|
||||||
|
dlg := iup.FileDlg()
|
||||||
|
defer dlg.Destroy()
|
||||||
|
|
||||||
|
if !directory {
|
||||||
|
mf := "YES"
|
||||||
|
if !multiple {
|
||||||
|
mf = "NO"
|
||||||
|
}
|
||||||
|
|
||||||
|
dlg.SetAttributes(map[string]string{
|
||||||
|
"DIALOGTYPE": "OPEN",
|
||||||
|
"MULTIPLEFILES": mf,
|
||||||
|
"EXTFILTER": "Comic Files|*.rar;*.zip;*.7z;*.tar;*.cbr;*.cbz;*.cb7;*.cbt;*.pdf;*.epub;*.mobi;*.docx;*.pptx|",
|
||||||
|
"FILTER": "*.cb*", // for Motif
|
||||||
|
"TITLE": title,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
dlg.SetAttributes(map[string]string{
|
||||||
|
"DIALOGTYPE": "DIR",
|
||||||
|
"TITLE": title,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
iup.Popup(dlg, iup.CENTERPARENT, iup.CENTERPARENT)
|
||||||
|
|
||||||
|
if dlg.GetInt("STATUS") == 0 {
|
||||||
|
if !directory {
|
||||||
|
value := dlg.GetAttribute("VALUE")
|
||||||
|
sp := strings.Split(value, "|")
|
||||||
|
|
||||||
|
if len(sp) > 1 {
|
||||||
|
for _, file := range sp[1 : len(sp)-1] {
|
||||||
|
ret = append(ret, filepath.Join(sp[0], file))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ret = append(ret, value)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
value := dlg.GetAttribute("VALUE")
|
||||||
|
ret = append(ret, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
//go:build !portal
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gen2brain/iup-go/iup"
|
|
||||||
)
|
|
||||||
|
|
||||||
func fileDlg(title string, multiple, directory bool) ([]string, error) {
|
|
||||||
ret := make([]string, 0)
|
|
||||||
|
|
||||||
dlg := iup.FileDlg()
|
|
||||||
defer dlg.Destroy()
|
|
||||||
|
|
||||||
if !directory {
|
|
||||||
mf := "YES"
|
|
||||||
if !multiple {
|
|
||||||
mf = "NO"
|
|
||||||
}
|
|
||||||
|
|
||||||
dlg.SetAttributes(map[string]string{
|
|
||||||
"DIALOGTYPE": "OPEN",
|
|
||||||
"MULTIPLEFILES": mf,
|
|
||||||
"EXTFILTER": "Comic Files|*.rar;*.zip;*.7z;*.tar;*.cbr;*.cbz;*.cb7;*.cbt;*.pdf;*.epub;*.mobi;*.docx;*.pptx|",
|
|
||||||
"FILTER": "*.cb*", // for Motif
|
|
||||||
"TITLE": title,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
dlg.SetAttributes(map[string]string{
|
|
||||||
"DIALOGTYPE": "DIR",
|
|
||||||
"TITLE": title,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
iup.Popup(dlg, iup.CENTERPARENT, iup.CENTERPARENT)
|
|
||||||
|
|
||||||
if dlg.GetInt("STATUS") == 0 {
|
|
||||||
if !directory {
|
|
||||||
value := dlg.GetAttribute("VALUE")
|
|
||||||
sp := strings.Split(value, "|")
|
|
||||||
|
|
||||||
if strings.ToLower(iup.GetGlobal("DRIVER")) == "cocoa" {
|
|
||||||
for _, file := range sp {
|
|
||||||
ret = append(ret, file)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if len(sp) > 1 {
|
|
||||||
for _, file := range sp[1 : len(sp)-1] {
|
|
||||||
ret = append(ret, filepath.Join(sp[0], file))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ret = append(ret, value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
value := dlg.GetAttribute("VALUE")
|
|
||||||
ret = append(ret, value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret, nil
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
//go:build portal
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/url"
|
|
||||||
|
|
||||||
"github.com/godbus/dbus/v5"
|
|
||||||
)
|
|
||||||
|
|
||||||
func fileDlg(title string, multiple, directory bool) ([]string, error) {
|
|
||||||
ret := make([]string, 0)
|
|
||||||
|
|
||||||
conn, err := dbus.ConnectSessionBus()
|
|
||||||
if err != nil {
|
|
||||||
return ret, err
|
|
||||||
}
|
|
||||||
defer conn.Close()
|
|
||||||
|
|
||||||
dest := "org.freedesktop.portal.Desktop"
|
|
||||||
path := "/org/freedesktop/portal/desktop"
|
|
||||||
resp := "org.freedesktop.portal.Request.Response"
|
|
||||||
|
|
||||||
if err = conn.AddMatchSignal(
|
|
||||||
dbus.WithMatchInterface(dest),
|
|
||||||
dbus.WithMatchObjectPath(dbus.ObjectPath(path)),
|
|
||||||
dbus.WithMatchSender(conn.Names()[0]),
|
|
||||||
); err != nil {
|
|
||||||
return ret, err
|
|
||||||
}
|
|
||||||
|
|
||||||
c := make(chan *dbus.Signal, 10)
|
|
||||||
conn.Signal(c)
|
|
||||||
|
|
||||||
type Item struct {
|
|
||||||
Index uint32
|
|
||||||
Filter string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Filter struct {
|
|
||||||
Title string
|
|
||||||
Filters []Item
|
|
||||||
}
|
|
||||||
|
|
||||||
filters := []Filter{
|
|
||||||
{
|
|
||||||
"Comic Files",
|
|
||||||
[]Item{
|
|
||||||
Item{0, "*.rar"},
|
|
||||||
Item{0, "*.zip"},
|
|
||||||
Item{0, "*.7z"},
|
|
||||||
Item{0, "*.tar"},
|
|
||||||
Item{0, "*.cbr"},
|
|
||||||
Item{0, "*.cbz"},
|
|
||||||
Item{0, "*.cb7"},
|
|
||||||
Item{0, "*.cbt"},
|
|
||||||
Item{0, "*.pdf"},
|
|
||||||
Item{0, "*.epub"},
|
|
||||||
Item{0, "*.mobi"},
|
|
||||||
Item{0, "*.docx"},
|
|
||||||
Item{0, "*.pptx"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
opts := map[string]any{
|
|
||||||
"multiple": multiple,
|
|
||||||
"directory": directory,
|
|
||||||
}
|
|
||||||
|
|
||||||
if !directory {
|
|
||||||
opts["filters"] = filters
|
|
||||||
}
|
|
||||||
|
|
||||||
obj := conn.Object(dest, dbus.ObjectPath(path))
|
|
||||||
call := obj.Call("org.freedesktop.portal.FileChooser.OpenFile", 0, "", title, opts)
|
|
||||||
if call.Err != nil {
|
|
||||||
return ret, call.Err
|
|
||||||
}
|
|
||||||
|
|
||||||
for v := range c {
|
|
||||||
if v.Name != resp {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
status := v.Body[0].(uint32)
|
|
||||||
|
|
||||||
if status == 0 {
|
|
||||||
m := v.Body[1].(map[string]dbus.Variant)
|
|
||||||
uris := m["uris"].Value().([]string)
|
|
||||||
|
|
||||||
for _, uri := range uris {
|
|
||||||
u, err := url.ParseRequestURI(uri)
|
|
||||||
if err != nil {
|
|
||||||
return ret, err
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = append(ret, u.Path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret, nil
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user