techartorg / bqt

A Blender add-on to support & manage Qt Widgets in Blender (PySide2)
https://github.com/techartorg/bqt/wiki
Mozilla Public License 2.0
172 stars 25 forks source link

Mac OS X support #12

Open skarndev opened 4 years ago

skarndev commented 4 years ago

I see there is an option to run this code for MacOSX. Is it supported?

JeffHanna commented 4 years ago

I believe a tech art community member completed the Mac support, yes. I do not own a Macintosh so I can not test it for you. the blender_applications\darwin_blender_application.py file looks complete to me.

bob-white commented 4 years ago

I believe there is a dependency on the PyObjc project to make it work. Much like we need pywin32 to make the windows version work.

skarndev commented 4 years ago

I can't seem to be able to install AppKit with pip. Where can I grab the dependencies?

cmcpasserby commented 4 years ago

unless someone else has taken it, over i was never able to get mac support fully working

Amatobahn commented 4 years ago

Last I recall we had it partially working but not at the same level of functionality as we have currently on windows

bob-white commented 4 years ago

I can't seem to be able to install AppKit with pip. Where can I grab the dependencies?

pip install pyobjc should get you AppKit

skarndev commented 4 years ago

It seems there is still an issue. In the Darwin Blender application, there is a method with (double underscore) being called which does not exist in the class. And the handler does not start the Window correctly as "startup" in file__ condition is not fulfilled? Any idea on how to fix the last one?

hannesdelbeke commented 2 years ago

there is a method with __ (double underscore) being called which does not exist in the class

which method is this? afraid I won't be much help here since I don't have a mac.

And the handler does not start the Window correctly as "startup" in file condition is not fulfilled? Any idea on how to fix the last one?

the missing startup file has now been added, see PR https://github.com/techartorg/bqt/pull/22

melMass commented 1 year ago

Hi,

Last time I tried bqt it wasn't working on either mac or windows, @hannesdelbeke just notified me on blender chat that the current master should fix my issues, I will give it another go today and I'm able to test/debug it on mac if needed

hannesdelbeke commented 1 year ago

did you get a chance to test on mac?

melMass commented 1 year ago

Yep my bad it works well, I ended up using a fork of bqt for the specific use case I had but I also tried again with bqt master with similar results

hannesdelbeke commented 1 year ago

thanks for your quick response 🙏 will close this thread for now then, sounds like it works

hannesdelbeke commented 1 year ago

This might not work as intended due to the focus operator. curious if @melMass noticed any errors?

Right now it should run the following code whenever the window focus changes. Which I believe would not run on Mac. Could someone try run this manually on Mac in Blender and see if this errors?

import ctypes

keycodes = [
    ("_ALT", 0x12),
    ("_CTRL", 0x11),
    ("_SHIFT", 0x10),
    ("VK_LWIN", 0x5B),
    ("VK_RWIN", 0x5C),
    ("OSKEY", 0x5B),  # dupe oskey, blender names it this
]

for name, code in keycodes:
    ctypes.windll.user32.keybd_event(code, 0, 2, 0)  # release key
melMass commented 1 year ago

Did it change recently? I did not encounter any error besides that it always segfaults when closing blender (not sure if it's a Mac specific or not though)

hannesdelbeke commented 1 year ago

It didn't change, just surprised you didn't get any errors tbh. The issue on closing also happens on windows. Thanks for the quick reply :)

hannesdelbeke commented 1 year ago

tested myself on mac, and noticed bqt is completely broken. one of the reasons is that the requirements dont include appkit and pyobjc

hannesdelbeke commented 1 year ago

after small fix where method was named with _ but called with __, and manually installing the modules above with pip install iterm2 instead of appkit and pyobjc, bqt now loads without crashing and wraps blender on mac but it also freezes blender ...

Also on exit I get an error, just like on windows https://github.com/techartorg/bqt/issues/47 image

TODO

hannesdelbeke commented 1 year ago

when I set the env var "BQT_DISABLE_WRAP" to 1, to disable wrapping, bqt seems to run great on Mac. see https://github.com/techartorg/bqt/issues/66

hannesdelbeke commented 1 year ago

released some more fixes, since code broken when init on blender startup. likely some code functions different if startup is not finished yet. seems to be running alright now if wrapping is disabled

error

also running into this warning when creating a dock widget. repro 100% image

locall modules PySide2 5.15.2.1 (believe we only use this one) Qt.py 1.3.8 Qt5.py 0.1.0

melMass commented 1 year ago

Honestly it was months ago so I could'nt tell, I feel like I would just have solved the issues you mention locally since they seem straightforward, but I think I would have specify it here (maybe not 😅)...

Anyway now my main driver isn't a Mac anymore but I can still test anything needed on an m1 laptop. Don't hesitate

hannesdelbeke commented 1 year ago

i wonder if perhaps you pip installed bqt on mac before we updated it on pip. it was outdated for over a year on pip, and only a few months ago was updated that version likely worked on mac.

melMass commented 1 year ago

Nope I used this here which is now very outdated: https://github.com/melMass/bqt

I'll start fresh and rety bqt soon as I'm currently reimplementing a lot of my tools in pyside6.

I don't know if you use/heard of Prism v2, it's a pretty awesome asset/shot manager. Most of its core will be open source (it already is but just not "deployed" anywhere yet). The most impressive feature to me is how each integrations are seamless and really well made (some of these will be payed at the end of this month), it's all pyqt based but they seem to be able to ship a very minimal build, I just asked over their discord to know more:

ls blender_integration
╭───┬────────────────────────┬──────┬──────────╮
│ # │          name          │ type │   size   │
├───┼────────────────────────┼──────┼──────────┤
│ 0 │ space_topbar1.py       │ file │     72 B │
│ 1 │ space_topbar2.py       │ file │    534 B │
│ 2 │ PrismAutoSaveRender.py │ file │   3.0 KB │
│ 3 │ PrismInit.py           │ file │   6.1 KB │
│ 4 │ qminimal.dll           │ file │  36.4 KB │
│ 5 │ python3.dll            │ file │  59.0 KB │
│ 6 │ qoffscreen.dll         │ file │ 650.8 KB │
│ 7 │ qwindows.dll           │ file │   1.2 MB │
╰───┴────────────────────────┴──────┴──────────╯
Zophiekat commented 3 months ago

Hello! Are there any updates regarding Mac support? It currently opens 2 windows and one of them is blank with a gray colour, can't interact with any of them. I'd be happy to test stuff out and debug as well :3

Zophiekat commented 3 months ago

Hello! Are there any updates regarding Mac support? It currently opens 2 windows and one of them is blank with a gray colour, can't interact with any of them. I'd be happy to test stuff out and debug as well :3

I found an interesting fix:

cd /Applications/Blender/Contents/MacOS/
./Blender

running it like this form terminal makes the addon and widgets work without any issues at all for some reason

melMass commented 3 months ago

That might explain why I never had any issues, I only run software from the command line