|
@@ -88,7 +88,6 @@ public:
|
|
|
set_title("Simple Image Renamer 0.2");
|
|
set_title("Simple Image Renamer 0.2");
|
|
|
set_default_size(1280, 850);
|
|
set_default_size(1280, 850);
|
|
|
|
|
|
|
|
- // --- ADDED WMCLASS ---
|
|
|
|
|
set_wmclass("simpleimagerenamer", "simpleimagerenamer");
|
|
set_wmclass("simpleimagerenamer", "simpleimagerenamer");
|
|
|
|
|
|
|
|
m_Dispatcher.connect(sigc::mem_fun(*this, &RenamerWindow::on_worker_notification));
|
|
m_Dispatcher.connect(sigc::mem_fun(*this, &RenamerWindow::on_worker_notification));
|
|
@@ -122,6 +121,18 @@ public:
|
|
|
m_ComboSize.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::on_size_changed));
|
|
m_ComboSize.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::on_size_changed));
|
|
|
m_ToolbarTop.pack_start(m_ComboSize, Gtk::PACK_SHRINK, 5);
|
|
m_ToolbarTop.pack_start(m_ComboSize, Gtk::PACK_SHRINK, 5);
|
|
|
|
|
|
|
|
|
|
+ // --- Added Select All / None Buttons ---
|
|
|
|
|
+ m_ToolbarTop.pack_start(*Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL)), Gtk::PACK_SHRINK, 10);
|
|
|
|
|
+
|
|
|
|
|
+ m_BtnSelectAll.set_label("Select All");
|
|
|
|
|
+ m_BtnSelectAll.signal_clicked().connect([this](){ on_selection_change(true); });
|
|
|
|
|
+ m_ToolbarTop.pack_start(m_BtnSelectAll, Gtk::PACK_SHRINK, 2);
|
|
|
|
|
+
|
|
|
|
|
+ m_BtnSelectNone.set_label("Select None");
|
|
|
|
|
+ m_BtnSelectNone.signal_clicked().connect([this](){ on_selection_change(false); });
|
|
|
|
|
+ m_ToolbarTop.pack_start(m_BtnSelectNone, Gtk::PACK_SHRINK, 2);
|
|
|
|
|
+ // ---------------------------------------
|
|
|
|
|
+
|
|
|
m_BtnUndo.set_label("Undo Last Rename");
|
|
m_BtnUndo.set_label("Undo Last Rename");
|
|
|
m_BtnUndo.set_sensitive(false);
|
|
m_BtnUndo.set_sensitive(false);
|
|
|
m_BtnUndo.signal_clicked().connect(sigc::mem_fun(*this, &RenamerWindow::on_undo_clicked));
|
|
m_BtnUndo.signal_clicked().connect(sigc::mem_fun(*this, &RenamerWindow::on_undo_clicked));
|
|
@@ -208,6 +219,9 @@ protected:
|
|
|
Gtk::Box m_VBox, m_ToolbarTop, m_ToolbarControls, m_BoxPattern, m_BoxReplace;
|
|
Gtk::Box m_VBox, m_ToolbarTop, m_ToolbarControls, m_BoxPattern, m_BoxReplace;
|
|
|
Gtk::Frame m_FrameControls;
|
|
Gtk::Frame m_FrameControls;
|
|
|
Gtk::Button m_BtnOpen, m_BtnRename, m_BtnUndo, m_BtnStopReload;
|
|
Gtk::Button m_BtnOpen, m_BtnRename, m_BtnUndo, m_BtnStopReload;
|
|
|
|
|
+ // --- Added Buttons ---
|
|
|
|
|
+ Gtk::Button m_BtnSelectAll, m_BtnSelectNone;
|
|
|
|
|
+ // ---------------------
|
|
|
Gtk::Entry m_EntryPattern, m_EntryFind, m_EntryReplace;
|
|
Gtk::Entry m_EntryPattern, m_EntryFind, m_EntryReplace;
|
|
|
Gtk::ComboBoxText m_ComboSize, m_ComboSort, m_ComboMode;
|
|
Gtk::ComboBoxText m_ComboSize, m_ComboSort, m_ComboMode;
|
|
|
Gtk::SpinButton m_SpinStartNum;
|
|
Gtk::SpinButton m_SpinStartNum;
|
|
@@ -257,6 +271,16 @@ protected:
|
|
|
if(it) { (*it)[m_Columns.m_col_checked] = !(*it)[m_Columns.m_col_checked]; update_preview(); }
|
|
if(it) { (*it)[m_Columns.m_col_checked] = !(*it)[m_Columns.m_col_checked]; update_preview(); }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // --- Added Helper for Mass Selection ---
|
|
|
|
|
+ void on_selection_change(bool select_all) {
|
|
|
|
|
+ if (!m_RefListStore) return;
|
|
|
|
|
+ for (auto row : m_RefListStore->children()) {
|
|
|
|
|
+ row[m_Columns.m_col_checked] = select_all;
|
|
|
|
|
+ }
|
|
|
|
|
+ update_preview();
|
|
|
|
|
+ }
|
|
|
|
|
+ // ---------------------------------------
|
|
|
|
|
+
|
|
|
void on_stop_reload_clicked() {
|
|
void on_stop_reload_clicked() {
|
|
|
if (m_is_loading) m_stop_flag = true;
|
|
if (m_is_loading) m_stop_flag = true;
|
|
|
else if (!m_current_path.empty()) start_loading_folder(m_current_path);
|
|
else if (!m_current_path.empty()) start_loading_folder(m_current_path);
|