lotrointerface.com
Search Downloads


Go Back   LoTROInterface > LotRO > Developer Discussions > Lua Programming Help (L)

Reply
Thread Tools Display Modes
  #11  
Unread 09-26-2010, 06:58 PM
Olenn's Avatar
Olenn Olenn is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 47
Wow, thanks. The only thing left is where to put;

Code:
Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", Data );
I know it goes in here somewhere;

Code:
	self.PositionChanged=function(sender,args)
		Data.x,Data.y=self:GetPosition()
	end
..and thanks for the help everyone, its much appreciated.

Last edited by Olenn : 09-26-2010 at 07:01 PM.
Reply With Quote
  #12  
Unread 09-26-2010, 07:12 PM
Digital_Utopia's Avatar
Digital_Utopia Digital_Utopia is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 207
Send a message via MSN to Digital_Utopia Send a message via Yahoo to Digital_Utopia
I'm going to help you cheat a bit here - but only because the original code that this was based off of was given to me by Pengoros

put this in your Main.lua script:

Code:
pluginName="myPluginsName";
window = Turbine.UI.Window();
window:SetWantsUpdates(true);
window.Update = function(sender,args)
	if (Plugins[pluginName] ~= nil) then
		Plugins[pluginName].Unload = function(self,sender,args)
			UnloadPlugin();
		end
		window:SetWantsUpdates(false);
	end
end
This will call a function called "UnloadPlugin()" when the plugin is being unloaded. This function would be a great place to put that PluginData.Save() line.
__________________

Lord of the Rings Online
75 Fourohfour | 75 Artemedis | 60 Whiskeytango Foxtrot | 50 Mistah Boombastic | 56 Appetizer | 25 Aggromi
61 Onepointtwentyone Gigawatts


World of Warcraft
90 Downlo 85 Gravetaxi 85 Ümad 85 Artemedis 85 Guthuros
Reply With Quote
  #13  
Unread 09-26-2010, 09:20 PM
Olenn's Avatar
Olenn Olenn is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 47
Thanks for all of the help. I did what you said and its not giving me an error but it isn't working either.

The end goal is that you could drag the window where ever you want it and when you start the game back up later it remembers its position. I really thought this would be as easy an writing to a file when you stopped dragging the window, but its definitely been an all day project trying to get this to work.

I believe that my problem now is simply getting the plugin to save the lwindows location data. Everything else seems to be working fine.

Here is the main.lua I have thus far.

Code:
import "Turbine.UI";
import "Turbine.UI.Lotro";
import "Turbine.Debug";

import "Olenn.Satchel";

satchelWindow = Olenn.Satchel.SatchelWindow();
satchelWindow:SetVisible( true );

settingsWindow = Olenn.Satchel.SettingsWindow();
settingsWindow:SetVisible( true );

Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack1, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack2, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack3, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack4, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack5, false );

satchelCommand = Turbine.ShellCommand();

function satchelCommand:Execute(cmd, args)
	if ( args == "show" ) then
		SatchelWindow:SetVisible( true );
	elseif ( args == "hide" ) then
		SatchelWindow:SetVisible( false );
	elseif ( args == "toggle" ) then
		SatchelWindow:SetVisible( not SatchelWindow:IsVisible() );
	elseif ( args ~= nil ) then
		satchelCommand:GetHelp();
	end
	
	pluginName="Satchel";
	window = Turbine.UI.Window();
	window:SetWantsUpdates(true);
	window.Update = function(sender,args)
	if (Plugins[pluginName] ~= nil) then
		Plugins[pluginName].Unload = function(self,sender,args)
			UnloadPlugin();
			Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", Data );
		end
		window:SetWantsUpdates(false);
	end
end
end


function satchelCommand:GetHelp()
	Turbine.Shell.WriteLine( "------------Satchel Commands------------");
	Turbine.Shell.WriteLine( "/satchel show: Display Satchel Window");
	Turbine.Shell.WriteLine( "/satchel hide: Hide Satchel Window");
	Turbine.Shell.WriteLine( "/satchel toggle: Toggle Satchel Window");
end

Turbine.Shell.AddCommand( "satchel", satchelCommand );
Reply With Quote
  #14  
Unread 09-27-2010, 06:52 AM
Kragenwar Kragenwar is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 26
I don't know if you did as Digitial Utopia suggested and declared Data in your satchel class as self.Data (since you only posted your main and didnt repost your Satchel class). But if you did, then when saving your data variable from your main you may need to go
Code:
Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", SatchelWindow.Data );
Alternatively you could also put the save line in the code where you write the position to data

Code:
----SAVE WINDOW POSITION----
	self.PositionChanged=function(sender,args)
		self.Data.x,self.Data.y=self:GetPosition()
		Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", self.Data );
	end
I haven't played with the unload code Digital Utopia posted, but I am going to take a guess that maybe your call to save needs to come before UnloadPlugin(); Just a guess tho
Code:
Plugins[pluginName].Unload = function(self,sender,args)
       Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", SatchelWindow.Data );			
       UnloadPlugin();
end
Also I noticed in your class code you posted earlier you also allow changing of size, which means you might want to save the size as well.

Last edited by Kragenwar : 09-27-2010 at 07:14 AM.
Reply With Quote
  #15  
Unread 09-27-2010, 11:17 AM
Olenn's Avatar
Olenn Olenn is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 47
You guys are awesome, but I think I am starting to get all of your advice mixed up. I am going to post both Lua scripts and see what you think. I am getting an error;

attempt to index Data a nil value

main.lua

Code:

import "Turbine.UI";
import "Turbine.UI.Lotro";
import "Turbine.Debug";

import "Olenn.Satchel";

satchelWindow = Olenn.Satchel.SatchelWindow();
satchelWindow:SetVisible( true );

settingsWindow = Olenn.Satchel.SettingsWindow();
settingsWindow:SetVisible( false );

Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack1, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack2, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack3, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack4, false );
Turbine.UI.Lotro.LotroUI.SetEnabled( Turbine.UI.Lotro.LotroUIElement.Backpack5, false );

satchelCommand = Turbine.ShellCommand();

function satchelCommand:Execute(cmd, args)
	if ( args == "show" ) then
		SatchelWindow:SetVisible( true );
	elseif ( args == "hide" ) then
		SatchelWindow:SetVisible( false );
	elseif ( args == "toggle" ) then
		SatchelWindow:SetVisible( not SatchelWindow:IsVisible() );
	elseif ( args ~= nil ) then
		satchelCommand:GetHelp();
	end
	
	pluginName="Satchel";
	window = Turbine.UI.Window();
	window:SetWantsUpdates(true);
	window.Update = function(sender,args)
	if (Plugins[pluginName] ~= nil) then
		Plugins[pluginName].Unload = function(self,sender,args)
			UnloadPlugin();
			Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", Data );
		end
		window:SetWantsUpdates(false);
	end
end
end




function satchelCommand:GetHelp()
	Turbine.Shell.WriteLine( "------------Satchel Commands------------");
	Turbine.Shell.WriteLine( "/satchel show: Display Satchel Window");
	Turbine.Shell.WriteLine( "/satchel hide: Hide Satchel Window");
	Turbine.Shell.WriteLine( "/satchel toggle: Toggle Satchel Window");
end

Turbine.Shell.AddCommand( "satchel", satchelCommand );
SatchelWindow.lua

Code:
import "Turbine";
import "Turbine.Gameplay";
import "Turbine.UI";
import "Turbine.UI.Extensions";
import "Turbine.UI.Lotro";
import "Turbine.Utils";
import "Olenn.Satchel"

SatchelWindow = class( Turbine.UI.Window );

function SatchelWindow:Constructor()
----CREATE THE WINDOW----
	Turbine.UI.Lotro.Window.Constructor( self );
	self:SetText("Satchel");
	self:SetSize( 325, 300 );
----LOAD PRIOR POSITION----
	self.Data = Turbine.PluginData.Load( Turbine.DataScope.Character,  "SatchelData")
    if (self.Data==nil)then 
		self:SetPosition(100 , 100);
    else
		self:SetPosition(self.Data.x,self.Data.y)
    end
----SAVE CURENT POSITION WHEN MOVED---
	self.PositionChanged=function(sender,args)
		self.Data.x,self.Data.y=self:GetPosition()
		Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", self.Data );
	end
----SATCHEL CLOSES WHEN ESC IS PRESSED----
	self:SetWantsKeyEvents( true );
	self.KeyDown = function( sender, args )
		if ( args.Action == Turbine.UI.Lotro.Action.Escape ) then
			sender:SetVisible( false ) 
		end
		
----MAKE BAG BUTTONS ON THE TOOLBAR OPEN SATCHEL----
		if ( args.Action == Turbine.UI.Lotro.Action.ToggleBags or
		     args.Action == Turbine.UI.Lotro.Action.ToggleBag1 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag2 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag3 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag4 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag5 )
		then
			sender:SetVisible( not sender:IsVisible() ) 
		end
	end
	
	local satchel = self;
	local mainWindow = self;
	
	self.itemListBoxScrollBar = Turbine.UI.Lotro.ScrollBar();
	self.itemListBoxScrollBar:SetOrientation( Turbine.UI.Orientation.Vertical );
	self.itemListBoxScrollBar:SetParent( self );

	self.itemListBox = Turbine.UI.ListBox();
	self.itemListBox:SetParent( self );
	self.itemListBox:SetOrientation( Turbine.UI.Orientation.Horizontal );
	self.itemListBox:SetVerticalScrollBar( self.itemListBoxScrollBar );
	self.itemListBox:SetAllowDrop( true );
	
	self.itemListBox.DragDrop = function( sender, args )
		local shortcut = args.DragDropInfo:GetShortcut();
		if ( shortcut ~= nil ) then
		  local destinationItemControl = self.itemListBox:GetItemAt( args.X, args.Y );
		  local destinationIndex = self.itemListBox:IndexOfItem( destinationItemControl );
		  self.backpack:PerformShortcutDrop( shortcut, destinationIndex, Turbine.UI.Control.IsShiftKeyDown() );
		end
	end
----MAKE WINDOW RESIZABLE----
	self.resizeHandle = Turbine.UI.Control();
	self.resizeHandle:SetParent( self );
	self.resizeHandle:SetZOrder( 100 );
	self.resizeHandle:SetSize( 20, 20 );
	self.resizeHandle:SetPosition( self:GetWidth() - self.resizeHandle:GetWidth(), self:GetHeight() - self.resizeHandle:GetHeight() );

	self.resizeHandle.MouseDown = function( sender, args )
		sender.dragStartX = args.X;
		sender.dragStartY = args.Y;
		sender.dragging = true;
	end

	self.resizeHandle.MouseMove = function( sender, args )
		local width, height = mainWindow:GetSize();

		if ( sender.dragging ) then
			mainWindow:SetSize( width + ( args.X - sender.dragStartX ), height + ( args.Y - sender.dragStartY ) );
			sender:SetPosition( mainWindow:GetWidth() - sender:GetWidth(), mainWindow:GetHeight() - sender:GetHeight() )
			satchel:PerformLayout()
		end
	end

	self.resizeHandle.MouseUp = function( sender, args )
		sender.dragging = false;
	end
----CREATE CONAINER FOR ITEMS----
	self.items = { };

	local player = Turbine.Gameplay.LocalPlayer();
	self.backpack = player:GetBackpack();

	self.backpack.SizeChanged = function( sender, args )
		satchel:Refresh();
	end

	self.backpack.ItemAdded = function( sender, args )
		satchel.items[args.Index]:SetItem( satchel.backpack:GetItem( args.Index ) );
	end

	self.backpack.ItemRemoved = function( sender, args )
		satchel.items[args.Index]:SetItem( satchel.backpack:GetItem( args.Index ) );
	end

	self.backpack.ItemMoved = function( sender, args )
		satchel.items[args.OldIndex]:SetItem( satchel.backpack:GetItem( args.OldIndex ) );
		satchel.items[args.NewIndex]:SetItem( satchel.backpack:GetItem( args.NewIndex ) );
	end

	self:Refresh();
	
----CREATE SETTINGS BUTTON----
	self.settingsButton = Turbine.UI.Lotro.Button();
	self.settingsButton:SetParent( self );

	self.settingsButton:SetSize(70,30);
	self.settingsButton:SetPosition(34, 37);
	self.settingsButton:SetFont(Turbine.UI.Lotro.Font.Verdana14);
	self.settingsButton:SetText("Settings");	
	self.settingsButton.Click = function(sender, args)
		settingsWindow:SetVisible( not SettingsWindow:IsVisible() );
	end
	
end

----FUNCTION TO REFRESH BAG CONTENTS----
function SatchelWindow:Refresh()
	local backpackSize = self.backpack:GetSize();

	for i = 1, backpackSize, 1 do
		if ( self.items[i] ) then
			self.items[i]:SetParent( nil );
		end
		
		self.items[i] = Turbine.UI.Lotro.ItemControl( self.backpack:GetItem( i ) );
		self.itemListBox:AddItem( self.items[i] );
	end

	self:PerformLayout();
end

function SatchelWindow:PerformLayout()
	self:Layout( { } )
end

function SatchelWindow:Layout( args )
	local width, height = self:GetSize();
	
	local itemWidth = 40;
	
	if ( self.items[1] ~= nil ) then
		itemWidth = self.items[1]:GetWidth()
	end

	local listWidth = width - 40;
	local listHeight = height - 75;
	local itemsPerRow = listWidth / itemWidth;

	self.itemListBox:SetPosition( 15, 60 );
	self.itemListBox:SetSize( listWidth, listHeight );
	self.itemListBox:SetMaxItemsPerLine( itemsPerRow );
	
	self.itemListBoxScrollBar:SetPosition( width - 25, 55 );
	self.itemListBoxScrollBar:SetSize( 10, listHeight );

end
Thanks for all of you help guys!

I have attached the plugin in its current state for Lua help only, it is not advised for use by the common user.
Attached Files
File Type: zip Satchel2.0_Alpha.zip (3.8 KB, 580 views)
Reply With Quote
  #16  
Unread 09-27-2010, 01:02 PM
Kragenwar Kragenwar is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 26
Quote:
Originally Posted by Olenn
You guys are awesome, but I think I am starting to get all of your advice mixed up. I am going to post both Lua scripts and see what you think. I am getting an error;

attempt to index Data a nil value
I see 2 potential problems, did the error mention what line was causing the issue? Off the top of my head the issue could be:

Here:
Code:
if (Plugins[pluginName] ~= nil) then
		Plugins[pluginName].Unload = function(self,sender,args)
			UnloadPlugin();
			Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", Data );
		end
		window:SetWantsUpdates(false);
	end
When referencing your Data variable from outside of the class you shoud be doing so via SatchelWindow.Data
Code:
Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", SatchelWindow.Data );


or the issue could possibly be here:
Code:
----SAVE CURENT POSITION WHEN MOVED---
	self.PositionChanged=function(sender,args)
		self.Data.x,self.Data.y=self:GetPosition()
		Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", self.Data );
You haven't declared data as a table. Not sure if that would make a difference or not (I am fairly new to lua). But you could try:

Code:
----LOAD PRIOR POSITION----
	self.Data = Turbine.PluginData.Load( Turbine.DataScope.Character,  "SatchelData")
    if (self.Data==nil)then
                self.Data = { };
                self.Data.x = 100;
                self.Data.y = 100;
		self:SetPosition(100 , 100);

    else
		self:SetPosition(self.Data.x,self.Data.y)
    end
Like I said, im fairly new to LUA so there may be a better place to declare Data as a table. But I am guessing the issue is because when first load it self.Data never gets declared as a table, so you get an error when you try to write to self.Data.x and self.Data.y.
Reply With Quote
  #17  
Unread 09-27-2010, 01:22 PM
Olenn's Avatar
Olenn Olenn is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 47
AWESOME!

That gives me tons to work with. It is now saving the position to the file, but when I click reload it still resets it to 100 x 100.

But at least I have something to work for.

Much appreciated everyone!
Reply With Quote
  #18  
Unread 09-27-2010, 01:35 PM
Kragenwar Kragenwar is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 26
Quote:
Originally Posted by Olenn
AWESOME!

That gives me tons to work with. It is now saving the position to the file, but when I click reload it still resets it to 100 x 100.

But at least I have something to work for.

Much appreciated everyone!
Thats fantastic. I have a feeling PositionChanged is not firing. You could try getting rid of
Code:
----SAVE CURENT POSITION WHEN MOVED---
	self.PositionChanged=function(sender,args)
		self.Data.x,self.Data.y=self:GetPosition()
		Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", self.Data );
	end
and then do this in your MouseUp Handler instead
Code:
self.resizeHandle.MouseUp = function( sender, args )
              if (sender.dragging) then
	            self.Data.x,self.Data.y=self:GetPosition();
              end	
              sender.dragging = false;
	end
That way you will be writing the new position to Data whenever the user releases the mouse after dragging, and saving the position to the settings file on unload.
Reply With Quote
  #19  
Unread 09-27-2010, 02:13 PM
Olenn's Avatar
Olenn Olenn is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 47
I tried to put that in place of

Code:
	self.PositionChanged=function(sender,args)
		self.Data.x,self.Data.y=self:GetPosition()
		Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", self.Data );
	end
but I keep getting this error;

...Rings Online\Plugins\Olenn\Satchel\SatchelWindow.lua:33: attempt to index field 'resizeHandle' (a nil value)

the odd part is that line 33 is just "end"
Reply With Quote
  #20  
Unread 09-27-2010, 02:45 PM
Kragenwar Kragenwar is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 26
Post

Quote:
Originally Posted by Olenn
I tried to put that in place of

Code:
	self.PositionChanged=function(sender,args)
		self.Data.x,self.Data.y=self:GetPosition()
		Turbine.PluginData.Save( Turbine.DataScope.Character, "Satchel", self.Data );
	end
but I keep getting this error;

...Rings Online\Plugins\Olenn\Satchel\SatchelWindow.lua:33: attempt to index field 'resizeHandle' (a nil value)

the odd part is that line 33 is just "end"
Yeah you shouldn't be replacing the self.PositionChanged part with the self.resizeHandle.MouseUp function. All you need to do is completlely remove the self.PositionChanged function. Then change your already existing self.resizeHandle.MouseUp by adding the line to set Data.x and Data.y. Here is the whole class with the change.

Code:
import "Turbine";
import "Turbine.Gameplay";
import "Turbine.UI";
import "Turbine.UI.Extensions";
import "Turbine.UI.Lotro";
import "Turbine.Utils";
import "Olenn.Satchel"

SatchelWindow = class( Turbine.UI.Window );

function SatchelWindow:Constructor()
----CREATE THE WINDOW----
	Turbine.UI.Lotro.Window.Constructor( self );
	self:SetText("Satchel");
	self:SetSize( 325, 300 );
----LOAD PRIOR POSITION----
	self.Data = Turbine.PluginData.Load( Turbine.DataScope.Character,  "SatchelData")
    if (self.Data==nil)then
		self.Data = { };
		self.Data.x = 100;
		self.Data.y = 100;
		self:SetPosition(100 , 100);
    else
		self:SetPosition(self.Data.x,self.Data.y)
    end

----SATCHEL CLOSES WHEN ESC IS PRESSED----
	self:SetWantsKeyEvents( true );
	self.KeyDown = function( sender, args )
		if ( args.Action == Turbine.UI.Lotro.Action.Escape ) then
			sender:SetVisible( false ) 
		end
		
----MAKE BAG BUTTONS ON THE TOOLBAR OPEN SATCHEL----
		if ( args.Action == Turbine.UI.Lotro.Action.ToggleBags or
		     args.Action == Turbine.UI.Lotro.Action.ToggleBag1 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag2 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag3 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag4 or
			 args.Action == Turbine.UI.Lotro.Action.ToggleBag5 )
		then
			sender:SetVisible( not sender:IsVisible() ) 
		end
	end
	
	local satchel = self;
	local mainWindow = self;
	
	self.itemListBoxScrollBar = Turbine.UI.Lotro.ScrollBar();
	self.itemListBoxScrollBar:SetOrientation( Turbine.UI.Orientation.Vertical );
	self.itemListBoxScrollBar:SetParent( self );

	self.itemListBox = Turbine.UI.ListBox();
	self.itemListBox:SetParent( self );
	self.itemListBox:SetOrientation( Turbine.UI.Orientation.Horizontal );
	self.itemListBox:SetVerticalScrollBar( self.itemListBoxScrollBar );
	self.itemListBox:SetAllowDrop( true );
	
	self.itemListBox.DragDrop = function( sender, args )
		local shortcut = args.DragDropInfo:GetShortcut();
		if ( shortcut ~= nil ) then
		  local destinationItemControl = self.itemListBox:GetItemAt( args.X, args.Y );
		  local destinationIndex = self.itemListBox:IndexOfItem( destinationItemControl );
		  self.backpack:PerformShortcutDrop( shortcut, destinationIndex, Turbine.UI.Control.IsShiftKeyDown() );
		end
	end
----MAKE WINDOW RESIZABLE----
	self.resizeHandle = Turbine.UI.Control();
	self.resizeHandle:SetParent( self );
	self.resizeHandle:SetZOrder( 100 );
	self.resizeHandle:SetSize( 20, 20 );
	self.resizeHandle:SetPosition( self:GetWidth() - self.resizeHandle:GetWidth(), self:GetHeight() - self.resizeHandle:GetHeight() );

	self.resizeHandle.MouseDown = function( sender, args )
		sender.dragStartX = args.X;
		sender.dragStartY = args.Y;
		sender.dragging = true;
	end

	self.resizeHandle.MouseMove = function( sender, args )
		local width, height = mainWindow:GetSize();

		if ( sender.dragging ) then
			mainWindow:SetSize( width + ( args.X - sender.dragStartX ), height + ( args.Y - sender.dragStartY ) );
			sender:SetPosition( mainWindow:GetWidth() - sender:GetWidth(), mainWindow:GetHeight() - sender:GetHeight() )
			satchel:PerformLayout()
		end
	end

	self.resizeHandle.MouseUp = function( sender, args )
		if (sender.dragging) then
			self.Data.x, self.Data.y = self:GetPosition();
		end
		sender.dragging = false;
	end
----CREATE CONAINER FOR ITEMS----
	self.items = { };

	local player = Turbine.Gameplay.LocalPlayer();
	self.backpack = player:GetBackpack();

	self.backpack.SizeChanged = function( sender, args )
		satchel:Refresh();
	end

	self.backpack.ItemAdded = function( sender, args )
		satchel.items[args.Index]:SetItem( satchel.backpack:GetItem( args.Index ) );
	end

	self.backpack.ItemRemoved = function( sender, args )
		satchel.items[args.Index]:SetItem( satchel.backpack:GetItem( args.Index ) );
	end

	self.backpack.ItemMoved = function( sender, args )
		satchel.items[args.OldIndex]:SetItem( satchel.backpack:GetItem( args.OldIndex ) );
		satchel.items[args.NewIndex]:SetItem( satchel.backpack:GetItem( args.NewIndex ) );
	end

	self:Refresh();
	
----CREATE SETTINGS BUTTON----
	self.settingsButton = Turbine.UI.Lotro.Button();
	self.settingsButton:SetParent( self );

	self.settingsButton:SetSize(70,30);
	self.settingsButton:SetPosition(34, 37);
	self.settingsButton:SetFont(Turbine.UI.Lotro.Font.Verdana14);
	self.settingsButton:SetText("Settings");	
	self.settingsButton.Click = function(sender, args)
		settingsWindow:SetVisible( not SettingsWindow:IsVisible() );
	end
	
end

----FUNCTION TO REFRESH BAG CONTENTS----
function SatchelWindow:Refresh()
	local backpackSize = self.backpack:GetSize();

	for i = 1, backpackSize, 1 do
		if ( self.items[i] ) then
			self.items[i]:SetParent( nil );
		end
		
		self.items[i] = Turbine.UI.Lotro.ItemControl( self.backpack:GetItem( i ) );
		self.itemListBox:AddItem( self.items[i] );
	end

	self:PerformLayout();
end

function SatchelWindow:PerformLayout()
	self:Layout( { } )
end

function SatchelWindow:Layout( args )
	local width, height = self:GetSize();
	
	local itemWidth = 40;
	
	if ( self.items[1] ~= nil ) then
		itemWidth = self.items[1]:GetWidth()
	end

	local listWidth = width - 40;
	local listHeight = height - 75;
	local itemsPerRow = listWidth / itemWidth;

	self.itemListBox:SetPosition( 15, 60 );
	self.itemListBox:SetSize( listWidth, listHeight );
	self.itemListBox:SetMaxItemsPerLine( itemsPerRow );
	
	self.itemListBoxScrollBar:SetPosition( width - 25, 55 );
	self.itemListBoxScrollBar:SetSize( 10, listHeight );

end
This should work unless I'm totally misunderstanding your code or what you are trying to do with it.

Last edited by Kragenwar : 09-27-2010 at 02:59 PM.
Reply With Quote
Reply


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
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Plugins Not Saving Settings Valdacil Interface Help (L) 13 09-10-2010 10:43 PM
Help me to position my xp bar please or to hide it Eili Interface Help (L) 6 06-29-2010 05:36 PM
position toolbar problems Bazzard XML modification help (L) 7 07-11-2007 02:08 AM
Saving UI Layout... Sythix Interface Help (L) 1 07-05-2007 11:15 PM
chat window not saving position... AstroCat Interface Help (L) 1 07-01-2007 11:12 AM


All times are GMT -5. The time now is 02:23 PM.


Our Network
EQInterface | EQ2Interface | Minion | WoWInterface | ESOUI | LoTROInterface | MMOUI | Swtorui