1
import gtk
2
import gnome
3
import tinymail
4
import tinymail.ui
5
import tinymail.uigtk
6
import tinymail.camel
7
import gc
8
9
from pyplatformfactory import PyPlatformFactory
10
11
def on_refresh_folder (folder, cancelled, headerstree):
12
	listm = tinymail.uigtk.GtkHeaderListModel ()
13
	listm.set_folder (folder, False)
14
	headerstree.set_model (listm)
15
	progressbar.hide ()
16
17
	# I know. But this does significantly speed
18
	# up the garbage collecting. Only use it for
19
	# targets that have few memory resources
20
21
	gc.collect()
22
23
24
def on_status (folder, what, status, oftotal, headerstree) :
25
	progressbar.set_fraction (status / oftotal)
26
27
def on_headerstree_selected (treeselection, msgview) :
28
	model, iter = treeselection.get_selected ()
29
	if iter:
30
		header = model.get_value (iter, tinymail.uigtk.GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN)
31
		if header:
32
			folder = header.get_folder ()
33
			msg = folder.get_msg (header)
34
			msgview.set_msg (msg)
35
36
def on_folderstree_selected (treeselection, headerstree) :
37
	model, iter = treeselection.get_selected ()
38
	folder = model.get_value(iter, tinymail.uigtk.GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN)
39
	if folder:
40
		progressbar.show ()
41
		folder.refresh_async (on_refresh_folder, on_status, headerstree)
42
43
props = { gnome.PARAM_APP_DATADIR : "/usr/share" }
44
pr = gnome.program_init ("E-Mail", "1.0", properties=props)
45
builder = gtk.Builder()
46
builder.add_from_file("tinymail-python-test.ui")
47
widget = builder.get_object("window")
48
progressbar = builder.get_object ("progressbar")
49
progressbar.hide ()
50
folderstree = builder.get_object ("folderstree")
51
headerstree = builder.get_object ("headerstree")
52
vpaned = builder.get_object ("vpaned")
53
renderer = gtk.CellRendererText ();
54
column = gtk.TreeViewColumn ("Folder", renderer, text=0)
55
column.set_fixed_width (100)
56
column.set_sizing (gtk.TREE_VIEW_COLUMN_FIXED)
57
folderstree.append_column (column)
58
renderer = gtk.CellRendererText ();
59
column = gtk.TreeViewColumn ("From", renderer, text=0)
60
column.set_fixed_width (100)
61
column.set_sizing (gtk.TREE_VIEW_COLUMN_FIXED)
62
headerstree.append_column (column)
63
renderer = gtk.CellRendererText ();
64
column = gtk.TreeViewColumn ("Subject", renderer, text=2)
65
column.set_fixed_width (200)
66
column.set_sizing (gtk.TREE_VIEW_COLUMN_FIXED)
67
headerstree.append_column (column)
68
renderer = gtk.CellRendererText ();
69
column = gtk.TreeViewColumn ("Received", renderer, text=7)
70
column.set_fixed_width (100)
71
column.set_sizing (gtk.TREE_VIEW_COLUMN_FIXED)
72
headerstree.append_column (column)
73
platfact = PyPlatformFactory()
74
msgview = platfact.new_msg_view ()
75
msgview.show ()
76
vpaned.pack2 (msgview, True, True)
77
account_store = platfact.new_account_store ()
78
device = account_store.get_device ()
79
device.force_online ()
80
query = tinymail.FolderStoreQuery ()
81
query.add_item ("", tinymail.FOLDER_STORE_QUERY_OPTION_SUBSCRIBED)
82
accounts = tinymail.uigtk.GtkFolderStoreTreeModel (query)
83
account_store.get_accounts (accounts, tinymail.ACCOUNT_STORE_STORE_ACCOUNTS)
84
folderstree.set_model (accounts)
85
folderstree.get_selection().connect("changed", on_folderstree_selected, headerstree)
86
headerstree.get_selection().connect("changed", on_headerstree_selected, msgview)
87
builder.connect_signals(self)
88
gtk.main()