Page 1 of 1

Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Sun May 16, 2010 08:34
by agamemnus
API:
"EventMouseEnters"

Actual:
"MouseEnter"

:hammer:

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Mon May 17, 2010 12:19
by emarcotte
What exactly is the problem? All of the event objects are called EventBlah and have a value of "Blah." Is there some inconsistency you're seeing? If so could you point it out more obviously, I don't see it here:

http://crayzedsgui.svn.sourceforge.net/ ... iew=markup

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Mon May 17, 2010 18:19
by agamemnus
http://www.cegui.org.uk/docs/current/cl ... indow.html:

It says: "EventMouseEnters" and "EventMouseLeaves".

Nice link, and I see now that it's also inconsistent with DragDropItemEnters / DragDropItemLeaves, too.

I think the string constant should probably be "MouseEnters" and "MouseLeaves" to remain consistent, and if it has been in there long then maybe an alias/define should be added.

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Tue May 18, 2010 11:16
by emarcotte
Oh, are you complaining about the "S" at the end?

I mean, for one, you should not be using the actual value of "MouseEnter" in your code and just using the constant. It may be an issue but it's certainly one that using good practices you wouldn't hit...

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Tue May 18, 2010 17:56
by agamemnus
Yeah, good idea. I'll use the constant inside of Freebasic. :lol:

Or, I'll add a constant list in Freebasic for all the events and update them every time the event list is updated. :lol:

... both of these are not possible/viable solutions. :|

The only solution as I see it is to change them to add an "s".

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Wed May 19, 2010 18:43
by emarcotte
I think you will find that many bindings tend to end up redefining constants in a way they can get to them. For instance, the java opengl bindings redefine every constant from GL.h. Do they manually do it? Hell no. They pull it from GL.h cause humans get stuff wrong all the time. And like you've seen there can be minor typos that don't matter in 99% of cases, but doing this sort of automatic copying propagates the error so it matters less. Then, when its fixed, you still get the fix too and you don't have to change your code.

So, again, having no idea how freebasic works, can you write C headers/functions/things that you can call from Freebasic? If so make a header/function/thing that is something like:

Code: Select all

char* MOUSE_ENTERS = CEGUI::Window::EventMouseEnters.c_str()


or

Code: Select all

char* mouseEnters() { return CEGUI::Window::EventMouseEnters.c_str()}


I'm curious why you are using freebasic in the end... there seems to be a whole lot of integration trouble. If you can't do natural cross-language calls/variable references it seems like you've got an uphill battle to fight. This sort of stuff isn't going to just work itself out magically and manually writing the "string values" of things is just going to lead to a maintenance nightmare, even if they are consistent.

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Thu May 20, 2010 21:20
by Jamarr
I have to agree with emarcotte in that you should try to automate bindings; preferably by generating them from the original source. That said, with v0.7 recently released and already including some non-backwards compatible changes it might be a good idea to go ahead and clean up the consistency issues between the variable and string-literal names.

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Sat May 22, 2010 07:34
by CrazyEddie
Jamarr wrote:... with v0.7 recently released and already including some non-backwards compatible changes it might be a good idea to go ahead and clean up the consistency issues between the variable and string-literal names.

This is actually a really hard call ;) I don't think it's something we can contemplate in the v0-7 branch as it's supposed to be API stable, so that makes it a trunk 0.8.0 type of a change.

In general we've been reasonably well behaved as far as trying to maintain backwards compatibility with scripts and xml data files, though obviously I'm not going to say that 100% compatibility has been maintained. I mention scripts and data files because in making this change I'd want to change the strings to match the symbols rather than the 'easy' option of doing it the other way around.

There are other places that need to be sorted out too. One that comes to mind is the misspelling of caret as carat.

I think if we could gather all these inconsistencies and errors together somewhere to be collected and discussed, it would then be possible to get those changes in for the 0.8.0 release in one go and we can move to a more consistent and stable API.

CE

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Mon May 24, 2010 18:53
by Jamarr
It would be very beneficial to gather the inconsistencies and other quirks into a single location. Even if they are not addressed until v0.8.0, having that data in an easily referencable location would help spread awareness. It can be very frustrating to spend hours debugging an issue when it is nothing more than a spelling/grammar issue.

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Tue May 25, 2010 10:10
by CrazyEddie
I'll sort out a sticky topic for this purpose over the coming days...

CE

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Wed Jun 09, 2010 17:57
by agamemnus
emarcotte wrote:So, again, having no idea how freebasic works, can you write C headers/functions/things that you can call from Freebasic? If so make a header/function/thing that is something like:

Code: Select all

char* MOUSE_ENTERS = CEGUI::Window::EventMouseEnters.c_str()



I could do this, but it would be a giant function call instead, since I must use a DLL.


Here is the list I use. The string value has been changed to equal the string name minus "Event". The few extra characters used for typing a longer event name (where it has been previously shortened) is worth it in order to avoid the time spent in looking up the event string.

Code: Select all

const String Window::EventNamespace("Window");
const String Window::EventWindowUpdated ("WindowUpdated");
const String Window::EventParentSized("ParentSized");
const String Window::EventSized("Sized");
const String Window::EventMoved("Moved");
const String Window::EventTextChanged("TextChanged");
const String Window::EventFontChanged("FontChanged");
const String Window::EventAlphaChanged("AlphaChanged");
const String Window::EventIDChanged("IDChanged");
const String Window::EventActivated("Activated");
const String Window::EventDeactivated("Deactivated");
const String Window::EventShown("Shown");
const String Window::EventHidden("Hidden");
const String Window::EventEnabled("Enabled");
const String Window::EventDisabled("Disabled");
const String Window::EventClippedByParentChanged("ClippedByParentChanged");
const String Window::EventDestroyedByParentChanged("DestroyedByParentChanged");
const String Window::EventInheritsAlphaChanged("InheritsAlphaChanged");
const String Window::EventAlwaysOnTopChanged("AlwaysOnTopChanged");
const String Window::EventInputCaptureGained("InputCaptureGained");
const String Window::EventInputCaptureLost("InputCaptureLost");
const String Window::EventRenderingStarted("RenderingStarted");
const String Window::EventRenderingEnded("RenderingEnded");
const String Window::EventChildAdded("ChildAdded");
const String Window::EventChildRemoved("ChildRemoved");
const String Window::EventDestructionStarted("DestructionStarted");
const String Window::EventZOrderChanged("ZOrderChanged");
const String Window::EventDragDropItemEnters("DragDropItemEnters");
const String Window::EventDragDropItemLeaves("DragDropItemLeaves");
const String Window::EventDragDropItemDropped("DragDropItemDropped");
const String Window::EventVerticalAlignmentChanged("VerticalAlignmentChanged");
const String Window::EventHorizontalAlignmentChanged("HorizontalAlignmentChanged");
const String Window::EventWindowRendererAttached("WindowRendererAttached");
const String Window::EventWindowRendererDetached("WindowRendererDetached");
const String Window::EventRotated("Rotated");
const String Window::EventNonClientChanged("NonClientChanged");
const String Window::EventTextParsingChanged("TextParsingChanged");
const String Window::EventMouseEnters("MouseEnters");
const String Window::EventMouseLeaves("MouseLeaves");
const String Window::EventMouseMove("MouseMove");
const String Window::EventMouseWheel("MouseWheel");
const String Window::EventMouseButtonDown("MouseButtonDown");
const String Window::EventMouseButtonUp("MouseButtonUp");
const String Window::EventMouseClick("MouseClick");
const String Window::EventMouseDoubleClick("MouseDoubleClick");
const String Window::EventMouseTripleClick("MouseTripleClick");
const String Window::EventKeyDown("KeyDown");
const String Window::EventKeyUp("KeyUp");
const String Window::EventCharacterKey("CharacterKey");

Re: Just went looney with "MouseEnter" and "MouseLeave"...

Posted: Wed Dec 22, 2010 14:40
by uelkfr
I don't know english very well, but I think its similar typo.
datafiles/schemes
datafiles/xml_schemas