Minion Beta! - Help us test our new AddOn updater. Get it now!
Download
(27 Kb)
Download
Updated: 06-09-10 05:11 PM
Pictures
File Info
Updated:06-09-10 05:11 PM
Created:03-11-10 05:23 AM
Downloads:6,815
Favorites:15
MD5:

gMinimap  Popular! (More than 5000 hits)

Version: 1.11
by: Goldpaw [More]

A simple Minimap addon that reskins the Minimap and some other minor stuff. It does the same as several other addons. And yes, it's yet another square one.

What does it do?

  • Reskins the Minimap to a minimalistic square look.
  • Hides most of the clutter such as zoom buttons, world map button, etc etc
  • Will display icons for the Dungeon Finder, PvP- and Arena, Dungeon Difficulty, and the unread mail icon.


Where is the tracking menu? Calendar? Help!
  • Right-click to get the tracking menu
  • Middle-click to get the calendar
  • Left-click to ping the Minimap
  • The clock is controlled by the Blizzard menu. Hidden by default.


How can I configure it?
  • You can't. It has no options. I might add it in the future, but have no ETA on this.

1.1
- Coordinates now update once every 1/10 seconds using gLib's task scheduler
- Reduced the FrameStrata and increased the FrameLevel of the Minimap
- Removed the background of the clock and increased the font size
- The MinimapCluster now follows the Minimap at all times
- Now uses gLib's localization and event handlers
- Now uses gLib 2.4 and gMedia 2.x

1.095
- The Minimap now hides properly without leaving the black panel visible

1.094
- Coordinate plugin now uses a new timer routine, and should update every 1/10th second

1.093
- CharacterFrame, MailFrame and many more, should once again float towards the right instead of overlapping each other

1.092
- Changed the shade texture

1.091
- Added some extra functionality to retain sizes if gUI is installed

1.09
- Fixed the .toc version number
- Added shader effects

1.081
- gMedia updated, changed the input form of gMedia:panel()
- LFDSearchStatus now has a higher framestrata

1.08
- Reworked the order of thing to avoid some nil errors and taints
- Changed the scaling routines as gMedia now provides this for different UIscales

1.07
- Removed some duplicate entries

1.06
- Changed the code to work with recent changes to gMedia and gLib

1.05
- Unregisters events when no longer needed

1.04
- Fixed the CVar for "uiScale"

1.02
- Added an internal scaling feature to the borders, making them always 1px in size no matter the resolution and UIscale

1.01
- Added some brackets to a true/false check
Optional Files (0)


Archived Files (8)
File Name
Version
Size
Author
Date
1.1
27kB
Goldpaw
06-09-10 04:09 PM
1.095
582kB
Goldpaw
04-14-10 06:59 AM
1.093
562kB
Goldpaw
04-07-10 02:07 PM
1.092
561kB
Goldpaw
04-07-10 09:14 AM
1.08
337kB
Goldpaw
03-20-10 03:35 PM
1.02
328kB
Goldpaw
03-14-10 08:01 AM
1.01
325kB
Goldpaw
03-11-10 06:28 AM
1.0
325kB
Goldpaw
03-11-10 05:23 AM


Post A Reply Comment Options
Unread 03-21-10, 09:23 AM  
Tobbe8716
An Aku'mai Servant
 
Tobbe8716's Avatar
AddOn Author - Click to view AddOns

Forum posts: 36
File comments: 341
Uploads: 13
Originally posted by Goldpaw
This is the code I use to move the capturebars and objectives. They are treated differently by WoW, which is why the code has two parts. Extended UI Frames are capturebars, alwaysupframes are things like the score in battlegrounds.

Code:
	WorldFrame:HookScript("OnUpdate", function(self)
		WorldStateAlwaysUpFrame:ClearAllPoints();
		WorldStateAlwaysUpFrame:SetPoint("TOPLEFT", Minimap, "TOPRIGHT", 12, -12);
		local extendedUIShown = 0;
		local alwaysUpShown = 0;
		if NUM_ALWAYS_UP_UI_FRAMES > 0 then
			for i = 1, NUM_ALWAYS_UP_UI_FRAMES do
				local f = _G["AlwaysUpFrame"..i]
				if f then 
					if i == 1 then
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", Minimap, "TOPRIGHT", 12, -12);
					else
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", _G["AlwaysUpFrame"..i-1], "TOPLEFT", 0, - (_G["AlwaysUpFrame"..i-1]:GetHeight()));
					end
					alwaysUpShown = alwaysUpShown + 1;
				end
			end
		end
		if NUM_EXTENDED_UI_FRAMES > 0 then
			for  i = 1, NUM_EXTENDED_UI_FRAMES do
				local f = _G["WorldStateCaptureBar"..i];
				if f then
					if i == 1 then
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", ((alwaysUpShown > 0) and _G["AlwaysUpFrame"..alwaysUpShown]) or Minimap, (alwaysUpShown > 0) and "TOPLEFT" or "TOPRIGHT", (alwaysUpShown > 0) and -4 or 12, ((alwaysUpShown > 0) and -((_G["AlwaysUpFrame"..alwaysUpShown]:GetHeight())) ) or -12);
					else 
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", _G["WorldStateCaptureBar"..i-1], "TOPLEFT", 0, - (_G["WorldStateCaptureBar"..i-1]:GetHeight()));
					end
					extendedUIShown = extendedUIShown + 1;
				end
			end
		end
	end)

Here is what I use to change the position of the objective tracking:

Code:
	local screenHeight = tonumber(string.match(GetCVar("gxResolution"), "%d+x(%d+)"))
	local WatchFrameHolder = CreateFrame("Frame", nil, UIParent)
	WatchFrameHolder:SetHeight(screenHeight - (Minimap:GetHeight() + ChatFrame1:GetHeight() + 60 + UIPADDING*4))
	WatchFrameHolder:SetWidth(200)
	WatchFrameHolder:SetFrameStrata("HIGH"); 
	WatchFrameHolder:SetFrameLevel(1);
	WatchFrameHolder:ClearAllPoints();
	WatchFrameHolder:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", 0, - (Minimap:GetHeight() + 60 + UIPADDING*4));
	WatchFrameHolder:HookScript("OnUpdate", function()
		WatchFrameHolder:ClearAllPoints();
		WatchFrameHolder:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", - UIPADDING, -(Minimap:GetHeight() + 30 + UIPADDING*2));
	end)

	WatchFrame:SetScale(0.9)
	WatchFrame:SetClampedToScreen(true);
	WatchFrame:SetParent(WatchFrameHolder);
	WatchFrame:ClearAllPoints();
	WatchFrame:SetPoint("TOPLEFT", WatchFrameHolder, "TOPLEFT", 30, 0)
	WatchFrame:SetPoint("BOTTOMRIGHT", WatchFrameHolder, "BOTTOMRIGHT", 0, 0)

	WatchFrame.ClearAllPoints = function() end;
	WatchFrame.SetPoint = function() end;
	WatchFrame.SetAllPoints = function() end;
Objective tracking is tricky since it keep popping, but connecting/enslaving it to another frame like done here, solves that problem. And it's the position of the WatchFrameHolder frame I've created that sets where the objective tracking will appear. The "real" watchframe is just positioned within our new frame.
Thanks! Worked like a charm just alter some small stuff and they are where I want them now
__________________
Arp UI oUF_Arp
Tobbe8716 is offline Report comment to moderator  
Reply With Quote
Unread 03-21-10, 07:10 AM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
Re: Cluster problem

Originally posted by Tobbe8716
[b]First of all, not using the newest verion tho I copied in the cluster lines but I dont know if this is due to that or something you didnt account for
Yeah, the cluster part was to position the MinimapCluster at the same place our Minimap is. A lot of UI stuff is positioned relative to the cluster by default.

Moving the cluster was one of those things I dodged a long time, since my own UI moves everything separately anyway.

I will probably at some point in time include the code to move the WatchFrame and CaptureBars, durability frame and all that in gMinimap, but it is not currently my highest priority.
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-21-10, 07:03 AM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
This is the code I use to move the capturebars and objectives. They are treated differently by WoW, which is why the code has two parts. Extended UI Frames are capturebars, alwaysupframes are things like the score in battlegrounds.

Code:
	WorldFrame:HookScript("OnUpdate", function(self)
		WorldStateAlwaysUpFrame:ClearAllPoints();
		WorldStateAlwaysUpFrame:SetPoint("TOPLEFT", Minimap, "TOPRIGHT", 12, -12);
		local extendedUIShown = 0;
		local alwaysUpShown = 0;
		if NUM_ALWAYS_UP_UI_FRAMES > 0 then
			for i = 1, NUM_ALWAYS_UP_UI_FRAMES do
				local f = _G["AlwaysUpFrame"..i]
				if f then 
					if i == 1 then
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", Minimap, "TOPRIGHT", 12, -12);
					else
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", _G["AlwaysUpFrame"..i-1], "TOPLEFT", 0, - (_G["AlwaysUpFrame"..i-1]:GetHeight()));
					end
					alwaysUpShown = alwaysUpShown + 1;
				end
			end
		end
		if NUM_EXTENDED_UI_FRAMES > 0 then
			for  i = 1, NUM_EXTENDED_UI_FRAMES do
				local f = _G["WorldStateCaptureBar"..i];
				if f then
					if i == 1 then
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", ((alwaysUpShown > 0) and _G["AlwaysUpFrame"..alwaysUpShown]) or Minimap, (alwaysUpShown > 0) and "TOPLEFT" or "TOPRIGHT", (alwaysUpShown > 0) and -4 or 12, ((alwaysUpShown > 0) and -((_G["AlwaysUpFrame"..alwaysUpShown]:GetHeight())) ) or -12);
					else 
						f:ClearAllPoints();
						f:SetPoint("TOPLEFT", _G["WorldStateCaptureBar"..i-1], "TOPLEFT", 0, - (_G["WorldStateCaptureBar"..i-1]:GetHeight()));
					end
					extendedUIShown = extendedUIShown + 1;
				end
			end
		end
	end)

Here is what I use to change the position of the objective tracking:

Code:
	local screenHeight = tonumber(string.match(GetCVar("gxResolution"), "%d+x(%d+)"))
	local WatchFrameHolder = CreateFrame("Frame", nil, UIParent)
	WatchFrameHolder:SetHeight(screenHeight - (Minimap:GetHeight() + ChatFrame1:GetHeight() + 60 + UIPADDING*4))
	WatchFrameHolder:SetWidth(200)
	WatchFrameHolder:SetFrameStrata("HIGH"); 
	WatchFrameHolder:SetFrameLevel(1);
	WatchFrameHolder:ClearAllPoints();
	WatchFrameHolder:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", 0, - (Minimap:GetHeight() + 60 + UIPADDING*4));
	WatchFrameHolder:HookScript("OnUpdate", function()
		WatchFrameHolder:ClearAllPoints();
		WatchFrameHolder:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", - UIPADDING, -(Minimap:GetHeight() + 30 + UIPADDING*2));
	end)

	WatchFrame:SetScale(0.9)
	WatchFrame:SetClampedToScreen(true);
	WatchFrame:SetParent(WatchFrameHolder);
	WatchFrame:ClearAllPoints();
	WatchFrame:SetPoint("TOPLEFT", WatchFrameHolder, "TOPLEFT", 30, 0)
	WatchFrame:SetPoint("BOTTOMRIGHT", WatchFrameHolder, "BOTTOMRIGHT", 0, 0)

	WatchFrame.ClearAllPoints = function() end;
	WatchFrame.SetPoint = function() end;
	WatchFrame.SetAllPoints = function() end;
Objective tracking is tricky since it keep popping, but connecting/enslaving it to another frame like done here, solves that problem. And it's the position of the WatchFrameHolder frame I've created that sets where the objective tracking will appear. The "real" watchframe is just positioned within our new frame.
Last edited by Goldpaw : 03-21-10 at 07:05 AM.
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-21-10, 03:39 AM  
Tobbe8716
An Aku'mai Servant
 
Tobbe8716's Avatar
AddOn Author - Click to view AddOns

Forum posts: 36
File comments: 341
Uploads: 13
Cluster problem

First of all, not using the newest verion tho I copied in the cluster lines but I dont know if this is due to that or something you didnt account for

Ive moved the cluster som due to Ive moved the minimap tho it did the same thing with your settings. It seem like it dont account for the capture bar from the start. Is there someway to split objecktives and capture bar or some little fix for this ? This is not a big problem tho if can be fixed I would appreciate it

Code:
MinimapCluster:SetPoint("CENTER", UIParent, "TOPLEFT", Minimap:GetWidth()/1.75 + MINIMAP_POSITION[4], -Minimap:GetHeight()/1.6 + MINIMAP_POSITION[5])



Edit: For some reason it pops down to the right place when I shapeshift to pops up again when shapeshifting outside a capture bar
__________________
Arp UI oUF_Arp
Last edited by Tobbe8716 : 03-21-10 at 05:41 AM.
Tobbe8716 is offline Report comment to moderator  
Reply With Quote
Unread 03-20-10, 08:31 PM  
seebs
Premium Member
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 155
File comments: 184
Uploads: 5
Originally posted by Goldpaw
Yeah, I'm using the build in Interface Options menu to add my own. But it's still "work", since they only give you a place to put the menu. You still have to make the window, the code, the lot. The blizzard menu just functions as a container for our own menus. Sort of like Blizzard saying; "ok, here's a nice room where you can put your stuff in. But you still have to make your stuff yourselves, we just gave you a room so people can easier find you".

But I'll add a menu, some settings can be nice to have the option to change. Like the size of the Minimap.... I've set it to have a nice size with the current UIscaling and screen I'm using. Might be nice for people to have a choice in the matter!
Hmm. I am trying to remember what addon... I was just messing with some addon, and I just added a little array of descriptors and poof, there was a new item in the addon preferences. I dunno if that was done by that addon or an embedded lib or by the blizzard stuff, though. Who Framed Watcher Wabbit, I believed.
seebs is offline Report comment to moderator  
Reply With Quote
Unread 03-16-10, 06:01 AM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
Originally posted by seebs
FWIW, the hugeness of the map is sorta awesome; it might make a good setting.

I don't understand settings much, but as I understand it, Blizzard created a really nice settings interface for standard addon setting widgets, which makes it a lot easier -- you don't have to do your own.

My first thought would be that you could probably do pretty well just allowing users to drag the map around, and anchoring it to the screen wherever they drag it. Make it a lock/unlock state of some sort.

(BTW, I'm in no position to point fingers on the semicolons, I tend to leave semicolons on the ends of lines in both lua and ruby.)

Regardless, I'm really liking the addon -- it's working very well for me. And thanks for the pointer about the standard interface option to turn off the clock, I don't think I'd ever noticed that.
Yeah, I'm using the build in Interface Options menu to add my own. But it's still "work", since they only give you a place to put the menu. You still have to make the window, the code, the lot. The blizzard menu just functions as a container for our own menus. Sort of like Blizzard saying; "ok, here's a nice room where you can put your stuff in. But you still have to make your stuff yourselves, we just gave you a room so people can easier find you".

But I'll add a menu, some settings can be nice to have the option to change. Like the size of the Minimap.... I've set it to have a nice size with the current UIscaling and screen I'm using. Might be nice for people to have a choice in the matter!
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-15-10, 10:37 PM  
seebs
Premium Member
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 155
File comments: 184
Uploads: 5
FWIW, the hugeness of the map is sorta awesome; it might make a good setting.

I don't understand settings much, but as I understand it, Blizzard created a really nice settings interface for standard addon setting widgets, which makes it a lot easier -- you don't have to do your own.

My first thought would be that you could probably do pretty well just allowing users to drag the map around, and anchoring it to the screen wherever they drag it. Make it a lock/unlock state of some sort.

(BTW, I'm in no position to point fingers on the semicolons, I tend to leave semicolons on the ends of lines in both lua and ruby.)

Regardless, I'm really liking the addon -- it's working very well for me. And thanks for the pointer about the standard interface option to turn off the clock, I don't think I'd ever noticed that.
seebs is offline Report comment to moderator  
Reply With Quote
Unread 03-15-10, 03:09 PM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
UIPADDING is a global variable I have created for most of my addons. It refers to the space I put between various UI elements like unit frames. The way I've set up my addons and UI, all the "minor" addons have these values to decide where and how to put stuff, but my main UI file overrides these with it's own values.

An example is the MINIMAP_POSITION table, which basically contains the values as to where the Minimap is positioned in my addons. My UI sets that up to place the Minimap on the top LEFT corner of the screen, and gMinimap doesn't change that value when it already exists before gMinimap is loaded.

Code:
local MINIMAP_POSITION = MINIMAP_POSITION or {"TOPLEFT", UIParent, "TOPLEFT", 26, -26}
What this little snippet does, is to say "ok, we're making a local value for this addon alone, that decides where to put the Minimap. Oh, and if that value already exist, we use that instead. But if it doesn't exist, we'll put the Minimap roughly 26 points away from the top left corner"

In other words, there is no UIPADDING nor MINIMAP_POSITION values in the default WoW API, they are just variables I use to store stuff in. And UIPADDING * 1.5 is my way of saying 12.

But yeah, totally "secure" way of changing the positioning you did there.
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-15-10, 02:06 PM  
Tobbe8716
An Aku'mai Servant
 
Tobbe8716's Avatar
AddOn Author - Click to view AddOns

Forum posts: 36
File comments: 341
Uploads: 13
Originally posted by Goldpaw
No ETA currently.

Anchoring these things to something is easy. Turning it into an addon is easy. (I've already done that, but haven't uploaded anything, since I guess around 0 people in the world would want my exact setup.) Allowing the users to move them around, or worse: choose for themselves what to anchor them to, now that's a load of work!

I'll have to decide what to include, and how to handle it. Should I give a few options of places these "movers" can be put? Or should I let the users freely move them wherever they want?

I'm guessing the latter is the better.
For me you could just put some cords in the lua anchored to the Minimap as default. And you can just move them around with the x and y cords to where ever you prefer

ex what i would probly have
Code:
"BOTTOM", Minimap, "BOTTOM", 0, -25
something

Tho I wouldnt mind if the capture bar and ojectives is where they are originaly aslong as they follow the map


Btw I dont know if you intended ppl to move your minimap but I made this change in the lua so I could move it more smoothly. And UIPADDING * 1.5 is that some other way of writing cords just? Didnt even know if it would work but it did

from
Code:
local MINIMAP_POSITION = MINIMAP_POSITION or {"TOPRIGHT", UIParent, "TOPRIGHT", -UIPADDING * 1.5, -UIPADDING * 1.5}
to
Code:
local MINIMAP_POSITION = MINIMAP_POSITION or {"TOPLEFT", UIParent, "TOPLEFT", 26, -26}
__________________
Arp UI oUF_Arp
Last edited by Tobbe8716 : 03-15-10 at 02:28 PM.
Tobbe8716 is offline Report comment to moderator  
Reply With Quote
Unread 03-15-10, 01:47 PM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
No ETA currently.

Anchoring these things to something is easy. Turning it into an addon is easy. (I've already done that, but haven't uploaded anything, since I guess around 0 people in the world would want my exact setup.) Allowing the users to move them around, or worse: choose for themselves what to anchor them to, now that's a load of work!

I'll have to decide what to include, and how to handle it. Should I give a few options of places these "movers" can be put? Or should I let the users freely move them wherever they want?

I'm guessing the latter is the better.
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-15-10, 09:53 AM  
Tobbe8716
An Aku'mai Servant
 
Tobbe8716's Avatar
AddOn Author - Click to view AddOns

Forum posts: 36
File comments: 341
Uploads: 13
Btw

Any eta on objectives and capture bar anchoring?

Edit:

Fixed it for the moment with move anything
__________________
Arp UI oUF_Arp
Last edited by Tobbe8716 : 03-15-10 at 10:55 AM.
Tobbe8716 is offline Report comment to moderator  
Reply With Quote
Unread 03-15-10, 06:34 AM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
Originally posted by Tobbe8716
Might I suggest just some simple digits for the clock maybe class coloured or just plain black
Yeah, my plan was to simply hide the timeframe background, and replace the font with something that matches the rest.
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-14-10, 04:09 PM  
Tobbe8716
An Aku'mai Servant
 
Tobbe8716's Avatar
AddOn Author - Click to view AddOns

Forum posts: 36
File comments: 341
Uploads: 13
Originally posted by Goldpaw


I will probably add a better looking timeframe, though, since a lot of people actually prefer to have to clock visible on the Minimap (weird, huh?).
Might I suggest just some simple digits for the clock maybe class coloured or just plain black
__________________
Arp UI oUF_Arp
Last edited by Tobbe8716 : 03-14-10 at 04:10 PM.
Tobbe8716 is offline Report comment to moderator  
Reply With Quote
Unread 03-14-10, 01:42 PM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
Originally posted by seebs
1. v.object:ClearAllPoints();
What can I say.... old habits from Java and C++ die hard, eh? It doesn't affect the addon, as it's "legal" to both end a line with or without it. It doesn't affect the performance neither.

Looks messy though, to have it some places, and some places not.
Goldpaw is offline Report comment to moderator  
Reply With Quote
Unread 03-14-10, 01:40 PM  
Goldpaw
A Cyclonian
 
Goldpaw's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 240
Uploads: 21
Originally posted by seebs

3. Although it has nothing to do with your code, as an experiment, I moved TimeManagerClockButton into the list of things to hide, but it didn't stay hidden. It seems as though something loading after your addon is re-showing it. (I don't want a clock button, 'cuz I already have one.)
To make sure it stays hidden, you should also move it into the table of things to remove the .show function for. Or even simpler; don't active it in the first place. It can be turned off from the normal Interface Options Menu, so as a rule I don't mess too much around with it.

I will probably add a better looking timeframe, though, since a lot of people actually prefer to have to clock visible on the Minimap (weird, huh?).
Goldpaw is offline Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

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.