1 /* 2 * This file is part of RawTherapee. 3 * 4 * Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com> 5 * 6 * RawTherapee is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * RawTherapee is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with RawTherapee. If not, see <https://www.gnu.org/licenses/>. 18 */ 19 #pragma once 20 21 #include <atomic> 22 23 #include <gtkmm.h> 24 25 #include "batchqueue.h" 26 #include "guiutils.h" 27 #include "saveformatpanel.h" 28 29 class RTWindow; 30 class FileCatalog; 31 class Thumbnail; 32 33 class BatchQueuePanel : public Gtk::VBox, 34 public BatchQueueListener, 35 public FormatChangeListener 36 { 37 38 Gtk::Button* zoomInButton; 39 Gtk::Button* zoomOutButton; 40 Gtk::Switch* qStartStop; 41 sigc::connection qStartStopConn; 42 Gtk::CheckButton* qAutoStart; 43 44 Gtk::Entry* outdirTemplate; 45 MyFileChooserButton* outdirFolder; 46 Gtk::Button* outdirFolderButton; 47 Gtk::RadioButton* useTemplate; 48 Gtk::RadioButton* useFolder; 49 SaveFormatPanel* saveFormatPanel; 50 Gtk::Frame *fdir, *fformat; 51 52 RTWindow* parent; 53 BatchQueue* batchQueue; 54 Gtk::HBox* bottomBox; 55 Gtk::HBox* topBox; 56 57 std::atomic<bool> queueShouldRun; 58 59 IdleRegister idle_register; 60 61 public: 62 explicit BatchQueuePanel (FileCatalog* aFileCatalog); 63 ~BatchQueuePanel() override; 64 65 void init (RTWindow* parent); 66 67 void addBatchQueueJobs(const std::vector<BatchQueueEntry*>& entries , bool head = false); 68 void saveOptions (); 69 70 bool handleShortcutKey (GdkEventKey* event); 71 72 // batchqueuelistener interface 73 void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) override; 74 bool canStartNext() override; 75 76 private: 77 void startBatchProc (); 78 void stopBatchProc (); 79 void startOrStopBatchProc(); 80 void setGuiFromBatchState(bool queueRunning, int qsize); 81 82 void pathFolderChanged (); 83 void pathFolderButtonPressed (); 84 void formatChanged(const Glib::ustring& format) override; 85 void updateTab (int qsize, int forceOrientation = 0); // forceOrientation=0: base on options / 1: horizontal / 2: vertical 86 }; 87