autogrid,autogridrip
This commit is contained in:
parent
46574fc422
commit
dfec860349
534
dr1p1m4g3_dev.py
534
dr1p1m4g3_dev.py
|
@ -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)):
|
||||
self.IMAGE_LIST.append(x)
|
||||
IMAGE_DIR_INDEX+=[self.IMAGE_DIR_INDEX[i]]
|
||||
print(f'added: {str(x)}')
|
||||
# if is_file_an_image(str(x)):
|
||||
self.IMAGE_LIST.append(x)
|
||||
IMAGE_DIR_INDEX+=[self.IMAGE_DIR_INDEX[i]]
|
||||
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#######################
|
||||
|
|
Loading…
Reference in New Issue