From: <mie...@us...> - 2013-09-22 02:56:01
|
Revision: 9433 http://sourceforge.net/p/oorexx/code-0/9433 Author: miesfeld Date: 2013-09-22 02:55:57 +0000 (Sun, 22 Sep 2013) Log Message: ----------- #553 Add the StatusBar control to ooDialog Modified Paths: -------------- ooDialog/trunk/ooDialog/StatusBar.cls ooDialog/trunk/ooDialog/oodPackageEntry.cpp ooDialog/trunk/ooDialog/oodStatusBar.cpp Modified: ooDialog/trunk/ooDialog/StatusBar.cls =================================================================== --- ooDialog/trunk/ooDialog/StatusBar.cls 2013-09-21 21:31:29 UTC (rev 9432) +++ ooDialog/trunk/ooDialog/StatusBar.cls 2013-09-22 02:55:57 UTC (rev 9433) @@ -38,15 +38,21 @@ /** * Windows Dialog Interface for Open Object Rexx (ooRexx.) * - * StatusBar and StatusBar helper classes. + * StatusBar class. */ ::class 'StatusBar' subclass DialogControl public ::method getBorders external "LIBRARY oodialog stb_getBorders" ::method getIcon external "LIBRARY oodialog stb_getIcon" +::method getParts external "LIBRARY oodialog stb_getParts" +::method getRect external "LIBRARY oodialog stb_getRect" +::method isSimple external "LIBRARY oodialog stb_isSimple" +::method setBkColor external "LIBRARY oodialog stb_setBkColor" ::method setIcon external "LIBRARY oodialog stb_setIcon" +::method setMinHeight external "LIBRARY oodialog stb_setMinHeight" ::method setParts external "LIBRARY oodialog stb_setParts" ::method setText external "LIBRARY oodialog stb_setText" +::method simple external "LIBRARY oodialog stb_simple" Modified: ooDialog/trunk/ooDialog/oodPackageEntry.cpp =================================================================== --- ooDialog/trunk/ooDialog/oodPackageEntry.cpp 2013-09-21 21:31:29 UTC (rev 9432) +++ ooDialog/trunk/ooDialog/oodPackageEntry.cpp 2013-09-22 02:55:57 UTC (rev 9433) @@ -1163,9 +1163,15 @@ // StatusBar REXX_METHOD_PROTOTYPE(stb_getBorders); REXX_METHOD_PROTOTYPE(stb_getIcon); +REXX_METHOD_PROTOTYPE(stb_getParts); +REXX_METHOD_PROTOTYPE(stb_getRect); +REXX_METHOD_PROTOTYPE(stb_isSimple); +REXX_METHOD_PROTOTYPE(stb_setBkColor); REXX_METHOD_PROTOTYPE(stb_setIcon); +REXX_METHOD_PROTOTYPE(stb_setMinHeight); REXX_METHOD_PROTOTYPE(stb_setParts); REXX_METHOD_PROTOTYPE(stb_setText); +REXX_METHOD_PROTOTYPE(stb_simple); // ListBox REXX_METHOD_PROTOTYPE(lb_add); @@ -2972,9 +2978,15 @@ // StatusBar REXX_METHOD(stb_getBorders, stb_getBorders), REXX_METHOD(stb_getIcon, stb_getIcon), + REXX_METHOD(stb_getParts, stb_getParts), + REXX_METHOD(stb_getRect, stb_getRect), + REXX_METHOD(stb_isSimple, stb_isSimple), + REXX_METHOD(stb_setBkColor, stb_setBkColor), REXX_METHOD(stb_setIcon, stb_setIcon), + REXX_METHOD(stb_setMinHeight, stb_setMinHeight), REXX_METHOD(stb_setParts, stb_setParts), REXX_METHOD(stb_setText, stb_setText), + REXX_METHOD(stb_simple, stb_simple), REXX_METHOD(dss_makeDayStateBuffer, dss_makeDayStateBuffer), REXX_METHOD(dss_quickDayStateBuffer, dss_quickDayStateBuffer), Modified: ooDialog/trunk/ooDialog/oodStatusBar.cpp =================================================================== --- ooDialog/trunk/ooDialog/oodStatusBar.cpp 2013-09-21 21:31:29 UTC (rev 9432) +++ ooDialog/trunk/ooDialog/oodStatusBar.cpp 2013-09-22 02:55:57 UTC (rev 9433) @@ -164,6 +164,87 @@ return stbGetIcon(context, index); } +/** StatusBar::getParts() + * + * Returns the number of parts in the status bar, and optionally, the + * co-ordinate of the right edge of each part + * + * @param edges [optional] [in / out] An array object in which the right edge + * of each part is returned. If this argument is present, it + * will have indexes filled in with the right co-ordinate of each + * part. The item at index 1 will have the right co-ordinate of + * the first part, the item at index 2 will have the right edge + * of the second part, etc.. Up to the numbe of parts. Existing + * items at those indexes will be over-written. It is suggested + * that the programmer use an empty array, but not required. + * + * @return Returns the count of parts in this status bar, always. + */ +RexxMethod2(uint32_t, stb_getParts, OPTIONAL_RexxArrayObject, rxEdges, CSELF, pCSelf) +{ + RexxMethodContext *c = context; + + uint32_t count = (uint32_t)SendMessage(getDChCtrl(pCSelf), SB_GETPARTS, 0, 0); + if ( argumentExists(1) ) + { + int32_t *edges = (int32_t *)LocalAlloc(LPTR, count * sizeof(int32_t)); + if ( edges == NULL ) + { + outOfMemoryException(context->threadContext); + goto done_out; + } + + SendMessage(getDChCtrl(pCSelf), SB_GETPARTS, count, (LPARAM)edges); + for ( size_t i = 0; i < count; i++ ) + { + c->ArrayPut(rxEdges, c->Int32(edges[i]), i + 1); + } + } + +done_out: + return count; +} + +/** StatusBar::getRect() + * + * Returns a .Rect object that contains the bounding rectangle of the specified + * part in this status bar. + * + * @param index [required] The one-based index of the part. + * + * @return Returns a .Rect object with the bounding rectangle of the pare, or + * .nil on error. + */ +RexxMethod2(RexxObjectPtr, stb_getRect, uint32_t, index, CSELF, pCSelf) +{ + RECT r; + + index--; + if ( SendMessage(getDChCtrl(pCSelf), SB_GETRECT, index, (LPARAM)&r) ) + { + return rxNewRect(context, &r); + } + return TheNilObj; +} + +/** StatusBar::isSimple() + * + * + */ +RexxMethod1(logical_t, stb_isSimple, CSELF, pCSelf) +{ + return SendMessage(getDChCtrl(pCSelf), SB_ISSIMPLE, 0, 0); +} + +/** StatusBar::setBkColor() + * + * + */ +RexxMethod2(uint32_t, stb_setBkColor, uint32_t, clr, CSELF, pCSelf) +{ + return (uint32_t)SendMessage(getDChCtrl(pCSelf), SB_SETBKCOLOR, 0, clr); +} + /** StatusBar::setIcon() * * @@ -213,6 +294,17 @@ return existing; } +/** StatusBar::setMinHeight() + * + * + */ +RexxMethod2(uint32_t, stb_setMinHeight, uint32_t, height, CSELF, pCSelf) +{ + SendMessage(getDChCtrl(pCSelf), SB_SETMINHEIGHT, height, 0); + SendMessage(getDChCtrl(pCSelf), WM_SIZE, 0, 0); + return 0; +} + /** StatusBar::setParts() * * Sets the number of parts in a status window and the coordinate of the right @@ -299,3 +391,13 @@ return SendMessage(getDChCtrl(pCSelf), SB_SETTEXT, (WPARAM)index, (LPARAM)text); } +/** StatusBar::simple() + * + * + */ +RexxMethod2(uint32_t, stb_simple, logical_t, simple, CSELF, pCSelf) +{ + SendMessage(getDChCtrl(pCSelf), SB_SIMPLE, simple, 0); + return 0; +} + |