merge with dev

This commit is contained in:
U-PC-BUREAU\jacques
2018-08-22 18:21:40 +02:00
140 changed files with 3185 additions and 1208 deletions

View File

@@ -97,8 +97,8 @@ public:
rtengine::procparams::CropParams cropParams;
rtengine::procparams::ColorManagementParams colorParams;
Glib::RefPtr<Gdk::Pixbuf> cropPixbuf;
Glib::RefPtr<Gdk::Pixbuf> cropPixbuftrue;
Glib::RefPtr<Gdk::Pixbuf> cropPixbuf; // image displayed on monitor, using the monitor profile (i.e. lab to monitor profile)
Glib::RefPtr<Gdk::Pixbuf> cropPixbuftrue; // internal image in output color space for analysis (i.e. lab to either Working profile or Output profile, depending on options.rtSettings.HistogramWorking)
MyMutex cimg;

View File

@@ -1007,7 +1007,9 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
int mx, my;
screenCoordToImage (x, y, mx, my);
if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuf) {
MyMutex::MyLock lock(cropHandler.cimg);
if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuftrue) {
cropHandler.getFullImageSize(mx, my);
// pmlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1);
// if (pmhlistener) pmhlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1);
@@ -1023,7 +1025,7 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
}
} else {
/*MyMutex::MyLock lock(cropHandler.cimg);
/*
int vx = x - xpos - imgX;
int vy = y - ypos - imgY;
@@ -1033,7 +1035,6 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
*/
cropHandler.cimg.lock ();
int vx = x - xpos - imgX;
int vy = y - ypos - imgY;
@@ -1045,34 +1046,35 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
// guint8* pix = cropHandler.cropPixbuf->get_pixels() + vy*cropHandler.cropPixbuf->get_rowstride() + vx*3;
// if (vx < cropHandler.cropPixbuf->get_width() && vy < cropHandler.cropPixbuf->get_height())
// pmlistener->pointerMoved (true, mx, my, pix[0], pix[1], pix[2]);
int imwidth = cropHandler.cropPixbuf->get_width();
int imheight = cropHandler.cropPixbuf->get_height();
guint8* pix = cropHandler.cropPixbuf->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3;
int imwidth = cropHandler.cropPixbuftrue->get_width();
int imheight = cropHandler.cropPixbuftrue->get_height();
guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3;
int rval = pix[0];
int gval = pix[1];
int bval = pix[2];
bool isRaw = false;
if (vx < imwidth && vy < imheight) {
rtengine::StagedImageProcessor* ipc = iarea->getImProcCoordinator();
if(ipc) {
procparams::ProcParams params;
ipc->getParams(&params);
if(params.raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) || params.raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE)) {
isRaw = params.raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) || params.raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE);
if(isRaw) {
ImageSource *isrc = static_cast<ImageSource*>(ipc->getInitialImage());
isrc->getRawValues(mx, my, params.coarse.rotate, rval, gval, bval);
}
}
// pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);
pmlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, rval, gval, bval);
if (pmhlistener)
// pmhlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);
{
pmhlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, pix[0], pix[1], pix[2]);
// Updates the Navigator
// TODO: possible double color conversion if rval, gval, bval come from cropHandler.cropPixbuftrue ? see issue #4583
pmlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, rval, gval, bval, isRaw);
if (pmhlistener) {
// Updates the HistogramRGBArea
pmhlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, rval, gval, bval);
}
}
cropHandler.cimg.unlock ();
}
}
}
@@ -1379,7 +1381,7 @@ void CropWindow::expose (Cairo::RefPtr<Cairo::Context> cr)
break;
}
}
bool useBgColor = (state == SNormal);
bool useBgColor = (state == SNormal || state == SDragPicker || state == SDeletePicker);
if (cropHandler.cropPixbuf) {
imgW = cropHandler.cropPixbuf->get_width ();

View File

@@ -51,15 +51,15 @@ void CursorManager::init (Glib::RefPtr<Gdk::Window> mainWindow)
cAdd = Gdk::Cursor::create (display, Gdk::PLUS);
cWait = Gdk::Cursor::create (display, Gdk::CLOCK);
Glib::RefPtr<Gdk::Pixbuf> hand = RTImage::createFromFile ("crosshair.png");
Glib::RefPtr<Gdk::Pixbuf> close_hand = RTImage::createFromFile ("hand-closed.png");
Glib::RefPtr<Gdk::Pixbuf> wbpick = RTImage::createFromFile ("color-picker.png");
Glib::RefPtr<Gdk::Pixbuf> cpick = RTImage::createFromFile ("color-picker-add.png");
Glib::RefPtr<Gdk::Pixbuf> hand = RTImage::createFromFile ("crosshair-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> close_hand = RTImage::createFromFile ("hand-closed-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> wbpick = RTImage::createFromFile ("color-picker-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> cpick = RTImage::createFromFile ("color-picker-add-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> empty = RTImage::createFromFile ("empty.png");
Glib::RefPtr<Gdk::Pixbuf> move2D = RTImage::createFromFile ("node-move-xy.png");
Glib::RefPtr<Gdk::Pixbuf> move1DH = RTImage::createFromFile ("node-move-x.png");
Glib::RefPtr<Gdk::Pixbuf> move1DV = RTImage::createFromFile ("node-move-y.png");
Glib::RefPtr<Gdk::Pixbuf> moveRotate = RTImage::createFromFile ("move-rotate.png");
Glib::RefPtr<Gdk::Pixbuf> move2D = RTImage::createFromFile ("node-move-xy-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> move1DH = RTImage::createFromFile ("node-move-x-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> move1DV = RTImage::createFromFile ("node-move-y-hicontrast.png");
Glib::RefPtr<Gdk::Pixbuf> moveRotate = RTImage::createFromFile ("rotate-aroundnode-hicontrast.png");
cHand = hand ? Gdk::Cursor::create (cAdd->get_display(), hand, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2);
cClosedHand = close_hand ? Gdk::Cursor::create (cAdd->get_display(), close_hand, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2);

View File

@@ -58,7 +58,7 @@ FileBrowserEntry::FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname)
if (!iconsLoaded) {
editedIcon = RTImage::createFromFile ("tick-small.png");
recentlySavedIcon = RTImage::createFromFile ("save-small.png");
enqueuedIcon = RTImage::createFromFile ("gears.png");
enqueuedIcon = RTImage::createFromFile ("gears-small.png");
hdr = RTImage::createFromFile ("filetype-hdr.png");
ps = RTImage::createFromFile ("filetype-ps.png");
iconsLoaded = true;

View File

@@ -42,9 +42,9 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry)
{
if (!iconsLoaded) {
unRankIcon = RTImage::createFromPng ("star-hollow-small.png");
rankIcon = RTImage::createFromPng ("star-gold-small.png");
gRankIcon = RTImage::createFromPng ("star-small.png");
unRankIcon = RTImage::createFromPng ("star-hollow-narrow.png");
rankIcon = RTImage::createFromPng ("star-gold-narrow.png");
gRankIcon = RTImage::createFromPng ("star-narrow.png");
trashIcon = RTImage::createFromPng ("trash-small.png");
unTrashIcon = RTImage::createFromPng ("trash-remove-small.png");
processIcon = RTImage::createFromPng ("gears-small.png");

View File

@@ -139,10 +139,10 @@ LensProfilePanel::LensProfilePanel () :
lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged));
lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged));
corrOff->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
corrLensfunAuto->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
corrLensfunManual->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
corrLcpFile->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
corrOff->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOff));
corrLensfunAuto->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAuto));
corrLensfunManual->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManual));
corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile));
corrUnchanged->hide();
@@ -499,84 +499,88 @@ void LensProfilePanel::onLensfunLensChanged()
}
void LensProfilePanel::onCorrModeChanged()
void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged)
{
Glib::ustring mode;
if (rbChanged->get_active()) {
// because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one
Glib::ustring mode;
if (corrOff->get_active()) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
ckbUseDist->set_sensitive(false);
ckbUseVign->set_sensitive(false);
ckbUseCA->set_sensitive(false);
mode = M("GENERAL_NONE");
} else if (corrLensfunAuto->get_active()) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
useDistChanged = true;
useVignChanged = true;
if (rbChanged == corrOff) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
ckbUseDist->set_sensitive(true);
ckbUseVign->set_sensitive(true);
ckbUseCA->set_sensitive(false);
ckbUseDist->set_sensitive(false);
ckbUseVign->set_sensitive(false);
ckbUseCA->set_sensitive(false);
if (metadata) {
bool b = disableListener();
const LFDatabase *db = LFDatabase::getInstance();
LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel());
LFLens l = db->findLens(c, metadata->getLens());
setLensfunCamera(c.getMake(), c.getModel());
setLensfunLens(l.getLens());
if (b) {
enableListener();
mode = M("GENERAL_NONE");
} else if (rbChanged == corrLensfunAuto) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
useDistChanged = true;
useVignChanged = true;
ckbUseDist->set_sensitive(true);
ckbUseVign->set_sensitive(true);
ckbUseCA->set_sensitive(false);
if (metadata) {
bool b = disableListener();
const LFDatabase *db = LFDatabase::getInstance();
LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel());
LFLens l = db->findLens(c, metadata->getLens());
setLensfunCamera(c.getMake(), c.getModel());
setLensfunLens(l.getLens());
if (b) {
enableListener();
}
}
mode = M("LENSPROFILE_CORRECTION_AUTOMATCH");
} else if (rbChanged == corrLensfunManual) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
useDistChanged = true;
useVignChanged = true;
ckbUseDist->set_sensitive(true);
ckbUseVign->set_sensitive(true);
ckbUseCA->set_sensitive(false);
mode = M("LENSPROFILE_CORRECTION_MANUAL");
} else if (rbChanged == corrLcpFile) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
useDistChanged = true;
useVignChanged = true;
updateDisabled(true);
mode = M("LENSPROFILE_CORRECTION_LCPFILE");
} else if (rbChanged == corrUnchanged) {
useLensfunChanged = false;
lensfunAutoChanged = false;
lcpFileChanged = false;
lensfunCameraChanged = false;
lensfunLensChanged = false;
ckbUseDist->set_sensitive(true);
ckbUseVign->set_sensitive(true);
ckbUseCA->set_sensitive(true);
mode = M("GENERAL_UNCHANGED");
}
mode = M("LENSPROFILE_CORRECTION_AUTOMATCH");
} else if (corrLensfunManual->get_active()) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
useDistChanged = true;
useVignChanged = true;
lcModeChanged = true;
updateLensfunWarning();
ckbUseDist->set_sensitive(true);
ckbUseVign->set_sensitive(true);
ckbUseCA->set_sensitive(false);
mode = M("LENSPROFILE_CORRECTION_MANUAL");
} else if (corrLcpFile->get_active()) {
useLensfunChanged = true;
lensfunAutoChanged = true;
lcpFileChanged = true;
useDistChanged = true;
useVignChanged = true;
updateDisabled(true);
mode = M("LENSPROFILE_CORRECTION_LCPFILE");
} else if (corrUnchanged->get_active()) {
useLensfunChanged = false;
lensfunAutoChanged = false;
lcpFileChanged = false;
lensfunCameraChanged = false;
lensfunLensChanged = false;
ckbUseDist->set_sensitive(true);
ckbUseVign->set_sensitive(true);
ckbUseCA->set_sensitive(true);
mode = M("GENERAL_UNCHANGED");
}
lcModeChanged = true;
updateLensfunWarning();
if (listener) {
listener->panelChanged(EvLensCorrMode, mode);
if (listener) {
listener->panelChanged(EvLensCorrMode, mode);
}
}
}

View File

@@ -105,7 +105,7 @@ public:
void onLensfunCameraChanged();
void onLensfunLensChanged();
void onCorrModeChanged();
void onCorrModeChanged(const Gtk::RadioButton *rbChanged);
};
#endif

View File

@@ -224,24 +224,30 @@ void Navigator::setInvalid (int fullWidth, int fullHeight)
LAB_L->set_text (M("NAVIGATOR_NA"));
}
void Navigator::getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB)
void Navigator::getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw)
{
switch (currentRGBUnit) {
case (Options::NavigatorUnit::R0_1):
sR = Glib::ustring::format(std::fixed, std::setprecision(4), r / 255.f);
sG = Glib::ustring::format(std::fixed, std::setprecision(4), g / 255.f);
sB = Glib::ustring::format(std::fixed, std::setprecision(4), b / 255.f);
break;
case (Options::NavigatorUnit::R0_255):
if (isRaw) {
sR = Glib::ustring::format(std::fixed, std::setprecision(0), r);
sG = Glib::ustring::format(std::fixed, std::setprecision(0), g);
sB = Glib::ustring::format(std::fixed, std::setprecision(0), b);
break;
case (Options::NavigatorUnit::PERCENT):
default:
sR = Glib::ustring::format(std::fixed, std::setprecision(1), r * 100.f / 255.f) + Glib::ustring("%");
sG = Glib::ustring::format(std::fixed, std::setprecision(1), g * 100.f / 255.f) + Glib::ustring("%");
sB = Glib::ustring::format(std::fixed, std::setprecision(1), b * 100.f / 255.f) + Glib::ustring("%");
} else {
switch (currentRGBUnit) {
case (Options::NavigatorUnit::R0_1):
sR = Glib::ustring::format(std::fixed, std::setprecision(4), r / 255.f);
sG = Glib::ustring::format(std::fixed, std::setprecision(4), g / 255.f);
sB = Glib::ustring::format(std::fixed, std::setprecision(4), b / 255.f);
break;
case (Options::NavigatorUnit::R0_255):
sR = Glib::ustring::format(std::fixed, std::setprecision(0), r);
sG = Glib::ustring::format(std::fixed, std::setprecision(0), g);
sB = Glib::ustring::format(std::fixed, std::setprecision(0), b);
break;
case (Options::NavigatorUnit::PERCENT):
default:
sR = Glib::ustring::format(std::fixed, std::setprecision(1), r * 100.f / 255.f) + Glib::ustring("%");
sG = Glib::ustring::format(std::fixed, std::setprecision(1), g * 100.f / 255.f) + Glib::ustring("%");
sB = Glib::ustring::format(std::fixed, std::setprecision(1), b * 100.f / 255.f) + Glib::ustring("%");
}
}
}
@@ -274,34 +280,42 @@ void Navigator::getLABText (float l, float a, float b, Glib::ustring &sL, Glib::
}
// if !validPos then x/y contain the full image size
void Navigator::pointerMoved (bool validPos, Glib::ustring profile, Glib::ustring profileW, int x, int y, int r, int g, int b)
void Navigator::pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw)
{
if (!validPos) {
setInvalid (x, y);
} else {
Glib::ustring s1, s2, s3;
float h, s, v;
float LAB_a, LAB_b, LAB_l;
position->set_text (Glib::ustring::compose ("x: %1, y: %2", x, y));
getRGBText (r, g, b, s1, s2, s3);
getRGBText (r, g, b, s1, s2, s3, isRaw);
R->set_text (s1);
G->set_text (s2);
B->set_text (s3);
if (isRaw) {
H->set_text ("--");
S->set_text ("--");
V->set_text ("--");
LAB_L->set_text ("--");
LAB_A->set_text ("--");
LAB_B->set_text ("--");
} else {
float h, s, v;
float LAB_a, LAB_b, LAB_l;
Color::rgb2hsv01(r / 255.f, g / 255.f, b / 255.f, h, s, v);
getHSVText (h, s, v, s1, s2, s3);
H->set_text (s1);
S->set_text (s2);
V->set_text (s3);
Color::rgb2hsv01(r / 255.f, g / 255.f, b / 255.f, h, s, v);
getHSVText (h, s, v, s1, s2, s3);
H->set_text (s1);
S->set_text (s2);
V->set_text (s3);
Color::rgb2lab01(profile, profileW, r / 255.f, g / 255.f, b / 255.f, LAB_l, LAB_a, LAB_b, options.rtSettings.HistogramWorking); // TODO: Really sure this function works?
getLABText (LAB_l, LAB_a, LAB_b, s1, s2, s3);
LAB_L->set_text (s1);
LAB_A->set_text (s2);
LAB_B->set_text (s3);
Color::rgb2lab01(profile, profileW, r / 255.f, g / 255.f, b / 255.f, LAB_l, LAB_a, LAB_b, options.rtSettings.HistogramWorking); // TODO: Really sure this function works?
getLABText (LAB_l, LAB_a, LAB_b, s1, s2, s3);
LAB_L->set_text (s1);
LAB_A->set_text (s2);
LAB_B->set_text (s3);
}
}
}

View File

@@ -55,10 +55,10 @@ public:
// pointermotionlistener interface
// void pointerMoved (bool validPos, int x, int y, int r, int g, int b);
void pointerMoved (bool validPos, Glib::ustring profile, Glib::ustring profileW, int x, int y, int r, int g, int b);
void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false);
void setInvalid (int fullWidth = -1, int fullHeight = -1);
void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB);
void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false);
void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV);
void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB);

View File

@@ -27,9 +27,9 @@ protected:
public:
virtual ~PointerMotionListener() {}
virtual void pointerMoved (bool validPos, Glib::ustring profile, Glib::ustring profileW, int x, int y, int r, int g, int b) {}
virtual void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false) {}
virtual void toggleFreeze () {}
virtual void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB) { sR = "--"; sG = "--"; sB = "--"; }
virtual void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false) { sR = "--"; sG = "--"; sB = "--"; }
virtual void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV) { sH = "--"; sS = "--"; sV = "--"; }
virtual void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB) { sL = "--"; sA = "--"; sB = "--"; }

View File

@@ -49,13 +49,6 @@ Preferences::Preferences(RTWindow *rtwindow)
moptions.copyFrom(&options);
/*
* Do not increase height, since it's not visible on e.g. smaller netbook
* screens. The default height is about 620 pixels currently, that's why
* we do not set the height anymore. Netbook users will most certainly set
* a smaller font, so they'll be able to shrink the Preferences window and
* close it.
*/
set_size_request(650, -1);
set_default_size(options.preferencesWidth, options.preferencesHeight);
@@ -69,9 +62,9 @@ Preferences::Preferences(RTWindow *rtwindow)
mainBox->set_spacing(8);
#endif
//GTK318
//set_has_separator (false);
Gtk::Notebook* nb = Gtk::manage(new Gtk::Notebook());
nb->set_scrollable(true);
nb->set_name("PrefNotebook");
mainBox->pack_start(*nb);
@@ -87,16 +80,16 @@ Preferences::Preferences(RTWindow *rtwindow)
get_action_area()->pack_end(*ok);
get_action_area()->pack_end(*cancel);
nb->append_page(*getGeneralPanel(), M("PREFERENCES_TAB_GENERAL"));
nb->append_page(*getProcParamsPanel(), M("PREFERENCES_TAB_IMPROC"));
nb->append_page(*getDynProfilePanel(), M("PREFERENCES_TAB_DYNAMICPROFILE"));
nb->append_page(*getFileBrowserPanel(), M("PREFERENCES_TAB_BROWSER"));
nb->append_page(*getColorManagementPanel(), M("PREFERENCES_TAB_COLORMGR"));
nb->append_page(*getBatchProcPanel(), M("PREFERENCES_BATCH_PROCESSING"));
nb->append_page(*getPerformancePanel(), M("PREFERENCES_TAB_PERFORMANCE"));
nb->append_page(*getGeneralPanel(), M("PREFERENCES_TAB_GENERAL"));
nb->append_page(*getImageProcessingPanel(), M("PREFERENCES_TAB_IMPROC"));
nb->append_page(*getDynamicProfilePanel(), M("PREFERENCES_TAB_DYNAMICPROFILE"));
nb->append_page(*getFileBrowserPanel(), M("PREFERENCES_TAB_BROWSER"));
nb->append_page(*getColorManPanel(), M("PREFERENCES_TAB_COLORMGR"));
nb->append_page(*getBatchProcPanel(), M("PREFERENCES_BATCH_PROCESSING"));
nb->append_page(*getPerformancePanel(), M("PREFERENCES_TAB_PERFORMANCE"));
// Sounds only on Windows and Linux
#if defined(WIN32) || defined(__linux__)
nb->append_page(*getSoundPanel(), M("PREFERENCES_TAB_SOUND"));
nb->append_page(*getSoundsPanel(), M("PREFERENCES_TAB_SOUND"));
#endif
nb->set_current_page(0);
@@ -131,8 +124,10 @@ int Preferences::getThemeRowNumber(Glib::ustring& longThemeFName)
Gtk::Widget* Preferences::getBatchProcPanel()
{
swBatchProc = Gtk::manage(new Gtk::ScrolledWindow());
swBatchProc->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::VBox* mvbpp = Gtk::manage(new Gtk::VBox());
Gtk::VBox* vbBatchProc = Gtk::manage (new Gtk::VBox ());
Gtk::ScrolledWindow* behscrollw = Gtk::manage(new Gtk::ScrolledWindow());
behscrollw->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
@@ -141,8 +136,7 @@ Gtk::Widget* Preferences::getBatchProcPanel()
vbbeh->pack_start(*behscrollw, Gtk::PACK_EXPAND_WIDGET);
Gtk::Frame* behFrame = Gtk::manage(new Gtk::Frame(M("PREFERENCES_BEHAVIOR")));
behFrame->add(*vbbeh);
//mvbpp->pack_start (*behFrame);
mvbpp->pack_start(*behFrame, Gtk::PACK_EXPAND_WIDGET, 4);
vbBatchProc->pack_start (*behFrame, Gtk::PACK_EXPAND_WIDGET, 4);
Gtk::TreeView* behTreeView = Gtk::manage(new Gtk::TreeView());
behscrollw->add(*behTreeView);
@@ -239,7 +233,6 @@ Gtk::Widget* Preferences::getBatchProcPanel()
appendBehavList(mi, M("TP_LOCALCONTRAST_AMOUNT"), ADDSET_LOCALCONTRAST_AMOUNT, false);
appendBehavList(mi, M("TP_LOCALCONTRAST_DARKNESS"), ADDSET_LOCALCONTRAST_DARKNESS, false);
appendBehavList(mi, M("TP_LOCALCONTRAST_LIGHTNESS"), ADDSET_LOCALCONTRAST_LIGHTNESS, false);
mi = behModel->append();
mi->set_value(behavColumns.label, M("TP_SHARPENEDGE_LABEL"));
@@ -254,7 +247,6 @@ Gtk::Widget* Preferences::getBatchProcPanel()
mi = behModel->append();
mi->set_value(behavColumns.label, M("TP_DIRPYRDENOISE_LABEL"));
//appendBehavList (mi, M("TP_DIRPYRDENOISE_LUMA")+", "+M("TP_DIRPYRDENOISE_CHROMA"), ADDSET_DIRPYRDN_CHLUM, true);
appendBehavList (mi, M ("TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING"), ADDSET_DIRPYRDN_LUMA, true);
appendBehavList (mi, M ("TP_DIRPYRDENOISE_LUMINANCE_DETAIL"), ADDSET_DIRPYRDN_LUMDET, true);
appendBehavList (mi, M ("TP_DIRPYRDENOISE_CHROMINANCE_MASTER"), ADDSET_DIRPYRDN_CHROMA, true);
@@ -435,15 +427,15 @@ Gtk::Widget* Preferences::getBatchProcPanel()
behSetAll->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::behSetAllPressed));
Gtk::HBox* buttonpanel1 = Gtk::manage(new Gtk::HBox());
//buttonpanel1->set_spacing(8);
buttonpanel1->pack_end(*behSetAll, Gtk::PACK_SHRINK, 4);
buttonpanel1->pack_end(*behAddAll, Gtk::PACK_SHRINK, 4);
vbbeh->pack_start(*buttonpanel1, Gtk::PACK_SHRINK, 4);
chOverwriteOutputFile = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_OVERWRITEOUTPUTFILE")));
mvbpp->pack_start(*chOverwriteOutputFile, Gtk::PACK_SHRINK, 4);
vbBatchProc->pack_start (*chOverwriteOutputFile, Gtk::PACK_SHRINK, 4);
return mvbpp;
swBatchProc->add(*vbBatchProc);
return swBatchProc;
}
void Preferences::appendBehavList(Gtk::TreeModel::iterator& parent, Glib::ustring label, int id, bool set)
@@ -475,17 +467,24 @@ void Preferences::behSetRadioToggled(const Glib::ustring& path)
}
Gtk::Widget *Preferences::getDynProfilePanel()
Gtk::Widget *Preferences::getDynamicProfilePanel()
{
swDynamicProfile = Gtk::manage(new Gtk::ScrolledWindow());
swDynamicProfile->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
dynProfilePanel = Gtk::manage(new DynamicProfilePanel());
return dynProfilePanel;
swDynamicProfile->add(*dynProfilePanel);
return swDynamicProfile;
}
Gtk::Widget* Preferences::getProcParamsPanel()
Gtk::Widget* Preferences::getImageProcessingPanel ()
{
swImageProcessing = Gtk::manage(new Gtk::ScrolledWindow());
swImageProcessing->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::VBox* mvbpp = Gtk::manage(new Gtk::VBox());
Gtk::VBox* vbImageProcessing = Gtk::manage (new Gtk::VBox ());
Gtk::Frame* fpp = Gtk::manage(new Gtk::Frame(M("PREFERENCES_IMPROCPARAMS")));
Gtk::VBox* vbpp = Gtk::manage(new Gtk::VBox());
@@ -512,7 +511,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
bpconn = useBundledProfiles->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::bundledProfilesChanged));
vbpp->pack_start(*useBundledProfiles, Gtk::PACK_SHRINK, 4);
fpp->add(*vbpp);
mvbpp->pack_start(*fpp, Gtk::PACK_SHRINK, 4);
vbImageProcessing->pack_start (*fpp, Gtk::PACK_SHRINK, 4);
// Custom profile builder box
Gtk::Frame* cpfrm = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CUSTPROFBUILD")));
@@ -530,7 +529,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
cpbt->attach(*cpltypelab, 0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2);
cpbt->attach(*custProfBuilderLabelType, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL | Gtk::SHRINK, Gtk::SHRINK, 2, 2);
cpfrm->add(*cpbt);
mvbpp->pack_start(*cpfrm, Gtk::PACK_SHRINK, 4);
vbImageProcessing->pack_start (*cpfrm, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fdp = Gtk::manage(new Gtk::Frame(M("PREFERENCES_PROFILEHANDLING")));
Gtk::Table* vbdp = Gtk::manage(new Gtk::Table(2, 2));
@@ -548,7 +547,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
vbdp->attach(*lplab, 0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2);
vbdp->attach(*loadParamsPreference, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL | Gtk::SHRINK, Gtk::SHRINK, 2, 2);
fdp->add(*vbdp);
mvbpp->pack_start(*fdp, Gtk::PACK_SHRINK, 4);
vbImageProcessing->pack_start (*fdp, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fmip = Gtk::manage(new Gtk::Frame(M("PREFERENCES_MIP")));
Gtk::HBox* hbmip = Gtk::manage(new Gtk::HBox(false, 4));
@@ -563,7 +562,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
hbmip->pack_start(*cmip);
fmip->add(*hbmip);
hbmip->set_border_width(4);
mvbpp->pack_start(*fmip, Gtk::PACK_SHRINK, 4);
vbImageProcessing->pack_start(*fmip, Gtk::PACK_SHRINK, 4);
// Gtk::Frame* fdf = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_DARKFRAME")) );
// Gtk::HBox* hb42 = Gtk::manage (new Gtk::HBox ());
@@ -584,8 +583,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
dirgrid->attach_next_to(*darkFrameDir, *dfLab, Gtk::POS_RIGHT, 1, 1);
dirgrid->attach_next_to(*dfLabel, *darkFrameDir, Gtk::POS_RIGHT, 1, 1);
//dfconn = darkFrameDir->signal_file_set().connect ( sigc::mem_fun(*this, &Preferences::darkFrameChanged), true);
dfconn = darkFrameDir->signal_selection_changed().connect(sigc::mem_fun(*this, &Preferences::darkFrameChanged)); //, true);
dfconn = darkFrameDir->signal_selection_changed().connect ( sigc::mem_fun (*this, &Preferences::darkFrameChanged));
// FLATFIELD
Gtk::Label *ffLab = Gtk::manage(new Gtk::Label(M("PREFERENCES_FLATFIELDSDIR") + ":"));
@@ -599,8 +597,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
dirgrid->attach_next_to(*flatFieldDir, *ffLab, Gtk::POS_RIGHT, 1, 1);
dirgrid->attach_next_to(*ffLabel, *flatFieldDir, Gtk::POS_RIGHT, 1, 1);
//ffconn = flatFieldDir->signal_file_set().connect ( sigc::mem_fun(*this, &Preferences::flatFieldChanged), true);
ffconn = flatFieldDir->signal_selection_changed().connect(sigc::mem_fun(*this, &Preferences::flatFieldChanged)); //, true);
ffconn = flatFieldDir->signal_selection_changed().connect ( sigc::mem_fun (*this, &Preferences::flatFieldChanged));
//Cluts Dir
Gtk::Label *clutsDirLabel = Gtk::manage(new Gtk::Label(M("PREFERENCES_CLUTSDIR") + ":"));
@@ -615,7 +612,7 @@ Gtk::Widget* Preferences::getProcParamsPanel()
dirgrid->attach_next_to(*clutsRestartNeeded, *clutsDir, Gtk::POS_RIGHT, 1, 1);
cdf->add(*dirgrid);
mvbpp->pack_start(*cdf, Gtk::PACK_SHRINK, 4);
vbImageProcessing->pack_start (*cdf, Gtk::PACK_SHRINK, 4 );
// Crop
Gtk::Frame *cropframe = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CROP")));
@@ -631,15 +628,19 @@ Gtk::Widget* Preferences::getProcParamsPanel()
cropAutoFit = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_CROP_AUTO_FIT")));
cropvb->pack_start(*cropAutoFit);
cropframe->add(*cropvb);
mvbpp->pack_start(*cropframe, Gtk::PACK_SHRINK, 4);
vbImageProcessing->pack_start(*cropframe, Gtk::PACK_SHRINK, 4);
return mvbpp;
swImageProcessing->add(*vbImageProcessing);
return swImageProcessing;
}
Gtk::Widget* Preferences::getPerformancePanel()
{
Gtk::VBox* mainContainer = Gtk::manage(new Gtk::VBox());
mainContainer->set_spacing(4);
swPerformance = Gtk::manage(new Gtk::ScrolledWindow());
swPerformance->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::VBox* vbPerformance = Gtk::manage ( new Gtk::VBox () );
vbPerformance->set_spacing (4);
Gtk::Frame* fprevdemo = Gtk::manage(new Gtk::Frame(M("PREFERENCES_PREVDEMO")));
Gtk::HBox* hbprevdemo = Gtk::manage(new Gtk::HBox(false, 4));
@@ -651,7 +652,7 @@ Gtk::Widget* Preferences::getPerformancePanel()
hbprevdemo->pack_start(*lprevdemo, Gtk::PACK_SHRINK);
hbprevdemo->pack_start(*cprevdemo);
fprevdemo->add(*hbprevdemo);
mainContainer->pack_start(*fprevdemo, Gtk::PACK_SHRINK, 4);
vbPerformance->pack_start (*fprevdemo, Gtk::PACK_SHRINK, 4);
Gtk::Frame* ftiffserialize = Gtk::manage(new Gtk::Frame(M("PREFERENCES_SERIALIZE_TIFF_READ")));
Gtk::HBox* htiffserialize = Gtk::manage(new Gtk::HBox(false, 4));
@@ -659,7 +660,7 @@ Gtk::Widget* Preferences::getPerformancePanel()
ctiffserialize->set_tooltip_text(M("PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP"));
htiffserialize->pack_start(*ctiffserialize);
ftiffserialize->add(*htiffserialize);
mainContainer->pack_start(*ftiffserialize, Gtk::PACK_SHRINK, 4);
vbPerformance->pack_start (*ftiffserialize, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fclut = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CLUTSCACHE")));
Gtk::HBox* clutCacheSizeHB = Gtk::manage(new Gtk::HBox());
@@ -677,7 +678,7 @@ Gtk::Widget* Preferences::getPerformancePanel()
clutCacheSizeHB->pack_start(*CLUTLl, Gtk::PACK_SHRINK, 0);
clutCacheSizeHB->pack_end(*clutCacheSizeSB, Gtk::PACK_SHRINK, 0);
fclut->add(*clutCacheSizeHB);
mainContainer->pack_start(*fclut, Gtk::PACK_SHRINK, 4);
vbPerformance->pack_start (*fclut, Gtk::PACK_SHRINK, 4);
Gtk::Frame* finspect = Gtk::manage(new Gtk::Frame(M("PREFERENCES_INSPECT_LABEL")));
Gtk::HBox* maxIBuffersHB = Gtk::manage(new Gtk::HBox());
@@ -704,7 +705,7 @@ Gtk::Widget* Preferences::getPerformancePanel()
insphb->pack_start(*thumbnailInspectorMode);
inspectorvb->pack_start(*insphb);
finspect->add (*inspectorvb);
mainContainer->pack_start(*finspect, Gtk::PACK_SHRINK, 4);
vbPerformance->pack_start (*finspect, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fdenoise = Gtk::manage(new Gtk::Frame(M("PREFERENCES_NOISE")));
Gtk::VBox* vbdenoise = Gtk::manage(new Gtk::VBox(Gtk::PACK_SHRINK, 4));
@@ -784,7 +785,7 @@ Gtk::Widget* Preferences::getPerformancePanel()
// vbdenoise->pack_start (*cbdaubech, Gtk::PACK_SHRINK);
// --->
fdenoise->add(*vbdenoise);
mainContainer->pack_start(*fdenoise, Gtk::PACK_SHRINK, 4);
vbPerformance->pack_start (*fdenoise, Gtk::PACK_SHRINK, 4);
/*
Gtk::Frame* flocalajust = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_LOCAL")));
Gtk::HBox* hblocalajust = Gtk::manage (new Gtk::HBox (false, 4));
@@ -800,14 +801,17 @@ Gtk::Widget* Preferences::getPerformancePanel()
mainContainer->pack_start (*flocalajust, Gtk::PACK_SHRINK, 4);
*/
return mainContainer;
swPerformance->add(*vbPerformance);
return swPerformance;
}
Gtk::Widget* Preferences::getColorManagementPanel()
Gtk::Widget* Preferences::getColorManPanel ()
{
swColorMan = Gtk::manage(new Gtk::ScrolledWindow());
swColorMan->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::VBox* mvbcm = Gtk::manage(new Gtk::VBox());
mvbcm->set_spacing(4);
Gtk::VBox* vbColorMan = Gtk::manage (new Gtk::VBox ());
vbColorMan->set_spacing (4);
iccDir = Gtk::manage(new MyFileChooserButton(M("PREFERENCES_ICCDIR"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
setExpandAlignProperties(iccDir, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
@@ -827,7 +831,7 @@ Gtk::Widget* Preferences::getColorManagementPanel()
iccDir->signal_selection_changed().connect(sigc::mem_fun(this, &Preferences::iccDirChanged));
mvbcm->pack_start(*iccdgrid, Gtk::PACK_SHRINK);
vbColorMan->pack_start (*iccdgrid, Gtk::PACK_SHRINK);
//------------------------- MONITOR ----------------------
@@ -867,11 +871,9 @@ Gtk::Widget* Preferences::getColorManagementPanel()
setExpandAlignProperties(monBPC, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
monBPC->set_active(true);
//#if defined(WIN32) // Auto-detection not implemented for Linux, see issue 851
cbAutoMonProfile = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_AUTOMONPROFILE")));
setExpandAlignProperties(cbAutoMonProfile, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
autoMonProfileConn = cbAutoMonProfile->signal_toggled().connect(sigc::mem_fun(*this, &Preferences::autoMonProfileToggled));
//#endif
int row = 0;
gmonitor->attach(*mplabel, 0, row, 1, 1);
@@ -883,22 +885,18 @@ Gtk::Widget* Preferences::getColorManagementPanel()
gmonitor->attach(*monProfile, 1, row, 1, 1);
#endif
++row;
//#if defined(WIN32)
gmonitor->attach(*cbAutoMonProfile, 1, row, 1, 1);
++row;
//#endif
gmonitor->attach(*milabel, 0, row, 1, 1);
gmonitor->attach(*monIntent, 1, row, 1, 1);
++row;
gmonitor->attach(*monBPC, 0, row, 2, 1);
//#if defined(WIN32)
autoMonProfileToggled();
//#endif
fmonitor->add(*gmonitor);
mvbcm->pack_start(*fmonitor, Gtk::PACK_SHRINK);
vbColorMan->pack_start (*fmonitor, Gtk::PACK_SHRINK);
//------------------------- PRINTER ----------------------
@@ -943,22 +941,23 @@ Gtk::Widget* Preferences::getColorManagementPanel()
++row;
gprinter->attach(*prtBPC, 0, row, 2, 1);
//#if defined(WIN32)
autoMonProfileToggled();
//#endif
fprinter->add(*gprinter);
mvbcm->pack_start(*fprinter, Gtk::PACK_SHRINK);
return mvbcm;
vbColorMan->pack_start (*fprinter, Gtk::PACK_SHRINK);
swColorMan->add(*vbColorMan);
return swColorMan;
}
Gtk::Widget* Preferences::getGeneralPanel()
{
swGeneral = Gtk::manage(new Gtk::ScrolledWindow());
swGeneral->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::Grid* mvbsd = Gtk::manage(new Gtk::Grid());
mvbsd->set_column_spacing(4);
mvbsd->set_row_spacing(4);
Gtk::Grid* vbGeneral = Gtk::manage ( new Gtk::Grid () );
vbGeneral->set_column_spacing (4);
vbGeneral->set_row_spacing (4);
Gtk::Frame* fworklflow = Gtk::manage(new Gtk::Frame(M("PREFERENCES_WORKFLOW")));
setExpandAlignProperties(fworklflow, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
@@ -1041,7 +1040,7 @@ Gtk::Widget* Preferences::getGeneralPanel()
fworklflow->add(*workflowGrid);
mvbsd->attach_next_to(*fworklflow, Gtk::POS_TOP, 2, 1);
vbGeneral->attach_next_to (*fworklflow, Gtk::POS_TOP, 2, 1);
// ---------------------------------------------
@@ -1076,7 +1075,7 @@ Gtk::Widget* Preferences::getGeneralPanel()
langGrid->attach_next_to(*languages, *langlab, Gtk::POS_RIGHT, 1, 1);
langGrid->attach_next_to(*langw, *languages, Gtk::POS_RIGHT, 1, 1);
flang->add(*langGrid);
mvbsd->attach_next_to(*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
vbGeneral->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
// ---------------------------------------------
@@ -1093,7 +1092,7 @@ Gtk::Widget* Preferences::getGeneralPanel()
localGrid->attach_next_to(*ckbShowdelimspot, Gtk::POS_LEFT, 3, 1);
flocal->add(*localGrid);
mvbsd->attach_next_to(*flocal, *flang, Gtk::POS_BOTTOM, 2, 1);
vbGeneral->attach_next_to(*flocal, *flang, Gtk::POS_BOTTOM, 2, 1);
//--------------------------------------------------
@@ -1166,7 +1165,7 @@ Gtk::Widget* Preferences::getGeneralPanel()
themeGrid->attach_next_to(*butNavGuideCol, *navGuideLabel, Gtk::POS_RIGHT, 1, 1);
ftheme->add(*themeGrid);
mvbsd->attach_next_to(*ftheme, *flocal, Gtk::POS_BOTTOM, 2, 1);
vbGeneral->attach_next_to (*ftheme, *flocal, Gtk::POS_BOTTOM, 2, 1);
// ---------------------------------------------
@@ -1199,7 +1198,7 @@ Gtk::Widget* Preferences::getGeneralPanel()
clipGrid->attach_next_to(*shThresh, *shl, Gtk::POS_RIGHT, 1, 1);
fclip->add(*clipGrid);
mvbsd->attach_next_to(*fclip, *ftheme, Gtk::POS_BOTTOM, 1, 1);
vbGeneral->attach_next_to (*fclip, *ftheme, Gtk::POS_BOTTOM, 1, 1);
// ---------------------------------------------
@@ -1227,7 +1226,7 @@ Gtk::Widget* Preferences::getGeneralPanel()
navigationGrid->attach_next_to(*rememberZoomPanCheckbutton, *panFactorLabel, Gtk::POS_BOTTOM, 2, 1);
fnav->add(*navigationGrid);
mvbsd->attach_next_to(*fnav, *fclip, Gtk::POS_RIGHT, 1, 1);
vbGeneral->attach_next_to (*fnav, *fclip, Gtk::POS_RIGHT, 1, 1);
// ---------------------------------------------
@@ -1290,19 +1289,22 @@ Gtk::Widget* Preferences::getGeneralPanel()
#endif
fdg->add(*externaleditorGrid);
mvbsd->attach_next_to(*fdg, *fclip, Gtk::POS_BOTTOM, 2, 1);
vbGeneral->attach_next_to (*fdg, *fclip, Gtk::POS_BOTTOM, 2, 1);
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;
swGeneral->add(*vbGeneral);
return swGeneral;
}
Gtk::Widget* Preferences::getFileBrowserPanel()
{
swFileBrowser = Gtk::manage(new Gtk::ScrolledWindow());
swFileBrowser->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::VBox* mvbfb = Gtk::manage(new Gtk::VBox());
Gtk::VBox* vbFileBrowser = Gtk::manage ( new Gtk::VBox () );
Gtk::Frame* fsd = Gtk::manage(new Gtk::Frame(M("PREFERENCES_STARTUPIMDIR")));
@@ -1331,7 +1333,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel()
vbsd->pack_start(*otherbox, Gtk::PACK_SHRINK, 0);
fsd->add(*vbsd);
mvbfb->pack_start(*fsd, Gtk::PACK_SHRINK, 4);
vbFileBrowser->pack_start (*fsd, Gtk::PACK_SHRINK, 4);
sdselect->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::selectStartupDir));
@@ -1488,11 +1490,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel()
hb6->pack_start(*fre);
hb6->set_spacing(4);
mvbfb->pack_start(*hb6, Gtk::PACK_SHRINK, 4);
// mvbfb->pack_start (*fro, Gtk::PACK_SHRINK, 4);
// mvbfb->pack_start (*fre);
// mvbfb->pack_start (*frc, Gtk::PACK_SHRINK, 4);
vbFileBrowser->pack_start (*hb6, Gtk::PACK_SHRINK, 4);
addExt->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::addExtPressed));
delExt->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::delExtPressed));
@@ -1504,22 +1502,26 @@ Gtk::Widget* Preferences::getFileBrowserPanel()
clearmip->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::clearmipPressed));
clearAll->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::clearAllPressed));
return mvbfb;
swFileBrowser->add(*vbFileBrowser);
return swFileBrowser;
}
Gtk::Widget* Preferences::getSoundPanel()
Gtk::Widget* Preferences::getSoundsPanel ()
{
Gtk::VBox* pSnd = new Gtk::VBox();
swSounds = Gtk::manage(new Gtk::ScrolledWindow());
swSounds->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
Gtk::VBox* vbSounds = new Gtk::VBox ();
ckbSndEnable = Gtk::manage(new Gtk::CheckButton(M("GENERAL_ENABLE")));
sndEnableConn = ckbSndEnable->signal_toggled().connect(sigc::mem_fun(*this, &Preferences::sndEnableToggled));
pSnd->pack_start(*ckbSndEnable, Gtk::PACK_SHRINK, 4);
vbSounds->pack_start (*ckbSndEnable, Gtk::PACK_SHRINK, 4);
Gtk::HBox* hblSndHelp = Gtk::manage(new Gtk::HBox());
Gtk::Label* lSndHelp = Gtk::manage(new Gtk::Label(M("PREFERENCES_SND_HELP")));
hblSndHelp->pack_start(*lSndHelp, Gtk::PACK_SHRINK, 4);
pSnd->pack_start(*hblSndHelp, Gtk::PACK_SHRINK, 4);
vbSounds->pack_start (*hblSndHelp, Gtk::PACK_SHRINK, 4);
// BatchQueueDone
Gtk::HBox* pBatchQueueDone = Gtk::manage(new Gtk::HBox());
@@ -1530,7 +1532,7 @@ Gtk::Widget* Preferences::getSoundPanel()
txtSndBatchQueueDone = Gtk::manage(new Gtk::Entry());
pBatchQueueDone->pack_end(*txtSndBatchQueueDone, Gtk::PACK_EXPAND_WIDGET, 4);
pSnd->pack_start(*pBatchQueueDone, Gtk::PACK_SHRINK, 4);
vbSounds->pack_start (*pBatchQueueDone, Gtk::PACK_SHRINK, 4);
// LngEditProcDone
Gtk::HBox* pSndLngEditProcDone = Gtk::manage(new Gtk::HBox());
@@ -1550,11 +1552,12 @@ Gtk::Widget* Preferences::getSoundPanel()
spbSndLngEditProcDoneSecs->set_range(0, 10);
pSndLngEditProcDone->pack_end(*spbSndLngEditProcDoneSecs, Gtk::PACK_SHRINK, 4);
pSnd->pack_start(*pSndLngEditProcDone, Gtk::PACK_SHRINK, 4);
vbSounds->pack_start (*pSndLngEditProcDone, Gtk::PACK_SHRINK, 4);
sndEnableToggled();
return pSnd;
swSounds->add(*vbSounds);
return swSounds;
}
void Preferences::parseDir(Glib::ustring dirname, std::vector<Glib::ustring>& items, Glib::ustring ext)
@@ -1646,8 +1649,9 @@ void Preferences::parseThemeDir(Glib::ustring dirname)
void Preferences::storePreferences()
{
// With the new mechanism, we can't be sure of the availability of the DEFPROFILE_RAW & DEFPROFILE_IMG profiles,
// because useBundledProfiles may be false. We're now using DEFPROFILE_INTERNAL instead, which is always available.
// With the new mechanism, we can't be sure of the availability of the DEFPROFILE_RAW & DEFPROFILE_IMG profiles,
// because useBundledProfiles may be false. We're now using DEFPROFILE_INTERNAL instead, which is always available.
moptions.defProfRaw = rprofiles->getFullPathFromActiveRow();
if (moptions.defProfRaw.empty()) {
@@ -1780,16 +1784,11 @@ void Preferences::storePreferences()
}
moptions.rtSettings.monitorBPC = monBPC->get_active();
//#if defined(WIN32)
moptions.rtSettings.autoMonitorProfile = cbAutoMonProfile->get_active();
//#endif
#endif
moptions.rtSettings.iccDirectory = iccDir->get_filename();
// moptions.rtSettings.viewingdevice = view->get_active_row_number ();
// moptions.rtSettings.viewingdevicegrey = grey->get_active_row_number ();
// moptions.rtSettings.viewinggreySc = greySc->get_active_row_number ();
// moptions.rtSettings.autocielab = cbAutocielab->get_active ();
moptions.rtSettings.leveldnv = dnv->get_active_row_number();
moptions.rtSettings.leveldnti = dnti->get_active_row_number();
moptions.rtSettings.leveldnliss = dnliss->get_active_row_number();
@@ -1942,18 +1941,13 @@ void Preferences::fillPreferences()
}
monBPC->set_active(moptions.rtSettings.monitorBPC);
//#if defined(WIN32)
cbAutoMonProfile->set_active(moptions.rtSettings.autoMonitorProfile);
//#endif
#endif
if (Glib::file_test(moptions.rtSettings.iccDirectory, Glib::FILE_TEST_IS_DIR)) {
iccDir->set_current_folder(moptions.rtSettings.iccDirectory);
}
// view->set_active (moptions.rtSettings.viewingdevice);
// grey->set_active (moptions.rtSettings.viewingdevicegrey);
// greySc->set_active (moptions.rtSettings.viewinggreySc);
dnv->set_active(moptions.rtSettings.leveldnv);
dnti->set_active(moptions.rtSettings.leveldnti);
dnliss->set_active(moptions.rtSettings.leveldnliss);
@@ -1965,7 +1959,6 @@ void Preferences::fillPreferences()
cmip->set_active(moptions.mip);
// clocalajust->set_active (moptions.locaaju);
// cbAutocielab->set_active (moptions.rtSettings.autocielab);
languages->set_active_text(moptions.language);
ckbLangAutoDetect->set_active(moptions.languageAutoDetect);
int themeNbr = getThemeRowNumber(moptions.theme);
@@ -2078,7 +2071,6 @@ void Preferences::fillPreferences()
curveBBoxPosC->set_active(moptions.curvebboxpos);
ckbHistogramPositionLeft->set_active(moptions.histogramPosition == 1);
// ckbHistogramWorking->set_active(moptions.histogramWorking==1);
ckbFileBrowserToolbarSingleRow->set_active(moptions.FileBrowserToolbarSingleRow);
ckbShowFilmStripToolBar->set_active(moptions.showFilmStripToolBar);
ckbShowdelimspot->set_active(moptions.showdelimspot);
@@ -2154,17 +2146,17 @@ void Preferences::savePressed () {
}
*/
//#if defined(WIN32)
void Preferences::autoMonProfileToggled()
{
monProfile->set_sensitive(!cbAutoMonProfile->get_active());
}
//#endif
/*
void Preferences::autocielabToggled () {
// cbAutocielab->set_sensitive(cbAutocielab->get_active());
}
*/
void Preferences::sndEnableToggled()
{
txtSndBatchQueueDone->set_sensitive(ckbSndEnable->get_active());
@@ -2218,7 +2210,7 @@ void Preferences::cancelPressed()
// update the profileStore
if (useBundledProfiles->get_active() != options.useBundledProfiles) {
// we have to rescan with the old value;
// we have to rescan with the old value
bpconn.block(true);
useBundledProfiles->set_active(false);
bundledProfilesChanged();
@@ -2232,7 +2224,7 @@ void Preferences::selectStartupDir()
{
Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("PREFERENCES_DIRSELECTDLG"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
// dialog.set_transient_for(*this);
//dialog.set_transient_for(*this);
//Add response buttons to the dialog:
dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL);

View File

@@ -246,14 +246,23 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
void appendBehavList (Gtk::TreeModel::iterator& parent, Glib::ustring label, int id, bool set);
Gtk::Widget* getProcParamsPanel ();
Gtk::Widget* getColorManagementPanel ();
Gtk::Widget* getFileBrowserPanel ();
Gtk::Widget* getGeneralPanel ();
Gtk::Widget* getBatchProcPanel ();
Gtk::Widget* getPerformancePanel ();
Gtk::Widget* getSoundPanel ();
Gtk::Widget* getDynProfilePanel ();
Gtk::ScrolledWindow *swGeneral;
Gtk::ScrolledWindow *swImageProcessing;
Gtk::ScrolledWindow *swDynamicProfile;
Gtk::ScrolledWindow *swFileBrowser;
Gtk::ScrolledWindow *swColorMan;
Gtk::ScrolledWindow *swBatchProc;
Gtk::ScrolledWindow *swPerformance;
Gtk::ScrolledWindow *swSounds;
Gtk::Widget *getGeneralPanel();
Gtk::Widget *getImageProcessingPanel();
Gtk::Widget *getDynamicProfilePanel();
Gtk::Widget *getFileBrowserPanel();
Gtk::Widget *getColorManPanel();
Gtk::Widget *getBatchProcPanel();
Gtk::Widget *getPerformancePanel();
Gtk::Widget *getSoundsPanel();
public:
explicit Preferences (RTWindow *rtwindow);

View File

@@ -24,23 +24,23 @@
PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia)
{
iR = new RTImage ("square-toggle-red-on.png");
iG = new RTImage ("square-toggle-green-on.png");
iB = new RTImage ("square-toggle-blue-on.png");
iL = new RTImage ("square-toggle-luminosity-on.png");
iBC0 = new RTImage ("square-toggle-theme-on.png");
iBC1 = new RTImage ("square-toggle-black-on.png");
iBC2 = new RTImage ("square-toggle-white-on.png");
iBC3 = new RTImage ("square-toggle-gray-on.png");
iR = new RTImage ("square-toggle-red-on-narrow.png");
iG = new RTImage ("square-toggle-green-on-narrow.png");
iB = new RTImage ("square-toggle-blue-on-narrow.png");
iL = new RTImage ("square-toggle-luminosity-on-narrow.png");
iBC0 = new RTImage ("square-toggle-theme-on-narrow.png");
iBC1 = new RTImage ("square-toggle-black-on-narrow.png");
iBC2 = new RTImage ("square-toggle-white-on-narrow.png");
iBC3 = new RTImage ("square-toggle-gray-on-narrow.png");
igR = new RTImage ("square-toggle-red-off.png");
igG = new RTImage ("square-toggle-green-off.png");
igB = new RTImage ("square-toggle-blue-off.png");
igL = new RTImage ("square-toggle-luminosity-off.png");
igBC0 = new RTImage ("square-toggle-theme-off.png");
igBC1 = new RTImage ("square-toggle-black-off.png");
igBC2 = new RTImage ("square-toggle-white-off.png");
igBC3 = new RTImage ("square-toggle-gray-off.png");
igR = new RTImage ("square-toggle-red-off-narrow.png");
igG = new RTImage ("square-toggle-green-off-narrow.png");
igB = new RTImage ("square-toggle-blue-off-narrow.png");
igL = new RTImage ("square-toggle-luminosity-off-narrow.png");
igBC0 = new RTImage ("square-toggle-theme-off-narrow.png");
igBC1 = new RTImage ("square-toggle-black-off-narrow.png");
igBC2 = new RTImage ("square-toggle-white-off-narrow.png");
igBC3 = new RTImage ("square-toggle-gray-off-narrow.png");
backColor0 = Gtk::manage (new Gtk::ToggleButton ());
backColor0->get_style_context()->add_class("narrowbutton");