mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-22 07:42:02 +00:00
GUI API Cleanup step 3: merge with "younes" branch.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14448 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
eda1688084
commit
e1a5cb74a8
@ -96,9 +96,9 @@ void BufferView::setBuffer(Buffer * b)
|
||||
}
|
||||
|
||||
|
||||
void BufferView::newFile(string const & fn, string const & tn, bool named)
|
||||
string BufferView::firstLayout()
|
||||
{
|
||||
pimpl_->newFile(fn, tn, named);
|
||||
return pimpl_->firstLayout();
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,6 +15,8 @@
|
||||
#ifndef BUFFER_VIEW_H
|
||||
#define BUFFER_VIEW_H
|
||||
|
||||
#include "metricsinfo.h"
|
||||
|
||||
#include "frontends/LyXKeySym.h"
|
||||
|
||||
#include "support/types.h"
|
||||
@ -96,6 +98,8 @@ public:
|
||||
void setBuffer(Buffer * b);
|
||||
/// return the buffer being viewed
|
||||
Buffer * buffer() const;
|
||||
/// return the first layout of the Buffer.
|
||||
std::string firstLayout();
|
||||
|
||||
/// return the owning main view
|
||||
LyXView * owner() const;
|
||||
@ -105,9 +109,6 @@ public:
|
||||
|
||||
/// reload the contained buffer
|
||||
void reload();
|
||||
/// create a new buffer based on template
|
||||
void newFile(std::string const & fname, std::string const & tname,
|
||||
bool named = true);
|
||||
/// load a buffer into the view
|
||||
bool loadLyXFile(std::string const & name, bool tolastfiles = true);
|
||||
|
||||
@ -220,7 +221,6 @@ public:
|
||||
*/
|
||||
void putSelectionAt(DocIterator const & cur,
|
||||
int length, bool backwards);
|
||||
|
||||
///
|
||||
ViewMetricsInfo const & viewMetricsInfo();
|
||||
|
||||
|
@ -108,6 +108,7 @@ namespace {
|
||||
|
||||
unsigned int const saved_positions_num = 20;
|
||||
|
||||
|
||||
/// Return an inset of this class if it exists at the current cursor position
|
||||
template <class T>
|
||||
T * getInsetByCode(LCursor & cur, InsetBase::Code code)
|
||||
@ -187,7 +188,7 @@ void BufferView::Pimpl::connectBuffer(Buffer & buf)
|
||||
|
||||
closingConnection_ =
|
||||
buf.closing.connect(
|
||||
boost::bind(&BufferView::Pimpl::setBuffer, this, (Buffer *)0));
|
||||
boost::bind(&LyXView::setBuffer, owner_, (Buffer *)0));
|
||||
}
|
||||
|
||||
|
||||
@ -203,13 +204,6 @@ void BufferView::Pimpl::disconnectBuffer()
|
||||
}
|
||||
|
||||
|
||||
void BufferView::Pimpl::newFile(string const & filename, string const & tname,
|
||||
bool isNamed)
|
||||
{
|
||||
setBuffer(::newFile(filename, tname, isNamed));
|
||||
}
|
||||
|
||||
|
||||
bool BufferView::Pimpl::loadLyXFile(string const & filename, bool tolastfiles)
|
||||
{
|
||||
// Get absolute path of file and add ".lyx"
|
||||
@ -257,7 +251,7 @@ bool BufferView::Pimpl::loadLyXFile(string const & filename, bool tolastfiles)
|
||||
text, 0, 1, _("&Create"), _("Cancel"));
|
||||
|
||||
if (ret == 0)
|
||||
b = ::newFile(s, string(), true);
|
||||
b = newFile(s, string(), true);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
@ -376,10 +370,14 @@ void BufferView::Pimpl::setBuffer(Buffer * b)
|
||||
}
|
||||
|
||||
update();
|
||||
owner_->updateMenubar();
|
||||
owner_->updateToolbars();
|
||||
owner_->updateLayoutChoice();
|
||||
owner_->updateWindowTitle();
|
||||
|
||||
if (buffer_ && lyx::graphics::Previews::status() != LyXRC::PREVIEW_OFF)
|
||||
lyx::graphics::Previews::get().generateBufferPreviews(*buffer_);
|
||||
}
|
||||
|
||||
string BufferView::Pimpl::firstLayout()
|
||||
{
|
||||
string firstlayout;
|
||||
|
||||
// This is done after the layout combox has been populated
|
||||
if (buffer_) {
|
||||
@ -389,16 +387,14 @@ void BufferView::Pimpl::setBuffer(Buffer * b)
|
||||
CursorSlice const & slice = cursor_[i];
|
||||
if (!slice.inset().inMathed()) {
|
||||
LyXLayout_ptr const layout = slice.paragraph().layout();
|
||||
owner_->setLayout(layout->name());
|
||||
firstlayout = layout->name();
|
||||
break;
|
||||
}
|
||||
BOOST_ASSERT(i>0);
|
||||
--i;
|
||||
}
|
||||
}
|
||||
|
||||
if (buffer_ && lyx::graphics::Previews::status() != LyXRC::PREVIEW_OFF)
|
||||
lyx::graphics::Previews::get().generateBufferPreviews(*buffer_);
|
||||
return firstlayout;
|
||||
}
|
||||
|
||||
|
||||
@ -555,7 +551,7 @@ void BufferView::Pimpl::scroll(int /*lines*/)
|
||||
// scrollDocView(new_top_y);
|
||||
//
|
||||
// // Update the scrollbar.
|
||||
// workArea_->setScrollbarParams(t->height(), top_y(), defaultRowHeight());
|
||||
// workArea_->setScrollbarParams(t->height(), top_y(), defaultRowHeight());}
|
||||
}
|
||||
|
||||
|
||||
@ -669,30 +665,32 @@ void BufferView::Pimpl::update(Update::flags flags)
|
||||
}
|
||||
|
||||
// Check needed to survive LyX startup
|
||||
if (buffer_) {
|
||||
// Update macro store
|
||||
buffer_->buildMacros();
|
||||
if (!buffer_)
|
||||
return;
|
||||
|
||||
// Check if there is already a redraw waiting in the queue.
|
||||
if (needs_redraw_)
|
||||
return;
|
||||
|
||||
// First drawing step
|
||||
bool singlePar = flags & Update::SinglePar;
|
||||
needs_redraw_ = flags & (Update::Force | Update::SinglePar);
|
||||
// Update macro store
|
||||
buffer_->buildMacros();
|
||||
|
||||
updateMetrics(singlePar);
|
||||
// First drawing step
|
||||
bool singlePar = flags & Update::SinglePar;
|
||||
needs_redraw_ = (flags & (Update::Force | Update::SinglePar));
|
||||
|
||||
if ((flags & (Update::FitCursor | Update::MultiParSel))
|
||||
&& (fitCursor() || multiParSel())) {
|
||||
updateMetrics(singlePar);
|
||||
|
||||
if ((flags & (Update::FitCursor | Update::MultiParSel))
|
||||
&& (fitCursor() || multiParSel())) {
|
||||
needs_redraw_ = true;
|
||||
singlePar = false;
|
||||
}
|
||||
|
||||
if (needs_redraw_) {
|
||||
// Second drawing step
|
||||
updateMetrics(singlePar);
|
||||
}
|
||||
}
|
||||
|
||||
owner_->redrawWorkArea();
|
||||
owner_->view_state_changed();
|
||||
if (needs_redraw_) {
|
||||
// Second drawing step
|
||||
updateMetrics(singlePar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -825,7 +823,7 @@ void BufferView::Pimpl::menuInsertLyXFile(string const & filenm)
|
||||
string initpath = lyxrc.document_path;
|
||||
|
||||
if (available()) {
|
||||
string const trypath = owner_->buffer()->filePath();
|
||||
string const trypath = buffer_->filePath();
|
||||
// If directory is writeable, use this as default.
|
||||
if (isDirWriteable(trypath))
|
||||
initpath = trypath;
|
||||
|
@ -34,7 +34,6 @@ class LyXView;
|
||||
|
||||
class FuncRequest;
|
||||
class FuncStatus;
|
||||
class ViewMetricsInfo;
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
@ -50,6 +49,8 @@ public:
|
||||
Pimpl(BufferView & bv, LyXView * owner);
|
||||
///
|
||||
void setBuffer(Buffer * buf);
|
||||
/// return the first layout of the Buffer.
|
||||
std::string firstLayout();
|
||||
///
|
||||
void resizeCurrentBuffer();
|
||||
//
|
||||
@ -58,9 +59,7 @@ public:
|
||||
bool multiParSel();
|
||||
///
|
||||
void update(Update::flags flags = Update::Force);
|
||||
///
|
||||
void newFile(std::string const &, std::string const &, bool);
|
||||
///
|
||||
/// load a buffer into the view
|
||||
bool loadLyXFile(std::string const &, bool);
|
||||
///
|
||||
void workAreaResize(int width, int height);
|
||||
@ -163,15 +162,14 @@ private:
|
||||
/// notify readonly status
|
||||
void showReadonly(bool);
|
||||
|
||||
|
||||
///
|
||||
friend class BufferView;
|
||||
|
||||
///
|
||||
ViewMetricsInfo metrics_info_;
|
||||
///
|
||||
void updateMetrics(bool singlepar = false);
|
||||
|
||||
///
|
||||
friend class BufferView;
|
||||
|
||||
///
|
||||
BufferView * bv_;
|
||||
///
|
||||
@ -215,5 +213,6 @@ private:
|
||||
lyx::pit_type anchor_ref_;
|
||||
///
|
||||
int offset_ref_;
|
||||
|
||||
};
|
||||
#endif // BUFFERVIEW_PIMPL_H
|
||||
|
@ -80,7 +80,6 @@ LyXView::LyXView(Gui & owner)
|
||||
lyxerr[Debug::INIT] << "Initializing LyXFunc" << endl;
|
||||
}
|
||||
|
||||
|
||||
LyXView::~LyXView()
|
||||
{
|
||||
}
|
||||
@ -95,6 +94,13 @@ void LyXView::setWorkArea(WorkArea * work_area)
|
||||
void LyXView::redrawWorkArea()
|
||||
{
|
||||
work_area_->redraw();
|
||||
updateStatusBar();
|
||||
}
|
||||
|
||||
|
||||
WorkArea * LyXView::workArea()
|
||||
{
|
||||
return work_area_;
|
||||
}
|
||||
|
||||
|
||||
@ -120,6 +126,32 @@ Buffer * LyXView::buffer() const
|
||||
}
|
||||
|
||||
|
||||
void LyXView::setBuffer(Buffer * b)
|
||||
{
|
||||
work_area_->bufferView().setBuffer(b);
|
||||
updateMenubar();
|
||||
updateToolbars();
|
||||
updateLayoutChoice();
|
||||
updateWindowTitle();
|
||||
if (b)
|
||||
setLayout(work_area_->bufferView().firstLayout());
|
||||
redrawWorkArea();
|
||||
}
|
||||
|
||||
|
||||
bool LyXView::loadLyXFile(string const & filename, bool tolastfiles)
|
||||
{
|
||||
bool loaded = work_area_->bufferView().loadLyXFile(filename, tolastfiles);
|
||||
updateMenubar();
|
||||
updateToolbars();
|
||||
updateLayoutChoice();
|
||||
updateWindowTitle();
|
||||
if (loaded)
|
||||
setLayout(work_area_->bufferView().firstLayout());
|
||||
redrawWorkArea();
|
||||
return loaded;
|
||||
}
|
||||
|
||||
BufferView * LyXView::view() const
|
||||
{
|
||||
return &work_area_->bufferView();
|
||||
|
@ -62,6 +62,7 @@ public:
|
||||
virtual ~LyXView();
|
||||
|
||||
void setWorkArea(lyx::frontend::WorkArea * work_area);
|
||||
|
||||
/**
|
||||
* This is called after the concrete view has been created.
|
||||
* We have to have the toolbar and the other stuff created
|
||||
@ -110,6 +111,12 @@ public:
|
||||
|
||||
//@}
|
||||
|
||||
/// load a buffer into the current workarea
|
||||
bool loadLyXFile(std::string const & name, bool tolastfiles = true);
|
||||
|
||||
/// set a buffer to the current workarea
|
||||
void setBuffer(Buffer * b);
|
||||
|
||||
/// sets the layout in the toolbar layout selection
|
||||
void setLayout(std::string const & layout);
|
||||
/// updates the possible layouts selectable
|
||||
@ -119,13 +126,12 @@ public:
|
||||
void updateToolbars();
|
||||
/// update the menubar
|
||||
void updateMenubar();
|
||||
/// update the status bar
|
||||
virtual void updateStatusBar() = 0;
|
||||
|
||||
/// focus the command buffer (minibuffer)
|
||||
boost::signal<void()> focus_command_buffer;
|
||||
|
||||
/// view state string changed
|
||||
boost::signal<void()> view_state_changed;
|
||||
|
||||
/// display a message in the view
|
||||
virtual void message(std::string const &) = 0;
|
||||
|
||||
@ -152,10 +158,13 @@ public:
|
||||
///
|
||||
virtual lyx::frontend::Gui & gui();
|
||||
|
||||
lyx::frontend::WorkArea * workArea() const { return work_area_; }
|
||||
|
||||
/// Temporary method used by the kernel to redraw the work area.
|
||||
virtual void redrawWorkArea();
|
||||
|
||||
/// Temporary method to access the current workArea.
|
||||
/// This is needed for the qt3 and gtk frontend.
|
||||
lyx::frontend::WorkArea * workArea();
|
||||
|
||||
protected:
|
||||
/// current work area (screen view of a BufferView).
|
||||
/**
|
||||
|
@ -44,6 +44,7 @@
|
||||
|
||||
#include <boost/utility.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/current_function.hpp>
|
||||
#include <boost/signals/trackable.hpp>
|
||||
|
||||
using lyx::support::libFileSearch;
|
||||
@ -55,20 +56,12 @@ using std::max;
|
||||
using std::string;
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
// All the below connection objects are needed because of a bug in some
|
||||
// versions of GCC (<=2.96 are on the suspects list.) By having and assigning
|
||||
// to these connections we avoid a segfault upon startup, and also at exit.
|
||||
// (Lgb)
|
||||
|
||||
boost::signals::connection timecon;
|
||||
|
||||
} // anon namespace
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
// FIXME: The SplashScreen should be transfered to the
|
||||
// LyXView and create a WorkArea only when a new buffer exists. This
|
||||
// will allow to call WorkArea::redraw() in the constructor.
|
||||
class SplashScreen : boost::noncopyable, boost::signals::trackable {
|
||||
public:
|
||||
/// This is a singleton class. Get the instance.
|
||||
@ -131,9 +124,20 @@ SplashScreen::SplashScreen()
|
||||
loader_.reset(file);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
// All the below connection objects are needed because of a bug in some
|
||||
// versions of GCC (<=2.96 are on the suspects list.) By having and assigning
|
||||
// to these connections we avoid a segfault upon startup, and also at exit.
|
||||
// (Lgb)
|
||||
|
||||
boost::signals::connection timecon;
|
||||
|
||||
} // anon namespace
|
||||
|
||||
WorkArea::WorkArea(BufferView * buffer_view)
|
||||
: buffer_view_(buffer_view), greyed_out_(true),
|
||||
cursor_visible_(false), cursor_timeout_(400)
|
||||
: buffer_view_(buffer_view), greyed_out_(true),
|
||||
cursor_visible_(false), cursor_timeout_(400)
|
||||
{
|
||||
// Start loading the pixmap as soon as possible
|
||||
if (lyxrc.show_banner) {
|
||||
@ -177,7 +181,8 @@ void WorkArea::checkAndGreyOut()
|
||||
|
||||
void WorkArea::redraw()
|
||||
{
|
||||
BOOST_ASSERT(buffer_view_);
|
||||
if (!buffer_view_)
|
||||
return;
|
||||
|
||||
if (!buffer_view_->buffer()) {
|
||||
greyOut();
|
||||
@ -187,35 +192,30 @@ void WorkArea::redraw()
|
||||
if (!buffer_view_->needsRedraw())
|
||||
return;
|
||||
|
||||
greyed_out_ = false;
|
||||
ViewMetricsInfo const & vi = buffer_view_->viewMetricsInfo();
|
||||
|
||||
Painter & pain = getPainter();
|
||||
|
||||
pain.start();
|
||||
paintText(*buffer_view_, vi, pain);
|
||||
greyed_out_ = false;
|
||||
getPainter().start();
|
||||
paintText(*buffer_view_, vi, getPainter());
|
||||
lyxerr[Debug::DEBUG] << "Redraw screen" << endl;
|
||||
int const ymin = std::max(vi.y1, 0);
|
||||
int const ymax =
|
||||
( vi.p2 < vi.size - 1 ? vi.y2 : height() );
|
||||
expose(0, ymin, width(), ymax - ymin);
|
||||
pain.end();
|
||||
//theCoords.doneUpdating();
|
||||
getPainter().end();
|
||||
buffer_view_->needsRedraw(false);
|
||||
|
||||
if (lyxerr.debugging(Debug::DEBUG)) {
|
||||
lyxerr[Debug::DEBUG]
|
||||
<< " ymin = " << ymin << " width() = " << width()
|
||||
<< " ymax-ymin = " << ymax-ymin << std::endl;
|
||||
}
|
||||
lyxerr[Debug::DEBUG]
|
||||
<< " ymin = " << ymin << " width() = " << width()
|
||||
<< " ymax-ymin = " << ymax-ymin << std::endl;
|
||||
}
|
||||
|
||||
|
||||
void WorkArea::processKeySym(LyXKeySymPtr key, key_modifier::state state)
|
||||
void WorkArea::processKeySym(LyXKeySymPtr key,
|
||||
key_modifier::state state)
|
||||
{
|
||||
hideCursor();
|
||||
|
||||
buffer_view_->workAreaKeyPress(key, state);
|
||||
|
||||
/* This is perhaps a bit of a hack. When we move
|
||||
* around, or type, it's nice to be able to see
|
||||
* the cursor immediately after the keypress. So
|
||||
@ -223,9 +223,23 @@ void WorkArea::processKeySym(LyXKeySymPtr key, key_modifier::state state)
|
||||
* of the cursor. Note we cannot do this inside
|
||||
* dispatch() itself, because that's called recursively.
|
||||
*/
|
||||
// if (buffer_view_->available())
|
||||
// if (buffer_view_->available())
|
||||
toggleCursor();
|
||||
redraw();
|
||||
}
|
||||
|
||||
|
||||
void WorkArea::dispatch(FuncRequest const & cmd0)
|
||||
{
|
||||
buffer_view_->workAreaDispatch(cmd0);
|
||||
redraw();
|
||||
}
|
||||
|
||||
|
||||
void WorkArea::resizeBufferView()
|
||||
{
|
||||
buffer_view_->workAreaResize(width(), height());
|
||||
redraw();
|
||||
}
|
||||
|
||||
|
||||
@ -334,6 +348,5 @@ void WorkArea::toggleCursor()
|
||||
cursor_timeout_.restart();
|
||||
}
|
||||
|
||||
|
||||
} // namespace frontend
|
||||
} // namespace lyx
|
||||
|
@ -34,7 +34,9 @@ int const CursorShape = CursorShape;
|
||||
#include "frontends/LyXKeySym.h"
|
||||
#include "frontends/Timeout.h"
|
||||
|
||||
|
||||
class BufferView;
|
||||
class FuncRequest;
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
@ -51,7 +53,6 @@ enum CursorShape {
|
||||
REVERSED_L_SHAPE
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* The work area class represents the widget that provides the
|
||||
* view onto a document. It is owned by the BufferView, and
|
||||
@ -72,6 +73,7 @@ public:
|
||||
///
|
||||
BufferView const & bufferView() const;
|
||||
|
||||
|
||||
/// return the painter object for this work area
|
||||
virtual Painter & getPainter() = 0;
|
||||
|
||||
@ -92,29 +94,39 @@ public:
|
||||
/// redraw the screen, without using existing pixmap
|
||||
virtual void redraw();
|
||||
|
||||
///
|
||||
void processKeySym(LyXKeySymPtr key, key_modifier::state state);
|
||||
|
||||
/// grey out (no buffer)
|
||||
void greyOut();
|
||||
|
||||
/// paint the cursor and store the background
|
||||
virtual void showCursor(int x, int y, int h, CursorShape shape) = 0;
|
||||
|
||||
/// hide the cursor
|
||||
virtual void removeCursor() = 0;
|
||||
|
||||
/// Show the cursor
|
||||
void showCursor();
|
||||
/// Hide the cursor
|
||||
void hideCursor();
|
||||
/// toggle the cursor's visibility
|
||||
void toggleCursor();
|
||||
/// FIXME: should be protected, public until the qt3 and gtk frontends are
|
||||
/// cleaned up.
|
||||
void processKeySym(LyXKeySymPtr key, key_modifier::state state);
|
||||
|
||||
protected:
|
||||
/// cause the display of the given area of the work area
|
||||
virtual void expose(int x, int y, int w, int h) = 0;
|
||||
|
||||
///
|
||||
void dispatch(FuncRequest const & cmd0);
|
||||
|
||||
///
|
||||
void resizeBufferView();
|
||||
|
||||
|
||||
/// hide the visible cursor, if it is visible
|
||||
void hideCursor();
|
||||
|
||||
/// show the cursor if it is not visible
|
||||
void showCursor();
|
||||
|
||||
/// toggle the cursor's visibility
|
||||
void toggleCursor();
|
||||
|
||||
/// hide the cursor
|
||||
virtual void removeCursor() = 0;
|
||||
|
||||
/// paint the cursor and store the background
|
||||
virtual void showCursor(int x, int y, int h, CursorShape shape) = 0;
|
||||
|
||||
///
|
||||
BufferView * buffer_view_;
|
||||
|
||||
@ -125,7 +137,7 @@ private:
|
||||
///
|
||||
bool greyed_out_;
|
||||
|
||||
///
|
||||
/// is the cursor currently displayed
|
||||
bool cursor_visible_;
|
||||
|
||||
///
|
||||
|
@ -98,7 +98,6 @@ GView::GView(Gui & owner) : LyXView(owner)
|
||||
|
||||
focus_command_buffer.connect(
|
||||
boost::bind(&GMiniBuffer::editMode, minibuffer_.get()));
|
||||
view_state_changed.connect(boost::bind(&GView::showViewState, this));
|
||||
signal_focus_in_event().connect(sigc::mem_fun(*this, &GView::onFocusIn));
|
||||
//
|
||||
int width = 750;
|
||||
@ -177,7 +176,7 @@ void GView::message(string const & msg)
|
||||
}
|
||||
|
||||
|
||||
void GView::showViewState()
|
||||
void GView::updateStatusBar()
|
||||
{
|
||||
message(getLyXFunc().viewStatusMessage());
|
||||
}
|
||||
|
@ -55,9 +55,10 @@ public:
|
||||
|
||||
// returns true if this view has the focus.
|
||||
virtual bool hasFocus() const;
|
||||
///
|
||||
void updateStatusBar();
|
||||
|
||||
private:
|
||||
void showViewState();
|
||||
bool onFocusIn(GdkEventFocus * event);
|
||||
virtual void setWindowTitle(std::string const & t, std::string const & it);
|
||||
|
||||
|
@ -160,7 +160,7 @@ int lyx_gui::start(string const & batch, std::vector<string> const & files,
|
||||
os::internal_path(package().temp_dir() + "/lyxsocket"));
|
||||
|
||||
for_each(files.begin(), files.end(),
|
||||
bind(&BufferView::loadLyXFile, view.view(), _1, true));
|
||||
bind(&LyXView::loadLyXFile, &view, _1, true));
|
||||
|
||||
// handle the batch commands the user asked for
|
||||
if (!batch.empty()) {
|
||||
|
@ -81,7 +81,6 @@ void QtView::init()
|
||||
|
||||
statusBar()->setSizeGripEnabled(false);
|
||||
|
||||
view_state_changed.connect(boost::bind(&QtView::update_view_state, this));
|
||||
connect(&statusbar_timer_, SIGNAL(timeout()), this, SLOT(update_view_state_qt()));
|
||||
|
||||
// make sure the buttons are disabled if needed
|
||||
@ -137,7 +136,7 @@ void QtView::update_view_state_qt()
|
||||
}
|
||||
|
||||
|
||||
void QtView::update_view_state()
|
||||
void QtView::updateStatusBar()
|
||||
{
|
||||
// let the user see the explicit message
|
||||
if (statusbar_timer_.isActive())
|
||||
|
@ -80,13 +80,12 @@ public slots:
|
||||
protected:
|
||||
/// make sure we quit cleanly
|
||||
virtual void closeEvent(QCloseEvent * e);
|
||||
/// update status bar
|
||||
void updateStatusBar();
|
||||
private:
|
||||
/// focus the command buffer widget
|
||||
void focus_command_widget();
|
||||
|
||||
/// update status bar
|
||||
void update_view_state();
|
||||
|
||||
/**
|
||||
* setWindowTitle - set title of window
|
||||
* @param t main window title
|
||||
|
@ -265,7 +265,7 @@ int start(string const & batch, vector<string> const & files,
|
||||
os::internal_path(package().temp_dir() + "/lyxsocket"));
|
||||
|
||||
for_each(files.begin(), files.end(),
|
||||
bind(&BufferView::loadLyXFile, view.view(), _1, true));
|
||||
bind(&LyXView::loadLyXFile, &view, _1, true));
|
||||
|
||||
// handle the batch commands the user asked for
|
||||
if (!batch.empty()) {
|
||||
|
@ -27,14 +27,16 @@
|
||||
#include "debug.h"
|
||||
|
||||
#include "frontends/Toolbars.h"
|
||||
|
||||
#include "frontends/WorkArea.h"
|
||||
#include "support/filetools.h"
|
||||
|
||||
#include "support/convert.h"
|
||||
#include <boost/bind.hpp>
|
||||
#include "support/lstrings.h"
|
||||
|
||||
// This include must be declared before everything else because
|
||||
// of boost/Qt/LyX clash...
|
||||
#include "GuiImplementation.h"
|
||||
|
||||
#include "GuiView.h"
|
||||
#include "GuiImplementation.h"
|
||||
#include "QLMenubar.h"
|
||||
#include "FontLoader.h"
|
||||
#include "QCommandBuffer.h"
|
||||
@ -46,10 +48,9 @@
|
||||
#include <QToolBar>
|
||||
#include <QCloseEvent>
|
||||
#include <QAction>
|
||||
//#include <QMenu>
|
||||
//#include <QMenuBar>
|
||||
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
|
||||
using std::string;
|
||||
@ -103,7 +104,6 @@ void GuiView::init()
|
||||
|
||||
statusBar()->setSizeGripEnabled(false);
|
||||
|
||||
view_state_changed.connect(boost::bind(&GuiView::update_view_state, this));
|
||||
QObject::connect(&statusbar_timer_, SIGNAL(timeout()), this, SLOT(update_view_state_qt()));
|
||||
|
||||
// make sure the buttons are disabled if needed
|
||||
@ -161,7 +161,7 @@ void GuiView::update_view_state_qt()
|
||||
}
|
||||
|
||||
|
||||
void GuiView::update_view_state()
|
||||
void GuiView::updateStatusBar()
|
||||
{
|
||||
// let the user see the explicit message
|
||||
if (statusbar_timer_.isActive())
|
||||
|
@ -66,6 +66,9 @@ public:
|
||||
/// clear status message
|
||||
virtual void clearMessage();
|
||||
|
||||
/// update the status bar
|
||||
virtual void updateStatusBar();
|
||||
|
||||
/// add the command buffer
|
||||
void addCommandBuffer(QToolBar * toolbar);
|
||||
|
||||
@ -99,9 +102,6 @@ private:
|
||||
/// focus the command buffer widget
|
||||
void focus_command_widget();
|
||||
|
||||
/// update status bar
|
||||
void update_view_state();
|
||||
|
||||
/**
|
||||
* setWindowTitle - set title of window
|
||||
* @param t main window title
|
||||
|
@ -11,13 +11,9 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <boost/current_function.hpp>
|
||||
|
||||
// This include must be declared before everything else because
|
||||
// of boost/Qt/LyX clash...
|
||||
#include "GuiView.h"
|
||||
|
||||
#include "GuiWorkArea.h"
|
||||
|
||||
#include "QLPainter.h"
|
||||
#include "QLyXKeySym.h"
|
||||
|
||||
@ -40,6 +36,7 @@
|
||||
#include <QScrollBar>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/current_function.hpp>
|
||||
|
||||
// Abdel (26/06/2006):
|
||||
// On windows-XP the UserGuide PageDown scroll test is faster without event pruning (16 s)
|
||||
@ -208,6 +205,7 @@ void GuiWorkArea::adjustViewWithScrollBar(int)
|
||||
<< endl;
|
||||
*/
|
||||
buffer_view_->scrollDocView(verticalScrollBar()->sliderPosition());
|
||||
redraw();
|
||||
}
|
||||
|
||||
|
||||
@ -231,7 +229,7 @@ void GuiWorkArea::dropEvent(QDropEvent* event)
|
||||
for (int i = 0; i!=files.size(); ++i) {
|
||||
string const file = os::internal_path(fromqstr(files.at(i).toString()));
|
||||
if (!file.empty())
|
||||
buffer_view_->workAreaDispatch(FuncRequest(LFUN_FILE_OPEN, file));
|
||||
dispatch(FuncRequest(LFUN_FILE_OPEN, file));
|
||||
}
|
||||
}
|
||||
|
||||
@ -243,13 +241,13 @@ void GuiWorkArea::mousePressEvent(QMouseEvent * e)
|
||||
FuncRequest cmd(LFUN_MOUSE_TRIPLE,
|
||||
dc_event_.x, dc_event_.y,
|
||||
q_button_state(dc_event_.state));
|
||||
buffer_view_->workAreaDispatch(cmd);
|
||||
dispatch(cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
FuncRequest const cmd(LFUN_MOUSE_PRESS, e->x(), e->y(),
|
||||
q_button_state(e->button()));
|
||||
buffer_view_->workAreaDispatch(cmd);
|
||||
dispatch(cmd);
|
||||
}
|
||||
|
||||
|
||||
@ -260,7 +258,7 @@ void GuiWorkArea::mouseReleaseEvent(QMouseEvent * e)
|
||||
|
||||
FuncRequest const cmd(LFUN_MOUSE_RELEASE, e->x(), e->y(),
|
||||
q_button_state(e->button()));
|
||||
buffer_view_->workAreaDispatch(cmd);
|
||||
dispatch(cmd);
|
||||
}
|
||||
|
||||
|
||||
@ -320,7 +318,7 @@ void GuiWorkArea::mouseMoveEvent(QMouseEvent * e)
|
||||
synthetic_mouse_event_.scrollbar_value_old = scrollbar_value;
|
||||
|
||||
// ... and dispatch the event to the LyX core.
|
||||
buffer_view_->workAreaDispatch(cmd);
|
||||
dispatch(cmd);
|
||||
}
|
||||
}
|
||||
|
||||
@ -350,7 +348,7 @@ void GuiWorkArea::generateSyntheticMouseEvent()
|
||||
synthetic_mouse_event_.scrollbar_value_old = scrollbar_value;
|
||||
|
||||
// ... and dispatch the event to the LyX core.
|
||||
buffer_view_->workAreaDispatch(synthetic_mouse_event_.cmd);
|
||||
dispatch(synthetic_mouse_event_.cmd);
|
||||
}
|
||||
}
|
||||
|
||||
@ -423,7 +421,7 @@ void GuiWorkArea::mouseDoubleClickEvent(QMouseEvent * e)
|
||||
FuncRequest cmd(LFUN_MOUSE_DOUBLE,
|
||||
dc_event_.x, dc_event_.y,
|
||||
q_button_state(dc_event_.state));
|
||||
buffer_view_->workAreaDispatch(cmd);
|
||||
dispatch(cmd);
|
||||
}
|
||||
|
||||
|
||||
@ -438,7 +436,7 @@ void GuiWorkArea::resizeEvent(QResizeEvent *)
|
||||
// paint_device_ = QImage(viewport()->width(), viewport()->height(), QImage::Format_RGB32);
|
||||
paint_device_ = QPixmap(viewport()->width(), viewport()->height());
|
||||
|
||||
buffer_view_->workAreaResize(viewport()->width(), viewport()->height());
|
||||
resizeBufferView();
|
||||
|
||||
/*
|
||||
lyxerr[Debug::GUI] << BOOST_CURRENT_FUNCTION
|
||||
@ -479,6 +477,7 @@ void GuiWorkArea::paintEvent(QPaintEvent * e)
|
||||
<< "\n QPaintEvent h\t" << e->rect().height()
|
||||
<< endl;
|
||||
*/
|
||||
|
||||
QPainter q(viewport());
|
||||
q.drawPixmap(e->rect(), paint_device_, e->rect());
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "lyxserver.h"
|
||||
#include "lyxsocket.h"
|
||||
|
||||
|
||||
#include "graphics/LoaderQueue.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
@ -36,8 +37,6 @@
|
||||
#include "support/package.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include "GuiView.h"
|
||||
#include "ColorCache.h"
|
||||
@ -54,6 +53,8 @@
|
||||
#include <QLocale>
|
||||
#include <QLibraryInfo>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
|
||||
using lyx::support::ltrim;
|
||||
@ -239,7 +240,7 @@ int start(string const & batch, vector<string> const & files,
|
||||
os::internal_path(package().temp_dir() + "/lyxsocket"));
|
||||
|
||||
for_each(files.begin(), files.end(),
|
||||
bind(&BufferView::loadLyXFile, view.view(), _1, true));
|
||||
bind(&LyXView::loadLyXFile, &view, _1, true));
|
||||
|
||||
// handle the batch commands the user asked for
|
||||
if (!batch.empty()) {
|
||||
|
@ -14,8 +14,8 @@
|
||||
#include "frontends/font_metrics.h"
|
||||
#include "frontends/lyx_gui.h"
|
||||
|
||||
#include "FontLoader.h"
|
||||
#include "Application.h"
|
||||
#include "FontLoader.h"
|
||||
|
||||
#include "language.h"
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "frontends/Alert.h"
|
||||
#include "gettext.h"
|
||||
#include "BufferView.h"
|
||||
#include "buffer_funcs.h"
|
||||
|
||||
using lyx::support::bformat;
|
||||
using lyx::support::changeExtension;
|
||||
@ -69,9 +70,9 @@ bool Importer::Import(LyXView * lv, string const & filename,
|
||||
|
||||
|
||||
if (loader_format == "lyx") {
|
||||
lv->view()->loadLyXFile(lyxfile);
|
||||
lv->loadLyXFile(lyxfile);
|
||||
} else {
|
||||
lv->view()->newFile(lyxfile, string(), true);
|
||||
lv->setBuffer(newFile(lyxfile, string(), true));
|
||||
bool as_paragraphs = loader_format == "textparagraph";
|
||||
string filename2 = (loader_format == format) ? filename
|
||||
: changeExtension(filename,
|
||||
|
@ -603,7 +603,7 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
|
||||
// //if (hasSelection())
|
||||
// // cur.selection() = false;
|
||||
// col_type const col = tabular.column_of_cell(cur.idx());
|
||||
// int const t = cur.bv().top_y() + cur.bv().painter().paperHeight();
|
||||
// int const t = cur.bv().top_y() + cur.bv().height();
|
||||
// if (t < yo() + tabular.getHeightOfTabular()) {
|
||||
// cur.bv().scrollDocView(t);
|
||||
// cur.idx() = tabular.getCellBelow(first_visible_cell) + col;
|
||||
@ -619,7 +619,7 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
|
||||
// //if (hasSelection())
|
||||
// // cur.selection() = false;
|
||||
// col_type const col = tabular.column_of_cell(cur.idx());
|
||||
// int const t = cur.bv().top_y() + cur.bv().painter().paperHeight();
|
||||
// int const t = cur.bv().top_y() + cur.bv().height();
|
||||
// if (yo() < 0) {
|
||||
// cur.bv().scrollDocView(t);
|
||||
// if (yo() > 0)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "buffer.h"
|
||||
#include "bufferlist.h"
|
||||
#include "BufferView.h"
|
||||
#include "buffer_funcs.h"
|
||||
#include "cursor.h"
|
||||
#include "debug.h"
|
||||
#include "gettext.h"
|
||||
@ -342,7 +343,7 @@ void newFile(BufferView * bv, string const & filename)
|
||||
<< "\nName is " << name
|
||||
<< "\nTemplate is " << tmpname << endl;
|
||||
|
||||
bv->newFile(name, tmpname);
|
||||
bv->setBuffer(newFile(name, tmpname));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1042,7 +1042,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
}
|
||||
owner->message(bformat(_("Opening help file %1$s..."),
|
||||
makeDisplayPath(fname)));
|
||||
view()->loadLyXFile(fname, false);
|
||||
owner->loadLyXFile(fname, false);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1088,15 +1088,15 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
|
||||
// --- buffers ----------------------------------------
|
||||
case LFUN_BUFFER_SWITCH:
|
||||
view()->setBuffer(bufferlist.getBuffer(argument));
|
||||
owner->setBuffer(bufferlist.getBuffer(argument));
|
||||
break;
|
||||
|
||||
case LFUN_BUFFER_NEXT:
|
||||
view()->setBuffer(bufferlist.next(view()->buffer()));
|
||||
owner->setBuffer(bufferlist.next(view()->buffer()));
|
||||
break;
|
||||
|
||||
case LFUN_BUFFER_PREVIOUS:
|
||||
view()->setBuffer(bufferlist.previous(view()->buffer()));
|
||||
owner->setBuffer(bufferlist.previous(view()->buffer()));
|
||||
break;
|
||||
|
||||
case LFUN_FILE_NEW:
|
||||
@ -1136,16 +1136,16 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
if (prefixIs(file_name, package().temp_dir())) {
|
||||
// Needed by inverse dvi search. If it is a file
|
||||
// in tmpdir, call the apropriated function
|
||||
view()->setBuffer(bufferlist.getBufferFromTmp(file_name));
|
||||
owner->setBuffer(bufferlist.getBufferFromTmp(file_name));
|
||||
} else {
|
||||
// Must replace extension of the file to be .lyx
|
||||
// and get full path
|
||||
string const s = changeExtension(file_name, ".lyx");
|
||||
// Either change buffer or load the file
|
||||
if (bufferlist.exists(s)) {
|
||||
view()->setBuffer(bufferlist.getBuffer(s));
|
||||
owner->setBuffer(bufferlist.getBuffer(s));
|
||||
} else {
|
||||
view()->loadLyXFile(s);
|
||||
owner->loadLyXFile(s);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1296,9 +1296,9 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
view()->savePosition(0);
|
||||
string const parentfilename = owner->buffer()->fileName();
|
||||
if (bufferlist.exists(filename))
|
||||
view()->setBuffer(bufferlist.getBuffer(filename));
|
||||
owner->setBuffer(bufferlist.getBuffer(filename));
|
||||
else
|
||||
view()->loadLyXFile(filename);
|
||||
owner->loadLyXFile(filename);
|
||||
// Set the parent name of the child document.
|
||||
// This makes insertion of citations and references in the child work,
|
||||
// when the target is in the parent or another child document.
|
||||
@ -1607,6 +1607,8 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
else if (update)
|
||||
view()->update(Update::FitCursor);
|
||||
|
||||
owner->redrawWorkArea();
|
||||
|
||||
// if we executed a mutating lfun, mark the buffer as dirty
|
||||
if (flag.enabled()
|
||||
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)
|
||||
@ -1733,7 +1735,7 @@ void LyXFunc::menuNew(string const & name, bool fromTemplate)
|
||||
templname = result.second;
|
||||
}
|
||||
|
||||
view()->newFile(filename, templname, !name.empty());
|
||||
owner->setBuffer(newFile(filename, templname, !name.empty()));
|
||||
}
|
||||
|
||||
|
||||
@ -1787,15 +1789,15 @@ void LyXFunc::open(string const & fname)
|
||||
|
||||
// if the file doesn't exist, let the user create one
|
||||
if (!fs::exists(filename)) {
|
||||
// the user specifically chose this name. Believe them.
|
||||
view()->newFile(filename, "", true);
|
||||
// the user specifically chose this name. Believe him.
|
||||
owner->setBuffer(newFile(filename, "", true));
|
||||
return;
|
||||
}
|
||||
|
||||
owner->message(bformat(_("Opening document %1$s..."), disp_fn));
|
||||
|
||||
string str2;
|
||||
if (view()->loadLyXFile(filename)) {
|
||||
if (owner->loadLyXFile(filename)) {
|
||||
str2 = bformat(_("Document %1$s opened."), disp_fn);
|
||||
} else {
|
||||
str2 = bformat(_("Could not open document %1$s"), disp_fn);
|
||||
@ -1899,7 +1901,7 @@ void LyXFunc::closeBuffer()
|
||||
// since there's no current buffer
|
||||
owner->getDialogs().hideBufferDependent();
|
||||
} else {
|
||||
view()->setBuffer(bufferlist.first());
|
||||
owner->setBuffer(bufferlist.first());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ class Painter;
|
||||
|
||||
/// paint visible paragraph of main text
|
||||
void paintText(BufferView const & bv, ViewMetricsInfo const & vi,
|
||||
lyx::frontend::Painter & pain);
|
||||
lyx::frontend::Painter & painter);
|
||||
|
||||
/// paint the rows of a text inset
|
||||
void paintTextInset(LyXText const & text, PainterInfo & pi, int x, int y);
|
||||
|
Loading…
x
Reference in New Issue
Block a user