-
Notifications
You must be signed in to change notification settings - Fork 452
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Tribler PyQt GUI #2153
New Tribler PyQt GUI #2153
Conversation
I took care of this in PR #2175 with RESTRequest.processingFailed() in restapi/rest_manager.py |
Hey guys, love the work beeing done here! I noticed this one "Create a design for the home page", and I'm guessing you're referring to an Web UI (?) Might I suggest baseing this of something like (my personal favourite) ruTorrent or the orginal uTorrent Web UI |
@jkaberg Only the Qt and Android GUI are being implemented for nowt We would love to see a community developed web UI for Tribler. The REST interface should make it pretty easy. |
retest this please |
Quite a bunch of errors when running your code. First Dispersy blocks and (again) converts all torrents. Then these errors popup:
|
GUI part also complains:
|
@synctext regarding the 2nd error: this is currently expected when Tribler (with the old GUI) is not running/crashes when starting the new GUI. I should have some better error handling/retry mechanism which I will tackle the same time as integrating the twistd plugin. For the first error, I will try to do the same steps on an Ubuntu machine in a moment to see whether the same error is raised. |
@synctext you should enable the HTTP API. This is turned off by default and we currently have no option to turn it on from the GUI. Please modify
After that, first start the old GUI and next you can try to start the new GUI. I got it working on a proxmox (ubuntu) machine: https://gyazo.com/2f5350f5ccf7b26e22510882b73bd2b9 |
A progress update: I've fixed some minor and major bugs and integrated the Tribler twistd plugin! This means that it is no longer necessary to have two separate GUIs besides each other to test this PR. You still need two repositories (I will update the instructions in the first post in a moment). Moreover, I created a bunch of GUI tests. They are using the fake API provider and are not complete yet. During the run, screenshots are taken, like the old GUI tests. Running these on Linux, Windows and OS X will be my next priority. Other work:
|
Will old GUI and this GUI coexist for a couple of versious? I don't believe that new GUI will cover 100% of features from the day one, even if the developer tries to achieve that. There will probably missing sorting here, missing option there which would need to use old GUI as workaround. |
@vi as far as I know, we don't have any plans to let the old GUI co-exists. We are too understaffed to manage two GUIs. However, it's not very hard to extend the new GUI with features since it's written in Qt. Also, we try to make extending the REST API as easy as possible which means that these missing features can be implemented by some other developers. Running the new GUI at the moment is not easy since you need two repositories besides each other. I will work on some installers next week and I will let you know when they are ready :) |
@vi However, the next experimental release (I think 6.6) will have the old wx GUI and will still receive bug fixes for now. |
Is it only the GUI or also some internal changes? May one run this GUI and traditional GUI interchangeably? GUI-only changes should not suppose to require |
@vi the way the GUI talks to the core was a mess. It's now nice and tidy instead of one big bag of code. So new GUI is also about superior code organisation and detecting bugs faster. |
Shall I suggest those checkboxes (what is an "endpoiont"?) for features I use (or want) to ensure they will not be missing? Downloads
Network
|
that is a big list @vi :-) |
So until this next release with further features the old Tribler UI should be supported. My use case of Tribler seems to be far away from Youtube... |
5281b72
to
3dcd360
Compare
Credit mining GUIDBTuples can be removed if #2398 is merged. Mind to check it? |
@brussee thanks, I've updated the checkboxes (was a bit outdated). |
Managed to get the GUI tests working on OS X and Windows, see https://jenkins.tribler.org/job/pers/job/Test_gui_mac_devos50/10/ and https://jenkins.tribler.org/job/pers/job/Test_gui_win64_devos50/9/ |
solid progress! |
@synctext np, go ahead :) Just managed to get the first OS X builder working with this new GUI + PyInstaller: https://jenkins.tribler.org/job/pers/job/Build-Tribler7_OSX/. note that this build is quite unstable and needs more polishing. |
|
4f51b8e
to
e611d52
Compare
I've created a separate job for the GUI tests: https://jenkins.tribler.org/job/GH_Tribler_PR_tests_GUI/. When this PR is merged, we can execute this multi-job on every PR. |
624434f
to
3e6258c
Compare
After 6.5 months, this PR is finally ready to be merged! I cleaned up the code as much as I can and fixed many Pylint errors. Regarding the code coverage: the GUI tests are executed in a separate job and this will test the code in the TriblerGUI directory. I will merge this PR tomorrow if no-one has further comments on it. |
Updated documentation of the builders and development environment due to changed requirements.
Please make sure to backup your
.Tribler
directory before trying out the new GUI! Things might not work out as expected.In this PR, I add the new GUI, written in pyQt to Tribler. Unfortunately, the new GUI and Tribler core should be in the same repo since we want only one issue tracker.
General info
The GUI is written using the Qt framework with PyQt bindings so Python can be used to program the GUI. I tried to create as much as possible elements using the Qt Designer application. The designer files (ending with the
.ui
file extension) can be found in theqt_resources
directory. Images used by the new GUI can be found in theimages
directory.Running the GUI
Before you run the GUI, make sure you have Qt5 and pyQt installed.
cd
to the tribler directory and enter the following commands:Additionally, you can use any IDE (I’m using PyCharm) to run the GUI.
In order to test the GUI while developing, I’ve created a separate project that provides fake data to the new Tribler GUI such as channels, torrents and downloads. This project can be found here. Note that not all endpoints are currently implemented and this project is during development, the main source of data for the GUI. I’m also planning to use this project for the automated GUI tests. Running this project is easy, checkout the project from GitHub,
cd
to theTestTriblerAPI
directory and executepython main.py
. Generating the random data will take around 20-30 seconds.Progress
There are many endpoints that should be implemented in the GUI, the fake API provider and the real Tribler project. Below, I will keep track of the progress for each endpoint, categorised by functionality.
General
I will implement the save settings endpoint in Triblerafter we are making use of
ConfigObj
.Channels
Torrents
Search
My Channel
Downloads
Other tasks
Make use of the model-view-delegation pattern Qt provides. This will improve performance when rendering (big) lists tremendously.not feasible, I had bad performance when working with model-view. This is due to the fact that custom widgets have to be created for every item in the list. I've implemented a lazy-loaded list that is working very well.Fixes #1802, fixes #2190, fixes #14