| 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() |