Home modules.gotpike.org
Username: Password: [Create Account]
[Forgot Password?]

Modules

ADT
Database
GTK2
GUI
IP
PiJAX
Public
Sql
Stdio
Subversion
System
Tools
Xosd
lua
v4l2
wx

Recent Changes

Public.Parser.XML2 1.50
Public.ZeroMQ 1.1
Public.Template.Mustache 1.0
Public.Protocols.XMPP 1.4
Sql.Provider.jdbc 1.0

Popular Downloads

Public.Parser.JSON2 1.0
Public.Parser.JSON 0.2
GTK2 2.23
Public.Web.FCGI 1.8
Public.Parser.XML2 1.48


Module Information
wx
Viewing contents of wx-0.5/menu.pike


class MenuApp
{
	inherit wx.App;
	
	int OnInit()
	{
		MenuFrame mainMenu=MenuFrame("Main Menu",
			([ "Office":([ 
				"WordProcessor":0,
				"Spreadsheet":0]),
			"Network":0, 
			"Util":0 ]) );
		mainMenu->Show(wx.TRUE);
		SetTopWindow(mainMenu);
	}
}

class MenuFrame
{
	inherit wx.Frame;
	array(mixed) itemActions; 
	void create(string title, mapping(string:mixed) items)
	{
		::create(0,-1,title);
		
		itemActions = allocate(sizeof(items));
		
		wx.BoxSizer sizer=wx.BoxSizer(wx.VERTICAL);
		wx.BoxSizer titleSizer=wx.BoxSizer(wx.HORIZONTAL);
		SetSizer(sizer);
		sizer->AddSizer(titleSizer);
		
		wx.CheckBox stick=wx.CheckBox(this_object(), -1, "");
		titleSizer->Add(stick);
		wx.Frame aux=wx.Frame(0,-1,"Aux");
		wx.StaticText b=wx.StaticText(aux, -1, title);
		b->Reparent(this_object());
		titleSizer->Add(b);
		
		string item;
		int i=0;
		foreach (indices(items), item) {
			write(sprintf("%s:%O\n",item,items[item]));
			wx.Button b=wx.Button(this_object(), 10000+i, item);
			sizer->Add(b);
			if (_typeof(([]))<= _typeof(items[item])) {
				write("x\n");
				itemActions[i]=MenuFrame(item,items[item]);
				Connect(10000+i,wx.EVT_COMMAND_BUTTON_CLICKED,this_object()->openSubMenu);
			} else
				itemActions[i]=items[item];
			i++; 
		}
		Fit();
	}
	void openSubMenu(wx.Event ev)
	{
		//wx.Point p=ClientToScreen(button->GetPosition());
		//p->
		itemActions[ev->GetId()-10000]->Show(wx.TRUE);
	}
}

void main()
{
	wx.implement_app(MenuApp);
}


gotpike.org | Copyright © 2004 - 2019 | Pike is a trademark of Department of Computer and Information Science, Linköping University