@@ -108,7 +108,7 @@ py::class_<BMimeType>(m, "BMimeType")
108108.def (" GetLongDescription" , &BMimeType::GetLongDescription," " ,py::arg (" description" ))
109109.def (" GetSupportingApps" , &BMimeType::GetSupportingApps," " ,py::arg (" signatures" ))
110110.def (" SetIcon" , py::overload_cast<const BBitmap *, icon_size>(&BMimeType::SetIcon)," " ,py::arg (" icon" ),py::arg (" size" ))
111- // .def("SetIcon", py::overload_cast<unsigned char , size_t>(&BMimeType::SetIcon), "", py::arg("data"), py::arg("size"))
111+ .def (" SetIcon" , py::overload_cast<const uint8* ,size_t >(&BMimeType::SetIcon)," " ,py::arg (" data" ),py::arg (" size" ))
112112.def (" SetPreferredApp" , &BMimeType::SetPreferredApp," " ,py::arg (" signature" ),py::arg (" verb" )=B_OPEN)
113113.def (" SetAttrInfo" , &BMimeType::SetAttrInfo," " ,py::arg (" info" ))
114114.def (" SetFileExtensions" , &BMimeType::SetFileExtensions," " ,py::arg (" extensions" ))
@@ -121,8 +121,31 @@ py::class_<BMimeType>(m, "BMimeType")
121121.def_static (" IsValid_static" , py::overload_cast<const char *>(&BMimeType::IsValid)," " ,py::arg (" mimeType" ))
122122.def (" GetAppHint" , &BMimeType::GetAppHint," " ,py::arg (" ref" ))
123123.def (" SetAppHint" , &BMimeType::SetAppHint," " ,py::arg (" ref" ))
124- .def (" GetIconForType" , py::overload_cast<const char *, BBitmap *, icon_size>(&BMimeType::GetIconForType, py::const_)," " ,py::arg (" type" ),py::arg (" icon" ),py::arg (" which" ))
124+ // .def("GetIconForType", py::overload_cast<const char *, BBitmap *, icon_size>(&BMimeType::GetIconForType, py::const_), "", py::arg("type"), py::arg("icon"), py::arg("which"))
125+ .def (" GetIconForType_toBitmap" , [](const BMimeType &self,const char *type, icon_size size) {
126+ BBitmap *icon;
127+ // Chiamata alla funzione C++
128+ if (size==B_LARGE_ICON){
129+ icon =new BBitmap (BRect (0 ,0 ,31 ,31 ), B_RGBA32);
130+ }else {
131+ icon =new BBitmap (BRect (0 ,0 ,15 ,15 ), B_RGBA32);
132+ }
133+ status_t result = self.GetIconForType (type, icon, size);
134+
135+ // Restituisci una tupla contenente il risultato e l'oggetto BBitmap
136+ return std::make_tuple (result, icon);
137+ }," " ,py::arg (" type" ),py::arg (" size" )=B_LARGE_ICON)
125138// .def("GetIconForType", py::overload_cast<const char *, unsigned char, size_t *>(&BMimeType::GetIconForType, py::const_), "", py::arg("type"), py::arg("_data"), py::arg("_size"))
139+ .def (" GetIconForType_toVector" , [](const BMimeType &self,const char *type) {
140+ size_t size;
141+ uint8_t *data;
142+ status_t result = self.GetIconForType (type, &data, &size);
143+ auto capsule =py::capsule (data, [](void *d) {
144+ delete[] static_cast <uint8_t *>(d);
145+ });
146+
147+ return std::make_tuple (result, py::array_t <uint8_t >({static_cast <ssize_t >(size)}, {sizeof (uint8_t )}, data, capsule));
148+ }," " ,py::arg (" type" ))
126149.def (" SetIconForType" , py::overload_cast<const char *,const BBitmap *, icon_size>(&BMimeType::SetIconForType)," " ,py::arg (" type" ),py::arg (" icon" ),py::arg (" which" ))
127150.def (" SetIconForType" , py::overload_cast<const char *,const uint8*,size_t >(&BMimeType::SetIconForType)," " ,py::arg (" type" ),py::arg (" data" ),py::arg (" size" ))
128151.def (" GetSnifferRule" , &BMimeType::GetSnifferRule," " ,py::arg (" result" ))