|
From: <bma...@us...> - 2011-10-17 13:30:49
|
Revision: 6537
http://fudaa.svn.sourceforge.net/fudaa/?rev=6537&view=rev
Author: bmarchan
Date: 2011-10-17 13:30:39 +0000 (Mon, 17 Oct 2011)
Log Message:
-----------
Fix : Mise en conformit?\195?\169 des messages
Modified Paths:
--------------
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExporter.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlDecimationPanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlRefinementPanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlSceneEditor.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneOrganizePointAction.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefsImporterFromModeleur2d.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportBiefPanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ImportBiefPanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionAxeHydraulique.java
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -46,7 +46,6 @@
import org.fudaa.ebli.trace.TraceLigneModel;
import org.fudaa.ebli.trace.TraceSurface;
import org.fudaa.ebli.trace.TraceSurfaceModel;
-import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.modeleur.resource.MdlResource;
import com.memoire.bu.BuComboBox;
@@ -143,7 +142,7 @@
bgLayers.add(rbVisibleLayers_);
bgLayers.add(rbSelectedGeometries_);
- BuLabel lbAide=new BuLabel(FudaaLib.getS("Remarque : Les g\xE9om\xE9tries non visibles ne seront pas export\xE9es"));
+ BuLabel lbAide=new BuLabel(MdlResource.getS("Remarque : Les g\xE9om\xE9tries non visibles ne seront pas export\xE9es"));
lbAide.setFont(MdlResource.HELP_FONT);
lbAide.setForeground(MdlResource.HELP_FORGROUND_COLOR);
lbAide.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExporter.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExporter.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCasierExporter.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -222,9 +222,7 @@
if (!hasNoIntersectionWithContours(_scn, _mdCasiers, _selNiveaux) ||
!hasNoIntersectionWithNiveaux(_scn, _mdCasiers, _selNiveaux)) {
- ana.addError(MdlResource.getS("Les lignes de niveaux s\xE9lectionn\xE9es coupent des\n"+
- "contours de casiers ou se coupent entre elles.\n" +
- "Aucun casiers export\xE9"), -1);
+ ana.addError(MdlResource.getS("Les lignes de niveaux s\xE9lectionn\xE9es coupent des\ncontours de casiers ou se coupent entre elles.\nAucun casiers export\xE9"), -1);
return synt;
}
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlDecimationPanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlDecimationPanel.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlDecimationPanel.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -73,7 +73,7 @@
return false;
}
else if (rbDist_.isSelected() && (tfDist_.getText().trim().length()==0 || (dist_ = (Double)tfDist_.getValue())<=0)) {
- setErrorText(MdlResource.getS("La distance minimale entre 2 points doit \xEAtre > 0 ") + '!');
+ setErrorText(MdlResource.getS("La distance minimale entre 2 points doit \xEAtre > 0 !"));
return false;
}
return true;
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -83,7 +83,7 @@
return false;
}
else if (rbDist_.isSelected() && (tfDist_.getText().trim().length()==0 || (dist_ = (Double)tfDist_.getValue())<=0)) {
- setErrorText(MdlResource.getS("La distance entre 2 points cons\xE9cutifs doit \xEAtre > 0 ") + '!');
+ setErrorText(MdlResource.getS("La distance entre 2 points cons\xE9cutifs doit \xEAtre > 0 !"));
return false;
}
return true;
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlRefinementPanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlRefinementPanel.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlRefinementPanel.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -73,7 +73,7 @@
return false;
}
else if (rbDist_.isSelected() && (tfDist_.getText().trim().length()==0 || (dist_ = (Double)tfDist_.getValue())<=0)) {
- setErrorText(MdlResource.getS("La distance maximale entre 2 points doit \xEAtre > 0 ") + '!');
+ setErrorText(MdlResource.getS("La distance maximale entre 2 points doit \xEAtre > 0 !"));
return false;
}
return true;
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlSceneEditor.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -155,8 +155,7 @@
nbProbGeom++;
}
if (nbProbGeom>0) {
- ui_.error(MdlResource.getS("Vous ne pouvez pas coller ou d\xE9placer ces g\xE9om\xE9tries.\n"+
- "{0} g\xE9om\xE9trie(s) a/ont moins de {1} points.",
+ ui_.error(MdlResource.getS("Vous ne pouvez pas coller ou d\xE9placer ces g\xE9om\xE9tries.\n{0} g\xE9om\xE9trie(s) a/ont moins de {1} points.",
nbProbGeom,nbMin));
return false;
}
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneOrganizePointAction.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneOrganizePointAction.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneOrganizePointAction.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -36,7 +36,7 @@
* SceneOrganizePoint.x. As you want.
*/
public SceneOrganizePointAction(MdlSceneEditor _sceneEditor, String _criterion) {
- super(MdlResource.getS("R\xE9organisation sur ")+(_criterion==null?"":_criterion), null, "REORGANIZE_POLYLIGNE");
+ super(MdlResource.getS("R\xE9organisation sur")+(_criterion==null?"":" "+_criterion), null, "REORGANIZE_POLYLIGNE");
sceneEditor_=_sceneEditor;
criterion_=_criterion;
if(sceneEditor_==null||criterion_==null)
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -29,7 +29,7 @@
public SceneProjectionAction(MdlSceneEditor _sceneEditor) {
super(MdlResource.getS("Projeter sur un semis"), null, "GIS_PROJECT");
-// setDefaultToolTip(CtuluLib.getS("Projeter la g\xE9om\xE9trie sur un semis"));
+// setDefaultToolTip(MdlResource.getS("Projeter la g\xE9om\xE9trie sur un semis"));
setSceneEditor(_sceneEditor);
sceneEditor_.getScene().addSelectionListener(this);
}
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefsImporterFromModeleur2d.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefsImporterFromModeleur2d.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefsImporterFromModeleur2d.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -121,7 +121,7 @@
}
// Erreurs de donn\xE9es
catch (IllegalArgumentException _exc) {
- controller1d_.getImplementation().error(MdlResource.getS("Erreur"), MdlResource.getS("Import du bief {0} depuis le 2d :", name)+"\n"+_exc.getMessage());
+ controller1d_.getImplementation().error(MdlResource.getS("Erreur"), MdlResource.getS("Import du bief {0} depuis le 2d", name)+" :\n"+_exc.getMessage());
}
// Interruption de l'utilisateur
catch (CancelException _exc) { }
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -255,7 +255,7 @@
// Verifie que deux points cons\xE9cutifs ne sont pas confondus. \\
/* for (int i=1; i<seq.size(); i++)
if (seq.getX(i-1)==seq.getX(i)&&seq.getY(i-1)==seq.getY(i))
- throw new ProfilContainerException(FudaaLib.getS("Au moins deux points dans le profil sont confondus."));
+ throw new ProfilContainerException(MdlResource.getS("Au moins deux points dans le profil sont confondus."));
*/
// Verifie que le profil donn\xE9 ne poss\xE8de pas des segments qui se coupent entre eux \\
for(int i=1;i<seq.size();i++){
@@ -871,7 +871,7 @@
// // Variables de r\xE9solution
// double deltaTmp=equB*equB-4*equA*equC;
// if(deltaTmp<0)
-// throw new ProfilContainerException(FudaaLib.getS("Ce d\xE9placement n'est pas possible sans violer la contrainte de constance de la longueur du profil."));
+// throw new ProfilContainerException(MdlResource.getS("Ce d\xE9placement n'est pas possible sans violer la contrainte de constance de la longueur du profil."));
// double delta=Math.sqrt(equB*equB-4*equA*equC);
// x1=(-equB+delta)/(2*equA);
// y1=n-x1*m;
@@ -888,7 +888,7 @@
// // Variables de r\xE9solution
// double deltaTmp=equB*equB-4*equA*equC;
// if(deltaTmp<0)
-// throw new ProfilContainerException(FudaaLib.getS("Ce d\xE9placement n'est pas possible sans violer la contrainte de constance de la longueur du profil."));
+// throw new ProfilContainerException(MdlResource.getS("Ce d\xE9placement n'est pas possible sans violer la contrainte de constance de la longueur du profil."));
// double delta=Math.sqrt(equB*equB-4*equA*equC);
// y1=(-equB+delta)/(2*equA);
// x1=k;
@@ -897,7 +897,7 @@
// }
// // Cas 3
// else
-// throw new ProfilContainerException(FudaaLib.getS("Ce d\xE9placement n'est pas valide. Ce cas ne devrait jamais arriver. CSI_1"));
+// throw new ProfilContainerException(MdlResource.getS("Ce d\xE9placement n'est pas valide. Ce cas ne devrait jamais arriver. CSI_1"));
// // Recherche du r\xE9sultat nous interessant dans ce cas ci
// Coordinate aZ0=new Coordinate(a.x, a.y, 0);
// Coordinate bZ0=new Coordinate(b.x, b.y, 0);
@@ -914,7 +914,7 @@
// newY=y2;
// }
// else
-// throw new ProfilContainerException(FudaaLib.getS("Ce d\xE9placement n'est pas valide. Ce cas ne devrait jamais arriver. CSI_2"));
+// throw new ProfilContainerException(MdlResource.getS("Ce d\xE9placement n'est pas valide. Ce cas ne devrait jamais arriver. CSI_2"));
//
// // Verifie que le point trouv\xE9 ne coupe pas un autre axe du profil \\
// boolean noCut=true;
@@ -941,7 +941,7 @@
// }
// // Traitement de l'\xE9ventuelle d\xE9tection d'un croisement
// if(!noCut)
-// throw new ProfilContainerException(FudaaLib.getS("Ce d\xE9placement est impossible sans obtenir un profil dont des axes se coupent."));
+// throw new ProfilContainerException(MdlResource.getS("Ce d\xE9placement est impossible sans obtenir un profil dont des axes se coupent."));
// // Enregistrement du nouveau point C' et de la nouvelle valeur curviligne
// coords[_idxPoint]=new Coordinate(newX, newY, coords[_idxPoint].z);
// // Mise a jour de la table des valeurs curvilignes
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -15,7 +15,6 @@
import org.fudaa.ctulu.gis.GISGeometryFactory;
import org.fudaa.ctulu.gis.GISPoint;
import org.fudaa.ctulu.gis.GISZoneCollection;
-import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.modeleur.resource.MdlResource;
import com.vividsolutions.jts.geom.Coordinate;
@@ -42,24 +41,26 @@
// Une classe pour afficher le message.
class MessageHelper {
- public void warn(String _mes, int _idxProfil, int _idxPoint) {
- if (_ana==null) return;
+ public String getProfName(int _idxProfil) {
int iattName=_zone.getIndiceOf(GISAttributeConstants.TITRE);
- String name=(String)_zone.getValue(iattName, _idxProfil);
- _ana.addWarn(MdlResource.getS(_mes,name,_idxPoint),-1);
+ return (String)_zone.getValue(iattName, _idxProfil);
}
}
CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)_zone.getGeometry(_idxProfil)).getCoordinateSequence();
// Verifie qu'on a bien au minimum deux points. \\
if (seq.size()<2) {
- new MessageHelper().warn("Profil '{0}' : Le nombre de points mini doit \xEAtre de 2", _idxProfil, 0);
+ if (_ana!=null)
+ _ana.addWarn(MdlResource.getS("Profil '{0}' : Le nombre de points mini doit \xEAtre de 2",
+ new MessageHelper().getProfName(_idxProfil)));
return false;
}
// Verifie que deux points cons\xE9cutifs ne sont pas confondus. \\
for (int i=1; i<seq.size(); i++)
if (seq.getX(i-1)==seq.getX(i)&&seq.getY(i-1)==seq.getY(i)&&seq.getOrdinate(i,2)==seq.getOrdinate(i-1,2)) {
- new MessageHelper().warn("Profil '{0}' : Au moins 2 points sont confondus au point {1}", _idxProfil, i+1);
+ if (_ana!=null)
+ _ana.addWarn(MdlResource.getS("Profil '{0}' : Au moins 2 points sont confondus au point {1}",
+ new MessageHelper().getProfName(_idxProfil), i+1));
return false;
}
// Verifie que le profil donn\xE9 ne poss\xE8de pas des segments qui se coupent entre eux
@@ -81,7 +82,9 @@
seq.getCoordinate(j+1)}));
// Traitement d'une \xE9ventuelle intersection
if (!ok) {
- new MessageHelper().warn("Profil '{0}' : Le profil se coupe lui m\xEAme au point {1}", _idxProfil, j+1);
+ if (_ana!=null)
+ _ana.addWarn(MdlResource.getS("Profil '{0}' : Le profil se coupe lui m\xEAme au point {1}",
+ new MessageHelper().getProfName(_idxProfil), j+1));
return false;
}
}
@@ -107,7 +110,9 @@
if(idxPointRupturePrecedent<0||!seq.getCoordinate(idxPointRupturePrecedent).equals(seq.getCoordinate(idx2)))
nbPointsRupture++;
if (nbPointsRupture>2) {
- new MessageHelper().warn("Profil '{0}' : Le profil poss\xE8de plus de 3 segments",_idxProfil,0);
+ if (_ana != null)
+ _ana.addWarn(MdlResource.getS("Profil '{0}' : Le profil poss\xE8de plus de 3 segments",
+ new MessageHelper().getProfName(_idxProfil)));
return false;
}
if(idx2+1<idx3)
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportBiefPanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportBiefPanel.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportBiefPanel.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -12,14 +12,12 @@
import javax.swing.JPanel;
-import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibFile;
import org.fudaa.ctulu.CtuluUI;
import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
import org.fudaa.ctulu.gui.CtuluDialogPanel;
import org.fudaa.ctulu.gui.CtuluFileChooserPanel;
import org.fudaa.fudaa.modeleur.resource.MdlResource;
-import org.fudaa.fudaa.sig.FSigLib;
import com.memoire.bu.BuFileFilter;
import com.memoire.bu.BuLabel;
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ImportBiefPanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ImportBiefPanel.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/ImportBiefPanel.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -12,14 +12,12 @@
import javax.swing.JPanel;
-import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibFile;
import org.fudaa.ctulu.CtuluUI;
import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
import org.fudaa.ctulu.gui.CtuluDialogPanel;
import org.fudaa.ctulu.gui.CtuluFileChooserPanel;
import org.fudaa.fudaa.modeleur.resource.MdlResource;
-import org.fudaa.fudaa.sig.FSigLib;
import com.memoire.bu.BuFileFilter;
import com.memoire.bu.BuLabel;
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionAxeHydraulique.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionAxeHydraulique.java 2011-10-17 08:39:21 UTC (rev 6536)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionAxeHydraulique.java 2011-10-17 13:30:39 UTC (rev 6537)
@@ -64,7 +64,7 @@
Container body=new Container();
body.setLayout(new BuGridLayout(2, 2, 2));
// D\xE9calage curviligne
- body.add(lbDecalageCurviligne_=new BuLabel(MdlResource.getS("D\xE9calage abscisse: ")));
+ body.add(lbDecalageCurviligne_=new BuLabel(MdlResource.getS("D\xE9calage abscisse")+": "));
tfDecalageCurviligne_=new BuTextField();
tfDecalageCurviligne_.setCharValidator(BuCharValidator.DOUBLE);
tfDecalageCurviligne_.addActionListener(new ActionListener(){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|