};
-////////////////////////////////////////////////////////////////////////
-//
-// Mac specific stuff goes here...
-//
-////////////////////////////////////////////////////////////////////////
-
-class MenuTranslator : public QTranslator
+class GuiTranslator : public QTranslator
{
public:
- MenuTranslator(QObject * parent)
+ GuiTranslator(QObject * parent = nullptr)
: QTranslator(parent)
{}
-#if QT_VERSION >= 0x050000
virtual QString translate(const char * /* context */,
const char *sourceText,
+#if QT_VERSION >= 0x050000
const char * /* disambiguation */ = 0, int /* n */ = -1) const
#else
- QString translate(const char * /*context*/,
- const char * sourceText,
- const char * /*comment*/ = 0) const
+ const char * /*comment*/ = 0) const
#endif
{
- string const s = sourceText;
- if (s == N_("About %1") || s == N_("Preferences")
- || s == N_("Reconfigure") || s == N_("Quit %1"))
- return qt_(s);
- else
- return QString();
+ // Here we declare the strings that need to be translated from Qt own GUI
+ // This is needed to include these strings to po files
+ _("About %1");
+ _("Preferences");
+ _("Reconfigure");
+ _("Quit %1");
+ _("&OK");
+ // Already in po: "Cancel", "&Cancel"
+ _("Apply"); // Already in po: "&Apply"
+ _("Reset"); // Already in po: "&Reset" "R&eset" "Rese&t"
+
+ docstring s = getGuiMessages().getIfFound(sourceText);
+ // This test should eventually be removed when translations are updated
+ if (s.empty())
+ LYXERR(Debug::LOCALE, "Missing translation for `"
+ << string(sourceText) << "'");
+ return toqstr(s);
}
};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Mac specific stuff goes here...
+//
+////////////////////////////////////////////////////////////////////////
+
#ifdef Q_OS_MAC
// QMacPasteboardMimeGraphics can only be compiled on Mac.
FontLoader font_loader_;
///
ColorCache color_cache_;
- ///
+ /// the built-in Qt translation mechanism
QTranslator qt_trans_;
+ /// LyX gettext-based translation for Qt elements
+ GuiTranslator gui_trans_;
///
QHash<int, SocketNotifier *> socket_notifiers_;
///
qsrand(QDateTime::currentDateTime().toTime_t());
- // Install translator for GUI elements.
+ // Install LyX translator for missing Qt translations
+ installTranslator(&d->gui_trans_);
+ // Install Qt native translator for GUI elements.
installTranslator(&d->qt_trans_);
#ifdef QPA_XCB
// FIXME: Do we need a lyxrc setting for this on Mac? This behaviour
// seems to be the default case for applications like LyX.
setQuitOnLastWindowClosed(false);
- // This allows to translate the strings that appear in the LyX menu.
- /// A translator suitable for the entries in the LyX menu.
- /// Only needed with Qt/Mac.
- installTranslator(new MenuTranslator(this));
///
setupApplescript();
#endif
current_view_->currentBufferView()->cursor().saveBeforeDispatchPosXY();
buffer = ¤t_view_->currentBufferView()->buffer();
}
- // This handles undo groups automagically
- UndoGroupHelper ugh(buffer);
+
+ dr.screenUpdate(Update::FitCursor);
+ {
+ // This handles undo groups automagically
+ UndoGroupHelper ugh(buffer);
+ dispatch(cmd, dr);
+ }
// redraw the screen at the end (first of the two drawing steps).
// This is done unless explicitly requested otherwise
- dr.screenUpdate(Update::FitCursor);
- dispatch(cmd, dr);
updateCurrentView(cmd, dr);
-
d->dispatch_result_ = dr;
return d->dispatch_result_;
}
// UI, then, nothing would happen. This seems fairly unlikely, but
// it definitely is a bug.
+ dr.forceBufferUpdate();
break;
}
}
case LFUN_BUFFER_FORALL: {
- FuncRequest const funcToRun = lyxaction.lookupFunc(cmd.getLongArg(0));
+ FuncRequest funcToRun = lyxaction.lookupFunc(cmd.getLongArg(0));
+ funcToRun.allowAsync(false);
map<Buffer *, GuiView *> views_lVisible;
map<GuiView *, Buffer *> activeBuffers;
bool GuiApplication::searchMenu(FuncRequest const & func,
docstring_list & names) const
{
- return d->menus_.searchMenu(func, names);
+ BufferView * bv = 0;
+ if (current_view_)
+ bv = current_view_->currentBufferView();
+ return d->menus_.searchMenu(func, names, bv);
+}
+
+
+bool GuiApplication::hasBufferView() const
+{
+ return (current_view_ && current_view_->currentBufferView());
}