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 (
|
||||
github.com/gen2brain/cbconvert v1.1.0
|
||||
github.com/gen2brain/iup-go/iup v0.32.1-0.20260604112206-a19da6654449
|
||||
github.com/godbus/dbus/v5 v5.2.2
|
||||
)
|
||||
|
||||
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-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/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-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
|
||||
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
|
||||
}
|
||||
|
||||
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