r3064 - in trunk/data/qcsrc/menu-div0test: . nexuiz
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Dec 31 08:04:39 EST 2007
Author: div0
Date: 2007-12-31 08:04:38 -0500 (Mon, 31 Dec 2007)
New Revision: 3064
Added:
trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input_userbind.c
Modified:
trunk/data/qcsrc/menu-div0test/classes.c
trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input.c
trunk/data/qcsrc/menu-div0test/nexuiz/keybinder.c
trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c
trunk/data/qcsrc/menu-div0test/skin.qh
Log:
editor for user defined key binds now works
Modified: trunk/data/qcsrc/menu-div0test/classes.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/classes.c 2007-12-31 12:22:13 UTC (rev 3063)
+++ trunk/data/qcsrc/menu-div0test/classes.c 2007-12-31 13:04:38 UTC (rev 3064)
@@ -56,3 +56,4 @@
#include "nexuiz/charmap.c"
#include "nexuiz/keybinder.c"
#include "nexuiz/dialog_settings_input.c"
+#include "nexuiz/dialog_settings_input_userbind.c"
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input.c 2007-12-31 12:22:13 UTC (rev 3063)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input.c 2007-12-31 13:04:38 UTC (rev 3064)
@@ -28,10 +28,16 @@
me.TD(me, me.rows - 2, 3, kb = makeNexuizKeyBinder());
me.gotoXY(me, me.rows - 1, 0);
me.TR(me);
- me.TD(me, 1, 1.5, e = makeNexuizButton("Change...", '0 0 0'));
+ me.TD(me, 1, 1, e = makeNexuizButton("Change key...", '0 0 0'));
e.onClick = KeyBinder_Bind_Change;
e.onClickEntity = kb;
- me.TD(me, 1, 1.5, e = makeNexuizButton("Clear", '0 0 0'));
+ me.TD(me, 1, 1, e = makeNexuizButton("Edit...", '0 0 0'));
+ e.onClick = KeyBinder_Bind_Edit;
+ e.onClickEntity = kb;
+ kb.userbindEditButton = e;
+ kb.userbindEditDialog = main.userbindEditDialog;
+ main.userbindEditDialog.keybindBox = kb;
+ me.TD(me, 1, 1, e = makeNexuizButton("Clear", '0 0 0'));
e.onClick = KeyBinder_Bind_Clear;
e.onClickEntity = kb;
Added: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input_userbind.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input_userbind.c (rev 0)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_input_userbind.c 2007-12-31 13:04:38 UTC (rev 3064)
@@ -0,0 +1,55 @@
+#ifdef INTERFACE
+CLASS(NexuizUserbindEditDialog) EXTENDS(NexuizDialog)
+ METHOD(NexuizUserbindEditDialog, loadUserBind, void(entity, string, string, string))
+ METHOD(NexuizUserbindEditDialog, fill, void(entity))
+ ATTRIB(NexuizUserbindEditDialog, title, string, "User defined key bind")
+ ATTRIB(NexuizUserbindEditDialog, color, vector, SKINCOLOR_DIALOG_USERBIND)
+ ATTRIB(NexuizUserbindEditDialog, intendedWidth, float, 0.7)
+ ATTRIB(NexuizUserbindEditDialog, rows, float, 4)
+ ATTRIB(NexuizUserbindEditDialog, columns, float, 3)
+ ATTRIB(NexuizUserbindEditDialog, keybindBox, entity, NULL)
+
+ ATTRIB(NexuizUserbindEditDialog, nameBox, entity, NULL)
+ ATTRIB(NexuizUserbindEditDialog, commandPressBox, entity, NULL)
+ ATTRIB(NexuizUserbindEditDialog, commandReleaseBox, entity, NULL)
+ENDCLASS(NexuizUserbindEditDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void NexuizUserbindEditDialog_Save(entity btn, entity me)
+{
+ me.keybindBox.editUserbind(me.keybindBox, me.nameBox.text, me.commandPressBox.text, me.commandReleaseBox.text);
+ Dialog_Close(btn, me);
+}
+
+void loadUserBindNexuizUserbindEditDialog(entity me, string theName, string theCommandPress, string theCommandRelease)
+{
+ me.nameBox.setText(me.nameBox, theName);
+ me.nameBox.keyDown(me.nameBox, K_END, 0, 0);
+ me.commandPressBox.setText(me.commandPressBox, theCommandPress);
+ me.nameBox.keyDown(me.commandPressBox, K_END, 0, 0);
+ me.commandReleaseBox.setText(me.commandReleaseBox, theCommandRelease);
+ me.nameBox.keyDown(me.commandReleaseBox, K_END, 0, 0);
+}
+
+void fillNexuizUserbindEditDialog(entity me)
+{
+ entity e;
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Name:"));
+ me.TD(me, 1, me.columns - 1, me.nameBox = makeNexuizInputBox(0, string_null));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Command when pressed:"));
+ me.TD(me, 1, me.columns - 1, me.commandPressBox = makeNexuizInputBox(0, string_null));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Command when released:"));
+ me.TD(me, 1, me.columns - 1, me.commandReleaseBox = makeNexuizInputBox(0, string_null));
+ me.TR(me);
+ me.TD(me, 1, me.columns / 2, e = makeNexuizButton("Save", '0 0 0'));
+ e.onClick = NexuizUserbindEditDialog_Save;
+ e.onClickEntity = me;
+ me.TD(me, 1, me.columns / 2, e = makeNexuizButton("Cancel", '0 0 0'));
+ e.onClick = Dialog_Close;
+ e.onClickEntity = me;
+}
+#endif
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/keybinder.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/keybinder.c 2007-12-31 12:22:13 UTC (rev 3063)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/keybinder.c 2007-12-31 13:04:38 UTC (rev 3064)
@@ -20,10 +20,14 @@
ATTRIB(NexuizKeyBinder, lastClickedTime, float, 0)
ATTRIB(NexuizKeyBinder, previouslySelected, float, -1)
ATTRIB(NexuizKeyBinder, inMouseHandler, float, 0)
+ ATTRIB(NexuizKeyBinder, userbindEditButton, entity, NULL)
+ ATTRIB(NexuizKeyBinder, userbindEditDialog, entity, NULL)
+ METHOD(NexuizKeyBinder, editUserbind, void(entity, string, string, string))
ENDCLASS(NexuizKeyBinder)
entity makeNexuizKeyBinder();
void KeyBinder_Bind_Change(entity btn, entity me);
void KeyBinder_Bind_Clear(entity btn, entity me);
+void KeyBinder_Bind_Edit(entity btn, entity me);
#endif
#ifdef IMPLEMENTATION
@@ -82,6 +86,9 @@
me.columnKeysSize = me.realFontSize_x * 12;
me.columnFunctionSize = 1 - me.columnKeysSize - 2 * me.realFontSize_x;
me.columnKeysOrigin = me.columnFunctionOrigin + me.columnFunctionSize + me.realFontSize_x;
+
+ if(me.userbindEditButton)
+ me.userbindEditButton.disabled = (substring(Nexuiz_KeyBinds_Descriptions[me.selectedItem], 0, 1) != "$");
}
void KeyBinder_Bind_Change(entity btn, entity me)
{
@@ -124,6 +131,48 @@
}
localcmd("\nbind \"", keynumtostring(key), "\" \"", func, "\"\n");
}
+void editUserbindNexuizKeyBinder(entity me, string theName, string theCommandPress, string theCommandRelease)
+{
+ string func, descr;
+
+ if(!me.userbindEditDialog)
+ return;
+
+ func = Nexuiz_KeyBinds_Functions[me.selectedItem];
+ if(func == "")
+ return;
+
+ descr = Nexuiz_KeyBinds_Descriptions[me.selectedItem];
+ if(substring(descr, 0, 1) != "$")
+ return;
+ descr = substring(descr, 1, strlen(descr) - 1);
+
+ // Hooray! It IS a user bind!
+ cvar_set(strcat(descr, "_description"), theName);
+ cvar_set(strcat(descr, "_press"), theCommandPress);
+ cvar_set(strcat(descr, "_release"), theCommandRelease);
+}
+void KeyBinder_Bind_Edit(entity btn, entity me)
+{
+ string func, descr;
+
+ if(!me.userbindEditDialog)
+ return;
+
+ func = Nexuiz_KeyBinds_Functions[me.selectedItem];
+ if(func == "")
+ return;
+
+ descr = Nexuiz_KeyBinds_Descriptions[me.selectedItem];
+ if(substring(descr, 0, 1) != "$")
+ return;
+ descr = substring(descr, 1, strlen(descr) - 1);
+
+ // Hooray! It IS a user bind!
+ me.userbindEditDialog.loadUserBind(me.userbindEditDialog, cvar_string(strcat(descr, "_description")), cvar_string(strcat(descr, "_press")), cvar_string(strcat(descr, "_release")));
+
+ DialogOpenButton_Click(btn, me.userbindEditDialog);
+}
void KeyBinder_Bind_Clear(entity btn, entity me)
{
float n, j, k;
@@ -175,6 +224,8 @@
}
if(Nexuiz_KeyBinds_Functions[i] != "")
me.previouslySelected = i;
+ if(me.userbindEditButton)
+ me.userbindEditButton.disabled = (substring(Nexuiz_KeyBinds_Descriptions[i], 0, 1) != "$");
setSelectedListBox(me, i);
}
float keyDownNexuizKeyBinder(entity me, float key, float ascii, float shift)
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c 2007-12-31 12:22:13 UTC (rev 3063)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c 2007-12-31 13:04:38 UTC (rev 3064)
@@ -3,6 +3,7 @@
METHOD(MainWindow, configureMainWindow, void(entity))
ATTRIB(MainWindow, mutatorsDialog, entity, NULL)
ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
+ ATTRIB(MainWindow, userbindEditDialog, entity, NULL)
ENDCLASS(MainWindow)
#endif
@@ -32,6 +33,10 @@
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, 1);
+ me.userbindEditDialog = i = spawnNexuizUserbindEditDialog();
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, 1);
+
n = spawnNexuizNexposee();
if(checkextension("DP_GECKO_SUPPORT"))
{
Modified: trunk/data/qcsrc/menu-div0test/skin.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/skin.qh 2007-12-31 12:22:13 UTC (rev 3063)
+++ trunk/data/qcsrc/menu-div0test/skin.qh 2007-12-31 13:04:38 UTC (rev 3064)
@@ -31,6 +31,7 @@
const vector SKINCOLOR_DIALOG_QUIT = '1 0 0';
const vector SKINCOLOR_DIALOG_MUTATORS = '0.7 0.7 1';
const vector SKINCOLOR_DIALOG_MAPINFO = '0.7 0.7 1';
+const vector SKINCOLOR_DIALOG_USERBIND = '0.7 0.7 1';
/* ideal for xaw skin:
const vector SKINCOLOR_DIALOG_MULTIPLAYER = '1 1 1';
const vector SKINCOLOR_DIALOG_SETTINGS = '1 1 1';
More information about the nexuiz-commits
mailing list