External programs plugger

see issue 1323
This commit is contained in:
Oliver Duis
2012-04-16 18:15:08 +02:00
parent 364868b394
commit 0fb058ff00
10 changed files with 121 additions and 3 deletions

View File

@@ -51,6 +51,8 @@ EXIFPANEL_RESETALL;Alle zurücksetzen
EXIFPANEL_RESETHINT;Gewählte Attribute zu den ursprünglichen Werten zurücksetzen EXIFPANEL_RESETHINT;Gewählte Attribute zu den ursprünglichen Werten zurücksetzen
EXIFPANEL_RESET;Zurücksetzen EXIFPANEL_RESET;Zurücksetzen
EXIFPANEL_SUBDIRECTORY;Unterverzeichnis EXIFPANEL_SUBDIRECTORY;Unterverzeichnis
EXTPROGTARGET_1;Raw
EXTPROGTARGET_2;stapelverarbeitet
FILEBROWSER_ADDDELTEMPLATE;Vorlagen hinzu/entfernen... FILEBROWSER_ADDDELTEMPLATE;Vorlagen hinzu/entfernen...
FILEBROWSER_APPLYPROFILE;Profil anwenden FILEBROWSER_APPLYPROFILE;Profil anwenden
FILEBROWSER_APPLYPROFILE_PARTIAL;Profil selektiv anwenden FILEBROWSER_APPLYPROFILE_PARTIAL;Profil selektiv anwenden
@@ -77,10 +79,12 @@ FILEBROWSER_EXIFFILTERAPPLY;Anwenden
FILEBROWSER_EXIFFILTERLABEL;Exif Filter FILEBROWSER_EXIFFILTERLABEL;Exif Filter
FILEBROWSER_EXIFFILTERSETTINGSHINT;Ändern der Einstellungen des Exif Filters FILEBROWSER_EXIFFILTERSETTINGSHINT;Ändern der Einstellungen des Exif Filters
FILEBROWSER_EXIFFILTERSETTINGS;Einstellungen FILEBROWSER_EXIFFILTERSETTINGS;Einstellungen
FILEBROWSER_EXTPROGMENU;Öffnen mit
FILEBROWSER_FLATFIELD;Weißbild FILEBROWSER_FLATFIELD;Weißbild
FILEBROWSER_MOVETODARKFDIR;In Dunkelbild-Verzeichnis verschieben FILEBROWSER_MOVETODARKFDIR;In Dunkelbild-Verzeichnis verschieben
FILEBROWSER_MOVETOFLATFIELDDIR;In Weißbild-Verzeichnis verschieben FILEBROWSER_MOVETOFLATFIELDDIR;In Weißbild-Verzeichnis verschieben
FILEBROWSER_NEW_NAME;Neuer Name: FILEBROWSER_NEW_NAME;Neuer Name:
FILEBROWSER_OPENDEFAULTVIEWER;Windows Standard Betracher (stapelverarbeitet)
FILEBROWSER_PARTIALPASTEPROFILE;Profil selektiv einfügen FILEBROWSER_PARTIALPASTEPROFILE;Profil selektiv einfügen
FILEBROWSER_PASTEPROFILE;Profil einfügen FILEBROWSER_PASTEPROFILE;Profil einfügen
FILEBROWSER_POPUPCANCELJOB;Job abbrechen FILEBROWSER_POPUPCANCELJOB;Job abbrechen
@@ -446,6 +450,7 @@ MAIN_MSG_EMPTYFILENAME;Dateiname fehlt!
MAIN_MSG_ERRORDURINGIMAGESAVING;Fehler beim Speichern des Bildes MAIN_MSG_ERRORDURINGIMAGESAVING;Fehler beim Speichern des Bildes
MAIN_MSG_EXITJOBSINQUEUEINFO;Unverarbeitete Bilder in der Warteschlange gehen beim Verlassen der Anwendung verloren. MAIN_MSG_EXITJOBSINQUEUEINFO;Unverarbeitete Bilder in der Warteschlange gehen beim Verlassen der Anwendung verloren.
MAIN_MSG_EXITJOBSINQUEUEQUEST;Wollen Sie die Anwendung wirklich schließen? Es sind noch unverarbeitete Bilder in der Warteschlange. MAIN_MSG_EXITJOBSINQUEUEQUEST;Wollen Sie die Anwendung wirklich schließen? Es sind noch unverarbeitete Bilder in der Warteschlange.
MAIN_MSG_IMAGEUNPROCESSED;Für diese Funktion müssen erst alle Bilder stapelverarbeitet sein.
MAIN_MSG_JOBSINQUEUE;Job in Bearbeitung MAIN_MSG_JOBSINQUEUE;Job in Bearbeitung
MAIN_MSG_NAVIGATOR;Navigator MAIN_MSG_NAVIGATOR;Navigator
MAIN_MSG_PLACES;Orte MAIN_MSG_PLACES;Orte
@@ -638,6 +643,7 @@ PREFERENCES_INTENT_SATURATION;Sättigung
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Voransicht aus RAW, wenn noch nicht editiert PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Voransicht aus RAW, wenn noch nicht editiert
PREFERENCES_LANGAUTODETECT;Betriebssystem-Einstellung verwenden PREFERENCES_LANGAUTODETECT;Betriebssystem-Einstellung verwenden
PREFERENCES_LIVETHUMBNAILS;Live Voransichten (langsamer) PREFERENCES_LIVETHUMBNAILS;Live Voransichten (langsamer)
PREFERENCES_MENUGROUPEXTPROGS;Untermenü "Öffnen mit"
PREFERENCES_MENUGROUPFILEOPERATIONS;Untermenü Dateioperationen PREFERENCES_MENUGROUPFILEOPERATIONS;Untermenü Dateioperationen
PREFERENCES_MENUGROUPLABEL;Untermenü Farbmarkierung PREFERENCES_MENUGROUPLABEL;Untermenü Farbmarkierung
PREFERENCES_MENUGROUPPROFILEOPERATIONS;Untermenü Profiloperationen PREFERENCES_MENUGROUPPROFILEOPERATIONS;Untermenü Profiloperationen

View File

@@ -78,6 +78,8 @@ EXPORT_MAXWIDTH;Maximum Width:
EXPORT_PUTTOQUEUEFAST; Put to Queue for Fast Export EXPORT_PUTTOQUEUEFAST; Put to Queue for Fast Export
EXPORT_RAW_DMETHOD;Demosaic Method EXPORT_RAW_DMETHOD;Demosaic Method
EXPORT_RESIZEMETHOD;Resize Method EXPORT_RESIZEMETHOD;Resize Method
EXTPROGTARGET_1;raw
EXTPROGTARGET_2;queue-processed
FILEBROWSER_ADDDELTEMPLATE;Add/Del templates... FILEBROWSER_ADDDELTEMPLATE;Add/Del templates...
FILEBROWSER_APPLYPROFILE;Apply profile FILEBROWSER_APPLYPROFILE;Apply profile
FILEBROWSER_APPLYPROFILE_PARTIAL;Apply profile (partial) FILEBROWSER_APPLYPROFILE_PARTIAL;Apply profile (partial)
@@ -104,10 +106,12 @@ FILEBROWSER_EXIFFILTERAPPLY;Apply
FILEBROWSER_EXIFFILTERLABEL;Exif Filter FILEBROWSER_EXIFFILTERLABEL;Exif Filter
FILEBROWSER_EXIFFILTERSETTINGSHINT;Change settings of the Exif Filter FILEBROWSER_EXIFFILTERSETTINGSHINT;Change settings of the Exif Filter
FILEBROWSER_EXIFFILTERSETTINGS;Setup FILEBROWSER_EXIFFILTERSETTINGS;Setup
FILEBROWSER_EXTPROGMENU;Open with
FILEBROWSER_FLATFIELD;Flat Field FILEBROWSER_FLATFIELD;Flat Field
FILEBROWSER_MOVETODARKFDIR;Move to dark frames directory FILEBROWSER_MOVETODARKFDIR;Move to dark frames directory
FILEBROWSER_MOVETOFLATFIELDDIR;Move to flat fields directory FILEBROWSER_MOVETOFLATFIELDDIR;Move to flat fields directory
FILEBROWSER_NEW_NAME;New name: FILEBROWSER_NEW_NAME;New name:
FILEBROWSER_OPENDEFAULTVIEWER;Windows Default Viewer (queue-processed)
FILEBROWSER_PARTIALPASTEPROFILE;Partial paste FILEBROWSER_PARTIALPASTEPROFILE;Partial paste
FILEBROWSER_PASTEPROFILE;Paste profile FILEBROWSER_PASTEPROFILE;Paste profile
FILEBROWSER_POPUPCANCELJOB;Cancel job FILEBROWSER_POPUPCANCELJOB;Cancel job
@@ -474,6 +478,7 @@ MAIN_MSG_EMPTYFILENAME;Filename unspecified!
MAIN_MSG_ERRORDURINGIMAGESAVING;Error during image saving MAIN_MSG_ERRORDURINGIMAGESAVING;Error during image saving
MAIN_MSG_EXITJOBSINQUEUEINFO;Unprocessed images in the queue will be lost on exit. MAIN_MSG_EXITJOBSINQUEUEINFO;Unprocessed images in the queue will be lost on exit.
MAIN_MSG_EXITJOBSINQUEUEQUEST;Are you sure you want to exit? There are unprocessed images waiting in the queue. MAIN_MSG_EXITJOBSINQUEUEQUEST;Are you sure you want to exit? There are unprocessed images waiting in the queue.
MAIN_MSG_IMAGEUNPROCESSED;This command requires all selected images to be queue process first.
MAIN_MSG_JOBSINQUEUE;job(s) in the queue MAIN_MSG_JOBSINQUEUE;job(s) in the queue
MAIN_MSG_NAVIGATOR;Navigator MAIN_MSG_NAVIGATOR;Navigator
MAIN_MSG_PLACES;Places MAIN_MSG_PLACES;Places
@@ -673,6 +678,7 @@ PREFERENCES_INTENT_SATURATION;Saturation
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show raw internal thumbnail if unedited PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show raw internal thumbnail if unedited
PREFERENCES_LANGAUTODETECT;Use OS language setting PREFERENCES_LANGAUTODETECT;Use OS language setting
PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower) PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower)
PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
PREFERENCES_MENUGROUPFILEOPERATIONS;Group File Operations PREFERENCES_MENUGROUPFILEOPERATIONS;Group File Operations
PREFERENCES_MENUGROUPLABEL;Group Labeling PREFERENCES_MENUGROUPLABEL;Group Labeling
PREFERENCES_MENUGROUPPROFILEOPERATIONS;Group Profile Operations PREFERENCES_MENUGROUPPROFILEOPERATIONS;Group Profile Operations

View File

@@ -13,7 +13,7 @@ set (BASESOURCEFILES
whitebalance.cc vignetting.cc rotate.cc distortion.cc whitebalance.cc vignetting.cc rotate.cc distortion.cc
crophandler.cc dirbrowser.cc crophandler.cc dirbrowser.cc
curveeditor.cc curveeditorgroup.cc diagonalcurveeditorsubgroup.cc flatcurveeditorsubgroup.cc curveeditor.cc curveeditorgroup.cc diagonalcurveeditorsubgroup.cc flatcurveeditorsubgroup.cc
filecatalog.cc filecatalog.cc extprog.cc
previewloader.cc rtimage.cc previewloader.cc rtimage.cc
histogrampanel.cc history.cc imagearea.cc histogrampanel.cc history.cc imagearea.cc
imageareapanel.cc iptcpanel.cc labcurve.cc main.cc imageareapanel.cc iptcpanel.cc labcurve.cc main.cc

View File

@@ -25,6 +25,7 @@
#include "clipboard.h" #include "clipboard.h"
#include "profilestore.h" #include "profilestore.h"
#include "procparamchangers.h" #include "procparamchangers.h"
#include "batchqueue.h"
#include "../rtengine/dfmanager.h" #include "../rtengine/dfmanager.h"
#include "../rtengine/ffmanager.h" #include "../rtengine/ffmanager.h"
#include "rtimage.h" #include "rtimage.h"
@@ -101,6 +102,55 @@ FileBrowser::FileBrowser ()
pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++;
/***********************
* external programs
* *********************/
#ifdef WIN32
Gtk::manage(miOpenDefaultViewer=new Gtk::MenuItem (M("FILEBROWSER_OPENDEFAULTVIEWER")));
#else
miOpenDefaultViewer=NULL;
#endif
// Build a list of menu items
mMenuExtProgs.clear(); amiExtProg=NULL;
for (std::list<ExtProgAction*>::iterator it=extProgStore->lActions.begin();it!=extProgStore->lActions.end();it++) {
ExtProgAction* pAct=*it;
if (pAct->target==1 || pAct->target==2) mMenuExtProgs[pAct->GetFullName()]=pAct;
}
// Attach them to menu
if (!mMenuExtProgs.empty() || miOpenDefaultViewer!=NULL) {
amiExtProg=new Gtk::MenuItem*[mMenuExtProgs.size()];
int itemNo=0;
if (options.menuGroupExtProg) {
pmenu->attach (*Gtk::manage(menuExtProg = new Gtk::MenuItem (M("FILEBROWSER_EXTPROGMENU"))), 0, 1, p, p+1); p++;
Gtk::Menu* submenuExtProg = Gtk::manage (new Gtk::Menu());
if (miOpenDefaultViewer!=NULL) {
submenuExtProg->attach (*miOpenDefaultViewer, 0, 1, p, p+1); p++;
}
for (std::map<Glib::ustring, ExtProgAction*>::iterator it=mMenuExtProgs.begin();it!=mMenuExtProgs.end();it++,itemNo++) {
submenuExtProg->attach (*Gtk::manage(amiExtProg[itemNo] = new Gtk::MenuItem ((*it).first)), 0, 1, p, p+1); p++;
}
submenuExtProg->show_all ();
menuExtProg->set_submenu (*submenuExtProg);
} else {
if (miOpenDefaultViewer!=NULL) {
pmenu->attach (*miOpenDefaultViewer, 0, 1, p, p+1); p++;
}
for (std::map<Glib::ustring, ExtProgAction*>::iterator it=mMenuExtProgs.begin();it!=mMenuExtProgs.end();it++,itemNo++) {
pmenu->attach (*Gtk::manage(amiExtProg[itemNo] = new Gtk::MenuItem ((*it).first)), 0, 1, p, p+1); p++;
}
}
pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++;
}
/*********************** /***********************
* File Operations * File Operations
* *********************/ * *********************/
@@ -188,12 +238,20 @@ FileBrowser::FileBrowser ()
pasteprof->add_accelerator ("activate", pmenu->get_accel_group(), GDK_V, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE); pasteprof->add_accelerator ("activate", pmenu->get_accel_group(), GDK_V, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
partpasteprof->add_accelerator ("activate", pmenu->get_accel_group(), GDK_V, Gdk::CONTROL_MASK | Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE); partpasteprof->add_accelerator ("activate", pmenu->get_accel_group(), GDK_V, Gdk::CONTROL_MASK | Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE);
// Bind to event handlers
open->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), open)); open->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), open));
for (int i=0; i<6; i++) for (int i=0; i<6; i++)
rank[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), rank[i])); rank[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), rank[i]));
for (int i=0; i<6; i++) for (int i=0; i<6; i++)
colorlabel[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), colorlabel[i])); colorlabel[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), colorlabel[i]));
for (int i=0; i<mMenuExtProgs.size(); i++)
amiExtProg[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), amiExtProg[i]));
if (miOpenDefaultViewer!=NULL) {
miOpenDefaultViewer->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), miOpenDefaultViewer));
}
trash->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), trash)); trash->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), trash));
untrash->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), untrash)); untrash->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), untrash));
develop->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), develop)); develop->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), develop));
@@ -217,6 +275,7 @@ FileBrowser::FileBrowser ()
FileBrowser::~FileBrowser () FileBrowser::~FileBrowser ()
{ {
delete pmenu; delete pmenu;
delete[] amiExtProg;
} }
void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) {
@@ -461,6 +520,27 @@ void FileBrowser::menuItemActivated (Gtk::MenuItem* m) {
colorlabelRequested (mselected, i); colorlabelRequested (mselected, i);
return; return;
} }
for (int j=0; j<mMenuExtProgs.size(); j++) {
if (m==amiExtProg[j]) {
ExtProgAction* pAct = mMenuExtProgs[m->get_label()];
// Build vector of all file names
std::vector<Glib::ustring> selFileNames;
for (int i=0; i<selected.size(); i++) {
Glib::ustring fn=selected[i]->thumbnail->getFileName();
// Maybe batch processed version
if (pAct->target==2) fn = Glib::ustring::compose ("%1.%2", BatchQueue::calcAutoFileNameBase(fn), options.saveFormatBatch.format);
selFileNames.push_back(fn);
}
pAct->Execute(selFileNames);
return;
}
}
if (m==open) { if (m==open) {
std::vector<Thumbnail*> entries; std::vector<Thumbnail*> entries;
for (int i=0; i<mselected.size(); i++) for (int i=0; i<mselected.size(); i++)
@@ -616,6 +696,8 @@ void FileBrowser::menuItemActivated (Gtk::MenuItem* m) {
for (int i=0; i<mselected.size(); i++) for (int i=0; i<mselected.size(); i++)
tbl->clearFromCacheRequested (mselected, true); tbl->clearFromCacheRequested (mselected, true);
//queue_draw (); //queue_draw ();
} else if (miOpenDefaultViewer!=NULL && m==miOpenDefaultViewer) {
openDefaultViewer(1);
} }
} }
@@ -684,8 +766,14 @@ void FileBrowser::partPasteProfile () {
} }
void FileBrowser::openDefaultViewer (int destination) { void FileBrowser::openDefaultViewer (int destination) {
bool success=true;
if (selected.size()==1) if (selected.size()==1)
(static_cast<FileBrowserEntry*>(selected[0]))->thumbnail->openDefaultViewer(destination); success=(static_cast<FileBrowserEntry*>(selected[0]))->thumbnail->openDefaultViewer(destination);
if (!success) {
Gtk::MessageDialog msgd (M("MAIN_MSG_IMAGEUNPROCESSED"), true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
msgd.run ();
}
} }
bool FileBrowser::keyPressed (GdkEventKey* event) { bool FileBrowser::keyPressed (GdkEventKey* event) {

View File

@@ -20,12 +20,14 @@
#define _FILEBROWSER_ #define _FILEBROWSER_
#include <gtkmm.h> #include <gtkmm.h>
#include <map>
#include "thumbbrowserbase.h" #include "thumbbrowserbase.h"
#include "exiffiltersettings.h" #include "exiffiltersettings.h"
#include "filebrowserentry.h" #include "filebrowserentry.h"
#include "browserfilter.h" #include "browserfilter.h"
#include "partialpastedlg.h" #include "partialpastedlg.h"
#include "exportpanel.h" #include "exportpanel.h"
#include "extprog.h"
class FileBrowser; class FileBrowser;
class FileBrowserEntry; class FileBrowserEntry;
@@ -76,6 +78,11 @@ class FileBrowser : public ThumbBrowserBase,
Gtk::MenuItem* menuLabel; Gtk::MenuItem* menuLabel;
Gtk::MenuItem* menuFileOperations; Gtk::MenuItem* menuFileOperations;
Gtk::ImageMenuItem* menuProfileOperations; Gtk::ImageMenuItem* menuProfileOperations;
Gtk::MenuItem* menuExtProg;
Gtk::MenuItem** amiExtProg;
Gtk::MenuItem* miOpenDefaultViewer;
std::map<Glib::ustring, ExtProgAction*> mMenuExtProgs; // key is menuitem label
Gtk::MenuItem* menuDF; Gtk::MenuItem* menuDF;
Gtk::MenuItem* selectDF; Gtk::MenuItem* selectDF;
Gtk::MenuItem* thisIsDF; Gtk::MenuItem* thisIsDF;

View File

@@ -34,6 +34,7 @@
#include "soundman.h" #include "soundman.h"
#include "rtimage.h" #include "rtimage.h"
#include "version.h" #include "version.h"
#include "extprog.h"
#ifndef WIN32 #ifndef WIN32
#include <glibmm/fileutils.h> #include <glibmm/fileutils.h>
@@ -106,7 +107,7 @@ int main(int argc, char **argv)
Gio::init (); Gio::init ();
Options::load (); Options::load ();
extProgStore->init();
SoundManager::init(); SoundManager::init();
if (argc>1){ if (argc>1){

View File

@@ -162,6 +162,7 @@ void Options::setDefaults () {
menuGroupLabel = true; menuGroupLabel = true;
menuGroupFileOperations = true; menuGroupFileOperations = true;
menuGroupProfileOperations = true; menuGroupProfileOperations = true;
menuGroupExtProg = true;
fastexport_bypass_sharpening = true; fastexport_bypass_sharpening = true;
fastexport_bypass_sharpenEdge = true; fastexport_bypass_sharpenEdge = true;
@@ -405,6 +406,7 @@ if (keyFile.has_group ("File Browser")) {
if (keyFile.has_key ("File Browser", "menuGroupLabel")) menuGroupLabel = keyFile.get_boolean ("File Browser", "menuGroupLabel"); if (keyFile.has_key ("File Browser", "menuGroupLabel")) menuGroupLabel = keyFile.get_boolean ("File Browser", "menuGroupLabel");
if (keyFile.has_key ("File Browser", "menuGroupFileOperations")) menuGroupFileOperations = keyFile.get_boolean ("File Browser", "menuGroupFileOperations"); if (keyFile.has_key ("File Browser", "menuGroupFileOperations")) menuGroupFileOperations = keyFile.get_boolean ("File Browser", "menuGroupFileOperations");
if (keyFile.has_key ("File Browser", "menuGroupProfileOperations")) menuGroupProfileOperations = keyFile.get_boolean ("File Browser", "menuGroupProfileOperations"); if (keyFile.has_key ("File Browser", "menuGroupProfileOperations")) menuGroupProfileOperations = keyFile.get_boolean ("File Browser", "menuGroupProfileOperations");
if (keyFile.has_key ("File Browser", "menuGroupExtProg")) menuGroupExtProg = keyFile.get_boolean ("File Browser", "menuGroupExtProg");
} }
if (keyFile.has_group ("Clipping Indication")) { if (keyFile.has_group ("Clipping Indication")) {
@@ -594,6 +596,7 @@ int Options::saveToFile (Glib::ustring fname) {
keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel); keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel);
keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations); keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations);
keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations); keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations);
keyFile.set_boolean ("File Browser", "menuGroupExtProg", menuGroupExtProg);
keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold); keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold);
keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold); keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold);

View File

@@ -163,6 +163,7 @@ class Options {
bool menuGroupLabel; bool menuGroupLabel;
bool menuGroupFileOperations; bool menuGroupFileOperations;
bool menuGroupProfileOperations; bool menuGroupProfileOperations;
bool menuGroupExtProg;
// fast export options // fast export options
bool fastexport_bypass_sharpening; bool fastexport_bypass_sharpening;

View File

@@ -773,6 +773,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () {
ckbmenuGroupLabel = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPLABEL")) ); ckbmenuGroupLabel = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPLABEL")) );
ckbmenuGroupFileOperations = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPFILEOPERATIONS")) ); ckbmenuGroupFileOperations = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPFILEOPERATIONS")) );
ckbmenuGroupProfileOperations = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPPROFILEOPERATIONS")) ); ckbmenuGroupProfileOperations = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPPROFILEOPERATIONS")) );
ckbmenuGroupExtProg = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPEXTPROGS")) );
Gtk::VBox* vbmnu = Gtk::manage( new Gtk::VBox () ); Gtk::VBox* vbmnu = Gtk::manage( new Gtk::VBox () );
vbmnu->set_border_width (4); vbmnu->set_border_width (4);
@@ -780,6 +781,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () {
vbmnu->pack_start (*ckbmenuGroupLabel, Gtk::PACK_SHRINK, 0); vbmnu->pack_start (*ckbmenuGroupLabel, Gtk::PACK_SHRINK, 0);
vbmnu->pack_start (*ckbmenuGroupFileOperations, Gtk::PACK_SHRINK, 0); vbmnu->pack_start (*ckbmenuGroupFileOperations, Gtk::PACK_SHRINK, 0);
vbmnu->pack_start (*ckbmenuGroupProfileOperations, Gtk::PACK_SHRINK, 0); vbmnu->pack_start (*ckbmenuGroupProfileOperations, Gtk::PACK_SHRINK, 0);
vbmnu->pack_start (*ckbmenuGroupExtProg, Gtk::PACK_SHRINK, 0);
frmnu->add (*vbmnu); frmnu->add (*vbmnu);
@@ -974,6 +976,7 @@ void Preferences::storePreferences () {
moptions.menuGroupLabel = ckbmenuGroupLabel->get_active(); moptions.menuGroupLabel = ckbmenuGroupLabel->get_active();
moptions.menuGroupFileOperations = ckbmenuGroupFileOperations->get_active(); moptions.menuGroupFileOperations = ckbmenuGroupFileOperations->get_active();
moptions.menuGroupProfileOperations = ckbmenuGroupProfileOperations->get_active(); moptions.menuGroupProfileOperations = ckbmenuGroupProfileOperations->get_active();
moptions.menuGroupExtProg = ckbmenuGroupExtProg->get_active();
moptions.blinkClipped = blinkClipped->get_active (); moptions.blinkClipped = blinkClipped->get_active ();
moptions.highlightThreshold = (int)hlThresh->get_value (); moptions.highlightThreshold = (int)hlThresh->get_value ();
moptions.shadowThreshold = (int)shThresh->get_value (); moptions.shadowThreshold = (int)shThresh->get_value ();
@@ -1120,6 +1123,8 @@ void Preferences::fillPreferences () {
ckbmenuGroupLabel->set_active(moptions.menuGroupLabel); ckbmenuGroupLabel->set_active(moptions.menuGroupLabel);
ckbmenuGroupFileOperations->set_active(moptions.menuGroupFileOperations); ckbmenuGroupFileOperations->set_active(moptions.menuGroupFileOperations);
ckbmenuGroupProfileOperations->set_active(moptions.menuGroupProfileOperations); ckbmenuGroupProfileOperations->set_active(moptions.menuGroupProfileOperations);
ckbmenuGroupExtProg->set_active(moptions.menuGroupExtProg);
blinkClipped->set_active (moptions.blinkClipped); blinkClipped->set_active (moptions.blinkClipped);
hlThresh->set_value (moptions.highlightThreshold); hlThresh->set_value (moptions.highlightThreshold);
shThresh->set_value (moptions.shadowThreshold); shThresh->set_value (moptions.shadowThreshold);

View File

@@ -112,6 +112,7 @@ class Preferences : public Gtk::Dialog {
Gtk::CheckButton* ckbmenuGroupLabel; Gtk::CheckButton* ckbmenuGroupLabel;
Gtk::CheckButton* ckbmenuGroupFileOperations; Gtk::CheckButton* ckbmenuGroupFileOperations;
Gtk::CheckButton* ckbmenuGroupProfileOperations; Gtk::CheckButton* ckbmenuGroupProfileOperations;
Gtk::CheckButton* ckbmenuGroupExtProg;
Gtk::CheckButton* chOverwriteOutputFile; Gtk::CheckButton* chOverwriteOutputFile;