merge with dev
This commit is contained in:
@@ -30,9 +30,10 @@ env:
|
||||
|
||||
before_install:
|
||||
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||
- sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ xenial main"
|
||||
- sudo apt-get -qq update
|
||||
- sudo apt-get install gcc-6.2 g++-6.2
|
||||
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6.2 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6.2
|
||||
- sudo apt-get install gcc-6 g++-6
|
||||
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6
|
||||
- sudo apt-get install build-essential cmake curl git libbz2-dev libcanberra-gtk3-dev libexiv2-dev libexpat-dev libfftw3-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libiptcdata0-dev libjpeg8-dev liblcms2-dev libpng12-dev libsigc++-2.0-dev libtiff5-dev zlib1g-dev
|
||||
|
||||
before_script:
|
@@ -19,11 +19,12 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
#include <list>
|
||||
#include <type_traits>
|
||||
#include <algorithm>
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
#include <unordered_map>
|
||||
|
||||
#include "../rtgui/threadutils.h"
|
||||
|
||||
@@ -87,9 +88,9 @@ public:
|
||||
lru_list.splice(
|
||||
lru_list.begin(),
|
||||
lru_list,
|
||||
store_it->second.lru_list_it
|
||||
store_it->second->lru_list_it
|
||||
);
|
||||
value = store_it->second.value;
|
||||
value = store_it->second->value;
|
||||
}
|
||||
mutex.unlock();
|
||||
|
||||
@@ -139,7 +140,7 @@ public:
|
||||
mutex.lock();
|
||||
if (hook) {
|
||||
for (const auto& entry : store) {
|
||||
hook->onRemove(entry.first, entry.second.value);
|
||||
hook->onRemove(entry.first, entry.second->value);
|
||||
}
|
||||
}
|
||||
lru_list.clear();
|
||||
@@ -152,13 +153,13 @@ private:
|
||||
|
||||
using Store = typename std::conditional<
|
||||
cache_helper::has_hash<K>::value,
|
||||
std::unordered_map<K, Value>,
|
||||
std::map<K, Value>
|
||||
std::unordered_map<K, std::unique_ptr<Value>>,
|
||||
std::map<K, std::unique_ptr<Value>>
|
||||
>::type;
|
||||
using StoreIterator = typename Store::iterator;
|
||||
using StoreConstIterator = typename Store::const_iterator;
|
||||
|
||||
typedef std::list<StoreIterator> LruList;
|
||||
using LruList = std::list<StoreIterator>;
|
||||
using LruListIterator = typename LruList::iterator;
|
||||
|
||||
struct Value {
|
||||
@@ -176,7 +177,7 @@ private:
|
||||
{
|
||||
const StoreIterator store_it = lru_list.back();
|
||||
if (hook) {
|
||||
hook->onDiscard(store_it->first, store_it->second.value);
|
||||
hook->onDiscard(store_it->first, store_it->second->value);
|
||||
}
|
||||
store.erase(store_it);
|
||||
lru_list.pop_back();
|
||||
@@ -193,23 +194,25 @@ private:
|
||||
discard();
|
||||
}
|
||||
lru_list.push_front(store.end());
|
||||
const Value v = {
|
||||
value,
|
||||
lru_list.begin()
|
||||
};
|
||||
lru_list.front() = store.emplace(key, v).first;
|
||||
std::unique_ptr<Value> v(
|
||||
new Value{
|
||||
value,
|
||||
lru_list.begin()
|
||||
}
|
||||
);
|
||||
lru_list.front() = store.emplace(key, std::move(v)).first;
|
||||
}
|
||||
} else {
|
||||
if (mode == Mode::UNCOND || mode == Mode::KNOWN) {
|
||||
if (hook) {
|
||||
hook->onDisplace(key, store_it->second.value);
|
||||
hook->onDisplace(key, store_it->second->value);
|
||||
}
|
||||
lru_list.splice(
|
||||
lru_list.begin(),
|
||||
lru_list,
|
||||
store_it->second.lru_list_it
|
||||
store_it->second->lru_list_it
|
||||
);
|
||||
store_it->second.value = value;
|
||||
store_it->second->value = value;
|
||||
}
|
||||
}
|
||||
mutex.unlock();
|
||||
@@ -220,9 +223,9 @@ private:
|
||||
void remove(const StoreIterator& store_it)
|
||||
{
|
||||
if (hook) {
|
||||
hook->onRemove(store_it->first, store_it->second.value);
|
||||
hook->onRemove(store_it->first, store_it->second->value);
|
||||
}
|
||||
lru_list.erase(store_it->second.lru_list_it);
|
||||
lru_list.erase(store_it->second->lru_list_it);
|
||||
store.erase(store_it);
|
||||
}
|
||||
|
||||
|
@@ -41,6 +41,8 @@ Preferences::Preferences (RTWindow *rtwindow)
|
||||
, rprofiles (nullptr)
|
||||
, iprofiles (nullptr)
|
||||
, parent (rtwindow)
|
||||
, newFont (false)
|
||||
, newCPFont (false)
|
||||
{
|
||||
regex = Glib::Regex::create(THEMEREGEXSTR, Glib::RegexCompileFlags::REGEX_CASELESS);
|
||||
|
||||
@@ -56,6 +58,10 @@ Preferences::Preferences (RTWindow *rtwindow)
|
||||
set_size_request (650, -1);
|
||||
set_default_size (options.preferencesWidth, options.preferencesHeight);
|
||||
|
||||
Pango::FontDescription defaultFont = get_style_context ()->get_font();
|
||||
initialFontFamily = defaultFont.get_family ();
|
||||
initialFontSize = defaultFont.get_size () / Pango::SCALE;
|
||||
|
||||
Gtk::Box* mainBox = get_content_area ();
|
||||
//GTK318
|
||||
#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 20
|
||||
@@ -1032,7 +1038,11 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
fontButton = Gtk::manage( new Gtk::FontButton ());
|
||||
setExpandAlignProperties(fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||
fontButton->set_use_size(true);
|
||||
fontButton->set_font_name(Glib::ustring::compose("%1 %2", options.fontFamily == "default" ? "sans" : options.fontFamily, options.fontSize));
|
||||
if (options.fontFamily == "default") {
|
||||
fontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize));
|
||||
} else {
|
||||
fontButton->set_font_name (Glib::ustring::compose("%1 %2", options.fontFamily, options.fontSize));
|
||||
}
|
||||
|
||||
themeGrid->attach_next_to(*fontlab, *theme, Gtk::POS_RIGHT, 1, 1);
|
||||
themeGrid->attach_next_to(*fontButton, *fontlab, Gtk::POS_RIGHT, 1, 1);
|
||||
@@ -1042,7 +1052,11 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
colorPickerFontButton = Gtk::manage( new Gtk::FontButton ());
|
||||
setExpandAlignProperties(fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||
colorPickerFontButton->set_use_size(true);
|
||||
colorPickerFontButton->set_font_name(Glib::ustring::compose("%1 %2", options.CPFontFamily == "default" ? "sans" : options.CPFontFamily, options.CPFontSize));
|
||||
if (options.fontFamily == "default") {
|
||||
colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize));
|
||||
} else {
|
||||
colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", options.CPFontFamily, options.CPFontSize));
|
||||
}
|
||||
|
||||
themeGrid->attach_next_to(*cpfontlab, *fontButton, Gtk::POS_RIGHT, 1, 1);
|
||||
themeGrid->attach_next_to(*colorPickerFontButton, *cpfontlab, Gtk::POS_RIGHT, 1, 1);
|
||||
@@ -1193,6 +1207,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
langAutoDetectConn = ckbLangAutoDetect->signal_toggled().connect (sigc::mem_fun(*this, &Preferences::langAutoDetectToggled));
|
||||
tconn = theme->signal_changed().connect( sigc::mem_fun(*this, &Preferences::themeChanged) );
|
||||
fconn = fontButton->signal_font_set().connect( sigc::mem_fun(*this, &Preferences::fontChanged) );
|
||||
cpfconn = colorPickerFontButton->signal_font_set().connect( sigc::mem_fun(*this, &Preferences::cpFontChanged) );
|
||||
|
||||
return mvbsd;
|
||||
}
|
||||
@@ -1582,12 +1597,16 @@ void Preferences::storePreferences ()
|
||||
moptions.navGuideBrush[3] = butNavGuideCol->get_alpha() / 65535.0;
|
||||
|
||||
Pango::FontDescription fd(fontButton->get_font_name());
|
||||
moptions.fontFamily = fd.get_family();
|
||||
moptions.fontSize = fd.get_size() / Pango::SCALE;
|
||||
if (newFont) {
|
||||
moptions.fontFamily = fd.get_family();
|
||||
moptions.fontSize = fd.get_size() / Pango::SCALE;
|
||||
}
|
||||
|
||||
Pango::FontDescription cpfd(colorPickerFontButton->get_font_name());
|
||||
moptions.CPFontFamily = cpfd.get_family();
|
||||
moptions.CPFontSize = cpfd.get_size() / Pango::SCALE;
|
||||
if (newCPFont) {
|
||||
moptions.CPFontFamily = cpfd.get_family();
|
||||
moptions.CPFontSize = cpfd.get_size() / Pango::SCALE;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
moptions.gimpDir = gimpDir->get_filename ();
|
||||
@@ -1758,6 +1777,7 @@ void Preferences::fillPreferences ()
|
||||
|
||||
tconn.block (true);
|
||||
fconn.block (true);
|
||||
cpfconn.block (true);
|
||||
sconn.block (true);
|
||||
dfconn.block (true);
|
||||
ffconn.block (true);
|
||||
@@ -1843,8 +1863,17 @@ void Preferences::fillPreferences ()
|
||||
butNavGuideCol->set_rgba(NavGuideCol);
|
||||
butNavGuideCol->set_alpha ( (unsigned short)(moptions.navGuideBrush[3] * 65535.0));
|
||||
|
||||
fontButton->set_font_name(Glib::ustring::compose("%1 %2", options.fontFamily == "default" ? "sans" : options.fontFamily, options.fontSize));
|
||||
colorPickerFontButton->set_font_name(Glib::ustring::compose("%1 %2", options.CPFontFamily == "default" ? "sans" : options.CPFontFamily, options.CPFontSize));
|
||||
if (options.fontFamily == "default") {
|
||||
fontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize));
|
||||
} else {
|
||||
fontButton->set_font_name (Glib::ustring::compose("%1 %2", options.fontFamily, options.fontSize));
|
||||
}
|
||||
|
||||
if (options.CPFontFamily == "default") {
|
||||
colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize));
|
||||
} else {
|
||||
colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", options.CPFontFamily, options.CPFontSize));
|
||||
}
|
||||
|
||||
showDateTime->set_active (moptions.fbShowDateTime);
|
||||
showBasicExif->set_active (moptions.fbShowBasicExif);
|
||||
@@ -1965,6 +1994,7 @@ void Preferences::fillPreferences ()
|
||||
|
||||
addc.block (false);
|
||||
setc.block (false);
|
||||
cpfconn.block (false);
|
||||
fconn.block (false);
|
||||
tconn.block (false);
|
||||
sconn.block (false);
|
||||
@@ -2047,7 +2077,11 @@ void Preferences::cancelPressed ()
|
||||
// set the initial font back
|
||||
Pango::FontDescription fd(fontButton->get_font_name());
|
||||
if (fd.get_family() != options.fontFamily && (fd.get_size() / Pango::SCALE) != options.fontSize) {
|
||||
switchFontTo(options.fontFamily == "default" ? "sans" : options.fontFamily, options.fontSize);
|
||||
if (options.fontFamily == "default") {
|
||||
switchFontTo(initialFontFamily, initialFontSize);
|
||||
} else {
|
||||
switchFontTo(options.fontFamily, options.fontSize);
|
||||
}
|
||||
}
|
||||
|
||||
// update the profileStore
|
||||
@@ -2244,10 +2278,17 @@ void Preferences::switchThemeTo(Glib::ustring newTheme)
|
||||
void Preferences::fontChanged ()
|
||||
{
|
||||
|
||||
newFont = true;
|
||||
Pango::FontDescription fd(fontButton->get_font_name());
|
||||
switchFontTo(fd.get_family(), fd.get_size() / Pango::SCALE);
|
||||
}
|
||||
|
||||
void Preferences::cpFontChanged ()
|
||||
{
|
||||
|
||||
newCPFont = true;
|
||||
}
|
||||
|
||||
void Preferences::switchFontTo(const Glib::ustring &newFontFamily, const int newFontSize)
|
||||
{
|
||||
|
||||
@@ -2272,6 +2313,13 @@ void Preferences::switchFontTo(const Glib::ustring &newFontFamily, const int new
|
||||
printf("Error: Can't find the font named \"%s\"\n", newFontFamily.c_str());
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (fontcss) {
|
||||
fontcss = Gtk::CssProvider::create();
|
||||
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();
|
||||
Gtk::StyleContext::remove_provider_for_screen(screen, fontcss);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Preferences::workflowUpdate ()
|
||||
|
@@ -208,10 +208,13 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
|
||||
Glib::ustring storedValueImg;
|
||||
|
||||
Options moptions;
|
||||
sigc::connection tconn, sconn, fconn, addc, setc, dfconn, ffconn, bpconn, rpconn, ipconn;
|
||||
sigc::connection tconn, sconn, fconn, cpfconn, addc, setc, dfconn, ffconn, bpconn, rpconn, ipconn;
|
||||
sigc::connection autoMonProfileConn, sndEnableConn, langAutoDetectConn, autocielabConn;
|
||||
Glib::ustring initialTheme;
|
||||
Glib::ustring initialFont;
|
||||
Glib::ustring initialFontFamily;
|
||||
int initialFontSize;
|
||||
bool newFont;
|
||||
bool newCPFont;
|
||||
|
||||
void fillPreferences ();
|
||||
void storePreferences ();
|
||||
@@ -222,6 +225,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
|
||||
void workflowUpdate();
|
||||
void themeChanged ();
|
||||
void fontChanged ();
|
||||
void cpFontChanged ();
|
||||
void forRAWComboChanged ();
|
||||
void forImageComboChanged ();
|
||||
void layoutComboChanged ();
|
||||
|
Reference in New Issue
Block a user