Chaos Frame Modifier
This allows for full customization of almost any frame within the game.
Bugs Reports/Suggestions
Bugs/Suggestions should be posted here or via the ticket system.
Author's Note
"Extreme" UI modders may remember the old Discord series of mods written by Lozareth. A few years ago he decided to cease development on this series. A few devoted individuals have kept the mods active at underworldexodus.com. Unfortunately, Discord Frame Modifier never truly has been kept "up to date" with the rest. The entire collection has been kept alive through what I like to call "bandaid" fixes, in which code was changed enough to keep the mods functional but are still full of errors. Unless these errors caused a cease in functionality, there were simply ignored. I finally got tired of said errors and started this project up. So enough babble, let's get on to what this thing can do!
Slash Command
/cfm - brings up config
/cfm import - bring up import frame
/cfm load <Realm> <Name> - swap to another toon's settings (remember to capitalize your realm and name)
ESC - closes config
CFM vs. DFM No Outside Libs: DFM originally required Discord Library as a dependency. The library had so many calls that it would drastically impact performance when working with the config frame. CFM has everything built into it with no dependencies. No Default List: This is intentional and will NOT be changed. One of my biggest pet peeves about using DFM was that it had a HUGE default list and that 98% of it was never used. The database will only contain what YOU want it to. No required UI Reloads: When a frame was removed from the database in DFM it would require a UI reload in order to reset that frame back to it's original settings. With CFM, this is no longer the case. When a frame is added, it automatically creates a restore point for that frame's data AT THAT POINT. When a frame is removed, it resets the frame to these settings automatically. The only time when a user is prompted to reload is after swapping profiles as some frames that don't have settings will not be moved.
The Config Panel Frame List (top-left)
This lists your frames currently in your database. Left Click: Selects the frame and fills in it's info in all other frames (except "Add Frame"). Right Click: Prompts removal of the frame from the database.
Add Frame (bottom-left)
This is where you can add frames to your database. Name: The custom name for your frame to show in the list (half-works, see "Known Bugs") Frame: The actual name of the frame. Parent: You can reassign the parent frame when adding. Leaving it blank will default it to it's current parent. Tab: Move to next edit box.
Properties Frame (upper-right)
This displays and controls all the selected frame's properties. Force Hide: Checking this will always hide the frame. Width = Height: Also known as "Constrain Porportions". With this checked, if the width/height is changed, it automatically sets the other as the same value. Width: Current width of the frame. Height: Current height of the frame. Scale: Current scale of the frame. (+/- adjust scale by .1) Level: Current level of the frame. This controls where this frame's position is on the same strata (see below) as other frames. Think of it like a line of plates. You have 3 plates stacked; plate 1 overlaps plates 2 and 3. If you change plate 3 to the top of the stack (change it's level higher than plate 1), plate 3 now overlaps plates 1 and 2. From: The selected frames anchor point. This is the point that will attach to the parent frame set in "To" (seebelow). To: The parent's point where you want the your selected frame to attach to. Strata: Similar to level, but more extreme. There are 5 choices and the list goes from lowest to highest (top to bottom).
Position Frame (lower-right)
This controls the frames position in relation to the parent. Both values can be increased/decreased with their corresponding "+"/"-" buttons. X: The selected frame's horizontal position. Y: The selected frame's vertical position. 0,0: Resets the selected frame's position to X:0,Y:0.
Mouseover Frame (bottom)
This will tell you the name of the frame your mouse is currently over.
Import Frame (/cfm import)
This allows users to import their settings from DFM. 2 things to note:
1) No restore point will be generated during an import.
2) Because of the way DFM's saved vars are laid out, there is no way to "mass import" all frames at this time. Sorry.
ALL SETTING (except in Add Frame and Import Frame) ARE APPLIED WITH YOU PRESS "ENTER"
Known Bugs Frame name displays in list instead of the name I set!: I'm aware of this and for the time being that's the way it is. When I realized my error on this, I was too far into the project to create a fix as it'll require a consider amount of recoding to fix. I actually wanna play for a bit now, dammit! =p Frame X doesn't keep it's settings!: Some frames are "Load on Demand", meaning they don't exist yet when CFM tries to apply changes to it. This especially applies to several default Blizz frames (like AchievementFrame). If you come across something like this, please submit a ticket and I'll add support for it.
Soon-to-be FAQs (things I've asked myself along the way) How long did it really take to write this?
Almost 4 months. I have a full time job, a woman and 2 kids. Doesn't leave much time for continuous coding without getting yelled at.
Why didn't you keep the "Discord" name?
This was completely written from the ground up. Not to discredit the original, but this was my hard work and felt it deserved to be titled with such in mind.
Why not just fix DFM?
DFM is way too bulky and, well, out of date. With the changes to the API over the last several patches a lot of the existing code is now redundant or just plain broken. I'd also have to rewrite portions of the Discord Library to compensate for fixes and would just be bigger headache than this has been so far.
Will you consider making this "Ace"'d?
Will you consider holding a shotgun to your head and pull the trigger? If there's one tradition for the Discord mods I've always agreed with is that it'll never use Ace libs (or any other for that matter). I hate trying to work off other people's libs because if something changes that breaks the lib then I have to sit and wait for a fix before I can fix my own project.
LDB/Titan/Fubar support?
Why? Too lazy to type /cfm?
Can the colors be changed?
Eventually. Maybe. I like em. I didn't like Discord's color scheme, but I dealt with it just fine. You can too.
Will you allow WoWMatrix to distribute this?
They can go die in a bus fire.
Things To Do
1) Figure out why the strata box keeps saying "Center". (DONE!)
2) Fix so name shows in list instead of the frame.
3) Get my Argent Tournament mount. (most likely to happen first) (DONE!)
4) Compatibility with other mod's saved vars. Currently, there are a few mods that will reset frame positions when their options are opened (XPerl, Lunarsphere, etc.) Goal is that when CFM saves a frame's position, it'll also automatically save them to the parent mod's saved vars as well, preventing the "auto shift back" when these mods are opened after CFM is closed. (likely to happen second) (PARTLY DONE!)
5) Go get a soda (DONE!)
Credits
ME!: I wrote it.
Moongaze: LOTS of help along the way, including a lot of performance suggestions.
Discord Community: For keeping Discord going as long as it has been. Notable people being Shiny, ThaDruid, Kayda. No credit goes to Lappen, however, as he's just a whiny bastard who hasn't done anything useful. Ever.
WoWInterface Community: Including Seerah, Akryn, and kraftman for helping me with my noobish questions on the forums when I'd get stuck.
Change Log - Chaos Frame Modifier
r23
+ Added missing "OnShow" hooks when a frame is initially added, which was causing a variety of frames to keep reseting their x/y positions until login/reload
r22
+ Force load Blizzard_AchievementUI if user has made changes to the AchievementFrame (ticket 5958)
r21
+ Anchoring fixes, now aligns properly on widescreens
+ Added frames will now set as movable before attempting to modify them
r20
+ Changed restore info and useProfile to PerCharacter variables to avoid taint. Existing variables should convert silently.
+ Frames should now restore after exiting a vehicle
+ File no longer run through LuaSrcDiet. Too much of a hassle to keep updated and the performance trade off is hardly noticeable.
r19
+ CombatLockDown checks added.
+ ForceHidden frames should not show at ANY point now (for real this time!)
r18
+ Fix bug where not all frames were being loaded
+ ForceHide properly works on already hidden frames (example: TargetFrame will now stay hidden, even on target changes)
+ Some code cleanup
r 17
+ Frames are now set as "UserPlaced". If newly added frames were already previously "UserPlaced", it is recorded in that frames restore data.
+ Fix bug where Blizz's target frame would remain present after zoning/porting (not tested)(WoWI Ticket 5937).
+ Frames not currently present (addon disabled/deleted, etc.) will no longer show up in the frame list.
r16
+ Fix WorldFrame strata work around(typo)
+ Added additional checks when working with the WorldFrame (hopefully no more bugs, but no promises)
+ No really, "useProfile" isn't a selectable frame. Fixed.
+ Fix typo when importing forceHide value from DFM (was saving incorrectly)
+ Increase load delay from 1sec to 2sec to compensate a bit for UI lag
+ Profile swapping now works the way it's supposed to (thanks Akryn)
+ If a parent frame is no longer present for a selected frame, it will now default to "UIParent"
+ Users will now be prompted to reloadUI when switching profiles (in case frames don't end up where they're supposed to)
r15
+ profile swapping (temp setup)
r14
+ Clicking height +/- will now properly update the height box instead of the width box
+ Created workaround for strata error when attempting to add/edit the WorldFrame
+ Fix confusion with From/To points (listed correctly, code was backwards)
r13
Users are now able to import settings from DFM (see desc for details)
r11
+ Added (+/-) buttons to height,width,scale and level
+ Reorganized config frame for the new buttons
+ Moved (-) on X/Y edit boxes
- No longer possible to set a negative level
r8
Mouseover info frame now shows parent data
Couple bug fixes that many may not have even seen
Switched file version to revision numbering (easier to deal with)
1.1
Clicking the 0,0 button should now set X/Y boxes to 0
Frames with no defined parent will now default to "UIParent"
Originally posted by scaredofspiders Will you ever ever ever support drag&drop ability?
After a tiny bit of fiddling, I'm finding that this addon is saving the size tweaking, but not the location.
In specific I am trying to permanently relocate the new shaman totem bar and also the vehicle bar. I don't know if they're canceling each other out or what, as one won't be visible when the other is.
If I'm on foot and enter a vehicle, then leave the vehicle, the totem bar will be back in its original position.
If I'm in a vehicle, exit it, then re-enter it, the vehicle bar will be back where its original setting is. The locations are still saved in the config window, but I have to adjust the x or 7 up or down at least once for it to resume the position I had it set at before entering the vehicle (or when I first enter the vehicle).
I don't have anything else I want to move about .. and nothing else from the default ui showing, so I'm not sure if this is the case with all frames or just these two. Sorry!
This issue has been brought up over at curse. Apparently, Blizz's frames don't like x/y changes for some reason on initial setup, even though all the info is directly written to layout-local.lua, which WoW reads first before anything else.
You can read my responses and my current progress on addressing this issue over there.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
Will you ever ever ever support drag&drop ability?
After a tiny bit of fiddling, I'm finding that this addon is saving the size tweaking, but not the location.
In specific I am trying to permanently relocate the new shaman totem bar and also the vehicle bar. I don't know if they're canceling each other out or what, as one won't be visible when the other is.
If I'm on foot and enter a vehicle, then leave the vehicle, the totem bar will be back in its original position.
If I'm in a vehicle, exit it, then re-enter it, the vehicle bar will be back where its original setting is. The locations are still saved in the config window, but I have to adjust the x or 7 up or down at least once for it to resume the position I had it set at before entering the vehicle (or when I first enter the vehicle).
I don't have anything else I want to move about .. and nothing else from the default ui showing, so I'm not sure if this is the case with all frames or just these two. Sorry!
Last edited by scaredofspiders : 08-09-2009 at 03:44 PM.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
Originally posted by Hiker CFM isn't working for me when I reposition the Achievements frame. It does successfully change the scale for the Achievements frame.
I'm filling in the x and y values and pressing enter. When I reopen the Achievements frame it is back where it originally was. If I click + or - then the Achievements frame jumps back to where I set it with CFM.
Thanks,
Hiker
Interesting. I'll do work on an achievement and see if I can reproduce it. This is old behavior that started with my attempts to adjust the vehicle bar and should be fixed and prevented for everything.
EDIT: Created a ticket for this, please follow progress there. BTW, Hiker, I can't register "AchievementsFrame". Are you talking about the gold pop-up when you finish one?
EDIT2: Reproduced. See status on ticket.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
I'm filling in the x and y values and pressing enter. When I reopen the Achievements frame it is back where it originally was. If I click + or - then the Achievements frame jumps back to where I set it with CFM.
Sorry to anyone who has tried this with widescreen. My noobness didn't look too closely at fontstring anchors/positioning and didn't realize it worked differently than frames. The config frame should align correctly for EVERYONE as of r21.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
Update: I do plan to fix the bug when you exit a vehicle, unfortunately my comp's vid card died so I don't have access to my files atm. Soon as I my machine working I'll make the fix.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
r15
Profile swapping added. Temporarily as slash commands, I'll build the GUI for it later.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
Re: Any hope for single profile/copying profiles across toons?
Quote:
Originally posted by SmuvMoney I was messing with CFM last night. By default, it creates a profile per toon/character from what I can tell in the SavedVariables LUA for it. Would it be possible to create a universal profile or a way to copy one profile across characters? I did not see such an option, but I was just trying to move some things around (I admit that I could have missed it ). I realized this profile "issue" when I switched toons and had to do it again. Could this be added as a feature in the future. Keep up the excellent work.
Profile switching/copying has been something on my list for this since I first started. It'll be added here soon.
You can "ghetto" copy in the meantime by simply copy/pasting the settings under one character profile to the other until I get this function implemented.
EDIT: Also, next versions will be compressed again. Apparently my comp was missing it's apphelp.dll file which was preventing LuaSrcDiet (amongst other uber-erroring things) from doing it's thing. Got that fixed now.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
Any hope for single profile/copying profiles across toons?
I was messing with CFM last night. By default, it creates a profile per toon/character from what I can tell in the SavedVariables LUA for it. Would it be possible to create a universal profile or a way to copy one profile across characters? I did not see such an option, but I was just trying to move some things around (I admit that I could have missed it ). I realized this profile "issue" when I switched toons and had to do it again. Could this be added as a feature in the future. Keep up the excellent work.
Originally posted by goroth now just out of curiously, what do i have to do to make a complete switch from discord mods to this? im pretty sure i cant remove the library, duf and dart still use it. so do i just take some settings files out of the dfm folder, then delete the dfm folder? a small guide would be amazing =]
1) Log into WoW with both CFM and DFM active
2) Open DFM and locate the frames you want to transfer over. As noted in the SS, you will need the frame, the heading it's under and the profile that it's saved to.
3) Open CFM's import frame via "/cfm import"
4) Fill in the appropriate info into the fields and click the button
5) Lather, rinse, repeat for all your frames
6) After you have imported your data, you can simply disable or delete DFM/DFM Options from your AddOns folder
I know it's a bit tedious to have to do this one at a time, but with DFM's saved var format it makes it difficult for a mass import option. If there is way to do it easier, it's beyond my current knowledge.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
DFM settings are now able to be imported. Have fun goroth.
now just out of curiously, what do i have to do to make a complete switch from discord mods to this? im pretty sure i cant remove the library, duf and dart still use it. so do i just take some settings files out of the dfm folder, then delete the dfm folder? a small guide would be amazing =]
DFM settings are now able to be imported. Have fun goroth.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
Originally posted by goroth No credit goes to Lappen, however, as he's just a whiny bastard who hasn't done anything useful. Ever.
i lol'd
also, i posted this same question on the discord forums but i think theres a higher chance of you checking it here, so here it is
is there any way to import dfm settings into this? i have been using dfm literally since pre-tbc, well over 2 years of settings. i dont remember exaclty what ive done =\
Possibly, but nothing I can do at this point because my vid card decided to go blow up and can't afford a new one right now. So development is currently halted til I can get that replaced.
__________________ "Introduce a little anarchy. Upset the established order, and everything becomes chaos. I'm an agent of chaos. Oh, and you know the thing about chaos? It's fair!" -- The Joker
You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.
*Clicking the donate button above will take you to PayPal.com
*Clicking the donate button above will take you to Pledgie.com