First of all,
this is by no means official and it's not much tested, but for anyone that are able to compile FZ3 themselves, here is a quick and dirty hack so you can edit local files.
I take no responsibility, but it works for me so I'm happy
Here's the patch:
Code: Select all
Index: src/interface/LocalListView.cpp
===================================================================
--- src/interface/LocalListView.cpp (revision 1907)
+++ src/interface/LocalListView.cpp (working copy)
@@ -10,6 +10,7 @@
#include <wx/dnd.h>
#include "dndobjects.h"
#include "Options.h"
+#include "edithandler.h"
#ifdef __WXMSW__
#include "lm.h"
#include <wx/msw/registry.h>
@@ -206,6 +207,7 @@
EVT_MENU(XRCID("ID_UPLOAD"), CLocalListView::OnMenuUpload)
EVT_MENU(XRCID("ID_ADDTOQUEUE"), CLocalListView::OnMenuUpload)
EVT_MENU(XRCID("ID_MKDIR"), CLocalListView::OnMenuMkdir)
+ EVT_MENU(XRCID("ID_EDIT"), CLocalListView::OnMenuEdit)
EVT_MENU(XRCID("ID_DELETE"), CLocalListView::OnMenuDelete)
EVT_MENU(XRCID("ID_RENAME"), CLocalListView::OnMenuRename)
EVT_KEY_DOWN(CLocalListView::OnKeyDown)
@@ -1000,6 +1002,7 @@
int index = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
int count = 0;
int fillCount = 0;
+ bool selectedDir = false;
while (index != -1)
{
count++;
@@ -1008,22 +1011,33 @@
{
pMenu->Enable(XRCID("ID_UPLOAD"), false);
pMenu->Enable(XRCID("ID_ADDTOQUEUE"), false);
+ pMenu->Enable(XRCID("ID_EDIT"), false);
pMenu->Enable(XRCID("ID_DELETE"), false);
pMenu->Enable(XRCID("ID_RENAME"), false);
}
if (data->flags == fill)
fillCount++;
+ if (data->dir)
+ selectedDir = true;
index = GetNextItem(index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
}
if (!count || fillCount == count)
{
pMenu->Enable(XRCID("ID_UPLOAD"), false);
pMenu->Enable(XRCID("ID_ADDTOQUEUE"), false);
+ pMenu->Enable(XRCID("ID_EDIT"), false);
pMenu->Enable(XRCID("ID_DELETE"), false);
pMenu->Enable(XRCID("ID_RENAME"), false);
}
- else if (count > 1)
- pMenu->Enable(XRCID("ID_RENAME"), false);
+ else
+ {
+ if (selectedDir)
+ {
+ pMenu->Enable(XRCID("ID_EDIT"), false);
+ }
+ if (count > 1)
+ pMenu->Enable(XRCID("ID_RENAME"), false);
+ }
PopupMenu(pMenu);
delete pMenu;
@@ -1118,6 +1132,48 @@
DisplayDir(m_dir);
}
+void CLocalListView::OnMenuEdit(wxCommandEvent& event)
+{
+ CEditHandler* pEditHandler = CEditHandler::Get();
+
+ long item = -1;
+ while (true)
+ {
+ item = GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ if (item == -1)
+ break;
+
+ if (!item && m_hasParent)
+ return;
+ }
+
+ item = -1;
+ while (true)
+ {
+ item = GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ if (item == -1)
+ break;
+
+ CLocalFileData *data = GetData(item);
+ if (!data)
+ return;
+
+ if (data->flags == fill)
+ continue;
+
+ if (!data->dir)
+ {
+ wxFileName fn(m_dir, data->name);
+
+ wxString cmd = pEditHandler->GetOpenCommand(fn.GetFullPath());
+ if (cmd == _T(""))
+ return;
+
+ wxExecute(cmd);
+ }
+ }
+}
+
void CLocalListView::OnMenuDelete(wxCommandEvent& event)
{
// Under Windows use SHFileOperation to delete files and directories.
Index: src/interface/resources/menus.xrc
===================================================================
--- src/interface/resources/menus.xrc (revision 1907)
+++ src/interface/resources/menus.xrc (working copy)
@@ -117,6 +117,10 @@
<help>Create a new subdirectory in the current directory</help>
</object>
<object class="separator"/>
+ <object class="wxMenuItem" name="ID_EDIT">
+ <label>&Edit</label>
+ <help>Edit selected files</help>
+ </object>
<object class="wxMenuItem" name="ID_DELETE">
<label>D&elete</label>
<help>Delete selected files and folders</help>
Index: src/interface/LocalListView.h
===================================================================
--- src/interface/LocalListView.h (revision 1907)
+++ src/interface/LocalListView.h (working copy)
@@ -82,6 +82,7 @@
void OnContextMenu(wxContextMenuEvent& event);
void OnMenuUpload(wxCommandEvent& event);
void OnMenuMkdir(wxCommandEvent& event);
+ void OnMenuEdit(wxCommandEvent& event);
void OnMenuDelete(wxCommandEvent& event);
void OnMenuRename(wxCommandEvent& event);
void OnChar(wxKeyEvent& event);
Index: src/interface/edithandler.h
===================================================================
--- src/interface/edithandler.h (revision 1907)
+++ src/interface/edithandler.h (working copy)
@@ -70,6 +70,8 @@
const std::list<t_fileData>& GetFiles() const { return m_fileDataList; }
bool UploadFile(const wxString& fileName, bool unedit);
+
+ wxString GetOpenCommand(const wxString& file);
protected:
CEditHandler();
@@ -81,7 +83,6 @@
bool StartEditing(t_fileData &data);
- wxString GetOpenCommand(const wxString& file);
wxString GetSystemOpenCommand(const wxString& file);
wxString GetCustomOpenCommand(const wxString& file);
This is the beauty of open source apps, you add what you like. I agree with botg that using your standard file manager (like explorer under Windows) is better suited for this, but I'm lazy.
Edit: Downloadable version:
http://home.no.net/eddan/local-edit.diff