From b58e538cf3f840a2a40540172e1e9ed9bc168bfe Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Sun, 9 Jun 2019 01:24:03 -0500 Subject: [PATCH] Initial commit. --- README.md | 12 + bin/pytop-0-0-1-x64.deb | Bin 0 -> 18396 bytes src/debs/build.sh | 34 ++ src/debs/chownAll.sh | 6 + src/debs/pytop-0-0-1-x64/DEBIAN/control | 8 + src/debs/pytop-0-0-1-x64/DEBIAN/postrm | 11 + src/debs/pytop-0-0-1-x64/bin/pytop | Bin 0 -> 6168 bytes src/debs/pytop-0-0-1-x64/opt/Pytop/PyTop.py | 181 ++++++++++ .../opt/Pytop/resources/PyTop.glade | 339 ++++++++++++++++++ .../opt/Pytop/resources/icons/archive.png | Bin 0 -> 1670 bytes .../opt/Pytop/resources/icons/audio.png | Bin 0 -> 1544 bytes .../opt/Pytop/resources/icons/bin.png | Bin 0 -> 858 bytes .../opt/Pytop/resources/icons/dir.png | Bin 0 -> 850 bytes .../opt/Pytop/resources/icons/doc.png | Bin 0 -> 702 bytes .../opt/Pytop/resources/icons/pdf.png | Bin 0 -> 925 bytes .../Pytop/resources/icons/presentation.png | Bin 0 -> 882 bytes .../opt/Pytop/resources/icons/spreadsheet.png | Bin 0 -> 707 bytes .../opt/Pytop/resources/icons/text.png | Bin 0 -> 798 bytes .../opt/Pytop/resources/icons/video.png | Bin 0 -> 1313 bytes .../opt/Pytop/resources/icons/web.png | Bin 0 -> 1845 bytes .../opt/Pytop/resources/stylesheet.css | 13 + .../opt/Pytop/utils/Dragging.py | 79 ++++ .../opt/Pytop/utils/FileHandler.py | 42 +++ .../pytop-0-0-1-x64/opt/Pytop/utils/Icon.py | 96 +++++ .../opt/Pytop/utils/Settings.py | 154 ++++++++ .../opt/Pytop/utils/__init__.py | 4 + .../usr/share/doc/pytop/copyright | 22 ++ src/versions/pytop-0.0.1/Pytop/PyTop.py | 181 ++++++++++ .../pytop-0.0.1/Pytop/resources/PyTop.glade | 339 ++++++++++++++++++ .../Pytop/resources/icons/archive.png | Bin 0 -> 1670 bytes .../Pytop/resources/icons/audio.png | Bin 0 -> 1544 bytes .../pytop-0.0.1/Pytop/resources/icons/bin.png | Bin 0 -> 858 bytes .../pytop-0.0.1/Pytop/resources/icons/dir.png | Bin 0 -> 850 bytes .../pytop-0.0.1/Pytop/resources/icons/doc.png | Bin 0 -> 702 bytes .../pytop-0.0.1/Pytop/resources/icons/pdf.png | Bin 0 -> 925 bytes .../Pytop/resources/icons/presentation.png | Bin 0 -> 882 bytes .../Pytop/resources/icons/spreadsheet.png | Bin 0 -> 707 bytes .../Pytop/resources/icons/text.png | Bin 0 -> 798 bytes .../Pytop/resources/icons/video.png | Bin 0 -> 1313 bytes .../pytop-0.0.1/Pytop/resources/icons/web.png | Bin 0 -> 1845 bytes .../Pytop/resources/stylesheet.css | 13 + .../pytop-0.0.1/Pytop/utils/Dragging.py | 79 ++++ .../pytop-0.0.1/Pytop/utils/FileHandler.py | 42 +++ src/versions/pytop-0.0.1/Pytop/utils/Icon.py | 96 +++++ .../pytop-0.0.1/Pytop/utils/Settings.py | 154 ++++++++ .../pytop-0.0.1/Pytop/utils/__init__.py | 4 + src/versions/pytop-0.0.1/Pytop_exec_bin.cpp | 10 + src/versions/pytop-0.0.1/compileBin.sh | 6 + 48 files changed, 1925 insertions(+) create mode 100644 README.md create mode 100644 bin/pytop-0-0-1-x64.deb create mode 100644 src/debs/build.sh create mode 100644 src/debs/chownAll.sh create mode 100644 src/debs/pytop-0-0-1-x64/DEBIAN/control create mode 100755 src/debs/pytop-0-0-1-x64/DEBIAN/postrm create mode 100755 src/debs/pytop-0-0-1-x64/bin/pytop create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/PyTop.py create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/PyTop.glade create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/archive.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/audio.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/bin.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/dir.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/doc.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/pdf.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/presentation.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/spreadsheet.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/text.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/video.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/web.png create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/resources/stylesheet.css create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Dragging.py create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/utils/FileHandler.py create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Icon.py create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Settings.py create mode 100644 src/debs/pytop-0-0-1-x64/opt/Pytop/utils/__init__.py create mode 100644 src/debs/pytop-0-0-1-x64/usr/share/doc/pytop/copyright create mode 100755 src/versions/pytop-0.0.1/Pytop/PyTop.py create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/PyTop.glade create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/archive.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/audio.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/bin.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/dir.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/doc.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/pdf.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/presentation.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/spreadsheet.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/text.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/video.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/icons/web.png create mode 100644 src/versions/pytop-0.0.1/Pytop/resources/stylesheet.css create mode 100644 src/versions/pytop-0.0.1/Pytop/utils/Dragging.py create mode 100644 src/versions/pytop-0.0.1/Pytop/utils/FileHandler.py create mode 100644 src/versions/pytop-0.0.1/Pytop/utils/Icon.py create mode 100644 src/versions/pytop-0.0.1/Pytop/utils/Settings.py create mode 100644 src/versions/pytop-0.0.1/Pytop/utils/__init__.py create mode 100644 src/versions/pytop-0.0.1/Pytop_exec_bin.cpp create mode 100755 src/versions/pytop-0.0.1/compileBin.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..7121b99 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Pytop +Pytop is a Gtk + Python gui to have a custom desktop interface. + +# Notes +Need python 3 + +# TODO +Add file rename functionality. +Attach copy, cut, paste, and delete signals to the controls menu. +Add search functionality to the current directory. +Add a settings file to store values. +Improve icon detection for Steam. diff --git a/bin/pytop-0-0-1-x64.deb b/bin/pytop-0-0-1-x64.deb new file mode 100644 index 0000000000000000000000000000000000000000..875ada81412475d1a0384d1bd7fab240dc4bc0f1 GIT binary patch literal 18396 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 literal 0 HcmV?d00001 diff --git a/src/debs/build.sh b/src/debs/build.sh new file mode 100644 index 0000000..48e85d7 --- /dev/null +++ b/src/debs/build.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Fixes ownershp +function main() { + sudo find . -type f -exec chmod 644 {} + + sudo find . -type d -exec chmod 755 {} + + + # Set postrm permissions + for i in `find . -name postrm`; do + sudo chmod 755 "${i}" + done + + # Set pytop permissions + for i in `find . -name pytop`; do + sudo chmod 755 "${i}" + done + + sudo chown -R root:root ./*/ + + builder; + bash ./chownAll.sh +} + +#builds debs +function builder() { + for i in `ls`; do + if [[ -d "${i}" ]]; then + dpkg --build "${i}" + else + echo "Not a dir." + fi + done +} +main; diff --git a/src/debs/chownAll.sh b/src/debs/chownAll.sh new file mode 100644 index 0000000..44bef62 --- /dev/null +++ b/src/debs/chownAll.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +function main() { + sudo chown -R abaddon:abaddon . +} +main; diff --git a/src/debs/pytop-0-0-1-x64/DEBIAN/control b/src/debs/pytop-0-0-1-x64/DEBIAN/control new file mode 100644 index 0000000..e22da34 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/DEBIAN/control @@ -0,0 +1,8 @@ +Package: pytop64 +Version: 0.0-1 +Section: python +Priority: optional +Architecture: amd64 +Depends: ffmpegthumbnailer (>= 2.0.10-0.1) +Maintainer: Maxim Stewart <1itdominator@gmail.com> +Description: Pytop is a custom desktop GUI. diff --git a/src/debs/pytop-0-0-1-x64/DEBIAN/postrm b/src/debs/pytop-0-0-1-x64/DEBIAN/postrm new file mode 100755 index 0000000..4962c4c --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/DEBIAN/postrm @@ -0,0 +1,11 @@ +#!/bin/bash +#postrm (script executed after uninstalling the package) +#set -e + +if [ -f /bin/pytop ]; then + rm /bin/pytop +fi + +if [ -d /opt/Pytop ]; then + rm -rf /opt/Pytop +fi diff --git a/src/debs/pytop-0-0-1-x64/bin/pytop b/src/debs/pytop-0-0-1-x64/bin/pytop new file mode 100755 index 0000000000000000000000000000000000000000..9f3608f2366fe79f6e308d241bae80339965a777 GIT binary patch literal 6168 zcmeHLUu;uV7(ea);-IStQa6%a6q142T?b=S`FGpFxHFSX*pviD*KHjwS=*((ovR@@ z9gtL=F42cQk;Mm}eDK9&4@6j|;DZk%A(|-0g|Ik~=@M`uB&>elx!<>5$}q+UAIwg3 z&+mMHe&_qnpL=`meS3dXgWYBmTgodB%MdB5Sl0#Wug!?`EY5{ zf@roF?^D-|#pIUC@ z+9SA2NZ($Bq4??}3A@G7_#gPc7!W1}@a0{mVO_yH=mP`0Ffz~Y~&y}{z7OpMM7nl1MJ?{au zxt#6N1-C!;%SEy1c^%NE58f%(-!GUgQG|Z>l3~wG>VsbwPcThnw%-6#X46fmODi;J zp&UZ{t*H!@O+TWHp>9orSToz0zIt3w-_Qqd&Na6*Ub!?`pb7oTc)NrvI{-3k`+#$= zv|^tScPF~l(uy-O9`@fl=7CK0-Lg(k8|%ignm3(=dX|1r?yNwM|fdm{m4M zbZh%9ji3+h{uFYXxwVkVaC;WoG9LHueZ%{DWBLbgtGA_TXw&&(1(F@ALOkqEKWt3T zH*KDlYcT#WZzhI4ot-t5nxA-1n$i!N()0V$e|R%%uIqynHvOfaleck=j<$J^dE30l zz5a>eY<_oP>12PjiZ<9w)v;cqx;bUUdaFfm$_T}x+mz;1ORQJzP2ud?%JX)50CA74 zhZH^mYyxZnJOwxaxD96J0^l*g>ww<@ZiH3G`xuMutwX}r@3fV#EGizh6*+M~uZL^y zVJ7n;IzU<4*WCN)dk=hhZ*BzH4c7qZ5QW3p;BdWCTJmP`fY@8MbIZ1k&!ZZ7N8rM# zdjS<*hx44hepTUdNCZUKVxk`}um=H!&*A*Y?sK?4%-io!hVp%m$`1;3hx=Ti?(hs2 zz3R~74v*L2_Btwk4h8(c-{&Zn_va;`k3v73BX+l3mSc%YGC`~*WLP{y(|MTx%jFpZocN4VM1*yOlN6uzqa<_Q%!k9f zEF2$>3vxUI z*QDN{4)J_$ExG(!FwVo?=J+FaO}dYeg7fEZIeZ^UC#d$og>%6CF}ntm5M!k1my-F; zf@5dCi}VeEc&{^`pC4{|0PypI+#j32gJ8gWmHB*s_7R_-JDflJF&+gz-uo=`{Xal_ zg#zRA%$h%`#Yt%3oHBnjPm`um;`8%{_JXZe&8@v5? literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/PyTop.py b/src/debs/pytop-0-0-1-x64/opt/Pytop/PyTop.py new file mode 100644 index 0000000..b49dd21 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/PyTop.py @@ -0,0 +1,181 @@ +#!/usr/bin/python3 + +# Gtk Imports +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') +gi.require_version('WebKit2', '4.0') + +from gi.repository import Gtk as gtk +from gi.repository import Gdk as gdk +from gi.repository import GObject as gobject +from gi.repository import WebKit2 as webkit + + +# Python imports +import os, threading, subprocess, hashlib +from utils import Settings, Icon, FileHandler, Dragging +from os.path import isdir, isfile, join +from threading import Thread +from os import listdir + + +gdk.threads_init() + + +class Main: + def __init__(self): + # Needed for glade file load to work right... + webkit.WebView() + + self.builder = gtk.Builder() + self.filehandler = FileHandler() + self.settings = Settings() + # self.drag = Dragging() + self.settings.attachBuilder(self.builder) + self.builder.connect_signals(self) + + self.currentPath = "" + window = self.settings.createWindow() + self.usrHome = self.settings.returnUserHome() + self.desktopPath = self.settings.returnDesktopPath() + self.ColumnSize = self.settings.returnColumnSize() + self.desktop = self.builder.get_object("Desktop") + + # Add filter to allow only folders to be selected + self.loadProgress = self.builder.get_object("loadProgress") + selectedDirDialog = self.builder.get_object("selectedDirDialog") + filefilter = self.builder.get_object("Folders") + selectedDirDialog.add_filter(filefilter) + selectedDirDialog.set_filename(self.desktopPath) + self.setDir(selectedDirDialog) + + self.webview = self.builder.get_object("webview") + self.settings.setDefaultWebviewSettings(self.webview, self.webview.get_settings()) + self.webview.load_uri(self.settings.returnWebHome()) + + window.fullscreen() + window.show_all() + + + def setDir(self, widget, data=None): + self.currentPath = widget.get_filename() + self.getDirectoryList(self.currentPath) + # Thread(target=self.getDirectoryList, args=(self.currentPath,)).start() + + def getDirectoryList(self, dir): + dirs = ['.', '..'] + files = [] + + for f in listdir(dir): + file = join(dir, f) + if self.settings.isHideHiddenFiles(): + if f.startswith('.'): + continue + + if isfile(file): + files.append(f) + else: + dirs.append(f) + + dirs.sort() + files.sort() + + files = dirs + files + fractionTick = 1.0 / 1.0 if len(files) == 0 else len(files) + tickCount = 0.0 + row = 0 + col = 0 + x = 0 + y = 0 + + self.loadProgress.set_text("Loading...") + self.loadProgress.set_fraction(0.0) + self.clear(self.desktop) + for file in files: + eveBox = Icon().createIcon(dir, file) + # self.drag.connectEvents(self.desktop, eveBox) + eveBox.connect("button_press_event", self.clickManager, (eveBox,)) + eveBox.connect("enter_notify_event", self.settings.mouseOver, ()) + eveBox.connect("leave_notify_event", self.settings.mouseOut, ()) + + gobject.idle_add(self.addToGrid, (self.desktop, eveBox, col, row,)) + tickCount = tickCount + fractionTick + self.loadProgress.set_fraction(tickCount) + + col += 1 + if col == self.ColumnSize: + col = 0 + row += 1 + + self.desktop.show_all() + self.loadProgress.set_text("Finished...") + + def addToGrid(self, args): + args[0].attach(args[1], args[2], args[3], 1, 1) + + def clickManager(self, widget, eve, params): + self.settings.setSelected(params[0]) + if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: + box = widget.get_children()[0] + children = box.get_children() + fileName = children[1].get_text() + dir = self.currentPath + file = dir + "/" + fileName + + if fileName == ".": + self.getDirectoryList(dir) + elif fileName == "..": + parentDir = os.path.abspath(os.path.join(dir, os.pardir)) + self.currentPath = parentDir + self.getDirectoryList(parentDir) + elif isdir(file): + self.currentPath = file + self.getDirectoryList(file) + # Thread(target=self.getDirectoryList, args=(file,)).start() + else: + self.filehandler.openFile(file) + elif eve.type == gdk.EventType.BUTTON_PRESS and eve.button == 3: + box = widget.get_children()[0] + children = box.get_children() + + popover = self.builder.get_object("controlsWindow") + popover.set_relative_to(children[1]) + popover.set_position(gtk.PositionType.RIGHT) + popover.show_all() + + input = self.builder.get_object("renamerInput") + input.set_text(children[1].get_text()) + + popover.popup() + + + + def showWebview(self, widget): + self.builder.get_object("webViewer").popup() + + def loadHome(self, widget): + self.webview.load_uri(self.settings.returnWebHome()) + + def runSearchWebview(self, widget, data=None): + if data.keyval == 65293: + self.webview.load_uri(widget.get_text().strip()) + + def refreshPage(self, widget, data=None): + self.webview.load_uri(self.webview.get_uri()) + + def setUrlBar(self, widget, data=None): + self.builder.get_object("webviewSearch").set_text(widget.get_uri()) + + + def clear(self, object): + while True: + if object.get_child_at(0,0)!= None: + object.remove_row(0) + else: + break + + +if __name__ == "__main__": + main = Main() + gtk.main() diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/PyTop.glade b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/PyTop.glade new file mode 100644 index 0000000..1c7adfd --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/PyTop.glade @@ -0,0 +1,339 @@ + + + + + + + + inode/directory + + + + False + + + True + False + vertical + + + 300 + 26 + True + True + gtk-edit + + + False + True + 0 + + + + + True + False + + + gtk-copy + True + True + True + True + True + + + False + True + 0 + + + + + gtk-cut + True + True + True + True + True + + + False + True + 1 + + + + + gtk-paste + True + True + True + True + True + + + False + True + 2 + + + + + gtk-delete + True + True + True + 65 + True + True + + + False + True + 3 + + + + + False + True + 1 + + + + + + + True + False + Show Mini Webbrowser + gtk-go-down + 3 + + + False + center + 800 + 600 + desktop + False + center + + + + + + 256 + True + False + vertical + + + True + False + + + True + True + edit-find-symbolic + False + False + + + True + True + 0 + + + + + True + False + select-folder + Folders + Directory Chooser + + + + False + True + 1 + + + + + True + True + True + webDropDown + True + + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + True + in + + + True + False + + + True + False + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + 2 + + + + + + + False + True + True + popOutBttn + left + + + True + False + vertical + + + True + False + + + gtk-home + True + True + True + True + True + + + + False + True + 0 + + + + + gtk-refresh + True + True + True + True + True + + + + False + True + 1 + + + + + True + True + edit-find-symbolic + False + False + + + + True + True + 2 + + + + + False + True + 0 + + + + + True + True + + + + + + + False + True + 1 + + + + + + diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/archive.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/archive.png new file mode 100644 index 0000000000000000000000000000000000000000..7943e4e39efd8fc25296d3a28da55f9919ed31a2 GIT binary patch literal 1670 zcmX|B2~?BU68@7|3|f`OvI*4)PmiPx*dwQ<#g+iF#HTz=z$z{fF_2%fnfwq4LW0@Y zR3H!tTNZ+Vl;9%)3?QILSyd9EfQkZAx+x%vU9_b?ZBOTXckaxc@0^)CcgYG53)!%4 z%Q^r6HV{Mik>ELIb)ZqOz85T84WPII#0WGR{c!q!Q?P5x4n4{R0GGzqfjGG(-xXeT zhJubjWL6x+qj0DIkH_-_nF-uj3Y+T5;>4HD@7)5E99BsYAVjAE;c$e5CC0Lt*a#Yx zLEW);YyxJyx61HOglH@dK&CLTp;R6SK~Kb4!ElhY8VqEyQ#fEe4FUoKvHlRm0Z%1D zAd877)8NehbTEO6r9lw;b1$!04wV9dNz_;tgTZ2QR}1l?gRxX5m&)}zm4fF|y!LqR z_Bttw>Hq-5v+x5EL2#CTrK?LdY%svC`G#qz1E%~Vj*gD5t`2`Y7!1b20Tb-!OAPSq zYcuwlj05e)!S-f_ETc#&ER;KDzZKJl_SXBWVZME9A zI&Du=!$3z%8hASW3^hF=PH=`QOo$UE#0%;184MV-^Dvm8C)HU zY-;E+z|i*?^|y@rez?PJ&2ZDKckft7E%!z(_st_?7W3FB49obadBQsS@czArWA`Q} zCubf#_;&iq-1OAk%+$jC^TmaQ7mF|!mtMSBUS2K<5&s6C;)f6^j0_;&u|cnM*zUH= z1Bdtgc#qF#L?S;m^;~9FcJ_$bY_?de;}a7Tua=izyT^R;U-(V<5cl~<&>lZ8`t=yb z->FX{A`Q*IY4Rq2HE@88_5G;X{vBU@xM6*BkCn6sdpghU_C{axQp}2ZZc;*}B-9GVD?J%TMEvJ0QNS;z3fL1T~^tn!*0J{uy8e=k7>{i14rbezP8=wqL;A*ANnWp z071Uimf%6!EZlEP*zHb`?g-cw3Lt+(BG&+Q$J~rj2JkY&3GzmSUFsv+3s2k(eD7+%#EyR#PeKiIx&k$Rk3!A}W$Qv?sEa$aYMo8LUSW7C79UnlW@M(`&Yt-MR_eBnnrgtt(=QwnCUoJx+2dLXUlO6iLI z)5O<+U_(#D8#!>~+r!axy0-eb>z%E;fgu|r(Br+&cC+IS(FBUw-Skr(aG-v-_2w>Q zxs3W920)um?5wq{@BAZtTh0)kE1wJw1z+t%+ASe(*yL|mN~Q7+buG@N4FIz@Gi;Gq z(`+kf>^_W~>h-r@6Y0YqT5GixMj^4mv-jgrPCfM>;uiayb`Ulh?Yv1}UBOfw-bj-M z0wEd?=aC$dAsaEZc^K#vdYkfzT78@Pm)=+O-XiOD@qk8^YPrl)wuniPb^B zy%!jNyj9#b!`wa~m}qpu{vuY_9t#Cp#l-y^qq>Y(xTL4t^jq3)942=h=h6R*=*-)+ zjBOx_TmU8|k_e1|UKOD`x~wN=Z0FIWFK~*=C%I-Zp3!~d;FnE&yEwbnnHx(G!To}U?63HnOl`}=c@ vLkCR>kcaNm+1dL1FZ}w{WAOd{q017TgD*%|V_I@oKTu*&*gkzg%=te7aFZ2g literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/audio.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/audio.png new file mode 100644 index 0000000000000000000000000000000000000000..c0101346b611e7495861f4efe2c511f76b51e5e7 GIT binary patch literal 1544 zcmZuxdpOg382_1#wYlcDP%Wj4+h|9w2Q!nE80M04nOQb$)AnPKVADonltl zL5HREOw8q+D5;PxatTMONfadx#+mciInQ&x&-;Gg=Y2n)_ws$7_xa|L{Pt@ij1d3; zXcB$A0+lv;UEylVd;BubQE8xDPa+wvJbZX;uF~I-6K5kW&<%wn zj+uR`M&*(DT~$eYas}1jLP%A>r5w}z6ZPsB9f^l3j7`ITF2BQLe)^b{n?>IuoIfcm zEm5SuXS-zxN4p=-(6<8jY&HIo<9Mj%<4;>2mRqb2g_zm>W|aVtCPNHgroh!(N`nK_ zQ<~#9w=68{I*@LlaoG{u7Y6ps8f2joYdbHGQO&k>d})pwX)Z^;Ky)gLfW%p(zS;|S zhq0bZqG5|MOKeB2ftAYB62Xfmt(YKfk!{`B;!kpKLB*r1)t#q5ui%^%MzJmM;M%13 zk}Qd+%b=65%lY8%(Y2h~IDw16)&P$VXgnJJI3Cag^}HM0Ic#M`(VmLA1Cfn;y7SWC z?3N-Vj_#s!&k${bt9F3_rW<;B;VS&EXZ8oj526(CF_?pEUw@7qW^0`d)42!9rKq&u z1Y*JfJF85Tp@#+%o%647;s;2GXL-;o=hc86t@f!4CIu_q@$IS5-Ags!P9W*3%CuQS z4|mm$qaG%0klZ{e;D%hU#Y{1mZ4}pru@!GB3tYwW^SaUTwT1_0?*AGEaVBJ5b3Ik6 ze)dAQPW0J|?IKONhRS`hh?e(cf+^_MxtTMm^tH%Bfsd|CEvv#lA#=P29wT3F#X?ao zfkhFyPfg@-mHTwON^C0b8)<7_Di8hFBCwIiQUN+w?8!ZAS__NX4(blQ{_}IrrKQ;5 z7CSQ|^vh(5B6T@`q=`D9%V2l5ZTWydwpL4@>(kDp!*b^tU$?kqPLwI;Rj19dWyh-F zB~s1Y`s+eGX3Awxm&{O+jEjX_)E+%OQzX>rZ|H`Ru_**Wx|df7&beK-x;0trxp*$z zZeu?Gy8Wk<@fH&EPHAPCZuAkK;W|71a&`X|8St00&W}Kkdh8GJjr6W>@!F?BS1D0SAL zxZ;T3&N)bu{|c(QglMKWcIar;P{EA=x07mnrAy!G?UV4fsV_`~-JAB+n?!(bdXGO( z7iyVCIW3zU*jl_-7}~9GD_y(ifg#7+7a&M}23(10r0G)fyU5@#BsY%n7xv~;)ioT1 zu^9$v*!6(K|1)hd)X2ED)qw6VK=PVLE(Uj{i?k=xTnbJu;liYBC?EEVrD$%N(6GyU z%Fm@y_BvJQ*^kx!eUOjLzqRdl3OS?e55>5vEYC7$jhM!2S~>pOZKs}&5eShx;A6D@ zyLbP$j&#@}>FsXB;d4F}2O3c|nYZTZqfS#p?gxyVxAC@&7Vpa#^mUr04nA8b32D39 z!7VLJWB2(IXRl54?~Jk(DtwKKdSQ==p%L@NNS7w*_l5c|k73`|Fb||N=Ss%qr|hKp zFcNPwoI@=KZ0n!Q419iA7#B6nT5v0>`HfkgGTQ5`MsO>O$XbkVT!UHdTL6(U;Cknq{Q{mCL=3J`#dGHam+6_rCl di=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBf%ipdZ&9wFhW=V}MVHE09J8Z@~aA5*-~K z5fM>PP>_?8^XAPPi0p+67cO4Bc=_^WAotm`XF&4#^XCu}$awMM#mt#A=gyrwZ{EE5 z^XD&EuwdP~bsINs+_GiMwQJYz-@pIh!GlMS9=(438e*XO^6L^n`(#Rj{DK+SIFyvN zwDk>)J-vfMH*MLv|M1}tA3uHm{N?Lc&6p-z1_s79PZ!6KjC*fqlC<5TCeqS|*mRL?Kgc7(I8Vi=8|}I5;?NKlFb92xL>4nJ z$hLzpWB=2SsX#%=64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBfZYpno_di4|!2nE;;ZdJgpSz-K{;CN})=gZxe$uiHlb3Cnx_r~r6&t6n*feeBrs*p;&sep2 z#_G*8S8tiQdMnTtp!q-(xF)ho0G+E>666=mz{teP#m&ttEFvl4>6lif#XQ z8W13Ilv$zc>xRv19^Jh6-?ox*^G&|HnMr59#~t{-#It^DV2glL{i@!-kE4TcEV%OT z-p;}>w+z1?PA#6E70US!LfC%He;CD4G5_F<15KQ|YZz6wZP-1z`D{=_^8Ki6{avaJ zN7k*_@#bs#uBW^^zIST;wfe&9^4sO*Om&4j>bpKNANjrI3)7R|Q=T#KpZwhZ_*dum zPKyse-tD=U{igWAzqi#}eLQv9Y-+XEJ!hQx&W=4!!(c)y8wWhvU6w0CUnUvw{_K};>3gl1wceg9u(=*FzrTHMS*!j2>yL7`K8m_0?z;72 ikl~}S#Zrnb|3dd~^!AY~RX+CuWU8mDpUXO@geCx;cxYb$ literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/doc.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f8388267bc53ad5b95537b2977873701ac3de87b GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&p zZ_9Puk?XiC-}6{u%6r8rAArhKrhnG%zo$Rxf&SbtZY#d}uKt>}<$cc94;{z8cOCoQ zef;}`Q$J^&|26ykuVq(%{r~^}l(nx4&>f;BL4LsuGV1!hQ>M<92A` za$u2V;P7(L&tTlTfNe{YTmTot0$~9MRfh(*0}QPUOht^WN18--M73=5e-P5pBywZE zqa&Bf?#D-!zU*O~{q@o;^8-1PL-!t-%^{%RaKQdUf!l(-hV)bR3I~jz$_qT0S@&69 z;D^cqV^xO-=8c(K|8@#XgfTm*UyupEDR0WO-Js**PYaPZ#^2g)85_AZEX$o=90q!r N!PC{xWt~$(69DZ(DkcB` literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/pdf.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..9f40122a8e9ef281901e085651fa66de960cae4c GIT binary patch literal 925 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&pK?PTIAN%F-q_%-x$%8-V~{Ru^Jlh}&z$X_xi~y`b$XGV{4yf+ zWn?H&`^%{CSBbH&a#P=y6~8Sj`Mhk&=VePjFJJm)Mi|9-EZE1`1tA5moJqLU6Kq8j5VGvjv*QM-d>CJKja|7`e0Z0qDT7{ z@Ue=x9@zCTit+dV|C5)xEuOis`2EaGr$@H>bMLhORy~vHEa0IcWLx}nu9@QL5C7Jh zX&z=3(1Zr%7`Gi@ z+rcECz{PMtSfD}Gfx-O%LmLBA2_x$XCeaErj?Z?Dt0hEM9Jpw!5zzSR;LT>oh)-;D z-n^G8s(8a2u>7j+ zJjt8L#OQU^+W%$ol~c1VVm|%2De->yIiSp{$#TD@bqZhb;MWIIABs=S_AyQP;aJC9 z@7=`^``2qPQ>12fE92L^Z&7o_S!&dSSYtQ+%hYC)a9y}J+~C8l_ggjg7FAu;*!ziN zM)gzP8CSILH(b-+-*8WRe#6G_PuBw(7%L7eyZw(>d&4WXDQgbA*>(Eg)|m(N)`VR6 iI#nofzso27&zyp}+m6{Mw{HSQ6oaR$pUXO@geCx$l#&Sm literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/presentation.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/presentation.png new file mode 100644 index 0000000000000000000000000000000000000000..3a339af593f4932996667370db88dbdc050f86b2 GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&pG({c6t+>by80{rP(O=NlPcPs@Hg1J-h0;pch9pXZf+o>%^PQTx|5 zr(f5ce_eC=b=?(Y$m7;ukK2AdZvXSF_s@$Ne_qZ6+WY6_>_4yO{&_X;&#U=B_xydm z2$g7u zy(C%^MBZ?E3;YYq@; zP29q_Hf(L_y2CGRR%D2_ugaMC>EHP$zLTdlCB8p;vvcF`{ZEo=ISURHn)rH$X~^?& zh(7%Ls^Ln8EX%38Wp@R3xwkT3+GD7vwS`yEq18%~fz_G)&hCqCIt-jT41yI53I>e( z4zS)}l77Hd)1b+~;P1dNje${yky(O?;{vOQ0(Zy*GuMdCoH08VIIx~u=h(<~#qWH6 zP>XN&fu|<}v#v1|hgwf#t@C7L6$x-?{LlGi@A>yXrfLN8E%<5_DY1cji=7a2S>tsN zu^0ZA7`pjycDFR@XDUo!JN7Z%Qf#;D<(k(Al4T^K>V2yp{_(l7vHrrm=jk?$lke2b zU%SUt#jfn^@|Uq(d)qEN-}U)cZ)+Sh vg(L2s-MoMEqZICF(UN^ZN^i1n34LRJ(>cXB_UJWGf@bh^^>bP0l+XkK!91hU literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/spreadsheet.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..710efa631bbe46a69e7d43808c675b0f5c2411c0 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&pjHh&2juQ60FprD3nqb#g8ju=dvf#l z7rV~$aGeiCp6-jiz1R4Auk{DY`fUgbSP~q(B0PLcbk?3cpyJje?d?aq=3id8;PRq{ zmlrL)wtVfa_3LhJ*nV&4|NsBZl4mjk-62{MbP0l+XkKZ6g@< literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/text.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/text.png new file mode 100644 index 0000000000000000000000000000000000000000..2546fcd90b78ab5752f74234520af202a6c3987b GIT binary patch literal 798 zcmXAlYe-XJ7{}kuB}=C`tC3Uis2C#YEF(%oowrN5E?>zZM=u=!!)$Hk)mC9(O>wRa ztp}7FMumD>MN&vAS7Q~pfuQN{Z5`z>l!S*Rq_&wNlqwpPlwd-drieN{O^})_sR}Fz z8;E)wQ_-|GPasfGxSS>$aRsSXlNw#vk)VN4;2IsS6Vx?l>Ewdk>>NQ&YxNMQKNTO7 zl|i&xt#-TJ@AuEm&3V0Ehr zKmx%31Q;lRal74+_xJaM_|(*t&1RdPo}QVRnVp@TpPvUFFc5()%gf6EgXYT0%IfMW z7=Vpn07O6&L}2y7b9YXF(PUauDMg&vSYE>31A3#Wwe5Px?T3%Y#>cG-&Ly`u5Dfiv z4d-1#h`|??3T3JV|KwQ-Q^;v|mUFqm$Q!9Hd?=PZ8S}+wB(iH?XMS864LScrkDYpO zq(^b9EU(~AbKi*BvGM%Z;IrkV9%D!xcquds+dsF6t-bHn;)u?m3SshkMqElKD#~Ft zzKiPIl3TmOXR1P|+k|#8n7f&gJ6UlP(HXtG0n2bYC&ctdZXd8H6DQQ7=*u#$Gc`@j zOG)MYU~KvaIr^iozD2e@aiyOuz+~qGBf=|9EOs1rC%K82rd64gp9(Qc?ox7`qifS$ zhy@>^@%xDRdtjr6wV$w*vv`E1m^CWO4=K1F!8X=g-_0UrwK;PvXzd%yk7wArTRwcf nSXpJ**OfNuzE@@2Gn)FB={Hgt{G?7Rd?*r?RhF8IYp?zTm=%Df literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/video.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/video.png new file mode 100644 index 0000000000000000000000000000000000000000..55afa98662c7439702c4391be32151b59c65e253 GIT binary patch literal 1313 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBf%ipdZ&9wFl@+Mo$;Vkcv5P@A_uQq{heETG?y0yzC9fraSuz>xc-iKB^S-C2j9}#|+2Trc2JzJRTnfTzEQIH^v=t-uh~( zxc^nT;G^AFyj-F_E#k~I^^GcclIec6N$|KDEZ^HL2yRXD%)^JLrNU0ZK4B(tA;`e?y7+bL3Cv<0)SasI_CAaj~N#c(YL7*x>s=RUEzB;@PrBh& zH)D%og8`esF@{4D4id~9$qb1+3OxwHP0QHrcBOO2*;w_|95lANuJ3MPXxI5(O|0kK zRl|QgH_Ue({_&96Vc&zq|1bC+7nk<1Yuu@Ae>qY6-K)v7Yqj^V-D!HvaJ2dMZM$~H zu!p<&;w*k~%)4!W;alV}{X=v0Uhk~<**mx5&CKevXN-+f=bm`FyWqv#SP7|{IXP;~ zcdqPSDZPH*cNRIBH>Ot885zEOeQr=yWB#r(Ve!YC*VuRDXUi=Ow$PzK?rCL+Fg2guB&_nRD$dv!BcjdVIbiOV!A>s5L(B z_M7webFwb`{Y$Vp;Qn~>iWvW|`+K5R742;lemwcu^H&o81xx0 uulP@kQGh{%aR*z&{2E6WF!;j1pYh0Ho3#3@qwc_>hQZU-&t;ucLK6Tg{6(q& literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/web.png b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/icons/web.png new file mode 100644 index 0000000000000000000000000000000000000000..17017ce3f5c04869fd808d91732939ea9b32b36d GIT binary patch literal 1845 zcmX9-30PBC7JeZt0R&N&im4Vm5LuK(q#_nd0tCVUMu-({*@BToAxV=L*+e!GkXn@r ziUOk+5JanpgIGYI)*&h-ERqnyl7#n?m%Ok@b?nd&oyW}mzH{$?&iTLZo^$Vi%IPuT zRu-Er006L}MTEv;XY!g6@Yp_1EnQ3Cg%lctKp-eo`<0k$&W|`O1OVdwHNz!tzVs;; zbOgiV!8qPAFf&EK0x~l*JvrPH!qgN#%abQayT0({W{mXN8i~OH(^&u=%LtrksXVR| zgU!ldIWbrn{PYx%HMdbK!l)b8sALhy<_Unflnkc`Rwf4oXU~*Vv1II8GK9y^7I4zo zAP^GbLTopXZa#0EirfR|UQfRzGrPO?&Y85umTaIGS*bWSRZ zD`W}1nAtmpDPF#w-d>5tN4f#P=q^2q5r*9|K0dBcDCXzqr>3S*6jdsf7@nJ(TU=ax z^X84gV89~F%gakkOIT!KVF5u9wOXxGsW2B?7{Cbs2N(x)F^*QN#qdzr=R?%L4N;wk z!d-?UTqF@B32nP1(p3`aCW-QpM0-eLeI#+d!*tK#Sf62r@5n*Fk;8jOjs%P)QO1%f zW6aR8RO;B#@Yly8$2rmC=?Ab4>^;QlZta9Ma9XfOQ)x*il%Eyr)$clua!?v zPtV-AI9ppWTYp~JP^G+GgLR~8tyA6mhwA<qq?n0{jdpZeC|;T_Bc>935wYc z?RSIdZcyw_h~Wtx^oEXn0e#~Sb>4-#9zZ=0q23Ot{|WT03#PlnhkW70eQ_glMx^$_R@Y<)VrQXIbz5PntJ0g8Rbn*LUbxsP8jj*_-Z(cX zN{bSF%odkOt+)PVn?cJf{v^KG_!od*Z`y6_gfo9@lyz1e6<-f@N(DIgw^V+X{8VBDgh-5c#-s8%>=Ds{ zKfZ$B2p)baC-hl5^DPUkA4$M1z~aT=lsHFr2wwAQ^^hG?0?{1_9}F`e&AR*C-`<=x z*RYSBq9v~+{b;!tNT=fS*ot>s1gZ^;zlQsQ*$T>i*<;Y?y|^T*Id-^@z$QlD35-#i zJ2sI;MpjWp9kw)4zj?RIGhcdL7=G-=JU=#Yy(dm>A@;T}0CztyE+AaJ=M8AMMO$_| z7Id+bi9q0dam5HecC>c_tpmQK;`iVX>Wcn}ut+z3R7*7gNk8~2Q z1}q%HZJIat|JlfU$d-TD#L3I&q0rktK6eLt#iF1#&8Ilzqp1VwcF)ZjcT=&PXup+d zrtYX6^88blp$1-*%0m?Q_y0cl4qR{hAfh?`YOtxbIN6Bo?^I^~=S_`RJz#u_xuM8K zT55i|B_nE=rK5wevMuH?>Bb+{SGUyyyt<;S|E!pu1J}QO|8A5sa;v2BD^p^p&yHcv RE^NR6T3Afz&y?h%{{oe`z-j;h literal 0 HcmV?d00001 diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/stylesheet.css b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/stylesheet.css new file mode 100644 index 0000000..5a93664 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/resources/stylesheet.css @@ -0,0 +1,13 @@ +viewport, +treeview, +treeview > header, +notebook > stack, +notebook > header { + background-color: rgba(0, 0, 0, 0.24); +} + + +notebook > header { + background-color: rgba(0, 0, 0, 0.24); + border-color: rgba(0, 232, 255, 0.64); +} diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Dragging.py b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Dragging.py new file mode 100644 index 0000000..a0b2856 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Dragging.py @@ -0,0 +1,79 @@ +import os, gi + +gi.require_version('Gdk', '3.0') + +from gi.repository import Gdk +from gi.repository import GObject + + +class Dragging: + def __init__(self): + # higher values make movement more performant + # lower values make movement smoother + self.SENSITIVITY = 1 + self.desktop = None + self.EvMask = Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON1_MOTION_MASK + self.offsetx = 0 + self.offsety = 0 + self.px = 0 + self.py = 0 + self.maxx = 0 + self.maxy = 0 + + def connectEvents(self, desktop, widget): + self.desktop = desktop + widget.set_events(self.EvMask) + widget.connect("button_press_event", self.press_event) + widget.connect("motion_notify_event", self.draggingEvent) + widget.show() + + def press_event(self, w, event): + if event.button == 1: + p = w.get_parent() + # offset == distance of parent widget from edge of screen ... + self.offsetx, self.offsety = p.get_window().get_position() + # plus distance from pointer to edge of widget + self.offsetx += event.x + self.offsety += event.y + # self.maxx, self.maxy both relative to the parent + # note that we're rounding down now so that these max values don't get + # rounded upward later and push the widget off the edge of its parent. + self.maxx = self.RoundDownToMultiple(p.get_allocation().width - w.get_allocation().width, self.SENSITIVITY) + self.maxy = self.RoundDownToMultiple(p.get_allocation().height - w.get_allocation().height, self.SENSITIVITY) + + + def draggingEvent(self, widget, event): + # x_root,x_root relative to screen + # x,y relative to parent (fixed widget) + # self.px,self.py stores previous values of x,y + + # get starting values for x,y + x = event.x_root - self.offsetx + y = event.y_root - self.offsety + # make sure the potential coordinates x,y: + # 1) will not push any part of the widget outside of its parent container + # 2) is a multiple of self.SENSITIVITY + x = self.RoundToNearestMultiple(self.Max(self.Min(x, self.maxx), 0), self.SENSITIVITY) + y = self.RoundToNearestMultiple(self.Max(self.Min(y, self.maxy), 0), self.SENSITIVITY) + if x != self.px or y != self.py: + self.px = x + self.py = y + self.desktop.move(widget, x, y) + + def Min(self, a, b): + if b < a: + return b + return a + + def Max(self, a, b): + if b > a: + return b + return a + + def RoundDownToMultiple(self, i, m): + return i/m*m + + def RoundToNearestMultiple(self, i, m): + if i % m > m / 2: + return (i/m+1)*m + return i/m*m diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/FileHandler.py b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/FileHandler.py new file mode 100644 index 0000000..ac387e0 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/FileHandler.py @@ -0,0 +1,42 @@ + +import subprocess + + +class FileHandler: + def __init__(self): + # 'Filters' + self.office = ('.doc', '.docx', '.xls', '.xlsx', '.xlt', '.xltx' '.xlm', '.ppt', 'pptx', '.pps', '.ppsx', '.odt', '.rtf') + self.vids = ('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm') + self.txt = ('.txt', '.text', '.sh', '.cfg', '.conf') + self.music = ('.psf', '.mp3', '.ogg' , '.flac') + self.images = ('.png', '.jpg', '.jpeg', '.gif') + self.pdf = ('.pdf') + + # Args + self.MEDIAPLAYER = "mpv"; + self.IMGVIEWER = "mirage"; + self.MUSICPLAYER = "/opt/deadbeef/bin/deadbeef"; + self.OFFICEPROG = "libreoffice"; + self.TEXTVIEWER = "leafpad"; + self.PDFVIEWER = "evince"; + self.FILEMANAGER = "spacefm"; + self.MPLAYER_WH = " -xy 1600 -geometry 50%:50% "; + self.MPV_WH = " -geometry 50%:50% "; + + + def openFile(self, file): + print("Opening: " + file) + if file.lower().endswith(self.vids): + subprocess.call([self.MEDIAPLAYER, self.MPV_WH, file]) + elif file.lower().endswith(self.music): + subprocess.call([self.MUSICPLAYER, file]) + elif file.lower().endswith(self.images): + subprocess.call([self.IMGVIEWER, file]) + elif file.lower().endswith(self.txt): + subprocess.call([self.TEXTVIEWER, file]) + elif file.lower().endswith(self.pdf): + subprocess.call([self.PDFVIEWER, file]) + elif file.lower().endswith(self.office): + subprocess.call([self.OFFICEPROG, file]) + else: + subprocess.call(['xdg-open', file]) diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Icon.py b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Icon.py new file mode 100644 index 0000000..55debe8 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Icon.py @@ -0,0 +1,96 @@ + +# Gtk Imports +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') + +from gi.repository import Gtk as gtk +from gi.repository import Gio as gio +from gi.repository import GdkPixbuf + +import os, hashlib +from os.path import isdir, isfile, join + + +class Icon: + def __init__(self): + self.GTK_ORIENTATION = 1 # HORIZONTAL (0) VERTICAL (1) + self.iconImageWxH = [64, 64] + self.iconWxH = [128, -1] + self.iconMargins = 8 + self.usrHome = os.path.expanduser('~') + + + def createIcon(self, dir, file): + fullPathFile = dir + "/" + file + eveBox = gtk.EventBox() + icon = gtk.Box() + label = gtk.Label() + thumbnl = self.defineIconImage(file, fullPathFile) + + label.set_max_width_chars(1) + label.set_ellipsize(3) # ELLIPSIZE_END (3) + label.set_lines(2) + label.set_line_wrap(True) + label.set_line_wrap_mode(2) # WRAP_WORD (0) WRAP_CHAR (1) WRAP_WORD_CHAR (2) + label.set_width_chars(1) + label.set_text(file) + + icon.set_size_request(self.iconWxH[0], self.iconWxH[1]); + icon.set_property('orientation', self.GTK_ORIENTATION) + icon.add(thumbnl) + icon.add(label) + + eveBox.add(icon) + eveBox.show_all() + return eveBox + + def defineIconImage(self, file, fullPathFile): + thumbnl = gtk.Image() + vidsList = ('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm') + imagesList = ('.png', '.jpg', '.jpeg', '.gif') + + if file.lower().endswith(vidsList): + fileHash = hashlib.sha256(str.encode(fullPathFile)).hexdigest() + hashImgpth = self.usrHome + "/.thumbnails/normal/" + fileHash + ".png" + if isfile(hashImgpth) == False: + self.generateThumbnail(fullPathFile, hashImgpth) + + thumbnl = self.createGtkImage(hashImgpth, self.iconImageWxH) + elif file.lower().endswith(imagesList): + thumbnl = self.createGtkImage(fullPathFile, self.iconImageWxH) + else: + thumbPth = self.getSystemThumbnail(fullPathFile, self.iconImageWxH[0]) + thumbnl = self.createGtkImage(thumbPth, self.iconImageWxH) + + return thumbnl + + def getSystemThumbnail(self, filename,size): + final_filename = "" + if os.path.exists(filename): + file = gio.File.new_for_path(filename) + info = file.query_info('standard::icon' , 0 , gio.Cancellable()) + icon = info.get_icon().get_names()[0] + + icon_theme = gtk.IconTheme.get_default() + icon_file = icon_theme.lookup_icon(icon , size , 0) + if icon_file != None: + final_filename = icon_file.get_filename() + + return final_filename + + def generateThumbnail(self, fullPathFile, hashImgpth): + subprocess.call(["ffmpegthumbnailer", "-t", "65%", "-s", "300", "-c", "jpg", "-i", fullPathFile, "-o", hashImgpth]) + + def createGtkImage(self, path, wxh): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( + filename = path, + width = wxh[0], + height = wxh[1], + preserve_aspect_ratio = True) + return gtk.Image.new_from_pixbuf(pixbuf) + except Exception as e: + print(e) + + return gtk.Image() diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Settings.py b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Settings.py new file mode 100644 index 0000000..a114522 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/Settings.py @@ -0,0 +1,154 @@ + +# Gtk Imports +import gi, cairo, os +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') + +from gi.repository import Gtk as gtk +from gi.repository import Gdk as gdk + +class Settings: + def __init__(self): + self.builder = None + self.hoveredFile = None + self.selectedFile = None + + self.DEFAULTCOLOR = gdk.RGBA(0.0, 0.0, 0.0, 0.0) # ~#00000000 + self.MOUSEOVERCOLOR = gdk.RGBA(0.0, 0.9, 1.0, 0.64) # ~#00e8ff + self.SELECTEDCOLOR = gdk.RGBA(0.4, 0.5, 0.1, 0.84) + + self.hideHiddenFiles = True + self.usrHome = os.path.expanduser('~') + self.desktopPath = self.usrHome + "/Desktop" + self.ColumnSize = 10 + self.webHome = 'http://webfm.com/' + + + def attachBuilder(self, builder): + self.builder = builder + self.builder.add_from_file("resources/PyTop.glade") + + def createWindow(self): + # Get window and connect signals + window = self.builder.get_object("Window") + window.connect("delete-event", gtk.main_quit) + self.setWindowData(window) + return window + + def setWindowData(self, window): + screen = window.get_screen() + visual = screen.get_rgba_visual() + if visual != None and screen.is_composited(): + window.set_visual(visual) + + window.set_app_paintable(True) + window.connect("draw", self.area_draw) + monitors = self.getMonitorData(screen) + window.resize(monitors[0].width, monitors[0].height) + + def area_draw(self, widget, cr): + cr.set_source_rgba(0.0, 0.0, 0.0, 0.64) + cr.set_operator(cairo.OPERATOR_SOURCE) + cr.paint() + cr.set_operator(cairo.OPERATOR_OVER) + + def getMonitorData(self, screen): + monitors = [] + for m in range(screen.get_n_monitors()): + monitors.append(screen.get_monitor_geometry(m)) + + for monitor in monitors: + print(str(monitor.width) + "x" + str(monitor.height) + "+" + str(monitor.x) + "+" + str(monitor.y)) + + return monitors + + def isHideHiddenFiles(self): + return self.hideHiddenFiles + + def returnUserHome(self): + return self.usrHome + + def returnDesktopPath(self): + return self.usrHome + "/Desktop" + + def returnColumnSize(self): + return self.ColumnSize + + def returnWebHome(self): + return self.webHome + + def mouseOver(self, widget, eve, args): + hand_cursor = gdk.Cursor(gdk.CursorType.HAND2) + self.builder.get_object("Window").get_window().set_cursor(hand_cursor) + if widget != self.selectedFile: + widget.override_background_color(gtk.StateType.NORMAL, self.MOUSEOVERCOLOR) + + def mouseOut(self, widget, eve, args): + watch_cursor = gdk.Cursor(gdk.CursorType.LEFT_PTR) + self.builder.get_object("Window").get_window().set_cursor(watch_cursor) + if widget != self.selectedFile: + widget.override_background_color(gtk.StateType.NORMAL, self.DEFAULTCOLOR) + + def setSelected(self, eveBox): + if self.selectedFile: + self.selectedFile.override_background_color(gtk.StateType.NORMAL, self.DEFAULTCOLOR) + + eveBox.override_background_color(gtk.StateType.NORMAL, self.SELECTEDCOLOR) + self.selectedFile = eveBox + + + + def setDefaultWebviewSettings(self, widget, settings=None): + # Usability + settings.set_property('enable-fullscreen', True) + settings.set_property('print-backgrounds', True) + settings.set_property('enable-frame-flattening', False) + settings.set_property('enable-plugins', True) + settings.set_property('enable-java', False) + settings.set_property('enable-resizable-text-areas', True) + settings.set_property('zoom-text-only', False) + settings.set_property('enable-smooth-scrolling', True) + settings.set_property('enable-back-forward-navigation-gestures', False) + settings.set_property('media-playback-requires-user-gesture', False) + settings.set_property('enable-tabs-to-links', True) + settings.set_property('enable-caret-browsing', False) + + # Security + settings.set_property('user-agent','Mozilla/5.0 (X11; Generic; Linux x86-64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Safari/605.1.15') + settings.set_property('enable-private-browsing', False) + settings.set_property('enable-xss-auditor', True) + settings.set_property('enable-hyperlink-auditing', False) + settings.set_property('enable-site-specific-quirks', True) + settings.set_property('enable-offline-web-application-cache', True) + settings.set_property('enable-page-cache', True) + settings.set_property('allow-modal-dialogs', False) + settings.set_property('enable-html5-local-storage', True) + settings.set_property('enable-html5-database', True) + settings.set_property('allow-file-access-from-file-urls', False) + settings.set_property('allow-universal-access-from-file-urls', False) + settings.set_property('enable-dns-prefetching', False) + + # Media stuff + # settings.set_property('hardware-acceleration-policy', 'on-demand') + settings.set_property('enable-webgl', False) + settings.set_property('enable-webaudio', True) + settings.set_property('enable-accelerated-2d-canvas', True) + settings.set_property('auto-load-images', True) + settings.set_property('enable-media-capabilities', True) + settings.set_property('enable-media-stream', True) + settings.set_property('enable-mediasource', True) + settings.set_property('enable-encrypted-media', True) + settings.set_property('media-playback-allows-inline', True) + + # JS + settings.set_property('enable-javascript', True) + settings.set_property('enable-javascript-markup', True) + settings.set_property('javascript-can-access-clipboard', False) + settings.set_property('javascript-can-open-windows-automatically', False) + + # Debugging + settings.set_property('enable-developer-extras', False) + settings.set_property('enable-write-console-messages-to-stdout', False) + settings.set_property('draw-compositing-indicators', False) + settings.set_property('enable-mock-capture-devices', False) + settings.set_property('enable-spatial-navigation', False) diff --git a/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/__init__.py b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/__init__.py new file mode 100644 index 0000000..d623701 --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/opt/Pytop/utils/__init__.py @@ -0,0 +1,4 @@ +from utils.Dragging import Dragging +from utils.Settings import Settings +from utils.Icon import Icon +from utils.FileHandler import FileHandler diff --git a/src/debs/pytop-0-0-1-x64/usr/share/doc/pytop/copyright b/src/debs/pytop-0-0-1-x64/usr/share/doc/pytop/copyright new file mode 100644 index 0000000..04b188e --- /dev/null +++ b/src/debs/pytop-0-0-1-x64/usr/share/doc/pytop/copyright @@ -0,0 +1,22 @@ +Pytop is copyright 2019 Maxim Stewart. +Pytop is currently developed by ITDominator <1itdominator@gmail.com>. + +License: GPLv2+ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +See /usr/share/common-licenses/GPL-2, or + for the terms of the latest version +of the GNU General Public License. diff --git a/src/versions/pytop-0.0.1/Pytop/PyTop.py b/src/versions/pytop-0.0.1/Pytop/PyTop.py new file mode 100755 index 0000000..b49dd21 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/PyTop.py @@ -0,0 +1,181 @@ +#!/usr/bin/python3 + +# Gtk Imports +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') +gi.require_version('WebKit2', '4.0') + +from gi.repository import Gtk as gtk +from gi.repository import Gdk as gdk +from gi.repository import GObject as gobject +from gi.repository import WebKit2 as webkit + + +# Python imports +import os, threading, subprocess, hashlib +from utils import Settings, Icon, FileHandler, Dragging +from os.path import isdir, isfile, join +from threading import Thread +from os import listdir + + +gdk.threads_init() + + +class Main: + def __init__(self): + # Needed for glade file load to work right... + webkit.WebView() + + self.builder = gtk.Builder() + self.filehandler = FileHandler() + self.settings = Settings() + # self.drag = Dragging() + self.settings.attachBuilder(self.builder) + self.builder.connect_signals(self) + + self.currentPath = "" + window = self.settings.createWindow() + self.usrHome = self.settings.returnUserHome() + self.desktopPath = self.settings.returnDesktopPath() + self.ColumnSize = self.settings.returnColumnSize() + self.desktop = self.builder.get_object("Desktop") + + # Add filter to allow only folders to be selected + self.loadProgress = self.builder.get_object("loadProgress") + selectedDirDialog = self.builder.get_object("selectedDirDialog") + filefilter = self.builder.get_object("Folders") + selectedDirDialog.add_filter(filefilter) + selectedDirDialog.set_filename(self.desktopPath) + self.setDir(selectedDirDialog) + + self.webview = self.builder.get_object("webview") + self.settings.setDefaultWebviewSettings(self.webview, self.webview.get_settings()) + self.webview.load_uri(self.settings.returnWebHome()) + + window.fullscreen() + window.show_all() + + + def setDir(self, widget, data=None): + self.currentPath = widget.get_filename() + self.getDirectoryList(self.currentPath) + # Thread(target=self.getDirectoryList, args=(self.currentPath,)).start() + + def getDirectoryList(self, dir): + dirs = ['.', '..'] + files = [] + + for f in listdir(dir): + file = join(dir, f) + if self.settings.isHideHiddenFiles(): + if f.startswith('.'): + continue + + if isfile(file): + files.append(f) + else: + dirs.append(f) + + dirs.sort() + files.sort() + + files = dirs + files + fractionTick = 1.0 / 1.0 if len(files) == 0 else len(files) + tickCount = 0.0 + row = 0 + col = 0 + x = 0 + y = 0 + + self.loadProgress.set_text("Loading...") + self.loadProgress.set_fraction(0.0) + self.clear(self.desktop) + for file in files: + eveBox = Icon().createIcon(dir, file) + # self.drag.connectEvents(self.desktop, eveBox) + eveBox.connect("button_press_event", self.clickManager, (eveBox,)) + eveBox.connect("enter_notify_event", self.settings.mouseOver, ()) + eveBox.connect("leave_notify_event", self.settings.mouseOut, ()) + + gobject.idle_add(self.addToGrid, (self.desktop, eveBox, col, row,)) + tickCount = tickCount + fractionTick + self.loadProgress.set_fraction(tickCount) + + col += 1 + if col == self.ColumnSize: + col = 0 + row += 1 + + self.desktop.show_all() + self.loadProgress.set_text("Finished...") + + def addToGrid(self, args): + args[0].attach(args[1], args[2], args[3], 1, 1) + + def clickManager(self, widget, eve, params): + self.settings.setSelected(params[0]) + if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: + box = widget.get_children()[0] + children = box.get_children() + fileName = children[1].get_text() + dir = self.currentPath + file = dir + "/" + fileName + + if fileName == ".": + self.getDirectoryList(dir) + elif fileName == "..": + parentDir = os.path.abspath(os.path.join(dir, os.pardir)) + self.currentPath = parentDir + self.getDirectoryList(parentDir) + elif isdir(file): + self.currentPath = file + self.getDirectoryList(file) + # Thread(target=self.getDirectoryList, args=(file,)).start() + else: + self.filehandler.openFile(file) + elif eve.type == gdk.EventType.BUTTON_PRESS and eve.button == 3: + box = widget.get_children()[0] + children = box.get_children() + + popover = self.builder.get_object("controlsWindow") + popover.set_relative_to(children[1]) + popover.set_position(gtk.PositionType.RIGHT) + popover.show_all() + + input = self.builder.get_object("renamerInput") + input.set_text(children[1].get_text()) + + popover.popup() + + + + def showWebview(self, widget): + self.builder.get_object("webViewer").popup() + + def loadHome(self, widget): + self.webview.load_uri(self.settings.returnWebHome()) + + def runSearchWebview(self, widget, data=None): + if data.keyval == 65293: + self.webview.load_uri(widget.get_text().strip()) + + def refreshPage(self, widget, data=None): + self.webview.load_uri(self.webview.get_uri()) + + def setUrlBar(self, widget, data=None): + self.builder.get_object("webviewSearch").set_text(widget.get_uri()) + + + def clear(self, object): + while True: + if object.get_child_at(0,0)!= None: + object.remove_row(0) + else: + break + + +if __name__ == "__main__": + main = Main() + gtk.main() diff --git a/src/versions/pytop-0.0.1/Pytop/resources/PyTop.glade b/src/versions/pytop-0.0.1/Pytop/resources/PyTop.glade new file mode 100644 index 0000000..1c7adfd --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/resources/PyTop.glade @@ -0,0 +1,339 @@ + + + + + + + + inode/directory + + + + False + + + True + False + vertical + + + 300 + 26 + True + True + gtk-edit + + + False + True + 0 + + + + + True + False + + + gtk-copy + True + True + True + True + True + + + False + True + 0 + + + + + gtk-cut + True + True + True + True + True + + + False + True + 1 + + + + + gtk-paste + True + True + True + True + True + + + False + True + 2 + + + + + gtk-delete + True + True + True + 65 + True + True + + + False + True + 3 + + + + + False + True + 1 + + + + + + + True + False + Show Mini Webbrowser + gtk-go-down + 3 + + + False + center + 800 + 600 + desktop + False + center + + + + + + 256 + True + False + vertical + + + True + False + + + True + True + edit-find-symbolic + False + False + + + True + True + 0 + + + + + True + False + select-folder + Folders + Directory Chooser + + + + False + True + 1 + + + + + True + True + True + webDropDown + True + + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + True + in + + + True + False + + + True + False + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + 2 + + + + + + + False + True + True + popOutBttn + left + + + True + False + vertical + + + True + False + + + gtk-home + True + True + True + True + True + + + + False + True + 0 + + + + + gtk-refresh + True + True + True + True + True + + + + False + True + 1 + + + + + True + True + edit-find-symbolic + False + False + + + + True + True + 2 + + + + + False + True + 0 + + + + + True + True + + + + + + + False + True + 1 + + + + + + diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/archive.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/archive.png new file mode 100644 index 0000000000000000000000000000000000000000..7943e4e39efd8fc25296d3a28da55f9919ed31a2 GIT binary patch literal 1670 zcmX|B2~?BU68@7|3|f`OvI*4)PmiPx*dwQ<#g+iF#HTz=z$z{fF_2%fnfwq4LW0@Y zR3H!tTNZ+Vl;9%)3?QILSyd9EfQkZAx+x%vU9_b?ZBOTXckaxc@0^)CcgYG53)!%4 z%Q^r6HV{Mik>ELIb)ZqOz85T84WPII#0WGR{c!q!Q?P5x4n4{R0GGzqfjGG(-xXeT zhJubjWL6x+qj0DIkH_-_nF-uj3Y+T5;>4HD@7)5E99BsYAVjAE;c$e5CC0Lt*a#Yx zLEW);YyxJyx61HOglH@dK&CLTp;R6SK~Kb4!ElhY8VqEyQ#fEe4FUoKvHlRm0Z%1D zAd877)8NehbTEO6r9lw;b1$!04wV9dNz_;tgTZ2QR}1l?gRxX5m&)}zm4fF|y!LqR z_Bttw>Hq-5v+x5EL2#CTrK?LdY%svC`G#qz1E%~Vj*gD5t`2`Y7!1b20Tb-!OAPSq zYcuwlj05e)!S-f_ETc#&ER;KDzZKJl_SXBWVZME9A zI&Du=!$3z%8hASW3^hF=PH=`QOo$UE#0%;184MV-^Dvm8C)HU zY-;E+z|i*?^|y@rez?PJ&2ZDKckft7E%!z(_st_?7W3FB49obadBQsS@czArWA`Q} zCubf#_;&iq-1OAk%+$jC^TmaQ7mF|!mtMSBUS2K<5&s6C;)f6^j0_;&u|cnM*zUH= z1Bdtgc#qF#L?S;m^;~9FcJ_$bY_?de;}a7Tua=izyT^R;U-(V<5cl~<&>lZ8`t=yb z->FX{A`Q*IY4Rq2HE@88_5G;X{vBU@xM6*BkCn6sdpghU_C{axQp}2ZZc;*}B-9GVD?J%TMEvJ0QNS;z3fL1T~^tn!*0J{uy8e=k7>{i14rbezP8=wqL;A*ANnWp z071Uimf%6!EZlEP*zHb`?g-cw3Lt+(BG&+Q$J~rj2JkY&3GzmSUFsv+3s2k(eD7+%#EyR#PeKiIx&k$Rk3!A}W$Qv?sEa$aYMo8LUSW7C79UnlW@M(`&Yt-MR_eBnnrgtt(=QwnCUoJx+2dLXUlO6iLI z)5O<+U_(#D8#!>~+r!axy0-eb>z%E;fgu|r(Br+&cC+IS(FBUw-Skr(aG-v-_2w>Q zxs3W920)um?5wq{@BAZtTh0)kE1wJw1z+t%+ASe(*yL|mN~Q7+buG@N4FIz@Gi;Gq z(`+kf>^_W~>h-r@6Y0YqT5GixMj^4mv-jgrPCfM>;uiayb`Ulh?Yv1}UBOfw-bj-M z0wEd?=aC$dAsaEZc^K#vdYkfzT78@Pm)=+O-XiOD@qk8^YPrl)wuniPb^B zy%!jNyj9#b!`wa~m}qpu{vuY_9t#Cp#l-y^qq>Y(xTL4t^jq3)942=h=h6R*=*-)+ zjBOx_TmU8|k_e1|UKOD`x~wN=Z0FIWFK~*=C%I-Zp3!~d;FnE&yEwbnnHx(G!To}U?63HnOl`}=c@ vLkCR>kcaNm+1dL1FZ}w{WAOd{q017TgD*%|V_I@oKTu*&*gkzg%=te7aFZ2g literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/audio.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/audio.png new file mode 100644 index 0000000000000000000000000000000000000000..c0101346b611e7495861f4efe2c511f76b51e5e7 GIT binary patch literal 1544 zcmZuxdpOg382_1#wYlcDP%Wj4+h|9w2Q!nE80M04nOQb$)AnPKVADonltl zL5HREOw8q+D5;PxatTMONfadx#+mciInQ&x&-;Gg=Y2n)_ws$7_xa|L{Pt@ij1d3; zXcB$A0+lv;UEylVd;BubQE8xDPa+wvJbZX;uF~I-6K5kW&<%wn zj+uR`M&*(DT~$eYas}1jLP%A>r5w}z6ZPsB9f^l3j7`ITF2BQLe)^b{n?>IuoIfcm zEm5SuXS-zxN4p=-(6<8jY&HIo<9Mj%<4;>2mRqb2g_zm>W|aVtCPNHgroh!(N`nK_ zQ<~#9w=68{I*@LlaoG{u7Y6ps8f2joYdbHGQO&k>d})pwX)Z^;Ky)gLfW%p(zS;|S zhq0bZqG5|MOKeB2ftAYB62Xfmt(YKfk!{`B;!kpKLB*r1)t#q5ui%^%MzJmM;M%13 zk}Qd+%b=65%lY8%(Y2h~IDw16)&P$VXgnJJI3Cag^}HM0Ic#M`(VmLA1Cfn;y7SWC z?3N-Vj_#s!&k${bt9F3_rW<;B;VS&EXZ8oj526(CF_?pEUw@7qW^0`d)42!9rKq&u z1Y*JfJF85Tp@#+%o%647;s;2GXL-;o=hc86t@f!4CIu_q@$IS5-Ags!P9W*3%CuQS z4|mm$qaG%0klZ{e;D%hU#Y{1mZ4}pru@!GB3tYwW^SaUTwT1_0?*AGEaVBJ5b3Ik6 ze)dAQPW0J|?IKONhRS`hh?e(cf+^_MxtTMm^tH%Bfsd|CEvv#lA#=P29wT3F#X?ao zfkhFyPfg@-mHTwON^C0b8)<7_Di8hFBCwIiQUN+w?8!ZAS__NX4(blQ{_}IrrKQ;5 z7CSQ|^vh(5B6T@`q=`D9%V2l5ZTWydwpL4@>(kDp!*b^tU$?kqPLwI;Rj19dWyh-F zB~s1Y`s+eGX3Awxm&{O+jEjX_)E+%OQzX>rZ|H`Ru_**Wx|df7&beK-x;0trxp*$z zZeu?Gy8Wk<@fH&EPHAPCZuAkK;W|71a&`X|8St00&W}Kkdh8GJjr6W>@!F?BS1D0SAL zxZ;T3&N)bu{|c(QglMKWcIar;P{EA=x07mnrAy!G?UV4fsV_`~-JAB+n?!(bdXGO( z7iyVCIW3zU*jl_-7}~9GD_y(ifg#7+7a&M}23(10r0G)fyU5@#BsY%n7xv~;)ioT1 zu^9$v*!6(K|1)hd)X2ED)qw6VK=PVLE(Uj{i?k=xTnbJu;liYBC?EEVrD$%N(6GyU z%Fm@y_BvJQ*^kx!eUOjLzqRdl3OS?e55>5vEYC7$jhM!2S~>pOZKs}&5eShx;A6D@ zyLbP$j&#@}>FsXB;d4F}2O3c|nYZTZqfS#p?gxyVxAC@&7Vpa#^mUr04nA8b32D39 z!7VLJWB2(IXRl54?~Jk(DtwKKdSQ==p%L@NNS7w*_l5c|k73`|Fb||N=Ss%qr|hKp zFcNPwoI@=KZ0n!Q419iA7#B6nT5v0>`HfkgGTQ5`MsO>O$XbkVT!UHdTL6(U;Cknq{Q{mCL=3J`#dGHam+6_rCl di=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBf%ipdZ&9wFhW=V}MVHE09J8Z@~aA5*-~K z5fM>PP>_?8^XAPPi0p+67cO4Bc=_^WAotm`XF&4#^XCu}$awMM#mt#A=gyrwZ{EE5 z^XD&EuwdP~bsINs+_GiMwQJYz-@pIh!GlMS9=(438e*XO^6L^n`(#Rj{DK+SIFyvN zwDk>)J-vfMH*MLv|M1}tA3uHm{N?Lc&6p-z1_s79PZ!6KjC*fqlC<5TCeqS|*mRL?Kgc7(I8Vi=8|}I5;?NKlFb92xL>4nJ z$hLzpWB=2SsX#%=64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBfZYpno_di4|!2nE;;ZdJgpSz-K{;CN})=gZxe$uiHlb3Cnx_r~r6&t6n*feeBrs*p;&sep2 z#_G*8S8tiQdMnTtp!q-(xF)ho0G+E>666=mz{teP#m&ttEFvl4>6lif#XQ z8W13Ilv$zc>xRv19^Jh6-?ox*^G&|HnMr59#~t{-#It^DV2glL{i@!-kE4TcEV%OT z-p;}>w+z1?PA#6E70US!LfC%He;CD4G5_F<15KQ|YZz6wZP-1z`D{=_^8Ki6{avaJ zN7k*_@#bs#uBW^^zIST;wfe&9^4sO*Om&4j>bpKNANjrI3)7R|Q=T#KpZwhZ_*dum zPKyse-tD=U{igWAzqi#}eLQv9Y-+XEJ!hQx&W=4!!(c)y8wWhvU6w0CUnUvw{_K};>3gl1wceg9u(=*FzrTHMS*!j2>yL7`K8m_0?z;72 ikl~}S#Zrnb|3dd~^!AY~RX+CuWU8mDpUXO@geCx;cxYb$ literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/doc.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f8388267bc53ad5b95537b2977873701ac3de87b GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&p zZ_9Puk?XiC-}6{u%6r8rAArhKrhnG%zo$Rxf&SbtZY#d}uKt>}<$cc94;{z8cOCoQ zef;}`Q$J^&|26ykuVq(%{r~^}l(nx4&>f;BL4LsuGV1!hQ>M<92A` za$u2V;P7(L&tTlTfNe{YTmTot0$~9MRfh(*0}QPUOht^WN18--M73=5e-P5pBywZE zqa&Bf?#D-!zU*O~{q@o;^8-1PL-!t-%^{%RaKQdUf!l(-hV)bR3I~jz$_qT0S@&69 z;D^cqV^xO-=8c(K|8@#XgfTm*UyupEDR0WO-Js**PYaPZ#^2g)85_AZEX$o=90q!r N!PC{xWt~$(69DZ(DkcB` literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/pdf.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..9f40122a8e9ef281901e085651fa66de960cae4c GIT binary patch literal 925 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&pK?PTIAN%F-q_%-x$%8-V~{Ru^Jlh}&z$X_xi~y`b$XGV{4yf+ zWn?H&`^%{CSBbH&a#P=y6~8Sj`Mhk&=VePjFJJm)Mi|9-EZE1`1tA5moJqLU6Kq8j5VGvjv*QM-d>CJKja|7`e0Z0qDT7{ z@Ue=x9@zCTit+dV|C5)xEuOis`2EaGr$@H>bMLhORy~vHEa0IcWLx}nu9@QL5C7Jh zX&z=3(1Zr%7`Gi@ z+rcECz{PMtSfD}Gfx-O%LmLBA2_x$XCeaErj?Z?Dt0hEM9Jpw!5zzSR;LT>oh)-;D z-n^G8s(8a2u>7j+ zJjt8L#OQU^+W%$ol~c1VVm|%2De->yIiSp{$#TD@bqZhb;MWIIABs=S_AyQP;aJC9 z@7=`^``2qPQ>12fE92L^Z&7o_S!&dSSYtQ+%hYC)a9y}J+~C8l_ggjg7FAu;*!ziN zM)gzP8CSILH(b-+-*8WRe#6G_PuBw(7%L7eyZw(>d&4WXDQgbA*>(Eg)|m(N)`VR6 iI#nofzso27&zyp}+m6{Mw{HSQ6oaR$pUXO@geCx$l#&Sm literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/presentation.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/presentation.png new file mode 100644 index 0000000000000000000000000000000000000000..3a339af593f4932996667370db88dbdc050f86b2 GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&pG({c6t+>by80{rP(O=NlPcPs@Hg1J-h0;pch9pXZf+o>%^PQTx|5 zr(f5ce_eC=b=?(Y$m7;ukK2AdZvXSF_s@$Ne_qZ6+WY6_>_4yO{&_X;&#U=B_xydm z2$g7u zy(C%^MBZ?E3;YYq@; zP29q_Hf(L_y2CGRR%D2_ugaMC>EHP$zLTdlCB8p;vvcF`{ZEo=ISURHn)rH$X~^?& zh(7%Ls^Ln8EX%38Wp@R3xwkT3+GD7vwS`yEq18%~fz_G)&hCqCIt-jT41yI53I>e( z4zS)}l77Hd)1b+~;P1dNje${yky(O?;{vOQ0(Zy*GuMdCoH08VIIx~u=h(<~#qWH6 zP>XN&fu|<}v#v1|hgwf#t@C7L6$x-?{LlGi@A>yXrfLN8E%<5_DY1cji=7a2S>tsN zu^0ZA7`pjycDFR@XDUo!JN7Z%Qf#;D<(k(Al4T^K>V2yp{_(l7vHrrm=jk?$lke2b zU%SUt#jfn^@|Uq(d)qEN-}U)cZ)+Sh vg(L2s-MoMEqZICF(UN^ZN^i1n34LRJ(>cXB_UJWGf@bh^^>bP0l+XkK!91hU literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/spreadsheet.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..710efa631bbe46a69e7d43808c675b0f5c2411c0 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U#L5e~$ zOL9^f0)R3_3ZBXNc?uyJskx~NA*s0qIf*5ykA0+kAalscA{WaJky1SjSyc%+tR zmXzFY>2w2127x4<^9w4AGSf3k7@VCI97{@yGLuS6GV}9vgEN3maLmcfPF2V#DJihh z*H11=O)SYQOHIzt&CSm%2DwN-Co?%UuQ;_>KdDl;I8onN&pjHh&2juQ60FprD3nqb#g8ju=dvf#l z7rV~$aGeiCp6-jiz1R4Auk{DY`fUgbSP~q(B0PLcbk?3cpyJje?d?aq=3id8;PRq{ zmlrL)wtVfa_3LhJ*nV&4|NsBZl4mjk-62{MbP0l+XkKZ6g@< literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/text.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/text.png new file mode 100644 index 0000000000000000000000000000000000000000..2546fcd90b78ab5752f74234520af202a6c3987b GIT binary patch literal 798 zcmXAlYe-XJ7{}kuB}=C`tC3Uis2C#YEF(%oowrN5E?>zZM=u=!!)$Hk)mC9(O>wRa ztp}7FMumD>MN&vAS7Q~pfuQN{Z5`z>l!S*Rq_&wNlqwpPlwd-drieN{O^})_sR}Fz z8;E)wQ_-|GPasfGxSS>$aRsSXlNw#vk)VN4;2IsS6Vx?l>Ewdk>>NQ&YxNMQKNTO7 zl|i&xt#-TJ@AuEm&3V0Ehr zKmx%31Q;lRal74+_xJaM_|(*t&1RdPo}QVRnVp@TpPvUFFc5()%gf6EgXYT0%IfMW z7=Vpn07O6&L}2y7b9YXF(PUauDMg&vSYE>31A3#Wwe5Px?T3%Y#>cG-&Ly`u5Dfiv z4d-1#h`|??3T3JV|KwQ-Q^;v|mUFqm$Q!9Hd?=PZ8S}+wB(iH?XMS864LScrkDYpO zq(^b9EU(~AbKi*BvGM%Z;IrkV9%D!xcquds+dsF6t-bHn;)u?m3SshkMqElKD#~Ft zzKiPIl3TmOXR1P|+k|#8n7f&gJ6UlP(HXtG0n2bYC&ctdZXd8H6DQQ7=*u#$Gc`@j zOG)MYU~KvaIr^iozD2e@aiyOuz+~qGBf=|9EOs1rC%K82rd64gp9(Qc?ox7`qifS$ zhy@>^@%xDRdtjr6wV$w*vv`E1m^CWO4=K1F!8X=g-_0UrwK;PvXzd%yk7wArTRwcf nSXpJ**OfNuzE@@2Gn)FB={Hgt{G?7Rd?*r?RhF8IYp?zTm=%Df literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/video.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/video.png new file mode 100644 index 0000000000000000000000000000000000000000..55afa98662c7439702c4391be32151b59c65e253 GIT binary patch literal 1313 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBf%ipdZ&9wFl@+Mo$;Vkcv5P@A_uQq{heETG?y0yzC9fraSuz>xc-iKB^S-C2j9}#|+2Trc2JzJRTnfTzEQIH^v=t-uh~( zxc^nT;G^AFyj-F_E#k~I^^GcclIec6N$|KDEZ^HL2yRXD%)^JLrNU0ZK4B(tA;`e?y7+bL3Cv<0)SasI_CAaj~N#c(YL7*x>s=RUEzB;@PrBh& zH)D%og8`esF@{4D4id~9$qb1+3OxwHP0QHrcBOO2*;w_|95lANuJ3MPXxI5(O|0kK zRl|QgH_Ue({_&96Vc&zq|1bC+7nk<1Yuu@Ae>qY6-K)v7Yqj^V-D!HvaJ2dMZM$~H zu!p<&;w*k~%)4!W;alV}{X=v0Uhk~<**mx5&CKevXN-+f=bm`FyWqv#SP7|{IXP;~ zcdqPSDZPH*cNRIBH>Ot885zEOeQr=yWB#r(Ve!YC*VuRDXUi=Ow$PzK?rCL+Fg2guB&_nRD$dv!BcjdVIbiOV!A>s5L(B z_M7webFwb`{Y$Vp;Qn~>iWvW|`+K5R742;lemwcu^H&o81xx0 uulP@kQGh{%aR*z&{2E6WF!;j1pYh0Ho3#3@qwc_>hQZU-&t;ucLK6Tg{6(q& literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/icons/web.png b/src/versions/pytop-0.0.1/Pytop/resources/icons/web.png new file mode 100644 index 0000000000000000000000000000000000000000..17017ce3f5c04869fd808d91732939ea9b32b36d GIT binary patch literal 1845 zcmX9-30PBC7JeZt0R&N&im4Vm5LuK(q#_nd0tCVUMu-({*@BToAxV=L*+e!GkXn@r ziUOk+5JanpgIGYI)*&h-ERqnyl7#n?m%Ok@b?nd&oyW}mzH{$?&iTLZo^$Vi%IPuT zRu-Er006L}MTEv;XY!g6@Yp_1EnQ3Cg%lctKp-eo`<0k$&W|`O1OVdwHNz!tzVs;; zbOgiV!8qPAFf&EK0x~l*JvrPH!qgN#%abQayT0({W{mXN8i~OH(^&u=%LtrksXVR| zgU!ldIWbrn{PYx%HMdbK!l)b8sALhy<_Unflnkc`Rwf4oXU~*Vv1II8GK9y^7I4zo zAP^GbLTopXZa#0EirfR|UQfRzGrPO?&Y85umTaIGS*bWSRZ zD`W}1nAtmpDPF#w-d>5tN4f#P=q^2q5r*9|K0dBcDCXzqr>3S*6jdsf7@nJ(TU=ax z^X84gV89~F%gakkOIT!KVF5u9wOXxGsW2B?7{Cbs2N(x)F^*QN#qdzr=R?%L4N;wk z!d-?UTqF@B32nP1(p3`aCW-QpM0-eLeI#+d!*tK#Sf62r@5n*Fk;8jOjs%P)QO1%f zW6aR8RO;B#@Yly8$2rmC=?Ab4>^;QlZta9Ma9XfOQ)x*il%Eyr)$clua!?v zPtV-AI9ppWTYp~JP^G+GgLR~8tyA6mhwA<qq?n0{jdpZeC|;T_Bc>935wYc z?RSIdZcyw_h~Wtx^oEXn0e#~Sb>4-#9zZ=0q23Ot{|WT03#PlnhkW70eQ_glMx^$_R@Y<)VrQXIbz5PntJ0g8Rbn*LUbxsP8jj*_-Z(cX zN{bSF%odkOt+)PVn?cJf{v^KG_!od*Z`y6_gfo9@lyz1e6<-f@N(DIgw^V+X{8VBDgh-5c#-s8%>=Ds{ zKfZ$B2p)baC-hl5^DPUkA4$M1z~aT=lsHFr2wwAQ^^hG?0?{1_9}F`e&AR*C-`<=x z*RYSBq9v~+{b;!tNT=fS*ot>s1gZ^;zlQsQ*$T>i*<;Y?y|^T*Id-^@z$QlD35-#i zJ2sI;MpjWp9kw)4zj?RIGhcdL7=G-=JU=#Yy(dm>A@;T}0CztyE+AaJ=M8AMMO$_| z7Id+bi9q0dam5HecC>c_tpmQK;`iVX>Wcn}ut+z3R7*7gNk8~2Q z1}q%HZJIat|JlfU$d-TD#L3I&q0rktK6eLt#iF1#&8Ilzqp1VwcF)ZjcT=&PXup+d zrtYX6^88blp$1-*%0m?Q_y0cl4qR{hAfh?`YOtxbIN6Bo?^I^~=S_`RJz#u_xuM8K zT55i|B_nE=rK5wevMuH?>Bb+{SGUyyyt<;S|E!pu1J}QO|8A5sa;v2BD^p^p&yHcv RE^NR6T3Afz&y?h%{{oe`z-j;h literal 0 HcmV?d00001 diff --git a/src/versions/pytop-0.0.1/Pytop/resources/stylesheet.css b/src/versions/pytop-0.0.1/Pytop/resources/stylesheet.css new file mode 100644 index 0000000..5a93664 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/resources/stylesheet.css @@ -0,0 +1,13 @@ +viewport, +treeview, +treeview > header, +notebook > stack, +notebook > header { + background-color: rgba(0, 0, 0, 0.24); +} + + +notebook > header { + background-color: rgba(0, 0, 0, 0.24); + border-color: rgba(0, 232, 255, 0.64); +} diff --git a/src/versions/pytop-0.0.1/Pytop/utils/Dragging.py b/src/versions/pytop-0.0.1/Pytop/utils/Dragging.py new file mode 100644 index 0000000..a0b2856 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/utils/Dragging.py @@ -0,0 +1,79 @@ +import os, gi + +gi.require_version('Gdk', '3.0') + +from gi.repository import Gdk +from gi.repository import GObject + + +class Dragging: + def __init__(self): + # higher values make movement more performant + # lower values make movement smoother + self.SENSITIVITY = 1 + self.desktop = None + self.EvMask = Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON1_MOTION_MASK + self.offsetx = 0 + self.offsety = 0 + self.px = 0 + self.py = 0 + self.maxx = 0 + self.maxy = 0 + + def connectEvents(self, desktop, widget): + self.desktop = desktop + widget.set_events(self.EvMask) + widget.connect("button_press_event", self.press_event) + widget.connect("motion_notify_event", self.draggingEvent) + widget.show() + + def press_event(self, w, event): + if event.button == 1: + p = w.get_parent() + # offset == distance of parent widget from edge of screen ... + self.offsetx, self.offsety = p.get_window().get_position() + # plus distance from pointer to edge of widget + self.offsetx += event.x + self.offsety += event.y + # self.maxx, self.maxy both relative to the parent + # note that we're rounding down now so that these max values don't get + # rounded upward later and push the widget off the edge of its parent. + self.maxx = self.RoundDownToMultiple(p.get_allocation().width - w.get_allocation().width, self.SENSITIVITY) + self.maxy = self.RoundDownToMultiple(p.get_allocation().height - w.get_allocation().height, self.SENSITIVITY) + + + def draggingEvent(self, widget, event): + # x_root,x_root relative to screen + # x,y relative to parent (fixed widget) + # self.px,self.py stores previous values of x,y + + # get starting values for x,y + x = event.x_root - self.offsetx + y = event.y_root - self.offsety + # make sure the potential coordinates x,y: + # 1) will not push any part of the widget outside of its parent container + # 2) is a multiple of self.SENSITIVITY + x = self.RoundToNearestMultiple(self.Max(self.Min(x, self.maxx), 0), self.SENSITIVITY) + y = self.RoundToNearestMultiple(self.Max(self.Min(y, self.maxy), 0), self.SENSITIVITY) + if x != self.px or y != self.py: + self.px = x + self.py = y + self.desktop.move(widget, x, y) + + def Min(self, a, b): + if b < a: + return b + return a + + def Max(self, a, b): + if b > a: + return b + return a + + def RoundDownToMultiple(self, i, m): + return i/m*m + + def RoundToNearestMultiple(self, i, m): + if i % m > m / 2: + return (i/m+1)*m + return i/m*m diff --git a/src/versions/pytop-0.0.1/Pytop/utils/FileHandler.py b/src/versions/pytop-0.0.1/Pytop/utils/FileHandler.py new file mode 100644 index 0000000..ac387e0 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/utils/FileHandler.py @@ -0,0 +1,42 @@ + +import subprocess + + +class FileHandler: + def __init__(self): + # 'Filters' + self.office = ('.doc', '.docx', '.xls', '.xlsx', '.xlt', '.xltx' '.xlm', '.ppt', 'pptx', '.pps', '.ppsx', '.odt', '.rtf') + self.vids = ('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm') + self.txt = ('.txt', '.text', '.sh', '.cfg', '.conf') + self.music = ('.psf', '.mp3', '.ogg' , '.flac') + self.images = ('.png', '.jpg', '.jpeg', '.gif') + self.pdf = ('.pdf') + + # Args + self.MEDIAPLAYER = "mpv"; + self.IMGVIEWER = "mirage"; + self.MUSICPLAYER = "/opt/deadbeef/bin/deadbeef"; + self.OFFICEPROG = "libreoffice"; + self.TEXTVIEWER = "leafpad"; + self.PDFVIEWER = "evince"; + self.FILEMANAGER = "spacefm"; + self.MPLAYER_WH = " -xy 1600 -geometry 50%:50% "; + self.MPV_WH = " -geometry 50%:50% "; + + + def openFile(self, file): + print("Opening: " + file) + if file.lower().endswith(self.vids): + subprocess.call([self.MEDIAPLAYER, self.MPV_WH, file]) + elif file.lower().endswith(self.music): + subprocess.call([self.MUSICPLAYER, file]) + elif file.lower().endswith(self.images): + subprocess.call([self.IMGVIEWER, file]) + elif file.lower().endswith(self.txt): + subprocess.call([self.TEXTVIEWER, file]) + elif file.lower().endswith(self.pdf): + subprocess.call([self.PDFVIEWER, file]) + elif file.lower().endswith(self.office): + subprocess.call([self.OFFICEPROG, file]) + else: + subprocess.call(['xdg-open', file]) diff --git a/src/versions/pytop-0.0.1/Pytop/utils/Icon.py b/src/versions/pytop-0.0.1/Pytop/utils/Icon.py new file mode 100644 index 0000000..55debe8 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/utils/Icon.py @@ -0,0 +1,96 @@ + +# Gtk Imports +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') + +from gi.repository import Gtk as gtk +from gi.repository import Gio as gio +from gi.repository import GdkPixbuf + +import os, hashlib +from os.path import isdir, isfile, join + + +class Icon: + def __init__(self): + self.GTK_ORIENTATION = 1 # HORIZONTAL (0) VERTICAL (1) + self.iconImageWxH = [64, 64] + self.iconWxH = [128, -1] + self.iconMargins = 8 + self.usrHome = os.path.expanduser('~') + + + def createIcon(self, dir, file): + fullPathFile = dir + "/" + file + eveBox = gtk.EventBox() + icon = gtk.Box() + label = gtk.Label() + thumbnl = self.defineIconImage(file, fullPathFile) + + label.set_max_width_chars(1) + label.set_ellipsize(3) # ELLIPSIZE_END (3) + label.set_lines(2) + label.set_line_wrap(True) + label.set_line_wrap_mode(2) # WRAP_WORD (0) WRAP_CHAR (1) WRAP_WORD_CHAR (2) + label.set_width_chars(1) + label.set_text(file) + + icon.set_size_request(self.iconWxH[0], self.iconWxH[1]); + icon.set_property('orientation', self.GTK_ORIENTATION) + icon.add(thumbnl) + icon.add(label) + + eveBox.add(icon) + eveBox.show_all() + return eveBox + + def defineIconImage(self, file, fullPathFile): + thumbnl = gtk.Image() + vidsList = ('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm') + imagesList = ('.png', '.jpg', '.jpeg', '.gif') + + if file.lower().endswith(vidsList): + fileHash = hashlib.sha256(str.encode(fullPathFile)).hexdigest() + hashImgpth = self.usrHome + "/.thumbnails/normal/" + fileHash + ".png" + if isfile(hashImgpth) == False: + self.generateThumbnail(fullPathFile, hashImgpth) + + thumbnl = self.createGtkImage(hashImgpth, self.iconImageWxH) + elif file.lower().endswith(imagesList): + thumbnl = self.createGtkImage(fullPathFile, self.iconImageWxH) + else: + thumbPth = self.getSystemThumbnail(fullPathFile, self.iconImageWxH[0]) + thumbnl = self.createGtkImage(thumbPth, self.iconImageWxH) + + return thumbnl + + def getSystemThumbnail(self, filename,size): + final_filename = "" + if os.path.exists(filename): + file = gio.File.new_for_path(filename) + info = file.query_info('standard::icon' , 0 , gio.Cancellable()) + icon = info.get_icon().get_names()[0] + + icon_theme = gtk.IconTheme.get_default() + icon_file = icon_theme.lookup_icon(icon , size , 0) + if icon_file != None: + final_filename = icon_file.get_filename() + + return final_filename + + def generateThumbnail(self, fullPathFile, hashImgpth): + subprocess.call(["ffmpegthumbnailer", "-t", "65%", "-s", "300", "-c", "jpg", "-i", fullPathFile, "-o", hashImgpth]) + + def createGtkImage(self, path, wxh): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( + filename = path, + width = wxh[0], + height = wxh[1], + preserve_aspect_ratio = True) + return gtk.Image.new_from_pixbuf(pixbuf) + except Exception as e: + print(e) + + return gtk.Image() diff --git a/src/versions/pytop-0.0.1/Pytop/utils/Settings.py b/src/versions/pytop-0.0.1/Pytop/utils/Settings.py new file mode 100644 index 0000000..a114522 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/utils/Settings.py @@ -0,0 +1,154 @@ + +# Gtk Imports +import gi, cairo, os +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') + +from gi.repository import Gtk as gtk +from gi.repository import Gdk as gdk + +class Settings: + def __init__(self): + self.builder = None + self.hoveredFile = None + self.selectedFile = None + + self.DEFAULTCOLOR = gdk.RGBA(0.0, 0.0, 0.0, 0.0) # ~#00000000 + self.MOUSEOVERCOLOR = gdk.RGBA(0.0, 0.9, 1.0, 0.64) # ~#00e8ff + self.SELECTEDCOLOR = gdk.RGBA(0.4, 0.5, 0.1, 0.84) + + self.hideHiddenFiles = True + self.usrHome = os.path.expanduser('~') + self.desktopPath = self.usrHome + "/Desktop" + self.ColumnSize = 10 + self.webHome = 'http://webfm.com/' + + + def attachBuilder(self, builder): + self.builder = builder + self.builder.add_from_file("resources/PyTop.glade") + + def createWindow(self): + # Get window and connect signals + window = self.builder.get_object("Window") + window.connect("delete-event", gtk.main_quit) + self.setWindowData(window) + return window + + def setWindowData(self, window): + screen = window.get_screen() + visual = screen.get_rgba_visual() + if visual != None and screen.is_composited(): + window.set_visual(visual) + + window.set_app_paintable(True) + window.connect("draw", self.area_draw) + monitors = self.getMonitorData(screen) + window.resize(monitors[0].width, monitors[0].height) + + def area_draw(self, widget, cr): + cr.set_source_rgba(0.0, 0.0, 0.0, 0.64) + cr.set_operator(cairo.OPERATOR_SOURCE) + cr.paint() + cr.set_operator(cairo.OPERATOR_OVER) + + def getMonitorData(self, screen): + monitors = [] + for m in range(screen.get_n_monitors()): + monitors.append(screen.get_monitor_geometry(m)) + + for monitor in monitors: + print(str(monitor.width) + "x" + str(monitor.height) + "+" + str(monitor.x) + "+" + str(monitor.y)) + + return monitors + + def isHideHiddenFiles(self): + return self.hideHiddenFiles + + def returnUserHome(self): + return self.usrHome + + def returnDesktopPath(self): + return self.usrHome + "/Desktop" + + def returnColumnSize(self): + return self.ColumnSize + + def returnWebHome(self): + return self.webHome + + def mouseOver(self, widget, eve, args): + hand_cursor = gdk.Cursor(gdk.CursorType.HAND2) + self.builder.get_object("Window").get_window().set_cursor(hand_cursor) + if widget != self.selectedFile: + widget.override_background_color(gtk.StateType.NORMAL, self.MOUSEOVERCOLOR) + + def mouseOut(self, widget, eve, args): + watch_cursor = gdk.Cursor(gdk.CursorType.LEFT_PTR) + self.builder.get_object("Window").get_window().set_cursor(watch_cursor) + if widget != self.selectedFile: + widget.override_background_color(gtk.StateType.NORMAL, self.DEFAULTCOLOR) + + def setSelected(self, eveBox): + if self.selectedFile: + self.selectedFile.override_background_color(gtk.StateType.NORMAL, self.DEFAULTCOLOR) + + eveBox.override_background_color(gtk.StateType.NORMAL, self.SELECTEDCOLOR) + self.selectedFile = eveBox + + + + def setDefaultWebviewSettings(self, widget, settings=None): + # Usability + settings.set_property('enable-fullscreen', True) + settings.set_property('print-backgrounds', True) + settings.set_property('enable-frame-flattening', False) + settings.set_property('enable-plugins', True) + settings.set_property('enable-java', False) + settings.set_property('enable-resizable-text-areas', True) + settings.set_property('zoom-text-only', False) + settings.set_property('enable-smooth-scrolling', True) + settings.set_property('enable-back-forward-navigation-gestures', False) + settings.set_property('media-playback-requires-user-gesture', False) + settings.set_property('enable-tabs-to-links', True) + settings.set_property('enable-caret-browsing', False) + + # Security + settings.set_property('user-agent','Mozilla/5.0 (X11; Generic; Linux x86-64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Safari/605.1.15') + settings.set_property('enable-private-browsing', False) + settings.set_property('enable-xss-auditor', True) + settings.set_property('enable-hyperlink-auditing', False) + settings.set_property('enable-site-specific-quirks', True) + settings.set_property('enable-offline-web-application-cache', True) + settings.set_property('enable-page-cache', True) + settings.set_property('allow-modal-dialogs', False) + settings.set_property('enable-html5-local-storage', True) + settings.set_property('enable-html5-database', True) + settings.set_property('allow-file-access-from-file-urls', False) + settings.set_property('allow-universal-access-from-file-urls', False) + settings.set_property('enable-dns-prefetching', False) + + # Media stuff + # settings.set_property('hardware-acceleration-policy', 'on-demand') + settings.set_property('enable-webgl', False) + settings.set_property('enable-webaudio', True) + settings.set_property('enable-accelerated-2d-canvas', True) + settings.set_property('auto-load-images', True) + settings.set_property('enable-media-capabilities', True) + settings.set_property('enable-media-stream', True) + settings.set_property('enable-mediasource', True) + settings.set_property('enable-encrypted-media', True) + settings.set_property('media-playback-allows-inline', True) + + # JS + settings.set_property('enable-javascript', True) + settings.set_property('enable-javascript-markup', True) + settings.set_property('javascript-can-access-clipboard', False) + settings.set_property('javascript-can-open-windows-automatically', False) + + # Debugging + settings.set_property('enable-developer-extras', False) + settings.set_property('enable-write-console-messages-to-stdout', False) + settings.set_property('draw-compositing-indicators', False) + settings.set_property('enable-mock-capture-devices', False) + settings.set_property('enable-spatial-navigation', False) diff --git a/src/versions/pytop-0.0.1/Pytop/utils/__init__.py b/src/versions/pytop-0.0.1/Pytop/utils/__init__.py new file mode 100644 index 0000000..d623701 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop/utils/__init__.py @@ -0,0 +1,4 @@ +from utils.Dragging import Dragging +from utils.Settings import Settings +from utils.Icon import Icon +from utils.FileHandler import FileHandler diff --git a/src/versions/pytop-0.0.1/Pytop_exec_bin.cpp b/src/versions/pytop-0.0.1/Pytop_exec_bin.cpp new file mode 100644 index 0000000..93af3d7 --- /dev/null +++ b/src/versions/pytop-0.0.1/Pytop_exec_bin.cpp @@ -0,0 +1,10 @@ +#include +#include +#include +using namespace std; + +int main() { + chdir("/opt/Pytop/"); + system("python3 PyTop.py"); +return 0; +} diff --git a/src/versions/pytop-0.0.1/compileBin.sh b/src/versions/pytop-0.0.1/compileBin.sh new file mode 100755 index 0000000..a5cbb77 --- /dev/null +++ b/src/versions/pytop-0.0.1/compileBin.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +function main() { + gcc -no-pie -s Pytop_exec_bin.cpp -o pytop +} +main;