Ajout d'une option permettant d'utiliser ou non les couleurs systeme.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@680 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2009-05-24 17:46:44 +00:00
parent 8ec9b80d7e
commit ff9b4e13f9
7 changed files with 56 additions and 12 deletions

View File

@@ -1,4 +1,5 @@
[General]
usesystemcolors=true
[diagrameditor]
defaultauthor=

View File

@@ -1,4 +1,5 @@
[General]
usesystemcolors=true
[diagrameditor]
defaultauthor=

View File

@@ -101,9 +101,13 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ConfigPage
// acces a la configuration de QElectroTech
QSettings &settings = QETApp::settings();
bool use_system_colors = settings.value("usesystemcolors", "true").toBool();
bool tabbed = settings.value("diagrameditor/viewmode", "tabbed") == "tabbed";
bool integrate_elements = settings.value("diagrameditor/integrate-elements", true).toBool();
appearance_ = new QGroupBox(tr("Apparence"), this);
use_system_colors_ = new QCheckBox(tr("Utiliser les couleurs du syst\350me"), appearance_);
projects_view_mode_ = new QGroupBox(tr("Projets"), this);
windowed_mode_ = new QRadioButton(tr("Utiliser des fen\352tres"), projects_view_mode_);
tabbed_mode_ = new QRadioButton(tr("Utiliser des onglets"), projects_view_mode_);
@@ -112,6 +116,8 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ConfigPage
elements_management_ = new QGroupBox(tr("Gestion des \351l\351ments"), this);
integrate_elements_ = new QCheckBox(tr("Int\351grer automatiquement les \351l\351ments dans les projets (recommand\351)"), elements_management_);
use_system_colors_ -> setChecked(use_system_colors);
if (tabbed) {
tabbed_mode_ -> setChecked(true);
} else {
@@ -120,6 +126,10 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ConfigPage
integrate_elements_ -> setChecked(integrate_elements);
QVBoxLayout *appearance_layout = new QVBoxLayout();
appearance_layout -> addWidget(use_system_colors_);
appearance_ -> setLayout(appearance_layout);
QVBoxLayout *projects_view_mode_layout = new QVBoxLayout();
projects_view_mode_layout -> addWidget(windowed_mode_);
projects_view_mode_layout -> addWidget(tabbed_mode_);
@@ -139,6 +149,7 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ConfigPage
horiz_line_ -> setFrameShape(QFrame::HLine);
vlayout1 -> addWidget(horiz_line_);
vlayout1 -> addWidget(appearance_);
vlayout1 -> addWidget(projects_view_mode_);
vlayout1 -> addWidget(elements_management_);
vlayout1 -> addStretch();
@@ -156,6 +167,13 @@ GeneralConfigurationPage::~GeneralConfigurationPage() {
void GeneralConfigurationPage::applyConf() {
QSettings &settings = QETApp::settings();
bool was_using_system_colors = settings.value("usesystemcolors", "true").toBool();
bool must_use_system_colors = use_system_colors_ -> isChecked();
settings.setValue("usesystemcolors", must_use_system_colors);
if (was_using_system_colors != must_use_system_colors) {
QETApp::instance() -> useSystemPalette(must_use_system_colors);
}
QString view_mode = tabbed_mode_ -> isChecked() ? "tabbed" : "windowed";
settings.setValue("diagrameditor/viewmode", view_mode) ;

View File

@@ -90,6 +90,8 @@ class GeneralConfigurationPage : public ConfigPage {
public:
QLabel *title_label_;
QFrame *horiz_line_;
QGroupBox *appearance_;
QCheckBox *use_system_colors_;
QGroupBox *projects_view_mode_;
QRadioButton *windowed_mode_;
QRadioButton *tabbed_mode_;

View File

@@ -50,8 +50,9 @@ QETApp::QETApp(int &argc, char **argv) :
{
parseArguments();
initLanguage();
initStyle();
QET::Icons::initIcons();
initConfiguration();
initStyle();
if (!non_interactive_execution_ && isRunning()) {
// envoie les arguments a l'instance deja existante
@@ -596,6 +597,28 @@ void QETApp::invertMainWindowVisibility(QWidget *window) {
if (QMainWindow *w = qobject_cast<QMainWindow *>(window)) setMainWindowVisible(w, !w -> isVisible());
}
/**
Change la palette de l'application
@param use true pour utiliser les couleurs du systeme, false pour utiliser celles du theme en cours
*/
void QETApp::useSystemPalette(bool use) {
if (use) {
setPalette(initial_palette_);
} else {
setPalette(style() -> standardPalette());
}
// reapplique les feuilles de style
setStyleSheet(
"QAbstractScrollArea#mdiarea {"
" background-color:white;"
" background-image: url(':/ico/mdiarea_bg.png');"
" background-repeat: no-repeat;"
" background-position: center middle;"
"}"
);
}
/**
Demande la fermeture de toutes les fenetres ; si l'utilisateur les accepte,
l'application quitte
@@ -807,13 +830,15 @@ void QETApp::initLanguage() {
Met en place tout ce qui concerne le style graphique de l'application
*/
void QETApp::initStyle() {
// initialise les icones
QET::Icons::initIcons();
initial_palette_ = palette();
// lorsque le style Plastique est active, on le remplace par une version amelioree
if (qobject_cast<QPlastiqueStyle *>(style())) {
setStyle(new QETStyle());
}
// applique ou non les couleurs de l'environnement
useSystemPalette(settings().value("usesystemcolors", true).toBool());
}
/**
@@ -834,6 +859,7 @@ void QETApp::initConfiguration() {
qet_settings = new QSettings(configDir() + "qelectrotech.conf", QSettings::IniFormat, this);
// fichiers recents
// note : les icones doivent etre initialisees avant ces instructions (qui creent des menus en interne)
projects_recent_files_ = new RecentFiles("projects");
elements_recent_files_ = new RecentFiles("elements");
}

View File

@@ -128,6 +128,7 @@ class QETApp : public QETSingleApplication {
QSettings *qet_settings;
QETArguments qet_arguments_; ///< Analyseur d'arguments
bool non_interactive_execution_; ///< booleen indiquant si l'application va se terminer immediatement apres un court traitement
QPalette initial_palette_; ///< Palette des couleurs systeme
static FileElementsCollection *common_collection;
static FileElementsCollection *custom_collection;
@@ -135,7 +136,7 @@ class QETApp : public QETSingleApplication {
static uint next_project_id;
static RecentFiles *projects_recent_files_;
static RecentFiles *elements_recent_files_;
public slots:
void systray(QSystemTrayIcon::ActivationReason);
void reduceEveryEditor();
@@ -149,6 +150,7 @@ class QETApp : public QETSingleApplication {
bool closeEveryEditor();
void setMainWindowVisible(QMainWindow *, bool);
void invertMainWindowVisibility(QWidget *);
void useSystemPalette(bool);
void quitQET();
void checkRemainingWindows();
void messageReceived(const QString &);

View File

@@ -40,16 +40,10 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
{
// mise en place de l'interface MDI au centre de l'application
setCentralWidget(&workspace);
// nomme l'objet afin qu'il soit reperable par les feuilles de style
workspace.setBackground(QBrush(Qt::NoBrush));
workspace.setObjectName("mdiarea");
workspace.setStyleSheet(
"QAbstractScrollArea#mdiarea {"
" background-color:white;"
" background-image: url(':/ico/mdiarea_bg.png');"
" background-repeat: no-repeat;"
" background-position: center middle;"
"}"
);
// mise en place du signalmapper
connect(&windowMapper, SIGNAL(mapped(QWidget *)), this, SLOT(activateWidget(QWidget *)));