Esempio n. 1
0
static LRESULT CALLBACK TabViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	struct TabViewInfo *pTabViewInfo;
	WNDPROC pfnParentWndProc;
	BOOL bHandled = FALSE;
	LRESULT rc = 0;

	pTabViewInfo = GetTabViewInfo(hWnd);
	pfnParentWndProc = pTabViewInfo->pfnParentWndProc;

	switch(message)
	{
		case WM_DESTROY:
			free(pTabViewInfo);
			SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR) pfnParentWndProc);
			SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) NULL);
			break;
	}

	if (!bHandled)
		rc = CallParentWndProc(pfnParentWndProc, hWnd, message, wParam, lParam);

	switch(message)
	{
		case WM_MOVE:
		case WM_SIZE:
			if (pTabViewInfo->pCallbacks->pfnOnMoveSize)
				pTabViewInfo->pCallbacks->pfnOnMoveSize();
			break;
	}

	return rc;
}
Esempio n. 2
0
void TabView_Reset(HWND hwndTabView)
{
	struct TabViewInfo *pTabViewInfo;
	TC_ITEM tci;
	int i;
	TCHAR* t_text;
	HRESULT res;
	BOOL b_res;

	pTabViewInfo = GetTabViewInfo(hwndTabView);

	b_res = TabCtrl_DeleteAllItems(hwndTabView);

	memset(&tci, 0, sizeof(tci));
	tci.mask = TCIF_TEXT;
	tci.cchTextMax = 20;

	for (i = 0; i < pTabViewInfo->nTabCount; i++)
	{
		if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
		{
			t_text = tstring_from_utf8(pTabViewInfo->pCallbacks->pfnGetTabLongName(i));
			if( !t_text )
				return;
			tci.pszText = t_text;
			res = TabCtrl_InsertItem(hwndTabView, i, &tci);
			osd_free(t_text);
		}
	}
	TabView_UpdateSelection(hwndTabView);
}
Esempio n. 3
0
void TabView_Reset(HWND hWndTabView)
{
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);
    TCITEM tci;

    (void)TabCtrl_DeleteAllItems(hWndTabView);

    memset(&tci, 0, sizeof(TCITEM));
    tci.mask = TCIF_TEXT | TCIF_IMAGE;
    tci.cchTextMax = 20;

    for (int i = 0; i < pTabViewInfo->nTabCount; i++)
    {
        if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
        {
            TCHAR *t_text = tstring_from_utf8(pTabViewInfo->pCallbacks->pfnGetTabLongName(i));

            if(!t_text)
                return;

            tci.pszText = t_text;
            tci.iImage = i;
            (void)TabCtrl_InsertItem(hWndTabView, i, &tci);
            free(t_text);
        }
    }

    TabView_UpdateSelection(hWndTabView);
}
Esempio n. 4
0
static LRESULT CallParentWndProc(WNDPROC pfnParentWndProc, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    if (!pfnParentWndProc)
        pfnParentWndProc = GetTabViewInfo(hWnd)->pfnParentWndProc;

    LRESULT	rc = CallWindowProc(pfnParentWndProc, hWnd, message, wParam, lParam);

    return rc;
}
Esempio n. 5
0
static LRESULT CallParentWndProc(WNDPROC pfnParentWndProc,
	HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	LRESULT rc;

	if (!pfnParentWndProc)
		pfnParentWndProc = GetTabViewInfo(hWnd)->pfnParentWndProc;

	if (IsWindowUnicode(hWnd))
		rc = CallWindowProcW(pfnParentWndProc, hWnd, message, wParam, lParam);
	else
		rc = CallWindowProcA(pfnParentWndProc, hWnd, message, wParam, lParam);
	return rc;
}
Esempio n. 6
0
void TabView_CalculateNextTab(HWND hWndTabView)
{
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);

    // at most loop once through all options
    for (int i = 0; i < pTabViewInfo->nTabCount; i++)
    {
        int nCurrentTab = TabView_GetCurrentTab(hWndTabView);
        TabView_SetCurrentTab(hWndTabView, (nCurrentTab + 1) % pTabViewInfo->nTabCount);
        nCurrentTab = TabView_GetCurrentTab(hWndTabView);

        if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(nCurrentTab))
            // this tab is being shown, so we're all set
            return;
    }
}
Esempio n. 7
0
static int TabView_GetCurrentTabIndex(HWND hWndTabView)
{
    int shown_tabs = 0;
    int nCurrentTab = TabView_GetCurrentTab(hWndTabView);
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);

    for (int i = 0; i < pTabViewInfo->nTabCount; i++)
    {
        if (i == nCurrentTab)
            break;

        if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
            shown_tabs++;
    }

    return shown_tabs;
}
Esempio n. 8
0
void TabView_SetCurrentTab(HWND hWndTabView, int nTab)
{
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);
    const char *pszName = NULL;
    char szBuffer[16];

    if (pTabViewInfo->pCallbacks->pfnGetTabShortName)
        pszName = pTabViewInfo->pCallbacks->pfnGetTabShortName(nTab);
    else
    {
        snprintf(szBuffer, ARRAY_LENGTH(szBuffer), "%d", nTab);
        pszName = szBuffer;
    }

    if (pTabViewInfo->pCallbacks->pfnSetCurrentTab)
        pTabViewInfo->pCallbacks->pfnSetCurrentTab(pszName);
}
Esempio n. 9
0
static int TabView_GetTabFromTabIndex(HWND hWndTabView, int tab_index)
{
    int shown_tabs = -1;
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);

    for (int i = 0; i < pTabViewInfo->nTabCount; i++)
    {
        if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
        {
            shown_tabs++;

            if (shown_tabs == tab_index)
                return i;
        }
    }

    return 0;
}
Esempio n. 10
0
static int TabView_GetTabFromTabIndex(HWND hwndTabView, int tab_index)
{
	int shown_tabs = -1;
	int i;
	struct TabViewInfo *pTabViewInfo;

	pTabViewInfo = GetTabViewInfo(hwndTabView);

	for (i = 0; i < pTabViewInfo->nTabCount; i++)
	{
		if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
		{
			shown_tabs++;
			if (shown_tabs == tab_index)
				return i;
		}
	}
	dprintf("invalid tab index %i\n", tab_index);
	return 0;
}
Esempio n. 11
0
void TabView_SetCurrentTab(HWND hwndTabView, int nTab)
{
	struct TabViewInfo *pTabViewInfo;
	LPCSTR pszName;
	char szBuffer[16];

	pTabViewInfo = GetTabViewInfo(hwndTabView);

	if (pTabViewInfo->pCallbacks->pfnGetTabShortName)
	{
		pszName = pTabViewInfo->pCallbacks->pfnGetTabShortName(nTab);
	}
	else
	{
		snprintf(szBuffer, ARRAY_LENGTH(szBuffer),
			"%d", nTab);
		pszName = szBuffer;
	}

	if (pTabViewInfo->pCallbacks->pfnSetCurrentTab)
		pTabViewInfo->pCallbacks->pfnSetCurrentTab(pszName);
}
Esempio n. 12
0
bool TabView_HandleNotify(LPNMHDR lpNmHdr)
{
    HWND hWndTabView = lpNmHdr->hwndFrom;
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);
    bool bResult = false;

    switch (lpNmHdr->code)
    {
    case TCN_SELCHANGE:
        int nTabIndex = TabCtrl_GetCurSel(hWndTabView);
        int nTab = TabView_GetTabFromTabIndex(hWndTabView, nTabIndex);
        TabView_SetCurrentTab(hWndTabView, nTab);

        if (pTabViewInfo->pCallbacks->pfnOnSelectionChanged)
            pTabViewInfo->pCallbacks->pfnOnSelectionChanged();

        bResult = true;
        break;
    }

    return bResult;
}
Esempio n. 13
0
int TabView_GetCurrentTab(HWND hwndTabView)
{
	struct TabViewInfo *pTabViewInfo;
	LPCSTR pszTab = NULL;
	LPCSTR pszThatTab;
	int i, nTab = -1;

	pTabViewInfo = GetTabViewInfo(hwndTabView);

	if (pTabViewInfo->pCallbacks->pfnGetCurrentTab)
		pszTab = pTabViewInfo->pCallbacks->pfnGetCurrentTab();

	if (pszTab)
	{
		if (pTabViewInfo->pCallbacks->pfnGetTabShortName)
		{
			for (i = 0; i < pTabViewInfo->nTabCount; i++)
			{
				pszThatTab = pTabViewInfo->pCallbacks->pfnGetTabShortName(i);
				if (pszThatTab && !core_stricmp(pszTab, pszThatTab))
				{
					nTab = i;
					break;
				}
			}
		}
		if (nTab < 0)
		{
			nTab = 0;
			sscanf(pszTab, "%d", &nTab);
		}
	}
	else
	{
		nTab = 0;
	}
	return nTab;
}
Esempio n. 14
0
BOOL TabView_HandleNotify(LPNMHDR lpNmHdr)
{
	HWND hwndTabView;
	struct TabViewInfo *pTabViewInfo;
	BOOL bResult = FALSE;
	int nTabIndex, nTab;

	hwndTabView = lpNmHdr->hwndFrom;
	pTabViewInfo = GetTabViewInfo(hwndTabView);

	switch (lpNmHdr->code)
	{
		case TCN_SELCHANGE:
			nTabIndex = TabCtrl_GetCurSel(hwndTabView);
			nTab = TabView_GetTabFromTabIndex(hwndTabView, nTabIndex);
			TabView_SetCurrentTab(hwndTabView, nTab);
			if (pTabViewInfo->pCallbacks->pfnOnSelectionChanged)
				pTabViewInfo->pCallbacks->pfnOnSelectionChanged();
			bResult = TRUE;
			break;
	}
	return bResult;
}
Esempio n. 15
0
int TabView_GetCurrentTab(HWND hWndTabView)
{
    struct TabViewInfo *pTabViewInfo = GetTabViewInfo(hWndTabView);
    const char *pszTab = NULL;
    int nTab = -1;

    if (pTabViewInfo->pCallbacks->pfnGetCurrentTab)
        pszTab = pTabViewInfo->pCallbacks->pfnGetCurrentTab();

    if (pszTab)
    {
        if (pTabViewInfo->pCallbacks->pfnGetTabShortName)
        {
            for (int i = 0; i < pTabViewInfo->nTabCount; i++)
            {
                const char *pszThatTab = pTabViewInfo->pCallbacks->pfnGetTabShortName(i);

                if (pszThatTab && !core_stricmp(pszTab, pszThatTab))
                {
                    nTab = i;
                    break;
                }
            }
        }

        if (nTab < 0)
        {
            nTab = 0;
            sscanf(pszTab, "%d", &nTab);
        }
    }
    else
        nTab = 0;

    return nTab;
}