Disallow certain characters in a wxTextCtrl
BlitzMax Forums/Brucey's Modules/Disallow certain characters in a wxTextCtrl
| ||
Is this feature already built in? can I like supply a string of characters that aren't allowed? Checked all the tutorials, didn't find anything... |
| ||
wxTextValidator looks like it might be useful to you. |
| ||
There's always someone who wants something I haven't finished :-p The biggest reason for not having implemented the validator stuff properly yet was because I was still unsure how to wrap some of it. Well, that's not entirely true... but it does implement some callbacks which are always a big pain to code. For example OnChar() is not implemented - which might be useful to some. However, wxTextValidator may work for you. Please let me know either way (if it works or not). Thanks :-) |
| ||
Not working (also tried wxFILTER_EXCLUDE_CHAR_LIST)... Ubuntu 8.04 ;( |
| ||
wxTextCtrl can take a validator as the last param :Method Create:wxTextCtrl(parent:wxWindow, id:Int, value:String = "", x:Int = -1, y:Int = -1, w:Int = -1, h:Int = -1, style:Int = 0, validator:wxValidator = Null) which might help? |
| ||
Hmm. I guess we need a simple example to test... |
| ||
Nope.. didn't work. and ' BlitzMax code generated with wxCodeGen v1.10 : 18 Aug 2008 16:45:19 ' ' ' PLEASE DO "NOT" EDIT THIS FILE! :D (jkjk) |
| ||
Okay... here's a test app - which currently doesn't work.SuperStrict Framework wx.wxApp Import wx.wxFrame Import wx.wxTextCtrl New MyApp.Run() Type MyApp Extends wxApp Method OnInit:Int() Local sim:Simple = Simple(New Simple.Create(Null, wxID_ANY, "Validator Test", -1, -1, 250, 150)) sim.Show(True) Return True End Method End Type Type Simple Extends wxFrame Field text:wxTextCtrl Field login_validator:wxTextValidator Method OnInit() text = New wxTextCtrl.Create(Self, -1) login_validator = New wxTextValidator.Create(wxFILTER_EXCLUDE_LIST) login_validator.SetExcludes(["a", "b"]) login_validator.SetWindow(text) Centre() End Method End Type |
| ||
Assuming that the excludes list is correct (?) it shouldn't allow "a" or "b" to be typed. Unless I'm missed the point somewhere? |
| ||
Assuming that the excludes list is correct (?) it shouldn't allow "a" or "b" to be typed. That's what I'm trying to do.. yes. |
| ||
Okay... I have a hack (um, I mean fix!)... Just need to tidy it up a tad... However, it seems that this : login_validator.SetWindow(text) just doesn't work... so you will need to do : text.SetValidator(login_validator) Will let you know when I've broken the repository ;-) |
| ||
Okay... this version works here now : Beeps (on Mac) when typing "a" or "b"... cool :-p Notes... I've completely rewritten the wxTextValidator, wxValidator, added wxWindow.SetValidator, and fixed wxTextCtrl and wxSearchCtrl to fit with the changes too. Rev 505. |
| ||
Rawr, changing wxWindow makes it recompile basically all wx mods! (still building) Anywho, now I reckon we can use the same validator for multiple controls? (hence ctrl.SetValidator(), instead of validator.SetWindow()) |
| ||
Well, SetWindow() doesn't seem to do anything (here on Mac). changing wxWindow makes it recompile basically all wx mods! Yeah... sorry about that ;-) But hey, if it works... it's a small price to pay! |
| ||
Weird, I can't use an already existing array, instead I have to pass the values in directly'Doesn't work Global glb_filterlist:String[] = ["~~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "{", "}", "|", "~q", ":", "<", ">", "?", "`", "[", "]", "\", ";", "'", ",", "/", "=", " "] login_validator.SetExcludes(glb_filterlist) 'Works login_validator.SetExcludes(["~~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "{", "}", "|", "~q", ":", "<", ">", "?", "`", "[", "]", "\", ";", "'", ",", "/", "=", " "]) EDIT: Other then that it works - though, with no ding, or something to notify the user (which leads into my needing for a ballon tip). |
| ||
You are right... same here on Mac... wonder what's going on there then? EDIT - Actually, it works fine for me here, I just had the Global in the wrong place... (it was never called) :-p |
| ||
it also dings here - but I'm guessing there that it uses whatever is platform default. What's the default on Linux? |
| ||
What's the default on Linux? What do you mean?I just turned on system beep and system sounds (they were both off) and it still ain't making noise. However, neither is the terminal when I hold down the backspace key.. as far as I can remember it did beep at you if you did that. EDIT: EDIT - Actually, it works fine for me here, I just had the Global in the wrong place... (it was never called) :-p Oh.. lol same here (works now, when I create it just before I set it).. BUT WAIT, why didn't it yell at me for it not being instanced? |
| ||
Oh, and don't forget the "£" :-) btw, wouldn't wxFILTER_ALPHANUMERIC be useful? |
| ||
BUT WAIT, why didn't it yell at me for it not being instanced? you'd need to ask Mr Sibly about that feature I'm afraid ;-) |
| ||
btw, wouldn't wxFILTER_ALPHANUMERIC be useful? Yep (EDIT: If I didn't want the user to be able to use a '.' in their account name).One more itch.. why don't we have to 'Import wx.wxTextValidator' for the example to work? |
| ||
Because wxTextCtrl imports it. Although, it actually probably should only be importing wxValidator - which wxWindow is already importing... Good question :-) |
| ||
btw, wouldn't wxFILTER_ALPHANUMERIC be useful? Yep (EDIT: If I didn't want the user to be able to use a '.' in their account name). That's an interesting case, if I set wxFILTER_ALPHANUMERIC, and try to do login_validator.SetIncludes(["."]) it doesn't work. With wxFILTER_INCLUDE_CHAR_LIST I can't enter in anything. With wxFILTER_INCLUDE_LIST I can enter everything but alphanumeric's (including '.') Would it be possible to add in that feature? |
| ||
little off topic but it has to do with this fix: I just updated my wxmax version through svn update and recompiling its giving me the error(a little ways down): Compiling:common.bmx Compile Error: Can't find interface for module 'wx.wxwindow' [D:/BlitzMax/mod/wx.mod/wxvalidator.mod/common.bmx;24;1] Build Error: failed to compile D:/BlitzMax/mod/wx.mod/wxvalidator.mod/common.bmx any ideas? |
| ||
I just updated (for the helpprovider code) and the code compiled just fine.. (newer revision?) |
| ||
just updated my wxmax version through svn update and recompiling its giving me the error(a little ways down): Apologies... I've changed the imports, and it should be okay now - twas an issue with me adding am import in wxWindow, which resulted in a circular import... I probably should have done a full rebuild - which would have shown the problem - but it takes a while. Plash won't have had the error as sometimes not all the code affected by a particular change is rebuilt by BlitzMax, and it sees that everything is still okay. - I've come across some nasty crashes in code which I knew should work, only to realize (again!) that I should have done a clean build. |
| ||
Thanks Brucey! Seems to be compiling no problem now. |