r4892 - in trunk/data/qcsrc/menu: . nexuiz
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Oct 26 14:27:00 EDT 2008
Author: div0
Date: 2008-10-26 14:27:00 -0400 (Sun, 26 Oct 2008)
New Revision: 4892
Modified:
trunk/data/qcsrc/menu/menu.qc
trunk/data/qcsrc/menu/nexuiz/dialog_settings.c
trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
trunk/data/qcsrc/menu/nexuiz/mainwindow.c
trunk/data/qcsrc/menu/nexuiz/skinlist.c
Log:
improve skin selector
Modified: trunk/data/qcsrc/menu/menu.qc
===================================================================
--- trunk/data/qcsrc/menu/menu.qc 2008-10-26 17:08:59 UTC (rev 4891)
+++ trunk/data/qcsrc/menu/menu.qc 2008-10-26 18:27:00 UTC (rev 4892)
@@ -408,6 +408,33 @@
}
};
+void m_activate_window(entity wnd)
+{
+ entity par;
+ par = wnd.parent;
+ if(par)
+ m_activate_window(par);
+
+ if(par.instanceOfModalController)
+ {
+ // tabs
+ par.initializeDialog(par, wnd);
+ }
+ else if(par.instanceOfNexposee)
+ {
+ // nexposee (sorry for violating abstraction here)
+ par.selectedChild = wnd;
+ par.animationState = 1;
+ setFocusContainer(par, NULL);
+ }
+ else if(par.instanceOfContainer)
+ {
+ // other containers
+ if(par.focused)
+ par.setFocus(par, wnd);
+ }
+}
+
void(string itemname) m_goto =
{
entity e;
@@ -419,17 +446,17 @@
m_hide();
else
{
- main.initializeDialog(main, main.firstChild);
+ m_activate_window(main.mainNexposee);
m_display();
}
}
else
{
e = findstring(NULL, name, itemname);
- if(e && e.parent == main)
+ if(e)
{
m_hide();
- main.initializeDialog(main, e);
+ m_activate_window(e);
m_display();
}
}
@@ -440,8 +467,5 @@
if(!menuInitialized)
return;
// TODO add code to switch back to the skin selector (no idea how to do it now)
- m_hide();
- //main.initializeDialog(main, main.firstChild);
- //main.firstChild.setFocus(main.firstChild, findstring(NULL, name, "__skinselect_window"));
- m_display();
+ m_goto("skinselector");
}
Modified: trunk/data/qcsrc/menu/nexuiz/dialog_settings.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_settings.c 2008-10-26 17:08:59 UTC (rev 4891)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_settings.c 2008-10-26 18:27:00 UTC (rev 4892)
@@ -6,7 +6,6 @@
ATTRIB(NexuizSettingsDialog, intendedWidth, float, 0.96)
ATTRIB(NexuizSettingsDialog, rows, float, 17)
ATTRIB(NexuizSettingsDialog, columns, float, 6)
- ATTRIB(NexuizSettingsDialog, name, string, "__skinselect_window")
ENDCLASS(NexuizSettingsDialog)
#endif
Modified: trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c 2008-10-26 17:08:59 UTC (rev 4891)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c 2008-10-26 18:27:00 UTC (rev 4892)
@@ -5,7 +5,6 @@
ATTRIB(NexuizMiscSettingsTab, intendedWidth, float, 0.9)
ATTRIB(NexuizMiscSettingsTab, rows, float, 15)
ATTRIB(NexuizMiscSettingsTab, columns, float, 6.5)
-
ENDCLASS(NexuizMiscSettingsTab)
entity makeNexuizMiscSettingsTab();
#endif
@@ -28,16 +27,11 @@
me.TR(me);
me.TD(me, me.rows - 2, 3, sk = makeNexuizSkinList());
me.gotoRC(me, me.rows - 1, 0);
- me.TDempty(me, 0.5);
- me.TD(me, 1, 2, e = makeNexuizButton("Apply", '0 0 0'));
- e.onClick = setSkin;
+ me.TD(me, 1, 3, e = makeNexuizButton("Apply immediately", '0 0 0'));
+ e.onClick = SetSkin_Click;
e.onClickEntity = sk;
- me.TDempty(me, 0.5);
-
-
me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-
me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_autodemo", "Demo recording"));
me.TR(me);
me.TR(me);
@@ -58,7 +52,5 @@
me.TD(me, 1, 2.8/3, e = makeNexuizRadioButton(1, "showspeed", "3", "km/h"));
me.TD(me, 1, 2.8/3, e = makeNexuizRadioButton(1, "showspeed", "4", "mph"));
me.TD(me, 1, 2.8/3, e = makeNexuizRadioButton(1, "showspeed", "5", "knots"));
-
-
}
#endif
Modified: trunk/data/qcsrc/menu/nexuiz/mainwindow.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/mainwindow.c 2008-10-26 17:08:59 UTC (rev 4891)
+++ trunk/data/qcsrc/menu/nexuiz/mainwindow.c 2008-10-26 18:27:00 UTC (rev 4892)
@@ -7,6 +7,7 @@
ATTRIB(MainWindow, userbindEditDialog, entity, NULL)
ATTRIB(MainWindow, winnerDialog, entity, NULL)
ATTRIB(MainWindow, radarDialog, entity, NULL)
+ ATTRIB(MainWindow, mainNexposee, entity, NULL)
ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
ENDCLASS(MainWindow)
#endif
@@ -53,7 +54,7 @@
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
- n = spawnNexuizNexposee();
+ me.mainNexposee = n = spawnNexuizNexposee();
/*
if(checkextension("DP_GECKO_SUPPORT"))
{
Modified: trunk/data/qcsrc/menu/nexuiz/skinlist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/skinlist.c 2008-10-26 17:08:59 UTC (rev 4891)
+++ trunk/data/qcsrc/menu/nexuiz/skinlist.c 2008-10-26 18:27:00 UTC (rev 4892)
@@ -2,27 +2,34 @@
CLASS(NexuizSkinList) EXTENDS(NexuizListBox)
METHOD(NexuizSkinList, configureNexuizSkinList, void(entity))
ATTRIB(NexuizSkinList, rowsPerItem, float, 4)
- METHOD(NexuizMapList, resizeNotify, void(entity, vector, vector, vector, vector))
- METHOD(NexuizSkinList, draw, void(entity))
+ METHOD(NexuizSkinList, resizeNotify, void(entity, vector, vector, vector, vector))
METHOD(NexuizSkinList, drawListBoxItem, void(entity, float, vector, float))
METHOD(NexuizSkinList, getSkins, void(entity))
+ METHOD(NexuizSkinList, setSkin, void(entity))
+ METHOD(NexuizSkinList, loadCvars, void(entity))
+ METHOD(NexuizSkinList, saveCvars, void(entity))
+ METHOD(NexuizSkinList, skinName, string(entity, float))
+ METHOD(NexuizSkinList, clickListBoxItem, void(entity, float, vector))
+ METHOD(NexuizSkinList, keyDown, float(entity, float, float, float))
- ATTRIB(NexuizSkinList, currentskin, string, "")
- ATTRIB(NexuizSkinList, skinlist, string, "")
+ ATTRIB(NexuizSkinList, skinlist, float, -1)
ATTRIB(NexuizSkinList, realFontSize, vector, '0 0 0')
ATTRIB(NexuizSkinList, columnPreviewOrigin, float, 0)
ATTRIB(NexuizSkinList, columnPreviewSize, float, 0)
ATTRIB(NexuizSkinList, columnNameOrigin, float, 0)
ATTRIB(NexuizSkinList, columnNameSize, float, 0)
- ATTRIB(NexuizSkinList, checkMarkOrigin, vector, '0 0 0')
- ATTRIB(NexuizSkinList, checkMarkSize, vector, '0 0 0')
- ATTRIB(NexuizSkinList, realUpperMargin1, float, 0)
+ ATTRIB(NexuizSkinList, realUpperMargin, float, 0)
ATTRIB(NexuizSkinList, origin, vector, '0 0 0')
ATTRIB(NexuizSkinList, itemAbsSize, vector, '0 0 0')
+
+ ATTRIB(NexuizSkinList, lastClickedSkin, float, -1)
+ ATTRIB(NexuizSkinList, lastClickedTime, float, 0)
+
+ ATTRIB(NexuizMiscSettingsTab, name, string, "skinselector")
ENDCLASS(NexuizSkinList)
entity makeNexuizSkinList();
-void setSkin(entity btn, entity me);
+void SetSkin_Click(entity btn, entity me);
#endif
#ifdef IMPLEMENTATION
@@ -39,30 +46,44 @@
{
me.configureNexuizListBox(me);
me.getSkins(me);
- me.currentskin = strzone(cvar_string("menu_skin"));
+ me.loadCvars(me);
}
-void getSkinsNexuizSkinList(entity me)
+void loadCvarsNexuizSkinList(entity me)
{
- float glob,i;
- string s,_skinlist;
-
- glob = search_begin("gfx/menu/*/skinvalues.txt", TRUE, TRUE);
- if(glob < 0)
- return;
- for (i=0 ; i < search_getsize(glob) ; ++i)
+ string s;
+ float i, n;
+ s = cvar_string("menu_skin");
+ n = me.nItems;
+ for(i = 0; i < n; ++i)
{
- s=search_getfilename(glob, i);
- // s contain gfx/menu/skinname/skinvalues.txt
- if ( tokenizebyseparator(s, "/") == 4 )
- // add skinname to _skinlist, manage skinname with separates words
- _skinlist=strcat(_skinlist, "\"", argv(2), "\"", " ");
+ if(me.skinName(me, i) == s)
+ {
+ me.selectedItem = i;
+ break;
+ }
}
+}
- me.nItems = i;
- me.skinlist = strzone(_skinlist);
+void saveCvarsNexuizSkinList(entity me)
+{
+ cvar_set("menu_skin", me.skinName(me, me.selectedItem));
+}
+
+string skinNameNexuizSkinList(entity me, float i)
+{
+ string s;
+ s = search_getfilename(me.skinlist, i);
+ s = substring(s, 9, strlen(s) - 9 - 15); // gfx/menu/, skinvalues.txt
+ return s;
+}
+
+void getSkinsNexuizSkinList(entity me)
+{
+ float glob,i;
- search_end(glob);
+ me.skinlist = search_begin("gfx/menu/*/skinvalues.txt", TRUE, TRUE);
+ me.nItems = search_getsize(me.skinlist);
}
void resizeNotifyNexuizSkinList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
@@ -73,58 +94,60 @@
me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
- me.realUpperMargin1 = 0.5 * (1 - 2.5 * me.realFontSize_y);
- me.realUpperMargin2 = me.realUpperMargin1 + 1.5 * me.realFontSize_y;
+ me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
me.columnPreviewOrigin = 0;
me.columnPreviewSize = me.itemAbsSize_y / me.itemAbsSize_x * 4 / 3;
me.columnNameOrigin = me.columnPreviewOrigin + me.columnPreviewSize + me.realFontSize_x;
me.columnNameSize = 1 - me.columnPreviewSize - 2 * me.realFontSize_x;
-
- me.checkMarkSize = (eX * (me.itemAbsSize_y / me.itemAbsSize_x) + eY) * 0.5;
- me.checkMarkOrigin = eY + eX * (me.columnPreviewOrigin + me.columnPreviewSize) - me.checkMarkSize;
}
-void drawNexuizSkinList(entity me)
-{
- drawListBox(me);
-}
-
void drawListBoxItemNexuizSkinList(entity me, float i, vector absSize, float isSelected)
{
-
string s;
float theAlpha;
- tokenize_sane(me.skinlist);
-
if(isSelected)
draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
- if( me.currentskin == argv(i) )
- draw_Fill('0 0 0', '1 1 0', SKINCOLOR_MAPLIST_INCLUDEDBG, SKINALPHA_MAPLIST_INCLUDEDBG);
-
- theAlpha = SKINALPHA_MAPLIST_INCLUDEDFG;
-
- draw_Picture(me.columnPreviewOrigin * eX, strcat("/gfx/menu/", argv(i), "/skinpreview"), me.columnPreviewSize * eX + eY, '1 1 1', theAlpha);
+ s = me.skinName(me, i);
+ draw_Picture(me.columnPreviewOrigin * eX, strcat("/gfx/menu/", s, "/skinpreview"), me.columnPreviewSize * eX + eY, '1 1 1', 1);
- s = draw_TextShortenToWidth(argv(i), me.columnNameSize / me.realFontSize_x, 0);
- draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0) * me.realFontSize_x)) * eX, s, me.realFontSize, SKINCOLOR_MAPLIST_TITLE, theAlpha, 0);
-
+ s = draw_TextShortenToWidth(s, me.columnNameSize / me.realFontSize_x, 0);
+ draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0) * me.realFontSize_x)) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
}
-void setSkin(entity btn, entity me)
+void setSkinNexuizSkinList(entity me)
{
- float i;
-
- i = me.selectedItem;
-
- if(i >= me.nItems || i < 0)
- return;
-
- tokenize_sane(me.skinlist);
- cvar_set("menu_skin", argv(i));
- localcmd("\nmenu_restart\ntogglemenu\ndefer 1 \"menu_cmd skinselect\"\n");
+ me.saveCvars(me);
+ localcmd("\nmenu_restart\ntogglemenu\ndefer 0.1 \"menu_cmd skinselect\"\n");
+}
+void SetSkin_Click(entity btn, entity me)
+{
+ me.setSkin(me);
}
+
+void clickListBoxItemNexuizSkinList(entity me, float i, vector where)
+{
+ if(i == me.lastClickedSkin)
+ if(time < me.lastClickedTime + 0.3)
+ {
+ // DOUBLE CLICK!
+ me.setSelected(me, i);
+ me.setSkin(me);
+ }
+ me.lastClickedSkin = i;
+ me.lastClickedTime = time;
+}
+
+float keyDownNexuizSkinList(entity me, float scan, float ascii, float shift)
+{
+ if(scan == K_ENTER) {
+ me.setSkin(me);
+ return 1;
+ }
+ else
+ return keyDownListBox(me, scan, ascii, shift);
+}
#endif
More information about the nexuiz-commits
mailing list