Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
023dcfe2
Commit
023dcfe2
authored
Dec 18, 2001
by
Just van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added support for tab controls and initial (incomplete) support
for DataBrowser controls.
parent
3aedee1e
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
543 additions
and
12 deletions
+543
-12
Mac/Modules/ctl/_Ctlmodule.c
Mac/Modules/ctl/_Ctlmodule.c
+394
-2
Mac/Modules/ctl/ctlscan.py
Mac/Modules/ctl/ctlscan.py
+32
-7
Mac/Modules/ctl/ctlsupport.py
Mac/Modules/ctl/ctlsupport.py
+117
-3
No files found.
Mac/Modules/ctl/_Ctlmodule.c
View file @
023dcfe2
This diff is collapsed.
Click to expand it.
Mac/Modules/ctl/ctlscan.py
View file @
023dcfe2
...
...
@@ -87,7 +87,9 @@ class MyScanner(Scanner):
'SetControlProperty'
,
'GetControlPropertySize'
,
'SendControlMessage'
,
# Parameter changed from long to void* from UH3.3 to UH3.4
# unavailable in Just's CW6 + UH 3.4 libs
'CreateTabsControl'
,
# wrote manually
# these are part of Carbon, yet not in CarbonLib; OSX-only
'CreateRoundButtonControl'
,
'CreateDisclosureButtonControl'
,
'CreateRelevanceBarControl'
,
'DisableControl'
,
...
...
@@ -95,6 +97,10 @@ class MyScanner(Scanner):
'IsControlEnabled'
,
'CreateEditUnicodeTextControl'
,
'CopyDataBrowserEditText'
,
# too lazy for now
'GetImageWellContentInfo'
,
'GetBevelButtonContentInfo'
,
]
def
makegreylist
(
self
):
...
...
@@ -127,6 +133,16 @@ class MyScanner(Scanner):
'HandleControlSetCursor'
,
'GetControlClickActivation'
,
'HandleControlContextualMenuClick'
,
"CreateBevelButtonControl"
,
"CreateImageWellControl"
,
"CreatePictureControl"
,
"CreateIconControl"
,
"CreatePushButtonWithIconControl"
,
"SetBevelButtonContentInfo"
,
"SetImageWellContentInfo"
,
"AddDataBrowserListViewColumn"
,
"CreateDataBrowserControl"
,
"CreateScrollingTextBoxControl"
,
"CreateRadioGroupControl"
,
...
...
@@ -242,7 +258,6 @@ class MyScanner(Scanner):
return
[
'ProcPtr'
,
'ControlActionUPP'
,
'ControlButtonContentInfoPtr'
,
'Ptr'
,
'ControlDefSpec'
,
# Don't know how to do this yet
'ControlDefSpec_ptr'
,
# ditto
...
...
@@ -250,9 +265,10 @@ class MyScanner(Scanner):
# not-yet-supported stuff in Universal Headers 3.4:
'ControlColorUPP'
,
'ControlKind'
,
# XXX easy: 2-tuple containing 2 OSType's
'ControlTabEntry_ptr'
,
# XXX needed for tabs
'ControlButtonContentInfo'
,
# XXX ugh: a union
'ControlButtonContentInfo_ptr'
,
# XXX ugh: a union
# 'ControlTabEntry_ptr', # XXX needed for tabs
# 'ControlButtonContentInfoPtr',
# 'ControlButtonContentInfo', # XXX ugh: a union
# 'ControlButtonContentInfo_ptr', # XXX ugh: a union
'ListDefSpec_ptr'
,
# XXX see _Listmodule.c, tricky but possible
'DataBrowserItemID_ptr'
,
# XXX array of UInt32, for BrowserView
'DataBrowserItemUPP'
,
...
...
@@ -261,8 +277,8 @@ class MyScanner(Scanner):
'DataBrowserCallbacks_ptr'
,
'DataBrowserCustomCallbacks'
,
'DataBrowserCustomCallbacks_ptr'
,
'DataBrowserTableViewColumnDesc'
,
'DataBrowserListViewColumnDesc'
,
##
'DataBrowserTableViewColumnDesc',
##
'DataBrowserListViewColumnDesc',
'CFDataRef'
,
]
...
...
@@ -292,6 +308,15 @@ class MyScanner(Scanner):
([(
"Rect_ptr"
,
"*"
,
"ReturnMode"
)],
# GetControlBounds
[(
"void"
,
"*"
,
"ReturnMode"
)]),
([(
"DataBrowserListViewColumnDesc"
,
"*"
,
"OutMode"
)],
[(
"DataBrowserListViewColumnDesc"
,
"*"
,
"InMode"
)]),
([(
"ControlButtonContentInfoPtr"
,
'outContent'
,
"InMode"
)],
[(
"ControlButtonContentInfoPtr"
,
'*'
,
"OutMode"
)]),
([(
"ControlButtonContentInfo"
,
'*'
,
"OutMode"
)],
[(
"ControlButtonContentInfo"
,
'*'
,
"InMode"
)]),
]
if
__name__
==
"__main__"
:
...
...
Mac/Modules/ctl/ctlsupport.py
View file @
023dcfe2
...
...
@@ -78,7 +78,21 @@ DataBrowserTableViewColumnIndex = UInt32
DataBrowserPropertyType
=
OSType
ControlDisclosureTriangleOrientation
=
UInt16
DataBrowserTableViewColumnDesc
=
OpaqueType
(
"DataBrowserTableViewColumnDesc"
,
"DataBrowserTableViewColumnDesc"
)
DataBrowserListViewColumnDesc
=
OpaqueType
(
"DataBrowserListViewColumnDesc"
,
"DataBrowserListViewColumnDesc"
)
ControlButtonContentInfo
=
OpaqueType
(
"ControlButtonContentInfo"
,
"ControlButtonContentInfo"
)
ControlButtonContentInfoPtr
=
ControlButtonContentInfo_ptr
=
ControlButtonContentInfo
ControlTabEntry_ptr
=
OpaqueType
(
"ControlTabEntry"
,
"ControlTabEntry"
)
ControlBevelThickness
=
UInt16
ControlBevelButtonBehavior
=
UInt16
ControlBevelButtonMenuBehavior
=
UInt16
ControlBevelButtonMenuPlacement
=
UInt16
ControlPushButtonIconAlignment
=
UInt16
includestuff
=
includestuff
+
"""
#ifdef WITHOUT_FRAMEWORKS
...
...
@@ -106,6 +120,7 @@ staticforward PyObject *CtlObj_WhichControl(ControlHandle);
#define GetControlRect(ctl, rectp) (*(rectp) = ((*(ctl))->contrlRect))
#endif
#define MAXTABS 32 /* maximum number of tabs that we support in a tabs control */
/*
** Parse/generate ControlFontStyleRec records
*/
...
...
@@ -123,7 +138,7 @@ ControlFontStyle_New(ControlFontStyleRec *itself)
static int
ControlFontStyle_Convert(PyObject *v, ControlFontStyleRec *itself)
{
return PyArg_Parse
Tuple(v, "hhhhhhO&O&
", &itself->flags,
return PyArg_Parse
(v, "(hhhhhhO&O&)
", &itself->flags,
&itself->font, &itself->size, &itself->style, &itself->mode,
&itself->just, QdRGB_Convert, &itself->foreColor,
QdRGB_Convert, &itself->backColor);
...
...
@@ -142,9 +157,50 @@ PyControlID_New(ControlID *itself)
static int
PyControlID_Convert(PyObject *v, ControlID *itself)
{
return PyArg_Parse
Tuple(v, "O&l
", PyMac_GetOSType, &itself->signature, &itself->id);
return PyArg_Parse
(v, "(O&l)
", PyMac_GetOSType, &itself->signature, &itself->id);
}
/*
** generate DataBrowserListViewColumnDesc records
*/
static int
DataBrowserTableViewColumnDesc_Convert(PyObject *v, DataBrowserTableViewColumnDesc *itself)
{
return PyArg_Parse(v, "(lO&l)",
&itself->propertyID,
PyMac_GetOSType, &itself->propertyType,
&itself->propertyFlags);
}
static int
ControlButtonContentInfo_Convert(PyObject *v, ControlButtonContentInfo *itself)
{
return PyArg_Parse(v, "(hO&)",
&itself->contentType,
OptResObj_Convert, &itself->u.iconSuite);
}
static int
DataBrowserListViewHeaderDesc_Convert(PyObject *v, DataBrowserListViewHeaderDesc *itself)
{
itself->version = kDataBrowserListViewLatestHeaderDesc;
return PyArg_Parse(v, "(HHhO&HO&O&)",
&itself->minimumWidth,
&itself->maximumWidth,
&itself->titleOffset,
CFStringRefObj_Convert, &itself->titleString,
&itself->initialOrder,
ControlFontStyle_Convert, &itself->btnFontStyle,
ControlButtonContentInfo_Convert, &itself->btnContentInfo);
}
static int
DataBrowserListViewColumnDesc_Convert(PyObject *v, DataBrowserListViewColumnDesc *itself)
{
return PyArg_Parse(v, "(O&O&)",
DataBrowserTableViewColumnDesc_Convert, &itself->propertyDesc,
DataBrowserListViewHeaderDesc_Convert, &itself->headerBtnDesc);
}
/* TrackControl and HandleControlClick callback support */
static PyObject *tracker;
...
...
@@ -665,6 +721,64 @@ f = ManualGenerator("SetPopupData", setpopupdata_body, condition="#if !TARGET_AP
object
.
add
(
f
)
createtabscontrol_body
=
"""
\
OSStatus _err;
WindowPtr window;
Rect boundsRect;
UInt16 size;
UInt16 direction;
int i;
UInt16 numTabs;
ControlTabEntry tabArray[MAXTABS];
ControlHandle outControl;
PyObject *tabArrayObj, *tabEntry;
#ifndef CreateTabsControl
PyMac_PRECHECK(CreateTabsControl);
#endif
if (!PyArg_ParseTuple(_args, "O&O&HHO",
WinObj_Convert, &window,
PyMac_GetRect, &boundsRect,
&size,
&direction,
&tabArrayObj))
return NULL;
i = PySequence_Length(tabArrayObj);
if (i == -1)
return NULL;
if (i > MAXTABS) {
PyErr_SetString(Ctl_Error, "Too many tabs");
return NULL;
}
numTabs = i;
for (i=0; i<numTabs; i++) {
tabEntry = PySequence_GetItem(tabArrayObj, i);
if (tabEntry == NULL)
return NULL;
if (!PyArg_Parse(tabEntry, "(O&O&B)",
ControlButtonContentInfo_Convert, &tabArray[i].icon,
CFStringRefObj_Convert, &tabArray[i].name,
&tabArray[i].enabled
))
return NULL;
}
_err = CreateTabsControl(window,
&boundsRect,
size,
direction,
numTabs,
tabArray,
&outControl);
if (_err != noErr) return PyMac_Error(_err);
_res = Py_BuildValue("O&",
CtlObj_New, outControl);
return _res;"""
f
=
ManualGenerator
(
"CreateTabsControl"
,
createtabscontrol_body
,
condition
=
"#if TARGET_API_MAC_CARBON"
)
module
.
add
(
f
)
# generate output (open the output file as late as possible)
SetOutputFileName
(
OUTPUTFILE
)
module
.
generate
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment