Skip to content

Commit

Permalink
frontend: Rework Dependencies view
Browse files Browse the repository at this point in the history
  • Loading branch information
TheEvilSkeleton committed Jan 31, 2025
1 parent bcddce3 commit 28d6a3b
Showing 1 changed file with 30 additions and 17 deletions.
47 changes: 30 additions & 17 deletions bottles/frontend/details_dependencies_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

import time
import pycurl

from io import BytesIO

from bottles.backend.utils import yaml

from gi.repository import Gtk, GLib, Adw

Expand Down Expand Up @@ -110,27 +114,36 @@ def new_dependency(dependency, plain=False):
self.list_dependencies.append(entry)

@GtkUtils.run_in_main_loop
def callback(_result, _error=False):
self.stack.set_visible_child_name("page_deps")
def callback(result, *_args):
if result is not False:
self.stack.set_visible_child_name("page_deps")
else:
self.stack.set_visible_child_name("page_offline")

def process_dependencies():
time.sleep(0.3) # workaround for freezing bug on bottle load
EventManager.wait(Events.DependenciesOrganizing)
dependencies = self.manager.supported_dependencies
self.manager.supported_dependencies

buffer = BytesIO()

curl = pycurl.Curl()
curl.setopt(
curl.URL, "https://proxy.usebottles.com/repo/dependencies/index.yml"
)
curl.setopt(curl.FOLLOWLOCATION, True)
curl.setopt(curl.WRITEDATA, buffer)

GLib.idle_add(self.empty_list)
try:
curl.perform()
except pycurl.error:
curl.close()
return False

if len(dependencies.keys()) > 0:
for dep in dependencies.items():
if dep[0] in self.config.Installed_Dependencies:
continue # Do not list already installed dependencies
curl.close()

GLib.idle_add(new_dependency, dep)
index = yaml.load(buffer.getvalue())

if len(self.config.Installed_Dependencies) > 0:
for dep in self.config.Installed_Dependencies:
if dep in dependencies:
dep = (dep, dependencies[dep])
GLib.idle_add(new_dependency, dep, plain=True)
for dependency in sorted(index.items()):
is_installed = dependency[0] in self.config.Installed_Dependencies
GLib.idle_add(new_dependency, dependency, plain=is_installed)

RunAsync(process_dependencies, callback=callback)

0 comments on commit 28d6a3b

Please sign in to comment.