Skip to main content

A datatype holding textual data (textmodel) and a text widget (wxtextview) as demonstration. Textmodel does not depend on a specific gui-toolkit.

Project description

0. INTRO

Textmodel is a datatype which can hold textstrings together with format information. It is similar to GtkTextBuffer in functionality, but it is completely independent of a gui-toolkit.

Wxtextview is an example widget written for the wx toolkit. It has the basic functionality of a text editor. It is developed and tested mainly on windows, however it seems to work on linux and mac as well.

Textmodel and wxtextview are experimental. They are neither bug free nor stable. Wxtextview lacks the configurability which you might expect from a real text widget. Hack it to fit you needs.

With release 0.2 two demos were added which show the more advanced possibilities of textmodel:

notebook.py:A mathematica-like notebook interface for python
math_demo.py:A demonstration of typesetting mathematics

1. USAGE

Running the demos:

Just cd to the demo directory and execute the scripts. No installationis needed. External dependencies are wxpython (all demos) and matplotlib (notebook). The demos were tested on linux, windows and mac platforms.

$ cd demo/
$ python  textmodel.py

Using textmodel:

from textmodel import TextModel, defaultstyle

text = TextModel(u'Hello World!')

# highlight the word "World"
text.set_properties(6, 11, bgcolor = 'yellow')

# query the color
print text.get_style(0)['bgcolor'] # --> color of first character
print text.get_style(10)['bgcolor'] # --> color of last character


# defaultstyle is just a dict
print defaultstyle
# -> {'bgcolor': 'white', 'textcolor': 'black', 'fontsize': 10, 'selected': False}

# you can change it
defaultstyle.clear()
defaultstyle['underline'] = False
defaultstyle['italic'] = False

# test:
text = TextModel(u'Hello World!')
text.set_properties(6, 11, underline = True)
print text.get_style(10)
# -> {'underline': True, 'italic': False}

Using the wxtextview-widget:

from textmodel import TextModel
from wxtextview import WXTextView

import wx
app = wx.App()


model = TextModel(u'Hello World!')
model.set_properties(6, 11, fontsize=14)
model.set_properties(6, 11, bgcolor='yellow')

# display the texmodel in a view
frame = wx.Frame(None)
view = WXTextView(frame, -1)
view.model = model
frame.Show()

# set cursor and selection
view.cursor = 5
view.selection = 0, 5

# display the same textmodel in a second view
frame2 = wx.Frame(None)
view2 = WXTextView(frame2, -1)
view2.model = model
frame2.Show()

app.MainLoop()

2. NOTES

Most python files contain tests and demos. For example:

$ cd textmodel/
$ python  textmodel.py


######################## textmodel.py ########################
> test_00: remove w. simplify............................... ok
> test_01: row, col......................................... ok
> test_02: update linelengths bei insert.................... ok
> test_03: TextModel........................................ ok
...

3. LICENSE

See file LICENSE.

Project details


Release history Release notifications

History Node

0.3.6

History Node

0.3.5

History Node

0.3.4

History Node

0.3.3

History Node

0.3.2

History Node

0.3.1

History Node

0.3

History Node

0.2.2

History Node

0.2.1

This version
History Node

0.2

History Node

0.1.1

History Node

0.1

History Node

0.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
textmodel-0.2.tar.gz (43.7 kB) Copy SHA256 hash SHA256 Source None Jan 3, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page