Sunteți pe pagina 1din 4

<?xml version="1.0" encoding="utf-16"?

>
<Macro name="Insert Monthly Calendar" category="Calendar" description="Inserts a
calendar of the selected month and year" version="16">
<Comment text="---------------------------------------------------------------
-------------------" />
<Comment text=" Insert Monthly Calendar" />
<Comment text="---------------------------------------------------------------
-------------------" />
<Comment text="" />
<Expression>$curYear = DateTime_Year(DateTime_Now())</Expression>
<Expression>$Months = Array("January", "February", "March", "April", "May", "J
une", "July", "August", "September", "October", "November", "December")</Express
ion>
<Expression>$curMonth = $Months[(DateTime_Month(DateTime_Now()) - 1)]</Express
ion>
<Expression>$Years = Array(2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020)</Ex
pression>
<Comment text="Show dialog box" />
<Expression>$dialog_box = DialogBox_Create("")</Expression>
<Expression>DialogBox_AddDropDown($dialog_box, "Select &amp;Year", "Year", $cu
rYear, $Years)</Expression>
<Expression>DialogBox_AddDropDown($dialog_box, "Select &amp;Month", "Month", $
curMonth, $Months)</Expression>
<Expression>DialogBox_AddDropDown($dialog_box, "First Day of &amp;Week", "Firs
tDayOfWeek", "", Array("Sunday", "Monday"))</Expression>
<Expression>DialogBox_AddDropDown($dialog_box, "&amp;Format", "Format", "", Ar
ray("Small", "Large"))</Expression>
<Expression>DialogBox_Show($dialog_box)</Expression>
<Expression>$Year = $dialog_box.controls["Year"]</Expression>
<Expression>$Month = $dialog_box.controls["Month"]</Expression>
<Expression>$FirstDayOfWeek = $dialog_box.controls["FirstDayOfWeek"]</Expressi
on>
<Expression>$Format = $dialog_box.controls["Format"]</Expression>
<Comment text="Setup day names based on format" />
<If>
<Condition>$Format == "Small"</Condition>
<Expression>$DayNames = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat
")</Expression>
</If>
<Else>
<Expression>$DayNames = Array("Sunday", "Monday", "Tuesday", "Wednesday", "T
hursday", "Friday", "Saturday")</Expression>
</Else>
<If>
<Condition>$FirstDayOfWeek == "Monday"</Condition>
<Expression>Array_PushBack($DayNames, Array_PopFront($DayNames))</Expression
>
</If>
<Comment text="Decide on first day of the month and number of days" />
<Expression>$Offset = ($Year - 2013)</Expression>
<If>
<Condition>(($Month != "January") &amp;&amp; ($Month != "February")) &amp;&a
mp; (($Year == 2016) || ($Year == 2020))</Condition>
<Expression>$Offset += 1</Expression>
</If>
<If>
<Condition>$Year &gt; 2016</Condition>
<Expression>$Offset += 1</Expression>
</If>
<Expression>$Days = 31</Expression>
<If collapsed="true">
<Condition>$Month == "January"</Condition>
<Expression>$Start = 2</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "February"</Condition>
<Expression>$Start = 5</Expression>
<Expression>$Days = 28</Expression>
<If>
<Condition>($Year == 2016) || ($Year == 2020)</Condition>
<Expression>$Days = 29</Expression>
</If>
</If>
<If collapsed="true">
<Condition>$Month == "March"</Condition>
<Expression>$Start = 5</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "April"</Condition>
<Expression>$Start = 1</Expression>
<Expression>$Days = 30</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "May"</Condition>
<Expression>$Start = 3</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "June"</Condition>
<Expression>$Start = 6</Expression>
<Expression>$Days = 30</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "July"</Condition>
<Expression>$Start = 1</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "August"</Condition>
<Expression>$Start = 4</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "September"</Condition>
<Expression>$Start = 0</Expression>
<Expression>$Days = 30</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "October"</Condition>
<Expression>$Start = 2</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "November"</Condition>
<Expression>$Start = 5</Expression>
<Expression>$Days = 30</Expression>
</If>
<If collapsed="true">
<Condition>$Month == "December"</Condition>
<Expression>$Start = 0</Expression>
</If>
<Expression>$Start += $Offset</Expression>
<If>
<Condition>$FirstDayOfWeek == "Monday"</Condition>
<Expression>$Start -= 1</Expression>
</If>
<While>
<Condition>$Start &gt; 6</Condition>
<Expression>$Start -= 7</Expression>
</While>
<If>
<Condition>$Start &lt; 0</Condition>
<Expression>$Start += 7</Expression>
</If>
<Comment text="Try to find a place to insert the calendar" />
<Expression>$found = false</Expression>
<ForEach var="text">
<Array>QueryObjects("Text", GetCurrentPage())</Array>
<If>
<Condition>$text.selected &amp;&amp; GetParentOfType($text, "Paragraph", $
Paragraph)</Condition>
<If>
<Condition>GetAncestorOfType($Paragraph, "Cell", $Outline) || GetAncesto
rOfType($Paragraph, "Outline", $Outline)</Condition>
<Expression>$found = true</Expression>
<If>
<Condition>$Paragraph.text != ""</Condition>
<Expression>$Paragraph = InsertObject($Outline, "Paragraph", ($Paragra
ph.index + 1))</Expression>
</If>
<Break>1</Break>
</If>
</If>
</ForEach>
<If>
<Condition>!$found</Condition>
<Comment text="If there are no outlines on the page, insert a new one" />
<Expression>$Outlines = GetCurrentPage().outlines</Expression>
<If>
<Condition>Array_Length($Outlines) == 0</Condition>
<Expression>$Outline = InsertObject(GetCurrentPage(), "Outline", -1)</Expr
ession>
</If>
<Else>
<Expression>$Outline = Array_PopBack($Outlines)</Expression>
<Comment text="Create a new Paragraph with title" />
</Else>
<Expression>$Paragraph = InsertObject($Outline, "Paragraph", -1)</Expression
>
</If>
<Expression>$Paragraph.text = (($Month &amp; " ") &amp; $Year)</Expression>
<Comment text="Create a new Table below it" />
<Expression>$Table = InsertObject($Outline, "Table", ($Paragraph.index + 1))</
Expression>
<Expression>$Table.bordersVisible = true</Expression>
<Comment text="Insert header row" />
<Expression>$Row = InsertObject($Table, "Row", -1)</Expression>
<ForEach var="Day">
<Array>$DayNames</Array>
<Expression>$Cell = InsertObject($Row, "Cell", -1)</Expression>
<Expression>$Paragraph = InsertObject($Cell, "Paragraph", -1)</Expression>
<Expression>$Paragraph.text = $Day</Expression>
<Expression>$Paragraph.bold = true</Expression>
</ForEach>
<Comment text="Insert weeks" />
<Expression>$i = (1 - $Start)</Expression>
<While>
<Condition>$i &lt;= $Days</Condition>
<Expression>$Row = InsertObject($Table, "Row", -1)</Expression>
<Expression>$j = 0</Expression>
<While>
<Condition>$j &lt; 7</Condition>
<Expression>$Cell = InsertObject($Row, "Cell", -1)</Expression>
<Expression>$Paragraph = InsertObject($Cell, "Paragraph", -1)</Expression>
<If>
<Condition>($i &gt; 0) &amp;&amp; ($i &lt;= $Days)</Condition>
<Expression>$Paragraph.text_numeric = $i</Expression>
</If>
<If>
<Condition>$Format == "Large"</Condition>
<Expression>InsertObject($Cell, "Paragraph", -1)</Expression>
<Expression>InsertObject($Cell, "Paragraph", -1)</Expression>
<Expression>InsertObject($Cell, "Paragraph", -1)</Expression>
</If>
<Expression>$i += 1</Expression>
<Expression>$j += 1</Expression>
</While>
</While>
<If>
<Condition>$Format == "Large"</Condition>
<ForEach var="Column">
<Array>$Table.columns</Array>
<Expression>$Column.width = 80</Expression>
<Expression>$Column.isLocked = true</Expression>
</ForEach>
</If>
</Macro>

S-ar putea să vă placă și