Giter VIP home page Giter VIP logo

Comments (7)

w0lfschild avatar w0lfschild commented on August 25, 2024

What exactly is the arbitrary location?

  1. I don't see any issues with loading images from locations like Desktop/Documents.
  2. Couldn't you just move the image somewhere the app has access to and then load form there?

from colorfulsidebar.

krackers avatar krackers commented on August 25, 2024

I think the issue is unrelated to the entitlements, since it doesn't work with the save dialogs on a plain (non-sandboxed) app either (as an example, if I open up "Console.app" and hit cmd-O the sidebar item images in the open panel are not replaced), although the extension is indeed loaded into console.app (Console doesn't seem to use the openAndSavePanelService so that too is moot).

My fork does seem to cover both cases of TSidebarItemCell and FI_TSidebarItemCell as yours does (https://github.com/krackers/colorfulSidebar_9/blob/master/colorfulSidebar9/colorfulSidebar9.m), so I'm unsure what the issue might be.

I'll close the issue for now since it seems to be an issue only with my forked version.

from colorfulsidebar.

w0lfschild avatar w0lfschild commented on August 25, 2024

What version of macOS are you using?

Screen Shot 2020-03-25 at 2 46 17 PM

Console does use the openAndSavePanelService.

Have you tried moving the image to a location it can be read?

from colorfulsidebar.

krackers avatar krackers commented on August 25, 2024

10.9, which is another reason why I closed the issue since I don't want to waste your time trying to debug this.

Have you tried moving the image to a location it can be read?

On 10.9 at least Console is not sandboxed so reading the image isn't an issue there, and the extension is injected without errors. The sidebar is still not updated though which makes me think something else is awry.

from colorfulsidebar.

w0lfschild avatar w0lfschild commented on August 25, 2024

So if you're using colorfulSidebarX I think you should be able to work around this by placing the image inside the bundle.

Example:
/Library/Application Support/MacEnhance/Plugins/colorfulSidebarX.bundle/Contents/Resources/mydankimage.png

And then adding it to the appropriate icons.plist with a key like this:

<key>mydankimage.png</key>
<array>
	<string>~/Pictures</string>
</array>

To add the functionality to your own build you'd need to add this part into
+ (void)setUpIconMappingDict

// Check if it's a bundle resource
if (image == nil) {
    NSString *keyPath = [key stringByDeletingPathExtension];
    NSString *keyExt = [key pathExtension];
    NSString *bundleResource = [[NSBundle bundleForClass:self] pathForResource:keyPath ofType:keyExt];
    image = [[NSImage alloc] initWithContentsOfFile:bundleResource];
}

The images should then load.

from colorfulsidebar.

krackers avatar krackers commented on August 25, 2024

Yeah that helps solve the sandboxing issue, although the icon still doesn't load. I think the issue is that FI_TSidebarItemCell is not loaded until the save panel is first opened, by which point all the swizzling has been done. (I verified this by using FScript to inspect the loaded classes before/after the save panel was opened).

EDIT: Oh I think your colorfulSidebarX takes care of this by swizzling NSImage itself and then checking if the superview matches FI_TSidebarItemCell. I'll switch to using this approach, which should make things work. Thank you!

from colorfulsidebar.

krackers avatar krackers commented on August 25, 2024

Yup, I was able to get it working by swizzling NSImage using

@implementation wb_NSImageView

- (void)_setImageView:(id)arg1 {
    NSObject *aSuper = [self superview];
    if (aSuper) {
        if ([[aSuper className] isEqualToString:@"FI_TListHeaderCellView"]) {
            dispatch_once(&ONCE_FI_TSidebarItemCell, ^ { ZKSwizzle(wb_TSidebarItemCell, FI_TSidebarItemCell); });
        }
    }
    ZKOrig(void, arg1);
}

@end

(I had to check if superview was FI_TListHeaderCellView because attempting to check the classname of self always returned NSImageView. I'm not sure why this is, since i would expect it to return FI_TImageView or something).

from colorfulsidebar.

Related Issues (16)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.