Thread Tools Display Modes
11-24-13, 07:29 AM   #21
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by Uitat View Post
at this time, i am scaling their screen for them. ... it is set by hard code to 0.6, in the future i may change this, but for now, i think i may hold steady on this... from what i can tell, the pixle ratio is very clear at .6, where as in other scales near that, they seem to distort the graphics
This isn't really a good solution. If you're going to mess with the user's UI scale setting at all, you should just disable UI scaling entirely; WoW will then map each UI pixel to a real pixel, which eliminates any "fuzzy pixel" issues. You should also only do this the first time your UI is loaded, so that if the user adjusts the UI scale afterward, their preference is respected. If you scaled my UI to 0.6 I wouldn't be able to read a single thing. Even for people with good eyesight, 0.6 may be unreadable depending on their screen resolution and monitor size.

(On a side note, it seems pointless to notify the user that you changed their UI scale, since you just unconditionally do it at every login and there's nothing they can do about it.)

A better solution would be to use percents. For example, if you want three equally-sized frames across the bottom of the screen, get the user's effective screen width, divide by 3, and set the width of each frame to the result. If there's some specific situation you think you need to forcibly "normalize" everyone's screen resolution, please describe it so we can offer a less intrusive solution.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.

Last edited by Phanx : 11-24-13 at 07:32 AM.
  Reply With Quote
11-25-13, 09:46 AM   #22
myrroddin
A Pyroguard Emberseer
 
myrroddin's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 1,237
I was thinking about this again, and I was wondering about UI scaling in general. With the default UI, if you adjust the slider you must click Accept or OK for it to take effect. There is no way to see the effect as you move the slider.

Some unit frame AddOns, along with some full UI replacements do, however, have this feature. Would they be hooking OnUpdate or some animation script? That seems costly on the CPU.
  Reply With Quote
11-25-13, 11:31 AM   #23
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
Originally Posted by Phanx View Post
This isn't really a good solution. If you're going to mess with the user's UI scale setting at all, you should just disable UI scaling entirely; WoW will then map each UI pixel to a real pixel, which eliminates any "fuzzy pixel" issues. You should also only do this the first time your UI is loaded, so that if the user adjusts the UI scale afterward, their preference is respected. If you scaled my UI to 0.6 I wouldn't be able to read a single thing. Even for people with good eyesight, 0.6 may be unreadable depending on their screen resolution and monitor size.

(On a side note, it seems pointless to notify the user that you changed their UI scale, since you just unconditionally do it at every login and there's nothing they can do about it.)

A better solution would be to use percents. For example, if you want three equally-sized frames across the bottom of the screen, get the user's effective screen width, divide by 3, and set the width of each frame to the result. If there's some specific situation you think you need to forcibly "normalize" everyone's screen resolution, please describe it so we can offer a less intrusive solution.
ok, i would like to explain, i am not a coder, im a noob, i am using this UI to learn how to do things, i have worked with a very small addon myself, maybe 200 lines of code total, and not much text to each line, i understand i will need to probably make some serious adjustments, but for my minimal knowledge i am doing what i can. i am absolutely sure that as my knowledge grows i will make this thing way better. i dont even expect a true alpha till the new exp comes out hehe!!

as for that

you are quite knowledgeable it seems and i have a question directed just for you, everyone else too if they wish.

Lua Code:
  1. local frame = CreateFrame("Button", "OptionsFrame", TopFrame, "UIPanelButtonTemplate")
  2. frame:SetHeight(21)
  3. frame:SetWidth(80)
  4. frame:SetText("Options")
  5. frame:ClearAllPoints()
  6. frame:SetPoint("CENTER", 0, 0)
  7. OptionsFrame:SetScript("OnClick", NEST MY OPTIONS FRAME HERE )

i want to nest this options panel into the code above, im bout at my wits end

Lua Code:
  1. --  Creating Background Frame Named Config_BaseFrame --------------
  2.     CreateFrame("frame", "Config_BaseFrame", UIParent)
  3.     Config_BaseFrame:SetWidth(1024)
  4.     Config_BaseFrame:SetHeight(512)
  5.     Config_BaseFrame:SetPoint("CENTER", UIParent,"CENTER")
  6.     Config_BaseFrame:SetFrameStrata("HIGH")
  7. --  MAKE THE FRAME MOVEABLE ON LEFT CLICK
  8.     Config_BaseFrame:SetMovable(true)
  9.     Config_BaseFrame:EnableMouse(true)
  10.     Config_BaseFrame:SetScript("OnMouseDown", function(self, button)
  11.     if button == "RightButton"
  12.     and not self.isMoving
  13.         then
  14.             self:StartMoving();
  15.             self.isMoving = true;
  16.         end
  17.     end);
  18.     Config_BaseFrame:SetScript("OnMouseUp", function(self, button)
  19.         if button == "RightButton"
  20.         and self.isMoving
  21.         then
  22.             self:StopMovingOrSizing();
  23.             self.isMoving = false;
  24.         end
  25.     end);
  26.     Config_BaseFrame:SetScript("OnHide", function(self)
  27.         if ( self.isMoving )
  28.         then
  29.             self:StopMovingOrSizing();
  30.             self.isMoving = false;
  31.         end
  32.     end);
  33. --  END MAKE FRAMES MOVEABLE
  34.    
  35. --  Setting The Background Image For Config_BaseFrame for left side
  36.     Config_BaseFrame.portrait = Config_BaseFrame:CreateTexture("Config_BaseFrame_Portrait", "BACKGROUND")
  37.     Config_BaseFrame.portrait:SetWidth(512)
  38.     Config_BaseFrame.portrait:SetHeight(512)
  39.     Config_BaseFrame.portrait:SetPoint("TOPLEFT", 0, 0)
  40.     Config_BaseFrame.portrait:SetTexture("Interface\\Addons\\Deranjata\\Media\\UI-GuildBankFrame-Left.tga")
  41.         --Button1
  42.         local frame = CreateFrame("Button", "Options1", Config_BaseFrame, "UIPanelButtonTemplate")
  43.         frame:SetHeight(36)
  44.         frame:SetWidth(67)
  45.         frame:SetText("Opt1")
  46.         frame:ClearAllPoints()
  47.         frame:SetPoint("CENTER", -451, 160)
  48.         Options1:SetScript("OnClick", ReloadUI)
  49.                         --Button7
  50.             local frame = CreateFrame("Button", "Options7", Config_BaseFrame, "UIPanelButtonTemplate")
  51.             frame:SetHeight(36)
  52.             frame:SetWidth(67)
  53.             frame:SetText("Opt7")
  54.             frame:ClearAllPoints()
  55.             frame:SetPoint("CENTER", 451, 160)
  56.             Options7:SetScript("OnClick", ReloadUI)
  57.         --Button2
  58.         local frame = CreateFrame("Button", "Options2", Config_BaseFrame, "UIPanelButtonTemplate")
  59.         frame:SetHeight(36)
  60.         frame:SetWidth(67)
  61.         frame:SetText("Opt2")
  62.         frame:ClearAllPoints()
  63.         frame:SetPoint("CENTER", -451, 110)
  64.         Options2:SetScript("OnClick", ReloadUI)
  65.                         --Button8
  66.             local frame = CreateFrame("Button", "Options8", Config_BaseFrame, "UIPanelButtonTemplate")
  67.             frame:SetHeight(36)
  68.             frame:SetWidth(67)
  69.             frame:SetText("Opt8")
  70.             frame:ClearAllPoints()
  71.             frame:SetPoint("CENTER", 451, 110)
  72.             Options8:SetScript("OnClick", ReloadUI)
  73.         --Button3
  74.         local frame = CreateFrame("Button", "Options3", Config_BaseFrame, "UIPanelButtonTemplate")
  75.         frame:SetHeight(36)
  76.         frame:SetWidth(67)
  77.         frame:SetText("Opt3")
  78.         frame:ClearAllPoints()
  79.         frame:SetPoint("CENTER", -451, 60)
  80.         Options3:SetScript("OnClick", ReloadUI)
  81.                         --Button9
  82.             local frame = CreateFrame("Button", "Options9", Config_BaseFrame, "UIPanelButtonTemplate")
  83.             frame:SetHeight(36)
  84.             frame:SetWidth(67)
  85.             frame:SetText("Opt9")
  86.             frame:ClearAllPoints()
  87.             frame:SetPoint("CENTER", 451, 60)
  88.             Options9:SetScript("OnClick", ReloadUI)
  89.         --Button4
  90.         local frame = CreateFrame("Button", "Options4", Config_BaseFrame, "UIPanelButtonTemplate")
  91.         frame:SetHeight(36)
  92.         frame:SetWidth(67)
  93.         frame:SetText("Opt4")
  94.         frame:ClearAllPoints()
  95.         frame:SetPoint("CENTER", -451, 10)
  96.         Options4:SetScript("OnClick", ReloadUI)
  97.                         --Button10
  98.             local frame = CreateFrame("Button", "Options10", Config_BaseFrame, "UIPanelButtonTemplate")
  99.             frame:SetHeight(36)
  100.             frame:SetWidth(67)
  101.             frame:SetText("Opt10")
  102.             frame:ClearAllPoints()
  103.             frame:SetPoint("CENTER", 451, 10)
  104.             Options10:SetScript("OnClick", ReloadUI)
  105.         --Button5
  106.         local frame = CreateFrame("Button", "Options5", Config_BaseFrame, "UIPanelButtonTemplate")
  107.         frame:SetHeight(36)
  108.         frame:SetWidth(67)
  109.         frame:SetText("Opt5")
  110.         frame:ClearAllPoints()
  111.         frame:SetPoint("CENTER", -451, -40)
  112.         Options5:SetScript("OnClick", ReloadUI)
  113.                         --Button11
  114.             local frame = CreateFrame("Button", "Options11", Config_BaseFrame, "UIPanelButtonTemplate")
  115.             frame:SetHeight(36)
  116.             frame:SetWidth(67)
  117.             frame:SetText("Opt11")
  118.             frame:ClearAllPoints()
  119.             frame:SetPoint("CENTER", 451, -40)
  120.             Options11:SetScript("OnClick", ReloadUI)
  121.         --Button6
  122.         local frame = CreateFrame("Button", "Options6", Config_BaseFrame, "UIPanelButtonTemplate")
  123.         frame:SetHeight(36)
  124.         frame:SetWidth(67)
  125.         frame:SetText("Opt6")
  126.         frame:ClearAllPoints()
  127.         frame:SetPoint("CENTER", -451, -90)
  128.         Options6:SetScript("OnClick", ReloadUI)
  129.        
  130.                         --Button12
  131.             local frame = CreateFrame("Button", "Options12", Config_BaseFrame, "UIPanelButtonTemplate")
  132.             frame:SetHeight(36)
  133.             frame:SetWidth(67)
  134.             frame:SetText("Opt12")
  135.             frame:ClearAllPoints()
  136.             frame:SetPoint("CENTER", 451, -90)
  137.             Options12:SetScript("OnClick", ReloadUI)
  138.        
  139. --  Setting the background for Config_BaseFrame for Right side
  140.     Config_BaseFrame.portrait = Config_BaseFrame:CreateTexture("Config_BaseFrame_Portrait", "BACKGROUND")
  141.     Config_BaseFrame.portrait:SetWidth(512)
  142.     Config_BaseFrame.portrait:SetHeight(512)
  143.     Config_BaseFrame.portrait:SetPoint("TOPRIGHT", 0, 0)
  144.     Config_BaseFrame.portrait:SetTexture("Interface\\Addons\\Deranjata\\Media\\UI-GuildBankFrame-Right.tga")
  145.  
  146. --  END MAKE FRAME Config_BaseFrame --------------------------------
  147. -----------------------------------------------------------------
  148.  
  149.  
  150. --BUILDING INTERACTIVE BUTTONS-------------TEMPLATES-------------
  151. -----------------------------------------------------------------
  152.  
  153. -- Close button
  154. local frame = CreateFrame("Button", "ExitSetup", Config_BaseFrame, "UIPanelCloseButton")
  155. frame:ClearAllPoints()
  156. frame:SetPoint("TOPRIGHT", -74, -8)
  157. --MakeMoveable(frame)
  158.  
  159.  
  160. --Save and Reload button
  161.  local frame = CreateFrame("Button", "SaveAndReload", Config_BaseFrame, "UIPanelButtonTemplate")
  162.  frame:SetHeight(20)
  163.  frame:SetWidth(100)
  164.  frame:SetText("Reload UI")
  165.  frame:ClearAllPoints()
  166.  frame:SetPoint("CENTER", 380, -165)
  167.  SaveAndReload:SetScript("OnClick", ReloadUI)
  168.  
  169.  
  170.  local frame = CreateFrame("Button", "AlignGrid", Config_BaseFrame, "UIPanelButtonTemplate")
  171.  frame:SetHeight(20)
  172.  frame:SetWidth(100)
  173.  frame:SetText("Alignment")
  174.  frame:ClearAllPoints()
  175.  frame:SetPoint("CENTER", -380, -165)
  176.  AlignGrid:SetScript("OnClick", ReloadUI) -- temporary until Align Grid is complete
  177. -- MakeMoveable(frame)
  Reply With Quote
11-25-13, 08:33 PM   #24
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by myrroddin View Post
... you adjust the slider you must click Accept or OK for it to take effect. There is no way to see the effect as you move the slider. ... Some unit frame AddOns, along with some full UI replacements do, however, have this feature. Would they be hooking OnUpdate or some animation script? That seems costly on the CPU.
They would be using either an OnValueChanged script set on the slider itself -- which, yes, would be extremely slow to rescale every single thing in the UI potentially thousands of times per second while the user is dragging the slider -- or an OnMouseUp script set on the slider -- which would only apply the value once the user released the slider.

Clicking the "apply" button in the default UI doesn't really require any effort, and all the other system settings require you to click "apply" (or "okay" which is the same as "apply" plus "close") so there's not really any reason Blizzard would make the UI scale apply immediately.

Originally Posted by Uitat View Post
i want to nest this options panel into the code above, im bout at my wits end
Sorry, you're going to have to be more clear about what you want, and/or post more of your code. Based on the snippets you posted, it appears you want to insert a bunch of option widgets into a button, which doesn't make any sense. Presumably there is some other frame that contains the button, and you want to show the other stuff when you click the button, but without seeing the code, that's about all I can come up with.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
11-26-13, 04:55 AM   #25
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
Originally Posted by Phanx View Post
Sorry, you're going to have to be more clear about what you want, and/or post more of your code. Based on the snippets you posted, it appears you want to insert a bunch of option widgets into a button, which doesn't make any sense. Presumably there is some other frame that contains the button, and you want to show the other stuff when you click the button, but without seeing the code, that's about all I can come up with.
ok im going to try here to explain what it is i am trying to do

the button named Options Frame i want as a button that fires a function OnClick as seen here
on line 7, the referance to TopFrame is an already existing frame within my artwork.lua. the button places properly, but does not fire.
Lua Code:
  1. local frame = CreateFrame("Button", "OptionsFrame", TopFrame, "UIPanelButtonTemplate")
  2. frame:SetHeight(21)
  3. frame:SetWidth(80)
  4. frame:SetText("Options")
  5. frame:ClearAllPoints()
  6. frame:SetPoint("CENTER", 0, 0)
  7. OptionsFrame:SetScript("OnClick", OptionFrame)

the code i want it to fire is the options config window i am designing
which is this. (these two blocks are the entirety of my code at this moment for this file)

Lua Code:
  1. function OptionFrame()
  2. --  Creating Background Frame Named Config_BaseFrame --------------
  3.     CreateFrame("frame", "Config_BaseFrame", UIParent)
  4.             Config_BaseFrame:SetWidth(1024)
  5.             Config_BaseFrame:SetHeight(512)
  6.             Config_BaseFrame:SetPoint("CENTER", UIParent,"CENTER")
  7.             Config_BaseFrame:SetFrameStrata("HIGH")
  8. --  MAKE THE FRAME MOVEABLE ON LEFT CLICK
  9.             Config_BaseFrame:SetMovable(true)
  10.             Config_BaseFrame:EnableMouse(true)
  11.             Config_BaseFrame:SetScript("OnMouseDown", function(self, button)
  12.     if button == "RightButton"
  13.     and not self.isMoving
  14.         then
  15.             self:StartMoving();
  16.             self.isMoving = true;
  17.         end
  18.     end);
  19.     Config_BaseFrame:SetScript("OnMouseUp", function(self, button)
  20.         if button == "RightButton"
  21.         and self.isMoving
  22.         then
  23.             self:StopMovingOrSizing();
  24.             self.isMoving = false;
  25.         end
  26.     end);
  27.     Config_BaseFrame:SetScript("OnHide", function(self)
  28.         if ( self.isMoving )
  29.         then
  30.             self:StopMovingOrSizing();
  31.             self.isMoving = false;
  32.         end
  33.     end)
  34.  
  35. --  END MAKE FRAMES MOVEABLE
  36. -- Close button
  37. local frame = CreateFrame("Button", "ExitSetup", Config_BaseFrame, "UIPanelCloseButton")
  38. frame:ClearAllPoints()
  39. frame:SetPoint("TOPRIGHT", -74, -8)
  40.  
  41.  
  42. --Save and Reload button
  43.  local frame = CreateFrame("Button", "SaveAndReload", Config_BaseFrame, "UIPanelButtonTemplate")
  44.  frame:SetHeight(20)
  45.  frame:SetWidth(100)
  46.  frame:SetText("Reload UI")
  47.  frame:ClearAllPoints()
  48.  frame:SetPoint("CENTER", 380, -165)
  49.  SaveAndReload:SetScript("OnClick", ReloadUI)
  50.  
  51.  
  52.  local frame = CreateFrame("Button", "AlignGrid", Config_BaseFrame, "UIPanelButtonTemplate")
  53.  frame:SetHeight(20)
  54.  frame:SetWidth(100)
  55.  frame:SetText("Alignment")
  56.  frame:ClearAllPoints()
  57.  frame:SetPoint("CENTER", -380, -165)
  58.  
  59. --  Setting The Background Image For Config_BaseFrame for left side
  60.     Config_BaseFrame.portrait = Config_BaseFrame:CreateTexture("Config_BaseFrame_Portrait", "BACKGROUND")
  61.     Config_BaseFrame.portrait:SetWidth(512)
  62.     Config_BaseFrame.portrait:SetHeight(512)
  63.     Config_BaseFrame.portrait:SetPoint("TOPLEFT", 0, 0)
  64.     Config_BaseFrame.portrait:SetTexture("Interface\\Addons\\Deranjata\\Media\\UI-GuildBankFrame-Left.tga")
  65.         --Button1
  66.         local frame = CreateFrame("Button", "Options1", Config_BaseFrame, "UIPanelButtonTemplate")
  67.         frame:SetHeight(36)
  68.         frame:SetWidth(67)
  69.         frame:SetText("Opt1")
  70.         frame:ClearAllPoints()
  71.         frame:SetPoint("CENTER", -451, 160)
  72.         Options1:SetScript("OnClick", ReloadUI)
  73.                         --Button7
  74.             local frame = CreateFrame("Button", "Options7", Config_BaseFrame, "UIPanelButtonTemplate")
  75.             frame:SetHeight(36)
  76.             frame:SetWidth(67)
  77.             frame:SetText("Opt7")
  78.             frame:ClearAllPoints()
  79.             frame:SetPoint("CENTER", 451, 160)
  80.             Options7:SetScript("OnClick", ReloadUI)
  81.         --Button2
  82.         local frame = CreateFrame("Button", "Options2", Config_BaseFrame, "UIPanelButtonTemplate")
  83.         frame:SetHeight(36)
  84.         frame:SetWidth(67)
  85.         frame:SetText("Opt2")
  86.         frame:ClearAllPoints()
  87.         frame:SetPoint("CENTER", -451, 110)
  88.         Options2:SetScript("OnClick", ReloadUI)
  89.                         --Button8
  90.             local frame = CreateFrame("Button", "Options8", Config_BaseFrame, "UIPanelButtonTemplate")
  91.             frame:SetHeight(36)
  92.             frame:SetWidth(67)
  93.             frame:SetText("Opt8")
  94.             frame:ClearAllPoints()
  95.             frame:SetPoint("CENTER", 451, 110)
  96.             Options8:SetScript("OnClick", ReloadUI)
  97.         --Button3
  98.         local frame = CreateFrame("Button", "Options3", Config_BaseFrame, "UIPanelButtonTemplate")
  99.         frame:SetHeight(36)
  100.         frame:SetWidth(67)
  101.         frame:SetText("Opt3")
  102.         frame:ClearAllPoints()
  103.         frame:SetPoint("CENTER", -451, 60)
  104.         Options3:SetScript("OnClick", ReloadUI)
  105.                         --Button9
  106.             local frame = CreateFrame("Button", "Options9", Config_BaseFrame, "UIPanelButtonTemplate")
  107.             frame:SetHeight(36)
  108.             frame:SetWidth(67)
  109.             frame:SetText("Opt9")
  110.             frame:ClearAllPoints()
  111.             frame:SetPoint("CENTER", 451, 60)
  112.             Options9:SetScript("OnClick", ReloadUI)
  113.         --Button4
  114.         local frame = CreateFrame("Button", "Options4", Config_BaseFrame, "UIPanelButtonTemplate")
  115.         frame:SetHeight(36)
  116.         frame:SetWidth(67)
  117.         frame:SetText("Opt4")
  118.         frame:ClearAllPoints()
  119.         frame:SetPoint("CENTER", -451, 10)
  120.         Options4:SetScript("OnClick", ReloadUI)
  121.                         --Button10
  122.             local frame = CreateFrame("Button", "Options10", Config_BaseFrame, "UIPanelButtonTemplate")
  123.             frame:SetHeight(36)
  124.             frame:SetWidth(67)
  125.             frame:SetText("Opt10")
  126.             frame:ClearAllPoints()
  127.             frame:SetPoint("CENTER", 451, 10)
  128.             Options10:SetScript("OnClick", ReloadUI)
  129.         --Button5
  130.         local frame = CreateFrame("Button", "Options5", Config_BaseFrame, "UIPanelButtonTemplate")
  131.         frame:SetHeight(36)
  132.         frame:SetWidth(67)
  133.         frame:SetText("Opt5")
  134.         frame:ClearAllPoints()
  135.         frame:SetPoint("CENTER", -451, -40)
  136.         Options5:SetScript("OnClick", ReloadUI)
  137.                         --Button11
  138.             local frame = CreateFrame("Button", "Options11", Config_BaseFrame, "UIPanelButtonTemplate")
  139.             frame:SetHeight(36)
  140.             frame:SetWidth(67)
  141.             frame:SetText("Opt11")
  142.             frame:ClearAllPoints()
  143.             frame:SetPoint("CENTER", 451, -40)
  144.             Options11:SetScript("OnClick", ReloadUI)
  145.         --Button6
  146.         local frame = CreateFrame("Button", "Options6", Config_BaseFrame, "UIPanelButtonTemplate")
  147.         frame:SetHeight(36)
  148.         frame:SetWidth(67)
  149.         frame:SetText("Opt6")
  150.         frame:ClearAllPoints()
  151.         frame:SetPoint("CENTER", -451, -90)
  152.         Options6:SetScript("OnClick", ReloadUI)
  153.        
  154.                         --Button12
  155.             local frame = CreateFrame("Button", "Options12", Config_BaseFrame, "UIPanelButtonTemplate")
  156.             frame:SetHeight(36)
  157.             frame:SetWidth(67)
  158.             frame:SetText("Opt12")
  159.             frame:ClearAllPoints()
  160.             frame:SetPoint("CENTER", 451, -90)
  161.             Options12:SetScript("OnClick", ReloadUI)
  162.        
  163. --  Setting the background for Config_BaseFrame for Right side
  164.     Config_BaseFrame.portrait = Config_BaseFrame:CreateTexture("Config_BaseFrame_Portrait", "BACKGROUND")
  165.     Config_BaseFrame.portrait:SetWidth(512)
  166.     Config_BaseFrame.portrait:SetHeight(512)
  167.     Config_BaseFrame.portrait:SetPoint("TOPRIGHT", 0, 0)
  168.     Config_BaseFrame.portrait:SetTexture("Interface\\Addons\\Deranjata\\Media\\UI-GuildBankFrame-Right.tga")
  169.  
  170. end
  Reply With Quote
11-26-13, 05:23 AM   #26
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
i got the button to work, line of code here


Lua Code:
  1. OptionsFrame:SetScript("OnClick", function() OptionFrame() end)

However. when i click the close button, and try to click the options button again, nothing happens. should i be using some sort of event handler here to allow the script to run again, i dont like making things like on a refresh basis because it sounds like it can make an addon very heavy on cpu cycles-- which is exactly what im trying to avoid

Last edited by Uitat : 11-26-13 at 05:31 AM. Reason: ARRRRG ifxed but still broken
  Reply With Quote
11-26-13, 08:24 AM   #27
Lombra
A Molten Giant
 
Lombra's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 554
Technically it should work, I guess, but you are currently creating the frames all over again each time you press that button. You can't do that. Create all the frames outside of any function and then just do Config_BaseFrame:Show() in OnClick.

A few other fairly important pointers:

When you're creating frames and naming them:
Code:
CreateFrame("frame", "Config_BaseFrame", UIParent)
that's actually creating a global variable Config_BaseFrame. Now global variables aren't disastrous, but (usually) there's no need for them, and there's no upside to using them if you don't have to. If you do want to use global variables/names, you should at least name them more specifically. "AddonNameConfig_BaseFrame" for example. Ideally though, you should just skip the global and use a local reference:
Code:
local Config_BaseFrame = CreateFrame("frame", nil, UIParent)
The button should probably not be referred to as "frame" and "OptionsFrame". Try to have somewhat descriptive names for functions. It's not at all apparent what the OptionFrame function does from the name.
__________________
Grab your sword and fight the Horde!
  Reply With Quote
11-26-13, 08:39 AM   #28
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
if you wish i can supply the complete addon for your scrutiny

ok so one last time before i hang it up for the week, im getting frustrated, so ill continue next week if i cant find a way in the next couple hours,

Posting 100% of the code,

the problem is such

i click the options button which resides at the top of my screen in another frame in the script for my artwork, named TopFrame. this button displays properly,

after click the Config Frame appears, if i click any tab it does as i instruct and reloads UI as thats what i have the buttons set to just for testing purposes, with the exception of alignment, which throws up a grid on the screen, and that works properly toggles on and off by via entering a Slash Command into the Chatbox, no problem there

in the upper right i have a button marked X it is the Generic Close button for wow. see code labeled Close button.

when clicked it does just as expected and closes the Frame

next... click the Options button again..... Nothing Happens,

however if i click the reloadUI on my Addon the UI reloads and the options button will work again, until i hit the close button again then again the options button dies


Lua Code:
  1. local frame = CreateFrame("Button", "OptionsFrame", TopFrame, "UIPanelButtonTemplate")
  2. frame:SetHeight(21)
  3. frame:SetWidth(80)
  4. frame:SetText("Options")
  5. frame:ClearAllPoints()
  6. frame:SetPoint("CENTER", 0, 0)
  7. OptionsFrame:SetScript("OnClick", function() OptionFrame() end)  
  8.  
  9.  
  10.  
  11. function OptionFrame()
  12. --  Creating Background Frame Named Config_BaseFrame --------------
  13.     CreateFrame("frame", "Config_BaseFrame", UIParent)
  14.             Config_BaseFrame:SetWidth(1024)
  15.             Config_BaseFrame:SetHeight(512)
  16.             Config_BaseFrame:SetPoint("CENTER", UIParent,"CENTER")
  17.             Config_BaseFrame:SetFrameStrata("HIGH")
  18. --  MAKE THE FRAME MOVEABLE ON LEFT CLICK
  19.             Config_BaseFrame:SetMovable(true)
  20.             Config_BaseFrame:EnableMouse(true)
  21.             Config_BaseFrame:SetScript("OnMouseDown", function(self, button)
  22.     if button == "RightButton"
  23.     and not self.isMoving
  24.         then
  25.             self:StartMoving();
  26.             self.isMoving = true;
  27.         end
  28.     end);
  29.     Config_BaseFrame:SetScript("OnMouseUp", function(self, button)
  30.         if button == "RightButton"
  31.         and self.isMoving
  32.         then
  33.             self:StopMovingOrSizing();
  34.             self.isMoving = false;
  35.         end
  36.     end);
  37.     Config_BaseFrame:SetScript("OnHide", function(self)
  38.         if ( self.isMoving )
  39.         then
  40.             self:StopMovingOrSizing();
  41.             self.isMoving = false;
  42.         end
  43.     end)
  44.  
  45. --  END MAKE FRAMES MOVEABLE
  46. -- Close button
  47. local frame = CreateFrame("Button", "ExitSetup", Config_BaseFrame, "UIPanelCloseButton")
  48. frame:ClearAllPoints()
  49. frame:SetPoint("TOPRIGHT", -74, -8)
  50.  
  51. --Save and Reload button
  52.  local frame = CreateFrame("Button", "SaveAndReload", Config_BaseFrame, "UIPanelButtonTemplate")
  53.  frame:SetHeight(20)
  54.  frame:SetWidth(100)
  55.  frame:SetText("Reload UI")
  56.  frame:ClearAllPoints()
  57.  frame:SetPoint("CENTER", 380, -165)
  58.  SaveAndReload:SetScript("OnClick", ReloadUI)
  59.  
  60.  
  61.  local frame = CreateFrame("Button", "AlignGrid", Config_BaseFrame, "UIPanelButtonTemplate")
  62.  frame:SetHeight(20)
  63.  frame:SetWidth(100)
  64.  frame:SetText("Alignment")
  65.  frame:ClearAllPoints()
  66.  frame:SetPoint("CENTER", -380, -165)
  67.  frame:SetScript("OnClick", function() Allignment() end)  
  68.  
  69. --  Setting The Background Image For Config_BaseFrame for left side
  70.     Config_BaseFrame.portrait = Config_BaseFrame:CreateTexture("Config_BaseFrame_Portrait", "BACKGROUND")
  71.     Config_BaseFrame.portrait:SetWidth(512)
  72.     Config_BaseFrame.portrait:SetHeight(512)
  73.     Config_BaseFrame.portrait:SetPoint("TOPLEFT", 0, 0)
  74.     Config_BaseFrame.portrait:SetTexture("Interface\\Addons\\Deranjata\\Media\\UI-GuildBankFrame-Left.tga")
  75.         --Button1
  76.         local frame = CreateFrame("Button", "Options1", Config_BaseFrame, "UIPanelButtonTemplate")
  77.         frame:SetHeight(36)
  78.         frame:SetWidth(67)
  79.         frame:SetText("Opt1")
  80.         frame:ClearAllPoints()
  81.         frame:SetPoint("CENTER", -451, 160)
  82.         Options1:SetScript("OnClick", ReloadUI)
  83.                         --Button7
  84.             local frame = CreateFrame("Button", "Options7", Config_BaseFrame, "UIPanelButtonTemplate")
  85.             frame:SetHeight(36)
  86.             frame:SetWidth(67)
  87.             frame:SetText("Opt7")
  88.             frame:ClearAllPoints()
  89.             frame:SetPoint("CENTER", 451, 160)
  90.             Options7:SetScript("OnClick", ReloadUI)
  91.         --Button2
  92.         local frame = CreateFrame("Button", "Options2", Config_BaseFrame, "UIPanelButtonTemplate")
  93.         frame:SetHeight(36)
  94.         frame:SetWidth(67)
  95.         frame:SetText("Opt2")
  96.         frame:ClearAllPoints()
  97.         frame:SetPoint("CENTER", -451, 110)
  98.         Options2:SetScript("OnClick", ReloadUI)
  99.                         --Button8
  100.             local frame = CreateFrame("Button", "Options8", Config_BaseFrame, "UIPanelButtonTemplate")
  101.             frame:SetHeight(36)
  102.             frame:SetWidth(67)
  103.             frame:SetText("Opt8")
  104.             frame:ClearAllPoints()
  105.             frame:SetPoint("CENTER", 451, 110)
  106.             Options8:SetScript("OnClick", ReloadUI)
  107.         --Button3
  108.         local frame = CreateFrame("Button", "Options3", Config_BaseFrame, "UIPanelButtonTemplate")
  109.         frame:SetHeight(36)
  110.         frame:SetWidth(67)
  111.         frame:SetText("Opt3")
  112.         frame:ClearAllPoints()
  113.         frame:SetPoint("CENTER", -451, 60)
  114.         Options3:SetScript("OnClick", ReloadUI)
  115.                         --Button9
  116.             local frame = CreateFrame("Button", "Options9", Config_BaseFrame, "UIPanelButtonTemplate")
  117.             frame:SetHeight(36)
  118.             frame:SetWidth(67)
  119.             frame:SetText("Opt9")
  120.             frame:ClearAllPoints()
  121.             frame:SetPoint("CENTER", 451, 60)
  122.             Options9:SetScript("OnClick", ReloadUI)
  123.         --Button4
  124.         local frame = CreateFrame("Button", "Options4", Config_BaseFrame, "UIPanelButtonTemplate")
  125.         frame:SetHeight(36)
  126.         frame:SetWidth(67)
  127.         frame:SetText("Opt4")
  128.         frame:ClearAllPoints()
  129.         frame:SetPoint("CENTER", -451, 10)
  130.         Options4:SetScript("OnClick", ReloadUI)
  131.                         --Button10
  132.             local frame = CreateFrame("Button", "Options10", Config_BaseFrame, "UIPanelButtonTemplate")
  133.             frame:SetHeight(36)
  134.             frame:SetWidth(67)
  135.             frame:SetText("Opt10")
  136.             frame:ClearAllPoints()
  137.             frame:SetPoint("CENTER", 451, 10)
  138.             Options10:SetScript("OnClick", ReloadUI)
  139.         --Button5
  140.         local frame = CreateFrame("Button", "Options5", Config_BaseFrame, "UIPanelButtonTemplate")
  141.         frame:SetHeight(36)
  142.         frame:SetWidth(67)
  143.         frame:SetText("Opt5")
  144.         frame:ClearAllPoints()
  145.         frame:SetPoint("CENTER", -451, -40)
  146.         Options5:SetScript("OnClick", ReloadUI)
  147.                         --Button11
  148.             local frame = CreateFrame("Button", "Options11", Config_BaseFrame, "UIPanelButtonTemplate")
  149.             frame:SetHeight(36)
  150.             frame:SetWidth(67)
  151.             frame:SetText("Opt11")
  152.             frame:ClearAllPoints()
  153.             frame:SetPoint("CENTER", 451, -40)
  154.             Options11:SetScript("OnClick", ReloadUI)
  155.         --Button6
  156.         local frame = CreateFrame("Button", "Options6", Config_BaseFrame, "UIPanelButtonTemplate")
  157.         frame:SetHeight(36)
  158.         frame:SetWidth(67)
  159.         frame:SetText("Opt6")
  160.         frame:ClearAllPoints()
  161.         frame:SetPoint("CENTER", -451, -90)
  162.         Options6:SetScript("OnClick", ReloadUI)
  163.        
  164.                         --Button12
  165.             local frame = CreateFrame("Button", "Options12", Config_BaseFrame, "UIPanelButtonTemplate")
  166.             frame:SetHeight(36)
  167.             frame:SetWidth(67)
  168.             frame:SetText("Opt12")
  169.             frame:ClearAllPoints()
  170.             frame:SetPoint("CENTER", 451, -90)
  171.             Options12:SetScript("OnClick", ReloadUI)
  172.        
  173. --  Setting the background for Config_BaseFrame for Right side
  174.     Config_BaseFrame.portrait = Config_BaseFrame:CreateTexture("Config_BaseFrame_Portrait", "BACKGROUND")
  175.     Config_BaseFrame.portrait:SetWidth(512)
  176.     Config_BaseFrame.portrait:SetHeight(512)
  177.     Config_BaseFrame.portrait:SetPoint("TOPRIGHT", 0, 0)
  178.     Config_BaseFrame.portrait:SetTexture("Interface\\Addons\\Deranjata\\Media\\UI-GuildBankFrame-Right.tga")
  179.  
  180. end
  Reply With Quote
11-26-13, 08:43 AM   #29
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
Originally Posted by Lombra View Post
Technically it should work, I guess, but you are currently creating the frames all over again each time you press that button. You can't do that. Create all the frames outside of any function and then just do Config_BaseFrame:Show() in OnClick.

A few other fairly important pointers:

When you're creating frames and naming them:
Code:
CreateFrame("frame", "Config_BaseFrame", UIParent)
that's actually creating a global variable Config_BaseFrame. Now global variables aren't disastrous, but (usually) there's no need for them, and there's no upside to using them if you don't have to. If you do want to use global variables/names, you should at least name them more specifically. "AddonNameConfig_BaseFrame" for example. Ideally though, you should just skip the global and use a local reference:
Code:
local Config_BaseFrame = CreateFrame("frame", nil, UIParent)
The button should probably not be referred to as "frame" and "OptionsFrame". Try to have somewhat descriptive names for functions. It's not at all apparent what the OptionFrame function does from the name.
point taken and noted, will adjust the Global Local on a future build, first i want to get the Functions down then i will "Prettyfy" it
  Reply With Quote
11-26-13, 07:04 PM   #30
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by Uitat View Post
i got the button to work, line of code here


Lua Code:
  1. OptionsFrame:SetScript("OnClick", function() OptionFrame() end)

However. when i click the close button, and try to click the options button again, nothing happens. should i be using some sort of event handler here to allow the script to run again, i dont like making things like on a refresh basis because it sounds like it can make an addon very heavy on cpu cycles-- which is exactly what im trying to avoid
Your first problem was happening because (probably; it's impossible to say when you're only providing snippets out of context) the "OptionFrame" function wasn't defined yet when that line is read, so at that point writing "OptionFrame" was the same as writing "nil", so you weren't actually setting an OnClick script at all. By wrapping your function call in an anonymous function, you made it so that the code doesn't try to look up the value of "OptionFrame" until the function runs -- but this can only work if your "OptionFrame" function is global, which is A Bad Thing, especially with such a generic name.

Your second problem is happening because there's nothing in your code to :Show() your options frame again after you've :Hide()n it by clicking the close button. Actually, your problem is even bigger than that, because your code is actually creating a whole new copy of the options frame every time you click your button. Personally I would just create the options frame right off the bat, :Hide() it, and then all you need to do is :Show() it when you click your button. However, if you're obsessively worried about your addon sitting on an extra 3 KB or whatever of memory that the user *might* not need every game session, you can create it on demand, but then you need to check for it and not create it again if it already exists. For example:

Code:
function MyAddon_ShowOptions()
    -- Does the frame already exist?
    if not MyAddon_OptionsFrame then
        -- Nope. Create it now:
        local options = CreateFrame("Frame", "MyAddon_OptionsFrame", UIParent)
        -- Set up the frame, add widgets and buttons etc.
    end
    -- By this point the frame either already existed, or was just created.
    MyAddon_OptionsFrame:Show()
end
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
11-26-13, 07:46 PM   #31
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
Phanx, great info there, i really appreciate it, you have actually been part of my inspiration in your chat addon, sooner or later i will nest my own chat mod, but for now i like to use yours

im going to try this tomorrow and see how it goes
  Reply With Quote
11-27-13, 06:01 PM   #32
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
backed up my file and started over for simplicity of trying to get your function to work....

Now i am beyond confused (this is the entirety of the code)

Lua Code:
  1. function MyAddon_ShowOptions()
  2.     -- Does the frame already exist?
  3.     if not MyAddon_OptionsFrame then
  4.         -- Nope. Create it now:
  5.         local options = CreateFrame("Frame", "MyAddon_OptionsFrame", UIParent)
  6.         -- Set up the frame, add widgets and buttons etc.
  7.         MyAddon_OptionsFrame:SetWidth(1024)
  8.         MyAddon_OptionsFrame:SetHeight(512)
  9.         MyAddon_OptionsFrame:SetPoint("CENTER", UIParent,"CENTER")
  10.         MyAddon_OptionsFrame:SetFrameStrata("HIGH")
  11.         MyAddon_OptionsFrame:SetBackdrop(backdrop)
  12.     end
  13.     -- By this point the frame either already existed, or was just created.
  14.     MyAddon_OptionsFrame:Show()
  15. end
  16.  
  17. local backdrop = {
  18.     bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",
  19.     edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border",
  20.     tile = true,
  21.     tileSize = 32,
  22.     edgeSize = 20,
  23.     insets = {
  24.         left = 4,
  25.         right = 4,
  26.         top = 4,
  27.         bottom = 4,
  28.         }
  29.     }  
  30.  
  31. local frame = CreateFrame("Button", "OptionsFrame", TopFrame, "UIPanelButtonTemplate")
  32. frame:SetHeight(21)
  33. frame:SetWidth(80)
  34. frame:SetText("Options")
  35. frame:ClearAllPoints()
  36. frame:SetPoint("CENTER", 0, 0)
  37. OptionsFrame:SetScript("OnClick", function() MyAddon_OptionsFrame() end)
  Reply With Quote
11-27-13, 06:13 PM   #33
Lombra
A Molten Giant
 
Lombra's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 554
MyAddon_ShowOptions vs MyAddon_OptionsFrame.
__________________
Grab your sword and fight the Horde!
  Reply With Quote
11-28-13, 03:49 PM   #34
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
Originally Posted by Uitat View Post
Phanx, great info there, i really appreciate it, you have actually been part of my inspiration in your chat addon, sooner or later i will nest my own chat mod, but for now i like to use yours

im going to try this tomorrow and see how it goes
ok so i succeeded in making this work but it will only open then close it 1 time then no longer functions, is there some sort of event handler i should be using here???
Lua Code:
  1. local backdrop = {
  2.     bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",
  3.     edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border",
  4.     tile = true,
  5.     tileSize = 32,
  6.     edgeSize = 20,
  7.     insets = {
  8.         left = 4,
  9.         right = 4,
  10.         top = 4,
  11.         bottom = 4,
  12.         }
  13.     }  
  14.  
  15.  
  16. function MyAddon_ShowOptionFrame()
  17. -- Does the frame already exist?
  18. if HeeloWorldFrame then
  19.     HeeloWorldFrame:Hide()  else
  20.         if not HeeloWorldFrame then
  21. -- Nope. Create it now:
  22.         local frame = CreateFrame("frame", "HeeloWorldFrame", UIParent)
  23.         HeeloWorldFrame:SetWidth(300)
  24.         HeeloWorldFrame:SetHeight(75)
  25.         HeeloWorldFrame:SetPoint("CENTER", UIParent,"CENTER", 0, 0)
  26.         HeeloWorldFrame:SetFrameStrata("BACKGROUND")
  27.         HeeloWorldFrame:SetFrameLevel(1)   
  28.         HeeloWorldFrame:SetAlpha(1)
  29.         HeeloWorldFrame:SetBackdrop(backdrop)          
  30.         end
  31.         HeeloWorldFrame:Show()  
  32.     end
  33.     -- -- By this point the frame either already existed, or was just created.
  34. end
  35.  
  36. frame = CreateFrame("Button", "OptionsFrame", TopFrame, "UIPanelButtonTemplate")
  37.     frame:SetHeight(21)
  38.     frame:SetWidth(80)
  39.     frame:SetText("Options")
  40.     frame:ClearAllPoints()
  41.     frame:SetPoint("CENTER", 0, 0)
  42.     OptionsFrame:SetScript("OnClick", function() MyAddon_ShowOptionFrame() end)
  Reply With Quote
11-29-13, 03:56 PM   #35
ravagernl
Proceritate Corporis
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 1,176
Originally Posted by Uitat View Post
ok so i succeeded in making this work but it will only open then close it 1 time then no longer functions, is there some sort of event handler i should be using here???
[...]
You're mixing lazy creation of a frame and toggling the same frame in the wrong way. You only need to toggle the frame if it was already created, otherwise you know that it isn't visible yet so you just need to create it.

Lua Code:
  1. [...]
  2.  
  3. function MyAddon_ShowOptionFrame()
  4.     -- Does the frame already exist?
  5.     if not HeeloWorldFrame then
  6.         -- Nope. Create it now:
  7.         CreateFrame("frame", "HeeloWorldFrame", UIParent)
  8.         HeeloWorldFrame:SetWidth(300)
  9.         HeeloWorldFrame:SetHeight(75)
  10.         HeeloWorldFrame:SetPoint("CENTER", UIParent,"CENTER", 0, 0)
  11.         HeeloWorldFrame:SetFrameStrata("BACKGROUND")
  12.         HeeloWorldFrame:SetFrameLevel(1)   
  13.         HeeloWorldFrame:SetAlpha(1)
  14.         HeeloWorldFrame:SetBackdrop(backdrop)
  15.     else
  16.         -- frame already exists, so toggle it.
  17.         HeeloWorldFrame:SetShown(not HeeloWorldFrame:IsShown())
  18.     end
  19. end
  20.  
  21. [...]
  Reply With Quote
11-29-13, 05:50 PM   #36
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
Originally Posted by ravagernl View Post
You're mixing lazy creation of a frame and toggling the same frame in the wrong way. You only need to toggle the frame if it was already created, otherwise you know that it isn't visible yet so you just need to create it.

Lua Code:
  1. [...]
  2.  
  3. function MyAddon_ShowOptionFrame()
  4.     -- Does the frame already exist?
  5.     if not HeeloWorldFrame then
  6.         -- Nope. Create it now:
  7.         CreateFrame("frame", "HeeloWorldFrame", UIParent)
  8.         HeeloWorldFrame:SetWidth(300)
  9.         HeeloWorldFrame:SetHeight(75)
  10.         HeeloWorldFrame:SetPoint("CENTER", UIParent,"CENTER", 0, 0)
  11.         HeeloWorldFrame:SetFrameStrata("BACKGROUND")
  12.         HeeloWorldFrame:SetFrameLevel(1)   
  13.         HeeloWorldFrame:SetAlpha(1)
  14.         HeeloWorldFrame:SetBackdrop(backdrop)
  15.     else
  16.         -- frame already exists, so toggle it.
  17.         HeeloWorldFrame:SetShown(not HeeloWorldFrame:IsShown())
  18.     end
  19. end
  20.  
  21. [...]
ok i know im new at this but now i feel like an utter idiot, thank you much!!!
  Reply With Quote
11-29-13, 07:07 PM   #37
Uitat
A Chromatic Dragonspawn
 
Uitat's Avatar
AddOn Author - Click to view addons
Join Date: May 2011
Posts: 162
to all of you that helped

thank you so much for your time and patience, as a budding programmer (or should i say just sprouting into a seedling) you all have made this much easier for me to understand, without you all i would not have accomplished this little bit of my addon, i hope in the future if i need to post i will not look so ignorant or possibly even stupid.

i commend you all on your accomplishments as addon programmers, and one day hope to be as good, if not better but for now, ... i bid ye all farewell
thank you again

Uitat.
  Reply With Quote

WoWInterface » Developer Discussions » Lua/XML Help » needing some help here

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off