Init from svn. The wxpython is the final one.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/add2db.py Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+
+import sys,shelve
+
+dbase = shelve.open('vortoj-ru-ca.sdb')
+
+print "Showing keys:"
+for a in dbase.keys():
+ print a
+
+print("Tajpu vorton por aldoni al la listo:"),
+key = raw_input()
+
+if key == "":
+ print "Fino."
+ sys.exit()
+
+print("Tajpu tradukon por %s:" % key),
+traduko = raw_input()
+
+dbase[key] = traduko
+
+print "Showing new keys:"
+for a in dbase.keys():
+ print a
+dbase.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/change-tables-mysql.sh Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,2 @@
+#!/bin/bash
+mysql -u lingvigilouser -p -h vicerveza lingvigilo < taula-mysql.sql
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/forigi-korektitajn-frazojn.py Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import MySQLdb,sys
+
+database = 'lingvigilo'
+dbuser = 'lingvigilouser'
+dbpass = 'carrinclo'
+dbtable = 'frazoj_ru_ca'
+
+if (len(sys.argv) != 2):
+ print "Uzo: " + sys.argv[0] + " <numero>"
+ print "Parametro <numero>:"
+ print " 0 Ne korektitaj"
+ print " 1 Ĝustaj"
+ print " 2 Malĝustaj"
+ print " 3 Nekutimaj"
+ sys.exit(1)
+else:
+ korekteco=sys.argv[1]
+
+db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,db=database)
+
+cursor = db.cursor()
+
+cursor.execute('DELETE FROM ' + dbtable + ' WHERE korekta='+sys.argv[1])
+
+db.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/frazoj2mysql Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,43 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys,string,os,MySQLdb,re
+
+database = 'lingvigilo'
+dbuser = 'lingvigilouser'
+dbpass = 'carrinclo'
+dbtable = 'frazoj_ru_ca'
+
+db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,db=database)
+
+cursor = db.cursor()
+
+if (len(sys.argv) != 2):
+ print "Diru nomon de dosiero."
+ sys.exit()
+else:
+ sourcefile=sys.argv[1]
+
+
+# Read txt
+file = open(sourcefile, 'r')
+
+for line in file:
+ # Traiem l'INTRO final
+ line = line.rstrip('\n')
+
+ # Arreglem cometes simples per a sql
+ line = re.sub(r"'",r"\'", line)
+
+ # Separem per \t
+ words = string.split(line, '\t')
+
+ print "Aldonante:", words[0], '=>', words[1]
+
+ cursor.execute('INSERT INTO ' + dbtable +
+ ' (vorto,frazo) '+
+ 'VALUES(\'%s\',\'%s\');' % (words[0], words[1]))
+
+db.close()
+
+file.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taula-mysql.sql Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,27 @@
+drop table if exists vortoj_ru_ca;
+
+create table vortoj_ru_ca (
+ id int not null auto_increment,
+ vorto tinytext not null,
+ tipo tinytext not null,
+ traduko tinytext default NULL,
+ param1 tinytext default NULL,
+ param2 tinytext default NULL,
+ primary key (id)
+) TYPE=MyISAM;
+
+drop table if exists frazoj_ru_ca;
+
+create table frazoj_ru_ca (
+ id int not null auto_increment,
+ vorto tinytext not null,
+ frazo tinytext not null,
+ korekta integer not null default 0,
+ klarigo tinytext default null,
+ korektisto tinytext default null,
+ -- 0 = nekorektita
+ -- 1 = gxusta
+ -- 2 = malgxusta
+ -- 3 = nekutima
+ primary key (id)
+) TYPE=MyISAM;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tkinter/lingvigilo.py Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,112 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+
+from Tkinter import *
+from tkSimpleDialog import *
+import sys,time,random,string,MySQLdb
+
+# Configuració
+legi_el = 'mysql'
+
+# Conf - mysql
+database = 'lingvigilo'
+dbuser = 'lingvigilouser'
+dbpass = 'carrinclo'
+dbtable_vortoj = 'vortoj_ru_ca'
+dbtable_frazoj = 'frazoj_ru_ca'
+
+# Conf - fitxer
+dbasefile = 'vortoj-ru-ca.txt'
+frazodosiero = 'frazoj.txt'
+
+# Prendre les paraules d'una base de dades MySQL
+def getMySQL():
+ db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,
+ db=database)
+ cursor = db.cursor()
+ cursor.execute("SELECT * FROM "+dbtable_vortoj)
+ res_vortoj = cursor.fetchall()
+ res_vortoj_unicode = []
+ for vorto in res_vortoj:
+ vorto_vorto = unicode(vorto[1],'utf8')
+ vorto_tipo = unicode(vorto[2],'utf8')
+ vorto_traduko = unicode(vorto[3],'utf8')
+
+ # Paràmetres opcionals
+ if vorto[4] == None:
+ vorto_param1 = ''
+ else:
+ vorto_param1 = unicode(vorto[4],'utf8')
+
+ if vorto[5] == None:
+ vorto_param2 = ''
+ else:
+ vorto_param2 = unicode(vorto[5],'utf8')
+
+ res_vortoj_unicode.append(
+ (vorto_vorto, vorto_tipo, vorto_traduko,
+ vorto_param1, vorto_param2))
+ db.close()
+ return res_vortoj_unicode
+
+# Prendre les paraules d'un fitxer
+def getFile():
+ dbase = open(dbasefile,"r")
+
+ lines = dbase.readlines()
+ dbase.close()
+
+ res_vortoj = []
+ for line in lines:
+ line = line.rstrip('\n')
+ vortoj = string.split(unicode(line.rstrip('\n'),'utf8'),'\t')
+ res_vortoj.append(vortoj)
+
+ return res_vortoj
+
+if legi_el == 'file':
+ print "Legante vortojn el dosiero..."
+ vortoj = getFile()
+else:
+ print "Legante vortojn el MySQLa datumbazo..."
+ vortoj = getMySQL()
+
+print "Legitaj", len(vortoj), "vortoj."
+
+def AldoniFrazonDosieren(vorto,teksto):
+ outfile = open(frazodosiero,"a")
+
+ lineout = vorto + "\t" + teksto +"\n"
+ outfile.write(lineout.encode('utf8'))
+
+ outfile.close()
+
+def AldoniFrazonDatumbazen(vorto,teksto):
+ db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,
+ db=database)
+ cursor = db.cursor()
+ print ("INSERT INTO "+dbtable_frazoj+" (vorto, frazo)"
+ " VALUES('%s', '%s');" % (vorto, teksto))
+ cursor.execute("INSERT INTO "+dbtable_frazoj+" (vorto, frazo)"+
+ " VALUES('%s', '%s');" % (vorto.encode('utf8'),
+ teksto.encode('utf8')))
+ db.close()
+
+
+def LoopFunction():
+ index = random.randint(0, len(vortoj)-1)
+ vorto = vortoj[index][0]
+ teksto = askstring("Frazilon", "Skribu frazon por vorto '%s'" % vorto)
+ if teksto == None:
+ print 'Fi del programa'
+ sys.exit()
+ AldoniFrazonDatumbazen(vorto, teksto)
+ root.after(1*1000,LoopFunction)
+
+
+# Main program
+root=Tk()
+root.after(10,LoopFunction)
+Message(root, text='Programo por lerni lingvon').pack();
+root.mainloop()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/txt2db.py Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import shelve,string,os
+
+
+sourcefile = 'vortoj-ru-ca.txt'
+dbfile = 'vortoj-ru-ca.sdb'
+try:
+ os.remove(dbfile)
+except:
+ print "File '%s' doesn't exist. Creating..." % dbfile
+else:
+ print "File '%s' exist. Wipping..." % dbfile
+
+dbase = shelve.open(dbfile)
+
+# Read txt
+file = open(sourcefile, 'r')
+
+for line in file:
+ line = line.rstrip('\n')
+ words = string.split(line, '\t')
+ print "Adding:", words[0], '=>', words[2]
+ dbase[words[0]] = words[2]
+
+file.close()
+
+dbase.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vortoj-ru-ca.txt Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,256 @@
+шкаф nom armari
+спать nom dormir нсв
+с друзья'ми exp amb amics
+по'сле+gen prep després
+нра'виться verb agradar нсв понра'вится
+ла'дно adv d'acord
+понра'виться verb agradar св нра'вится
+дари'ть verb regalar нсв подари'ть
+подари'ть verb regalar нсв дари'ть
+подаро'к nom regal
+ску'чный adj avorrit
+сеа'нс nom sessió
+вини'тельный паде'ж exp acusatiu
+да'тельный паде'ж exp datiu
+чемода'н nom maleta
+о'коло+gen nom a prop de
+дава'ть verb donar нсв дать
+дать verb donar св дава'ть
+сове'товать verb aconsellar нсв посове'товать
+посове'товать verb aconsellar нсв сове'товать
+похо'д nom excursió
+спроси'ть verb demanar св спра'шивать
+спра'шивать verb demanar нсв спраси'ть
+весь,вся,всё nom tot el / sencer
+настрое'ние nom humor
+лёгкий adj fàcil
+бассе'йн nom piscina
+симпати'чный adj guapo (físicament)
+мо'дный adj de moda
+совреме'нный adj modern, actual
+улы'бка nom somriure
+улыба'ться verb somriure нсв
+стро'ить verb construir нсв постро'ить
+не совсе'м exp no exactament
+совсе'м не exp en absolut (no)
+прие'хать verb arribar нсв
+бо'льше всего' exp el que més
+наро'д nom poble (gent)
+наро'дный nom popular
+как и я nom com jo. La 'i' emfatitza
+зато' exp en canvi / compensant
+за то exp per això / per lo que
+стака'н nom vas, got
+по'эзд nom tren
+де'ло nom negoci
+село nom poble, vila
+кре'сло nom sofà
+перо' nom bolígraf, ploma
+мя'со nom carn
+ма'льчик nom noi
+шля'па nom barret
+ле'рево nom arbre, fusta
+оте'чество nom pàtria, terra del pare
+бумага nom paper
+картина nom dibuix
+жела'ть verb voler, desitjar нсв
+отвеча'ть verb respondre нсв
+ча'сто nom sovint
+учени'к nom alumne (escola)
+конто'ра nom oficina
+что'-то nom alguna cosa
+для+gen exp per a
+без+gen exp sense
+рад exp estar encantat
+забыва'ть verb oblidar нсв
+ме'дленно adv a poc a poc
+осёл nom ase
+счёт nom factura, compta
+конь nom cavall
+кора'бль nom vaixell
+сара'й nom cabanya
+из+gen nom fora de, lluny de
+тётя nom tieta
+а'рмия nom exercit
+исто'рия nom història
+ста'нция nom estació
+вещь nom cosa (f)
+ночь nom nit (f)
+крова'ть nom llit (f)
+по'ле nom camp
+зда'ние nom edifici
+жела'ние nom desig
+пла'тье nom roba, vestit
+от+gen exp lluny de
+за+acc exp després, darrera, més enllà (moviment)
+море nom mar
+ча'шка nom tassa
+благодари'ть verb agrair нсв
+по'мнить verb recordar нсв
+учи'ть verb aprendre, estudiar нсв
+жаль exp llàstima, (+dat, saber greu)
+держать verb mantenir нсв
+дорого'й adj valuós, car
+молодо'й adj jove
+сад nom jardí
+наве'рно adv probablement
+ти'хо adv silenciosament, suaument
+свобо'дно adv lliurement, amb fluïdesa
+соль nom sal (f)
+масло nom mantega
+зуб nom dent
+щётка nom raspall
+зеркало nom lent, vidre per mirar
+запреща'ть verb prohibir нсв
+слы'шать verb sentir (oïda) нсв
+по-мо'ему exp en la meva opinió
+поэ'тому exp per tant
+по+dat exp al llarg de, mitjançant, d'acord amb
+по+prep exp quan, a l'hora que, després
+наро'чно adv expressament
+неча'янно adv sense voler
+проси'ть verb demanar (algo) нсв
+ждать verb esperar (algo) нсв
+почти' adv quasi
+всё nom tot
+все nom tothom
+жи'тель nom habitant (m)
+пло'шадь nom plaça (f)
+ку'ртка nom jaqueta d'home
+карма'н nom butxaca
+ла'вка nom botiga
+ла'вочник nom botiguer
+шу'тка nom acudit
+обы'чно adv normalment
+редко adv poc sovint, rarament
+меша'ть verb molestar нсв
+скуча'ть verb avorrir-se нсв
+быва'ть verb freqüentar, passar de tant en tant нсв
+шути'ть verb fer broma нсв
+весна' nom primavera
+ле'то nom estiu
+о'сень nom tardor (f)
+зима' nom hivern
+день nom dia (m)
+столи'ца nom capital (ciutat)
+земля' nom terra
+река' nom riu
+бежа'ть verb córrer нсв
+жить verb viure нсв
+есть verb menjar нсв
+хоте'ть verb voler нсв
+рука' nom braç, mà
+голова' nom cap
+ум nom ment, intel·lecte
+у'мный adjectiu espavilat, intel·ligent
+нау'ка nom ciència
+жизнь nom vida (f)
+терпе'ние nom paciència
+разгово'р nom conversa
+разгова'ривать verb conversar, parlar (+ins) нсв
+прекра'сный adj bonic
+краси'вый adj maco, guapo
+холо'дный adj fred
+тёрплый adj calentet
+дешёвый adj barat
+пусто'й adj buit
+бара'н nom xai
+поколе'ние nom generació
+дово'льно adv suficient
+дёшево adv de manera barata
+да'же exp malgrat
+прекра'сно adv esplèndit, excel·lent
+коне'чно adv evidentment
+мо'жно adv hom pot
+нельзя' adv hom no pot
+сто'ить verb costar нсв
+не сто'ить! exp de res
+си'ний adj blau fosc
+зде'шний adj local
+после'дний adj últim
+вне'шний adj extern
+вече'рний adj del vespre
+у'трений adj del matí
+пере'дний adj frontal
+да'льний adj distant
+сре'дний adj del mig, central
+сосе'дний adj del costat, veïnal
+ра'нний adj d'aviat
+по'здний adj tardà
+ни'жнний adj de baix
+ве'рхний adj de dalt
+пре'жний adj anterior
+о'бщий adj general, comú
+не'бо nom cel
+вид nom aspecte, aparença
+торго'вля nom comerç
+звезда' nom estel, estrella
+часть nom part d'alguna cosa
+за+ins exp darrera, més enllà, després, per
+ме'жду+ins exp entre
+над+ins exp sobre
+пе'ред+ins exp abans (temps o espai)
+под+ins exp sota
+c+ins exp amb
+при+prep exp en presència, a l'hora de, a tal ocasió
+сунду'к nom barril
+пансион nom pensió
+тамо'жная nom botiga de vestits
+дождь nom pluja (m)
+снег nom neu
+доро'га nom carretera
+сухо'й adj sec
+ма'ленький adj petit
+желе'зо nom ferro
+желе'зный adj de ferro
+ра'но adv aviat
+по'здно adv tard
+жа'рко adv fa calor
+ве'трено adv fa vent
+су'хо adv fa sequetat
+тепло' adv s'està calentet
+сы'ро adv hi ha humitat
+пра'здник nom dia de festa
+писа'тель nom escriptor
+мета'лл nom metall
+мост nom pont
+зал nom rebedor
+ма'ло+gen exp poc de
+весде' adv a tot arreu
+ва'жно adv és important
+нева'жно adv no té importància, pobrement
+переводи'ть verb traduir нсв
+задава'ть verb fer, posar (~ вопрос, fer una pregunta) нсв
+сиде'ть verb seure нсв
+те'ло nom cos
+блю'до nom plat
+колесо' nom roda
+село' nom vila
+о'зеро nom llac
+яйцо' nom ou
+черн'ила nom tinta (n pl)
+усе'рдный adj gelós
+учи'лище nom escola
+чудо'вище nom monstre
+изве'стие nom notícies, informació
+уче'ние nom estudis, ensenyament
+содержа'ние nom continguts
+изве'стно, что exp és ben sabut que
+чудо'вищно! exp monstruós!
+мне'ние nom opinió
+брать verb prendre, agafar нсв
+жале'ть verb saber greu per (+gen) нсв
+сро'чно adv urgentment
+сро'чный adj urgent
+свеча' nom espelma
+откры'тка nom postal
+поду'шка nom coixí
+ма'рка nom segell
+посте'ль nom llit? (f)
+о'чередь nom torn, cua
+откры'тый adj obert
+закры'тый adj tancat
+быть без ума' от+gen exp ser boig (d'algo)
+уме'ть verb saber fer нсв
+на'до exp és necessari (+dat)
+рисова'ть verb dibuixar нсв
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vortoj2mysql Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import shelve,string,os,MySQLdb,re
+
+database = 'lingvigilo'
+dbuser = 'lingvigilouser'
+dbpass = 'carrinclo'
+dbtable = 'vortoj_ru_ca'
+
+db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,db=database)
+
+cursor = db.cursor()
+
+sourcefile = 'vortoj-ru-ca.txt'
+
+# Connexió base de dades
+
+
+# Read txt
+file = open(sourcefile, 'r')
+
+cursor.execute('DELETE FROM ' + dbtable);
+
+for line in file:
+ # Traiem l'INTRO final
+ line = line.rstrip('\n')
+
+ # Arreglem cometes simples per a sql
+ line = re.sub(r"'",r"\'", line)
+
+ # Separem per \t
+ words = string.split(line, '\t')
+
+ print "Aldonante:", words[0], '=>', words[2]
+
+ if words[1] == "verb":
+ #print ('INSERT INTO ' + dbtable +
+ # ' (vorto,tipo,traduko,param1,param2) '+
+ # 'VALUES(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\');' %
+ # (words[0], words[1], words[2], words[3], words[4]))
+ if (len(words) == 5):
+ cursor.execute('INSERT INTO ' + dbtable +
+ ' (vorto,tipo,traduko,param1,param2) '+
+ 'VALUES(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\');' %
+ (words[0], words[1], words[2], words[3],
+ words[4]))
+ else:
+ cursor.execute('INSERT INTO ' + dbtable +
+ ' (vorto,tipo,traduko,param1) '+
+ 'VALUES(\'%s\',\'%s\',\'%s\',\'%s\');' %
+ (words[0], words[1], words[2], words[3]))
+ else:
+ #print ('INSERT INTO ' + dbtable +
+ # ' (vorto,tipo,traduko) '+
+ # 'VALUES(\'%s\',\'%s\',\'%s\');' % (words[0], words[1],
+ # words[2]))
+ cursor.execute('INSERT INTO ' + dbtable +
+ ' (vorto,tipo,traduko) '+
+ 'VALUES(\'%s\',\'%s\',\'%s\');' % (words[0], words[1],
+ words[2]))
+
+db.close()
+
+file.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/getdb.inc Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,59 @@
+<?php
+$mysql_server = "localhost";
+$mysql_user = "lingvigilouser";
+$mysql_password = "carrinclo";
+$mysql_db = "lingvigilo";
+$frazotablo = "frazoj_ru_ca";
+
+function konekti()
+{
+ global $mysql_server, $mysql_user, $mysql_password, $mysql_db;
+ $connexio = mysql_connect($mysql_server, $mysql_user, $mysql_password);
+ mysql_select_db($mysql_db, $connexio);
+ return $connexio;
+}
+
+
+function strtosql($cadena)
+{
+ return ereg_replace("\'", "\'", $cadena);
+}
+
+
+function preni_frazojn($konekto,$fraztipo=0)
+{
+ global $frazotablo;
+ $resultat = mysql_query(
+ "SELECT id,vorto,frazo,korekta,klarigo,korektisto FROM " .
+ $frazotablo . " WHERE korekta=" . $fraztipo . ";",
+ $konekto);
+
+ echo mysql_error();
+
+ while ($fila = mysql_fetch_row($resultat))
+ {
+ $frazoj[$fila[0]] = array(
+ "vorto" => $fila[1],
+ "frazo" => $fila[2],
+ "korekta" => $fila[3],
+ "klarigo" => $fila[4],
+ "korektisto" => $fila[5]);
+ }
+
+ if (!isset($frazoj))
+ $frazoj=0;
+
+ return $frazoj;
+}
+
+function teksto_korekto($korekteco)
+{
+ switch($korekteco)
+ {
+ case 0: return "Ne korektita"; break;
+ case 1: return "Ĝusta"; break;
+ case 2: return "Malĝusta"; break;
+ case 3: return "Nekutima"; break;
+ }
+}
+?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/index.html Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Lingvigilo - Reta Parto</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+</head>
+
+<body>
+
+<h1>Programo <em>lingvigilo</em>: reta parto</h1>
+
+<h2>Metodo</h2>
+<p>Tiu ĉi estas metodo por plibonigi konon de lingvo rusa. Ĝi estas simplega. La
+studanto havas programon, kiu demandas al li/ŝi:</p>
+<p>- Skribu frazon per vorto "..."</p>
+<p>Studanto devas skribi ĝustan frazon kun tiu vorto. Do, la studanto kreas
+frazaron, po unu frazon por ĉiu vorto.</p>
+<p>La korektisto povas vidi liston de korektendaj frazoj. Li/Ŝi devas certigi ĉu
+la studanto skribis ĝustan frazon por ĉiu vorto. Kompreneble, la korektisto
+povas elekti kiom da frazoj korekti. </p>
+
+<h2>Programeroj</h2>
+<UL>
+<LI><A href="lingvigilo-korekti">Korektilo</a>, por korektistoj
+<LI><A href="lingvigilo-montri">Montrilo</a>, por studanto aŭ scivolemulo
+</UL>
+
+</BODY>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lingvigilo-korekti.php Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Lingvigilo - Korekta kvizo</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+ <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+ <META HTTP-EQUIV="Expires" CONTENT="-1">
+</head>
+
+<body>
+
+<?php
+include('./getdb.inc');
+
+$konekto=konekti();
+
+$frazoj = preni_frazojn($konekto,0)
+?>
+
+<h1>Korektilo por programo <em>lingvigilo</em></h1>
+
+<?php
+if (isset($_POST["korektu"]))
+{
+
+ // Konservi datumojn.
+
+ $body = "";
+ // OJU!!!! Aquí falla indentació per mantenir 80 columnes.
+ if ($frazoj != 0)
+ {
+ foreach($frazoj as $key => $f)
+ {
+ //echo "<p> Key: $key. ";
+ if(isset($_POST["korekto"][$key]))
+ //echo "farita.";
+ if($_POST["korekto"][$key] != 0)
+ {
+ $query = "UPDATE " . $frazotablo .
+ " SET korekta=" .
+ $_POST["korekto"][$key] .
+ ",klarigo='" .
+ strtosql($_POST["klarigo"][$key]) .
+ "',korektisto='" .
+ strtosql($_POST["korektisto"]) .
+ "' WHERE id=". $key . ";";
+ mysql_query($query, $konekto);
+ // Por retletero
+ $body = $body .
+ "Vorto: " . $f["vorto"] . "\n" .
+ "Frazo: " . $f["frazo"] . "\n" .
+ "Korekteco: " .
+ teksto_korekto($_POST["korekto"][$key])
+ . "\n" .
+ "Klarigo: " . $_POST["klarigo"][$key] .
+ "\n" . "Korektist(in)o: " .
+ $_POST["korektisto"] .
+ "\n\n";
+
+
+
+ }
+ //echo "</p>\n";
+ }
+ // Sendi retleteron
+ mail("viric@vicerveza.homeunix.net","Korektado de frazoj", $body,
+ "Content-Type: text/plain; charset=utf-8\r\n" .
+ "Content-Transfer-Encoding: 8bit");
+ }
+
+?>
+ <p>Dankon pro la korektado!<p>
+ <p>Vi povas reiri al frazaro korektenda alitage, ĉiam je la
+ <a HREF="http://vicerveza.homeunix.net/~viric/lingvigilo/lingvigilo-korekti">Sama
+ adreso</a>.</p>
+<?php
+}
+else
+{
+?>
+
+<h2>Frazoj korektendaj</h2>
+
+<form action="lingvigilo-korekti" method="post">
+
+<TABLE BORDER=1>
+<TR>
+ <TH>ID
+ <TH>Vorto
+ <TH>Frazo
+ <TH>Korekto
+ <TH>Klarigo
+
+<?php
+
+function select_korekto($id_frazo)
+{
+ echo "<SELECT name=\"korekto[$id_frazo]\">\n";
+ echo "<OPTION value=0 selected>Ne korektita\n";
+ echo "<OPTION value=1>Ĝusta\n";
+ echo "<OPTION value=2>Malĝusta\n";
+ echo "<OPTION value=3>Nekutima\n";
+ echo "</SELECT>\n";
+}
+
+$numfrazoj = 0;
+if ($frazoj != 0)
+ foreach($frazoj as $key => $f)
+ {
+ echo "<tr>\n";
+ echo "\t<td>". $key . "\n";
+ echo "\t<td>". $f["vorto"] . "\n";
+ echo "\t<td>". $f["frazo"] . "\n";
+ echo "\t<td>";
+ select_korekto($key);
+ echo "\t<td><input type=text name=\"klarigo[$key]\" size=30 " .
+ "maxlength=254>";
+ $numfrazoj++;
+ }
+?>
+</table>
+
+<p><strong>Estas <?php echo $numfrazoj;?> nekorektitaj frazoj en datumbazo.
+</strong></p>
+
+<h2>Prepari sendon</h2>
+
+<p>Alklaku <em>Sendu korektaĵojn</em> por sendi ilin. Vi povas igi ĉiujn frazojn
+al elekto <em>Ne korektita</em> kaj forviŝi ĉiujn klarigojn, alklakante butonon
+<em>Forgesu</em>.</p>
+
+<p>Antaŭ enmetu datumojn, bonvolu skribi ian nomon por ke mi sciu kiu korektis
+tion ĉi (t.e. kiun demandi)</p>
+
+<p><strong>Korektist(in)o:</strong>
+<input type=text name=korektisto size=10 maxlength=30>
+</p>
+
+<input type=submit value="Sendu korektaĵojn" name=korektu>
+<input type=reset value="Forgesu">
+</form>
+
+<?php
+} // Fino de normala paĝo
+?>
+
+<p>Iru al <a href="index">ĉefa paĝo</a>.</p>
+
+</body>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lingvigilo-montri.php Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+ <title>Lingvigilo - Frazomontrilo</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+ <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+ <META HTTP-EQUIV="Expires" CONTENT="-1">
+</head>
+
+<body>
+
+<?php
+include('./getdb.inc');
+
+?>
+
+<h1>Montrilo por programo <em>lingvigilo</em></h1>
+
+<?php
+if (isset($_POST["nova_korekteco"]))
+ $korekteco=$_POST["korekteco"];
+else
+ // Default
+ $korekteco=-2
+?>
+
+<h2>Agordo</h2>
+
+<form action="lingvigilo-montri" method="post">
+<p>Montru frazojn
+<select name="korekteco">
+<option value=0 <?php if ($korekteco==0) echo "selected" ?>>Nekorektitajn
+<option value=1 <?php if ($korekteco==1) echo "selected" ?>>Ĝustajn
+<option value=2 <?php if ($korekteco==2) echo "selected" ?>>Malĝustajn
+<option value=3 <?php if ($korekteco==3) echo "selected" ?>>Nekutimajn
+<option value="-2" <?php if ($korekteco==-2) echo "selected" ?>>Malĝustajn kaj
+nekutimajn
+<option value="-1" <?php if ($korekteco==-1) echo "selected" ?>>Ĉiajn
+</select>
+
+<input type=submit value="Ŝanĝi" name=nova_korekteco>
+</p>
+</form>
+
+<h2>Frazoj</h2>
+
+<?php
+
+if($korekteco >= 0)
+ $korektecoj = array($korekteco);
+elseif ($korekteco == -1)
+ $korektecoj = array(0,1,2,3);
+elseif ($korekteco == -2)
+ $korektecoj = array(2,3);
+
+?>
+<TABLE BORDER=1>
+<TR>
+ <TH>ID
+ <TH>Vorto
+ <TH>Frazo
+ <TH>Korektist(in)o
+ <TH>Korekto
+ <TH>Ekspliko
+
+<?
+
+$konekto=konekti();
+
+foreach($korektecoj as $k)
+{
+ $frazoj = preni_frazojn($konekto,$k);
+ if ($frazoj != 0)
+ foreach($frazoj as $key => $f)
+ {
+ echo "<tr>\n";
+ echo "\t<td>". $key . "\n";
+ echo "\t<td>". $f["vorto"] . "\n";
+ echo "\t<td>". $f["frazo"] . "\n";
+ echo "\t<td>" . $f["korektisto"] . "\n";
+ echo "\t<td>" . teksto_korekto($f["korekta"]) . "\n";
+ echo "\t<td>" . $f["klarigo"] . "\n";
+ }
+}
+
+?>
+</table>
+
+<p>Iru al <a href="index">ĉefa paĝo</a>.</p>
+
+</body>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/toserver.sh Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,2 @@
+#!/bin/bash
+scp *.{php,inc,html} vicerveza:~/public_html/lingvigilo/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wxpython/lingvigilo.py Thu May 18 22:59:47 2006 +0200
@@ -0,0 +1,245 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys,time,random,string,MySQLdb,re
+from wxPython.wx import *
+
+# Configuració
+legi_el = 'mysql'
+
+# Conf - mysql
+database = 'lingvigilo'
+dbuser = 'lingvigilouser'
+dbpass = 'carrinclo'
+dbtable_vortoj = 'vortoj_ru_ca'
+dbtable_frazoj = 'frazoj_ru_ca'
+
+# Conf - fitxer
+dbasefile = 'vortoj-ru-ca.txt'
+frazodosiero = 'frazoj.txt'
+frazoj_al = 'mysql'
+
+# Si s'especifica fitxer, l'origen és el fitxer.
+if (len(sys.argv) > 1):
+ dbasefile = sys.argv[1]
+ legi_el = 'file'
+
+def StringForSQL(str):
+ return re.sub(r"'",r"\'", str)
+
+# Prendre les paraules d'una base de dades MySQL
+def getMySQL():
+ db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,
+ db=database)
+ cursor = db.cursor()
+ cursor.execute("SELECT * FROM "+dbtable_vortoj)
+ res_vortoj = cursor.fetchall()
+ res_vortoj_unicode = []
+ for vorto in res_vortoj:
+ vorto_vorto = unicode(vorto[1],'utf8')
+ vorto_tipo = unicode(vorto[2],'utf8')
+ vorto_traduko = unicode(vorto[3],'utf8')
+
+ # Paràmetres opcionals
+ if vorto[4] == None:
+ vorto_param1 = ''
+ else:
+ vorto_param1 = unicode(vorto[4],'utf8')
+
+ if vorto[5] == None:
+ vorto_param2 = ''
+ else:
+ vorto_param2 = unicode(vorto[5],'utf8')
+
+ res_vortoj_unicode.append(
+ (vorto_vorto, vorto_tipo, vorto_traduko,
+ vorto_param1, vorto_param2))
+ db.close()
+ return res_vortoj_unicode
+
+# Prendre les paraules d'un fitxer
+def getFile():
+ dbase = open(dbasefile,"r")
+
+ lines = dbase.readlines()
+ dbase.close()
+
+ res_vortoj = []
+ for line in lines:
+ line = line.rstrip('\n')
+ vortoj = string.split(unicode(line.rstrip('\n'),'utf8'),'\t')
+ res_vortoj.append(vortoj)
+
+ return res_vortoj
+
+if legi_el == 'dosiero':
+ print "Legante vortojn el dosiero..."
+ vortoj = getFile()
+elif legi_el == 'mysql':
+ print "Legante vortojn el MySQLa datumbazo..."
+ vortoj = getMySQL()
+
+print "Legitaj", len(vortoj), "vortoj."
+
+def AldoniFrazonDosieren(vorto,teksto):
+ outfile = open(frazodosiero,"a")
+
+ lineout = vorto + "\t" + teksto +"\n"
+ outfile.write(lineout.encode('utf8'))
+
+ outfile.close()
+
+def AldoniFrazonDatumbazen(vorto,teksto):
+ db = MySQLdb.connect(host='vicerveza',user=dbuser,passwd=dbpass,
+ db=database)
+ cursor = db.cursor()
+ cursor.execute("INSERT INTO "+
+ StringForSQL(dbtable_frazoj)+
+ " (vorto, frazo) VALUES('%s', '%s');" %
+ (StringForSQL(vorto.encode('utf8')),
+ StringForSQL(teksto.encode('utf8'))))
+ db.close()
+
+def AldoniFrazon(vorto,teksto):
+ if (frazoj_al == 'mysql'):
+ AldoniFrazonDatumbazen(vorto,teksto)
+ elif (frazoj_al == 'dosiero'):
+ AldoniFrazonDosieren(vorto,teksto)
+
+
+
+#def LoopFunction():
+# index = random.randint(0, len(vortoj)-1)
+# vorto = vortoj[index][0]
+# teksto = askstring("Frazilon", "Skribu frazon por vorto '%s'" % vorto)
+# if teksto == None:
+# print 'Fi del programa'
+# sys.exit()
+# AldoniFrazonDatumbazen(vorto, teksto)
+
+def Senakcentigi(vorto):
+ return re.sub(r"'",r"", vorto)
+
+class main_window(wxFrame):
+ def __init__(self, parent, id, title):
+ wxFrame.__init__(self, parent, -1, title, size=(200,100),
+ style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)
+
+ # Variables de la classe
+ # (sino no tira)
+ self.vorto = ("", "")
+
+ # Sizer vertical
+ self.topsizer = wxBoxSizer(wxVERTICAL)
+
+ # Agefim la pregunta i la textbox
+ self.label = wxStaticText(self, -1,
+ label="Skribu frazon per vorto\n 'provo'",
+ style=wxALIGN_CENTER)
+ self.textbox = wxTextCtrl(self, -1)
+ self.topsizer.Add(self.label, 1, wxALIGN_CENTER,
+ wxALL, 10)
+ self.topsizer.Add(self.textbox, 0, wxEXPAND, wxALL, 10)
+
+ # Afegim botons
+ self.buttonsizer = wxBoxSizer(wxHORIZONTAL)
+ okid = wxNewId()
+ cancelid = wxNewId()
+ helpid = wxNewId()
+ okbutton = wxButton(self, okid, "Konservu")
+ # Botó per defecte (resposta a l'intro)
+ okbutton.SetDefault()
+ self.buttonsizer.Add(okbutton, 0, wxALL, 10)
+ cancelbutton = wxButton(self, cancelid, "Forgesu")
+ self.buttonsizer.Add(cancelbutton, 0, wxALL, 10)
+ helpbutton = wxButton(self, helpid, "Helpo")
+ self.buttonsizer.Add(helpbutton, 0, wxALL, 10)
+ self.topsizer.Add(self.buttonsizer, 0, wxALIGN_CENTER)
+
+ # EVENTS DE BOTONS
+ EVT_BUTTON(okbutton, okid, self.KonservuFrazon )
+ EVT_BUTTON(cancelbutton, cancelid, self.ForgesuFrazon )
+ EVT_BUTTON(helpbutton, helpid, self.MontruHelpon )
+
+ # Key events
+ EVT_KEY_DOWN(self,self.KeyManager)
+
+ # Activem el sizer principal
+ self.SetSizer(self.topsizer)
+ # Mida mínima de finestra.
+ self.topsizer.SetSizeHints(self)
+
+ # Focus al text
+ self.textbox.SetFocus()
+
+ self.Show(true)
+
+ # Actualitzem paraula.
+ self.RenovuVorton()
+
+ def RenovuVorton(self):
+ index = random.randint(0, len(vortoj)-1)
+
+ self.vorto = vortoj[index]
+ #print("Elektita vorto: %s" % self.vorto[0])
+ self.label.SetLabel("Skribu frazon per vorto\n'%s'" %
+ Senakcentigi(self.vorto[0]))
+
+
+ # if teksto == None:
+ # print 'Fi del programa'
+ # sys.exit()
+ # AldoniFrazonDatumbazen(vorto, teksto)
+
+ def MontruHelpon(self,event):
+ mesagxo = ("Vorto: " + self.vorto[0] + "\n" +
+ "Tipo: " + self.vorto[1] + "\n" +
+ "Traduko: " + self.vorto[2] + "\n")
+
+ if (self.vorto[1] == "verb"):
+ mesagxo = (mesagxo + "Aspekto: " + self.vorto[3] + "\n")
+ aspekto = self.vorto[3]
+ if (self.vorto[3] == u"нсв"):
+ aliaaspekto = u"Св"
+ else:
+ aliaaspekto = u"Нсв"
+ mesagxo = (mesagxo + aliaaspekto + ": " +
+ self.vorto[4] + "\n")
+
+ wxMessageDialog(self, mesagxo, "Helpo", style=wxOK).ShowModal()
+
+ def KonservuFrazon(self,event):
+ # No guardem cadenes buides
+ if (self.textbox.GetValue() != ""):
+ AldoniFrazon(Senakcentigi(self.vorto[0]),
+ self.textbox.GetValue())
+ self.RenovuVorton()
+ self.textbox.Clear()
+
+ def ForgesuFrazon(self,event):
+ self.textbox.Clear()
+ self.RenovuVorton()
+
+ def KeyManager(self,event):
+ key = event.GetKeyCode()
+ if (key == WXK_ESCAPE):
+ print("Elirante...")
+ sys.exit()
+ elif (key == WXK_TAB):
+ # Igual que ForgesuFrazon(self,event)
+ # Puc fer-ho passant un event buit?
+ self.ForgesuFrazon(0)
+ elif (key == WXK_F1):
+ self.MontruHelpon(0)
+
+class App(wxApp):
+ def OnInit(self):
+ frame = main_window(None, -1, "Lingvigilo")
+ self.SetTopWindow(frame)
+ return true
+
+#def DemandiAlUzanto():
+
+# Main program
+app=App(0)
+app.MainLoop()