mirror of
https://github.com/gryf/wmdocklib.git
synced 2025-12-19 12:28:10 +01:00
Readme update.
This commit is contained in:
103
README.rst
103
README.rst
@@ -5,6 +5,7 @@ wmdocklib
|
|||||||
This is a library which was extracted from a pretty much dead `pywmdockapps`_
|
This is a library which was extracted from a pretty much dead `pywmdockapps`_
|
||||||
project, and is meant to help with writing Window Maker dockapps in Python.
|
project, and is meant to help with writing Window Maker dockapps in Python.
|
||||||
|
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
@@ -14,12 +15,112 @@ system wide:
|
|||||||
|
|
||||||
.. code::shell-session
|
.. code::shell-session
|
||||||
|
|
||||||
$ python setup.py install
|
$ pip install .
|
||||||
|
|
||||||
Note, that you'll need C compiler and Xorg dev package to build the C
|
Note, that you'll need C compiler and Xorg dev package to build the C
|
||||||
extension.
|
extension.
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
There is a base class, a foundation for building custom dockapps. Simplest
|
||||||
|
possible usage would be:
|
||||||
|
|
||||||
|
.. code:: python
|
||||||
|
|
||||||
|
import wmdocklib
|
||||||
|
|
||||||
|
app = wmdocklib.DockApp()
|
||||||
|
app.run()
|
||||||
|
|
||||||
|
this will run dockapp, which doesn't do anything, it just displays black
|
||||||
|
background with 3 pixel wide border.
|
||||||
|
|
||||||
|
To build something useful, there will be a need for adding implementation,
|
||||||
|
and optionally bitmaps in XPM format for additional graphical elements, like
|
||||||
|
fonts, buttons, app mask and so on.
|
||||||
|
|
||||||
|
To create an application, it simple as:
|
||||||
|
|
||||||
|
- create a class inherited from DockApp,
|
||||||
|
- implement ``run()`` and ``main_loop()`` methods,
|
||||||
|
- optionally, add graphics (like bitmap charset), command line options handling,
|
||||||
|
and possibly configuration file.
|
||||||
|
|
||||||
|
So below is the example for displaying random number:
|
||||||
|
|
||||||
|
.. code:: python
|
||||||
|
:number-lines:
|
||||||
|
|
||||||
|
import random
|
||||||
|
import time
|
||||||
|
|
||||||
|
import wmdocklib
|
||||||
|
|
||||||
|
|
||||||
|
FONTS = '''\
|
||||||
|
/* XPM */
|
||||||
|
static char *square_[] = {
|
||||||
|
"156 8 2 1",
|
||||||
|
" c black",
|
||||||
|
"% c gray100",
|
||||||
|
" % % % % % % % % %%%%% % %%%%% %%%%% % % %%%%% %%%%% %%%%% %%%%% %%%%% ",
|
||||||
|
" % % % % % % % % % %% % % % % % % % % % % % ",
|
||||||
|
" % % % %%%%% %% %% % % % % % % % % % % % % % % ",
|
||||||
|
" % % % % %%%%% % % % % %%%%% %%%% %%%%% %%%%% %%%%% % %%%%% %%%%% ",
|
||||||
|
" %%%%% %% %% %% % % % % % % % % % % % % % ",
|
||||||
|
" % % % %% %% % % % % % % % % % % % % % % ",
|
||||||
|
" % % % % % % %% % %%%%% %%% %%%%% %%%%% % %%%%% %%%%% % %%%%% %%%%% ",
|
||||||
|
" % ",
|
||||||
|
};
|
||||||
|
'''
|
||||||
|
|
||||||
|
class MyDockApp(wmdocklib.DockApp):
|
||||||
|
|
||||||
|
font_dimentions = (6, 8)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.font = FONTS
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.prepare_pixmaps()
|
||||||
|
self.open_xwindow()
|
||||||
|
self.main_loop()
|
||||||
|
|
||||||
|
def main_loop(self):
|
||||||
|
while True:
|
||||||
|
self.add_string(f'{random.randint(0, 999):3}', 1, 1)
|
||||||
|
self.redraw()
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
|
||||||
|
app = MyDockApp()
|
||||||
|
app.run()
|
||||||
|
|
||||||
|
|
||||||
|
In this simple application, there is (partial) charset defined (lines 7-22),
|
||||||
|
which is assigned to the ``self.font`` (this attribute can be either a string
|
||||||
|
with XPM data like above, or just a filename), by which it will be indicated
|
||||||
|
that font data will be used.
|
||||||
|
|
||||||
|
Than, class ``MyDockApp`` is defined, with overriden methods ``run()`` and
|
||||||
|
``main_loop()``.
|
||||||
|
|
||||||
|
As for method ``run()`` it is kind of initialization of the object and window.
|
||||||
|
By calling ``prepare_pixmaps`` there will be prepared combined bitmaps of
|
||||||
|
background, pattern and (optionally) fonts, coordinates for the charset, it's
|
||||||
|
width and heigh, and finally load prepared pixmap to memory.
|
||||||
|
|
||||||
|
Function ``open_xwindow`` will create and show the window. And than main loop
|
||||||
|
is called, which iterate endlessly calling ``add_string()`` method for display
|
||||||
|
string on the dockapp. Note, that ``add_string()`` method (and underlying
|
||||||
|
``add_char()``) assuming, that fonts in bitmap are ordered just like ``ord()``
|
||||||
|
will do.
|
||||||
|
|
||||||
|
Method ``redraw()`` will trigger entire window to be refreshed.
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
=======
|
=======
|
||||||
|
|||||||
Reference in New Issue
Block a user