Exemple #1
0
	def Run(self, hwnd, *flags, **kwargs):
		
		self._dlgs_lastImageIndex = None
		self._dlgs_fHook = False
		
		shb=BROWSEINFO()
		for i in flags:
			if i=='hook':
				self._dlgs_fHook = True
			try: shb.ulFlags |= BF_FLAGS[i]
			except: raise "invalid flag: %s" % i
					
		shb.hwndOwner=hwnd and hwnd or 0
		shb.lpszTitle = kwargs.get('title', '')
		shb.pidlRoot=  kwargs.get('root', PIDL())
		shb.lpfn=self._dlgs_pBffCallBack
		
		## not very usefull. Holds the displayname of the
		## folder selected on return
		p = create_string_buffer(260)	 # MAX_PATH
		shb.pszDisplayName = addressof(p)
						
		result=shell32.SHBrowseForFolder(byref(shb))
		self.Hwnd=0
		if result:	
			self._dlgs_lastImageIndex = shb.iImage
			pIdl=pointer(ITEMIDLIST.from_address(result))
			return pIdl
		return None	
Exemple #2
0
    def Run(self, show="normal"):
        try:
            show = ["hidden", "normal", "minimized", "maximized"].index(show)
        except:
            try:
                range(4)[show]
            except:
                raise ValueError, "invalid flag: %s" % show

            # run the messageloop
        self._base_fIsopen = True
        self.onMSG(self.Hwnd, "create", 0, 0)  # looks like take it out
        user32.ShowWindow(self.Hwnd, show)
        user32.UpdateWindow(self.Hwnd)
        GM, TM, DM, TACC = (
            user32.GetMessageA,
            user32.TranslateMessage,
            user32.DispatchMessageA,
            user32.TranslateAcceleratorA,
        )
        msg = MSG()

        pMsg = pointer(msg)
        if self.GetStyleL("basestyle") & self.Style.WS_BASE_DIALOGLIKE:
            IsDialogMessage = user32.IsDialogMessageA
            #
            # TODO
            #
            # would be better to call when all childwindows have been created
            # but thats a thing we don't know
            # needs some heavier testing, we'll see
            #
            self.onMSG(self.Hwnd, "open", 0, 0)
            _exit.Unregister(self.Hwnd)
            while GM(pMsg, 0, 0, 0) > 0:
                if not IsDialogMessage(self._base_hwndDlgMsg, pMsg):
                    if self._base_hAccelerator:
                        if not TACC(self.Hwnd, self._base_hAccelerator, pMsg):
                            TM(pMsg)
                    else:
                        TM(pMsg)
                    DM(pMsg)

        else:
            self.onMSG(self.Hwnd, "open", 0, 0)
            _exit.Unregister(self.Hwnd)
            while GM(pMsg, 0, 0, 0) > 0:
                if self._base_hAccelerator:
                    if not TACC(self.Hwnd, self._base_hAccelerator, pMsg):
                        TM(pMsg)
                else:
                    TM(pMsg)
                DM(pMsg)
Exemple #3
0
	def Run(self, show='normal'):
		try: show=['hidden','normal', 'minimized','maximized'].index(show)
		except:
			try: range(4)[show]
			except:	raise ValueError, "invalid flag: %s" % show			
		
		# run the messageloop
		self._base_fIsopen= True
		self.onMSG(self.Hwnd, "create", 0, 0)	# looks like take it out
		user32.ShowWindow(self.Hwnd, show)
		user32.UpdateWindow(self.Hwnd)
		GM, TM, DM, TACC=(user32.GetMessageA,
									user32.TranslateMessage,
									user32.DispatchMessageA,
									user32.TranslateAcceleratorA) 
		msg = MSG()
				
		pMsg = pointer(msg)
		if self.GetStyleL('basestyle') & self.Style.WS_BASE_DIALOGLIKE:
			IsDialogMessage=user32.IsDialogMessageA
			#
			# TODO
			#
			# would be better to call when all childwindows have been created
			# but thats a thing we don't know
			# needs some heavier testing, we'll see
			#
			self.onMSG(self.Hwnd, "open", 0, 0)
			_exit.Unregister(self.Hwnd)
			while GM( pMsg, 0, 0, 0) > 0:
				if not IsDialogMessage(self._base_hwndDlgMsg, pMsg):
					if self._base_hAccelerator:
						if not TACC(self.Hwnd, self._base_hAccelerator, pMsg):
							TM(pMsg)
					else:
						TM(pMsg)
					DM(pMsg)
		
				
		else:
			self.onMSG(self.Hwnd, "open", 0, 0)
			_exit.Unregister(self.Hwnd)
			while GM( pMsg, 0, 0, 0) > 0:
				if self._base_hAccelerator:
					if not TACC(self.Hwnd, self._base_hAccelerator, pMsg):
						TM(pMsg)
				else:
					TM(pMsg)
				DM(pMsg)
Exemple #4
0
	def _BffCallBack(self, hwnd, msg, wp, lp):
		
		if msg==BFFM_INITIALIZED:
			self.Hwnd = hwnd
			if self._dlgs_fHook:
				self._dlgs_pOldProc = user32.SetWindowLongA(hwnd, -4, self.GetDlgProc())
			self.onINIT(hwnd, msg, wp, lp)
					
		elif msg==BFFM_SELCHANGED:
			pIdl= pointer(ITEMIDLIST.from_address(wp))	## passes IDL in wp
			try:
				self.onMSG(hwnd, "bff_selchanged", pIdl, 0)
			finally:
				Malloc.Free(pIdl)
		
		elif msg==BFFM_VALIDATEFAILEDA:
			result=self.onMSG(hwnd, "bff_validatefailed", c_char_p(wp).value, 0)
			if result==False: return 1
			return 0
		return 0
    def Run(self):

        if self.Hwnd:
            raise RuntimeError, "property sheet is alreaddy created"

        if not self._client_pages:
            raise RuntimeError, "property sheet must have at least one page"

        self._client_p.nPages = len(self._client_pages)
        arr = (PROPSHEETPAGE * self._client_p.nPages)(*self._client_pages)
        self._client_p.u3.ppsp = pointer(arr[0])
        result = comctl32.PropertySheetA(byref(self._client_p))
        if self._client_mode == 'modeless':
            if result == ID_PSRESTARTWINDOWS:
                return 'restart'
            elif result == ID_PSREBOOTSYSTEM:
                return 'reboot'
            elif result:
                return 'ok'
            return 'cancel'

        else:
            if result: return result
	def Run(self):
		
		if self.Hwnd:
			raise RuntimeError, "property sheet is alreaddy created"
		
		if not self._client_pages:
			raise RuntimeError, "property sheet must have at least one page"
		
		self._client_p.nPages = len(self._client_pages)
		arr= (PROPSHEETPAGE*self._client_p.nPages)(*self._client_pages)
		self._client_p.u3.ppsp= pointer(arr[0])
		result= comctl32.PropertySheetA(byref(self._client_p))
		if self._client_mode=='modeless': 
			if result==ID_PSRESTARTWINDOWS:
				return 'restart'
			elif result==ID_PSREBOOTSYSTEM:
				return 'reboot'
			elif result: 
				return 'ok'
			return 'cancel'
			
		else:
			if result:	return result
Exemple #7
0
	def GetLayout(self, Rect):
		wp= WINDOWPOS()
		lo= HDLAYOUT(pointer(Rect), pointer(wp))
		if self.SendMessage(self.Hwnd, self.Msg.HDM_LAYOUT, 0, byref(lo)):
			return RECT(wp.x, wp.y, wp.cx, wp.cy)
		raise RuntimeError("could not retrieve header layout")