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"
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 =\
In the case of Xperl, as soon as it opens it's options panel it makes automatically applies it's own last known position of frames. Since CFM only does it's thing at reload/login, it's settings are overridden automatically. If you open CFM and change a setting, the frame will go to the last known position that CFM has stored.
It's basically a back and forth battle of saved vars based on when things are loaded/called. I could simply configure CFM to always check for frame position changes and "fix" it, but that would eat up a TON of cycles and memory to do so. I've made it a point to try and keep this light and clean as possible (yes, before someone comments, I know it's not optimal right now).
I hope that answers your question, as honestly I'm not exactly sure what you're asking.
As far as feature requests, you can post comments, but I prefer my portal. It's lonely and has yet to be used. Actually, it's also a lot easier to keep track of what people want and what I've completed/working on.
__________________ "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
Hmmm, let me ask this question then... is it any sort of command referencing the addon that will override the CFM settings or just those that call on it's frames for some type of adjustment using it's configuring?
Also, just to confirm you want feature requests sent to the portal correct? lol you know I was so bored tonight I got halfway through implementing my own requests to your addon WITH your addon... just some width and scaling simple stuff to allow an easier 'sped' up way of implenting and playing around with it in general ...
Quote:
Originally posted by ChaosInc Thanks! And PM's are competely acceptable if you don't wish to ask publicly for stuffs.
As far as the "frame reverting", you can see a perfect (and easy example) with XPerl.
1) Move the XPerl_Player frame with CFM
2) /xperl
3) See the frame snap back to XPerl's position settings
Been playing catchup with guild atm so haven't been working much on that feature yet. Soon...
Thanks! And PM's are competely acceptable if you don't wish to ask publicly for stuffs.
As far as the "frame reverting", you can see a perfect (and easy example) with XPerl.
1) Move the XPerl_Player frame with CFM
2) /xperl
3) See the frame snap back to XPerl's position settings
Been playing catchup with guild atm so haven't been working much on that feature yet. Soon...
__________________ "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
So far from what I can tell this does everything i need it too.... in fact too much so. I had fun intentionally totally hiding and discovering the different frames in this entire UI I use... and then ultimately screwing the whole end blizz parent world frame on purpose just to see how far I could go... lol.... like a kid with shape blocks to put in a matching shaped holes... cept a big hammer to do it with for the fun of smashing stuff up
Spent quite a few days recently but a lot of painful time overall trying to deal with always some frame here or there by default with blizz or someone elses or even my own UI's and just CAN'T FREAKIN DO IT BY WILL OF SOME HIGHER POWER ON A POWER TRIP!
So, this mod = EPIC win. It modifes everything litterally everything that I can tell so far. I've just picked random visable frames all over my UI and constantly added the underlying frame (well, technically "Parent" for everything till I kept getting back to the start... no issues yet.
... Lastly to the mod: FYI regarding the ability to have the settings and changes in this mod override permanantly any others it tweaks.... from my playing around so far and the elements in my UI ect it would seem that as long as the saved variables file in the WTF for CFM stays in there it's handling quite well acting as the 'final word' I guess you could say in it's adjustments... haven't had something 'revert' back just yet... even with trying a few basic ways of forcing it too like reloading the UI or even ALT F4 out of the game lol logging back in each time all fcked to hell like I made it.
You rawk... and seriously. I'm totally donating on payday... this must be maintained soley for my amusement and self destructive needs!
oO0o... this just might finally do the trick I'm after...
Btw, I actually read the ENTIRE mod description main page before saying to myself 'blah blah blah, there's the slash command kthxbai...' and only coming back when I broke something like i do often. Very entertaining read, and would have to agree with a lot of things said... I still gotta say that I do *love* my broker's on my bar... I'm a freakin lazy chicka I admit it :P
I have a question or two I'd like to ask you about a development feature your working on and an issue I'm having currently to see if this is going to rock my world but I'd rather not post sepcifics here in a public formum. Is sending a private message to you through this site acceptable? or is there another method you would prefer that I can do this?
Originally posted by Khirsanth Greetings, I was an avid follower of the discord mods when they were active. It's great to see dfm remade and available, however the one I really miss is dart. Do you have a connection to a rebuild of that?
On your mod I like its minimalism, and thanks for your effort
Edit: I found your reference to an external site with dart however I wonder if the same problems that plagued dfm are associated with it as well? I am code ignorant so I have no idea if its a mess in there or well updated.
Last I knew DART was still functional with band-aid fixes as well. Although not as customizable, there are a few alternate options available that are still being maintained:
__________________ "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
Greetings, I was an avid follower of the discord mods when they were active. It's great to see dfm remade and available, however the one I really miss is dart. Do you have a connection to a rebuild of that?
On your mod I like its minimalism, and thanks for your effort
Edit: I found your reference to an external site with dart however I wonder if the same problems that plagued dfm are associated with it as well? I am code ignorant so I have no idea if its a mess in there or well updated.
Last edited by Khirsanth : 05-24-2009 at 01:20 PM.
Originally posted by ChaosInc It's all laid out under "The Config Panel".
Actually, I do not see a description of what it does there. And the screenshot only shows a config panel. Looks like this thing changes the size and position of unitframes? Or of other stuff as well? Would it hurt to add 2 lines of description for those peeps that do not know DFM?
Reposted 1.1 with fix for line 22 error. Accidently used an old file on last update.
__________________ "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 Vranx Description of what the mod does?
It's all laid out under "The Config Panel".
__________________ "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
Grats on getting this off the ground, Chaos! I know you've been grinding hard on it for a while (I read the lua help posts, just don't understand them lol). If and when I ever decide to build a new ui, I'll be using this for the frames.
__________________
I don't want FOP, dammit! I'm a DAPPER DAN man!
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