GadgetIDType
Posted: Wed Dec 24, 2014 2:48 pm
Returns the type of gadget through Handley
Code: Select all
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Import ""
CompilerElse
ImportC ""
CompilerEndIf
PB_Object_EnumerateStart(Object)
PB_Object_EnumerateNext(Object,*ID.Integer)
PB_Object_EnumerateAbort(Object)
PB_Object_EnumerateAll(Object,*CallBack,*Data)
PB_Object_Count(Object)
PB_Window_Objects.l
PB_Gadget_Objects.l
PB_Image_Objects.l
EndImport
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
Procedure GtkButton( GadgetID )
If GadgetID >0
Static Widget
;While GadgetID
Widget = GadgetID
;GadgetID = gtk_widget_get_parent_( GadgetID )
If PeekS( gtk_widget_get_name_( GadgetID ), -1, #PB_UTF8 ) = "GtkButton"
Widget = g_list_nth_data_(gtk_container_get_children_((GadgetID)), 0)
If Widget And PeekS( gtk_widget_get_name_( Widget), -1, #PB_UTF8 ) <> "GtkImage"
Protected *style.GtkStyle = gtk_widget_get_style_(Widget)
;145586704
;Debug "GtkButton" + *style\property_cache\data
;144367632
;Debug "GtkButton" + Str(*style\parent_instance)
If *style\styles\data
Debug "GtkButton" + PeekS( gtk_widget_get_name_( *style\styles\data), -1, #PB_UTF8 )
EndIf
ProcedureReturn Widget
EndIf
EndIf
;Wend
EndIf
EndProcedure
CompilerEndIf
ProcedureDLL.s GadgetName( Type )
Protected GadgetName.s
Select Type
Case #PB_GadgetType_Unknown :GadgetName = "OpenWindow"
Case #PB_GadgetType_Button :GadgetName = "ButtonGadget"
Case #PB_GadgetType_String :GadgetName = "StringGadget"
Case #PB_GadgetType_Text :GadgetName = "TextGadget"
Case #PB_GadgetType_CheckBox :GadgetName = "CheckBoxGadget"
Case #PB_GadgetType_Option :GadgetName = "OptionGadget"
Case #PB_GadgetType_ListView :GadgetName = "ListViewGadget"
Case #PB_GadgetType_Frame :GadgetName = "FrameGadget"
Case #PB_GadgetType_ComboBox :GadgetName = "ComboBoxGadget"
Case #PB_GadgetType_Image :GadgetName = "ImageGadget"
Case #PB_GadgetType_HyperLink :GadgetName = "HyperLinkGadget"
Case #PB_GadgetType_Container :GadgetName = "ContainerGadget"
Case #PB_GadgetType_ListIcon :GadgetName = "ListIconGadget"
Case #PB_GadgetType_IPAddress :GadgetName = "IPAddressGadget"
Case #PB_GadgetType_ProgressBar :GadgetName = "ProgressBarGadget"
Case #PB_GadgetType_ScrollBar :GadgetName = "ScrollBarGadget"
Case #PB_GadgetType_ScrollArea :GadgetName = "ScrollAreaGadget"
Case #PB_GadgetType_TrackBar :GadgetName = "TrackBarGadget"
Case #PB_GadgetType_Web :GadgetName = "WebGadget"
Case #PB_GadgetType_ButtonImage :GadgetName = "ButtonImageGadget"
Case #PB_GadgetType_Calendar :GadgetName = "CalendarGadget"
Case #PB_GadgetType_Date :GadgetName = "DateGadget"
Case #PB_GadgetType_Editor :GadgetName = "EditorGadget"
Case #PB_GadgetType_ExplorerList :GadgetName = "ExplorerListGadget"
Case #PB_GadgetType_ExplorerTree :GadgetName = "ExplorerTreeGadget"
Case #PB_GadgetType_ExplorerCombo :GadgetName = "ExplorerComboGadget"
Case #PB_GadgetType_Spin :GadgetName = "SpinGadget"
Case #PB_GadgetType_Tree :GadgetName = "TreeGadget"
Case #PB_GadgetType_Panel :GadgetName = "PanelGadget"
Case #PB_GadgetType_Splitter :GadgetName = "SplitterGadget"
Case #PB_GadgetType_MDI
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
GadgetName = "MDIGadget"
CompilerEndIf
Case #PB_GadgetType_Scintilla :GadgetName = "ScintillaGadget"
Case #PB_GadgetType_Shortcut :GadgetName = "ShortcutGadget"
Case #PB_GadgetType_Canvas :GadgetName = "CanvasGadget"
EndSelect
ProcedureReturn GadgetName
EndProcedure
ProcedureDLL GadgetIDType( GadgetID ) ;Returns gadget type from gadgetID
If GadgetID
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
Select PeekS( gtk_widget_get_name_( GadgetID ), -1, #PB_UTF8 )
Case "GtkButton"
Debug GtkButton( GadgetID )
Protected children = g_list_nth_data_( gtk_container_get_children_( GadgetID ), 0)
If PeekS( gtk_widget_get_name_( children ), -1, #PB_UTF8 ) = "GtkImage"
ProcedureReturn #PB_GadgetType_ButtonImage
Else
ProcedureReturn #PB_GadgetType_Button
ProcedureReturn #PB_GadgetType_HyperLink
ProcedureReturn #PB_GadgetType_HyperLink
EndIf
Case "GtkEntry" :ProcedureReturn #PB_GadgetType_Shortcut
; Case "GtkEntry" :ProcedureReturn #PB_GadgetType_Date
; Case "GtkEntry" :ProcedureReturn #PB_GadgetType_String
; Case "GtkEntry" :ProcedureReturn #PB_GadgetType_IPAddress
;
Case "GtkTreeView" :ProcedureReturn #PB_GadgetType_Tree
; Case "GtkTreeView" :ProcedureReturn #PB_GadgetType_ListView
; Case "GtkTreeView" :ProcedureReturn #PB_GadgetType_ListIcon
; Case "GtkTreeView" :ProcedureReturn #PB_GadgetType_ExplorerList
; Case "GtkTreeView" :ProcedureReturn #PB_GadgetType_ExplorerTree
Case "GtkLabel" :ProcedureReturn #PB_GadgetType_Text
Case "GtkCheckButton" :ProcedureReturn #PB_GadgetType_CheckBox
Case "GtkRadioButton" :ProcedureReturn #PB_GadgetType_Option
Case "GtkFrame" :ProcedureReturn #PB_GadgetType_Frame
Case "GtkComboBox" :ProcedureReturn #PB_GadgetType_ComboBox
Case "GtkImage" :ProcedureReturn #PB_GadgetType_Image
Case "GtkFixed" :ProcedureReturn #PB_GadgetType_Container
Case "GtkProgressBar" :ProcedureReturn #PB_GadgetType_ProgressBar
Case "OsScrollbar" :ProcedureReturn #PB_GadgetType_ScrollBar
Case "GtkScrolledWindow" :ProcedureReturn #PB_GadgetType_ScrollArea
Case "GtkHScale" :ProcedureReturn #PB_GadgetType_TrackBar
Case "WebKitWebView" :ProcedureReturn #PB_GadgetType_Web
Case "GtkCalendar" :ProcedureReturn #PB_GadgetType_Calendar
Case "GtkTextView" :ProcedureReturn #PB_GadgetType_Editor
Case "GtkComboBoxEntry" :ProcedureReturn #PB_GadgetType_ExplorerCombo
Case "GtkHBox" :ProcedureReturn #PB_GadgetType_Spin
Case "GtkNotebook" :ProcedureReturn #PB_GadgetType_Panel
Case "GtkVPaned" :ProcedureReturn #PB_GadgetType_Splitter
Case "Scintilla" :ProcedureReturn #PB_GadgetType_Scintilla
Case "GtkDrawingArea" :ProcedureReturn #PB_GadgetType_Canvas
EndSelect
CompilerElseIf #PB_Compiler_OS = #PB_OS_Windows
Protected *Memory = ReAllocateMemory (0, 255)
GetClassName_ (GadgetID, *Memory, 255)
Select PeekS (*Memory)
Case "Button"
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) & #BS_CHECKBOX
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1342373891 ;1342308359
ProcedureReturn #PB_GadgetType_CheckBox
Else
ProcedureReturn #PB_GadgetType_Frame
EndIf
ElseIf GetWindowLongPtr_( GadgetID, #GWL_STYLE ) & #BS_GROUPBOX
ProcedureReturn #PB_GadgetType_Option
Else
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1342373888 ;1342242816
ProcedureReturn #PB_GadgetType_Button
Else
ProcedureReturn #PB_GadgetType_ButtonImage
EndIf
EndIf
Case "Edit"
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1342374016 ;1342242818
ProcedureReturn #PB_GadgetType_String
Else
ProcedureReturn #PB_GadgetType_Spin
EndIf
Case "Static"
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1342308480
ProcedureReturn #PB_GadgetType_Text
Else
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1342177536
ProcedureReturn #PB_GadgetType_Image
Else
ProcedureReturn #PB_GadgetType_HyperLink
EndIf
EndIf
Case "SysListView32"
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1345323333 ;1342242885
ProcedureReturn #PB_GadgetType_ExplorerList
Else
ProcedureReturn #PB_GadgetType_ListIcon
EndIf
Case "SysTreeView32"
If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) = 1345388547 ;1342242823
ProcedureReturn #PB_GadgetType_ExplorerTree
Else
ProcedureReturn #PB_GadgetType_Tree
EndIf
Case "ListBox" :ProcedureReturn #PB_GadgetType_ListView
Case "ComboBox" :ProcedureReturn #PB_GadgetType_ComboBox
Case "PureContainer" :ProcedureReturn #PB_GadgetType_Container
Case "SysIPAddress32" :ProcedureReturn #PB_GadgetType_IPAddress
Case "msctls_progress32" :ProcedureReturn #PB_GadgetType_ProgressBar
Case "ScrollBar" :ProcedureReturn #PB_GadgetType_ScrollBar
Case "PureScrollArea" :ProcedureReturn #PB_GadgetType_ScrollArea
Case "msctls_trackbar32" :ProcedureReturn #PB_GadgetType_TrackBar
Case "PureWeb" :ProcedureReturn #PB_GadgetType_Web
Case "SysMonthCal32" :ProcedureReturn #PB_GadgetType_Calendar
Case "SysDateTimePick32" :ProcedureReturn #PB_GadgetType_Date
Case "RichEdit20W" :ProcedureReturn #PB_GadgetType_Editor
Case "ComboBoxEx32" :ProcedureReturn #PB_GadgetType_ExplorerCombo
Case "SysTabControl32" :ProcedureReturn #PB_GadgetType_Panel
Case "PureSplitter" :ProcedureReturn #PB_GadgetType_Splitter
Case "MDIClient" :ProcedureReturn #PB_GadgetType_MDI
Case "Scintilla" :ProcedureReturn #PB_GadgetType_Scintilla
Case "msctls_hotkey32" :ProcedureReturn #PB_GadgetType_Shortcut
Case "PureCanvas" :ProcedureReturn #PB_GadgetType_Canvas
EndSelect
EndIf
ProcedureReturn #False
CompilerEndIf
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
#Version =1
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 : #Core="x86" : CompilerEndIf
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64 : #Core="x64" : CompilerEndIf
OpenWindow(1, 0, 0, 995, 455, #Core+" "+1, #PB_Window_Invisible | #PB_Window_SystemMenu | #PB_Window_SizeGadget)
ButtonGadget(1, 5, 5, 160,70, "ButtonGadget1" )
StringGadget(2, 5, 80, 160,70, "StringGadget2")
TextGadget(3, 5, 155, 160,70, "TextGadget3" )
CheckBoxGadget(4, 5, 230, 160,70, "CheckBoxGadget4" )
OptionGadget(5, 5, 305, 160,70, "OptionGadget5" )
ListViewGadget(6, 5, 380, 160,70 )
FrameGadget(7, 170, 5, 160,70, "FrameGadget7" )
ComboBoxGadget(8, 170, 80, 160,70 )
ImageGadget(9, 170, 155, 160,70,0,#PB_Image_Border )
HyperLinkGadget(10, 170, 230, 160,70,"HyperLinkGadget10",0 )
ContainerGadget(11, 170, 305, 160,70,#PB_Container_Single ) :CloseGadgetList()
ListIconGadget(12, 170, 380, 160,70,"ListIconGadget12",60 )
IPAddressGadget(13, 335, 5, 160,70 )
ProgressBarGadget(14, 335, 80, 160,70,0,0 )
ScrollBarGadget(15, 335, 155, 160,70,0,0,0 )
ScrollAreaGadget(16, 335, 230, 160,70,0,0,0,#PB_ScrollArea_Single ) :CloseGadgetList()
TrackBarGadget(17, 335, 305, 160,70,0,0 )
WebGadget(18, 335, 380, 160,70,"http://www.purebasic.fr/english/" )
ButtonImageGadget(19, 500, 5, 160,70,0 )
CalendarGadget(20, 500, 80, 160,70 )
DateGadget(21, 500, 155, 160,70 )
EditorGadget(22, 500, 230, 160,70 )
ExplorerListGadget(23, 500, 305, 160,70,"" )
ExplorerTreeGadget(24, 500, 380, 160,70,"" )
ExplorerComboGadget(25, 665, 5, 160,70,"" )
SpinGadget(26, 665, 80, 160,70,0,0 )
TreeGadget(27, 665, 155, 160,70 )
PanelGadget(28, 665, 230, 160,70 ) :CloseGadgetList()
ButtonGadget(291, 0, 0, 0,20, "ButtonGadget" )
StringGadget(292, 0, 0, 0,20, "StringGadget")
SplitterGadget(29, 665, 305, 160,70,292,291 )
;ResizeGadget(292, #PB_Ignore, #PB_Ignore, #PB_Ignore, 20)
;MDIGadget(30, 665, 380, 160,70,1,1 )
InitScintilla()
ScintillaGadget(31, 830, 5, 160,70,0 )
ShortcutGadget(32, 830, 80, 160,70 ,-1)
CanvasGadget(33, 830, 155, 160,70 )
HideWindow(1,0)
Define Gadget
PB_Object_EnumerateStart(PB_Gadget_Objects)
While PB_Object_EnumerateNext(PB_Gadget_Objects, @Gadget)
Debug ""+GadgetIDType(GadgetID(Gadget)) +" "+ GadgetName(GadgetType((Gadget)))
Wend
PB_Object_EnumerateAbort(PB_Gadget_Objects)
Repeat
Event = WaitWindowEvent()
Until Event= #PB_Event_CloseWindow
CompilerEndIf