c# pdf viewer open source : Reordering pages in pdf control SDK platform web page wpf html web browser World%20of%20Warcraft%20Programming%20(2nd%20Edition)47-part1846

Chapter 22
Creating Scroll Frames 429
self:SetValueStep(1.0)
self:SetValue(1)
</OnLoad>
<OnValueChanged>
MacroIconTest_UpdateIcons(value)
</OnValueChanged>
</Scripts>
<ThumbTexture name=“$parentThumbTexture“
file=“Interface\Buttons\UI-ScrollBar-Knob“>
<Size x=“25“ y=“25“/>
</ThumbTexture>
</Slider>
</Ui>
Reordering pages in pdf - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
pdf rearrange pages online; how to reorder pages in a pdf document
Reordering pages in pdf - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
how to move pages around in a pdf document; move pages in pdf acrobat
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
rotating function, PDF page inserting function, PDF page reordering function and single page, a series of pages, and random pages to be removed from PDF file
reverse pdf page order online; how to reorder pdf pages
VB.NET TIFF: VB.NET Sample Codes to Sort TIFF File with .NET
& manipulating multi-page TIFF (Tagged Image File), PDF, Microsoft Office it with our RasterEdge TIFF decoder, and then start reordering the pages for the
change page order in pdf reader; pdf page order reverse
CH A P T E R
23
Creating Dropdown Menus
Dropdown menus are used throughout the default user interface to pro-
vide the user with a list of selectable items. Some menus, such as the
menu that appears when you right-click your player frame (shown in
Figure 23-1), are used to provide a list of actions or configuration options
basedon context. Other menus have artwork that makes themappearas more
standard dropdown-style menus, such as the dropdown used for the column
selection in the Who list panel, shown in Figure 23-2.
At a first glance, the system to create these dropdowns may seem rather
complex. This chapter helps to demystify the dropdown system in World of
Warcraft, showing you how to create them and make them work for your
addons.
Creating a Basic Dropdown
Creating a dropdown involves four major steps. Luckily, Blizzard provides a
robust setof templates and functions that make creating them fairly easy. This
section leads you through these steps:
1. Adding a button that can be clicked to show the dropdown menu.
This may be a button that already exists in your addon or something
entirely new.
2. Creating a new frame that inherits Blizzard’s
UIDropDownMenuTemplate
template. It is not strictly necessary to create your own frame, but this
methodallows youto ensure no otheraddons will accidentally alteryour
dropdown.
431
C# Excel - Sort Excel Pages Order in C#.NET
C#.NET Excel document page reordering control SDK (XDoc.Excel) is a thread-safe .NET library that can be used to adjust the Excel document pages order.
change pdf page order reader; change page order pdf preview
C# TIFF: C#.NET TIFF Document Viewer, View & Display TIFF Using C#
Support most common TIFF file page processing, like adding, deleting and reordering pages; Free to convert TIFF document to PDF document for management purpose;
pdf reorder pages; pdf rearrange pages
432
Part III
Advanced Addon Techniques
Figure 23-1: Dropdown menu displayed when right-clicking on the player frame
Figure 23-2: Column dropdown in the Who list panel
3. Initializing the dropdown menu once it has been created.
4. Writing code that causes a click on the button to toggle the display of the
dropdown menu.
Forthisexample,youneedtocreateanewaddon calledDropDownTest.Cre-
ate the basic addon skeleton including
DropDownTest.toc
,
DropDownTest.lua
,
and
DropDownTest.xml
.
Adding a Toggle Button
Using the Blizzard template
GameMenuButtonTemplate
, create a button by
adding the following code to
DropDownTest.xml
:
<Ui xmlns=“http://www.blizzard.com/wow/ui/“
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance“
xsi:schemaLocation=“http://www.blizzard.com/wow/ui/
http://wowprogramming.com/FrameXML/UI.xsd“>
<Button name=“DropDownTest_Button“ inherits=“GameMenuButtonTemplate“ i
parent=“UIParent“ text=“DropDownTest“>
<Anchors>
<Anchor point=“CENTER“/>
</Anchors>
<Scripts>
<OnClick>
DropDownTest_ButtonOnClick(self, button, down)
</OnClick>
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
online C#.NET source code for combining multiple PDF pages together in insertion, PDF page deleting, PDF document splitting, PDF page reordering and PDF
change pdf page order preview; how to reverse pages in pdf
VB.NET Word: Change Word Page Order & Sort Word Document Pages
in following VB.NET Word page reordering API is Apart from this VB.NET Word pages sorting function powerful & profession imaging controls, PDF document, image
move pdf pages; how to move pages in pdf reader
Chapter 23
Creating Dropdown Menus 433
</Scripts>
</Button>
</Ui>
To make a quick and easy button, this code uses the
GameMenuButton
Template
. The text is set using the XML attribute, and the new button is
anchored to the center of the user interface. When the button is clicked,
it calls the
DropDownTest_ButtonOnClick()
function and passes the proper
arguments.
Creating a Dropdown Frame
The default Blizzard interface uses templates for its dropdown menus and, as
aresult, you can re-use the templates as a basis for your own menus. Add the
following frame definition to
DropDownTest.xml
:
<Frame name=“DropDownTest_DropDown“ inherits=“UIDropDownMenuTemplate“
frameStrata=“FULLSCREEN_DIALOG“>
<Scripts>
<OnLoad>
DropDownTest_DropDownOnLoad(self)
</OnLoad>
</Scripts>
</Frame>
This framesimplyinheritsfromthegiven template andsets the
frameStrata
to be
DIALOG_FULLSCREEN
. This allows the dropdown menu to be used on
another frame that is already set to display on the full screen frame strata.
When the frame is first created,
DropDownTest_DropDownOnLoad()
is called to
handle the initialization of the dropdown menu.
Initializing the Dropdown
Two things need to happen when you are initializing a dropdown menu.
First, you must define a function that will be responsible for describing the
actual buttons and adding them tothe menu.Second, you must call the global
UIDropDownMenu_Initialize()
function to do some setup and accounting on
the frame.
Adding Buttons to the Dropdown
This initialization function is called by the default user interface to set up
the actual buttons that appear within the dropdown menu. The function is
passed the dropdown frame as the first argument, and a second argument,
level
,indicates what level of the dropdown is being displayed(for multilevel
menus). This example does not use this argument because it will only contain
three items on the same level; multilevel menus are covered later in this
chapter.
C# Word - Delete Word Document Page in C#.NET
page rotating function, Word page inserting function, Word page reordering function and options, including setting a single page, a series of pages, and random
rearrange pdf pages in reader; change pdf page order
C# PowerPoint - Delete PowerPoint Document Page in C#.NET
page rotating function, PowerPoint page insert function, PowerPoint page reordering function and including setting a single page, a series of pages, and random
pdf reverse page order; reorder pages in pdf
434
Part III
Advanced Addon Techniques
Add the following function to your
DropDownTest.lua
file:
function DropDownTest_InitializeDropDown(self, level)
-- Create a table to use for button information
local info = UIDropDownMenu_CreateInfo()
-- Create a title button
info.text = “DropDown Test“
info.isTitle = 1
UIDropDownMenu_AddButton(info)
-- Create a normal button
info = UIDropDownMenu_CreateInfo()
info.text = “Sample Item 1“
UIDropDownMenu_AddButton(info)
-- Create another normal button
info = UIDropDownMenu_CreateInfo()
info.text = “Sample Item 2“
UIDropDownMenu_AddButton(info)
end
The
UIDropDownMenu_CreateInfo()
function here is used to get an empty
info
table to be filled with button attributes and eventually passed into
UIDropDownMenu_AddButton()
.Internally this function re-uses tables to pre-
vent excessive memory usage for larger menus.
Calling UIDropDownMenu_Initialize()
To tell the user interface what initialization function should be called when
the dropdown is shown, you must call
UIDropDownMenu_Initialize()
.This
function takes in the dropdown frame as the first argument, and the initial-
ization function as the second. Call this function by adding the following to
DropDownTest.lua
:
function DropDownTest_DropDownOnLoad(self)
UIDropDownMenu_Initialize(self, DropDownTest_InitializeDropDown)
end
Your initializationfunction willnowbecalledeach timethemenuis opened,
and again every time the state of the menu changes (for example when you
check an option, or open a submenu).
Toggling the Dropdown Menu
Thefinal stepis actually openingthe dropdownmenuwhen theuser clicks the
button you’ve created. The Blizzard template code defines a toggle function,
called
ToggleDropDownMenu()
,that allows you dothis, as well as specify some
C# TIFF: How to Insert & Add Page(s) to TIFF Document Using C#
SDK still empowers developers and end users to do Tiff image rotating, deleting, reordering, extracting, etc. C# Tiff processing application - sort Tiff pages.
rearrange pdf pages in preview; rearrange pages in pdf file
Chapter 23
Creating Dropdown Menus 435
basic positioning information. The function takes eight possible arguments,
but only the first six are typically used:
level
(number)—The initial level to display. This number is passed
directly to the initialization function.
value
—A value used to set the global variable
UIDROPDOWNMENU_MENU_
VALUE
,which is used primarily in multilevel menus. This is discussed in
detail later in this chapter.
dropDownFrame
—The actual dropdown frame to display.
anchorName
(string)—The name of the frame to which the dropdown
should be anchored. This can also be the stringcursor
,in which case the
dropdown is anchored to the cursor position at the moment this function
is called.
xOffset
(number)—A horizontal offset in units for the dropdown menu.
yOffset
(number)—A vertical offset in units for the dropdown menu.
Add the following function to
DropDownTest.lua
to call
ToggleDropDown
Menu()
when the test button is clicked:
function DropDownTest_ButtonOnClick(self, button, down)
local name = self:GetName()
ToggleDropDownMenu(1, nil, DropDownTest_DropDown, name, 0, 0)
end
Because this example displays only one level of the menu, the function
passes
1
as the level and doesn’t include a menu value. The dropdown will be
anchored to the button itself, with no offset from the default location.
Testing the Dropdown
Log in to World of Warcraft with the DropDownTest addon enabled; a game
button should display in the center of your screen. Click the button and you
should see the dropdown menu shown in Figure 23-3.
Figure 23-3: Dropdown menu created by the DropDownTest addon
436
Part III
Advanced Addon Techniques
The example menu won’t do anything at the moment, but later in this
chapter you learn how to make the menu elements functional so they can be
used for configuration and other purposes. By default, the menu will timeout
after a certain periodof inactivity, and clicking the test button while the menu
is open closes it outright.
Creating Multilevel Dropdowns
Creatingamultilevel dropdown menuisstraightforwardonce youunderstand
how a dropdown menu is created and initialized. In particular, the first
argument passed to the initialization function is a numeric value, the level of
the dropdown being displayed.
Consider a dropdown with two submenus called Alpha and Beta. Assume
each menu has distinct items that will be displayed. Because the root level
of the menu is
1
,the level for both Alpha and Beta is
2
.If each of them had
submenus, they would be level
3
,and so on. To differentiate between Alpha
and Beta, you will set a
value
element in the button table.
Rewrite the
DropDownTest_InitializeDropDown()
function in your test
addon, as follows:
function DropDownTest_InitializeDropDown(self, level)
if level == 1 then
local info = UIDropDownMenu_CreateInfo()
info.text = “DropDown Test“
info.isTitle = true
UIDropDownMenu_AddButton(info, level)
info = UIDropDownMenu_CreateInfo()
info.text = “Alpha Submenu“
info.hasArrow = true
info.value = “Alpha“
UIDropDownMenu_AddButton(info, level)
info = UIDropDownMenu_CreateInfo()
info.text = “Beta Submenu“
info.hasArrow = true
info.value = “Beta“
UIDropDownMenu_AddButton(info, level)
elseif (level == 2) and (UIDROPDOWNMENU_MENU_VALUE == “Alpha“) then
local info = UIDropDownMenu_CreateInfo()
info.text = “Alpha Sub-item 1“
UIDropDownMenu_AddButton(info, level)
elseif (level == 2) and (UIDROPDOWNMENU_MENU_VALUE == “Beta“) then
local info = UIDropDownMenu_CreateInfo()
info.text = “Beta Sub-item 1“
Chapter 23
Creating Dropdown Menus 437
UIDropDownMenu_AddButton(info, level)
end
end
You’ll notice quite a few differences from the original function, namely the
useofthe
hasArrow
and
value
attributes in someofthebutton tables.
hasArrow
tells the template code to treat the button as a menu headerand to display the
arrow graphic. The
value
attribute is used to distinguish between different
submenus.
In the initialization function, if the level is
2
,the value of
UIDROPDOWNMENU_
MENU_VALUE
is checked. This variable is set to the value attribute of the
menu header. These values can be anything—tables, functions, numbers, and
strings—as long as you can use them to distinguish between menus.
An optional second argument to the
UIDropDownMenu_AddButton()
function
indicates the level at which the new button should be added. Without this,
entering a submenu would only add buttons to the root menu instead of
popping out an additional level, and that would be confusing.
The resulting menu can be seen in Figures 23-4 and 23-5.
Figure 23-4: Example dropdown menu with Alpha expanded
Figure 23-5: Example dropdown menu with Beta expanded
Adding Functionality to Dropdowns
In addition to displaying text, dropdowns may contain more interactive
elements, such as checkboxes and color pickers. This section shows you how
to make dropdowns more interactive using these elements, and how to add
functionality to standard text buttons.
438
Part III
Advanced Addon Techniques
Customizing Text Elements
Each text element in a dropdown menucan be customizedusingthe following
attributes:
text
(string)—Text to be displayed on the menu item.
isTitle
—A boolean flag indicating if the button should be treated as a
title button (not clickable and gold text).
disabled
—A boolean flag indicating if the button is disabled.
colorCode
—A string containing a color code to be applied to the text
in the format
|cAARRGGBB
,including alpha, red, green, and blue. This
attribute is valid only for buttons that are enabled.
notClickable
—A boolean flag indicating that the button should not be
clickable. This forces the button’s color to white, so you cannot color an
un-clickable item.
notCheckable
—A boolean flag indicating that the button cannot be
checked. This causes the button’s width to shrink because the check
button graphic is no longer necessary.
tooltipTitle
(string)—Title to be displayed in the tooltip that appears
when hovering the mouse over the menu option. Tooltips are only
displayed when Beginner Tooltips are enabled under Interface Options.
tooltiptext
(string)—Text to be displayed in the tooltip that appears
when hovering the mouse over the menu option. Tooltips are only
displayed when Beginner Tooltips are enabled under Interface Options.
textHeight
(number)—The height of the font used for the button text.
justifyH
—Ifthebuttonisnotcheckableandthisattributeis setto
CENTER
,
the text on the button will be centered. No other text justification options
are available.
fontObject
—A Font object to be used as a replacement for the normal
and highlight fonts in the dropdown.
Youcan replaceyour
DropDownTest_Initialize()
function with thefollow-
ing to see each of these attributes in a working dropdown menu. Figure 23-6
shows the corresponding dropdown menu.
function DropDownTest_InitializeDropDown(self, level)
-- Create a table to use for button information
local info = UIDropDownMenu_CreateInfo()
info.text = “Title Button“
info.isTitle = true
UIDropDownMenu_AddButton(info)
info = UIDropDownMenu_CreateInfo()
Documents you may be interested
Documents you may be interested