c# pdf viewer open source : Reorder pages of pdf application SDK utility azure wpf winforms visual studio World%20of%20Warcraft%20Programming%20(2nd%20Edition)27-part1824

Chapter 12
Interacting with Widgets 229
This widget type doesn’t define any new scripts, but has a number of
methods that allow you to set and get the value of the color wheel and other
color selection elements.
EditBox
The
EditBox
type of frame is used to allow for text input, along with basic
historyand editingcapabilities.Thesimplestexampleofan editboxis attached
tothechatframe, enabling youtorun commands and communicate with other
players,as shown in Figure 12-10.
Figure 12-10: Chat frame’s EditBox
GameTooltip
AGameTooltip is a frame that can display two columns of data that further
describe the UI element you currently have your mouse over, including
buttons, items,and even players in the 3-D world.Figure 12-11 shows an item
tooltip.
Figure 12-11: Item tooltip
MessageFrame
MessageFrames are used by the game to send a stream of errors, warnings, or
messages to the user. This is most often seen with the
UIErrorsFrame
,which
displays any issues with spellcasting,as shown in Figure 12-12.
Figure 12-12: UIErrorsFrame showing spellcasting errors
Minimap
The Minimap frame type is special in that there can only ever be one of
them. The minimap in the default user interface is used for navigation (see
Reorder pages of pdf - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
how to move pages in pdf reader; rearrange pages in pdf online
Reorder pages of 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 rearrange pdf pages; pdf change page order
230
Part II
Programming in World of Warcraft
Figure 12-13) and is normally the only one that exists. The portion of the
minimap that is rendered using this widget type is only the map-specific part
of the image, whereas the rest of the elements are attached graphics, buttons,
and fontstrings.
Figure 12-13: Minimap used for navigation
Model
Models are used to display three-dimensional models in-game, potentially
with the capability to pan and zoom in on the model. Models are used in the
default UI within the character window, dressing room at the auction house,
and the tabard planner in the major cities. Figure 12-14 shows the tabard
vendor window, using models.
Figure 12-14: Tabard vendor showing player model
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview. Reorder TIFF Pages in C#.NET Application.
reorder pages pdf; how to move pages in a pdf document
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
Sort and Reorder PowerPoint Slides Range with VB amount of robust PPT slides/pages editing methods powerful & profession imaging controls, PDF document, image
how to move pages in pdf; how to reorder pdf pages in
Chapter 12
Interacting with Widgets 231
ScrollingMessageFrame
Being a Massively Multi-player Online Role-Playing Game, WoW has a fair
amount of communication between its players, and these are typically dis-
playedinscrollmessageframes,namelytheChatFrame,showninFigure12-15.
Figure 12-15: ChatFrame showing chat messages
ScrollFrame
Whensomethingistoolargetobedisplayedinitsnativewindow,ascrollframe
can be included to allow the userto scroll either vertically or horizontally. The
ScrollFrame
widget type is frequently used throughout the user interface,
particularly within the friends window, the skills window, the auction house,
and the quest log (see Figure 12-16).
Figure 12-16: Scroll frame used in the quest log
SimpleHTML
For presenting data, scrolling message frames aren’t always suitable, such as
when reading a book or item in-game. In these situations, a special type of
frame is used that allows for basic HTML-like markup. When combined with
Read PDF in Web Image Viewer| Online Tutorials
from PDF documents; Extract images from PDF documents; Add, reorder pages in PDF files; Save and print PDF as you wish; More PDF Reading
how to rearrange pages in pdf document; rearrange pdf pages reader
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
Users can use it to reorder TIFF pages in ''' &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
change page order pdf; reorder pages in pdf reader
232
Part II
Programming in World of Warcraft
multiple pages or a scroll frame, data becomes easier to present. Figure 12-17
shows a plaque in Stormwind, which uses a SimpleHTML frame.
Figure 12-17: SimpleHTML frame displaying a plaque
Slider
Sliders are used when there is a range of numbers that can possibly be
selected. They’re used primarily in the default user interface options screen
(see Figure 12-18). Sliders enable the developer to set a minimum value, a
maximum value, and the default step that the slider will allow, so you can
control precision.
Figure 12-18: Sliders in the default interface options
StatusBar
StatusBars are used throughout the default user interface to show progress or
percentages, such as in the skills window (see Figure 12-19). To use a status
bar, you must supply a texture to be shown, as well as minimum/maximum
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
page, it is also featured with the functions to merge PDF files using C# .NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split
pdf reverse page order preview; how to rearrange pages in pdf using reader
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
just following attached links. C# PDF: Add, Delete, Reorder PDF Pages Using C#.NET, C# PDF: Merge or Split PDF Files Using C#.NET.
change page order in pdf reader; how to move pages in pdf acrobat
Chapter 12
Interacting with Widgets 233
values for the bar. Then you can simply set the value of the bar to show the
correct value.
Figure 12-19: StatusBars displayed in the skills window
Summary
This chapter introduced you to two different types of interactive widgets that
can be used in custom addons. You created multiple buttons that showed
tooltips when the mouse moved over them, and buttons that could be clicked
to accomplish some task. In addition, you utilized an edit box to accept input
from the user.
The Code
BagBuddy.lua
function BagBuddy_OnLoad(self)
SetPortraitToTexture(self.portrait, i
“Interface\\Icons\\INV_Misc_EngGizmos_30“)
-- Create the item slots
self.items = {}
for idx = 1, 24 do
local item = CreateFrame(“Button“, “BagBuddy_Item“ .. idx, i
self, “BagBuddyItemTemplate“)
self.items[idx] = item
if idx == 1 then
item:SetPoint(“TOPLEFT“, 40, -73)
elseif idx == 7 or idx == 13 or idx == 19 then
item:SetPoint(“TOPLEFT“, self.items[idx-6], “BOTTOMLEFT“, i
0, -7)
else
item:SetPoint(“TOPLEFT“, self.items[idx-1], “TOPRIGHT“, i
12, 0)
end
end
-- Create the filter buttons
self.filters = {}
.NET Multipage TIFF SDK| Process Multipage TIFF Files
SDK, developers are easily to access, extract, swap, reorder, insert, mark up and delete pages in any multi upload to SharePoint and save to PDF documents.
move pages in a pdf; how to move pages in pdf files
C# Word: How to Create Word Document Viewer in C#.NET Imaging
in C#.NET; Offer mature Word file page manipulation functions (add, delete & reorder pages) in document viewer; Rich options to add
move pages in pdf acrobat; pdf change page order online
234
Part II
Programming in World of Warcraft
for idx=0,5 do
local button = CreateFrame(“CheckButton“, i
“BagBuddy_Filter“ .. idx, self, “BagBuddyFilterTemplate“)
SetItemButtonTexture(button, i
“Interface\\ICONS\\INV_Misc_Gem_Pearl_03“)
self.filters[idx] = button
if idx == 0 then
button:SetPoint(“BOTTOMLEFT“, 40, 200)
else
button:SetPoint(“TOPLEFT“, self.filters[idx-1], i
“TOPRIGHT“, 12, 0)
end
button.icon:SetVertexColor(GetItemQualityColor(idx))
button:SetChecked(false)
button.quality = idx
button.glow:Hide()
end
self.filters[-1] = self.filters[0]
-- Initialize to show the first page
self.page = 1
end
local function itemNameSort(a, b)
return a.name < b.name
end
function BagBuddy_Update()
local items = {}
local nameFilter = BagBuddy.input:GetText():lower()
-- Scan through the bag slots, looking for items
for bag = 0, NUM_BAG_SLOTS do
for slot = 0, GetContainerNumSlots(bag) do
local texture, count, locked, quality, readable, i
lootable, link = GetContainerItemInfo(bag, slot)
if texture then
local shown = true
if BagBuddy.qualityFilter then
shown = shown and BagBuddy.filters[quality]:GetChecked()
end
if #nameFilter > 0 then
local lowerName = GetItemInfo(link):lower()
shown = shown and string.find(lowerName, nameFilter, i
Chapter 12
Interacting with Widgets 235
1, true)
end
if shown then
-- If an item is found, grab the item number and i
store other data
local itemNum = tonumber(link:match(“|Hitem:(%d+):“))
if not items[itemNum] then
items[itemNum] = {
texture = texture,
count = count,
quality = quality,
name = GetItemInfo(link),
link = link,
}
else
-- The item already exists in our table, just i
update the count
items[itemNum].count = items[itemNum].count + count
end
end
end
end
end
local sortTbl = {}
for link, entry in pairs(items) do
table.insert(sortTbl, entry)
end
table.sort(sortTbl, itemNameSort)
-- Now update the BagBuddyFrame with the listed items (in order)
local max = BagBuddy.page * 24
local min = max - 23
for idx = min, max do
local button = BagBuddy.items[idx - min + 1]
local entry = sortTbl[idx]
if entry then
-- There is an item in this slot
button.link = entry.link
button.icon:SetTexture(entry.texture)
if entry.count > 1 then
button.count:SetText(entry.count)
button.count:Show()
else
button.count:Hide()
236
Part II
Programming in World of Warcraft
end
if entry.quality > 1 then
button.glow:SetVertexColor(i
GetItemQualityColor(entry.quality))
button.glow:Show()
else
button.glow:Hide()
end
button:Show()
else
button.link = nil
button:Hide()
end
end
-- Update page buttons
if min > 1 then
BagBuddy.prev:Enable()
else
BagBuddy.prev:Disable()
end
if max < #sortTbl then
BagBuddy.next:Enable()
else
BagBuddy.next:Disable()
end
-- Update the status text
if #sortTbl > 24 then
local max = math.min(max, #sortTbl)
local msg = string.format(“Showing items %d - %d of %d“, i
min, max, #sortTbl)
BagBuddy.status:SetText(msg)
else
BagBuddy.status:SetText(“Found “ .. #sortTbl .. “ items“)
end
end
function BagBuddy_Button_OnEnter(self, motion)
if self.link then
GameTooltip:SetOwner(self, “ANCHOR_TOPRIGHT“)
GameTooltip:SetHyperlink(self.link)
GameTooltip:Show()
end
end
function BagBuddy_Button_OnLeave(self, motion)
GameTooltip:Hide()
Chapter 12
Interacting with Widgets 237
end
function BagBuddy_Filter_OnEnter(self, motion)
GameTooltip:SetOwner(self, “ANCHOR_TOPRIGHT“)
GameTooltip:SetText(_G[“ITEM_QUALITY“ .. i
self.quality .. “_DESC“])
GameTooltip:Show()
end
function BagBuddy_Filter_OnLeave(self, motion)
GameTooltip:Hide()
end
function BagBuddy_Filter_OnClick(self, button)
BagBuddy.qualityFilter = false
for idx = 0, 5 do
local button = BagBuddy.filters[idx]
if button:GetChecked() then
BagBuddy.qualityFilter = true
end
end
BagBuddy.page = 1
BagBuddy_Update()
end
function BagBuddy_NextPage(self)
BagBuddy.page = BagBuddy.page + 1
BagBuddy_Update(BagBuddy)
end
function BagBuddy_PrevPage(self)
BagBuddy.page = BagBuddy.page - 1
BagBuddy_Update(BagBuddy)
end
BagBuddy.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=“BagBuddyItemTemplate“ virtual=“true“>
<Size>
<AbsDimension x=“37“ y=“37“/>
</Size>
<Layers>
<Layer level=“BORDER“>
<Texture name=“$parentIconTexture“ parentKey=“icon“/>
<FontString name=“$parentCount“ parentKey=“count“i
238
Part II
Programming in World of Warcraft
inherits=“NumberFontNormal“ justifyH=“RIGHT“ hidden=“true“>
<Anchors>
<Anchor point=“BOTTOMRIGHT“>
<Offset>
<AbsDimension x=“-5“ y=“2“/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
<Layer level=“OVERLAY“>
<Texture name=“$parentGlow“ parentKey=“glow“ i
alphaMode=“ADD“ file=“Interface\Buttons\UI-ActionButton-Border“>
<Size x=“70“ y=“70“/>
<Anchors>
<Anchor point=“CENTER“/>
</Anchors>
<Color r=“1.0“ g=“1.0“ b=“1.0“ a=“0.6“/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnEnter function=“BagBuddy_Button_OnEnter“/>
<OnLeave function=“BagBuddy_Button_OnLeave“/>
</Scripts>
<NormalTexture name=“$parentNormalTexture“ “ i
file=“Interface\Buttons\UI-Quickslot2“>
<Size>
<AbsDimension x=“64“ y=“64“/>
</Size>
<Anchors>
<Anchor point=“CENTER“>
<Offset>
<AbsDimension x=“0“ y=“-1“/>
</Offset>
</Anchor>
</Anchors>
</NormalTexture>
<PushedTexture file=“Interface\Buttons\UI-Quickslot-Depress“/>
<HighlightTexture i
file=“Interface\Buttons\ButtonHilight-Square“ alphaMode=“ADD“/>
</Button>
<CheckButton name=“BagBuddyFilterTemplate“ “ i
inherits=“BagBuddyItemTemplate“ virtual=“true“>
<Scripts>
<OnEnter function=“BagBuddy_Filter_OnEnter“/>
<OnLeave function=“BagBuddy_Filter_OnLeave“/>
<OnClick function=“BagBuddy_Filter_OnClick“/>
</Scripts>
Documents you may be interested
Documents you may be interested