Restoring the FonButton in Preferences (#3540)
This commit is contained in:
parent
7de1ec2d66
commit
c993906d07
@ -990,6 +990,7 @@ PREFERENCES_REMEMBERZOOMPAN;Se souvenir de niveau de zoom et de la position de l
|
||||
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Retient le niveau de zoom et la position de l'image courante lors de l'ouverture d'une nouvelle image.\n\nCette option ne fonctionne que dans le mode "Éditeur unique" et quand "Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%" is set to "Idem PP3".
|
||||
PREFERENCES_RGBDTL_LABEL;Nombre maximum d'unités de calcul pour la Réduction du bruit
|
||||
PREFERENCES_RGBDTL_TOOLTIP;La réduction du bruit nécessite un minimum d'à peu près 128Mo de RAM pour une image de 10MPix ou 512Mo pour une image de 40MPix, ainsi que 128Mo de RAM supplémentaire par unité de calcul. Plus il y aura d'unités de calcul travaillant en parallèle, plus ce sera rapide. Laissez la valeur à "0" pour utiliser automatiquement autant d'unités de calcul que possible.
|
||||
PREFERENCES_SELECTFONT;Police principale
|
||||
PREFERENCES_SELECTFONT_COLPICKER;Police des pipette à couleur
|
||||
PREFERENCES_SELECTLANG;Choix de la langue
|
||||
PREFERENCES_SELECTTHEME;Choisissez un thème
|
||||
|
@ -1041,6 +1041,7 @@ PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
|
||||
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
|
||||
PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
|
||||
PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
|
||||
PREFERENCES_SELECTFONT;Select main font
|
||||
PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
|
||||
PREFERENCES_SELECTLANG;Select language
|
||||
PREFERENCES_SELECTTHEME;Select theme
|
||||
|
@ -72,8 +72,6 @@
|
||||
* {
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
font-size: 12px;
|
||||
font-family: Arial;
|
||||
outline-style: none; /* removes the ugly dotted focus line */
|
||||
border-image: none;
|
||||
transition: none;
|
||||
|
@ -72,8 +72,6 @@
|
||||
* {
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
font-size: 12px;
|
||||
font-family: Arial;
|
||||
outline-style: none; /* removes the ugly dotted focus line */
|
||||
border-image: none;
|
||||
transition: none;
|
||||
|
@ -48,8 +48,8 @@ void LockableColorPicker::updateBackBuffer ()
|
||||
Glib::RefPtr<Pango::Context> pangoContext = iArea->get_pango_context ();
|
||||
Pango::FontDescription fontd = pangoContext->get_font_description();
|
||||
// set font family and size
|
||||
fontd.set_family("sans");
|
||||
fontd.set_size(8 * Pango::SCALE); // 8pt, will be scaled by Gtk depending on the screen's DPI
|
||||
fontd.set_family(options.CPFontFamily == "default" ? "sans" : options.CPFontFamily);
|
||||
fontd.set_size((options.CPFontFamily == "default" ? 8 : options.CPFontSize) * Pango::SCALE);
|
||||
fontd.set_weight(Pango::WEIGHT_NORMAL);
|
||||
pangoContext->set_font_description (fontd);
|
||||
|
||||
|
@ -56,6 +56,7 @@ Glib::ustring creditsPath;
|
||||
Glib::ustring licensePath;
|
||||
Glib::ustring argv1;
|
||||
bool simpleEditor;
|
||||
Glib::RefPtr<Gtk::CssProvider> cssForced;
|
||||
Glib::RefPtr<Gtk::CssProvider> cssRT;
|
||||
//Glib::Threads::Thread* mainThread;
|
||||
|
||||
@ -332,6 +333,19 @@ int main(int argc, char **argv)
|
||||
} catch (...) {
|
||||
printf("Error: Can't load css file \"%s\"\n", filename.c_str());
|
||||
}
|
||||
|
||||
// Set the font face and size
|
||||
if (options.fontFamily != "default") {
|
||||
try {
|
||||
cssForced = Gtk::CssProvider::create();
|
||||
cssForced->load_from_data (Glib::ustring::compose("* { font-family: %1; font-size: %2pt }", options.fontFamily, options.fontSize));
|
||||
Gtk::StyleContext::add_provider_for_screen(screen, cssForced, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
} catch (Glib::Error &err) {
|
||||
printf("Error: \"%s\"\n", err.what().c_str());
|
||||
} catch (...) {
|
||||
printf("Error: Can't find the font named \"%s\"\n", options.fontFamily.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
@ -338,6 +338,10 @@ void Options::setDefaults ()
|
||||
browserDirPanelOpened = true;
|
||||
editorFilmStripOpened = true;
|
||||
historyPanelWidth = 330;
|
||||
fontFamily = "default";
|
||||
fontSize = 10;
|
||||
CPFontFamily = "default";
|
||||
CPFontSize = 8;
|
||||
lastScale = 5;
|
||||
panAccelFactor = 5;
|
||||
rememberZoomAndPan = true;
|
||||
@ -1309,6 +1313,22 @@ int Options::readFromFile (Glib::ustring fname)
|
||||
historyPanelWidth = keyFile.get_integer ("GUI", "HistoryPanelWidth");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "FontFamily")) {
|
||||
fontFamily = keyFile.get_string ("GUI", "FontFamily");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "FontSize")) {
|
||||
fontSize = keyFile.get_integer ("GUI", "FontSize");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "CPFontFamily")) {
|
||||
CPFontFamily = keyFile.get_string ("GUI", "CPFontFamily");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "CPFontSize")) {
|
||||
CPFontSize = keyFile.get_integer ("GUI", "CPFontSize");
|
||||
}
|
||||
|
||||
if (keyFile.has_key ("GUI", "LastPreviewScale")) {
|
||||
lastScale = keyFile.get_integer ("GUI", "LastPreviewScale");
|
||||
}
|
||||
@ -1977,6 +1997,10 @@ int Options::saveToFile (Glib::ustring fname)
|
||||
keyFile.set_boolean ("GUI", "EditorFilmStripOpened", editorFilmStripOpened);
|
||||
keyFile.set_boolean ("GUI", "BrowserDirPanelOpened", browserDirPanelOpened);
|
||||
keyFile.set_integer ("GUI", "HistoryPanelWidth", historyPanelWidth);
|
||||
keyFile.set_string ("GUI", "FontFamily", fontFamily);
|
||||
keyFile.set_integer ("GUI", "FontSize", fontSize);
|
||||
keyFile.set_string ("GUI", "CPFontFamily", CPFontFamily);
|
||||
keyFile.set_integer ("GUI", "CPFontSize", CPFontSize);
|
||||
keyFile.set_integer ("GUI", "LastPreviewScale", lastScale);
|
||||
keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor);
|
||||
keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan);
|
||||
|
@ -135,6 +135,10 @@ public:
|
||||
int lastScale;
|
||||
int panAccelFactor;
|
||||
int lastCropSize;
|
||||
Glib::ustring fontFamily; // RT's main font family
|
||||
int fontSize; // RT's main font size (units: pt)
|
||||
Glib::ustring CPFontFamily; // ColorPicker font family
|
||||
int CPFontSize; // ColorPicker font size (units: pt)
|
||||
bool fbOnlyRaw;
|
||||
bool fbShowDateTime;
|
||||
bool fbShowBasicExif;
|
||||
|
@ -32,14 +32,15 @@
|
||||
|
||||
extern Options options;
|
||||
extern Glib::ustring argv0;
|
||||
Glib::RefPtr<Gtk::CssProvider> css;
|
||||
Glib::RefPtr<Gtk::CssProvider> themecss;
|
||||
Glib::RefPtr<Gtk::CssProvider> fontcss;
|
||||
|
||||
Preferences::Preferences (RTWindow *rtwindow)
|
||||
: Gtk::Dialog (M("MAIN_BUTTON_PREFERENCES"), *rtwindow, true)
|
||||
, splash (nullptr)
|
||||
, rprofiles (nullptr)
|
||||
, iprofiles (nullptr)
|
||||
, parent (rtwindow)
|
||||
, splash (nullptr)
|
||||
{
|
||||
regex = Glib::Regex::create(THEMEREGEXSTR, Glib::RegexCompileFlags::REGEX_CASELESS);
|
||||
|
||||
@ -924,6 +925,26 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
themeGrid->attach_next_to(*themelab, Gtk::POS_LEFT, 1, 1);
|
||||
themeGrid->attach_next_to(*theme, *themelab, Gtk::POS_RIGHT, 1, 1);
|
||||
|
||||
Gtk::Label* fontlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_SELECTFONT")) );
|
||||
setExpandAlignProperties(fontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||
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));
|
||||
|
||||
themeGrid->attach_next_to(*fontlab, *theme, Gtk::POS_RIGHT, 1, 1);
|
||||
themeGrid->attach_next_to(*fontButton, *fontlab, Gtk::POS_RIGHT, 1, 1);
|
||||
|
||||
Gtk::Label* cpfontlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_SELECTFONT_COLPICKER") + ":") );
|
||||
setExpandAlignProperties(cpfontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||
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));
|
||||
|
||||
themeGrid->attach_next_to(*cpfontlab, *fontButton, Gtk::POS_RIGHT, 1, 1);
|
||||
themeGrid->attach_next_to(*colorPickerFontButton, *cpfontlab, Gtk::POS_RIGHT, 1, 1);
|
||||
|
||||
Gtk::Label* cutOverlayLabel = Gtk::manage( new Gtk::Label (M("PREFERENCES_CUTOVERLAYBRUSH") + ":") );
|
||||
setExpandAlignProperties(cutOverlayLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
||||
butCropCol = Gtk::manage( new Gtk::ColorButton() );
|
||||
@ -937,7 +958,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
|
||||
butNavGuideCol = Gtk::manage( new Gtk::ColorButton() );
|
||||
setExpandAlignProperties(butNavGuideCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
|
||||
butNavGuideCol->set_use_alpha(true);
|
||||
themeGrid->attach_next_to(*navGuideLabel, *butCropCol, Gtk::POS_RIGHT, 1, 1);
|
||||
themeGrid->attach_next_to(*navGuideLabel, *butCropCol, Gtk::POS_RIGHT, 2, 1);
|
||||
themeGrid->attach_next_to(*butNavGuideCol, *navGuideLabel, Gtk::POS_RIGHT, 1, 1);
|
||||
|
||||
ftheme->add (*themeGrid);
|
||||
@ -1069,6 +1090,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) );
|
||||
|
||||
return mvbsd;
|
||||
}
|
||||
@ -1457,6 +1479,14 @@ void Preferences::storePreferences ()
|
||||
moptions.navGuideBrush[2] = NavGuideCol.get_blue();
|
||||
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;
|
||||
|
||||
Pango::FontDescription cpfd(colorPickerFontButton->get_font_name());
|
||||
moptions.CPFontFamily = cpfd.get_family();
|
||||
moptions.CPFontSize = cpfd.get_size() / Pango::SCALE;
|
||||
|
||||
#ifdef WIN32
|
||||
moptions.gimpDir = gimpDir->get_filename ();
|
||||
moptions.psDir = psDir->get_filename ();
|
||||
@ -1602,6 +1632,7 @@ void Preferences::fillPreferences ()
|
||||
{
|
||||
|
||||
tconn.block (true);
|
||||
fconn.block (true);
|
||||
sconn.block (true);
|
||||
dfconn.block (true);
|
||||
ffconn.block (true);
|
||||
@ -1672,6 +1703,9 @@ 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));
|
||||
|
||||
showDateTime->set_active (moptions.fbShowDateTime);
|
||||
showBasicExif->set_active (moptions.fbShowBasicExif);
|
||||
showExpComp->set_active (moptions.fbShowExpComp);
|
||||
@ -1787,6 +1821,7 @@ void Preferences::fillPreferences ()
|
||||
|
||||
addc.block (false);
|
||||
setc.block (false);
|
||||
fconn.block (false);
|
||||
tconn.block (false);
|
||||
sconn.block (false);
|
||||
dfconn.block (false);
|
||||
@ -1864,6 +1899,12 @@ void Preferences::cancelPressed ()
|
||||
switchThemeTo(options.theme);
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
// update the profileStore
|
||||
if (useBundledProfiles->get_active () != options.useBundledProfiles) {
|
||||
// we have to rescan with the old value;
|
||||
@ -2038,14 +2079,14 @@ void Preferences::switchThemeTo(Glib::ustring newTheme)
|
||||
|
||||
Glib::ustring filename(Glib::build_filename(argv0, "themes", newTheme + ".css"));
|
||||
|
||||
if (!css) {
|
||||
css = Gtk::CssProvider::create();
|
||||
if (!themecss) {
|
||||
themecss = Gtk::CssProvider::create();
|
||||
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();
|
||||
Gtk::StyleContext::add_provider_for_screen(screen, css, GTK_STYLE_PROVIDER_PRIORITY_USER);
|
||||
Gtk::StyleContext::add_provider_for_screen(screen, themecss, GTK_STYLE_PROVIDER_PRIORITY_USER);
|
||||
}
|
||||
|
||||
try {
|
||||
css->load_from_path (filename);
|
||||
themecss->load_from_path (filename);
|
||||
} catch (Glib::Error &err) {
|
||||
printf("Error: Can't load css file \"%s\"\nMessage: %s\n", filename.c_str(), err.what().c_str());
|
||||
} catch (...) {
|
||||
@ -2053,6 +2094,33 @@ void Preferences::switchThemeTo(Glib::ustring newTheme)
|
||||
}
|
||||
}
|
||||
|
||||
void Preferences::fontChanged ()
|
||||
{
|
||||
|
||||
Pango::FontDescription fd(fontButton->get_font_name());
|
||||
switchFontTo(fd.get_family(), fd.get_size() / Pango::SCALE);
|
||||
}
|
||||
|
||||
void Preferences::switchFontTo(const Glib::ustring &newFontFamily, const int newFontSize)
|
||||
{
|
||||
|
||||
if (newFontFamily != "default") {
|
||||
if (!fontcss) {
|
||||
fontcss = Gtk::CssProvider::create();
|
||||
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();
|
||||
Gtk::StyleContext::add_provider_for_screen(screen, fontcss, GTK_STYLE_PROVIDER_PRIORITY_USER);
|
||||
}
|
||||
|
||||
try {
|
||||
fontcss->load_from_data (Glib::ustring::compose("* { font-family: %1; font-size: %2pt }", newFontFamily, newFontSize));
|
||||
} catch (Glib::Error &err) {
|
||||
printf("Error: \"%s\"\n", err.what().c_str());
|
||||
} catch (...) {
|
||||
printf("Error: Can't find the font named \"%s\"\n", newFontFamily.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Preferences::workflowUpdate ()
|
||||
{
|
||||
|
||||
|
@ -138,6 +138,8 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
|
||||
Gtk::ComboBoxText* curveBBoxPosC;
|
||||
|
||||
Gtk::ComboBoxText* theme;
|
||||
Gtk::FontButton* fontButton;
|
||||
Gtk::FontButton* colorPickerFontButton;
|
||||
Gtk::ColorButton* butCropCol;
|
||||
Gtk::ColorButton* butNavGuideCol;
|
||||
|
||||
@ -200,7 +202,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
|
||||
Glib::ustring storedValueImg;
|
||||
|
||||
Options moptions;
|
||||
sigc::connection tconn, sconn, addc, setc, dfconn, ffconn, bpconn, rpconn, ipconn;
|
||||
sigc::connection tconn, sconn, fconn, addc, setc, dfconn, ffconn, bpconn, rpconn, ipconn;
|
||||
sigc::connection autoMonProfileConn, sndEnableConn, langAutoDetectConn, autocielabConn;
|
||||
Glib::ustring initialTheme;
|
||||
Glib::ustring initialFont;
|
||||
@ -213,12 +215,14 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
|
||||
void updateFFinfos ();
|
||||
void workflowUpdate();
|
||||
void themeChanged ();
|
||||
void fontChanged ();
|
||||
void forRAWComboChanged ();
|
||||
void forImageComboChanged ();
|
||||
void layoutComboChanged ();
|
||||
void bundledProfilesChanged ();
|
||||
void iccDirChanged ();
|
||||
void switchThemeTo (Glib::ustring newTheme);
|
||||
void switchFontTo (const Glib::ustring &newFontFamily, const int newFontSize);
|
||||
bool splashClosed(GdkEventAny* event);
|
||||
|
||||
int getThemeRowNumber(Glib::ustring& longThemeFName);
|
||||
|
Loading…
x
Reference in New Issue
Block a user