changeset 48:153de5d461a4

added Social Contract \o. (in French only so far) - new infoDialog, to show widget, it's used here to show an external webpage - some CSS tuning
author Goffi <goffi@goffi.org>
date Thu, 26 May 2011 18:44:31 +0200 (2011-05-26)
parents 7cabe3c1a5f2
children f1d2eb9b2523
files browser_side/dialog.py browser_side/panels.py public/contrat_social.html public/libervia.css
diffstat 4 files changed, 154 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/browser_side/dialog.py	Thu May 26 17:17:48 2011 +0200
+++ b/browser_side/dialog.py	Thu May 26 18:44:31 2011 +0200
@@ -26,6 +26,7 @@
 from pyjamas.ui.ListBox import ListBox
 from pyjamas.ui.Button import Button
 from pyjamas.ui.HTML import HTML
+from pyjamas.ui import HasAlignment
 from pyjamas.ui.KeyboardListener import KEY_ESCAPE
 
 class ContactsChooser(DialogBox):
@@ -112,27 +113,36 @@
         self.hide()
         self.callback(False)
 
-class SimpleDialog(DialogBox):
+class InfoDialog(DialogBox):
+    """Dialog which just show a widget and a close button"""
 
-    def __init__(self, title, body, callback = None):
+    def __init__(self, title, widget, callback = None):
         """Simple notice dialog box
         @param title: HTML put in the header
-        @param body: HTML put in the body"""
+        @param body: widget put in the body"""
         DialogBox.__init__(self, centered=True)
         self.callback = callback
         _body = VerticalPanel()
+        _body.setSize('100%','100%')
+        _body.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
         _body.setSpacing(4)
-        _body.add(HTML(body))
+        _body.add(widget)
+        _body.setCellWidth(widget, '100%')
         _body.add(Button("Close", self.onClose))
-        _body.setStyleName("dialogBody")
         self.setHTML(title)
         self.setWidget(_body)
+        self.panel.setWidth('100%')
 
     def onClose(self):
         self.hide()
         if self.callback:
             self.callback()
 
+class SimpleDialog(InfoDialog):
+
+    def __init__(self, title, body, callback = None):
+        InfoDialog.__init__(self, title, HTML(body), callback)
+
 class PopupPanelWrapper(PopupPanel):
     """This wrapper catch Escape event to avoid request cancellation by Firefox"""
 
--- a/browser_side/panels.py	Thu May 26 17:17:48 2011 +0200
+++ b/browser_side/panels.py	Thu May 26 18:44:31 2011 +0200
@@ -34,9 +34,9 @@
 from pyjamas.ui.MenuItem import MenuItem
 from pyjamas.ui.Label import Label
 from pyjamas.ui.HTML import HTML
+from pyjamas.ui.Frame import Frame
 from pyjamas.ui.DropWidget import DropWidget
 from pyjamas.ui.ClickListener import ClickHandler
-from pyjamas.ui import HasAlignment
 from pyjamas.ui.KeyboardListener import KEY_ENTER
 from pyjamas.Timer import Timer
 from pyjamas import Window
@@ -50,7 +50,7 @@
 from tools import html_sanitize
 from datetime import datetime
 from time import time
-from dialog import ContactsChooser, PopupPanelWrapper
+import dialog
 
 class MenuCmd:
 
@@ -69,7 +69,8 @@
         SimplePanel.__init__(self)
 
         menu_general = MenuBar(vertical=True)
-        menu_general.addItem("Properties", MenuCmd(self, "onProperties"))
+        menu_general.addItem("Social contract", MenuCmd(self, "onSocialContract"))
+        menu_general.addItem("About", MenuCmd(self, "onAbout"))
 
         menu_games = MenuBar(vertical=True)
         menu_games.addItem("Tarot", MenuCmd(self, "onTarotGame"))
@@ -80,18 +81,28 @@
         menubar.addItem(MenuItem("Games", True, menu_games))
         self.add(menubar)
 
-    def onProperties(self):
-        Window.alert("Properties selected")
+    #General menu
+    def onSocialContract(self):
+        _frame = Frame('contrat_social.html')
+        _frame.setStyleName('infoFrame')
+        _dialog = dialog.InfoDialog("Contrat Social", _frame)
+        _dialog.setSize('80%', '80%')
+        _dialog.show()
+
+    def onAbout(self):
+        dialog.SimpleDialog("About", "Libervia, a Salut à Toi project").show() 
+    
+    #Game menu
 
     def onTarotGame(self):
         #Window.alert("Tarot selected")
         #self.host.tab_panel.add(EmptyPanel(self.host), "Tarot")
         def onPlayersSelected(other_players):
             self.host.bridge.call('launchTarotGame', None, other_players)
-        ContactsChooser(self.host, onPlayersSelected, 3, text="Please select 3 other players").getContacts() 
+        dialog.ContactsChooser(self.host, onPlayersSelected, 3, text="Please select 3 other players").getContacts() 
 
     def onXiangqiGame(self):
-        Window.alert("Xiangqi selected")
+        Window.alert("A Xiangqi is planed, but not available yet")
 
 class DropCell(DropWidget):
     """Cell in the middle grid which replace itself with the dropped widget on DnD"""
@@ -245,7 +256,7 @@
             return
         contents = HTML(msg)
 
-        self._popup = PopupPanelWrapper(autoHide=False, modal=False)
+        self._popup = dialog.PopupPanelWrapper(autoHide=False, modal=False)
         self._popup.target_data = target_data
         self._popup.add(contents)
         self._popup.setStyleName("warningPopup")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/public/contrat_social.html	Thu May 26 18:44:31 2011 +0200
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+  
+  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
+  <title>Salut � Toi: Contrat Social</title>
+
+  
+</head><body>
+Le projet � Salut � Toi � est n� d'un besoin de protection de nos
+libert�s, de notre vie priv�e et de notre ind�pendance. Il se veut
+garant des droits et libert�s qu'un utilisateur a vis � vis de ses
+propres informations, des informations num�riques sur sa vie ou celles
+de ses connaissances, des donn�es qu'il manipule; et se veut �galement
+un point de contact humain, ne se substituant pas aux rapports r�els,
+mais au contraire les facilitant.<br>
+
+Salut � Toi lutte et luttera toujours contre toute forme de main mise
+sur les technologies par des int�r�ts priv�s. Le r�seau global doit
+appartenir � tous, et �tre un point d'expression et de libert� pour
+l'Humanit�.<br>
+
+<br>
+
+� ce titre, � Salut � Toi � et ceux qui y participent se basent sur un
+contrat social, un engagement vis � vis de ceux qui l'utilisent. Ce
+contrat consiste en les points suivants:<br>
+
+<ul>
+
+  <li>nous pla�ons la <span style="font-style: italic;">Libert�</span> en t�te de nos priorit�s: libert� de
+l'utilisateur, libert� vis � vis de ses donn�es. Pour cela, � Salut �
+Toi � est un logiciel Libre - condition essentielle -, et son
+infrastructure se base �galement sur des logiciels Libres, c'est � dire
+des logiciels qui respectent ces 4 libert�s fondamentales
+    <ul>
+
+    <li>la libert� d'ex�cuter le programme, pour tous les usages,</li>
+  
+    </ul>
+    <ul>
+
+    <li>la libert� d'�tudier le fonctionnement du programme et de
+l'adapter � ses besoins,</li>
+  
+    </ul>
+    <ul>
+
+    <li>la libert� de redistribuer des copies du programme</li>
+  
+    </ul>
+    <ul>
+
+    <li>la libert� d'am�liorer le programme et de distribuer ces
+am�liorations au public, pour en faire profiter toute la communaut�.<br>
+</li>
+  
+    </ul>
+</li>
+  
+  
+  
+  
+
+Vous avez ainsi la possibilit� d'installer votre propre version de �
+Salut � Toi � sur votre propre machine, d'en v�rifier - et de
+comprendre - ainsi son fonctionnement, de l'adapter � vos besoins, d'en
+faire profiter vos amis.
+
+  <li>Les informations vous concernant vous appartiennent, et nous
+n'aurons pas la pr�tention - et l'ind�cence ! - de consid�rer le
+contenu que vous produisez ou faites circuler via � Salut � Toi � comme
+nous appartenant. De m�me, nous nous engageons � ne jamais faire de
+profit en revendant vos informations personnelles.</li>
+  <li>Nous incitons fortement � la <span style="text-decoration: underline;">d�centralisation g�n�ralis�e</span>. �
+Salut � Toi � �tant bas� sur un protocole d�centralis� (XMPP), il l'est
+lui-m�me par nature. La d�centralisation est essentielle pour une
+meilleure protection de vos informations, une meilleure r�sistance � la
+censure ou aux pannes, et pour �viter les d�rives autoritaires.</li>
+  <li>Luttant contre les tentatives de contr�le priv� et les abus
+commerciaux du r�seau global, et afin de garder notre ind�pendance,
+nous nous refusons � toute forme de publicit�: vous ne verrez <span style="font-weight: bold;">jamais</span>
+de forme de r�clame commerciale de notre fait.</li>
+  <li>L'<span style="font-style: italic;">�galit�</span> des utilisateurs est essentielle pour nous, nous
+refusons toute forme de discrimination, que ce soit pour une zone
+g�ographique, une cat�gorie de la population, ou tout autre raison.</li>
+  <li>Nous ferons tout notre possible pour lutter contre toute
+tentative de censure. Le r�seau global doit �tre un moyen d'expression
+pour tous.</li>
+  <li>Nous refusons toute id�e d'autorit� absolue en ce qui concerne
+les d�cisions prises pour � Salut � Toi � et son fonctionnement, et le
+choix de la d�centralisation et l'utilisation de logiciel Libre permet
+de lutter contre toute forme de hi�rarchie.</li>
+  
+  <li>L'id�e de <span style="font-style: italic;">Fraternit�</span> est essentielle, aussi:
+    <ul>
+      <li>nous ferons notre
+possible pour aider les utilisateurs, quel que soit leur niveau</li>
+      <li>de m�me, des efforts seront fait quant �
+l'accessibilit� aux personnes victimes d'un handicap</li>
+      <li>� Salut � Toi �,
+XMPP, et les technologies utilis�es facilitent les �changes
+�lectroniques, mais nous d�sirons mettre l'accent sur les rencontres
+r�elles et humaines: nous favoriserons toujours le r�el sur le virtuel.</li>
+    </ul>
+</li>
+  
+  
+</ul>
+
+</body></html>
--- a/public/libervia.css	Thu May 26 17:17:48 2011 +0200
+++ b/public/libervia.css	Thu May 26 18:44:31 2011 +0200
@@ -133,6 +133,7 @@
   margin: 2px;
   font-weight: bold;
   cursor: default;
+  text-align: center;
 }
 
 .gwt-DialogBox .Registration {
@@ -150,6 +151,10 @@
     text-align: center;
 }
 
+.infoDialogBody {
+    width: 100%;
+    height: 100%
+}
 /* Contact List */
 
 .contactTitle {
@@ -406,3 +411,8 @@
     border: 3px dashed red;
 }
 
+.infoFrame {
+    position: relative;
+    width: 100%;
+    height: 100%;
+}