コード例 #1
0
ファイル: tkPlace.c プロジェクト: lmiadowicz/tk
static int
PlaceInfoCommand(
    Tcl_Interp *interp,		/* Interp into which to place result. */
    Tk_Window tkwin)		/* Token for the window to get info on. */
{
    char buffer[32 + TCL_INTEGER_SPACE];
    Slave *slavePtr;

    slavePtr = FindSlave(tkwin);
    if (slavePtr == NULL) {
        return TCL_OK;
    }
    if (slavePtr->masterPtr != NULL) {
        Tcl_AppendElement(interp, "-in");
        Tcl_AppendElement(interp, Tk_PathName(slavePtr->masterPtr->tkwin));
    }
    sprintf(buffer, " -x %d", slavePtr->x);
    Tcl_AppendResult(interp, buffer, NULL);
    sprintf(buffer, " -relx %.4g", slavePtr->relX);
    Tcl_AppendResult(interp, buffer, NULL);
    sprintf(buffer, " -y %d", slavePtr->y);
    Tcl_AppendResult(interp, buffer, NULL);
    sprintf(buffer, " -rely %.4g", slavePtr->relY);
    Tcl_AppendResult(interp, buffer, NULL);
    if (slavePtr->flags & CHILD_WIDTH) {
        sprintf(buffer, " -width %d", slavePtr->width);
        Tcl_AppendResult(interp, buffer, NULL);
    } else {
        Tcl_AppendResult(interp, " -width {}", NULL);
    }
    if (slavePtr->flags & CHILD_REL_WIDTH) {
        sprintf(buffer, " -relwidth %.4g", slavePtr->relWidth);
        Tcl_AppendResult(interp, buffer, NULL);
    } else {
        Tcl_AppendResult(interp, " -relwidth {}", NULL);
    }
    if (slavePtr->flags & CHILD_HEIGHT) {
        sprintf(buffer, " -height %d", slavePtr->height);
        Tcl_AppendResult(interp, buffer, NULL);
    } else {
        Tcl_AppendResult(interp, " -height {}", NULL);
    }
    if (slavePtr->flags & CHILD_REL_HEIGHT) {
        sprintf(buffer, " -relheight %.4g", slavePtr->relHeight);
        Tcl_AppendResult(interp, buffer, NULL);
    } else {
        Tcl_AppendResult(interp, " -relheight {}", NULL);
    }

    Tcl_AppendElement(interp, "-anchor");
    Tcl_AppendElement(interp, Tk_NameOfAnchor(slavePtr->anchor));
    Tcl_AppendElement(interp, "-bordermode");
    Tcl_AppendElement(interp, borderModeStrings[slavePtr->borderMode]);
    return TCL_OK;
}
コード例 #2
0
ファイル: tkPlace.c プロジェクト: AlexShiLucky/bitkeeper
static int
PlaceInfoCommand(
    Tcl_Interp *interp,		/* Interp into which to place result. */
    Tk_Window tkwin)		/* Token for the window to get info on. */
{
    Slave *slavePtr;
    Tcl_Obj *infoObj;

    slavePtr = FindSlave(tkwin);
    if (slavePtr == NULL) {
	return TCL_OK;
    }
    infoObj = Tcl_NewObj();
    if (slavePtr->masterPtr != NULL) {
	Tcl_AppendToObj(infoObj, "-in", -1);
	Tcl_ListObjAppendElement(NULL, infoObj,
		TkNewWindowObj(slavePtr->masterPtr->tkwin));
	Tcl_AppendToObj(infoObj, " ", -1);
    }
    Tcl_AppendPrintfToObj(infoObj,
	    "-x %d -relx %.4g -y %d -rely %.4g",
	    slavePtr->x, slavePtr->relX, slavePtr->y, slavePtr->relY);
    if (slavePtr->flags & CHILD_WIDTH) {
	Tcl_AppendPrintfToObj(infoObj, " -width %d", slavePtr->width);
    } else {
	Tcl_AppendToObj(infoObj, " -width {}", -1);
    }
    if (slavePtr->flags & CHILD_REL_WIDTH) {
	Tcl_AppendPrintfToObj(infoObj,
		" -relwidth %.4g", slavePtr->relWidth);
    } else {
	Tcl_AppendToObj(infoObj, " -relwidth {}", -1);
    }
    if (slavePtr->flags & CHILD_HEIGHT) {
	Tcl_AppendPrintfToObj(infoObj, " -height %d", slavePtr->height);
    } else {
	Tcl_AppendToObj(infoObj, " -height {}", -1);
    }
    if (slavePtr->flags & CHILD_REL_HEIGHT) {
	Tcl_AppendPrintfToObj(infoObj,
		" -relheight %.4g", slavePtr->relHeight);
    } else {
	Tcl_AppendToObj(infoObj, " -relheight {}", -1);
    }

    Tcl_AppendPrintfToObj(infoObj, " -anchor %s -bordermode %s",
	    Tk_NameOfAnchor(slavePtr->anchor),
	    borderModeStrings[slavePtr->borderMode]);
    Tcl_SetObjResult(interp, infoObj);
    return TCL_OK;
}
コード例 #3
0
static CONST char *
FormatConfigValue(
    Tcl_Interp *interp,		/* Interpreter for use in real conversions. */
    Tk_Window tkwin,		/* Window corresponding to widget. */
    Tk_ConfigSpec *specPtr,	/* Pointer to information describing option.
				 * Must not point to a synonym option. */
    char *widgRec,		/* Pointer to record holding current values of
				 * info for widget. */
    char *buffer,		/* Static buffer to use for small values.
				 * Must have at least 200 bytes of storage. */
    Tcl_FreeProc **freeProcPtr)	/* Pointer to word to fill in with address of
				 * function to free the result, or NULL if
				 * result is static. */
{
    CONST char *ptr, *result;

    *freeProcPtr = NULL;
    ptr = widgRec + specPtr->offset;
    result = "";
    switch (specPtr->type) {
    case TK_CONFIG_BOOLEAN:
        if (*((int *) ptr) == 0) {
            result = "0";
        } else {
            result = "1";
        }
        break;
    case TK_CONFIG_INT:
        sprintf(buffer, "%d", *((int *) ptr));
        result = buffer;
        break;
    case TK_CONFIG_DOUBLE:
        Tcl_PrintDouble(interp, *((double *) ptr), buffer);
        result = buffer;
        break;
    case TK_CONFIG_STRING:
        result = (*(char **) ptr);
        if (result == NULL) {
            result = "";
        }
        break;
    case TK_CONFIG_UID: {
        Tk_Uid uid = *((Tk_Uid *) ptr);

        if (uid != NULL) {
            result = uid;
        }
        break;
    }
    case TK_CONFIG_COLOR: {
        XColor *colorPtr = *((XColor **) ptr);

        if (colorPtr != NULL) {
            result = Tk_NameOfColor(colorPtr);
        }
        break;
    }
    case TK_CONFIG_FONT: {
        Tk_Font tkfont = *((Tk_Font *) ptr);

        if (tkfont != NULL) {
            result = Tk_NameOfFont(tkfont);
        }
        break;
    }
    case TK_CONFIG_BITMAP: {
        Pixmap pixmap = *((Pixmap *) ptr);

        if (pixmap != None) {
            result = Tk_NameOfBitmap(Tk_Display(tkwin), pixmap);
        }
        break;
    }
    case TK_CONFIG_BORDER: {
        Tk_3DBorder border = *((Tk_3DBorder *) ptr);

        if (border != NULL) {
            result = Tk_NameOf3DBorder(border);
        }
        break;
    }
    case TK_CONFIG_RELIEF:
        result = Tk_NameOfRelief(*((int *) ptr));
        break;
    case TK_CONFIG_CURSOR:
    case TK_CONFIG_ACTIVE_CURSOR: {
        Tk_Cursor cursor = *((Tk_Cursor *) ptr);

        if (cursor != None) {
            result = Tk_NameOfCursor(Tk_Display(tkwin), cursor);
        }
        break;
    }
    case TK_CONFIG_JUSTIFY:
        result = Tk_NameOfJustify(*((Tk_Justify *) ptr));
        break;
    case TK_CONFIG_ANCHOR:
        result = Tk_NameOfAnchor(*((Tk_Anchor *) ptr));
        break;
    case TK_CONFIG_CAP_STYLE:
        result = Tk_NameOfCapStyle(*((int *) ptr));
        break;
    case TK_CONFIG_JOIN_STYLE:
        result = Tk_NameOfJoinStyle(*((int *) ptr));
        break;
    case TK_CONFIG_PIXELS:
        sprintf(buffer, "%d", *((int *) ptr));
        result = buffer;
        break;
    case TK_CONFIG_MM:
        Tcl_PrintDouble(interp, *((double *) ptr), buffer);
        result = buffer;
        break;
    case TK_CONFIG_WINDOW: {
        Tk_Window tkwin;

        tkwin = *((Tk_Window *) ptr);
        if (tkwin != NULL) {
            result = Tk_PathName(tkwin);
        }
        break;
    }
    case TK_CONFIG_CUSTOM:
        result = (*specPtr->customPtr->printProc)(
                     specPtr->customPtr->clientData, tkwin, widgRec,
                     specPtr->offset, freeProcPtr);
        break;
    default:
        result = "?? unknown type ??";
    }
    return result;
}