blabla
parent
98023484cf
commit
69c15d3f57
|
@ -356,5 +356,8 @@ Object.assign(native, {
|
|||
handler('window', { action: 'set_keep_below', value: setting }, null)
|
||||
}
|
||||
},
|
||||
notify({ title, summary, icon, progress = 0, urgency = 0 }) {
|
||||
handler('notify', { title, summary, icon, progress, urgency })
|
||||
},
|
||||
handler
|
||||
})
|
||||
|
|
47
main.py
47
main.py
|
@ -6,8 +6,9 @@ import gi, json, os, shutil
|
|||
gi.require_version("Gtk", "3.0")
|
||||
gi.require_version("WebKit2", "4.1")
|
||||
gi.require_version("Keybinder", "3.0")
|
||||
gi.require_version('Notify', '0.7') # gir1.2-notify-0.7
|
||||
|
||||
from gi.repository import Gtk, Gdk, WebKit2, GLib, Gio, Keybinder
|
||||
from gi.repository import Gtk, Gdk, WebKit2, GLib, Gio, Keybinder, Notify
|
||||
from gi.repository.GdkPixbuf import Pixbuf
|
||||
|
||||
from notes.utils import *
|
||||
|
@ -23,7 +24,9 @@ except (ValueError, ImportError):
|
|||
|
||||
# 初始化 Keybinder
|
||||
Keybinder.init()
|
||||
Notify.init(Notify.get_app_name() or 'webapp')
|
||||
|
||||
# im_context = Gtk.IMContext()
|
||||
|
||||
|
||||
class WebKitWindow(Gtk.Window):
|
||||
|
@ -51,6 +54,7 @@ class WebKitWindow(Gtk.Window):
|
|||
|
||||
settings.set_user_agent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) weapp/1.0.0 Version/16.4 Safari/605.1.15")
|
||||
|
||||
|
||||
manager = WebKit2.UserContentManager()
|
||||
|
||||
script = open(self.file_path('./inject.js'), 'r').read()
|
||||
|
@ -69,24 +73,26 @@ class WebKitWindow(Gtk.Window):
|
|||
|
||||
context = self.webview.get_context()
|
||||
context.register_uri_scheme('app', self.resource_request_callback)
|
||||
# self.webview.connect("resource-load-started", self.resource_request_callback)
|
||||
|
||||
|
||||
im = self.webview.get_input_method_context()
|
||||
im.set_enable_preedit(True)
|
||||
|
||||
|
||||
|
||||
# self.webview.load_uri("http://127.0.0.1:10086/index.html")
|
||||
self.webview.load_uri("app:///index.html")
|
||||
# self.webview.load_uri("https://benchmark.wkit.fun")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
self.add(self.webview)
|
||||
|
||||
|
||||
|
||||
def resource_request_callback(self, req):
|
||||
|
||||
schema = req.get_scheme()
|
||||
|
@ -96,11 +102,6 @@ class WebKitWindow(Gtk.Window):
|
|||
if schema == 'app':
|
||||
data = open(self.file_path('./webview' + pathname)).read()
|
||||
data = Gio.MemoryInputStream.new_from_data(data.encode())
|
||||
# res = WebKit2.URISchemeResponse.new(data, -1)
|
||||
# res.set_content_type(get_mimetype(ext))
|
||||
# res.set_http_headers('text/html')
|
||||
# res.set_status(200)
|
||||
# req.finish_with_response(res)
|
||||
req.finish(data, -1, get_mimetype(ext))
|
||||
return True
|
||||
else:
|
||||
|
@ -344,6 +345,22 @@ class WebKitWindow(Gtk.Window):
|
|||
elif params['action'] == 'is_visible':
|
||||
output = self.is_visible()
|
||||
|
||||
case 'notify':
|
||||
title = params.get('title')
|
||||
summary = params.get('summary')
|
||||
icon = params.get('icon')
|
||||
progress = params.get('progress')
|
||||
urgency = params.get('urgency')
|
||||
|
||||
notify = Notify.Notification.new(title, summary, icon)
|
||||
|
||||
if progress:
|
||||
notify.set_hint('value', progress)
|
||||
|
||||
notify.set_urgency(urgency)
|
||||
notify.add_action("click", "Click Me!", my_callback_func)
|
||||
|
||||
notify.show()
|
||||
|
||||
# 有回调则返回结果
|
||||
if callback :
|
||||
|
@ -352,8 +369,13 @@ class WebKitWindow(Gtk.Window):
|
|||
|
||||
def all_quit(win):
|
||||
print('朕要休息了~~~')
|
||||
Notify.uninit()
|
||||
Gtk.main_quit()
|
||||
|
||||
def my_callback_func(notification, action_name, user_data):
|
||||
print("Button clicked! Action name: %s" % action_name)
|
||||
notification.close()
|
||||
|
||||
|
||||
|
||||
win = WebKitWindow()
|
||||
|
@ -361,6 +383,7 @@ win.connect("destroy", all_quit)
|
|||
win.show_all()
|
||||
|
||||
|
||||
|
||||
tray = win.create_tray()
|
||||
|
||||
Gtk.main()
|
|
@ -80,6 +80,13 @@ class App extends Component {
|
|||
>
|
||||
rename
|
||||
</button>
|
||||
<button
|
||||
@click=${async function () {
|
||||
native.notify({ title: 'hello', icon: 'chrome' })
|
||||
}}
|
||||
>
|
||||
通知
|
||||
</button>
|
||||
<img style="width:100px;border:1px solid #09f;" src=${this.img} />
|
||||
<textarea @paste=${this.pasteImg}></textarea>
|
||||
`
|
||||
|
|
Reference in New Issue