BuliCommander

DEBUG: BCFileList.execute
DEBUG: ...........................................
DEBUG: Search in paths: [<BCFileListPath('/home/name/Pictures/Art/sketches', False)>]
DEBUG: Found 517 of 699 files in 0.1009225845336914s
DEBUG: - Files: 517
DEBUG: - Directories: 0
DEBUG: Filter 517 files to 517 files in 0.30652308464050293s
DEBUG: BCFileList.execute.99-global: 0.4912
DEBUG: BCFileList.execute.01-search: 0.1009
DEBUG: BCFileList.execute.02-filter: 0.3065
DEBUG: BCFileList.execute.03-result: 0.0448
DEBUG: BCFileList.execute.04-buildStats: 0.0386
DEBUG: BCFileList.execute.05-sort: 0.0000
DEBUG: ===========================================
DEBUG: ===========================================
DEBUG: BCFileList.execute
DEBUG: ...........................................
DEBUG: Search in paths: [<BCFileListPath('/home/name/Pictures/Art', False)>]
DEBUG: Found 29 of 31 files in 0.05680274963378906s
DEBUG: - Files: 6
DEBUG: - Directories: 23
DEBUG: Filter 29 files to 6 files in 0.03953099250793457s
DEBUG: BCFileList.execute.99-global: 0.1036
DEBUG: BCFileList.execute.01-search: 0.0568
DEBUG: BCFileList.execute.02-filter: 0.0395
DEBUG: BCFileList.execute.03-result: 0.0033
DEBUG: BCFileList.execute.04-buildStats: 0.0032
DEBUG: BCFileList.execute.05-sort: 0.0000
DEBUG: ===========================================
DEBUG: ===========================================
DEBUG: BCFileList.execute
DEBUG: ...........................................
DEBUG: Search in paths: [<BCFileListPath('/home/name/Pictures/Art/sketches', False)>]
DEBUG: Found 517 of 699 files in 0.05538177490234375s
DEBUG: - Files: 517
DEBUG: - Directories: 0
DEBUG: Filter 517 files to 517 files in 0.27915453910827637s
DEBUG: BCFileList.execute.99-global: 0.4266
DEBUG: BCFileList.execute.01-search: 0.0554
DEBUG: BCFileList.execute.02-filter: 0.2792
DEBUG: BCFileList.execute.03-result: 0.0573
DEBUG: BCFileList.execute.04-buildStats: 0.0341
DEBUG: BCFileList.execute.05-sort: 0.0000
DEBUG: ===========================================

Ok thanks!

So clearly times to process directories are the same, problem occurs during startup…

Grum999

Hi @tom

I’ve opened a ticket for this performances problem:

Also on my side I already made some improvement in file search process, to reduce number of threads due to cache management that is less efficient in multithreading :sweat_smile:

Test on 14250 files, 110GB

Load files metadata

#Threads Without cache initialized With cache initialized
1 (for next version) 10.44s 3.56s
24 (from current version) 19.67s 6.52s

Load files thumbnails

#Threads Without cache initialized With cache initialized
1 1542s 2.61s
14 (for next version - 60% of available threads) 428s 2.70s
24 (from current version) 436s 2.75s

Grum999

3 Likes

Found some improvements:

I continue to check what can be improved :wink:

Grum999

Hi @tom

I’ve made a version v0.9.1b, not officially released yet but all commits are pushed on github repository
You can download & install zip plugin from github code with Import python plugin from web… function


And provide following url https://github.com/Grum999/BuliCommander/archive/refs/heads/v0.9.1b.zip

From my tests, initialization time has been reduced from 2.17s to 0.85s :slight_smile:

Can you tell me if it’s better on your side?

If yes I’ll create an official release

Thanks

Grum999

2 Likes

Startup on the sketch folder seems to be about 3x faster when I time it myself. Nice job and thanks for your work.

One last thing I noticed, unrelated to performance: It seems like toolbars disable themselves after you configure them.

1 Like

Great :blush:

Thanks for your feedback, I never really noticed this until you told me :wink:

Can you be more precise about that?
Example, screenshot, or step to reproduce it could help

Thanks

Grum999

It seems that as soon as I hit ā€œOkayā€ in the Settings dialog, regardless of the configuration tab I’m on, the custom toolbar that I’ve created will be set to disabled and have its docked position reset when I re-enable it.

The specific steps I took:

  1. Create a custom toolbar using your plugin, named ā€œCustomā€, Icons with no text, with actions of ā€œView as gridā€ and ā€œView as listā€. Hit Okay.
  2. Enter the settings again and hit Okay.
1 Like

Oh, it seems like the toolbar state isn’t properly saved until restarting Krita (or BuliCommander?), as it seems like there’s no issue after restarting.

Ok thanks for steps!

It’s not ā€˜disabled’ (I was really thinking the toolbar entered in a disabled state)
It’s more ā€˜hidden’ :slight_smile:

Workaround, in menu Settings > Toolbars you can check again the toolbar

I’ve opened a bug:

I’ll try to fix it tomorrow

Grum999

I’ve been using it a lot more with the faster startup times.

However, there are times where, when first opening BuliCommander in a longer Krita session, it seems to take something like ~10 seconds to startup, even though it only takes about a second on a fresh session. The feeling resembles that of the cache clearing itself for some reason, but I’m not too sure.

Also, it would be nice if sorting actions were available for the toolbar and right-click menu, so that it isn’t necessary to switch to list view and click a particular column to change what it sorts by.

It would also be nice if there was an option to hide .. directories, as they can take up some space in grid view at large thumbnail sizes:
1

Hi @tom

Thanks for feedback! :slight_smile:

I still have to publish v0.9.1 official release, I forgot it :sweat_smile:

For that, the best thing you can do to help is like previously described:

  • Activate debug mode
  • Execute Krita from a console
  • Send me returned logs when you see there’s an abnormal execution time, with possibility some information about context…

That’s interesting and useful features, I’ve created requests here :slight_smile:

Can’t say when I’ll be able to find time to implement them but they’re tracked now :wink:

Concerning this one, I didn’t had time to check it :frowning:

Grum999

Hi @tom

Fixed it tonight, branch 0.9.1 is up to date on github repository but too tired tonight to create an official relase; I’ll do it this week-end

Grum999

1 Like

Hi

Release v0.9.1b is available

[2022-10-22] Version 0.9.1b

  • Improvements:
    – Main interface - Reduce initialization time & folder analysis
  • Bug fix:
    – Main interface - Toolbars are hidden

You can read the full detailed release content directly on github repository.

It’s a minor release: for screenshots and functionalities description read v0.9.0b release note and main BuliCommander page.

Grum999

Thanks for the patch.

Here’s one such case:

DEBUG: BCFileList.execute
DEBUG: ...........................................
DEBUG: Search in paths: [<BCFileListPath('/home/name/Pictures/Art/sketches', False)>]
DEBUG: Found 550 of 742 files in 0.14066338539123535s
DEBUG: - Files: 550
DEBUG: - Directories: 0
DEBUG: Filter 550 files to 550 files in 12.372369050979614s
DEBUG: BCFileList.execute.01-search: 0.14066339
DEBUG: BCFileList.execute.02-filter: 12.37236905
DEBUG: BCFileList.execute.03-result: 0.03150082
DEBUG: BCFileList.execute.04-buildStats: 0.01793504
DEBUG: BCFileList.execute.05-sort: 0.00000906
DEBUG: BCFileList.execute.99-global: 12.56303215
DEBUG: ===========================================

This is after spending 30-50 minutes on a sketch, saving once, closing the document, then clicking ā€œOpen Fileā€.

Man I love your plugins, they should fit for official updates in my opinion! Unfortunately I’m experiencing this bug…

Is it from your plugin or did I install it incorrectly? Btw sorry if I’m answering two years late

Hi

I’m currently over flooded by diapers & others babies things, no time for anything even no time to sleep :face_with_spiral_eyes:

But I took a quick look, it seems on my Windows installation there’s an old WinRAR which wasn’t properly unsinstalled (still present in registry but no executables…) then I didn’t got the error.

If WinRAR is completely removed, the error occurs; same problem with 7Zip

Quick workaround, I’ll try to manage a fix release asap…

  1. Ensure to have last plugin version (Release v0.9.2b Ā· Grum999/BuliCommander Ā· GitHub)

  2. In file C:\Users\Admin\AppData\Roaming\krita\pykrita\bulicommander\pktk\modules\uncompress.py (you really use ā€˜Admin’ user ???) from line 40 replace methods getUnrar() and get7z() with the following code:

    def getUnrar():
        """return unrar executable full path name as string, None if not found"""
        registryKey = None
        value = None
        try:
            # When installed, WinRAR create this registry key where value "path" can be found
            registryKey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe", 0, winreg.KEY_READ)
            if registryKey:
                value, regtype = winreg.QueryValueEx(registryKey, "Path")
        except:
            value=None

        if registryKey:
            winreg.CloseKey(registryKey)

        if not value is None:
            value=os.path.join(value, "unrar.exe")
            if os.path.isfile(value):
                return value
        return None

    def get7z():
        """return 7z executable full path name as string, None if not found"""
        registryKey = None
        value = None
        try:
            # When installed, WinRAR create this registry key where value "path" can be found
            registryKey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", 0, winreg.KEY_READ)
            if registryKey:
                value, regtype = winreg.QueryValueEx(registryKey, "Path")
        except:
            value=None

        if registryKey:
            winreg.CloseKey(registryKey)

        if not value is None:
            value=os.path.join(value, "7z.exe")
            if os.path.isfile(value):
                return value
        return None

Take care about spaces!!
(the indentation in provided code here are normally OK)

  1. Code should like this at the end:

  2. Then once file is modified, start Krita, and plugin should be ok

Grum999

3 Likes

No problem, life eventually get us all! I followed what you did and it worked, thank you for the help! And yes I do use that username, cuz I had no idea what to name my user in my new windows installation @.@

Anyone got this to work with windows 10? (And with the new updates on krita?)

From what i understand this is mainly tested in Linux, and an older version of Krita?

I have tried to get it to work on my windows 10 w/latest krita, the installation is fine, but when I look in the pyton script-box inside ā€˜configure krita menue’ I can see it ā€œtaggedā€ but its not white-tagged as the other scripts, its just gray, and non responsive. I can’t even uncheck it.
Well .. yeah, as you might have understood, its not active or working at all. :slight_smile:

The whole concept/idea sounds soo frikking great and useful thou, but I am no pyton-script coder at all so.. :thinking: I think some one else was talking abouth having the same idea, building a similar manager i meen. don’t recall who it was thou

Anyways, the idea is awsome, to bad I can’t make it work for.me.

Have a splendid day!!

/carl :sweden::sign_of_the_horns:t2:

Edit: I think k it was @EyeOdin that had the same thought of building this kinda plug. As a super novis, or as a total noob in this pyton/scripting-thing i presume this kinda plugin, to be working on windows 10 or greater and with latest Krita, is quite a task to build. :smiley: Anyways have a great day everyone! :hot_beverage:

1 Like

Here @Grum999 describes how you could repair the plugin yourself.
But if you don’t like fiddling around in code, you can get the fixed version out of my cloud:

Alternative download location:

You install plugins in Krita by clicking on ā€œToolsā€ >> ā€œScriptsā€ >> ā€œImport Plugin from Fileā€ and in the dialog that opens, select the file you just downloaded, confirm the selection, then confirm Krita’s message that the plugin is installed and restart Krita. Then you have to search in Krita under ā€˜ā€˜Settings’’ >> ā€˜ā€˜Configure Krita’’ >> ā€˜ā€˜Python Plugin Manager’’ for the plugin you just installed and activate it by checking the box in front of it. Then confirm with ā€œOKā€ and restart Krita to be able to use the plugin.

Michelist

Add/Edit: Added an alternative download location.

2 Likes