autogrid,autogridrip

This commit is contained in:
.[d]. 2023-02-18 11:45:49 -06:00
parent 46574fc422
commit dfec860349

View File

@ -1,24 +1,79 @@
###########################################################################################################################################
###################### /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ##########################
#################### /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd- ########################
################### -MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN` #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmNMMMMMMMMMMMmMMMMMMMMMMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh:NMMMMMMMMMMoyMMMMMMMMMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm -NMMMMMMMMMs.NMMMMMMMMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy -hmmmmmNNm- sMMMMMMMMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmdyo+:` ```````.` .NMMMymMMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy+-.` -hNm-+MMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMms:` `.. /MMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/. /MMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMmMMMMMMMMMMMmhN:` /MMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMM+sNMMMMMMMMMN-h: `-+syyys/- -NMMMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMs +NMMMMMMMhm--d` :. -sdNMMMMMNNmy. :ydMMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMM+ :yhyyyhhso` os yhshNMMMMMMMh+:-:. :s- .NMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMmho` ` `yo.h:sMMMMMMMMMMNd+. -NNs- yMMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMMMNh/. :++`-MMMMMMMMMMMMMm+` :ymds. -NMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMMMmo- .MMMMMMMMMMMMMMMdo. `.-` yMMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMMMmo. `NMMMMMMMMMMMMMMMMNy/.` `mMMMMMMMMMMMMMMM- #######################
################### /MMMMMMMNs. hMMMMMMMMMMMMMMMMMMMNho-` :NMMMMMMMMMMMMMM- #######################
################### /MMMMMMm: ./syyyo- -hmNMMMMMMMMMMMMMMMMMMMMmho:.` /NMMMMMMMMMMMMM- #######################
################### /MMMMMd. .smMMMNNNms` ` `+MMMMMMMMMMMMMMMMMMMMMMMMNdy/ `.yMMMMMMMMMMMMM- #######################
################### /MMMMd. /mMMMMMy/:--` so. `mMMMMMMMMMMMMMMMMMMMMMMMNdo--:+sdNMMMMMMMMMMMMMM- #######################
################### /MMMN- /NMMMMMMMMdo. oMm+. /MMMMMMMMMMMMMMMMdNMMMMMMNNNMMmMMMMMMMMMMMMMMMMM- #######################
################### /MMMo -NMMMMMMMMMMdso-` /hmm+ sMMMMMMMMMMMMMMMs-mMMMMMMMMMM:dMMMMMMMMMMMMMMMM- #######################
################### /MMN. sMMMMMMMMMMMo .os/.``.. `dMMMMMMMMMMMMMMs -NMMMMMMMMM-:MMMMMMMMMMMMMMMM- #######################
################### /MMd mMMMMMMMMMMM/ `:os+-` .dMMMMMMMMMMMNm. -soosyhdms `mMMMMMMMMMMMMMMM- #######################
################### /MMs mMMMMMMMMMMM: .hNhs/.` .dMMMMNmhs+:-` +MMMNoMMMMMMMMMM- #######################
################### /MMy hMMMMMMMMMMM: oMMMMMNdyo/. .mNh+-` +mNy`mMMMMMMMMM- #######################
################### /MMd +MMMMMMMMMMM/ :MMMMMMMMNs.`.:ohh/` ` mMMMMMMMMM- #######################
################### /MMN. `mMMMMMMMMMMo `NMMMMMMNhhdNMMh: mMMMMMMMMM- #######################
################### /MMM+ /MMMMMMMMMMh yMMMMMMMMMMMN+ `NMMMMMMMMM- #######################
################### /MMMm` +MMMMMMMMMN` .NMMMMMMMMMN- :sdmNNNdy+` dMMMMMMMMM- #######################
################### /MMMMo +MMMMMMMMM+ +MMMMMMMMM/ -dMMMMMMNmmNN/ .sdMMMMMMM- #######################
################### /MMMMN: :mMMMMMMMm` oMMMMMMMh .mMMMMMMMms- `` /o` `mMMMMMM- #######################
################### /MMMMMm. .yMMMMMMMo oMMMMMM/ sMMMMMMMMMMMh: :NNo. sMMMMMM- #######################
################### /MMMMMMm. -hMMMMMN: /NMMMM. dMMMMMMMMMMMMMh- :hmNy` .NMMMMM- #######################
################### /MMMMMMMm- -yNMMMm. .yMMM. dMMMMMMMMMMMMMMNh:` `..` yMMMMM- #######################
################### /MMMMMMMMN+ .+hNMd. :hM: dMMMMMMMMMMMMMMMMNmo- .NMMMM- #######################
################### /MMMMMMMMMMh- ./ss. `:: sMMMMMMMMMMMMMMMMMMMNms/. /MMMM- #######################
################### /MMMMMMMMMMMNo. ` :MMMMMMMMMMMMMMMMMMMMMMMNdo:.` oMMM- #######################
################### /MMMMMMMMMMMMMmo. `mMMMMMMMMMMMMMMMMMMMMMMMMMMNmh: .dMM- #######################
################### /MMMMMMMMMMMMMMMNy:` +MMMMMMMMMMMMMMMMMMMMMMMMMMNh+::/+sdNMMM- #######################
################### /MMMMMMMMMMMMMMMMMNdo- `dMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNMMMMMMMM- #######################
################### /MMMMMMMMMMMMMMMMMMMMNd+-` -NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM- #######################
################### -NMMMMMMMMMMMMMMMMMMMMMMNdo:` /NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd` #######################
#################### -ymNNNNNNNNNNNNNNNNNNNNNNNNdo-` +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmy. ########################
###################### ............................ .-..............................*/ ##########################
####################### `````` ````````` `````````````` `````````` ````` #############################
########################################################################################################################################### imports
import curses
####################################################################################################################################### SOF
import os
import shutil
import sys
from curses import (A_REVERSE, KEY_DOWN, KEY_ENTER, KEY_LEFT, KEY_RIGHT,
KEY_UP, ascii, wrapper)
import curses
from imghdr import what as is_file_an_image
from os import chdir, listdir, path
from pathlib import Path
from random import randint, shuffle
from random import choice, randint, shuffle
from time import sleep
from tkinter import *
from tkinter import filedialog, ttk, font
from tkinter import filedialog, font, ttk
from tkinter.filedialog import askopenfile
from PIL import Image, ImageTk
###########################################################################################################################################
from PIL import Image, ImageTk
from rich.color import ANSI_COLOR_NAMES
from rich.console import Console
########################################################################################################################################### globals
global STARTUP_DIRECTORY_OVERRIDE; STARTUP_DIRECTORY_OVERRIDE=['/Users/dr1p/dr1p1m4g3/grids']
########################################################################################################################################### class dr1p1m4g3
class DR1P1M4G3():
#########################################################################################################################################
######################################################################################################################################### __init__ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< __init__ class
def __init__(self,USERPATH=None,IMGINDEX=None,RENDMODE=None,PUMPMODE=None,PUMPTIME=None,USERSHUF=None):
#######################################################################################################################################
if USERPATH:
@ -65,6 +120,8 @@ class DR1P1M4G3():
self.USERSHUF=False
self.USER_USERSHUF=False
#######################################################################################################################################
self.LOGINIT=0
self.LOGFILE="dr1pt_pr0be.log"
self.REFRESH=0
self.RENDER_TEXT=True
self.LAST_DIRECTION=-1
@ -88,8 +145,39 @@ class DR1P1M4G3():
self.NORMAL_TEXT_FONT=self.NORMAL_TEXT_FONTS[randint(0,len(self.NORMAL_TEXT_FONTS)-1)]
self.NORMAL_TEXT_SIZE=25
self.AUTOCOLOR={'N':[0,0,0],'L':[['blue2','red2','purple2'],['midnight blue','navy blue'],['goldenrod1','goldenrod2','goldenrod3']]}
self.FIRST_INDEX=False
self.AUTO_GRID=True
self.logfile='resolutions_database.txt'
self.colors=[]
self.basename=0
for _ in ANSI_COLOR_NAMES:
if _.lower().find('black') == -1:
self.colors.append(_)
###########
self.main()
#########################################################################################################################################
######################################################################################################################################### l0g
def l0g(self,s):
c=Console()
if not self.LOGINIT:
if path.isfile(self.LOGFILE): os.remove(self.LOGFILE)
f=open(self.LOGFILE,'w');f.write('');f.close();self.LOGINIT=1;
f=open(self.LOGFILE,'a');f.write(f'{s}\n');f.close();
_s=s.split()
s=''
FULL_COLOR=False # False for half-color, True for full-color
for _ in _s:
color=choice(self.colors)
msg=f'[{color}]{_}[/{color}]'
s+=f'{msg} '
c.print(s)
if FULL_COLOR:
_s=''
for _ in s:
color=choice(self.colors)
msg=f'[{color}]{_}[/{color}]'
_s+=f'{msg}'
c.print(_s)
######################################################################################################################################### randofontcolors
def randofontcolors(self,n):
self.NORMAL_TEXT_COLOR=f'#{hex(randint(0,255))[2:].zfill(2)}{hex(randint(0,255))[2:].zfill(2)}{hex(randint(0,255))[2:].zfill(2)}'
self.NORMAL_TEXT_FONTS=list(font.families())
@ -102,7 +190,7 @@ class DR1P1M4G3():
self.texting=self.canvas.create_text(self.root.winfo_screenwidth()/2, 85, text=Buffer,fill=self.NORMAL_TEXT_COLOR,justify='center',font=(self.NORMAL_TEXT_FONT, self.NORMAL_TEXT_SIZE))
self.root.title(Buffer)
self.root.update()
#########################################################################################################################################
######################################################################################################################################### autocolor
def autocolor(self,n):
try:
self.AUTOCOLOR['N'][n]+=1
@ -110,27 +198,27 @@ class DR1P1M4G3():
return self.AUTOCOLOR['L'][n][self.AUTOCOLOR['N'][n]]
except:
return -1.666
#########################################################################################################################################
######################################################################################################################################### fliptext
def fliptext(self,s):
self.RENDER_TEXT=not self.RENDER_TEXT
if self.RENDER_TEXT:
print(f"<<<<< text rendering enabled >>>>>")
self.l0g(f"<<<<< text rendering enabled >>>>>")
self.canvas.delete('all')
self.loadimage()
else:
print(f"<<<<< text rendering disabled >>>>>")
self.l0g(f"<<<<< text rendering disabled >>>>>")
self.canvas.delete('all')
self.loadimage()
#########################################################################################################################################
######################################################################################################################################### isave
def isave(self,s):
if not self.MARKED:
if self.MARKED_FILES[self.IMAGE_INDEX]==1:
print(f"<<<<< unmarking from save {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.l0g(f"<<<<< unmarking from save {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.MARKED_FILES[self.IMAGE_INDEX]=0
self.loadimage()
return
else:
print(f"<<<<< marked to save {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.l0g(f"<<<<< marked to save {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.MARKED_FILES[self.IMAGE_INDEX]=1
if self.LAST_DIRECTION:
self.right(self)
@ -142,21 +230,22 @@ class DR1P1M4G3():
if not os.path.exists(self.ISAVE_DIRECTORY[self.IMAGE_DIR_INDEX[SIN]]):
os.mkdir(self.ISAVE_DIRECTORY[self.IMAGE_DIR_INDEX[SIN]])
shutil.move(self.IMAGE_LIST[SIN],self.ISAVE_DIRECTORY[self.IMAGE_DIR_INDEX[SIN]])
print(f"<<<<< moved {self.IMAGE_LIST[SIN]} to {self.ISAVE_DIRECTORY[self.IMAGE_DIR_INDEX[SIN]]} >>>>>")
#########################################################################################################################################
self.l0g(f"<<<<< moved {self.IMAGE_LIST[SIN]} to {self.ISAVE_DIRECTORY[self.IMAGE_DIR_INDEX[SIN]]} >>>>>")
######################################################################################################################################### idrop
def idrop(self,s):
if not self.MARKED:
if self.MARKED_FILES[self.IMAGE_INDEX]==-1:
print(f"<<<<< unmarking from drop {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.l0g(f"<<<<< unmarking from drop {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.MARKED_FILES[self.IMAGE_INDEX]=0
self.loadimage()
return
else:
print(f"<<<<< marked to drop {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.l0g(f"<<<<< marked to drop {self.IMAGE_LIST[self.IMAGE_INDEX]} >>>>>")
self.MARKED_FILES[self.IMAGE_INDEX]=-1
if self.LAST_DIRECTION:
self.right(self)
else:
self.left(self)
else:
for DIN,VAL in enumerate(self.MARKED_FILES):
@ -164,23 +253,23 @@ class DR1P1M4G3():
if not os.path.exists(self.IDROP_DIRECTORY[self.IMAGE_DIR_INDEX[DIN]]):
os.mkdir(self.IDROP_DIRECTORY[self.IMAGE_DIR_INDEX[DIN]])
shutil.move(self.IMAGE_LIST[DIN],self.IDROP_DIRECTORY[self.IMAGE_DIR_INDEX[DIN]])
print(f"<<<<< moved {self.IMAGE_LIST[DIN]} to {self.IDROP_DIRECTORY[self.IMAGE_DIR_INDEX[DIN]]} >>>>>")
#########################################################################################################################################
self.l0g(f"<<<<< moved {self.IMAGE_LIST[DIN]} to {self.IDROP_DIRECTORY[self.IMAGE_DIR_INDEX[DIN]]} >>>>>")
######################################################################################################################################### shuffling
def shuffling(self,s):
self.USER_USERSHUF=not self.USER_USERSHUF
if self.USER_USERSHUF:
self.getfilelist()
self.loadimage()
print(f"<<<<< image shuffling enabled >>>>>")
self.l0g(f"<<<<< image shuffling enabled >>>>>")
else:
print(f"<<<<< image shuffling disabled >>>>>")
########################################################################################################################################
self.l0g(f"<<<<< image shuffling disabled >>>>>")
######################################################################################################################################### escaped
def escaped(self,s):
self.root.destroy()
sys.exit(0)
#########################################################################################################################################
######################################################################################################################################### markedlist
def markedlist(self,s):
print(f"<<<<< batch processing marked list >>>>>")
self.l0g(f"<<<<< batch processing marked list >>>>>")
self.MARKED=True
self.isave(self)
self.idrop(self)
@ -190,7 +279,109 @@ class DR1P1M4G3():
self.right(self)
else:
self.left(self)
#########################################################################################################################################
######################################################################################################################################### autogrid <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< autogrid
def ripgrid(self,s):
self.l0g(f'<<< ripgrid >>>')
try:
icount=0
for __y in range(self.GY):
for __x in range(self.GX):
self.xy[0]=__x; self.xy[1]=__y; self.movecell()
self.image_gridcell.save(f'ripgrid_{str(self.basename).zfill(8)}_{str(icount).zfill(4)}_.png')
icount+=1
######################
self.basename+=1
self.GRID(self)
self.AUTO_GRID=True
if self.LAST_DIRECTION:
self.right(self)
else:
self.left(self)
except:
self.l0g(f'error: ripgrid saving preview')
######################################################################################################################################### autogrid <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< autogrid
def flipautogrid(self,s):
self.AUTO_GRID=not self.AUTO_GRID
self.l0g(f'<<< autogrid mode: {self.AUTO_GRID} >>>')
######################################################################################################################################### autogrid <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< autogrid
def autogrid(self,s):
self.l0g(f'<<< autogrid mode: enabled >>>')
#######################################################################################################################################
if not self.REDIMENSION==2:
self.REDIMENSION=2
self.loadimage()
#######################################################################################################################################
reso=self.calcreso(f'{self.image.width}x{self.image.height}')
agx=0; agy=0;
try:
AGX,AGY=[reso[x] for x in reso.keys()]
except:
AGXY=[reso[x] for x in reso.keys()]
AGX=AGXY; AGY=AGXY
if 1024 in AGX and 1024 in AGY:
agx=self.image.width/1024
agy=self.image.height/1024
elif 1024 in AGX and 768 in AGY:
agx=self.image.width/1024
agy=self.image.height/768
elif 768 in AGX and 1024 in AGY:
agx=self.image.width/768
agy=self.image.height/1024
elif 768 in AGX and 768 in AGY:
agx=self.image.width/768
agy=self.image.height/768
elif 768 in AGX and 512 in AGY:
agx=self.image.width/768
agy=self.image.height/512
elif 512 in AGX and 768 in AGY:
agx=self.image.width/512
agy=self.image.height/768
elif 512 in AGX and 512 in AGY:
agx=self.image.width/512
agy=self.image.height/512
else:
inx=0; iny=-1;
for n in range(len(reso[self.image.width])):
inx-=1
agx=self.image.width/reso[self.image.width][inx]
agy=self.image.height/reso[self.image.height][iny]
if agx>=agy:
print(f'{agx}x{agy}')
break
self.gx=int(agx)
self.GX=int(agx)
self.gy=int(agy)
self.GY=int(agy)
_x=self.root.winfo_screenwidth()/self.GX
_y=self.root.winfo_screenheight()/self.GY
#######################################################################################################################################
[ self.canvas.delete(x) for x in self.canvas.find_all() if not 'activeimage' in self.canvas.itemconfig(x) ]
#######################################################################################################################################
self.cellrect[0]=self.canvas.create_rectangle(0,0,self.root.winfo_screenwidth()-1,self.root.winfo_screenheight()-1, outline='red2', width=1)
_x=self.root.winfo_screenwidth()/self.GX; _y=self.root.winfo_screenheight()/self.GY
for Y in range(self.gy+1):
for X in range(self.gx):
self.cellrect[1].append(self.canvas.create_rectangle((_x*X),(_y*Y),(_x*X)+_x,(_y*Y)+_y,outline=self.autocolor(1),width=1))
self.cellrect[2].append(self.canvas.create_rectangle((_x*X)+3,(_y*Y)+3,(_x*X)+_x-2,(_y*Y)+_y-2,outline=self.autocolor(0),width=4))
#######################################################################################################################################
x_x=self.root.winfo_screenwidth()/2
y_y=self.root.winfo_screenheight()/2
#######################################################################################################################################
if self.RENDER_TEXT:
if self.MARKED_FILES[self.IMAGE_INDEX]==0: COLOR=self.NORMAL_TEXT_COLOR
elif self.MARKED_FILES[self.IMAGE_INDEX]==1: COLOR='green'
elif self.MARKED_FILES[self.IMAGE_INDEX]==-1: COLOR='red'
#####################################################################################################################################
Buffer = 'filename: {}\nredimension: {} - screen: {}x{} - image: {}x{} - diff: {}x{} - resize: {}x{}\nfile: {}/{} - interval: {}'.format(self.IMAGE_LIST[self.IMAGE_INDEX],self.REDIMENSION,self.root.winfo_screenwidth(),self.root.winfo_screenheight(),self.image.width,self.image.height,self.root.winfo_screenwidth()-self.image.width,self.root.winfo_screenheight()-self.image.height,self.XX,self.YY,self.IMAGE_INDEX,len(self.IMAGE_LIST)-1,self.PUMP_INTERVAL)
self.l0g('break <-> here here here here here here here here here here here here here here here here here here here here here here here')
#####################################################################################################################################
self.canvas.create_text(x_x,85,text=Buffer,fill=COLOR,justify='center'); self.root.title(Buffer)
#######################################################################################################################################
self.root.update() ####################################################################################################################
self.AUTO_GRID=False
self.GRID_MODE=True
self.grid(self)
######################################################################################################################################### autopump
def autopump(self,s):
self.PUMP_AUTO = not self.PUMP_AUTO
if self.PUMP_AUTO:
@ -198,14 +389,14 @@ class DR1P1M4G3():
self.right(self)
if self.PUMP_INTERVAL < 0.01: self.PUMP_INTERVAL+=0.5
sleep(self.PUMP_INTERVAL)
print(self.PUMP_AUTO)
#########################################################################################################################################
self.l0g(self.PUMP_AUTO)
######################################################################################################################################### redimension
def redimension(self,s):
self.canvas.delete('all')
self.REDIMENSION+=1
if self.REDIMENSION>4: self.REDIMENSION=0
self.loadimage()
#########################################################################################################################################
######################################################################################################################################### loadimage <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< loadimage
def loadimage(self):
self.canvas.delete('all')
try:
@ -315,7 +506,7 @@ class DR1P1M4G3():
self.canvas.create_rectangle(0,0,self.root.winfo_screenwidth(),self.root.winfo_screenheight(), outline=COLOR, width=25,)
self.texting=self.canvas.create_text(self.root.winfo_screenwidth()/2, 85, text=Buffer,fill=COLOR,justify='center',font=("Arial", 25))
self.root.title(Buffer)
print(f"{offset} / {x} - {i}")
self.l0g(f"{offset} / {x} - {i}")
self.root.update()
else:
self.resized_image=self.image.resize((xx,yy),Image.LANCZOS)
@ -339,7 +530,7 @@ class DR1P1M4G3():
self.texting=self.canvas.create_text(self.root.winfo_screenwidth()/2, 85, text=Buffer,fill=COLOR,justify='center',font=("Arial", 25))
self.root.title(Buffer)
try:
print(f"{offset} / {x} - {i}")
self.l0g(f"{offset} / {x} - {i}")
except:
pass
if self.REDIMENSION==1:
@ -367,6 +558,8 @@ class DR1P1M4G3():
self.texting=self.canvas.create_text(self.root.winfo_screenwidth()/2, 85, text=Buffer,fill=COLOR,justify='center',font=("Arial", 25))
self.root.title(Buffer)
self.root.update()
if self.AUTO_GRID:
self.autogrid(self)
#####################################################################################################################################
elif self.REDIMENSION==3:
self.canvas.delete('all')
@ -430,17 +623,29 @@ class DR1P1M4G3():
elif self.MARKED_FILES[self.IMAGE_INDEX]==-1:
COLOR='red'
self.canvas.create_rectangle(0,0,self.root.winfo_screenwidth(),self.root.winfo_screenheight(), outline=COLOR, width=25,)
self.texting=self.canvas.create_text(self.root.winfo_screenwidth()/2, 85, text=Name,fill=COLOR,justify='center',font=("Arial", 25))
self.texting=self.canvas.create_text(self.root.winfo_screenwidth()/2,85,text=Name,fill=COLOR,justify='center',font=(self.NORMAL_TEXT_FONT, self.NORMAL_TEXT_SIZE))
self.root.title(Name)
self.root.update()
except IOError:
print(f"error: non-picture, skipping past - {self.IMAGE_LIST[self.IMAGE_INDEX]}")
self.l0g(f"error: non-picture, skipping past - {self.IMAGE_LIST[self.IMAGE_INDEX]}")
if self.LAST_DIRECTION:
self.right(self)
else:
self.left(self)
print('<< dr1p1m4g3 >> screen: {}x{} - image: {}x{} - file: {}/{} - interval: {} - filename: {}'.format(self.root.winfo_screenwidth(),self.root.winfo_screenheight(),self.image.width,self.image.height,self.IMAGE_INDEX,len(self.IMAGE_LIST)-1,self.PUMP_INTERVAL,self.IMAGE_LIST[self.IMAGE_INDEX]))
#########################################################################################################################################
self.l0g('<< dr1p1m4g3 >> screen: {}x{} - image: {}x{} - file: {}/{} - interval: {} - filename: {}'.format(self.root.winfo_screenwidth(),self.root.winfo_screenheight(),self.image.width,self.image.height,self.IMAGE_INDEX,len(self.IMAGE_LIST)-1,self.PUMP_INTERVAL,self.IMAGE_LIST[self.IMAGE_INDEX]))
######################################################################################################################################### log
def log(self,s):
f=open(self.logfile,'a')
f.write(f'{s}\n')
f.close()
######################################################################################################################################### calcreso <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< calcreso
def calcreso(self,s):
x,y=s.split('x');X=[];Y=[]
for i in range(256,1024):
if not (int(x)/i) % 1: X.append(i)
if not (int(y)/i) % 1: Y.append(i)
return {int(x):X,int(y):Y}
######################################################################################################################################### getfilelist <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< getfilelist
def getfilelist(self):
# self.IMAGE_LIST=[ x for x in Path(self.IMAGE_DIR+'/').rglob('*') if not str(x).endswith('.txt') and not "intermediates" in x.name ]
if self.REFRESH==0:
@ -448,28 +653,40 @@ class DR1P1M4G3():
FILE_LIST=[]
self.IMAGE_DIR_INDEX=[]
for i,_ in enumerate(self.DIR_IMAGE_LIST):
print(f'<<< generating image list recursively from base directory: {_}/* >>>')
self.l0g(f'<<< generating image list recursively from base directory: {_}/* >>>')
_FILE_LIST=[ x for x in Path(_+'/').rglob('*') ]
FILE_LIST+=_FILE_LIST
self.IMAGE_DIR_INDEX+=[i]*len(_FILE_LIST)
self.IMAGE_LIST=[]
IMAGE_DIR_INDEX=[]
self.resodb=[]
for i,x in enumerate(FILE_LIST):
try:
if is_file_an_image(str(x)):
# if is_file_an_image(str(x)):
self.IMAGE_LIST.append(x)
IMAGE_DIR_INDEX+=[self.IMAGE_DIR_INDEX[i]]
print(f'added: {str(x)}')
self.l0g(f'added: {str(x)}')
reso_x,reso_y=Image.open(x).size
except Exception as e:
print(f'skipped: {str(x)} - reason: {e}')
self.l0g(f'skipped: {str(x)} - reason: {e}')
#######################################################
try:
self.l0g('<<< writing image resolution database >>>')
self.resodb=sorted(set(self.resodb)) # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#for _ in self.resodb: self.log(_) # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
except Exception as e:
self.l0g('error writing image resolution database: {e}')
#######################################################
self.root.deiconify()
#######################################################
self.IMAGE_DIR_INDEX=IMAGE_DIR_INDEX
self.MARKED_FILES=[0]*len(IMAGE_DIR_INDEX)
if self.USER_USERSHUF:
shuffle(self.IMAGE_LIST)
self.IMAGE_INDEX=randint(0,len(self.IMAGE_LIST)-1)
print(f'index:{self.IMAGE_LIST[self.IMAGE_INDEX]}/{len(self.IMAGE_LIST)} - filename:{self.IMAGE_LIST[self.IMAGE_INDEX]} - size:{self.image.size}: [ width:{self.image.width} / height:{self.image.height} ]')
self.l0g(f'index:{self.IMAGE_LIST[self.IMAGE_INDEX]}/{len(self.IMAGE_LIST)} - filename:{self.IMAGE_LIST[self.IMAGE_INDEX]} - size:{self.image.size}: [ width:{self.image.width} / height:{self.image.height} ]')
self.IMAGE_LIST=sorted(self.IMAGE_LIST)
#########################################################################################################################################
######################################################################################################################################### movecell <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< movecell
def movecell(self):
_x=self.root.winfo_screenwidth()/self.GX
_y=self.root.winfo_screenheight()/self.GY
@ -485,8 +702,8 @@ class DR1P1M4G3():
self.moverect = self.canvas.create_rectangle((self.xy[0]*_x)+5,(self.xy[1]*_y)+5,(self.xy[0]*_x)+_x-5,(self.xy[1]*_y)+_y-5,outline=self.autocolor(2),width=8)
_x=self.image.width/self.GX
_y=self.image.height/self.GY
image_gridcell=self.image.crop([ (_x*self.xy[0]),(_y*self.xy[1]),(_x*self.xy[0])+_x,(_y*self.xy[1])+_y ])
self.image_preview=ImageTk.PhotoImage(image_gridcell)
self.image_gridcell=self.image.crop([ (_x*self.xy[0]),(_y*self.xy[1]),(_x*self.xy[0])+_x,(_y*self.xy[1])+_y ])
self.image_preview=ImageTk.PhotoImage(self.image_gridcell)
x_x=self.root.winfo_screenwidth()/2
y_y=self.root.winfo_screenheight()/2
@ -514,7 +731,7 @@ class DR1P1M4G3():
self.root.title(Buffer)
self.root.update()
#########################################################################################################################################
######################################################################################################################################### up
def up(self,s):
if not self.GRID_MODE:
######################
@ -526,7 +743,7 @@ class DR1P1M4G3():
if self.xy[1]<0: self.xy[1]=0
################
self.movecell()
#########################################################################################################################################
######################################################################################################################################### down
def down(self,s):
if not self.GRID_MODE:
######################
@ -538,7 +755,7 @@ class DR1P1M4G3():
if self.xy[1]>self.gy: self.xy[1]=self.gy
######################
self.movecell()
#########################################################################################################################################
######################################################################################################################################### left
def left(self,s):
if not self.GRID_MODE:
######################
@ -555,7 +772,7 @@ class DR1P1M4G3():
if self.xy[0]<0: self.xy[0]=0
################
self.movecell()
#########################################################################################################################################
######################################################################################################################################### right
def right(self,s):
if not self.GRID_MODE:
######################
@ -572,117 +789,9 @@ class DR1P1M4G3():
if self.xy[0]>=self.gx: self.xy[0]=self.gx-1
######################
self.movecell()
#########################################################################################################################################
#########################################################################################################################################
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
#########################################################################################################################################
##################### ###################################################################################################################
##################### ###################################################################################################################
def autogrid(self,s): ###################################################################################################################
##################### ###################################################################################################################
##################### ###################################################################################################################
#######################################################################################################################################
print(f'<<< autogrid mode: enabled >>>')
TABLES={ '1536x1024':512x512','3584x3072':'512x512','2560x2048':'512x512','2048x1536':'512x512','4000x444':'444x444','1760x880':'880x440','3520x2640':'660x660','1760x1760':'880x880','2640x1760':'600x440','6640x9920':'664x992'}
#######################################################################################################################################
if not self.REDIMENSION==2:
self.REDIMENSION=2
self.loadimage()
#######################################################################################################################################
self.gx-=1; print(f'<<< grid mode: removed x grid cell. x={self.gx},y={self.gy} >>>')
self.gy-=1; print(f'<<< grid mode: removed y grid cell. x={self.gx},y={self.gy} >>>')
self.gx+=1; print(f'<<< grid mode: added x grid cell. x={self.gx},y={self.gy} >>>')
self.gy+=1; print(f'<<< grid mode: added y grid cell. x={self.gx},y={self.gy} >>>')
#######################################################################################################################################
self.GX-=1; print(f'<<< grid mode: x division cell height decreased x={self.GX},y={self.GY} >>>')
self.GY-=1; print(f'<<< grid mode: y division cell height decreaded x={self.GX},y={self.GY} >>>')
self.GX+=1; print(f'<<< grid mode: x division cell height increased x={self.GX},y={self.GY} >>>')
self.GY+=1; print(f'<<< grid mode: y division cell height increased x={self.GX},y={self.GY} >>>')
#######################################################################################################################################
self.xy[1]-=1
if self.xy[1]<0: self.xy[1]=0
self.xy[1]+=1
if self.xy[1]>self.gy: self.xy[1]=self.gy
self.xy[0]-=1
if self.xy[0]<0: self.xy[0]=0
self.xy[0]+=1
if self.xy[0]>=self.gx: self.xy[0]=self.gx-1
self.movecell()
#######################################################################################################################################
_x=self.root.winfo_screenwidth()/self.GX
_y=self.root.winfo_screenheight()/self.GY
#######################################################################################################################################
[ self.canvas.delete(x) for x in self.canvas.find_all() if not 'activeimage' in self.canvas.itemconfig(x) ]
#######################################################################################################################################
self.moverect = self.canvas.create_rectangle((self.xy[0]*_x)+5,(self.xy[1]*_y)+5,(self.xy[0]*_x)+_x-5,(self.xy[1]*_y)+_y-5,outline=self.autocolor(2),width=8)
_x=self.image.width/self.GX
_y=self.image.height/self.GY
image_gridcell=self.image.crop([ (_x*self.xy[0]),(_y*self.xy[1]),(_x*self.xy[0])+_x,(_y*self.xy[1])+_y ])
self.image_preview=ImageTk.PhotoImage(image_gridcell)
x_x=self.root.winfo_screenwidth()/2
y_y=self.root.winfo_screenheight()/2
#######################################################################################################################################
self.cellrect[0]=self.canvas.create_rectangle(0,0,self.root.winfo_screenwidth()-1,self.root.winfo_screenheight()-1, outline='red2', width=1)
_x=self.root.winfo_screenwidth()/self.GX; _y=self.root.winfo_screenheight()/self.GY
for Y in range(self.gy+1):
for X in range(self.gx):
self.cellrect[1].append(self.canvas.create_rectangle((_x*X),(_y*Y),(_x*X)+_x,(_y*Y)+_y,outline=self.autocolor(1),width=1))
self.cellrect[2].append(self.canvas.create_rectangle((_x*X)+3,(_y*Y)+3,(_x*X)+_x-2,(_y*Y)+_y-2,outline=self.autocolor(0),width=4))
#######################################################################################################################################
self.preview=self.canvas.create_image(x_x,y_y,image=self.image_preview)
#######################################################################################################################################
if self.RENDER_TEXT:
if self.MARKED_FILES[self.IMAGE_INDEX]==0: COLOR=self.NORMAL_TEXT_COLOR
elif self.MARKED_FILES[self.IMAGE_INDEX]==1: COLOR='green'
elif self.MARKED_FILES[self.IMAGE_INDEX]==-1: COLOR='red'
#####################################################################################################################################
Buffer = f'filename: {self.IMAGE_LIST[self.IMAGE_INDEX]}\n'
Buffer+= f'redimension: {self.IMAGE_LIST[self.IMAGE_INDEX]}' + ' - '
Buffer+= f'screen: {self.REDIMENSION}x{self.root.winfo_screenwidth()}' + ' - '
Buffer+= f'image: {self.root.winfo_screenheight()}x{self.image.width}' + ' - '
Buffer+= f'diff: {self.image.height}x{self.root.winfo_screenwidth()-self.image.width}' + ' - '
Buffer+= f'resize: {self.root.winfo_screenheight()-self.image.height}x{self.XX}\n'
Buffer+= f'file: {self.YY}/{self.IMAGE_INDEX} - interval: {len(self.IMAGE_LIST)-1} - wrong {self.PUMP_INTERVAL}\n'
Buffer+= f'{self.xy[0]}x{self.GX} / {self.xy[1]}y{self.GY} - {self.image.width/self.GX}x{self.image.height/self.GY}'
#####################################################################################################################################
print('break <-> here here here here here here here here here here here here here here here here here here here here here here here')
Buffer = 'filename: {}\nredimension: {} - screen: {}x{} - image: {}x{} - diff: {}x{} - resize: {}x{}\nfile: {}/{} - interval: {}'.format(self.IMAGE_LIST[self.IMAGE_INDEX],self.REDIMENSION,self.root.winfo_screenwidth(),self.root.winfo_screenheight(),self.image.width,self.image.height,self.root.winfo_screenwidth()-self.image.width,self.root.winfo_screenheight()-self.image.height,self.XX,self.YY,self.IMAGE_INDEX,len(self.IMAGE_LIST)-1,self.PUMP_INTERVAL)
print('break <-> here here here here here here here here here here here here here here here here here here here here here here here')
#####################################################################################################################################
self.canvas.create_text(x_x,85,text=Buffer,fill=COLOR,justify='center'); self.root.title(Buffer)
#####################################################################################################################################
#######################################################################################################################################
################## ####################################################################################################################
################## ####################################################################################################################
self.root.update() ####################################################################################################################
################## ####################################################################################################################
################## ####################################################################################################################
#########################################################################################################################################
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
# A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - A U T O G R I D - AUTOGRID
#########################################################################################################################################
#################
######################################################################################################################################### grid <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< grid
def grid(self,s):
#################
if not self.GRID_MODE:
self.GRID_MODE=True
if not s in ['x','y', 'X', 'Y']:
@ -690,10 +799,10 @@ class DR1P1M4G3():
self.loadimage()
elif s in ['X', 'Y']:
for _ in self.cellrect[1]:
print(f'<<< deleting grid rect: {_} >>>')
self.l0g(f'<<< deleting grid rect: {_} >>>')
self.canvas.delete(_)
for _ in self.cellrect[2]:
print(f'<<< deleting grid rect: {_} >>>')
self.l0g(f'<<< deleting grid rect: {_} >>>')
self.canvas.delete(_)
self.cellrect[0]=self.canvas.create_rectangle(0,0,self.root.winfo_screenwidth()-1,self.root.winfo_screenheight()-1, outline='red2', width=1)
_x=self.root.winfo_screenwidth()/self.GX; _y=self.root.winfo_screenheight()/self.GY
@ -702,12 +811,12 @@ class DR1P1M4G3():
self.cellrect[1].append(self.canvas.create_rectangle((_x*X),(_y*Y),(_x*X)+_x,(_y*Y)+_y,outline=self.autocolor(1),width=1))
self.cellrect[2].append(self.canvas.create_rectangle((_x*X)+3,(_y*Y)+3,(_x*X)+_x-2,(_y*Y)+_y-2,outline=self.autocolor(0),width=4))
self.root.update()
print(f'<<< grid mode: enabled >>>')
#########################################################################################################################################
self.l0g(f'<<< grid mode: enabled >>>')
######################################################################################################################################### GRID
def halting(self,s):
print(f'gx{self.gx}GX{self.GX}xy[0]{self.xy[0]}/gy{self.gy}GY{self.GY}xy[1]{self.xy[1]}')
pass
######################################################################################################################################### GRID
def GRID(self,s):
if self.GRID_MODE:
self.GRID_MODE=False
@ -716,8 +825,8 @@ class DR1P1M4G3():
self.gx=0
self.loadimage()
self.root.update()
print(f'<<< grid mode: disabled >>>')
#########################################################################################################################################
self.l0g(f'<<< grid mode: disabled >>>')
######################################################################################################################################### gridx
def gridx(self,s):
######################
if not self.GRID_MODE:
@ -727,8 +836,8 @@ class DR1P1M4G3():
######################
self.gx+=1
self.grid('x')
print(f'<<< grid mode: added x grid cell. x={self.gx},y={self.gy} >>>')
#########################################################################################################################################
self.l0g(f'<<< grid mode: added x grid cell. x={self.gx},y={self.gy} >>>')
######################################################################################################################################### gridy
def gridy(self,s):
######################
if not self.GRID_MODE:
@ -738,8 +847,8 @@ class DR1P1M4G3():
######################
self.gy+=1
self.grid('y')
print(f'<<< grid mode: added y grid cell. x={self.gx},y={self.gy} >>>')
#########################################################################################################################################
self.l0g(f'<<< grid mode: added y grid cell. x={self.gx},y={self.gy} >>>')
######################################################################################################################################### gridX
def gridX(self,s):
######################
if not self.GRID_MODE:
@ -750,8 +859,8 @@ class DR1P1M4G3():
self.gx-=1
if self.gx < 0: self.gx=0
self.grid('X')
print(f'<<< grid mode: removed x cell. x={self.gx},y={self.gy} >>>')
#########################################################################################################################################
self.l0g(f'<<< grid mode: removed x cell. x={self.gx},y={self.gy} >>>')
######################################################################################################################################### gridY
def gridY(self,s):
######################
if not self.GRID_MODE:
@ -762,8 +871,8 @@ class DR1P1M4G3():
self.gy-=1
if self.gy < 0: self.gy=0
self.grid('Y')
print(f'<<< grid mode: removed y cell. x={self.gx},y={self.gy} >>>')
#########################################################################################################################################
self.l0g(f'<<< grid mode: removed y cell. x={self.gx},y={self.gy} >>>')
######################################################################################################################################### grid_cell_up_y
def grid_cell_up_y(self,s):
######################
if not self.GRID_MODE:
@ -772,7 +881,7 @@ class DR1P1M4G3():
self.GRID_MODE=True
######################
self.GY+=1
print(f'<<< grid mode: y division cell height increased. x={self.GX},y={self.GY} >>>')
self.l0g(f'<<< grid mode: y division cell height increased. x={self.GX},y={self.GY} >>>')
if self.RENDER_TEXT:
COLOR=''
if self.MARKED_FILES[self.IMAGE_INDEX]==0:
@ -788,7 +897,7 @@ class DR1P1M4G3():
self.root.title(Buffer)
self.root.update()
self.grid(self)
#########################################################################################################################################
######################################################################################################################################### grid_cell_down_y
def grid_cell_down_y(self,s):
######################
if not self.GRID_MODE:
@ -797,7 +906,7 @@ class DR1P1M4G3():
self.GRID_MODE=True
######################
self.GY-=1
print(f'<<< grid mode: y division cell height decreased. x={self.GX},y={self.GY} >>>')
self.l0g(f'<<< grid mode: y division cell height decreased. x={self.GX},y={self.GY} >>>')
if self.RENDER_TEXT:
COLOR=''
if self.MARKED_FILES[self.IMAGE_INDEX]==0:
@ -813,7 +922,7 @@ class DR1P1M4G3():
self.root.title(Buffer)
self.root.update()
self.grid(self)
#########################################################################################################################################
######################################################################################################################################### grid_cell_up_x
def grid_cell_up_x(self,s):
######################
if not self.GRID_MODE:
@ -822,7 +931,7 @@ class DR1P1M4G3():
self.GRID_MODE=True
######################
self.GX-=1
print(f'<<< grid mode: x division cell width decreased. x={self.GX},y={self.GY} >>>')
self.l0g(f'<<< grid mode: x division cell width decreased. x={self.GX},y={self.GY} >>>')
if self.RENDER_TEXT:
COLOR=''
if self.MARKED_FILES[self.IMAGE_INDEX]==0:
@ -838,7 +947,7 @@ class DR1P1M4G3():
self.root.title(Buffer)
self.root.update()
self.grid(self)
#########################################################################################################################################
######################################################################################################################################### grid_cell_down_x
def grid_cell_down_x(self,s):
######################
if not self.GRID_MODE:
@ -847,7 +956,7 @@ class DR1P1M4G3():
self.GRID_MODE=True
######################
self.GX+=1
print(f'<<< grid mode: x division cell width increased. x={self.GX},y={self.GY} >>>')
self.l0g(f'<<< grid mode: x division cell width increased. x={self.GX},y={self.GY} >>>')
if self.RENDER_TEXT:
COLOR=''
if self.MARKED_FILES[self.IMAGE_INDEX]==0:
@ -863,7 +972,7 @@ class DR1P1M4G3():
self.root.title(Buffer)
self.root.update()
self.grid(self)
#########################################################################################################################################
######################################################################################################################################### main <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< mainloop with binds
def main(self):
#######################################################################################################################################
try:
@ -874,8 +983,9 @@ class DR1P1M4G3():
self.root.eval('tk::PlaceWindow . center')
#self.root.overrideredirect(True)
self.root.wm_attributes("-topmost",True)
self.root.wm_attributes("-transparent",True)
self.root.config(bg='systemTransparent')
self.root.withdraw()
#self.root.wm_attributes("-transparent",True)
#self.root.config(bg='systemTransparent')
self.image=Image.new(mode='RGB', size=(self.root.winfo_screenwidth(),self.root.winfo_screenheight()))
self.photo=ImageTk.PhotoImage(self.image)
self.canvas=Canvas(self.root,width=self.root.winfo_screenwidth(),height=self.root.winfo_screenheight(),bd=0,highlightthickness=0)
@ -885,10 +995,13 @@ class DR1P1M4G3():
self.IMAGE_INDEX=(0+int(self.USER_IMGINDEX))
self.PUMP_AUTO=self.USER_PUMPMODE
self.getfilelist()
self.canvas.bind("<z>",self.ripgrid)
self.canvas.bind("<a>",self.flipautogrid)
self.canvas.bind("<m>",self.shuffling)
self.canvas.bind("<backslash>",self.autogrid)
self.canvas.bind("<g>",self.grid)
self.canvas.bind("<G>",self.GRID)
self.canvas.bind("<h>",self.halting)
self.canvas.bind("<x>",self.gridx)
self.canvas.bind("<y>",self.gridy)
self.canvas.bind("<X>",self.gridX)
@ -920,8 +1033,8 @@ class DR1P1M4G3():
self.root.mainloop()
#######################################################################################################################################
except Exception as err:
print(f"main(): {err}")
###########################################################################################################################################
self.l0g(f"main(): {err}")
########################################################################################################################################### main
def main(screen):
DIR_IMAGE_LIST=[]
curses.start_color()
@ -980,13 +1093,16 @@ def main(screen):
curses.endwin()
DIR_IMAGE_LIST.append(os.getcwd())
return DIR_IMAGE_LIST
###########################################################################################################################################
########################################################################################################################################### __name__
if __name__=="__main__":
#########################################################################################################################################
DEBUG=True
if DEBUG:
USERPATH=['/Users/dr1p/dr1p1m4g3/grids'] #wrapper(main)
IMGINDEX=int(0)
if STARTUP_DIRECTORY_OVERRIDE:
USERPATH=STARTUP_DIRECTORY_OVERRIDE
else:
USERPATH=wrapper(main)
IMGINDEX=int(3)
RENDMODE=int(1)
PUMPMODE=int(1)
PUMPTIME=10
@ -1045,5 +1161,37 @@ if __name__=="__main__":
print(f'[ no shuffle mode specified: defaulting to being turned off ]')
#########################################################################################################################################
dr1p1m4g3=DR1P1M4G3(USERPATH,IMGINDEX,RENDMODE,PUMPMODE,PUMPTIME,USERSHUF)
#########################################################################################################################################
####################################################################################################################################### EOF
###########################################################################################################################################
###########################################################################################################################################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh+MMMMMMMMMMMMMMhsMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm/ oMMMMMMMMMMMMMMm +NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy` yMMMMMMMMMMMMMMM- -mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMs+dMMMMMMMMMM+ sMMMMMMMMMMMMMMM- `dMMMMMMMMMMms/NMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMM+ .omMMMMMM: -MMMMMMMMMMMMMMo `yMMMMMMMy: `dMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMM- /dMMM+ sMMMMMMMMMMMMh `hMMMNo` sMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMd :dm `mMMMMMMMMMMN. .NNo` .MMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMM: - :MMMMMMMMMMs :` sMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMs ymNMMMMMNm. NMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMy `-/-` .MMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMo .NMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMNh+. :sdMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMhso+:. `-/+syMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMM- dMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMM` `.:+/. `/s+:. sMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMNo -oms. .//-` `:/:` `+md+` .hMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMNs` .odNdo. .ohmd+` :dMMMMMMMMMMM#######################
###################MMMMMMMMMMNo` .. .- :hMMMMMMMMM#######################
###################MMMMMMMMd+` -sNMMMMMM#######################
###################MMMMMNs- `.. `/-. `+dMMMM#######################
###################MMNy: ./sdNMMMh: `sNMMMNds/. .odM#######################
###################M+ :ymMMMMMMMMMMh. +NMMMMMMMMMMmo- /#######################
###################MMh: .sNMMMMMMMMMMMMMMN- `hMMMMMMMMMMMMMMMm+` :hM#######################
###################MMMMd:` ``-:+shmMMMMMMMMMMMMMMMMMMN. hMMMMMMMMMMMMMMMMMMMmhs+/-..``````./dMMM#######################
###################MMMMMMMMNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMo .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN. /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN+` `+NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs. -hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################
###################MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdyymMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#######################