예제 #1
0
파일: ttkPanedwindow.c 프로젝트: arazaq/ns2
/*------------------------------------------------------------------------
 * +++ Layout management hooks.
 */
static Ttk_Layout PanedGetLayout(
    Tcl_Interp *interp, Ttk_Theme themePtr, void *recordPtr)
{
    Paned *pw = recordPtr;
    Ttk_Layout panedLayout = TtkWidgetGetLayout(interp, themePtr, recordPtr);

    if (panedLayout) {
        int horizontal = pw->paned.orient == TTK_ORIENT_HORIZONTAL;
        const char *layoutName =
            horizontal ? ".Vertical.Sash" : ".Horizontal.Sash";
        Ttk_Layout sashLayout = Ttk_CreateSublayout(
                                    interp, themePtr, panedLayout, layoutName, pw->core.optionTable);

        if (sashLayout) {
            int sashWidth, sashHeight;

            Ttk_LayoutSize(sashLayout, 0, &sashWidth, &sashHeight);
            pw->paned.sashThickness = horizontal ? sashWidth : sashHeight;

            if (pw->paned.sashLayout)
                Ttk_FreeLayout(pw->paned.sashLayout);
            pw->paned.sashLayout = sashLayout;
        } else {
            Ttk_FreeLayout(panedLayout);
            return 0;
        }
    }

    return panedLayout;
}
예제 #2
0
파일: ttkFrame.c 프로젝트: lmiadowicz/tk
/* LabelframeLabelSize --
 * 	Extract the requested width and height of the labelframe's label:
 * 	taken from the label widget if specified, otherwise the text label.
 */
static void
LabelframeLabelSize(Labelframe *lframePtr, int *widthPtr, int *heightPtr)
{
    Tk_Window labelWidget = lframePtr->label.labelWidget;
    Ttk_Layout labelLayout = lframePtr->label.labelLayout;

    if (labelWidget) {
	*widthPtr = Tk_ReqWidth(labelWidget);
	*heightPtr = Tk_ReqHeight(labelWidget);
    } else if (labelLayout) {
	Ttk_LayoutSize(labelLayout, 0, widthPtr, heightPtr);
    } else {
	*widthPtr = *heightPtr = 0;
    }
}
예제 #3
0
/*
 * ScaleSize --
 * 	Compute requested size of scale.
 */
static int ScaleSize(void *clientData, int *widthPtr, int *heightPtr)
{
    WidgetCore *corePtr = clientData;
    Scale *scalePtr = clientData;
    int length;

    Ttk_LayoutSize(corePtr->layout, corePtr->state, widthPtr, heightPtr);

    /* Assert the -length configuration option */
    Tk_GetPixelsFromObj(NULL, corePtr->tkwin,
	    scalePtr->scale.lengthObj, &length);
    if (scalePtr->scale.orient == TTK_ORIENT_VERTICAL) {
	*heightPtr = MAX(*heightPtr, length);
    } else {
	*widthPtr = MAX(*widthPtr, length);
    }

    return 1;
}