1. Greg Haberek - xControls

Greg,

So..how ya' doin?  Great.  You been working out?  Okay.  And how's the family? 
Good.

Shuffle...
Squirm....

So...I know you're busy and all...(wring hands)...and probably have a lot to do
right now...(cough nervously)...but...have you had a chance to check into the
problem I reported with xControls?  (ducks to avoid thrown object)

This is the issue where I had sent you the source for a window design that
contained a vertical splitter with multiple horizontal splitters.

:)

Jonas Temple
http://www.yhti.net/~jktemple

new topic     » topic index » view message » categorize

2. Re: Greg Haberek - xControls

> So...I know you're busy and all...(wring hands)...and probably have a lot=
 to do right now...(cough nervously)...but...have you had a chance to check=
 into the problem I reported with xControls?  (ducks to avoid thrown object=
)
>
> This is the issue where I had sent you the source for a window design tha=
t contained a vertical splitter with multiple horizontal splitters.

Um.... (taps finger on desk)... I, uh.... looked? at it. Been working
a lot. Um.... heck, I might as well drop some time into writing
xControls v2.0. I just finished Geometry, which uses convPctToPixel()
in Win32Lib, and I'm starting on VSplitter and HSplitter. They should
be done by the weekend, I've ripped out a lot of unneeded code. I'll
e-mail you the updated libraries for testing in private.

Although I really don't see how this issue is related to the existing
Geometry in anyway, but it has to be. That's why I switched to
convPctToPixel(), maybe it will help the issue.

~Greg

P.S. I'm getting laid off December 16th. So I'm looking forward to a
lot of long nights coding away to my heart's content. A full release
of xControls v2.0 is in the works, as are a few other apps, namely
Royal Chess and GIF Animator. :)

new topic     » goto parent     » topic index » view message » categorize

3. Re: Greg Haberek - xControls

Greg Haberek wrote:

> Um.... (taps finger on desk)... I, uh.... looked? at it. Been working
> a lot. Um.... heck, I might as well drop some time into writing
> xControls v2.0. I just finished Geometry, which uses convPctToPixel()
> in Win32Lib, and I'm starting on VSplitter and HSplitter. They should
> be done by the weekend, I've ripped out a lot of unneeded code. I'll
> e-mail you the updated libraries for testing in private.

Thanks!  

> 
> Although I really don't see how this issue is related to the existing
> Geometry in anyway, but it has to be. That's why I switched to
> convPctToPixel(), maybe it will help the issue.

I "tried" to look at the code in geometry and the splitters but couldn't get my
head around it.

> 
> P.S. I'm getting laid off December 16th. So I'm looking forward to a
> lot of long nights coding away to my heart's content. A full release
> of xControls v2.0 is in the works, as are a few other apps, namely
> Royal Chess and GIF Animator. :)

Wow...Merry Christmas, huh?  Any prospects for new employment?

Jonas Temple
http://www.yhti.net/~jktemple

new topic     » goto parent     » topic index » view message » categorize

4. Re: Greg Haberek - xControls

> Wow...Merry Christmas, huh?  Any prospects for new employment?

I guess I forgot to say that everything starts back up sometime after
the first of the year. :) So I just get two weeks of unemployment pay.

new topic     » goto parent     » topic index » view message » categorize

5. Re: Greg Haberek - xControls

Well now I'm starting to think the issues is just how I'm handling
TabControls and TabItems.

I tried monitoring the TabItem's Resize event. That didn't work at
all. TabItems don't get Resize events, TabControls do.

So I tried monitoring the TabControl's Resize event. That leads to the
issue we have now. I'm not sure why this happens exactly. I believe
the Tab-to-Tab switching doesn't fire off a resize event.

What I think I need to do, is monitor the TabControl's Resize event
and the Tab-to-Tab Change (or Click) event, then send it a
TCM_GETCURSEL message to get the current tab and convert it back to
Win32Lib with getId(). From there, I'll only resize the controls on
*that* tab.

I'm just thinking through the keyboard here while I'm at work. Let's
hope my theory holds true.

~Greg

new topic     » goto parent     » topic index » view message » categorize

6. Greg Haberek - xControls

Greg,

Earlier this month I sent out a message directed to Don Phillips about a
problem I was having with xControls and vertical splitters overlapping
the status bar.  Don appears to be MIA at the moment and since you said
you were semi-maintaining xControls I thought I would share this fix.

I've got my copy of xControls doing what I "think" it should be doing 
by appling the following patch into the GM_Manager routine in Geometry.ew:

for index = 1 to length(IDsManaged[parentID]) do
				attribs = IDsManaged[parentID][index]
				for index2 = 1 to 4 do
					if attribs[index2+1][1] <= 1
then newPos[index2] = floor(
params[and_bits(or_bits(xor_bits(index2,1),2),3)] * attribs[index2+1][1] )
else newPos[index2] = PrevPlaced[ attribs[index2+1][1] ][
index2+2-(index2>2)*4 ]
					end if
					newPos[index2] += attribs[index2+1][2]
					PrevPlaced[ attribs[1] ][index2] = newPos[index2]
				end for
				newPos[5] = newPos[3] - newPos[1]
				newPos[6] = newPos[4] - newPos[2]
-- Beg CJT01
				if newPos[6] > Rect[4] then
					newPos[6] = Rect[4] - 5
				end if
-- End CJT01
setRect( attribs[1], newPos[1]+Offset[1], newPos[2]+Offset[2], newPos[5],
newPos[6], True )
				classType = getControlInfo( attribs[1], {CONTROLINFO_class} )
				if classType[1] = 2 then -- 2 = COMBO
					Void = sendMessage( attribs[1], CB_SETDROPPEDWIDTH, newPos[5], 0 )
				else
				end if
			end for


I've been testing this for a few days and it seems to work.  Probably
not the best approach to correct the problem, but hey, it works.

Jonas Temple
http://www.yhti.net/~jktemple

new topic     » goto parent     » topic index » view message » categorize

7. Re: Greg Haberek - xControls

> Earlier this month I sent out a message directed to Don Phillips about a
> problem I was having with xControls and vertical splitters overlapping
> the status bar.  Don appears to be MIA at the moment and since you said
> you were semi-maintaining xControls I thought I would share this fix.
> 
> I've got my copy of xControls doing what I "think" it should be doing 
> by appling the following patch into the GM_Manager routine in Geometry.ew:

Heys Jonas...
Yeah I dont check up on Euphoria much anymore.  I still find it interesting
and I might poke around with it more during the 2.5 update, but I moved on
more than a year or so ago.

Every once in a blue moon I will get on to see what people are talking about/
discussing.  But the chances of me catching an xControls issue posted to the
board is slim.  Better to email me directly.  The other part of the problem
is that I do not have an older machine to test your code on.  If you say it
works and it does not break anything I say go with it.  I am not likely to
update the xControls lib anymore so Gregs the best person to send it to...

Have to say, I am really digging CSS...
Really cool stuff going on lately.  Just wish IE would get its head out of
its backside and get fully compliant...


Don Phillips - aka Graebel
     National Instruments
     mailto: eunexus @ yahoo.com

new topic     » goto parent     » topic index » view message » categorize

8. Re: Greg Haberek - xControls

> > I'm currently working on a major Euphoria-driven project for financial
> > gain, so it's been taking up all of my free coding time. :)
>
> ooh, a few details? nothing that would violate a non-disclosure, of course...

Its a huge endeavor. At its root, its an on-line multi-player
membership-based gaming environment. I've got to write all types of
game rules, front-end application(s), a large-scale game server, a
database server, and tie it all into a working product.

new topic     » goto parent     » topic index » view message » categorize

9. Greg Haberek - xControls

Greg,  

I've got a couple of things with xControls that I want to run by you.  The first
is I'm trying to build a tab-control-within-a-tab-control feature into my
application and using xControls I'm getting considerable flickering from the
nested tab.  The following example should show you what I mean:

include Win32lib.ew
include xControls.ew

atom sys_cx, sys_cy

global constant MainWin = createEx( Window, "Multi-Tab Test", 0, 0, 0, 500, 800,
0, 0)
global constant Main = createEx( Window, "", MainWin, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )

-- Create the left portion of the main window
global constant MainTV = createEx( TreeView, "", Main, 0, 0, 0, 0,
or_all({TVS_HASLINES,TVS_LINESATROOT,TVS_HASBUTTONS,TVS_SHOWSELALWAYS,TVS_INFOTIP}),
0 )
removeStyle(MainTV, WS_BORDER)
-- Split the left/right sides of the main window
global constant mainSplit = createEx(VSplitter, "mainSplit", Main, 100, 0, 0, 0,
0, 0 )
-- Create the right portion of the main window
global constant mainRightTC = createEx(TabControl, "", Main, 0, 0, 0, 0, 0, 0 )

-- Create the DB2 tab item on the right
global constant DB2TI = createEx(TabItem, "DB2", mainRightTC, 0, 0, 0, 0, 0, 0 )
global constant DB2TIWin = createEx( Window, "", DB2TI, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
-- Now create three sub windows of the DB2 tab item.  Start with the top window
and details list view
global constant DB2DtlWin = createEx( Window, "", DB2TIWin, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant QuickLibLT = createEx( LText, "Library:", DB2DtlWin, 0, 0, 0, 0,
0, 0 )
global constant QuickLibET = createEx( EditText, "", DB2DtlWin, 0, 0, 0, 0, 0, 0
)
LimitText( QuickLibET,10)
global constant QuickFileLT = createEx( LText, "File:", DB2DtlWin, 0, 0, 0, 0,
0, 0 )
global constant QuickFileET = createEx( EditText, "", DB2DtlWin, 0, 0, 0, 0, 0,
0 )
LimitText( QuickFileET,10)
global constant QuickGoPB = createEx( PushButton, "List Fields", DB2DtlWin, 0,
0, 0, 0, 0, 0 )
global constant QuickDBRPB = createEx( PushButton, "DB Relations", DB2DtlWin, 0,
0, 0, 0, 0, 0 )
global constant QuickDBPropsPB = createEx( PushButton, "Properties", DB2DtlWin,
0, 0, 0, 0, 0, 0 )
global constant MainLV = createEx( ListView, {}, DB2DtlWin, 0, 0, 0, 0,
or_all({LVS_REPORT,LVS_SHOWSELALWAYS}), 0 )
removeStyle(MainLV, WS_BORDER)
-- First horizontal splitter
global constant DB2Split1 = createEx(HSplitter, "DB2Split", DB2TIWin, 0, 100, 0,
0, 0, 0 )
-- History DDL and statement edit control
global constant DB2SQLWin = createEx( Window, "", DB2TIWin, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant HistoryDDL = createEx( DropDownList, "", DB2SQLWin, 0, 0, 0, 0,
0, 0 )
removeStyle(HistoryDDL, WS_BORDER)
global constant StatementRE = createEx( RichEdit, "", DB2SQLWin, 0, 0, 0, 0,
w32or_all({ES_NOHIDESEL}), 0 )
removeStyle(StatementRE, WS_BORDER)
-- Second horizontal splitter
global constant DB2Split2 = createEx(HSplitter, "DB2TopSplit", DB2TIWin, 0, 
                            200, 0, 0, 0, 0 )
-- Create the results list view
global constant DB2ResultsWin = createEx( Window, "", DB2TIWin, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant ResultsLV = createEx( ListView, {}, DB2ResultsWin, 0, 0, 0, 0,
or_all({LVS_REPORT,LVS_SHOWSELALWAYS}), 0 )
removeStyle(ResultsLV, WS_BORDER)

-- Create the command tab item
global constant CmdTI = createEx(TabItem, "CL Commands", mainRightTC, 0, 0, 0,
0, 0, 0 )
global constant CmdTIWin = createEx( Window, "", CmdTI, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant CmdHistoryDDL = createEx( DropDownList, "", CmdTIWin, 0, 0, 0,
0, 0, 0 )
removeStyle(CmdHistoryDDL, WS_BORDER)
global constant CmdET = createEx( RichEdit, "", CmdTIWin, 0, 0, 0, 0,
w32or_all({ES_NOHIDESEL}), 0 )
removeStyle(CmdET, WS_BORDER)

-- Create the IFS tab item
global constant IFSTI = createEx(TabItem, "IFS", mainRightTC, 0, 0, 0, 0, 0, 0 )
global constant IFSTIWin = createEx( Window, "", IFSTI, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant IFSFileLT = createEx( LText, "", IFSTIWin, 0, 0, 0, 0, 0, 0 )
global constant IFSRE = createEx( RichEdit, "", IFSTIWin, 0, 0, 0, 0,
w32or_all({ES_NOHIDESEL}), 0)
removeStyle(IFSRE, WS_BORDER)
setEnable(IFSRE, False)

-- Create the QM Query tab item
global constant QmQryTI = createEx(TabItem, "QM Query Mgr", mainRightTC, 0, 0,
0, 0, 0, 0 )
global constant QmQryTIWin = createEx( Window, "", QmQryTI, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant QmQrySrcMbrLT = createEx( LText, "", QmQryTIWin, 0, 0, 0, 0, 0,
0 )
global constant QmQryRE = createEx( RichEdit, "", QmQryTIWin, 0, 0, 0, 0,
w32or_all({ES_NOHIDESEL}), 0)
removeStyle(QmQryRE, WS_BORDER)
setEnable(QmQryRE, False)

-- Create the SQL script tab item
global constant SQLScriptTI = createEx(TabItem, "SQL Script", mainRightTC, 0, 0,
0, 0, 0, 0 )
global constant SQLScriptTIWin = createEx( Window, "", SQLScriptTI, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant sql_script_TC = createEx(TabControl, "", SQLScriptTIWin, 0, 0,
0, 0, 0, 0 )
global constant script_TI = createEx(TabItem, "Test", sql_script_TC, 0, 0, 0, 0,
0, 0 )
global constant script_Win = createEx( Window, "", script_TI, 0, 0, 0, 0,
{WS_CHILD,WS_VISIBLE}, 0 )
global constant stmt_LV = createEx( ListView, {"Statement"}, script_Win, 0, 0,
0, 0, or_all({LVS_REPORT,LVS_SHOWSELALWAYS}), 0 )
removeStyle(stmt_LV, WS_BORDER)
global constant split_HS = createEx(HSplitter, "SQLScriptSplit", script_Win, 0,
100, 0, 0, 0, 0 )
global constant results_LV = createEx( ListView, {"Executed Statements"},
script_Win, 0, 0, 0, 0, or_all({LVS_REPORT,LVS_SHOWSELALWAYS}), 0 )
removeStyle(results_LV, WS_BORDER)

sys_cx = getSystemMetrics(SM_CXSCREEN)
sys_cy = getSystemMetrics(SM_CYSCREEN)
limit_size(MainWin, 0.25, 0.25, sys_cx, sys_cy )

-- Manage the main window
manage(MainWin, Main, {w32Edge,10}, {w32Edge,28}, {w32Edge,10},w32Edge)

-- Manage left side of main window
manage(Main, MainTV, w32Edge, w32Edge, {mainSplit,0}, w32Edge)

-- Manage right side of main window, starting with the DB2 tab item
manage(Main, mainRightTC, {mainSplit,0}, w32Edge, w32Edge, w32Edge)
manage(DB2TI, DB2TIWin, {w32Edge,10}, {w32Edge,30}, {w32Edge,-10},
{w32Edge,-10})
manage(DB2TIWin, DB2DtlWin, w32Edge, w32Edge, w32Edge, {DB2Split1,0})
manage(DB2DtlWin, QuickLibLT, w32Edge, w32Edge, 50, 20)
manage(DB2DtlWin, QuickLibET, {QuickLibLT,5},w32Edge, 100, 20)
manage(DB2DtlWin, QuickFileLT, {QuickLibET,5}, w32Edge, 50, 20)
manage(DB2DtlWin, QuickFileET, {QuickFileLT,5},w32Edge, 100, 20)
manage(DB2DtlWin, QuickGoPB, {QuickFileET,5}, w32Edge, 88, 20)
manage(DB2DtlWin, QuickDBRPB, {QuickGoPB,5}, w32Edge, 88, 20)
manage(DB2DtlWin, QuickDBPropsPB, {QuickDBRPB,5}, w32Edge, 88, 20)
manage(DB2DtlWin, MainLV, w32Edge, {QuickGoPB,5}, w32Edge, w32Edge)
manage(DB2TIWin, DB2SQLWin, w32Edge, {DB2Split1, 0}, w32Edge, {DB2Split2, 0})
manage(DB2SQLWin, HistoryDDL, w32Edge, w32Edge, w32Edge, w32Edge)
manage(DB2SQLWin, StatementRE, w32Edge, {HistoryDDL,5}, w32Edge, w32Edge)
manage(DB2TIWin, DB2ResultsWin, w32Edge, {DB2Split2,0}, w32Edge, w32Edge)
manage(DB2ResultsWin, ResultsLV, w32Edge, w32Edge, w32Edge, w32Edge)

-- Manage the command tab item
manage(CmdTI, CmdTIWin, {w32Edge,10}, {w32Edge,30}, {w32Edge,-10},
{w32Edge,-10})
manage(CmdTIWin, CmdHistoryDDL, w32Edge, w32Edge, w32Edge, w32Edge)
manage(CmdTIWin, CmdET, w32Edge, {CmdHistoryDDL,5}, w32Edge, w32Edge)

-- Mange the IFS tab item
manage(IFSTI, IFSTIWin, {w32Edge,10}, {w32Edge,30}, {w32Edge,-10},
{w32Edge,-10})
manage(IFSTIWin, IFSFileLT, w32Edge, w32Edge, w32Edge,{IFSFileLT,24})
manage(IFSTIWin, IFSRE, w32Edge, {IFSFileLT,5}, w32Edge, w32Edge)

-- Manage the QM Query tab item
manage(QmQryTI, QmQryTIWin, {w32Edge,10}, {w32Edge,30}, {w32Edge,-10},
{w32Edge,-10})
manage(QmQryTIWin, QmQrySrcMbrLT, w32Edge, w32Edge, w32Edge, 20)
manage(QmQryTIWin, QmQryRE, w32Edge, {QmQrySrcMbrLT,10}, w32Edge, w32Edge)

manage(SQLScriptTI, SQLScriptTIWin, {w32Edge,10}, {w32Edge,30}, {w32Edge,-10},
{w32Edge,-10})
manage(SQLScriptTIWin, sql_script_TC, w32Edge, w32Edge, w32Edge, w32Edge)
manage(sql_script_TC, script_TI, w32Edge, w32Edge, w32Edge, w32Edge)
manage(script_TI, script_Win, {w32Edge,10}, {w32Edge,30}, {w32Edge,-10},
{w32Edge,-10})
manage(script_Win, stmt_LV, w32Edge, w32Edge, w32Edge, {split_HS,0})
manage(script_Win, results_LV, w32Edge, {split_HS,0}, w32Edge, w32Edge)

WinMain(MainWin, Maximized)


If you move the horizontal bar that divides the two windows you should see what
I mean.

The second is a request to maybe make the library easier to use.  In the example
above, I have to create a window as a child of a tab item in order for the
placement to work.  It would sure be nice if that wasn't a requirement (or at
least I think it's a requirement).  IOW, just be able to create controls as a
child of the tab item and be able to use splitters.

Thanks!

Jonas Temple
http://www.yhti.net/~jktemple

new topic     » goto parent     » topic index » view message » categorize

10. Re: Greg Haberek - xControls

> I've got a couple of things with xControls that I want to run by you.  The
> first is I'm trying to build a tab-control-within-a-tab-control feature into my
> application and using xControls I'm getting considerable flickering from the
> nested tab.  The following example should show you what I mean:
>
> (code snipped)
>
> If you move the horizontal bar that divides the two windows you should see
> what I mean.

Without even running the code, I can tell you that tab controls don't
play well with manage(). If you check the code, you'll find a few
unique cases where I have to check for TabItem and TabControl.

> The second is a request to maybe make the library easier to use.  In the
> example above, I have to create a window as a child of a tab item in order for
> the placement to work.  It would sure be nice if that wasn't a requirement (or at
> least I think it's a requirement).  IOW, just be able to create controls as a
> child of the tab item and be able to use splitters.

This goes along with what I said above, for some reason unbeknownst to
me, placing the controls just on the TabItem leads to weird (and I
mean *weird*) repaint issues. Sometimes the controls show up,
sometimes they don't. Its also why you get the flickering.

The only sure-fire option I've come up with is to write my *own*
TabControl for xControls, maybe TabControlEx or something. That way I
can control the behavior from the ground up. But that's a lot of work,
and integrating it with the existing Win32Lib functions may prove abit
cumbersome.

I'll go through the code this weekend and see if I can improve
anything. Its been a few months since I've had a go at xControls. I'm
currently working on a major Euphoria-driven project for financial
gain, so it's been taking up all of my free coding time. :)

new topic     » goto parent     » topic index » view message » categorize

11. Re: Greg Haberek - xControls

Greg Haberek wrote:
> 
> I'm currently working on a major Euphoria-driven project for financial
> gain, so it's been taking up all of my free coding time. :)

ooh, a few details? nothing that would violate a non-disclosure, of course...

-=ck
"Programming in a state of Euphoria."
http://www.cklester.com/euphoria/

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu