Fixed app icon error; created .pkg
This commit is contained in:
parent
d99c5d2f23
commit
4fea9596f9
8 changed files with 127 additions and 6 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -4,5 +4,5 @@ venv/
|
||||||
venv_linux/
|
venv_linux/
|
||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
Finch Filer.spec
|
finch_filer.spec
|
||||||
test.bat
|
test.bat
|
||||||
|
|
|
||||||
BIN
Finch Filer
Normal file
BIN
Finch Filer
Normal file
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
||||||
# Finch Filer V1.0.1
|
# Finch Filer V1.0.2
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -80,6 +80,10 @@ Email: thomas.j.wilc@gmail.com
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
1.0.2
|
||||||
|
|
||||||
|
- Fixed fatal error when running on GNU/Linux
|
||||||
|
|
||||||
1.0.1
|
1.0.1
|
||||||
|
|
||||||
- Improved directory structure
|
- Improved directory structure
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,14 @@
|
||||||
"action": "ignore",
|
"action": "ignore",
|
||||||
"active": true,
|
"active": true,
|
||||||
"destination": "~/Downloads/",
|
"destination": "~/Downloads/",
|
||||||
"extensions": ["*.exe", "*.msi", "*.elf"],
|
"extensions": ["*.exe", "*.msi", "*.dmg", "*.pkg", "*.deb", "*.elf"],
|
||||||
"name": "Programs"
|
"name": "Programs"
|
||||||
},
|
},
|
||||||
"archive": {
|
"archive": {
|
||||||
"action": "ignore",
|
"action": "ignore",
|
||||||
"active": true,
|
"active": true,
|
||||||
"destination": "~/Downloads/",
|
"destination": "~/Downloads/",
|
||||||
"extensions": ["*.zip", "*.rar", "*.tar", "*.iso", "*.gz", "*.lz", "*.rz", "*.7z", "*.dmg"],
|
"extensions": ["*.zip", "*.rar", "*.tar", "*.iso", "*.gz", "*.lz", "*.rz", "*.xz", "*.7z"],
|
||||||
"name": "Archives"
|
"name": "Archives"
|
||||||
},
|
},
|
||||||
"other": {
|
"other": {
|
||||||
|
|
|
||||||
98
icon.svg
Normal file
98
icon.svg
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="256"
|
||||||
|
height="256"
|
||||||
|
viewBox="0 0 67.733332 67.733333"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
inkscape:export-filename="icon3x.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96"
|
||||||
|
inkscape:version="1.4 (86a8ad7, 2024-10-11)"
|
||||||
|
sodipodi:docname="finchfiler.svg"
|
||||||
|
xml:space="preserve"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#505050"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:zoom="1.5385097"
|
||||||
|
inkscape:cx="-57.198209"
|
||||||
|
inkscape:cy="124.4711"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" /><defs
|
||||||
|
id="defs1"><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath5"><circle
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke-width:3.18082"
|
||||||
|
id="circle5"
|
||||||
|
cx="33.866665"
|
||||||
|
cy="33.866665"
|
||||||
|
r="33.866665" /></clipPath><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath6"><circle
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke-width:3.18082"
|
||||||
|
id="circle6"
|
||||||
|
cx="26.569826"
|
||||||
|
cy="29.612404"
|
||||||
|
r="33.866665" /></clipPath><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath7"><circle
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke-width:3.18082"
|
||||||
|
id="circle7"
|
||||||
|
cx="33.866665"
|
||||||
|
cy="33.866665"
|
||||||
|
r="33.866665" /></clipPath><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath8"><circle
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke-width:3.18082"
|
||||||
|
id="circle8"
|
||||||
|
cx="33.866665"
|
||||||
|
cy="33.866665"
|
||||||
|
r="33.866665" /></clipPath></defs><g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"><circle
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke-width:3.18082"
|
||||||
|
id="path1"
|
||||||
|
cx="33.866665"
|
||||||
|
cy="33.866665"
|
||||||
|
r="33.866665" /><circle
|
||||||
|
style="fill:#121829;fill-opacity:1;stroke-width:2.94787"
|
||||||
|
id="path1-3"
|
||||||
|
cx="31.38636"
|
||||||
|
cy="36.34697"
|
||||||
|
r="31.38636"
|
||||||
|
clip-path="url(#clipPath8)" /><circle
|
||||||
|
style="fill:#243055;fill-opacity:1;stroke-width:2.7149"
|
||||||
|
id="path1-3-6"
|
||||||
|
cx="28.905964"
|
||||||
|
cy="38.827366"
|
||||||
|
r="28.905964"
|
||||||
|
clip-path="url(#clipPath7)" /><g
|
||||||
|
id="g3"
|
||||||
|
transform="translate(7.2968372,4.2542602)"
|
||||||
|
clip-path="url(#clipPath6)"><path
|
||||||
|
style="fill:#4799eb;fill-opacity:1;stroke:none;stroke-width:0.87448;stroke-dasharray:none;stroke-opacity:0.25"
|
||||||
|
d="m 21.369517,71.713268 -33.916606,0.120981 -0.05787,-40.546304 c 0,0 8.4360406,-8.929081 14.0267803,-12.584561 5.5907354,-3.655482 10.4824687,-5.945767 17.3934427,-5.907877 6.728855,0.03688 9.66495,2.941316 11.952518,5.564649 2.112684,2.422781 2.428291,7.337052 2.428291,7.337052 0,0 3.402655,0.371994 6.066254,1.867798 2.65653,1.491828 5.621298,4.528638 5.621298,4.528638 0,0 -3.131617,1.663512 -6.107621,2.925805 -3.097648,1.313889 -5.149874,1.633396 -6.8701,3.78368 -1.720227,2.150287 -3.313462,4.889424 -3.70542,9.409069 -0.379414,4.375022 -1.756455,9.401798 -2.732385,13.168902 -0.979997,3.782797 -4.098582,10.332168 -4.098582,10.332168 z"
|
||||||
|
id="path2-4"
|
||||||
|
sodipodi:nodetypes="cccssscscssssc" /><circle
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.192216;stroke-dasharray:none;stroke-opacity:0.25"
|
||||||
|
id="path3"
|
||||||
|
cx="20.932432"
|
||||||
|
cy="23.50864"
|
||||||
|
r="3.175" /></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 4 KiB |
|
|
@ -1,2 +1,2 @@
|
||||||
__version__ = "1.0.1"
|
__version__ = "1.0.2"
|
||||||
__author__ = "Gull"
|
__author__ = "Gull"
|
||||||
|
|
@ -54,12 +54,17 @@ class App(tk.Tk):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.title(APP_NAME)
|
self.title(APP_NAME)
|
||||||
self.option_add('*tearOff', tk.FALSE)
|
self.option_add('*tearOff', tk.FALSE)
|
||||||
self.iconbitmap(ut.parse_dir("#/icon.ico"))
|
|
||||||
self.fm = fm.Manager(True) # Main file manager object
|
self.fm = fm.Manager(True) # Main file manager object
|
||||||
self.log = list() # Running list of all logs
|
self.log = list() # Running list of all logs
|
||||||
self.temp = {"column": "", "reverse": False} # Temporary data
|
self.temp = {"column": "", "reverse": False} # Temporary data
|
||||||
self.current_mode = "all"
|
self.current_mode = "all"
|
||||||
self.custom_rules_path = RULES_PATH
|
self.custom_rules_path = RULES_PATH
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.iconbitmap(ut.get_icon_file())
|
||||||
|
except Exception as error:
|
||||||
|
log.warning("Failed to load icon!")
|
||||||
|
|
||||||
self.gui() # User interface
|
self.gui() # User interface
|
||||||
self.load_config() # File rules configuration
|
self.load_config() # File rules configuration
|
||||||
self.prep() # Ready state
|
self.prep() # Ready state
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,20 @@ def save_json_file(filepath, data, raw=False):
|
||||||
json.dump(data, f, sort_keys=True, indent=None if raw else 2)
|
json.dump(data, f, sort_keys=True, indent=None if raw else 2)
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise error
|
raise error
|
||||||
|
|
||||||
|
def get_icon_file():
|
||||||
|
"""Attempts to return a valid icon file."""
|
||||||
|
if os.name == "nt":
|
||||||
|
path = ""
|
||||||
|
try:
|
||||||
|
path = sys._MEIPASS # For PyInstaller
|
||||||
|
except Exception:
|
||||||
|
path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
return pathlib.Path(path).parent.parent / "icon.ico"
|
||||||
|
else:
|
||||||
|
path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
return pathlib.Path(path).parent.parent / "icon.svg"
|
||||||
|
|
||||||
def parse_dir(path="", ignore_mkdir=False):
|
def parse_dir(path="", ignore_mkdir=False):
|
||||||
"""Converts and creates a directory (can be full file path)."""
|
"""Converts and creates a directory (can be full file path)."""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue