mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
simplify About dialog
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20088 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
1c7ed8b641
commit
665119e4f6
@ -1,102 +0,0 @@
|
|||||||
/**
|
|
||||||
* \file ControlAboutlyx.cpp
|
|
||||||
* This file is part of LyX, the document processor.
|
|
||||||
* Licence details can be found in the file COPYING.
|
|
||||||
*
|
|
||||||
* \author Edwin Leuven
|
|
||||||
* \author Angus Leeming
|
|
||||||
*
|
|
||||||
* Full author contact details are available in file CREDITS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include "ControlAboutlyx.h"
|
|
||||||
#include "gettext.h"
|
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
#include "support/filetools.h" // FileSearch
|
|
||||||
#include "support/Package.h"
|
|
||||||
|
|
||||||
#include <fstream>
|
|
||||||
#include <sstream>
|
|
||||||
|
|
||||||
using std::ostream;
|
|
||||||
using std::ostringstream;
|
|
||||||
using std::string;
|
|
||||||
|
|
||||||
|
|
||||||
namespace lyx {
|
|
||||||
|
|
||||||
using support::FileName;
|
|
||||||
using support::fileSearch;
|
|
||||||
using support::makeDisplayPath;
|
|
||||||
using support::package;
|
|
||||||
|
|
||||||
namespace frontend {
|
|
||||||
|
|
||||||
|
|
||||||
ControlAboutlyx::ControlAboutlyx(Dialog & parent)
|
|
||||||
: Dialog::Controller(parent)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
void ControlAboutlyx::getCredits(ostream & ss) const
|
|
||||||
{
|
|
||||||
FileName const name = fileSearch(package().system_support().absFilename(), "CREDITS");
|
|
||||||
|
|
||||||
bool found(!name.empty());
|
|
||||||
|
|
||||||
if (found) {
|
|
||||||
std::ifstream in(name.toFilesystemEncoding().c_str());
|
|
||||||
|
|
||||||
ss << in.rdbuf();
|
|
||||||
found = ss.good();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found) {
|
|
||||||
ss << to_utf8(_("ERROR: LyX wasn't able to read CREDITS file\n"))
|
|
||||||
<< to_utf8(_("Please install correctly to estimate the great\n"))
|
|
||||||
<< to_utf8(_("amount of work other people have done for the LyX project."));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string const ControlAboutlyx::getCopyright() const
|
|
||||||
{
|
|
||||||
return to_utf8(_("LyX is Copyright (C) 1995 by Matthias Ettrich,\n1995-2006 LyX Team"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string const ControlAboutlyx::getLicense() const
|
|
||||||
{
|
|
||||||
return to_utf8(_("This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string const ControlAboutlyx::getDisclaimer() const
|
|
||||||
{
|
|
||||||
return to_utf8(_("LyX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\nSee the GNU General Public License for more details.\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA."));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string const ControlAboutlyx::getVersion() const
|
|
||||||
{
|
|
||||||
ostringstream ss;
|
|
||||||
|
|
||||||
ss << to_utf8(_("LyX Version "))
|
|
||||||
<< lyx_version
|
|
||||||
<< " ("
|
|
||||||
<< lyx_release_date
|
|
||||||
<< ")\n"
|
|
||||||
<< to_utf8(_("Library directory: "))
|
|
||||||
<< to_utf8(makeDisplayPath(package().system_support().absFilename()))
|
|
||||||
<< "\n"
|
|
||||||
<< to_utf8(_("User directory: "))
|
|
||||||
<< to_utf8(makeDisplayPath(package().user_support().absFilename()));
|
|
||||||
|
|
||||||
return ss.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace frontend
|
|
||||||
} // namespace lyx
|
|
@ -1,49 +0,0 @@
|
|||||||
// -*- C++ -*-
|
|
||||||
/**
|
|
||||||
* \file ControlAboutlyx.h
|
|
||||||
* This file is part of LyX, the document processor.
|
|
||||||
* Licence details can be found in the file COPYING.
|
|
||||||
*
|
|
||||||
* \author Edwin Leuven
|
|
||||||
* \author Angus Leeming
|
|
||||||
*
|
|
||||||
* Full author contact details are available in file CREDITS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CONTROLABOUTLYX_H
|
|
||||||
#define CONTROLABOUTLYX_H
|
|
||||||
|
|
||||||
#include "Dialog.h"
|
|
||||||
#include <iosfwd>
|
|
||||||
|
|
||||||
namespace lyx {
|
|
||||||
namespace frontend {
|
|
||||||
|
|
||||||
/** \c ControlAboutlyx is a controller for the "About LyX" dialogs.
|
|
||||||
*/
|
|
||||||
class ControlAboutlyx : public Dialog::Controller {
|
|
||||||
public:
|
|
||||||
ControlAboutlyx(Dialog & parent);
|
|
||||||
|
|
||||||
//@{
|
|
||||||
/// Instantiate Dialog::Controller methods.
|
|
||||||
virtual bool initialiseParams(std::string const &) { return true; }
|
|
||||||
virtual void clearParams() {}
|
|
||||||
virtual void dispatchParams() {}
|
|
||||||
virtual bool isBufferDependent() const { return false; }
|
|
||||||
//@}
|
|
||||||
|
|
||||||
//@{
|
|
||||||
/// Provide the View with specific pieces of information.
|
|
||||||
void getCredits(std::ostream &) const;
|
|
||||||
std::string const getCopyright() const;
|
|
||||||
std::string const getLicense() const;
|
|
||||||
std::string const getDisclaimer() const;
|
|
||||||
std::string const getVersion() const;
|
|
||||||
//@}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace frontend
|
|
||||||
} // namespace lyx
|
|
||||||
|
|
||||||
#endif // CONTROLABOUTLYX_H
|
|
@ -11,7 +11,6 @@ SOURCEFILES = \
|
|||||||
Dialog.cpp \
|
Dialog.cpp \
|
||||||
Kernel.cpp \
|
Kernel.cpp \
|
||||||
ButtonPolicy.cpp \
|
ButtonPolicy.cpp \
|
||||||
ControlAboutlyx.cpp \
|
|
||||||
ControlBibtex.cpp \
|
ControlBibtex.cpp \
|
||||||
ControlBox.cpp \
|
ControlBox.cpp \
|
||||||
ControlBranch.cpp \
|
ControlBranch.cpp \
|
||||||
@ -53,7 +52,6 @@ SOURCEFILES = \
|
|||||||
HEADERFILES = \
|
HEADERFILES = \
|
||||||
Kernel.h \
|
Kernel.h \
|
||||||
ButtonPolicy.h \
|
ButtonPolicy.h \
|
||||||
ControlAboutlyx.h \
|
|
||||||
ControlBibtex.h \
|
ControlBibtex.h \
|
||||||
ControlBox.h \
|
ControlBox.h \
|
||||||
ControlBranch.h \
|
ControlBranch.h \
|
||||||
|
@ -11,114 +11,118 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "GuiAbout.h"
|
#include "GuiAbout.h"
|
||||||
|
|
||||||
#include "qt_helpers.h"
|
#include "qt_helpers.h"
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
#include "support/lstrings.h"
|
#include "support/filetools.h"
|
||||||
|
#include "support/Package.h"
|
||||||
|
|
||||||
#include <sstream>
|
#include <QtCore>
|
||||||
|
#include <QtGui>
|
||||||
|
|
||||||
#include <QLabel>
|
using lyx::support::package;
|
||||||
#include <QPushButton>
|
using lyx::support::makeDisplayPath;
|
||||||
#include <QTextCodec>
|
|
||||||
#include <QTextBrowser>
|
|
||||||
|
|
||||||
using lyx::support::prefixIs;
|
|
||||||
|
|
||||||
using std::getline;
|
|
||||||
|
|
||||||
using std::istringstream;
|
|
||||||
using std::ostringstream;
|
|
||||||
using std::string;
|
|
||||||
|
|
||||||
|
|
||||||
namespace lyx {
|
namespace lyx {
|
||||||
namespace frontend {
|
namespace frontend {
|
||||||
|
|
||||||
|
static QString credits()
|
||||||
|
{
|
||||||
|
QString res;
|
||||||
|
QFile file(toqstr(package().system_support().absFilename()) + "CREDITS");
|
||||||
|
QTextStream out(&res);
|
||||||
|
|
||||||
|
if (file.isReadable()) {
|
||||||
|
out << toqstr(_("ERROR: LyX wasn't able to read CREDITS file\n"));
|
||||||
|
out << toqstr(_("Please install correctly to estimate the great\n"));
|
||||||
|
out << toqstr(_("amount of work other people have done for the LyX project."));
|
||||||
|
} else {
|
||||||
|
file.open(QIODevice::ReadOnly);
|
||||||
|
QTextStream ts(&file);
|
||||||
|
QString line;
|
||||||
|
do {
|
||||||
|
line = ts.readLine();
|
||||||
|
if (line.startsWith("@b"))
|
||||||
|
out << "<b>" << line.mid(2) << "</b>";
|
||||||
|
else if (line.startsWith("@i"))
|
||||||
|
out << "<i>" << line.mid(2) << "</i>";
|
||||||
|
else
|
||||||
|
out << line;
|
||||||
|
out << "<br>";
|
||||||
|
} while (!line.isNull());
|
||||||
|
}
|
||||||
|
out.flush();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QString copyright()
|
||||||
|
{
|
||||||
|
return toqstr(_("LyX is Copyright (C) 1995 by Matthias Ettrich,\n1995-2006 LyX Team"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QString license()
|
||||||
|
{
|
||||||
|
return toqstr(_("This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QString disclaimer()
|
||||||
|
{
|
||||||
|
return toqstr(_("LyX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\nSee the GNU General Public License for more details.\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QString version()
|
||||||
|
{
|
||||||
|
QString res;
|
||||||
|
QTextStream out(&res);
|
||||||
|
out << toqstr(_("LyX Version "));
|
||||||
|
out << lyx_version;
|
||||||
|
out << " (";
|
||||||
|
out << lyx_release_date;
|
||||||
|
out << ")\n";
|
||||||
|
out << toqstr(_("Library directory: "));
|
||||||
|
out << toqstr(makeDisplayPath(package().system_support().absFilename()));
|
||||||
|
out << "\n";
|
||||||
|
out << toqstr(_("User directory: "));
|
||||||
|
out << toqstr(makeDisplayPath(package().user_support().absFilename()));
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ControlAbout : public Dialog::Controller
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ControlAbout(Dialog & parent) : Dialog::Controller(parent) {}
|
||||||
|
bool initialiseParams(std::string const &) { return true; }
|
||||||
|
void clearParams() {}
|
||||||
|
void dispatchParams() {}
|
||||||
|
bool isBufferDependent() const { return false; }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
GuiAboutDialog::GuiAboutDialog(LyXView & lv)
|
GuiAboutDialog::GuiAboutDialog(LyXView & lv)
|
||||||
: GuiDialog(lv, "aboutlyx")
|
: GuiDialog(lv, "aboutlyx")
|
||||||
{
|
{
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
setViewTitle(_("About LyX"));
|
setViewTitle(_("About LyX"));
|
||||||
|
setController(new ControlAbout(*this));
|
||||||
setController(new ControlAboutlyx(*this));
|
|
||||||
|
|
||||||
connect(closePB, SIGNAL(clicked()), this, SLOT(reject()));
|
connect(closePB, SIGNAL(clicked()), this, SLOT(reject()));
|
||||||
|
|
||||||
connect(closePB, SIGNAL(clicked()),
|
copyrightTB->setPlainText(copyright());
|
||||||
this, SLOT(slotClose()));
|
copyrightTB->append(QString());
|
||||||
|
copyrightTB->append(license());
|
||||||
|
copyrightTB->append(QString());
|
||||||
|
copyrightTB->append(disclaimer());
|
||||||
|
|
||||||
copyrightTB->setPlainText(toqstr(controller().getCopyright()));
|
versionLA->setText(version());
|
||||||
copyrightTB->append("");
|
creditsTB->setHtml(credits());
|
||||||
copyrightTB->append(toqstr(controller().getLicense()));
|
|
||||||
copyrightTB->append("");
|
|
||||||
copyrightTB->append(toqstr(controller().getDisclaimer()));
|
|
||||||
|
|
||||||
versionLA->setText(toqstr(controller().getVersion()));
|
|
||||||
|
|
||||||
// The code below should depend on a autoconf test. (Lgb)
|
|
||||||
#if 1
|
|
||||||
// There are a lot of buggy stringstream implementations..., but the
|
|
||||||
// code below will work on all of them (I hope). The drawback with
|
|
||||||
// this solutions os the extra copying. (Lgb)
|
|
||||||
|
|
||||||
ostringstream in;
|
|
||||||
controller().getCredits(in);
|
|
||||||
|
|
||||||
istringstream ss(in.str());
|
|
||||||
|
|
||||||
string s;
|
|
||||||
ostringstream out;
|
|
||||||
|
|
||||||
while (getline(ss, s)) {
|
|
||||||
if (prefixIs(s, "@b"))
|
|
||||||
out << "<b>" << s.substr(2) << "</b>";
|
|
||||||
else if (prefixIs(s, "@i"))
|
|
||||||
out << "<i>" << s.substr(2) << "</i>";
|
|
||||||
else
|
|
||||||
out << s;
|
|
||||||
out << "<br>";
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
// Good stringstream implementations can handle this. It avoids
|
|
||||||
// some copying, and should thus be faster and use less memory. (Lgb)
|
|
||||||
// I'll make this the default for a short while to see if anyone
|
|
||||||
// see the error...
|
|
||||||
stringstream in;
|
|
||||||
controller().getCredits(in);
|
|
||||||
in.seekg(0);
|
|
||||||
string s;
|
|
||||||
ostringstream out;
|
|
||||||
|
|
||||||
while (getline(in, s)) {
|
|
||||||
if (prefixIs(s, "@b"))
|
|
||||||
out << "<b>" << s.substr(2) << "</b>";
|
|
||||||
else if (prefixIs(s, "@i"))
|
|
||||||
out << "<i>" << s.substr(2) << "</i>";
|
|
||||||
else
|
|
||||||
out << s;
|
|
||||||
out << "<br>";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
creditsTB->setHtml(toqstr(out.str()));
|
|
||||||
|
|
||||||
// try to resize to a good size
|
|
||||||
copyrightTB->hide();
|
|
||||||
setMinimumSize(copyrightTB->sizeHint());
|
|
||||||
copyrightTB->show();
|
|
||||||
setMinimumSize(sizeHint());
|
|
||||||
|
|
||||||
// Manage the cancel/close button
|
|
||||||
bc().setPolicy(ButtonPolicy::OkCancelPolicy);
|
|
||||||
bc().setCancel(closePB);
|
|
||||||
bc().refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ControlAboutlyx & GuiAboutDialog::controller() const
|
|
||||||
{
|
|
||||||
return static_cast<ControlAboutlyx &>(Dialog::controller());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
@ -13,11 +13,8 @@
|
|||||||
#define GUIABOUT_H
|
#define GUIABOUT_H
|
||||||
|
|
||||||
#include "GuiDialog.h"
|
#include "GuiDialog.h"
|
||||||
#include "ControlAboutlyx.h"
|
|
||||||
#include "ui_AboutUi.h"
|
#include "ui_AboutUi.h"
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
|
|
||||||
namespace lyx {
|
namespace lyx {
|
||||||
namespace frontend {
|
namespace frontend {
|
||||||
|
|
||||||
@ -28,8 +25,6 @@ class GuiAboutDialog : public GuiDialog, public Ui::AboutUi
|
|||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
GuiAboutDialog(LyXView & lv);
|
GuiAboutDialog(LyXView & lv);
|
||||||
/// parent controller
|
|
||||||
ControlAboutlyx & controller() const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
Loading…
Reference in New Issue
Block a user