# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - SystemPages
    
    shows a table of System Pages and their translations to the users language
    if the user lang is anything else than en
    
    @copyright: 2009 MoinMoin:ReimarBauer
    @license: GNU GPL, see COPYING for details.
"""

from MoinMoin import i18n 
from MoinMoin.Page import Page
from MoinMoin.util.dataset import TupleDataset, Column
from MoinMoin.widget.browser import DataBrowserWidget


def macro_SystemPages(macro):
    request = macro.request
    _ = request.getText

    users_lang = i18n.requestLanguage(request)
    if users_lang == "en":
        return ""

    domain = 'MoinMoin'
    lang_file = i18n.po_filename(request, language=users_lang, domain=domain)

    from MoinMoin.i18n.msgfmt import MsgFmt
    lines = file(lang_file).readlines()
    mf = MsgFmt()
    mf.read_po(lines)

    SystemPages = [key for key in mf.messages.keys() if Page(request, key).exists()]

    data = TupleDataset()
    data.columns = [
           Column('en', label=_('Developer language')),
           Column(users_lang, label=_('Preferred language')),
        ]

    for page_name in SystemPages:
        master = Page(request, page_name)
        translated = Page(request, _(page_name))
        data.addRow((master.link_to(request, page_name), translated.link_to(request, _(page_name))))

    table = DataBrowserWidget(request)
    table.setData(data)

    html = ''.join(table.format(method='GET'))
    return html

