* Application: new createView() method

* gtk/qt3/qt4/GuiApplication: createView() method deleted

* LyXView:
 - init(): is now a pure virtual method. autoSave code transferred to constructor and updates to the frontends.
 - setGeometry(): new pure virtual method

* gtk/GView, qt3/QtView, qt4/GuiView: adapted to above change
 - setGeometry(): code transfered from GuiApplication

* lyx_main.C: call LyX::ref().addLyXView() in there instead of in Application::createView()


* 

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15183 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2006-09-29 23:10:17 +00:00
parent ca5411f913
commit 3a1f656e4e
15 changed files with 144 additions and 113 deletions

View File

@ -14,11 +14,12 @@
#include "Application_pimpl.h" #include "Application_pimpl.h"
#include "Gui.h" #include "Gui.h"
#include "LyXView.h"
#include "WorkArea.h"
#include "LyXAction.h" #include "LyXAction.h"
#include "lyxfunc.h" #include "lyxfunc.h"
#include "lyxrc.h" #include "lyxrc.h"
#include "LyXView.h"
#include "support/lstrings.h" #include "support/lstrings.h"
#include "support/os.h" #include "support/os.h"
@ -90,6 +91,34 @@ void Application::setBufferView(BufferView * buffer_view)
} }
// FIXME: this whole method needs to be moved to Application.
LyXView & Application::createView(unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize)
{
// FIXME: please confirm: with unicode, I think initEncoding()
// is not needed anymore!
// this can't be done before because it needs the Languages object
//initEncodings();
int view_id = gui().newView(width, height);
LyXView & view = gui().view(view_id);
pimpl_->lyxfunc_.reset(new LyXFunc(&view));
// FIXME: for now we assume that there is only one LyXView with id = 0.
/*int workArea_id_ =*/ gui().newWorkArea(width, height, 0);
//WorkArea * workArea_ = & theApp->gui().workArea(workArea_id_);
view.init();
view.setGeometry(width, height, posx, posy, maximize);
return view;
}
int Application::start(std::string const & batch) int Application::start(std::string const & batch)
{ {
pimpl_->lyx_server_.reset(new LyXServer(pimpl_->lyxfunc_.get(), lyxrc.lyxpipes)); pimpl_->lyx_server_.reset(new LyXServer(pimpl_->lyxfunc_.get(), lyxrc.lyxpipes));

View File

@ -20,6 +20,7 @@ class BufferView;
class LyXFunc; class LyXFunc;
class LyXServer; class LyXServer;
class LyXServerSocket; class LyXServerSocket;
class LyXView;
namespace lyx { namespace lyx {
namespace frontend { namespace frontend {
@ -71,6 +72,11 @@ public:
BufferList & bufferList(); BufferList & bufferList();
BufferList const & bufferList() const; BufferList const & bufferList() const;
///
LyXView & createView(unsigned int width, unsigned int height,
int posx, int posy, bool maximize);
///
void setBufferView(BufferView * buffer_view); void setBufferView(BufferView * buffer_view);
protected: protected:

View File

@ -71,7 +71,12 @@ LyXView::LyXView()
dialogs_(new Dialogs(*this)), dialogs_(new Dialogs(*this)),
controlcommand_(new ControlCommandBuffer(*this)) controlcommand_(new ControlCommandBuffer(*this))
{ {
lyxerr[Debug::INIT] << "Initializing LyXFunc" << endl; // Start autosave timer
if (lyxrc.autosave) {
autosave_timeout_->timeout.connect(boost::bind(&LyXView::autoSave, this));
autosave_timeout_->setTimeout(lyxrc.autosave * 1000);
autosave_timeout_->start();
}
} }
@ -99,20 +104,6 @@ WorkArea * LyXView::workArea()
} }
void LyXView::init()
{
updateLayoutChoice();
updateMenubar();
// Start autosave timer
if (lyxrc.autosave) {
autosave_timeout_->timeout.connect(boost::bind(&LyXView::autoSave, this));
autosave_timeout_->setTimeout(lyxrc.autosave * 1000);
autosave_timeout_->start();
}
}
Buffer * LyXView::buffer() const Buffer * LyXView::buffer() const
{ {
return work_area_->bufferView().buffer(); return work_area_->bufferView().buffer();

View File

@ -69,7 +69,13 @@ public:
* We have to have the toolbar and the other stuff created * We have to have the toolbar and the other stuff created
* before we can populate it with this call. * before we can populate it with this call.
*/ */
void init(); virtual void init() = 0;
virtual void setGeometry(
unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize) = 0;
/// show busy cursor /// show busy cursor
virtual void busy(bool) const = 0; virtual void busy(bool) const = 0;

View File

@ -131,6 +131,22 @@ GView::~GView()
{} {}
void GView::init()
{
updateLayoutChoice();
updateMenubar();
}
void GView::setGeometry(unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize)
{
// FIXME: do something here...
}
Gtk::Box & GView::getBox(Position pos) Gtk::Box & GView::getBox(Position pos)
{ {
return *box_map_[pos]; return *box_map_[pos];

View File

@ -38,6 +38,16 @@ public:
GView(); GView();
~GView(); ~GView();
/// initialize the object
virtual void init();
/// FIXME: not implemented!
virtual void setGeometry(
unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize);
Gtk::Box & getBox(Position pos); Gtk::Box & getBox(Position pos);
virtual void prohibitInput() const; virtual void prohibitInput() const;

View File

@ -110,28 +110,5 @@ void GuiApplication::exit(int /*status*/)
} }
// FIXME: this whole method needs to be moved to Application.
LyXView & GuiApplication::createView(unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize)
{
// FIXME: for now we assume that there is only one LyXView with id = 0.
/*int workArea_id_ =*/ gui().newWorkArea(width, height, 0);
//WorkArea * workArea_ = & theApp->gui().workArea(workArea_id_);
int view_id = gui().newView(width, height);
GView & view = static_cast<GView &>(gui().view(view_id));
pimpl_->lyxfunc_.reset(new LyXFunc(&view));
LyX::ref().addLyXView(&view);
view.show();
view.init();
return view;
}
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx

View File

@ -190,21 +190,6 @@ LyXView & GuiApplication::createView(unsigned int width,
view.init(); view.init();
// FIXME: put this initialisation code in GuiView accessible via
// a pure virtual method in LyXView.
// only true when the -geometry option was NOT used
if (width != 0 && height != 0) {
view.initFloatingGeometry(QRect(posx, posy, width, height));
view.resize(width, height);
if (posx != -1 && posy != -1)
view.move(posx, posy);
view.show();
if (maximize)
view.setWindowState(Qt::WindowMaximized);
} else
view.show();
return view; return view;
} }

View File

@ -91,7 +91,27 @@ void QtView::init()
// and we don't save their orientation anyway. Disable the handle. // and we don't save their orientation anyway. Disable the handle.
setToolBarsMovable(false); setToolBarsMovable(false);
LyXView::init(); updateLayoutChoice();
updateMenubar();
}
void QtView::setGeometry(unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize)
{
// only true when the -geometry option was NOT used
if (width != 0 && height != 0) {
initFloatingGeometry(QRect(posx, posy, width, height));
resize(width, height);
if (posx != -1 && posy != -1)
move(posx, posy);
show();
if (maximize)
setWindowState(Qt::WindowMaximized);
} else
show();
} }

View File

@ -41,7 +41,14 @@ public:
~QtView(); ~QtView();
/// initialise the object members (menubars, toolbars, etc..) /// initialise the object members (menubars, toolbars, etc..)
void init(); virtual void init();
///
virtual void setGeometry(
unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize);
/// show - display the top-level window /// show - display the top-level window
void show(); void show();

View File

@ -14,8 +14,6 @@
#include "GuiApplication.h" #include "GuiApplication.h"
#include "GuiView.h"
#include "GuiWorkArea.h"
#include "qt_helpers.h" #include "qt_helpers.h"
#include "QLImage.h" #include "QLImage.h"
@ -42,6 +40,7 @@
#include <QLibraryInfo> #include <QLibraryInfo>
#include <QTextCodec> #include <QTextCodec>
#include <QTranslator> #include <QTranslator>
#include <QWidget>
#ifdef Q_WS_X11 #ifdef Q_WS_X11
#include <X11/Xlib.h> #include <X11/Xlib.h>
@ -165,54 +164,6 @@ void GuiApplication::exit(int status)
} }
// FIXME: this whole method needs to be moved to Application.
LyXView & GuiApplication::createView(unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize)
{
// this can't be done before because it needs the Languages object
initEncodings();
int view_id = gui().newView(width, height);
GuiView & view = static_cast<GuiView &> (gui().view(view_id));
pimpl_->lyxfunc_.reset(new LyXFunc(&view));
// FIXME: for now we assume that there is only one LyXView with id = 0.
/*int workArea_id_ =*/ gui().newWorkArea(width, height, 0);
//WorkArea * workArea_ = & theApp->gui().workArea(workArea_id_);
LyX::ref().addLyXView(&view);
view.init();
// FIXME: put this initialisation code in GuiView accessible via
// a pure virtual method in LyXView.
// only true when the -geometry option was NOT used
if (width != 0 && height != 0) {
if (posx != -1 && posy != -1) {
#ifdef Q_OS_WIN32
// FIXME: use only setGeoemtry when Trolltech has
// fixed the qt4/X11 bug
view.setGeometry(posx, posy,width, height);
#else
view.resize(width, height);
view.move(posx, posy);
#endif
} else {
view.resize(width, height);
}
if (maximize)
view.setWindowState(Qt::WindowMaximized);
}
view.show();
return view;
}
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

View File

@ -65,10 +65,6 @@ public:
/// ///
FontLoader & fontLoader() { return font_loader_; } FontLoader & fontLoader() { return font_loader_; }
///
LyXView & createView(unsigned int width, unsigned int height,
int posx, int posy, bool maximize);
private: private:
/// ///
GuiImplementation gui_; GuiImplementation gui_;

View File

@ -104,10 +104,39 @@ void GuiView::init()
// make sure the buttons are disabled if needed // make sure the buttons are disabled if needed
updateToolbars(); updateToolbars();
updateLayoutChoice();
LyXView::init(); updateMenubar();
} }
void GuiView::setGeometry(unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize)
{
// only true when the -geometry option was NOT used
if (width != 0 && height != 0) {
if (posx != -1 && posy != -1) {
#ifdef Q_OS_WIN32
// FIXME: use only setGeoemtry when Trolltech has
// fixed the qt4/X11 bug
QMainWindow::setGeometry(posx, posy,width, height);
#else
resize(width, height);
move(posx, posy);
#endif
} else {
resize(width, height);
}
if (maximize)
setWindowState(Qt::WindowMaximized);
}
show();
}
void GuiView::updateMenu(QAction * /*action*/) void GuiView::updateMenu(QAction * /*action*/)
{ {
menubar_->update(); menubar_->update();

View File

@ -54,6 +54,13 @@ public:
/// initialize the object /// initialize the object
virtual void init(); virtual void init();
///
virtual void setGeometry(
unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize);
/// show - display the top-level window /// show - display the top-level window
void show(); void show();

View File

@ -338,6 +338,7 @@ int LyX::exec2(int & argc, char * argv[])
} }
// create the main window // create the main window
LyXView * view = lyx_gui::create_view(width, height, posx, posy, maximize); LyXView * view = lyx_gui::create_view(width, height, posx, posy, maximize);
ref().addLyXView(view);
// load files // load files
for_each(files.begin(), files.end(), for_each(files.begin(), files.end(),