Joacchim / Comix

Fork of Comix
GNU General Public License v2.0
17 stars 14 forks source link

Python3 Support #10

Open Cabalist opened 7 years ago

Cabalist commented 7 years ago

Hello!

I am working on Python3 support in a branch here: https://github.com/Cabalist/Comix/tree/pygobject

Python 3 requires PyGObject which in turn requires GTK3. There are a lot of bumps but I currently have a version that opens and reads a comic. There are a ton of graphical glitches, broken features and the like but core functionality is there and the application starts in both Python2 and Python3.

This is targetting Python 2.7+ and Python 3.3+. It requires Pillow and PyGObject installed.

I'd love some feedback on it and/or help migrating PyGTK -> PyGObject.

I'm currently running through workflows and fixing crashes. There are a bunch of TODOs in the code where I have pulled out troublesome functionality. This isn't a pull request because of the number of issues in the current branch but I am curious about feedback from the current maintainer who may have more experience with GTK than me. 😄

Thanks!

Joacchim commented 7 years ago

Sorry to say that I don't have that much experience with pyGTK or PyGObject either. That being said, I can try to help out on specific subjects.

Maybe it's time to actually setup so real CI for this project :/

Cabalist commented 7 years ago

No worries. This is as good excuse as any for me to learn. PyGTK is dunzo but it would be worthwhile to learn the porting process. Biggest issue I am foreseeing is the custom pixbuf stuff.

Serious question: How do we do CI with a graphical app? I've done a ton of webapps but never anything that uses GTK (or QT, etc) ...

Joacchim commented 7 years ago

Well, I'm unsure about the GUI part (though there must somehow be some tools to help), but the whole backend can still be tested, though the forced sending of an event matching the GUI's event; and checking the expected result/behavior through mocking.

Cabalist commented 7 years ago

I have most things working at this point on the Python3 version. Here is what is remaining:

There are a ton of depreciated pieces of GTK laying around and I'm trying to pull those out as I come across them. I'd really like a mode that I can run in and it would flag every depreciated call but for now I am simply reading about each one.

After these get cleaned up I'd be interested to see if anyone is out there to test it.

rachmadaniHaryono commented 6 years ago

anyone still working on this?

also @yindian, do your fork support python3?

yindian commented 6 years ago

@rachmadaniHaryono My fork does not support Python3 and I am still using Python2, with Pillow and PyGObject support in the branch gtk3, which is based on the fork by Joshua Lock.

rachmadaniHaryono commented 6 years ago

i'm working on packaging and there is some problem

Menu dropdowns don't have icons. Is this part of GTK3 or is something not getting setup?

there should be a better way to handle image on package. currently comix have custom install package which copy the image. it is better if image is also included in package and let package lib find the icon

Bookmarks aren't saved across sessions. (This has something to do with pickle)

there is code,which will dump pickle twice. uncommnent of of it will fix the problem. but bookmark item on menu is still blank


also there are 2 error, which haven't listed above

Traceback (most recent call last):
  File "/home/q/git/Comix/src/library.py", line 843, in _add_books
    filechooser.open_library_filechooser_dialog(self._library)
  File "/home/q/git/Comix/src/filechooser.py", line 313, in open_library_filechooser_dialog
    _library_filechooser_dialog = _LibraryFileChooserDialog(library)
  File "/home/q/git/Comix/src/filechooser.py", line 219, in __init__
    self._comboentry.append_text(name)
(comix:18089): Gtk-WARNING **: 12:33:41.701: Theme parsing error: gtk-main.css:73:38: Failed to import: Error opening file /usr/share/themes/Radiance/gtk-3.20/apps/gnome-builder.css: No such file or directory
Joacchim commented 6 years ago

Hey there,

@rachmadaniHaryono I haven't much availability at the moment, but what can I do to help ? Do you have a branch/link for us to take a look at ?

rachmadaniHaryono commented 6 years ago

https://github.com/rachmadaniHaryono/Comix

To use it look for travis.yml, because there is more step before it can be easily installed with pip.


e:

mkdir src/images
mkdir src/images/16x16
ln images/*.png src/images
ln images/*.svg src/images
ln images/16x16/* src/images/16x16
pip install -e .[test]

this didn't include all images on images, mime and messages folder. i didn't know if others image and mime folder are required but messages folder should also included on package somehow