cifrado r97 - in trunk: . package/cifrado
- From: bersace svn gnome org
- To: svn-commits-list gnome org
- Subject: cifrado r97 - in trunk: . package/cifrado
- Date: Fri, 18 Apr 2008 10:44:50 +0100 (BST)
Author: bersace
Date: Fri Apr 18 09:44:50 2008
New Revision: 97
URL: http://svn.gnome.org/viewvc/cifrado?rev=97&view=rev
Log:
ImplÃmentation de la substitution dans les message.
Modified:
trunk/ChangeLog
trunk/package/cifrado/cifrado.glade
trunk/package/cifrado/cifrado.py
trunk/package/cifrado/emission.py
trunk/package/cifrado/message.py
Modified: trunk/package/cifrado/cifrado.glade
==============================================================================
--- trunk/package/cifrado/cifrado.glade (original)
+++ trunk/package/cifrado/cifrado.glade Fri Apr 18 09:44:50 2008
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.2 on Thu Apr 3 16:40:48 2008 -->
+<!--Generated with glade3 3.4.2 on Fri Apr 18 11:26:02 2008 -->
<glade-interface>
<widget class="GtkWindow" id="cifrado_fenetre">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -594,7 +594,7 @@
</child>
</widget>
<packing>
- <property name="resize">False</property>
+ <property name="resize">True</property>
<property name="shrink">False</property>
</packing>
</child>
@@ -711,93 +711,158 @@
</packing>
</child>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <widget class="GtkExpander" id="chiffrement_exp">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="tooltip" translatable="yes">SÃlectionner une Ãtape du chiffrement et choisissez le chiffrement à appliquer</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="expanded">True</property>
+ <property name="use_markup">True</property>
<child>
- <widget class="GtkTreeView" id="codeur_liste">
- <property name="height_request">96</property>
+ <widget class="GtkVBox" id="vbox4">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="headers_clickable">True</property>
- <property name="reorderable">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="tooltip" translatable="yes">SÃlectionner une Ãtape du chiffrement et choisissez le chiffrement à appliquer</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="codeur_liste">
+ <property name="height_request">96</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_clickable">True</property>
+ <property name="reorderable">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkButton" id="codeur_nv_btn">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="tooltip" translatable="yes">Ajouter une Ãtape de chiffrement supplÃmentaire</property>
+ <property name="label" translatable="yes">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_codeur_nv_btn_clicked"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="codeur_prop_btn">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="tooltip" translatable="yes">Configurer le chiffrement sÃlectionnÃ</property>
+ <property name="label" translatable="yes">gtk-properties</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_codeur_prop_btn_clicked"/>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="codeur_conv_btn">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="tooltip" translatable="yes">Voir le message chiffrà final</property>
+ <property name="label" translatable="yes">gtk-convert</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_codeur_conv_btn_clicked"/>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="codeur_suppr_btn">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="tooltip" translatable="yes">Supprimer l'Ãtape de chiffrement sÃlectionnÃe</property>
+ <property name="label" translatable="yes">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_codeur_suppr_btn_clicked"/>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
</child>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Chiffrement</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox3">
+ <widget class="GtkExpander" id="subs_exp">
<property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkButton" id="codeur_nv_btn">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="tooltip" translatable="yes">Ajouter une Ãtape de chiffrement supplÃmentaire</property>
- <property name="label" translatable="yes">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_codeur_nv_btn_clicked"/>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="codeur_prop_btn">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="tooltip" translatable="yes">Configurer le chiffrement sÃlectionnÃ</property>
- <property name="label" translatable="yes">gtk-properties</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_codeur_prop_btn_clicked"/>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="can_focus">True</property>
<child>
- <widget class="GtkButton" id="codeur_conv_btn">
+ <widget class="GtkScrolledWindow" id="scrolledwindow5">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="tooltip" translatable="yes">Voir le message chiffrà final</property>
- <property name="label" translatable="yes">gtk-convert</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_codeur_conv_btn_clicked"/>
+ <property name="tooltip" translatable="yes">SÃlectionner une Ãtape du chiffrement et choisissez le chiffrement à appliquer</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="substitutions_liste">
+ <property name="height_request">96</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_clickable">True</property>
+ <property name="reorderable">True</property>
+ </widget>
+ </child>
</widget>
- <packing>
- <property name="position">2</property>
- </packing>
</child>
<child>
- <widget class="GtkButton" id="codeur_suppr_btn">
+ <widget class="GtkLabel" id="label4">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="tooltip" translatable="yes">Supprimer l'Ãtape de chiffrement sÃlectionnÃe</property>
- <property name="label" translatable="yes">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_codeur_suppr_btn_clicked"/>
+ <property name="label" translatable="yes"><b>Substitutions</b></property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="position">3</property>
+ <property name="type">label_item</property>
</packing>
</child>
</widget>
@@ -827,7 +892,7 @@
</widget>
<packing>
<property name="resize">True</property>
- <property name="shrink">True</property>
+ <property name="shrink">False</property>
</packing>
</child>
</widget>
@@ -1201,7 +1266,6 @@
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-cancel</property>
- <property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
@@ -1212,7 +1276,6 @@
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-apply</property>
- <property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
@@ -1225,7 +1288,6 @@
<property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-ok</property>
- <property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
Modified: trunk/package/cifrado/cifrado.py
==============================================================================
--- trunk/package/cifrado/cifrado.py (original)
+++ trunk/package/cifrado/cifrado.py Fri Apr 18 09:44:50 2008
@@ -203,6 +203,7 @@
liste.append_column(colonne)
+ # FenÃtre de conversion.
d = self.glade.get_widget('conversion_dialog')
d.add_buttons(gtk.STOCK_COPY, gtk.RESPONSE_APPLY,
gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
@@ -211,6 +212,30 @@
+ # SUBSTITUTIONS
+ self.substitutions = gtk.ListStore(gobject.TYPE_STRING,
+ gobject.TYPE_STRING)
+
+ liste = self.glade.get_widget('substitutions_liste')
+ liste.set_model(self.substitutions)
+
+ # Variable
+ renderer = gtk.CellRendererText()
+ colonne = gtk.TreeViewColumn('Variable', renderer,
+ text=emission.COL_SUB_VAR)
+ colonne.set_expand(True)
+ liste.append_column(colonne)
+
+ # Valeur
+ renderer = gtk.CellRendererText()
+ renderer.set_property('editable', True)
+ renderer.connect('edited', self.on_substitution_edited)
+ colonne = gtk.TreeViewColumn('Valeur', renderer,
+ text=emission.COL_COD_PROP)
+ colonne.set_expand(True)
+ liste.append_column(colonne)
+
+
# CHARGEMENT
f = gtk.FileFilter()
@@ -619,8 +644,12 @@
self.sync(False)
def on_msg_changed(self, tampon):
- self.get_msg_crt().message = tampon.get_text(tampon.get_start_iter(),
- tampon.get_end_iter())
+ msg = self.get_msg_crt()
+ msg.message = tampon.get_text(tampon.get_start_iter(),
+ tampon.get_end_iter())
+
+ self.actualiser_substitutions()
+
self.sync(False)
# ÃMISSIONS
@@ -651,14 +680,17 @@
self.glade.get_widget('codeur_liste').set_model(None)
envc.set_active(False)
+ self.actualiser_substitutions()
+
envc.toggled()
self.jeu.sync = sync
def on_em_env_champ_toggled(self, bouton):
em = self.get_em_crt()
em.env = bouton.get_active()
- wids = ['em_lieu_select', 'codeur_liste',
- 'codeur_nv_btn', 'codeur_prop_btn', 'codeur_conv_btn', 'codeur_suppr_btn']
+ wids = ['em_lieu_select', 'chiffrement_exp', 'subs_exp',
+ 'codeur_nv_btn', 'codeur_prop_btn', 'codeur_conv_btn',
+ 'codeur_suppr_btn']
for wid in wids:
self.glade.get_widget(wid).set_sensitive(em.env)
self.sync(False)
@@ -746,7 +778,34 @@
self.glade.get_widget('codeur_prop_cont').add(w)
self.glade.get_widget('codeur_prop_btn').set_sensitive(w is not None)
-
+
+
+ # SUBSTITUTIONS
+ def actualiser_substitutions(self):
+ em = self.get_em_crt()
+ if em is None:
+ pass
+
+ # substitutions
+ msg = self.get_msg_crt()
+ self.substitutions.clear()
+ variables = msg.lister_variables()
+ utile = len(variables) != 0
+ exp = self.glade.get_widget('subs_exp')
+ exp.set_expanded(utile)
+ exp.set_sensitive(utile)
+
+ if utile is True:
+ for var in variables:
+ self.substitutions.append([var, em.get_val(var)])
+
+
+ def on_substitution_edited(self, renderer, path, valeur):
+ iter = self.substitutions.get_iter(path)
+ var = self.substitutions.get_value(iter, emission.COL_SUB_VAR)
+ self.get_em_crt().set_val(var, valeur)
+ self.substitutions.set_value(iter, emission.COL_SUB_VAL, valeur)
+ self.sync(False)
# NOUVEAU
Modified: trunk/package/cifrado/emission.py
==============================================================================
--- trunk/package/cifrado/emission.py (original)
+++ trunk/package/cifrado/emission.py Fri Apr 18 09:44:50 2008
@@ -11,6 +11,7 @@
from . import codeurs
COL_COD_NOM, COL_COD_PROP, COL_COD = range(3)
+COL_SUB_VAR, COL_SUB_VAL = range(2)
def charger(el, jeu):
dest = jeu.get_force_depuis_nom(el.getAttribute('dest'))
@@ -21,14 +22,19 @@
for e in el.getElementsByTagName('codeur'):
codeurs.append(codeur.charger(e))
- return Emission(env, dest, lieu, codeurs)
+ substitutions = {}
+ for e in el.getElementsByTagName('substitution'):
+ substitutions[e.getAttribute('variable')] = e.getAttribute('valeur')
+
+ return Emission(env, dest, lieu, codeurs, substitutions)
class Emission:
- def __init__(self, env, dest, lieu, cods=None):
+ def __init__(self, env, dest, lieu, cods=None, subs=None):
self.env = env
self.dest = dest
self.lieu = lieu
+ self.subs = subs
self.codeurs = gtk.ListStore(gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_PYOBJECT)
@@ -62,8 +68,17 @@
def get_codeur_nom(self, iter):
return self.codeurs.get_value(iter, COL_COD_NOM)
+ def get_val(self, var):
+ if not self.subs.has_key(var):
+ self.set_val(var, "")
+ return self.subs[var]
+
+ def set_val(self, var, val):
+ self.subs[var] = val
def convertir(self, texte):
+ for var in self.subs:
+ texte = texte.replace(var, self.subs[var])
iter = self.codeurs.get_iter_first()
while iter is not None and self.codeurs.iter_is_valid(iter):
codeur = self.codeurs.get_value(iter, COL_COD)
@@ -97,4 +112,10 @@
e.appendChild(codeur.createXML(doc))
iter = self.codeurs.iter_next(iter)
+ for var in self.subs:
+ s = doc.createElement('substitution')
+ s.setAttribute('variable', var)
+ s.setAttribute('valeur', self.subs[var])
+ e.appendChild(s)
+
return e
Modified: trunk/package/cifrado/message.py
==============================================================================
--- trunk/package/cifrado/message.py (original)
+++ trunk/package/cifrado/message.py Fri Apr 18 09:44:50 2008
@@ -8,6 +8,7 @@
import jeu as JEU
import emission
import codeurs
+import re
def charger(el, jeu):
titre = el.getAttribute('titre')
@@ -30,6 +31,7 @@
self.titre = titre
self.date = date
self.message = message
+ self.capture_vars = re.compile('(\$[A-Z_]{2,})')
if emissions is None:
self.emissions = {}
@@ -46,7 +48,12 @@
jeu.forces.connect('row-changed', self.forces_row_changed, jeu)
jeu.forces.connect('row-deleted', self.forces_row_deleted)
-
+
+ def lister_variables(self):
+ variables = self.capture_vars.findall(self.message)
+ variables = {}.fromkeys(variables).keys()
+ variables.sort()
+ return variables
def forces_row_changed(self, forces, path, iter, jeu):
force = forces.get_value(iter, JEU.COL_FORCE)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]