diff --git a/addon/doxywizard/expert.cpp b/addon/doxywizard/expert.cpp index 155498c441f..fe6609eadb8 100644 --- a/addon/doxywizard/expert.cpp +++ b/addon/doxywizard/expert.cpp @@ -323,6 +323,32 @@ static QString getDocsForNode(const QDomElement &child) } } } + else if (child.attribute(SA("format")) == SA("image")) + { + QString abspath = child.attribute(SA("abspath")); + if (defval != SA("")) + { + docs+=SA("
"); + if (abspath != SA("1")) + { + docs += SA(" The default image is: ") + defval + SA("."); + } + else + { + docs += SA(" The default image (with absolute path) is: ") + defval + SA("."); + } + docs += SA("
"); + } + else + { + if (abspath == SA("1")) + { + docs+=SA("
"); + docs += SA(" The image has to be specified with full path."); + docs += SA("
"); + } + } + } else // if (child.attribute(SA("format")) == SA("string")) { if (defval != SA("")) @@ -477,6 +503,10 @@ QWidget *Expert::createTopicWidget(QDomElement &elem) { mode = InputString::StringFile; } + else if (format==SA("image")) + { + mode = InputString::StringImage; + } else // format=="string" { mode = InputString::StringFree; diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp index 913bf9378a1..ad258f71634 100644 --- a/addon/doxywizard/inputstring.cpp +++ b/addon/doxywizard/inputstring.cpp @@ -44,6 +44,7 @@ InputString::InputString( QGridLayout *layout,int &row, layout->addWidget( m_com, row, 1, 1, 3, Qt::AlignLeft ); m_le=0; m_br=0; + m_im=0; row++; } else @@ -51,28 +52,39 @@ InputString::InputString( QGridLayout *layout,int &row, layout->addWidget( m_lab, row, 0 ); m_le = new QLineEdit; m_le->setText( s ); + m_im = 0; //layout->setColumnMinimumWidth(2,150); - if (m==StringFile || m==StringDir) + if (m==StringFile || m==StringDir || m==StringImage) { layout->addWidget( m_le, row, 1 ); m_br = new QToolBar; m_br->setIconSize(QSize(24,24)); - if (m==StringFile) + if (m==StringFile || m==StringImage) { QAction *file = m_br->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),this,SLOT(browse())); file->setToolTip(tr("Browse to a file")); + layout->addWidget( m_br,row,2 ); + if (m==StringImage) + { + m_im = new QLabel; + m_im->setMinimumSize(1,55); + m_im->setAlignment(Qt::AlignLeft|Qt::AlignTop); + row++; + layout->addWidget( m_im,row,1 ); + } } else { QAction *dir = m_br->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),this,SLOT(browse())); dir->setToolTip(tr("Browse to a folder")); + layout->addWidget( m_br,row,2 ); } - layout->addWidget( m_br,row,2 ); } else { layout->addWidget( m_le, row, 1, 1, 2 ); m_br=0; + m_im=0; } m_com=0; row++; @@ -119,6 +131,33 @@ void InputString::updateDefault() { m_lab->setText(QString::fromAscii("")+m_id+QString::fromAscii("")); } + if (m_im) + { + if (m_str.isEmpty()) + { + m_im->setText(tr("No Project logo selected.")); + } + else + { + QFile Fout(m_str); + if(!Fout.exists()) + { + m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromAscii(");")); + } + else + { + QPixmap pm(m_str); + if (!pm.isNull()) + { + m_im->setPixmap(pm.scaledToHeight(55,Qt::SmoothTransformation)); + } + else + { + m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromAscii(");")); + } + } + } + } if (m_le && m_le->text()!=m_str) m_le->setText( m_str ); emit changed(); } @@ -128,6 +167,7 @@ void InputString::setEnabled(bool state) { m_lab->setEnabled(state); if (m_le) m_le->setEnabled(state); + if (m_im) m_le->setEnabled(state); if (m_br) m_br->setEnabled(state); if (m_com) m_com->setEnabled(state); updateDefault(); @@ -136,7 +176,7 @@ void InputString::setEnabled(bool state) void InputString::browse() { QString path = QFileInfo(MainWindow::instance().configFileName()).path(); - if (m_sm==StringFile) + if (m_sm==StringFile || m_sm==StringImage) { QString fileName = QFileDialog::getOpenFileName(&MainWindow::instance(), tr("Select file"),path); diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h index 2b8b099c41e..90ea87d78ee 100644 --- a/addon/doxywizard/inputstring.h +++ b/addon/doxywizard/inputstring.h @@ -35,7 +35,8 @@ class InputString : public QObject, public Input enum StringMode { StringFree=0, StringFile=1, StringDir=2, - StringFixed=3 + StringFixed=3, + StringImage=4 }; InputString( QGridLayout *layout,int &row, @@ -77,6 +78,7 @@ class InputString : public QObject, public Input void updateDefault(); QLabel *m_lab; QLineEdit *m_le; + QLabel *m_im; QToolBar *m_br; QComboBox *m_com; QString m_str; diff --git a/addon/doxywizard/wizard.cpp b/addon/doxywizard/wizard.cpp index c4cda76a878..56933e0eaf3 100644 --- a/addon/doxywizard/wizard.cpp +++ b/addon/doxywizard/wizard.cpp @@ -468,6 +468,7 @@ Step1::Step1(Wizard *wizard,const QHash &modelData) : m_wizard(w projVersion->setAlignment(Qt::AlignRight|Qt::AlignVCenter); // project icon QLabel *projLogo = new QLabel(this); + projLogo->setMinimumSize(1,55); projLogo->setText(tr("Project logo:")); projLogo->setAlignment(Qt::AlignRight|Qt::AlignVCenter); @@ -564,21 +565,28 @@ void Step1::selectProjectIcon() QString path = QFileInfo(MainWindow::instance().configFileName()).path(); QString iconName = QFileDialog::getOpenFileName(this, tr("Select project icon/image"),path); - QFile Fout(iconName); - if(!Fout.exists()) + if (iconName.isEmpty()) { - m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");")); + m_projIconLab->setText(tr("No Project logo selected.")); } else { - QPixmap pm(iconName); - if (!pm.isNull()) + QFile Fout(iconName); + if(!Fout.exists()) { - m_projIconLab->setPixmap(pm.scaledToHeight(55,Qt::SmoothTransformation)); + m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");")); } else { - m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");")); + QPixmap pm(iconName); + if (!pm.isNull()) + { + m_projIconLab->setPixmap(pm.scaledToHeight(55,Qt::SmoothTransformation)); + } + else + { + m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");")); + } } } updateStringOption(m_modelData,STR_PROJECT_LOGO,iconName); diff --git a/src/config.h b/src/config.h index 756e94e0580..505e4d1e263 100644 --- a/src/config.h +++ b/src/config.h @@ -165,7 +165,7 @@ class ConfigEnum : public ConfigOption class ConfigString : public ConfigOption { public: - enum WidgetType { String, File, Dir }; + enum WidgetType { String, File, Dir, Image }; ConfigString(const char *name,const char *doc) : ConfigOption(O_String) { diff --git a/src/config.xml b/src/config.xml index dcaa37222dc..636b6e3d709 100644 --- a/src/config.xml +++ b/src/config.xml @@ -247,7 +247,7 @@ Go to the next section or return to the -