Port CHDK file browser (file_man.mo)

Started by gerk.raisen, May 20, 2013, 10:38:45 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

minimimi

made a repo
https://bitbucket.org/minimimi/magic-lantern-filer-alex-based

and Found reason for number issue . Solved it now.
Next, I will think about how to implement multiple-selection and "file operation status window".

1%


g3gg0

ah sorry, i already checked in your new source code.
just wanted to write that here then i saw you forked on bitbucket :)

btw the numbers come from a missing
    e->menu_entry.priv = NULL;
after every menu entry.

i also added functions so that registering custom file types by other modules is possible.
so we can playback raw from within the filemanager.
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

a1ex

I wouldn't recommend deleting the priv entry, since it was designed to identify the item. Just make sure you call the default update_action if you use a custom update function.

For actions, please use TYPE_ACTION.

Progress updates can be displayed from update_status (displayed at the bottom).

ScanDir is not thread safe, it needs a semaphore.

minimimi

G3gg0:
Thanks , I already used alex method(Used TYPE_ACTION).But I'm override menu_entry->update myself.It was problem. Solved it now.
And , I'm also thinking RAW playback from filer.
See here.
enum _FILER_OP {
    FILE_OP_NONE,
    FILE_OP_COPY,
    FILE_OP_MOVE,
    FILE_OP_PREVIEW
};



So I want to know, how to know raw_rac.mo is already loaded, and how to call funcstion in anothers.
If you have a patch file, share it please,

Alex:
Thanks suggestions for making Progress. Will try it.

ScanDir things. need a "menu_sem" ? . So I added functions in menu.c in previous codes src/filer.c version.
Need to add, GetSemWrapper()/ReleaseSemWrapper() in menu.c?
Is this better way? How do you think?

minimimi

Quote from: g3gg0 on June 01, 2013, 09:57:57 PM
ah sorry, i already checked in your new source code.
just wanted to write that here then i saw you forked on bitbucket :)

You already have write permission on my repo. Because I'm used same permission with main repo.

a1ex

Quote from: minimimi on June 02, 2013, 03:35:08 AM
ScanDir things. need a "menu_sem" ?

menu_add already has semaphores, so I think it should be alright. ScanDir was manipulating a linked list, so I've added the scandir_sem just in case. The only situation when things could have gone wrong was if you pressed some key exactly when a copy/move operation finished.

minimimi

G3gg0 and Alex

Thank you for your merge/implove/brush up.
It's perfect for me. I'm using 64gig SD and 32gig CF. So I wanted to move RAW to SD.

Maybe here and
http://www.magiclantern.fm/forum/index.php?topic=5936.new#new
are close-able.

Multiple file selection is future TODO...I have no idea to make multiple file selection now...

minimimi

OK!!!!
I found answer for multiple file selection!!!!!
Soon will open new repo.
Already , almost codes are working. Yay, wait a moment

1%

EOSM now have to touch screen to go up :(

minimimi

https://bitbucket.org/minimimi/magic-lantern-filer-multiselect

basic functions are working. push file twice.

now debugging
-already registerd check when we push copy menu.
-cancel copy operation when we un-select all files

1% ,
we need "../" ?? or need ifdef for EOSM?

1%

Q on eos M is 1 finger tap. No q button, only set. I don't know if you "need" it. I can use it either way.


minimimi

1%
I mean , use ifdef for :
-disable Q
-show "../"
Then you can use file manager with cursol keys. Is this a correct understanding?

I think almost fine on my multiple select codes. please check it except M(sorry.

a1ex

Modules were designed to be portable, so... better just add it back?

minimimi

I got it. Never use ifdefs in modules.
Then, how do you think about M 1%?

1%

Either leave as is or add ../ back. Its only an issue where it will be confusing to people.

* Although probably only 2 people with eos M care.

minimimi

Alex:
Oh! important point is conflicted.

Are you already disabled "Q" ??

a1ex

?! Q works fine here, it goes back by default (unless you override it when creating menu entries).

minimimi

https://bitbucket.org/minimimi/magic-lantern-filer-multiselect/compare/hudson/magic-lantern:unified..unified#chg-modules/file_man/file_man.c

see here.
If you have no problem, enbale selectQ plz for multiple file selection.


Modified
Alex. sorry for confusing. I just understood you are not disable Q everyware. So I can solve myself.

a1ex

File selection works very well, you can even select files from multiple folders and copy them to the same destination dir, very nice!

I've changed the buttons as follows:
- PLAY selects individual files
- menu entry for selecting all files with the same extension (e.g. if you shoot raw+jpeg and you want to delete all jpegs)

We need to be very careful with background tasks and exclusive access to certain data structures; for example, it was trivial to break the copy operation just by navigating to some other directory while copying (!)

minimimi

Thanks your daily cooperation and polish it up. :D
I think we need to add some more miner chagens. When I make it, I will make a pull req.

-we need skip , when src & dst files are idential
-disable automatic power save (However we can't use half-push tric here. and we don't wanna change NVRAM value...)

a1ex

For powersave I would add only a warning in menu.

minimimi

I see. It's one of solution for current our knowlege.
And , pushed small pathces for "src&dst files are idential " and "cleanup memory when unloading".
Please review it.

Marsu42

Um, on my 60d the file browser is extremely slow when I try to browse a directory with a lot of files (like 1000) - is that just me, is it being worked on, or is this just the way it is?