Added extra tests for dispersion_relation.py and qtf in spectrum/core.py. Deleted powerpoint.py
parent
34e8f5a69b
commit
2e3e506767
@ -1,311 +0,0 @@
|
||||
'''
|
||||
Created on 15. des. 2009
|
||||
|
||||
@author: pab
|
||||
'''
|
||||
# import os
|
||||
# import sys
|
||||
# import win32com
|
||||
# from win32com.client.selecttlb import EnumTlbs
|
||||
# typelib_mso = None
|
||||
# typelib_msppt = None
|
||||
# for typelib in EnumTlbs():
|
||||
# d = typelib.desc.split(' ')
|
||||
# if d[0] == 'Microsoft' and d[1] == 'Office' and d[3] == 'Object' \
|
||||
# and d[4] == 'Library':
|
||||
# typelib_mso = typelib
|
||||
# if d[0] == 'Microsoft' and d[1] == 'PowerPoint' and d[3] == 'Object' \
|
||||
# and d[4] == 'Library':
|
||||
# typelib_msppt = typelib
|
||||
# if hasattr(sys, 'frozen'): # If we're an .exe file
|
||||
# win32com.__gen_path__ = os.path.dirname(sys.executable)
|
||||
# # win32com.__gen_path__ = os.environ['TEMP']
|
||||
# if win32com.client.gencache.is_readonly:
|
||||
# win32com.client.gencache.is_readonly = False
|
||||
# win32com.client.gencache.Rebuild()
|
||||
# MSPPT = win32com.client.gencache.EnsureModule(typelib_msppt.clsid,
|
||||
# typelib_msppt.lcid,
|
||||
# int(typelib_msppt.major),
|
||||
# int(typelib_msppt.minor))
|
||||
# MSO = win32com.client.gencache.EnsureModule(typelib_mso.clsid,
|
||||
# typelib_mso.lcid,
|
||||
# int(typelib_mso.major), int(typelib_mso.minor))
|
||||
from __future__ import absolute_import
|
||||
from six import iteritems # @UnresolvedImport
|
||||
import os
|
||||
import warnings
|
||||
import win32com.client
|
||||
from . import MSO
|
||||
from . import MSPPT
|
||||
from PIL import Image # @UnresolvedImport
|
||||
|
||||
g = globals()
|
||||
for c in dir(MSO.constants):
|
||||
g[c] = getattr(MSO.constants, c)
|
||||
for c in dir(MSPPT.constants):
|
||||
g[c] = getattr(MSPPT.constants, c)
|
||||
|
||||
|
||||
class Powerpoint(object):
|
||||
|
||||
def __init__(self, file_name=''):
|
||||
|
||||
self.application = win32com.client.Dispatch("Powerpoint.Application")
|
||||
# self.application.Visible = True
|
||||
self._visible = self.application.Visible
|
||||
if file_name:
|
||||
self.presentation = self.application.Presentations.Open(file_name)
|
||||
else:
|
||||
self.presentation = self.application.Presentations.Add()
|
||||
self.num_slides = 0
|
||||
# default picture width and height
|
||||
self.default_width = 500
|
||||
self.default_height = 400
|
||||
self.title_font = 'Arial' # 'Boopee'
|
||||
self.title_size = 36
|
||||
self.text_font = 'Arial' # 'Boopee'
|
||||
self.text_size = 20
|
||||
self.footer = ''
|
||||
|
||||
def set_footer(self):
|
||||
'''
|
||||
Set Footer in SlideMaster and NotesMaster
|
||||
'''
|
||||
if self.footer:
|
||||
if self.presentation.HasTitleMaster:
|
||||
TMHF = self.presentation.TitleMaster.HeadersFooters
|
||||
TMHF.Footer.Text = self.footer
|
||||
TMHF.Footer.Visible = True
|
||||
|
||||
SMHF = self.presentation.SlideMaster.HeadersFooters
|
||||
SMHF.Footer.Text = self.footer
|
||||
SMHF.Footer.Visible = True
|
||||
SMHF.SlideNumber.Visible = True
|
||||
NMHF = self.presentation.NotesMaster.HeadersFooters
|
||||
NMHF.Footer.Text = self.footer
|
||||
NMHF.SlideNumber.Visible = True
|
||||
for slide in self.presentation.Slides:
|
||||
shapes = slide.Shapes
|
||||
for shape in shapes:
|
||||
if shape.Name == 'Footer':
|
||||
footer = shape
|
||||
break
|
||||
else:
|
||||
footer = shapes.AddTextbox(
|
||||
msoTextOrientationHorizontal, # @UndefinedVariable
|
||||
Left=0, Top=510, Width=720, Height=28.875)
|
||||
footer.Name = 'Footer'
|
||||
footer.TextFrame.TextRange.Text = self.footer
|
||||
|
||||
def add_title_slide(self, title, subtitle=''):
|
||||
self.num_slides += 1
|
||||
slide = self.presentation.Slides.Add(
|
||||
self.num_slides, MSPPT.constants.ppLayoutTitle)
|
||||
|
||||
unused_title_id, unused_textbox_id = 1, 2
|
||||
for id_, title1 in enumerate([title, subtitle]):
|
||||
titlerange = slide.Shapes(id_ + 1).TextFrame.TextRange
|
||||
titlerange.Text = title1
|
||||
titlerange.Font.Name = self.title_font
|
||||
titlerange.Font.Size = self.title_size - id_ * \
|
||||
12 if self.title_size > 22 else self.title_size
|
||||
|
||||
def add_slide(self, title='', texts='', notes='', image_file='',
|
||||
maxlevel=None, left=220, width=-1, height=-1):
|
||||
self.num_slides += 1
|
||||
slide = self.presentation.Slides.Add(
|
||||
self.num_slides, MSPPT.constants.ppLayoutText)
|
||||
|
||||
self.add2slide(slide, title, texts, notes, image_file, maxlevel, left,
|
||||
width, height)
|
||||
return slide
|
||||
|
||||
def add2slide(self, slide, title='', texts='', notes='', image_file='',
|
||||
maxlevel=None, left=220, width=-1, height=-1,
|
||||
keep_aspect=True):
|
||||
title_id, textbox_id = 1, 2
|
||||
if title:
|
||||
titlerange = slide.Shapes(title_id).TextFrame.TextRange
|
||||
titlerange.Font.Name = self.title_font
|
||||
titlerange.Text = title
|
||||
titlerange.Font.Size = self.title_size
|
||||
|
||||
if texts != '' and texts != ['']:
|
||||
# textrange = slide.Shapes(textbox_id).TextFrame.TextRange
|
||||
self._add_text(slide, textbox_id, texts, maxlevel)
|
||||
|
||||
if image_file != '' and image_file != ['']:
|
||||
if keep_aspect:
|
||||
im = Image.open(image_file)
|
||||
t_w, t_h = im.size
|
||||
if height <= 0 and width <= 0:
|
||||
if t_w * self.default_height < t_h * self.default_width:
|
||||
height = self.default_height
|
||||
else:
|
||||
width = self.default_width
|
||||
if height <= 0 and width:
|
||||
height = t_h * width / t_w
|
||||
elif height and width <= 0:
|
||||
width = t_w * height / t_h
|
||||
|
||||
slide.Shapes.AddPicture(FileName=image_file, LinkToFile=False,
|
||||
SaveWithDocument=True,
|
||||
Left=left, Top=110,
|
||||
Width=width, Height=height) # 400)
|
||||
if notes != '' and notes != ['']:
|
||||
notespage = slide.NotesPage # .Shapes(2).TextFrame.TextRange
|
||||
self._add_text(notespage, 2, notes)
|
||||
return slide
|
||||
|
||||
def _add_text(self, page, id, txt, maxlevel=None): # @ReservedAssignment
|
||||
page.Shapes(id).TextFrame.TextRange.Font.Name = self.text_font
|
||||
|
||||
if isinstance(txt, dict):
|
||||
self._add_text_from_dict(page, id, txt, 1, maxlevel)
|
||||
elif isinstance(txt, (list, tuple)):
|
||||
self._add_text_from_list(page, id, txt, maxlevel)
|
||||
else:
|
||||
unused_tr = page.Shapes(id).TextFrame.TextRange.InsertAfter(txt)
|
||||
unused_temp = page.Shapes(id).TextFrame.TextRange.InsertAfter('\r')
|
||||
|
||||
page.Shapes(id).TextFrame.TextRange.Font.Size = self.text_size
|
||||
|
||||
def _add_text_from_dict(self, page, id, txt_dict, # @ReservedAssignment
|
||||
level, maxlevel=None):
|
||||
if maxlevel is None or level <= maxlevel:
|
||||
for name, subdict in iteritems(txt_dict):
|
||||
tr = page.Shapes(id).TextFrame.TextRange.InsertAfter(name)
|
||||
unused_temp = page.Shapes(
|
||||
id).TextFrame.TextRange.InsertAfter('\r')
|
||||
tr.IndentLevel = level
|
||||
self._add_text_from_dict(
|
||||
page, id, subdict, min(level + 1, 5), maxlevel)
|
||||
|
||||
def _add_text_from_list(self, page, id, # @ReservedAssignment
|
||||
txt_list, maxlevel=None):
|
||||
for txt in txt_list:
|
||||
level = 1
|
||||
while isinstance(txt, (list, tuple)):
|
||||
txt = txt[0]
|
||||
level += 1
|
||||
if maxlevel is None or level <= maxlevel:
|
||||
tr = page.Shapes(id).TextFrame.TextRange.InsertAfter(txt)
|
||||
unused_temp = page.Shapes(
|
||||
id).TextFrame.TextRange.InsertAfter('\r')
|
||||
tr.IndentLevel = level
|
||||
|
||||
def save(self, fullfile=''):
|
||||
if fullfile:
|
||||
self.presentation.SaveAs(FileName=fullfile)
|
||||
else:
|
||||
self.presentation.Save()
|
||||
|
||||
def quit(self): # @ReservedAssignment
|
||||
if self._visible:
|
||||
self.presentation.Close()
|
||||
else:
|
||||
self.application.Quit()
|
||||
|
||||
def quit_only_if_hidden(self):
|
||||
if not self._visible:
|
||||
self.application.Quit()
|
||||
|
||||
|
||||
def test_powerpoint():
|
||||
# Make powerpoint
|
||||
|
||||
ppt = Powerpoint()
|
||||
ppt.footer = 'This is the footer'
|
||||
ppt.add_title_slide('Title', 'Per A.')
|
||||
ppt.add_slide(title='alsfkasldk', texts='asdflaf', notes='asdfas')
|
||||
ppt.set_footer()
|
||||
|
||||
|
||||
def make_ppt():
|
||||
application = win32com.client.Dispatch("Powerpoint.Application")
|
||||
application.Visible = True
|
||||
presentation = application.Presentations.Add()
|
||||
slide1 = presentation.Slides.Add(1, MSPPT.constants.ppLayoutText)
|
||||
|
||||
# title = slide1.Shapes.AddTextBox(Type=msoTextOrientationHorizontal,
|
||||
# Left=50, Top=10, Width=620, Height=70)
|
||||
# title.TextFrame.TextRange.Text = 'Overskrift'
|
||||
title_id, textbox_id = 1, 2
|
||||
slide1.Shapes(title_id).TextFrame.TextRange.Text = 'Overskrift'
|
||||
# slide1.Shapes(title_id).TextFrame.Width = 190
|
||||
|
||||
slide1.Shapes(textbox_id).TextFrame.TextRange.InsertAfter('Test')
|
||||
unused_tr = slide1.Shapes(textbox_id).TextFrame.TextRange.InsertAfter('\r')
|
||||
slide1.Shapes(textbox_id).TextFrame.TextRange.IndentLevel = 1
|
||||
tr = slide1.Shapes(textbox_id).TextFrame.TextRange.InsertAfter('tests')
|
||||
unused_tr0 = slide1.Shapes(
|
||||
textbox_id).TextFrame.TextRange.InsertAfter('\r')
|
||||
tr.IndentLevel = 2
|
||||
tr1 = slide1.Shapes(textbox_id).TextFrame.TextRange.InsertAfter('test3')
|
||||
tr1.IndentLevel = 3
|
||||
# slide1.Shapes(textbox_id).TextFrame.TextRange.Text = 'Test \r test2'
|
||||
|
||||
# textbox = slide1.Shapes.AddTextBox(Type=msoTextOrientationHorizontal,
|
||||
# Left=30, Top=100, Width=190, Height=400)
|
||||
# textbox.TextFrame.TextRange.Text = 'Test \r test2'
|
||||
# picbox = slide1.Shapes(picb_id)
|
||||
|
||||
filename = r'c:\temp\data1_report1_and_2_Tr120_1.png'
|
||||
slide1.Shapes.AddPicture(FileName=filename, LinkToFile=False,
|
||||
SaveWithDocument=True,
|
||||
Left=220, Top=100, Width=500, Height=420)
|
||||
|
||||
slide1.NotesPage.Shapes(2).TextFrame.TextRange.Text = 'test'
|
||||
|
||||
|
||||
# for shape in slide1.Shapes:
|
||||
# shape.TextFrame.TextRange.Text = 'Test \r test2'
|
||||
# slide1.Shapes.Titles.TextFrames.TestRange.Text
|
||||
# shape = slide1.Shapes.AddShape(msoShapeRectangle, 300, 100, 400, 400)
|
||||
# shape.TextFrame.TextRange.Text = 'Test \n test2'
|
||||
# shape.TextFrame.TextRange.Font.Size = 12
|
||||
#
|
||||
# app = wx.PySimpleApp()
|
||||
# dialog = wx.FileDialog(None, 'Choose image file', defaultDir=os.getcwd(),
|
||||
# wildcard='*.*',
|
||||
# style=wx.OPEN | wx.CHANGE_DIR | wx.MULTIPLE)
|
||||
#
|
||||
# if dialog.ShowModal() == wx.ID_OK:
|
||||
# files_or_paths = dialog.GetPaths()
|
||||
# for filename in files_or_paths:
|
||||
# slide1.Shapes.AddPicture(FileName=filename, LinkToFile=False,
|
||||
# SaveWithDocument=True,
|
||||
# Left=100, Top=100, Width=200, Height=200)
|
||||
# dialog.Destroy()
|
||||
# presentation.Save()
|
||||
# application.Quit()
|
||||
def rename_ppt():
|
||||
root = r'C:/pab/tsm_opeval/analysis_tsmps_aco_v2008b/plots'
|
||||
filenames = os.listdir(root)
|
||||
prefix = 'TSMPSv2008b_'
|
||||
for filename in filenames:
|
||||
if filename.endswith('.ppt'):
|
||||
try:
|
||||
ppt = Powerpoint(os.path.join(root, filename))
|
||||
ppt.footer = prefix + filename
|
||||
ppt.set_footer()
|
||||
ppt.save(os.path.join(root, ppt.footer))
|
||||
except:
|
||||
warnings.warn('Unable to load %s' % filename)
|
||||
|
||||
|
||||
def load_file_into_ppt():
|
||||
root = r'C:/pab/tsm_opeval/analysis_tsmps_aco_v2008b/plots'
|
||||
filenames = os.listdir(root)
|
||||
prefix = 'TSMPSv2008b_'
|
||||
for filename in filenames:
|
||||
if filename.startswith(prefix) and filename.endswith('.ppt'):
|
||||
try:
|
||||
unused_ppt = Powerpoint(os.path.join(root, filename))
|
||||
except:
|
||||
warnings.warn('Unable to load %s' % filename)
|
||||
if __name__ == '__main__':
|
||||
# make_ppt()
|
||||
# test_powerpoint()
|
||||
# load_file_into_ppt()
|
||||
rename_ppt()
|
Loading…
Reference in New Issue