|
@@ -95,6 +95,7 @@ public:
|
|
|
m_ToolbarTop.pack_start(m_BtnOpen, Gtk::PACK_SHRINK, 5);
|
|
m_ToolbarTop.pack_start(m_BtnOpen, Gtk::PACK_SHRINK, 5);
|
|
|
|
|
|
|
|
m_ToolbarTop.pack_start(*Gtk::manage(new Gtk::Label(" Sort: ")), Gtk::PACK_SHRINK);
|
|
m_ToolbarTop.pack_start(*Gtk::manage(new Gtk::Label(" Sort: ")), Gtk::PACK_SHRINK);
|
|
|
|
|
+ m_ComboSort.append("Manual (Drag & Drop)");
|
|
|
m_ComboSort.append("Name");
|
|
m_ComboSort.append("Name");
|
|
|
m_ComboSort.append("Oldest (EXIF/File)");
|
|
m_ComboSort.append("Oldest (EXIF/File)");
|
|
|
m_ComboSort.append("Newest (EXIF/File)");
|
|
m_ComboSort.append("Newest (EXIF/File)");
|
|
@@ -127,6 +128,7 @@ public:
|
|
|
m_ComboMode.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::on_mode_changed));
|
|
m_ComboMode.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::on_mode_changed));
|
|
|
m_ToolbarControls.pack_start(m_ComboMode, Gtk::PACK_SHRINK, 5);
|
|
m_ToolbarControls.pack_start(m_ComboMode, Gtk::PACK_SHRINK, 5);
|
|
|
|
|
|
|
|
|
|
+ // --- Sequential Pattern Mode ---
|
|
|
m_EntryPattern.set_text("image_###");
|
|
m_EntryPattern.set_text("image_###");
|
|
|
m_EntryPattern.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::update_preview));
|
|
m_EntryPattern.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::update_preview));
|
|
|
m_BoxPattern.pack_start(m_EntryPattern, Gtk::PACK_EXPAND_WIDGET);
|
|
m_BoxPattern.pack_start(m_EntryPattern, Gtk::PACK_EXPAND_WIDGET);
|
|
@@ -136,11 +138,18 @@ public:
|
|
|
m_BoxPattern.pack_start(m_SpinStartNum, Gtk::PACK_SHRINK);
|
|
m_BoxPattern.pack_start(m_SpinStartNum, Gtk::PACK_SHRINK);
|
|
|
m_StackModes.add(m_BoxPattern, "Pattern");
|
|
m_StackModes.add(m_BoxPattern, "Pattern");
|
|
|
|
|
|
|
|
|
|
+ // --- Find & Replace Mode ---
|
|
|
|
|
+ m_EntryFind.set_placeholder_text("Find string");
|
|
|
m_EntryFind.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::update_preview));
|
|
m_EntryFind.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::update_preview));
|
|
|
- m_BoxReplace.pack_start(m_EntryFind, Gtk::PACK_EXPAND_WIDGET);
|
|
|
|
|
|
|
+ m_BoxReplace.pack_start(*Gtk::manage(new Gtk::Label("Find:")), Gtk::PACK_SHRINK, 5);
|
|
|
|
|
+ m_BoxReplace.pack_start(m_EntryFind, Gtk::PACK_EXPAND_WIDGET, 5);
|
|
|
|
|
+
|
|
|
|
|
+ m_EntryReplace.set_placeholder_text("Replacement string");
|
|
|
m_EntryReplace.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::update_preview));
|
|
m_EntryReplace.signal_changed().connect(sigc::mem_fun(*this, &RenamerWindow::update_preview));
|
|
|
- m_BoxReplace.pack_start(m_EntryReplace, Gtk::PACK_EXPAND_WIDGET);
|
|
|
|
|
|
|
+ m_BoxReplace.pack_start(*Gtk::manage(new Gtk::Label("Replace:")), Gtk::PACK_SHRINK, 5);
|
|
|
|
|
+ m_BoxReplace.pack_start(m_EntryReplace, Gtk::PACK_EXPAND_WIDGET, 5);
|
|
|
m_StackModes.add(m_BoxReplace, "Replace");
|
|
m_StackModes.add(m_BoxReplace, "Replace");
|
|
|
|
|
+
|
|
|
m_ToolbarControls.pack_start(m_StackModes, Gtk::PACK_EXPAND_WIDGET, 5);
|
|
m_ToolbarControls.pack_start(m_StackModes, Gtk::PACK_EXPAND_WIDGET, 5);
|
|
|
|
|
|
|
|
m_BtnRename.set_label("Apply New Names");
|
|
m_BtnRename.set_label("Apply New Names");
|
|
@@ -153,7 +162,11 @@ public:
|
|
|
m_VBox.pack_start(m_ScrolledWindow);
|
|
m_VBox.pack_start(m_ScrolledWindow);
|
|
|
|
|
|
|
|
m_RefListStore = Gtk::ListStore::create(m_Columns);
|
|
m_RefListStore = Gtk::ListStore::create(m_Columns);
|
|
|
|
|
+
|
|
|
|
|
+ m_RefListStore->signal_row_deleted().connect([this](const Gtk::TreeModel::Path&){ update_preview(); });
|
|
|
|
|
+
|
|
|
m_IconView.set_model(m_RefListStore);
|
|
m_IconView.set_model(m_RefListStore);
|
|
|
|
|
+ m_IconView.set_reorderable(true);
|
|
|
m_IconView.pack_start(m_cell_frame, false);
|
|
m_IconView.pack_start(m_cell_frame, false);
|
|
|
m_IconView.add_attribute(m_cell_frame, "pixbuf", m_Columns.m_col_pixbuf);
|
|
m_IconView.add_attribute(m_cell_frame, "pixbuf", m_Columns.m_col_pixbuf);
|
|
|
m_IconView.pack_start(m_cell_toggle, false);
|
|
m_IconView.pack_start(m_cell_toggle, false);
|
|
@@ -237,7 +250,6 @@ protected:
|
|
|
void launch_terminal() {
|
|
void launch_terminal() {
|
|
|
if (m_current_path.empty()) return;
|
|
if (m_current_path.empty()) return;
|
|
|
std::string cmd = "gnome-terminal --working-directory='" + m_current_path + "'";
|
|
std::string cmd = "gnome-terminal --working-directory='" + m_current_path + "'";
|
|
|
- // Fixed: Explicitly creating the vector to avoid ambiguity
|
|
|
|
|
std::vector<Glib::RefPtr<Gio::File>> no_files;
|
|
std::vector<Glib::RefPtr<Gio::File>> no_files;
|
|
|
Gio::AppInfo::create_from_commandline(cmd, "Terminal", Gio::APP_INFO_CREATE_NONE)->launch(no_files);
|
|
Gio::AppInfo::create_from_commandline(cmd, "Terminal", Gio::APP_INFO_CREATE_NONE)->launch(no_files);
|
|
|
}
|
|
}
|
|
@@ -345,8 +357,9 @@ protected:
|
|
|
|
|
|
|
|
void on_sort_changed() {
|
|
void on_sort_changed() {
|
|
|
int s = m_ComboSort.get_active_row_number();
|
|
int s = m_ComboSort.get_active_row_number();
|
|
|
- if (s == 0) m_RefListStore->set_sort_column(m_Columns.m_col_filename, Gtk::SORT_ASCENDING);
|
|
|
|
|
- else m_RefListStore->set_sort_column(m_Columns.m_col_time, (s == 1 ? Gtk::SORT_ASCENDING : Gtk::SORT_DESCENDING));
|
|
|
|
|
|
|
+ if (s == 0) m_RefListStore->set_sort_column(GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, Gtk::SORT_ASCENDING);
|
|
|
|
|
+ else if (s == 1) m_RefListStore->set_sort_column(m_Columns.m_col_filename, Gtk::SORT_ASCENDING);
|
|
|
|
|
+ else m_RefListStore->set_sort_column(m_Columns.m_col_time, (s == 2 ? Gtk::SORT_ASCENDING : Gtk::SORT_DESCENDING));
|
|
|
update_preview();
|
|
update_preview();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -422,6 +435,7 @@ protected:
|
|
|
|
|
|
|
|
void on_open_folder_clicked() {
|
|
void on_open_folder_clicked() {
|
|
|
Gtk::FileChooserDialog d(*this, "Open", Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
|
Gtk::FileChooserDialog d(*this, "Open", Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
|
|
|
|
+ d.set_show_hidden(true); // <--- Here's your fix
|
|
|
d.add_button("Cancel", Gtk::RESPONSE_CANCEL); d.add_button("Open", Gtk::RESPONSE_OK);
|
|
d.add_button("Cancel", Gtk::RESPONSE_CANCEL); d.add_button("Open", Gtk::RESPONSE_OK);
|
|
|
if (d.run() == Gtk::RESPONSE_OK) start_loading_folder(d.get_filename());
|
|
if (d.run() == Gtk::RESPONSE_OK) start_loading_folder(d.get_filename());
|
|
|
}
|
|
}
|