#! d:\programy\python\pythonw.exe
# -*- coding: utf-8 -*-

# Programo konvertas tekston de x-sistemo
# al UTF-8.
# La teksto estu en poŝo aŭ kiel parametro.
# La konvertita teksto troviĝas en la poŝo.

from win32clipboard import *
import win32con 
import sys

#tabelo de anstataŭigoj (utf-8,x)
anstatauxigo = [
    (u'ĥ','hx'),
    (u'ŝ','sx'),
    (u'ĝ','gx'),
    (u'ĉ','cx'),
    (u'ĵ','jx'),
    (u'ŭ','ux'),
    (u'Ĥ','HX'),
    (u'Ŝ','SX'),
    (u'Ĝ','GX'),
    (u'Ĉ','CX'),
    (u'Ĵ','JX'),
    (u'Ŭ','UX'),
    (u'Ĥ','Hx'),
    (u'Ŝ','Sx'),
    (u'Ĝ','Gx'),
    (u'Ĉ','Cx'),
    (u'Ĵ','Jx'),
    (u'Ŭ','Ux'),
    ]

def konvertiXalUTF8(teksto):
    "Konvertas x-sisteman, askian tekston al utf-8 teksto"
    for paro in anstatauxigo: #por ĉiu paro da tekstoj: anstataŭigata kaj anstataŭiganta
        elTeksto=teksto.replace(paro[1],paro[0]) #anstataŭigu la unuan per la duan
        teksto=elTeksto #konservu jam ŝanĝitan por nova traserĉo
    return elTeksto

if __name__=='__main__': 
    #trovi ŝanĝotan tekston
    if len(sys.argv) < 2: #se la tradukota teksto ne estas donita kiel parametro
        OpenClipboard() #malfermu la poŝon
        try:
            teksto = GetClipboardData(win32con.CF_UNICODETEXT) #uzu tekston jam troviĝantan en la poŝo
        finally:
            CloseClipboard() #fermu la poŝon
    else:
        teksto = sys.argv[1] #uzutekston donitan kiel parametro
        #ekz. EHXOSXANGXO CXIUJXAUXDE ehxosxangxo cxiujxauxde

    #konverti la tekston en la poŝon
    OpenClipboard() #malfermu la poŝon
    EmptyClipboard() #forigu ĝian enhavon
    try:
        SetClipboardData(win32con.CF_UNICODETEXT, konvertiXalUTF8(teksto)) #enmetu la konvertitan tekston
    finally:
        CloseClipboard() #fermu la poŝon
