servo: Merge #11756 - MSVC support for Servo, and CMake builds for native code (from vvuk:servo-msvc); r=larsbergstrom

This is the base PR for MSVC builds of servo and dependent crates.  It's got replacements in the Cargo.toml to pull in the right versions, to make sure that crates were properly converted to CMake for all other platforms, not just Windows.  (Servo builds with MSVC 2015 with this PR; also with 2013, though a manual change in rust-mozjs to select a different set of bindings is needed.)

This PR isn't quite ready yet, but I want bors-servo to do builds.

Source-Repo: https://github.com/servo/servo
Source-Revision: ec53136863f20b80caf165d2f15e8a77d614536e
This commit is contained in:
Vladimir Vukicevic
2016-08-17 13:22:52 -05:00
parent 4cfabbd921
commit f387e2e425
25 changed files with 1278 additions and 188 deletions

View File

@@ -0,0 +1,45 @@
# Copyright 2013 The Servo Project Developers. See the COPYRIGHT
# file at the top-level directory of this distribution.
#
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.
from win32api import GetModuleHandle
from win32gui import WNDCLASS, RegisterClass, CreateWindow, UpdateWindow
from win32gui import DestroyWindow, LoadIcon, NIF_ICON, NIF_MESSAGE, NIF_TIP
from win32gui import Shell_NotifyIcon, NIM_ADD, NIM_MODIFY, NIF_INFO, NIIF_INFO
import win32con
class WindowsToast:
def __init__(self):
# Register window class; it's okay to do this multiple times
wc = WNDCLASS()
wc.lpszClassName = 'ServoTaskbarNotification'
wc.lpfnWndProc = {win32con.WM_DESTROY: self.OnDestroy, }
self.classAtom = RegisterClass(wc)
self.hinst = wc.hInstance = GetModuleHandle(None)
def OnDestroy(self, hwnd, msg, wparam, lparam):
# We don't have to Shell_NotifyIcon to delete it, since
# we destroyed
pass
def balloon_tip(self, title, msg):
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
hwnd = CreateWindow(self.classAtom, "Taskbar", style, 0, 0,
win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
0, 0, self.hinst, None)
UpdateWindow(hwnd)
hicon = LoadIcon(0, win32con.IDI_APPLICATION)
nid = (hwnd, 0, NIF_ICON | NIF_MESSAGE | NIF_TIP, win32con.WM_USER + 20, hicon, 'Tooltip')
Shell_NotifyIcon(NIM_ADD, nid)
nid = (hwnd, 0, NIF_INFO, win32con.WM_USER + 20, hicon, 'Balloon Tooltip', msg, 200, title, NIIF_INFO)
Shell_NotifyIcon(NIM_MODIFY, nid)
DestroyWindow(hwnd)