mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-03 09:19:41 +00:00
first batch of changing over user settings usage to the new system
This commit is contained in:
parent
0ffe4290fb
commit
cf9fa0e0e9
14 changed files with 197 additions and 349 deletions
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "../../model/doc/document.hpp"
|
||||
#include "../../model/settings/usersettings.hpp"
|
||||
#include "../../model/prefs/state.hpp"
|
||||
|
||||
#include "../../model/world/idtable.hpp"
|
||||
|
||||
|
@ -121,10 +122,9 @@ void CSVDoc::View::setupViewMenu()
|
|||
mShowStatusBar = new QAction (tr ("Show Status Bar"), this);
|
||||
mShowStatusBar->setCheckable (true);
|
||||
connect (mShowStatusBar, SIGNAL (toggled (bool)), this, SLOT (toggleShowStatusBar (bool)));
|
||||
std::string showStatusBar =
|
||||
CSMSettings::UserSettings::instance().settingValue("window/show-statusbar").toStdString();
|
||||
if(showStatusBar == "true")
|
||||
mShowStatusBar->setChecked(true);
|
||||
|
||||
mShowStatusBar->setChecked (CSMPrefs::get()["Windows"]["show-statusbar"].isTrue());
|
||||
|
||||
view->addAction (mShowStatusBar);
|
||||
|
||||
QAction *filters = new QAction (tr ("Filters"), this);
|
||||
|
@ -333,9 +333,9 @@ void CSVDoc::View::updateTitle()
|
|||
if (mViewTotal>1)
|
||||
stream << " [" << (mViewIndex+1) << "/" << mViewTotal << "]";
|
||||
|
||||
CSMSettings::UserSettings &userSettings = CSMSettings::UserSettings::instance();
|
||||
CSMPrefs::Category& windows = CSMPrefs::State::get()["Windows"];
|
||||
|
||||
bool hideTitle = userSettings.setting ("window/hide-subview", QString ("false"))=="true" &&
|
||||
bool hideTitle = windows["hide-subview"].isTrue() &&
|
||||
mSubViews.size()==1 && !mSubViews.at (0)->isFloating();
|
||||
|
||||
if (hideTitle)
|
||||
|
@ -346,19 +346,18 @@ void CSVDoc::View::updateTitle()
|
|||
|
||||
void CSVDoc::View::updateSubViewIndicies(SubView *view)
|
||||
{
|
||||
CSMPrefs::Category& windows = CSMPrefs::State::get()["Windows"];
|
||||
|
||||
if(view && mSubViews.contains(view))
|
||||
{
|
||||
mSubViews.removeOne(view);
|
||||
|
||||
// adjust (reduce) the scroll area (even floating), except when it is "Scrollbar Only"
|
||||
CSMSettings::UserSettings &settings = CSMSettings::UserSettings::instance();
|
||||
if(settings.settingValue ("window/mainwindow-scrollbar") == "Grow then Scroll")
|
||||
if (windows["mainwindow-scrollbar"].toString() == "Grow then Scroll")
|
||||
updateScrollbar();
|
||||
}
|
||||
|
||||
CSMSettings::UserSettings &userSettings = CSMSettings::UserSettings::instance();
|
||||
|
||||
bool hideTitle = userSettings.setting ("window/hide-subview", QString ("false"))=="true" &&
|
||||
bool hideTitle = windows["hide-subview"].isTrue() &&
|
||||
mSubViews.size()==1 && !mSubViews.at (0)->isFloating();
|
||||
|
||||
updateTitle();
|
||||
|
@ -406,21 +405,16 @@ CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int to
|
|||
: mViewManager (viewManager), mDocument (document), mViewIndex (totalViews-1),
|
||||
mViewTotal (totalViews), mScroll(0), mScrollbarOnly(false)
|
||||
{
|
||||
int width = CSMSettings::UserSettings::instance().settingValue
|
||||
("window/default-width").toInt();
|
||||
CSMPrefs::Category& windows = CSMPrefs::State::get()["Windows"];
|
||||
|
||||
int height = CSMSettings::UserSettings::instance().settingValue
|
||||
("window/default-height").toInt();
|
||||
|
||||
width = std::max(width, 300);
|
||||
height = std::max(height, 300);
|
||||
int width = std::max (windows["default-width"].toInt(), 300);
|
||||
int height = std::max (windows["default-height"].toInt(), 300);
|
||||
|
||||
resize (width, height);
|
||||
|
||||
mSubViewWindow.setDockOptions (QMainWindow::AllowNestedDocks);
|
||||
|
||||
CSMSettings::UserSettings &settings = CSMSettings::UserSettings::instance();
|
||||
if(settings.settingValue ("window/mainwindow-scrollbar") == "Grow Only")
|
||||
if (windows["mainwindow-scrollbar"].toString() == "Grow Only")
|
||||
{
|
||||
setCentralWidget (&mSubViewWindow);
|
||||
}
|
||||
|
@ -503,14 +497,12 @@ void CSVDoc::View::updateProgress (int current, int max, int type, int threads)
|
|||
|
||||
void CSVDoc::View::addSubView (const CSMWorld::UniversalId& id, const std::string& hint)
|
||||
{
|
||||
CSMSettings::UserSettings &userSettings = CSMSettings::UserSettings::instance();
|
||||
CSMPrefs::Category& windows = CSMPrefs::State::get()["Windows"];
|
||||
|
||||
bool isReferenceable = id.getClass() == CSMWorld::UniversalId::Class_RefRecord;
|
||||
|
||||
// User setting to reuse sub views (on a per top level view basis)
|
||||
bool reuse =
|
||||
userSettings.setting ("window/reuse", QString("true")) == "true" ? true : false;
|
||||
if(reuse)
|
||||
if (windows["reuse"].isTrue())
|
||||
{
|
||||
foreach(SubView *sb, mSubViews)
|
||||
{
|
||||
|
@ -538,8 +530,7 @@ void CSVDoc::View::addSubView (const CSMWorld::UniversalId& id, const std::strin
|
|||
//
|
||||
// If the sub view limit setting is one, the sub view title bar is hidden and the
|
||||
// text in the main title bar is adjusted accordingly
|
||||
int maxSubView = userSettings.setting("window/max-subviews", QString("256")).toInt();
|
||||
if(mSubViews.size() >= maxSubView) // create a new top level view
|
||||
if(mSubViews.size() >= windows["max-subviews"].toInt()) // create a new top level view
|
||||
{
|
||||
mViewManager.addView(mDocument, id, hint);
|
||||
|
||||
|
@ -559,8 +550,8 @@ void CSVDoc::View::addSubView (const CSMWorld::UniversalId& id, const std::strin
|
|||
view->setParent(this);
|
||||
mSubViews.append(view); // only after assert
|
||||
|
||||
int minWidth = userSettings.setting ("window/minimum-width", QString("325")).toInt();
|
||||
view->setMinimumWidth(minWidth);
|
||||
int minWidth = windows["minimum-width"].toInt();
|
||||
view->setMinimumWidth (minWidth);
|
||||
|
||||
view->setStatusBar (mShowStatusBar->isChecked());
|
||||
|
||||
|
@ -575,13 +566,11 @@ void CSVDoc::View::addSubView (const CSMWorld::UniversalId& id, const std::strin
|
|||
// should become visible)
|
||||
// - Move the scroll bar to the newly added subview
|
||||
//
|
||||
CSMSettings::UserSettings &settings = CSMSettings::UserSettings::instance();
|
||||
QString mainwinScroll = settings.settingValue ("window/mainwindow-scrollbar");
|
||||
mScrollbarOnly = mainwinScroll.isEmpty() || mainwinScroll == "Scrollbar Only";
|
||||
mScrollbarOnly = windows["mainwindow-scrollbar"].toString() == "Scrollbar Only";
|
||||
|
||||
QDesktopWidget *dw = QApplication::desktop();
|
||||
QRect rect;
|
||||
if(settings.settingValue ("window/grow-limit") == "true")
|
||||
if (windows["grow-limit"].isTrue())
|
||||
rect = dw->screenGeometry(this);
|
||||
else
|
||||
rect = dw->screenGeometry(dw->screen(dw->screenNumber(this)));
|
||||
|
@ -862,6 +851,7 @@ void CSVDoc::View::resizeViewHeight (int height)
|
|||
|
||||
void CSVDoc::View::updateUserSetting (const QString &name, const QStringList &list)
|
||||
{
|
||||
|
||||
if (name=="window/hide-subview")
|
||||
updateSubViewIndicies (0);
|
||||
|
||||
|
@ -944,10 +934,9 @@ void CSVDoc::View::stop()
|
|||
|
||||
void CSVDoc::View::closeRequest (SubView *subView)
|
||||
{
|
||||
CSMSettings::UserSettings &userSettings = CSMSettings::UserSettings::instance();
|
||||
CSMPrefs::Category& windows = CSMPrefs::State::get()["Windows"];
|
||||
|
||||
if (mSubViews.size()>1 || mViewTotal<=1 ||
|
||||
userSettings.setting ("window/hide-subview", QString ("false"))!="true")
|
||||
if (mSubViews.size()>1 || mViewTotal<=1 || !windows["hide-subview"].isTrue())
|
||||
{
|
||||
subView->deleteLater();
|
||||
mSubViews.removeOne (subView);
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include "../../model/world/universalid.hpp"
|
||||
#include "../../model/world/idtable.hpp"
|
||||
|
||||
#include "../../model/settings/usersettings.hpp"
|
||||
#include "../../model/prefs/state.hpp"
|
||||
|
||||
#include "../widget/scenetoolmode.hpp"
|
||||
#include "../widget/scenetooltoggle2.hpp"
|
||||
|
@ -31,17 +31,6 @@
|
|||
#include "editmode.hpp"
|
||||
#include "instancemode.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
static const char * const sMappingSettings[] =
|
||||
{
|
||||
"p-navi", "s-navi",
|
||||
"p-edit", "s-edit",
|
||||
"p-select", "s-select",
|
||||
0
|
||||
};
|
||||
}
|
||||
|
||||
CSVRender::WorldspaceWidget::WorldspaceWidget (CSMDoc::Document& document, QWidget* parent)
|
||||
: SceneWidget (document.getData().getResourceSystem(), parent), mSceneElements(0), mRun(0), mDocument(document),
|
||||
mInteractionMask (0), mEditMode (0), mLocked (false), mDragging (false),
|
||||
|
@ -77,19 +66,10 @@ CSVRender::WorldspaceWidget::WorldspaceWidget (CSMDoc::Document& document, QWidg
|
|||
connect (debugProfiles, SIGNAL (rowsAboutToBeRemoved (const QModelIndex&, int, int)),
|
||||
this, SLOT (debugProfileAboutToBeRemoved (const QModelIndex&, int, int)));
|
||||
|
||||
for (int i=0; sMappingSettings[i]; ++i)
|
||||
{
|
||||
QString key ("scene-input/");
|
||||
key += sMappingSettings[i];
|
||||
storeMappingSetting (key, CSMSettings::UserSettings::instance().settingValue (key));
|
||||
}
|
||||
|
||||
mDragFactor = CSMSettings::UserSettings::instance().settingValue ("scene-input/drag-factor").toDouble();
|
||||
mDragWheelFactor = CSMSettings::UserSettings::instance().settingValue ("scene-input/drag-wheel-factor").toDouble();
|
||||
mDragShiftFactor = CSMSettings::UserSettings::instance().settingValue ("scene-input/drag-shift-factor").toDouble();
|
||||
|
||||
mShowToolTips = CSMSettings::UserSettings::instance().settingValue ("tooltips/scene") == "true";
|
||||
mToolTipDelay = CSMSettings::UserSettings::instance().settingValue ("tooltips/scene-delay").toInt();
|
||||
connect (&CSMPrefs::State::get(), SIGNAL (settingChanged (const CSMPrefs::Setting *)),
|
||||
this, SLOT (settingChanged (const CSMPrefs::Setting *)));
|
||||
CSMPrefs::get()["3D Scene Input"].update();
|
||||
CSMPrefs::get()["Tooltips"].update();
|
||||
|
||||
mToolTipDelayTimer.setSingleShot (true);
|
||||
connect (&mToolTipDelayTimer, SIGNAL (timeout()), this, SLOT (showToolTip()));
|
||||
|
@ -99,6 +79,23 @@ CSVRender::WorldspaceWidget::~WorldspaceWidget ()
|
|||
{
|
||||
}
|
||||
|
||||
void CSVRender::WorldspaceWidget::settingChanged (const CSMPrefs::Setting *setting)
|
||||
{
|
||||
if (storeMappingSetting (setting))
|
||||
return;
|
||||
|
||||
if (*setting=="3D Scene Input/drag-factor")
|
||||
mDragFactor = setting->toDouble();
|
||||
else if (*setting=="3D Scene Input/drag-wheel-factor")
|
||||
mDragWheelFactor = setting->toDouble();
|
||||
else if (*setting=="3D Scene Input/drag-shift-factor")
|
||||
mDragShiftFactor = setting->toDouble();
|
||||
else if (*setting=="Tooltips/scene-delay")
|
||||
mToolTipDelay = setting->toInt();
|
||||
else if (*setting=="Tooltips/scene")
|
||||
mShowToolTips = setting->isTrue();
|
||||
}
|
||||
|
||||
void CSVRender::WorldspaceWidget::selectNavigationMode (const std::string& mode)
|
||||
{
|
||||
if (mode=="1st")
|
||||
|
@ -291,25 +288,6 @@ unsigned int CSVRender::WorldspaceWidget::getInteractionMask() const
|
|||
return mInteractionMask & getVisibilityMask();
|
||||
}
|
||||
|
||||
void CSVRender::WorldspaceWidget::updateUserSetting (const QString& name, const QStringList& value)
|
||||
{
|
||||
if (!value.isEmpty() && storeMappingSetting (name, value.first()))
|
||||
return;
|
||||
|
||||
if (name=="scene-input/drag-factor")
|
||||
mDragFactor = value.at (0).toDouble();
|
||||
else if (name=="scene-input/drag-wheel-factor")
|
||||
mDragWheelFactor = value.at (0).toDouble();
|
||||
else if (name=="scene-input/drag-shift-factor")
|
||||
mDragShiftFactor = value.at (0).toDouble();
|
||||
else if (name=="tooltips/scene-delay")
|
||||
mToolTipDelay = value.at (0).toInt();
|
||||
else if (name=="tooltips/scene")
|
||||
mShowToolTips = value.at (0)=="true";
|
||||
else
|
||||
dynamic_cast<CSVRender::EditMode&> (*mEditMode->getCurrent()).updateUserSetting (name, value);
|
||||
}
|
||||
|
||||
void CSVRender::WorldspaceWidget::setEditLock (bool locked)
|
||||
{
|
||||
dynamic_cast<CSVRender::EditMode&> (*mEditMode->getCurrent()).setEditLock (locked);
|
||||
|
@ -348,34 +326,40 @@ void CSVRender::WorldspaceWidget::dragMoveEvent(QDragMoveEvent *event)
|
|||
}
|
||||
|
||||
|
||||
bool CSVRender::WorldspaceWidget::storeMappingSetting (const QString& key, const QString& value)
|
||||
bool CSVRender::WorldspaceWidget::storeMappingSetting (const CSMPrefs::Setting *setting)
|
||||
{
|
||||
const QString prefix = "scene-input/";
|
||||
if (setting->getParent()->getKey()!="3D Scene Input")
|
||||
return false;
|
||||
|
||||
if (key.startsWith (prefix))
|
||||
static const char * const sMappingSettings[] =
|
||||
{
|
||||
QString key2 (key.mid (prefix.length()));
|
||||
"p-navi", "s-navi",
|
||||
"p-edit", "s-edit",
|
||||
"p-select", "s-select",
|
||||
0
|
||||
};
|
||||
|
||||
for (int i=0; sMappingSettings[i]; ++i)
|
||||
if (key2==sMappingSettings[i])
|
||||
{
|
||||
Qt::MouseButton button = Qt::NoButton;
|
||||
for (int i=0; sMappingSettings[i]; ++i)
|
||||
if (setting->getKey()==sMappingSettings[i])
|
||||
{
|
||||
QString value = QString::fromUtf8 (setting->toString().c_str());
|
||||
|
||||
if (value.endsWith ("Left Mouse-Button"))
|
||||
button = Qt::LeftButton;
|
||||
else if (value.endsWith ("Right Mouse-Button"))
|
||||
button = Qt::RightButton;
|
||||
else if (value.endsWith ("Middle Mouse-Button"))
|
||||
button = Qt::MiddleButton;
|
||||
else
|
||||
return false;
|
||||
Qt::MouseButton button = Qt::NoButton;
|
||||
|
||||
bool ctrl = value.startsWith ("Ctrl-");
|
||||
if (value.endsWith ("Left Mouse-Button"))
|
||||
button = Qt::LeftButton;
|
||||
else if (value.endsWith ("Right Mouse-Button"))
|
||||
button = Qt::RightButton;
|
||||
else if (value.endsWith ("Middle Mouse-Button"))
|
||||
button = Qt::MiddleButton;
|
||||
else
|
||||
return false;
|
||||
|
||||
mButtonMapping[std::make_pair (button, ctrl)] = sMappingSettings[i];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
bool ctrl = value.startsWith ("Ctrl-");
|
||||
|
||||
mButtonMapping[std::make_pair (button, ctrl)] = sMappingSettings[i];
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -514,8 +498,7 @@ void CSVRender::WorldspaceWidget::showToolTip()
|
|||
|
||||
if (osg::ref_ptr<TagBase> tag = mousePick (mapFromGlobal (pos)))
|
||||
{
|
||||
bool hideBasics =
|
||||
CSMSettings::UserSettings::instance().settingValue ("tooltips/scene-hide-basic")=="true";
|
||||
bool hideBasics = CSMPrefs::get()["Tooltips"]["scene-hide-basic"].isTrue();
|
||||
QToolTip::showText (pos, tag->getToolTip (hideBasics), this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,11 @@
|
|||
#include "scenewidget.hpp"
|
||||
#include "elements.hpp"
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
class Setting;
|
||||
}
|
||||
|
||||
namespace CSMWorld
|
||||
{
|
||||
class UniversalId;
|
||||
|
@ -115,8 +120,6 @@ namespace CSVRender
|
|||
/// marked for interaction.
|
||||
unsigned int getInteractionMask() const;
|
||||
|
||||
virtual void updateUserSetting (const QString& name, const QStringList& value);
|
||||
|
||||
virtual void setEditLock (bool locked);
|
||||
|
||||
CSMDoc::Document& getDocument();
|
||||
|
@ -151,7 +154,7 @@ namespace CSVRender
|
|||
void dragMoveEvent(QDragMoveEvent *event);
|
||||
|
||||
/// \return Is \a key a button mapping setting? (ignored otherwise)
|
||||
bool storeMappingSetting (const QString& key, const QString& value);
|
||||
bool storeMappingSetting (const CSMPrefs::Setting *setting);
|
||||
|
||||
osg::ref_ptr<TagBase> mousePick (const QPoint& localPos);
|
||||
|
||||
|
@ -161,6 +164,8 @@ namespace CSVRender
|
|||
|
||||
private slots:
|
||||
|
||||
void settingChanged (const CSMPrefs::Setting *setting);
|
||||
|
||||
void selectNavigationMode (const std::string& mode);
|
||||
|
||||
virtual void referenceableDataChanged (const QModelIndex& topLeft,
|
||||
|
|
|
@ -147,12 +147,6 @@ std::string CSVWorld::SceneSubView::getTitle() const
|
|||
return mTitle;
|
||||
}
|
||||
|
||||
void CSVWorld::SceneSubView::updateUserSetting (const QString& name, const QStringList& value)
|
||||
{
|
||||
mScene->updateUserSetting (name, value);
|
||||
CSVDoc::SubView::updateUserSetting (name, value);
|
||||
}
|
||||
|
||||
void CSVWorld::SceneSubView::cellSelectionChanged (const CSMWorld::UniversalId& id)
|
||||
{
|
||||
setUniversalId(id);
|
||||
|
|
|
@ -59,8 +59,6 @@ namespace CSVWorld
|
|||
|
||||
virtual std::string getTitle() const;
|
||||
|
||||
virtual void updateUserSetting (const QString& name, const QStringList& value);
|
||||
|
||||
private:
|
||||
|
||||
void makeConnections(CSVRender::PagedWorldspaceWidget* widget);
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
#include "../../model/world/universalid.hpp"
|
||||
#include "../../model/world/tablemimedata.hpp"
|
||||
#include "../../model/settings/usersettings.hpp"
|
||||
|
||||
#include "../../model/prefs/state.hpp"
|
||||
|
||||
CSVWorld::ScriptEdit::ChangeLock::ChangeLock (ScriptEdit& edit) : mEdit (edit)
|
||||
{
|
||||
|
@ -92,31 +91,24 @@ CSVWorld::ScriptEdit::ScriptEdit (const CSMDoc::Document& document, ScriptHighli
|
|||
|
||||
connect (&mUpdateTimer, SIGNAL (timeout()), this, SLOT (updateHighlighting()));
|
||||
|
||||
CSMSettings::UserSettings &userSettings = CSMSettings::UserSettings::instance();
|
||||
connect (&userSettings, SIGNAL (userSettingUpdated(const QString &, const QStringList &)),
|
||||
this, SLOT (updateUserSetting (const QString &, const QStringList &)));
|
||||
connect (&CSMPrefs::State::get(), SIGNAL (settingChanged (const CSMPrefs::Setting *)),
|
||||
this, SLOT (settingChanged (const CSMPrefs::Setting *)));
|
||||
{
|
||||
ChangeLock lock (*this);
|
||||
CSMPrefs::get()["Scripts"].update();
|
||||
}
|
||||
|
||||
mUpdateTimer.setSingleShot (true);
|
||||
|
||||
// TODO: provide a font selector dialogue
|
||||
mMonoFont.setStyleHint(QFont::TypeWriter);
|
||||
|
||||
if (userSettings.setting("script-editor/mono-font", "true") == "true")
|
||||
setFont(mMonoFont);
|
||||
|
||||
mLineNumberArea = new LineNumberArea(this);
|
||||
updateLineNumberAreaWidth(0);
|
||||
|
||||
connect(this, SIGNAL(blockCountChanged(int)), this, SLOT(updateLineNumberAreaWidth(int)));
|
||||
connect(this, SIGNAL(updateRequest(QRect,int)), this, SLOT(updateLineNumberArea(QRect,int)));
|
||||
|
||||
showLineNum(userSettings.settingValue("script-editor/show-linenum") == "true");
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptEdit::updateUserSetting (const QString &name, const QStringList &list)
|
||||
{
|
||||
if (mHighlighter->updateUserSetting (name, list))
|
||||
updateHighlighting();
|
||||
updateHighlighting();
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptEdit::showLineNum(bool show)
|
||||
|
@ -202,6 +194,16 @@ bool CSVWorld::ScriptEdit::stringNeedsQuote (const std::string& id) const
|
|||
return !(string.contains(mWhiteListQoutes));
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptEdit::settingChanged (const CSMPrefs::Setting *setting)
|
||||
{
|
||||
if (mHighlighter->settingChanged (setting))
|
||||
updateHighlighting();
|
||||
else if (*setting=="Scripts/mono-font")
|
||||
setFont (setting->isTrue() ? mMonoFont : mDefaultFont);
|
||||
else if (*setting=="Scripts/show-linenum")
|
||||
showLineNum (setting->isTrue());
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptEdit::idListChanged()
|
||||
{
|
||||
mHighlighter->invalidateIds();
|
||||
|
|
|
@ -91,6 +91,8 @@ namespace CSVWorld
|
|||
|
||||
private slots:
|
||||
|
||||
void settingChanged (const CSMPrefs::Setting *setting);
|
||||
|
||||
void idListChanged();
|
||||
|
||||
void updateHighlighting();
|
||||
|
@ -98,10 +100,6 @@ namespace CSVWorld
|
|||
void updateLineNumberAreaWidth(int newBlockCount);
|
||||
|
||||
void updateLineNumberArea(const QRect &, int);
|
||||
|
||||
public slots:
|
||||
|
||||
void updateUserSetting (const QString &name, const QStringList &list);
|
||||
};
|
||||
|
||||
class LineNumberArea : public QWidget
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
#include <components/compiler/extensions0.hpp>
|
||||
|
||||
#include "../../model/doc/document.hpp"
|
||||
#include "../../model/settings/usersettings.hpp"
|
||||
|
||||
#include "../../model/prefs/state.hpp"
|
||||
|
||||
void CSVWorld::ScriptErrorTable::report (const std::string& message, const Compiler::TokenLoc& loc, Type type)
|
||||
{
|
||||
|
@ -57,7 +58,7 @@ void CSVWorld::ScriptErrorTable::addMessage (const std::string& message,
|
|||
setItem (row, 2, messageItem);
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptErrorTable::setWarningsMode (const QString& value)
|
||||
void CSVWorld::ScriptErrorTable::setWarningsMode (const std::string& value)
|
||||
{
|
||||
if (value=="Ignore")
|
||||
Compiler::ErrorHandler::setWarningsMode (0);
|
||||
|
@ -91,17 +92,13 @@ CSVWorld::ScriptErrorTable::ScriptErrorTable (const CSMDoc::Document& document,
|
|||
Compiler::registerExtensions (mExtensions);
|
||||
mContext.setExtensions (&mExtensions);
|
||||
|
||||
setWarningsMode (CSMSettings::UserSettings::instance().settingValue ("script-editor/warnings"));
|
||||
connect (&CSMPrefs::State::get(), SIGNAL (settingChanged (const CSMPrefs::Setting *)),
|
||||
this, SLOT (settingChanged (const CSMPrefs::Setting *)));
|
||||
CSMPrefs::get()["Scripts"].update();
|
||||
|
||||
connect (this, SIGNAL (cellClicked (int, int)), this, SLOT (cellClicked (int, int)));
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptErrorTable::updateUserSetting (const QString& name, const QStringList& value)
|
||||
{
|
||||
if (name=="script-editor/warnings" && !value.isEmpty())
|
||||
setWarningsMode (value.at (0));
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptErrorTable::update (const std::string& source)
|
||||
{
|
||||
clear();
|
||||
|
@ -136,6 +133,12 @@ bool CSVWorld::ScriptErrorTable::clearLocals (const std::string& script)
|
|||
return mContext.clearLocals (script);
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptErrorTable::settingChanged (const CSMPrefs::Setting *setting)
|
||||
{
|
||||
if (*setting=="Scripst/warnings")
|
||||
setWarningsMode (setting->toString());
|
||||
}
|
||||
|
||||
void CSVWorld::ScriptErrorTable::cellClicked (int row, int column)
|
||||
{
|
||||
if (item (row, 1))
|
||||
|
|
|
@ -14,6 +14,11 @@ namespace CSMDoc
|
|||
class Document;
|
||||
}
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
class Setting;
|
||||
}
|
||||
|
||||
namespace CSVWorld
|
||||
{
|
||||
class ScriptErrorTable : public QTableWidget, private Compiler::ErrorHandler
|
||||
|
@ -32,14 +37,12 @@ namespace CSVWorld
|
|||
void addMessage (const std::string& message, CSMDoc::Message::Severity severity,
|
||||
int line = -1, int column = -1);
|
||||
|
||||
void setWarningsMode (const QString& value);
|
||||
void setWarningsMode (const std::string& value);
|
||||
|
||||
public:
|
||||
|
||||
ScriptErrorTable (const CSMDoc::Document& document, QWidget *parent = 0);
|
||||
|
||||
void updateUserSetting (const QString& name, const QStringList& value);
|
||||
|
||||
void update (const std::string& source);
|
||||
|
||||
void clear();
|
||||
|
@ -51,6 +54,8 @@ namespace CSVWorld
|
|||
|
||||
private slots:
|
||||
|
||||
void settingChanged (const CSMPrefs::Setting *setting);
|
||||
|
||||
void cellClicked (int row, int column);
|
||||
|
||||
signals:
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
#include <components/compiler/scanner.hpp>
|
||||
#include <components/compiler/extensions0.hpp>
|
||||
|
||||
#include "../../model/settings/usersettings.hpp"
|
||||
#include "../../model/prefs/setting.hpp"
|
||||
#include "../../model/prefs/category.hpp"
|
||||
|
||||
bool CSVWorld::ScriptHighlighter::parseInt (int value, const Compiler::TokenLoc& loc,
|
||||
Compiler::Scanner& scanner)
|
||||
|
@ -79,79 +80,12 @@ CSVWorld::ScriptHighlighter::ScriptHighlighter (const CSMWorld::Data& data, Mode
|
|||
: QSyntaxHighlighter (parent), Compiler::Parser (mErrorHandler, mContext), mContext (data),
|
||||
mMode (mode)
|
||||
{
|
||||
CSMSettings::UserSettings &userSettings = CSMSettings::UserSettings::instance();
|
||||
QColor color ("black");
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
|
||||
QColor color = QColor();
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting("script-editor/colour-int", "Dark magenta"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::darkMagenta);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Int, format));
|
||||
}
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting ("script-editor/colour-float", "Magenta"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::magenta);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Float, format));
|
||||
}
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting ("script-editor/colour-name", "Gray"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::gray);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Name, format));
|
||||
}
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting ("script-editor/colour-keyword", "Red"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::red);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Keyword, format));
|
||||
}
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting ("script-editor/colour-special", "Dark yellow"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::darkYellow);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Special, format));
|
||||
}
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting ("script-editor/colour-comment", "Green"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::green);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Comment, format));
|
||||
}
|
||||
|
||||
{
|
||||
color.setNamedColor(userSettings.setting ("script-editor/colour-id", "Blue"));
|
||||
if (!color.isValid())
|
||||
color = QColor(Qt::blue);
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme.insert (std::make_pair (Type_Id, format));
|
||||
}
|
||||
for (int i=0; i<=Type_Id; ++i)
|
||||
mScheme.insert (std::make_pair (static_cast<Type> (i), format));
|
||||
|
||||
// configure compiler
|
||||
Compiler::registerExtensions (mExtensions);
|
||||
|
@ -176,85 +110,26 @@ void CSVWorld::ScriptHighlighter::invalidateIds()
|
|||
mContext.invalidateIds();
|
||||
}
|
||||
|
||||
bool CSVWorld::ScriptHighlighter::updateUserSetting (const QString &name, const QStringList &list)
|
||||
bool CSVWorld::ScriptHighlighter::settingChanged (const CSMPrefs::Setting *setting)
|
||||
{
|
||||
if (list.empty())
|
||||
return false;
|
||||
|
||||
QColor color = QColor();
|
||||
|
||||
if (name == "script-editor/colour-int")
|
||||
if (setting->getParent()->getKey()=="Scripts")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
static const char *const colours[Type_Id+2] =
|
||||
{
|
||||
"colour-int", "colour-float", "colour-name", "colour-keyword",
|
||||
"colour-special", "colour-comment", "colour-id",
|
||||
0
|
||||
};
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Int] = format;
|
||||
for (int i=0; colours[i]; ++i)
|
||||
if (setting->getKey()==colours[i])
|
||||
{
|
||||
QTextCharFormat format;
|
||||
format.setForeground (setting->toColor());
|
||||
mScheme[static_cast<Type> (i)] = format;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (name == "script-editor/colour-float")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Float] = format;
|
||||
}
|
||||
else if (name == "script-editor/colour-name")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Name] = format;
|
||||
}
|
||||
else if (name == "script-editor/colour-keyword")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Keyword] = format;
|
||||
}
|
||||
else if (name == "script-editor/colour-special")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Special] = format;
|
||||
}
|
||||
else if (name == "script-editor/colour-comment")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Comment] = format;
|
||||
}
|
||||
else if (name == "script-editor/colour-id")
|
||||
{
|
||||
color.setNamedColor(list.at(0));
|
||||
if (!color.isValid())
|
||||
return false;
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground (color);
|
||||
mScheme[Type_Id] = format;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,11 @@
|
|||
|
||||
#include "../../model/world/scriptcontext.hpp"
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
class Setting;
|
||||
}
|
||||
|
||||
namespace CSVWorld
|
||||
{
|
||||
class ScriptHighlighter : public QSyntaxHighlighter, private Compiler::Parser
|
||||
|
@ -19,13 +24,13 @@ namespace CSVWorld
|
|||
|
||||
enum Type
|
||||
{
|
||||
Type_Int,
|
||||
Type_Float,
|
||||
Type_Name,
|
||||
Type_Keyword,
|
||||
Type_Special,
|
||||
Type_Comment,
|
||||
Type_Id
|
||||
Type_Int = 0,
|
||||
Type_Float = 1,
|
||||
Type_Name = 2,
|
||||
Type_Keyword = 3,
|
||||
Type_Special = 4,
|
||||
Type_Comment = 5,
|
||||
Type_Id = 6
|
||||
};
|
||||
|
||||
enum Mode
|
||||
|
@ -88,7 +93,7 @@ namespace CSVWorld
|
|||
|
||||
void invalidateIds();
|
||||
|
||||
bool updateUserSetting (const QString &name, const QStringList &list);
|
||||
bool settingChanged (const CSMPrefs::Setting *setting);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -194,8 +194,6 @@ void CSVWorld::ScriptSubView::updateUserSetting (const QString& name, const QStr
|
|||
if (mButtons)
|
||||
mButtons->updateUserSetting (name, value);
|
||||
|
||||
mErrors->updateUserSetting (name, value);
|
||||
|
||||
if (name=="script-editor/warnings")
|
||||
recompile();
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include "../../model/world/tablemimedata.hpp"
|
||||
#include "../../model/world/tablemimedata.hpp"
|
||||
#include "../../model/world/commanddispatcher.hpp"
|
||||
#include "../../model/settings/usersettings.hpp"
|
||||
#include "../../model/prefs/state.hpp"
|
||||
|
||||
#include "recordstatusdelegate.hpp"
|
||||
#include "tableeditidaction.hpp"
|
||||
|
@ -232,23 +232,9 @@ CSVWorld::Table::Table (const CSMWorld::UniversalId& id,
|
|||
: DragRecordTable(document), mCreateAction (0),
|
||||
mCloneAction(0),mRecordStatusDisplay (0)
|
||||
{
|
||||
CSMSettings::UserSettings &settings = CSMSettings::UserSettings::instance();
|
||||
QString jumpSetting = settings.settingValue ("table-input/jump-to-added");
|
||||
if (jumpSetting.isEmpty() || jumpSetting == "Jump and Select") // default
|
||||
{
|
||||
mJumpToAddedRecord = true;
|
||||
mUnselectAfterJump = false;
|
||||
}
|
||||
else if(jumpSetting == "Jump Only")
|
||||
{
|
||||
mJumpToAddedRecord = true;
|
||||
mUnselectAfterJump = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
mJumpToAddedRecord = false;
|
||||
mUnselectAfterJump = false;
|
||||
}
|
||||
connect (&CSMPrefs::State::get(), SIGNAL (settingChanged (const CSMPrefs::Setting *)),
|
||||
this, SLOT (settingChanged (const CSMPrefs::Setting *)));
|
||||
CSMPrefs::get()["ID Tables"].update();
|
||||
|
||||
mModel = &dynamic_cast<CSMWorld::IdTableBase&> (*mDocument.getData().getTableModel (id));
|
||||
|
||||
|
@ -358,7 +344,7 @@ CSVWorld::Table::Table (const CSMWorld::UniversalId& id,
|
|||
|
||||
//connect (mProxyModel, SIGNAL (rowsInserted (const QModelIndex&, int, int)),
|
||||
// this, SLOT (rowsInsertedEvent(const QModelIndex&, int, int)));
|
||||
connect (mProxyModel, SIGNAL (rowAdded (const std::string &)),
|
||||
connect (mProxyModel, SIGNAL (rowAdded (const std::string &)),
|
||||
this, SLOT (rowAdded (const std::string &)));
|
||||
|
||||
/// \note This signal could instead be connected to a slot that filters out changes not affecting
|
||||
|
@ -404,7 +390,7 @@ std::vector<std::string> CSVWorld::Table::getSelectedIds() const
|
|||
QModelIndexList selectedRows = selectionModel()->selectedRows();
|
||||
int columnIndex = mModel->findColumnIndex (CSMWorld::Columns::ColumnId_Id);
|
||||
|
||||
for (QModelIndexList::const_iterator iter (selectedRows.begin());
|
||||
for (QModelIndexList::const_iterator iter (selectedRows.begin());
|
||||
iter != selectedRows.end();
|
||||
++iter)
|
||||
{
|
||||
|
@ -548,9 +534,7 @@ void CSVWorld::Table::previewRecord()
|
|||
|
||||
void CSVWorld::Table::executeExtendedDelete()
|
||||
{
|
||||
CSMSettings::UserSettings &settings = CSMSettings::UserSettings::instance();
|
||||
QString configSetting = settings.settingValue ("table-input/extended-config");
|
||||
if (configSetting == "true")
|
||||
if (CSMPrefs::get()["ID Tables"]["extended-config"].isTrue())
|
||||
{
|
||||
emit extendedDeleteConfigRequest(getSelectedIds());
|
||||
}
|
||||
|
@ -562,9 +546,7 @@ void CSVWorld::Table::executeExtendedDelete()
|
|||
|
||||
void CSVWorld::Table::executeExtendedRevert()
|
||||
{
|
||||
CSMSettings::UserSettings &settings = CSMSettings::UserSettings::instance();
|
||||
QString configSetting = settings.settingValue ("table-input/extended-config");
|
||||
if (configSetting == "true")
|
||||
if (CSMPrefs::get()["ID Tables"]["extended-config"].isTrue())
|
||||
{
|
||||
emit extendedRevertConfigRequest(getSelectedIds());
|
||||
}
|
||||
|
@ -576,25 +558,6 @@ void CSVWorld::Table::executeExtendedRevert()
|
|||
|
||||
void CSVWorld::Table::updateUserSetting (const QString &name, const QStringList &list)
|
||||
{
|
||||
if (name=="table-input/jump-to-added")
|
||||
{
|
||||
if(list.isEmpty() || list.at(0) == "Jump and Select") // default
|
||||
{
|
||||
mJumpToAddedRecord = true;
|
||||
mUnselectAfterJump = false;
|
||||
}
|
||||
else if(list.at(0) == "Jump Only")
|
||||
{
|
||||
mJumpToAddedRecord = true;
|
||||
mUnselectAfterJump = true;
|
||||
}
|
||||
else // No Jump
|
||||
{
|
||||
mJumpToAddedRecord = false;
|
||||
mUnselectAfterJump = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (name=="records/type-format" || name=="records/status-format")
|
||||
{
|
||||
int columns = mModel->columnCount();
|
||||
|
@ -650,6 +613,29 @@ void CSVWorld::Table::updateUserSetting (const QString &name, const QStringList
|
|||
}
|
||||
}
|
||||
|
||||
void CSVWorld::Table::settingChanged (const CSMPrefs::Setting *setting)
|
||||
{
|
||||
if (*setting=="ID Tables/jump-to-added")
|
||||
{
|
||||
if (setting->toString()=="Jump and Select")
|
||||
{
|
||||
mJumpToAddedRecord = true;
|
||||
mUnselectAfterJump = false;
|
||||
}
|
||||
else if (setting->toString()=="Jump Only")
|
||||
{
|
||||
mJumpToAddedRecord = true;
|
||||
mUnselectAfterJump = true;
|
||||
}
|
||||
else // No Jump
|
||||
{
|
||||
mJumpToAddedRecord = false;
|
||||
mUnselectAfterJump = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CSVWorld::Table::tableSizeUpdate()
|
||||
{
|
||||
int size = 0;
|
||||
|
|
|
@ -27,6 +27,11 @@ namespace CSMWorld
|
|||
class CommandDispatcher;
|
||||
}
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
class Setting;
|
||||
}
|
||||
|
||||
namespace CSVWorld
|
||||
{
|
||||
class CommandDelegate;
|
||||
|
@ -140,6 +145,8 @@ namespace CSVWorld
|
|||
|
||||
public slots:
|
||||
|
||||
void settingChanged (const CSMPrefs::Setting *setting);
|
||||
|
||||
void tableSizeUpdate();
|
||||
|
||||
void selectionSizeUpdate();
|
||||
|
|
Loading…
Reference in a new issue