PDF-Embanner/pdfembannersrc/wmark.py

89 lines
2.7 KiB
Python
Raw Permalink Normal View History

2018-05-18 06:49:19 +00:00
# -*-coding:utf-8 -*
import tkinter as tk
from pdfembannersrc import editwmark
from pdfembannersrc import strings
import logging
logger = logging.getLogger()
class Wmark:
"""
Class to store data on a watermark
"""
count = 0
default_name = "New watermark"
def __init__(self, filename):
self.id = Wmark.count
Wmark.count += 1
self.name = Wmark.default_name + " {}".format(self.id+1)
self.position = None
self.userposition = None
self.text = None
self.size = None
self.notfirstpage = False
self.notlastpage = False
self.notpages = None
self.onlyfirstpage = False
self.onlylastpage = False
self.onlypages = None
self.bold = False
self.italic = False
self.boxed = False
self.lined = False
self.Wnum =None
self.Wlabel = None
self.Wedit = None
self.Wdel = None
def edit(self, parent):
parent.message["text"] = "Edit Watermark"
interface2 = editwmark.InterfaceEdit(parent, self)
def add_widgets(self, frame, parent, i):
self.Wnum = tk.Label(frame, text="{}.".format(i+1))
self.Wlabel = tk.Label(frame, text=self.name)
self.Wedit = tk.Button(frame, text="Edit", command=lambda: self.edit(parent))
self.Wdel = tk.Button(frame, text="Del", command=lambda: parent.delete(self.id))
self.set_i_widgets(i)
def unset_i_widgets(self):
self.Wnum.grid_forget()
self.Wlabel.grid_forget()
self.Wedit.grid_forget()
self.Wdel.grid_forget()
def set_i_widgets(self, i):
self.Wnum.grid(row=i, column=0, sticky=tk.W)
self.Wnum["text"] = "{}.".format(i+1)
self.Wlabel.grid(row=i, column=3, sticky=tk.W)
self.Wedit.grid(row=i, column=1)
self.Wdel.grid(row=i, column=2)
def destroy_widgets(self):
self.Wnum.destroy()
self.Wlabel.destroy()
self.Wedit.destroy()
self.Wdel.destroy()
def format_tex(self):
s = self.text
s = s.replace(" %p ", "~\\thepage~")
s = s.replace("%p ", "\\thepage~")
s = s.replace(" %p", "~\\thepage")
s = s.replace("%p", "\\thepage")
s = s.replace(" %P", "~\\pageref{LastPage}")
s = s.replace("%P", "\\pageref{LastPage}")
if(self.size is not None):
s = strings.tex_size[self.size]+ " " + s
if(self.bold):
s = "\\bfseries " + s
if(self.italic):
s = "\\itshape " + s
if(self.size is not None or self.bold or self.italic):
s = "{" + s + "}"
if(self.boxed):
s = "\\framebox[1.1\\width]{" + s + "}"
return s