Removing unused imports, reorder them and replace windll with ctypes.windll (the same)

This commit is contained in:
Thomas-Karl Pietrowski 2016-03-15 12:53:29 +01:00
parent 6cd1171051
commit 9684ca80d7

View file

@ -2,22 +2,14 @@
# Copyright (c) 2013 David Braam # Copyright (c) 2013 David Braam
# Uranium is released under the terms of the AGPLv3 or higher. # Uranium is released under the terms of the AGPLv3 or higher.
from . import RemovableDrivePlugin
import threading
import string
from ctypes import windll
from ctypes import wintypes
import ctypes
import time
import os
import subprocess
from UM.i18n import i18nCatalog from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura") catalog = i18nCatalog("cura")
from . import RemovableDrivePlugin
import string
import ctypes
# WinAPI Constants that we need # WinAPI Constants that we need
# Hardcoded here due to stupid WinDLL stuff that does not give us access to these values. # Hardcoded here due to stupid WinDLL stuff that does not give us access to these values.
DRIVE_REMOVABLE = 2 # [CodeStyle: Windows Enum value] DRIVE_REMOVABLE = 2 # [CodeStyle: Windows Enum value]
@ -37,7 +29,7 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin):
def checkRemovableDrives(self): def checkRemovableDrives(self):
drives = {} drives = {}
bitmask = windll.kernel32.GetLogicalDrives() bitmask = ctypes.windll.kernel32.GetLogicalDrives()
# Check possible drive letters, from A to Z # Check possible drive letters, from A to Z
# Note: using ascii_uppercase because we do not want this to change with locale! # Note: using ascii_uppercase because we do not want this to change with locale!
for letter in string.ascii_uppercase: for letter in string.ascii_uppercase:
@ -45,11 +37,11 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin):
# Do we really want to skip A and B? # Do we really want to skip A and B?
# GetDriveTypeA explicitly wants a byte array of type ascii. It will accept a string, but this wont work # GetDriveTypeA explicitly wants a byte array of type ascii. It will accept a string, but this wont work
if bitmask & 1 and windll.kernel32.GetDriveTypeA(drive.encode("ascii")) == DRIVE_REMOVABLE: if bitmask & 1 and ctypes.windll.kernel32.GetDriveTypeA(drive.encode("ascii")) == DRIVE_REMOVABLE:
volume_name = "" volume_name = ""
name_buffer = ctypes.create_unicode_buffer(1024) name_buffer = ctypes.create_unicode_buffer(1024)
filesystem_buffer = ctypes.create_unicode_buffer(1024) filesystem_buffer = ctypes.create_unicode_buffer(1024)
error = windll.kernel32.GetVolumeInformationW(ctypes.c_wchar_p(drive), name_buffer, ctypes.sizeof(name_buffer), None, None, None, filesystem_buffer, ctypes.sizeof(filesystem_buffer)) error = ctypes.windll.kernel32.GetVolumeInformationW(ctypes.c_wchar_p(drive), name_buffer, ctypes.sizeof(name_buffer), None, None, None, filesystem_buffer, ctypes.sizeof(filesystem_buffer))
if error != 0: if error != 0:
volume_name = name_buffer.value volume_name = name_buffer.value
@ -66,7 +58,7 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin):
# Check for the free space. Some card readers show up as a drive with 0 space free when there is no card inserted. # Check for the free space. Some card readers show up as a drive with 0 space free when there is no card inserted.
free_bytes = ctypes.c_longlong(0) free_bytes = ctypes.c_longlong(0)
if windll.kernel32.GetDiskFreeSpaceExA(drive.encode("ascii"), ctypes.byref(free_bytes), None, None) == 0: if ctypes.windll.kernel32.GetDiskFreeSpaceExA(drive.encode("ascii"), ctypes.byref(free_bytes), None, None) == 0:
continue continue
if free_bytes.value < 1: if free_bytes.value < 1:
@ -80,19 +72,19 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin):
def performEjectDevice(self, device): def performEjectDevice(self, device):
# Magic WinAPI stuff # Magic WinAPI stuff
# First, open a handle to the Device # First, open a handle to the Device
handle = windll.kernel32.CreateFileA("\\\\.\\{0}".format(device.getId()[:-1]).encode("ascii"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, None, OPEN_EXISTING, 0, None ) handle = ctypes.windll.kernel32.CreateFileA("\\\\.\\{0}".format(device.getId()[:-1]).encode("ascii"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, None, OPEN_EXISTING, 0, None )
if handle == -1: if handle == -1:
print(windll.kernel32.GetLastError()) print(ctypes.windll.kernel32.GetLastError())
return return
result = None result = None
# Then, try and tell it to eject # Then, try and tell it to eject
if not windll.kernel32.DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, None, None, None, None, None, None): if not ctypes.windll.kernel32.DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, None, None, None, None, None, None):
result = False result = False
else: else:
result = True result = True
# Finally, close the handle # Finally, close the handle
windll.kernel32.CloseHandle(handle) ctypes.windll.kernel32.CloseHandle(handle)
return result return result