qutebrowser/doc/notes

97 lines
3.2 KiB
Plaintext
Raw Normal View History

2014-06-20 06:45:02 +02:00
multiple questions
==================
For modular mode, we should implement a kind of stack: Save the current
question if any is available, then after exec_() restore it.
For async questions, we check if we're currently asking *any* question
(sync/async), and if so, add the question to a deque instead. After a question
gets hidden (e.g. in on_mode_left?), we check if another question is in the
deque, and if so pop and ask it.
2014-06-06 10:46:18 +02:00
click inspirations
===================
- Editor: https://github.com/mitsuhiko/click/blob/master/click/_termui_impl.py#L311
- Types: https://github.com/mitsuhiko/click/blob/master/click/types.py
2014-06-04 22:34:18 +02:00
Multiwindow
===========
cmdutils.register (and thus Command) gets argument scope which is global/window
when scope=global, instance is searched starting with the application
singleton.
when scope=window, instance is searched starting with the window the command
was executed in.
Each window has its own CommandDispatcher, which adds the window as an
attribute to every Command before calling the handler. The handler then uses
this to get the starting point for instance=.
IPC
===
We use QLocalSocket to communicate with another instance
TODO: find out why many apps just use QLocalSocket as a control channel, and
shared memory for data.
Max data size might be 8k, but this is enough for commandline args.
http://developer.nokia.com/community/wiki/Qt_IPC_using_QLocalSocket_%26_QLocalServer
https://www.mail-archive.com/pyqt@riverbankcomputing.com/msg22736.html
http://stackoverflow.com/a/8795563/2085149
http://nullege.com/codes/show/src%40n%40i%40ninja-ide2-2.1.1%40ninja_ide%40core%40ipc.py/20/PyQt4.QtNetwork.QLocalSocket/python
http://nullege.com/codes/show/src%40t%40a%40taurus-3.0.0%40lib%40taurus%40qt%40qtgui%40container%40taurusmainwindow.py/780/PyQt4.QtNetwork.QLocalSocket/python
http://nullege.com/codes/show/src%40h%40e%40Heliotrope-HEAD%40purple_server.py/95/PyQt4.QtNetwork.QLocalSocket/python
Netscape cookies
================
http://www.cookiecentral.com/faq/#3.5
https://docs.python.org/3.4/library/http.cookies.html
http://qt-project.org/doc/qt-4.8/qnetworkcookie.html
- Second column (flag): TRUE if domain starts with ., else FALSE
- if a cookie is a http-only cookie domain is prepended with a #HttpOnly_
- Python's http.cookiejar.MozillaCookieJar might help
Caching
=======
QNetworkManager.setCache() and use a QNetworkDiskCache probably
Element selection detection
===========================
Possible options:
- javascript: http://stackoverflow.com/a/2848120/2085149
- microFocusChanged and check active element via:
frame = page.currentFrame()
elem = frame.findFirstElement('*:focus')
Completion view (not QTreeView)
===============================
Perhaps using a QHBoxLayout of QTableViews and creating/destroying them based
on the completion would be a better idea?
Shutdown
========
Some pointers:
https://code.google.com/p/webscraping/source/browse/webkit.py
Simply does setPage(None) in __del__ of webview.
http://www.tenox.net/out/wrp11-qt.py
does del self._window; del self._view; del self._page
http://pydoc.net/Python/grab/0.4.5/ghost.ghost/
does webview.close(); del self.manager; del self.page; del self.mainframe