예제 #1
0
void CDialogPackage::CTabInfo::Initialize()
{
    m_Initialized = true;

    HWND item = GetDlgItem(m_Window, IDC_INSTALLTAB_NAME_TEXT);
    Edit_SetCueBannerText(item, L"...");

    item = GetDlgItem(m_Window, IDC_INSTALLTAB_AUTHOR_TEXT);
    Edit_SetCueBannerText(item, L"...");

    item = GetDlgItem(m_Window, IDC_INSTALLTAB_VERSION_TEXT);
    Edit_SetCueBannerText(item, L"...");

    item = GetDlgItem(m_Window, IDC_PACKAGEINFO_COMPONENTS_LIST);

    DWORD extendedFlags = LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT;

    if (GetOSPlatform() >= OSPLATFORM_VISTA)
    {
        extendedFlags |= LVS_EX_DOUBLEBUFFER;
        SetWindowTheme(item, L"explorer", NULL);
    }

    ListView_EnableGroupView(item, TRUE);
    ListView_SetExtendedListViewStyleEx(item, 0, extendedFlags);

    // Add columns
    LVCOLUMN lvc;
    lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    lvc.fmt = LVCFMT_LEFT;
    lvc.iSubItem = 0;
    lvc.cx = 252;
    lvc.pszText = L"Name";
    ListView_InsertColumn(item, 0, &lvc);

    // Add groups
    LVGROUP lvg;
    lvg.cbSize = sizeof(LVGROUP);
    lvg.mask = LVGF_HEADER | LVGF_GROUPID | LVGF_STATE;
    lvg.state = (GetOSPlatform() >= OSPLATFORM_VISTA) ? LVGS_COLLAPSIBLE : LVGS_NORMAL;
    lvg.iGroupId = 0;
    lvg.pszHeader = L"Skin";
    ListView_InsertGroup(item, -1, &lvg);
    lvg.iGroupId = 1;
    lvg.pszHeader = L"Layouts";
    ListView_InsertGroup(item, -1, &lvg);
    lvg.iGroupId = 2;
    lvg.pszHeader = L"Plugins";
    ListView_InsertGroup(item, -1, &lvg);
}
예제 #2
0
INT_PTR DialogInstall::OnInitDialog(WPARAM wParam, LPARAM lParam)
{
	HICON hIcon = (HICON)LoadImage(GetModuleHandle(nullptr), MAKEINTRESOURCE(IDI_SKININSTALLER), IMAGE_ICON, 16, 16, LR_SHARED);
	SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);

	if (GetOSPlatform() >= OSPLATFORM_VISTA)
	{
		SetDialogFont();
	}

	HWND item = GetDlgItem(m_Window, IDC_INSTALL_ADVANCED_BUTTON);
	Dialog::SetMenuButton(item);

	if (ReadPackage())
	{
		item = GetDlgItem(m_Window, IDC_INSTALL_HEADER_BITMAP);
		if (m_HeaderBitmap)
		{
			SendMessage(item, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)m_HeaderBitmap);
		}
		else
		{
			RECT r;
			GetClientRect(item, &r);
			ShowWindow(item, SW_HIDE);
			int yDiff = r.bottom;

			// Move all controls on the main dialog up to "fill" header area.
			int controlIds[] = { IDC_INSTALL_TAB, IDC_INSTALL_ADVANCED_BUTTON, IDC_INSTALL_INSTALL_BUTTON, IDCANCEL, 0 };
			for (int i = 0; i < _countof(controlIds); ++i)
			{
				HWND control = controlIds[i] ? GetDlgItem(m_Window, controlIds[i]) : m_TabInstall.GetWindow();
				GetWindowRect(control, &r);
				MapWindowPoints(nullptr, m_Window, (POINT*)&r, sizeof(RECT) / sizeof(POINT));
				MoveWindow(control, r.left, r.top - yDiff, r.right - r.left, r.bottom - r.top, TRUE);
			}

			// Remove blank area at the bottom of the dialog and center it.
			GetWindowRect(m_Window, &r);
			MoveWindow(m_Window, r.left, r.top + (yDiff / 2), r.right - r.left, r.bottom - r.top - yDiff, TRUE);
		}

		m_TabInstall.Activate();
	}
	else
	{
		if (m_ErrorMessage.empty())
		{
			m_ErrorMessage = L"Invalid package:\n";
			m_ErrorMessage += PathFindFileName(m_PackageFileName.c_str());
			m_ErrorMessage += L"\n\nThe Skin Packager tool must be used to create valid .rmskin packages.";
		}

		MessageBox(nullptr, m_ErrorMessage.c_str(), L"Rainmeter Skin Installer", MB_ERROR);
		EndDialog(m_Window, 0);
	}


	return TRUE;
}
예제 #3
0
INT_PTR CDialogPackage::OnInitDialog(WPARAM wParam, LPARAM lParam)
{
    HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_SKININSTALLER), IMAGE_ICON, 16, 16, LR_SHARED);
    SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);

    if (GetOSPlatform() >= OSPLATFORM_VISTA)
    {
        SetDialogFont();
    }

    m_TabInfo.Activate();

    return FALSE;
}
예제 #4
0
void DialogInstall::TabInstall::Initialize()
{
	HWND item = GetDlgItem(m_Window, IDC_INSTALLTAB_COMPONENTS_LIST);

	DWORD extendedFlags = LVS_EX_CHECKBOXES | LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT;

	if (GetOSPlatform() >= OSPLATFORM_VISTA)
	{
		extendedFlags |= LVS_EX_DOUBLEBUFFER;
		SetWindowTheme(item, L"explorer", nullptr);
	}

	ListView_EnableGroupView(item, TRUE);
	ListView_SetExtendedListViewStyleEx(item, 0, extendedFlags);

	// Add columns
	LVCOLUMN lvc;
	lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvc.fmt = LVCFMT_LEFT;
	lvc.iSubItem = 0;
	lvc.cx = 180;
	lvc.pszText = L"Name";
	ListView_InsertColumn(item, 0, &lvc);
	lvc.iSubItem = 1;
	lvc.cx = 150;
	lvc.pszText = L"Action";
	ListView_InsertColumn(item, 1, &lvc);

	// Add groups and items
	LVGROUP lvg;
	lvg.cbSize = sizeof(LVGROUP);
	lvg.mask = LVGF_HEADER | LVGF_GROUPID | LVGF_STATE;
	lvg.state = (GetOSPlatform() >= OSPLATFORM_VISTA) ? LVGS_COLLAPSIBLE : LVGS_NORMAL;

	LVITEM lvi;
	lvi.mask = LVIF_TEXT | LVIF_GROUPID | LVIF_PARAM;
	lvi.iSubItem = 0;

	auto addComponent = [&](const WCHAR* name, const std::set<std::wstring>& items, const std::wstring& path, int groupId)
	{
		lvg.iGroupId = groupId;
		lvg.pszHeader = (WCHAR*)name;
		ListView_InsertGroup(item, groupId, &lvg);

		lvi.iGroupId = groupId;
		lvi.iItem = 0;
		for (auto iter = items.cbegin(); iter != items.cend(); ++iter)
		{
			lvi.pszText = (WCHAR*)(*iter).c_str();
			lvi.lParam = (LPARAM)&(*iter);
			ListView_InsertItem(item, &lvi);
			ListView_SetCheckState(item, lvi.iItem, TRUE);

			std::wstring itemPath = path + *iter;
			WCHAR* text = L"Add";
			if (_waccess(itemPath.c_str(), 0) != -1)
			{
				bool backup = groupId == 0 && c_Dialog->m_BackupSkins && !c_Dialog->m_BackupPackage;
				text = backup ? L"Backup and replace" : L"Replace";
			}
			ListView_SetItemText(item, lvi.iItem, 1, text);

			++lvi.iItem;
		}
	};

	addComponent(L"Skins", c_Dialog->m_PackageSkins, g_Data.skinsPath, 0);
	addComponent(L"Layouts", c_Dialog->m_PackageLayouts, g_Data.settingsPath + L"Layouts\\", 1);
	addComponent(L"Addons", c_Dialog->m_PackageAddons, g_Data.settingsPath + L"Addons\\", 2);
	addComponent(L"Plugins", c_Dialog->m_PackagePlugins, g_Data.settingsPath + L"Plugins\\", 3);

	item = GetDlgItem(m_Window, IDC_INSTALLTAB_THEME_CHECKBOX);
	if (!c_Dialog->m_LoadLayout.empty())
	{
		Button_SetCheck(item, BST_CHECKED);
	}
	else if (!c_Dialog->m_LoadSkins.empty())
	{
		SetWindowText(item, L"Load included skins");
		Button_SetCheck(item, BST_CHECKED);
	}
	else
	{
		ShowWindow(item, SW_HIDE);
	}

	m_Initialized = true;
}