/*
* JViewer.java
* Version : 2
*
* Created on 2 novembre 2007
* Modified on 13 novembre 2007
*/
/* Importation des espaces de nom nécessaires */
import com.trolltech.qt.core.*;
import com.trolltech.qt.gui.*;
import com.trolltech.qt.core.Qt.*;
import com.trolltech.qt.gui.QSizePolicy.Policy;
/* Définition de l'application et de ses attributs */
public class JViewer extends QMainWindow {
private String curFile;
// Fichier actuellement ouvert private QPixmap pixImage;
private QLabel widgetImage; // Conteneur de l'image
private QMenu fileMenu; // Menu Fichier
private QMenu helpMenu; // Menu Aide
private QToolBar fileToolBar; // Barre d'outil Fichier
private QAction openAct; // Action Ouvrir
private QAction sizeToFitAct; // Action Ouvrir
private QAction exitAct; // Action Quitter
private QAction aboutAct; // Action A Propos de JEditor
private QAction aboutQtAct; // Action A propos de Qt Jambi
private String rsrcPath =
"classpath:images";
// Répertoire des images
/* Définition du constructeur */
public JViewer()
{
setMinimumSize(240, 160);
QMenuBar menuBar = new QMenuBar(); // On crée la barre de menu
pixImage = new QPixmap(rsrcPath+"/JViewer.png");
widgetImage = new QLabel(this);
widgetImage.
setSizePolicy(Policy.
Expanding,
Policy.
Expanding);
widgetImage.setAlignment(AlignmentFlag.AlignCenter);
widgetImage.setPixmap(pixImage);
resize();
setMenuBar(menuBar); // On ajoute la barre de menu à notre Application
setCentralWidget(widgetImage); // On ajoute la zone de Texte
/* On lance les méthodes de création des différents attributs de notre fenêtre */
try {
createActions();
e.printStackTrace();
}
createMenus();
createToolBars();
createStatusBar();
/* Le fichier de départ est un fichier vide */
setCurrentFile("");
}
/* Méthode d'ouverture du fichier */
public void open()
{
String fileName = QFileDialog.
getOpenFileName(this);
if (fileName.length() != 0)
loadFile(fileName);
}
public void sizeToFit(){
widgetImage.setPixmap(pixImage.scaled(widgetImage.size(),
AspectRatioMode.KeepAspectRatio,
TransformationMode.SmoothTransformation));
}
/* Fonction A propos de JEditor */
public void about()
{
QMessageBox.about(this,
tr("A Propos de JViewer"),
tr("<b>JViewer<b> est une petite application "+
"réalisé par <a href='http://www.trunat.fr/'>Natim</a>. Pour découvrir QT Jambi."));
}
/* Création des actions des menus et des toolbars */
private void createActions()
{
/* Actions du menu Fichier */
openAct = new QAction(new QIcon(rsrcPath + "/open.png"), tr("&Ouvrir..."), this);
openAct.setShortcut(tr("Ctrl+O"));
openAct.setStatusTip(tr("Ouvrir un fichier"));
openAct.triggered.connect(this, "open()");
sizeToFitAct = new QAction(new QIcon(rsrcPath + "/sizeToFit.tif"), tr("Afficher l'image dans sa taille d'origine"), this);
sizeToFitAct.setShortcut(tr("Ctrl+A"));
sizeToFitAct.setStatusTip(tr("Taille d'origine"));
sizeToFitAct.triggered.connect(this, "resize()");
exitAct = new QAction(new QIcon(rsrcPath + "/exit.png"), tr("Quitter"), this);
exitAct.setStatusTip(tr("Quitter l'application"));
exitAct.triggered.connect(QApplication.instance(), "quit()");
/* Action du menu Aide */
aboutAct = new QAction(new QIcon(rsrcPath + "/about.png"), tr("A Propos de &JViewer"), this);
aboutAct.setStatusTip(tr("A Propos de JEditor"));
aboutAct.triggered.connect(this, "about()");
aboutQtAct = new QAction(new QIcon(rsrcPath + "/qt-logo.png"), tr("A Propos de &Qt"), this);
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"));
aboutQtAct.triggered.connect(QApplication.instance(), "aboutQt()");
}
/* Création des Menus */
private void createMenus()
{
/* Menu fichier */
fileMenu = menuBar().addMenu(tr("&Fichier"));
fileMenu.addAction(openAct);
fileMenu.addAction(sizeToFitAct);
fileMenu.addSeparator();
fileMenu.addAction(exitAct);
/* Menu Aide */
helpMenu = menuBar().addMenu(tr("&Aide"));
helpMenu.addAction(aboutAct);
helpMenu.addAction(aboutQtAct);
}
/* Création de la barre de menu */
private void createToolBars()
{
fileToolBar = addToolBar(tr("Fichier"));
fileToolBar.addAction(openAct);
fileToolBar.addAction(sizeToFitAct);
fileToolBar.addSeparator();
fileToolBar.addAction(exitAct);
}
/* Création de la Barre de Status */
private void createStatusBar()
{
statusBar().showMessage(tr("Pr&#144;et"));
}
/* Charger un fichier */
public void loadFile
(String fileName
) {
pixImage = new QPixmap(fileName);
if(pixImage == null){
QMessageBox.
warning(this, tr
("JViewer"),
String.
format(tr
("Erreur à l'ouverture de l'image %1$s:\n%2$s."), fileName
));
return;
}
widgetImage.clear();
widgetImage.setPixmap(pixImage);
resize();
setCurrentFile(fileName);
statusBar().showMessage(tr("Image Chargée"), 2000);
}
/* On enregistre le nom du fichier ouvert comme nom du fichier courant */
public void setCurrentFile
(String fileName
) {
curFile = fileName;
setWindowModified(false);
if (curFile.length() == 0)
shownName = tr("Aucun fichier");
else
shownName = curFile;
setWindowTitle
(String.
format(tr
("%1$s[*] - %2$s"), shownName, tr
("JViewer")));
}
protected void paintEvent(QPaintEvent e) {
sizeToFit();
}
protected void resize(){
if(pixImage.size().subtract(new QSize(240,160)).isValid()){
super.resize(pixImage.size().add(size().subtract(widgetImage.size())));
}else{
super.resize(new QSize(240,160));
widgetImage.setPixmap(pixImage);
}
}
/* Lancement de l'application */
public static void main
(String[] args
) { QApplication.initialize(args);
JViewer application = new JViewer();
application.show();
QApplication.exec();
}
}