Example #1
0
def test_objc_arr_adds_nil(array_without_nil, array_with_nil):
    a1 = objc_arr(*array_without_nil)
    a2 = objc_arr(*array_with_nil)
    assert a1.count() == a2.count() == len(array_without_nil)
    arr1 = [a1.objectAtIndex_(i).intValue() for i in range(a1.count())]
    arr2 = [a2.objectAtIndex_(i).intValue() for i in range(a2.count())]
    assert arr1 == arr2
Example #2
0
def test_objc_arr_behaviour(input_array):
    NSArray = lambda: autoclass('NSArray')
    a1 = NSArray().arrayWithObjects_(*input_array + [None])
    a2 = objc_arr(*input_array)
    arr1 = [a1.objectAtIndex_(i).intValue() for i in range(a1.count())]
    arr2 = [a2.objectAtIndex_(i).intValue() for i in range(a2.count())]
    assert arr1 == arr2
Example #3
0
    def run(self):
        panel = None
        if self.mode in ("open", "dir", "dir_and_files"):
            panel = NSOpenPanel.openPanel()

            panel.setCanChooseDirectories_(self.mode != "open")
            panel.setCanChooseFiles_(self.mode != "dir")

            if self.multiple:
                panel.setAllowsMultipleSelection_(True)
        elif self.mode == "save":
            panel = NSSavePanel.savePanel()
        else:
            assert False, self.mode

        panel.setCanCreateDirectories_(True)
        panel.setShowsHiddenFiles_(self.show_hidden)

        if self.title:
            panel.setTitle_(objc_str(self.title))

        # Mac OS X does not support wildcards unlike the other platforms.
        # This tries to convert wildcards to "extensions" when possible,
        # ans sets the panel to also allow other file types, just to be safe.
        if self.filters:
            filthies = []
            for f in self.filters:
                if type(f) == str:
                    f = (None, f)
                for s in f[1:]:
                    if not self.use_extensions:
                        if s.strip().endswith("*"):
                            continue
                    pystr = s.strip().split("*")[-1].split(".")[-1]
                    filthies.append(objc_str(pystr))

            ftypes_arr = objc_arr(*filthies)
            # todo: switch to allowedContentTypes
            panel.setAllowedFileTypes_(ftypes_arr)
            panel.setAllowsOtherFileTypes_(not self.use_extensions)

        if self.path:
            url = NSURL.fileURLWithPath_(self.path)
            panel.setDirectoryURL_(url)

        if panel.runModal():
            selection = None
            if self.mode == "save" or not self.multiple:
                selection = [panel.filename().UTF8String()]
            else:
                filename = panel.filenames()
                selection = [
                    filename.objectAtIndex_(x).UTF8String()
                    for x in range(filename.count())
                ]
            self._handle_selection(selection)
            return selection
        return None
Example #4
0
    def run(self):
        panel = None
        if self.mode in ("open", "dir"):
            panel = NSOpenPanel.openPanel()
        else:
            panel = NSSavePanel.savePanel()

        panel.setCanCreateDirectories_(True)

        panel.setCanChooseDirectories_(self.mode == "dir")
        panel.setCanChooseFiles_(self.mode != "dir")
        panel.setShowsHiddenFiles_(self.show_hidden)

        if self.title:
            panel.setTitle_(objc_str(self.title))

        if self.mode != "save" and self.multiple:
            panel.setAllowsMultipleSelection_(True)

        # Mac OS X does not support wildcards unlike the other platforms.
        # This tries to convert wildcards to "extensions" when possible,
        # ans sets the panel to also allow other file types, just to be safe.
        if len(self.filters) > 0:
            filthies = []
            for f in self.filters:
                if type(f) == str:
                    if not self.use_extensions:
                        if f.strip().endswith("*"):
                            continue
                        pystr = f.strip().split("*")[-1].split(".")[-1]
                    filthies.append(objc_str(pystr))
                else:
                    for _ in f[1:]:
                        if not self.use_extensions:
                            if f.strip().endswith("*"):
                                continue
                            pystr = f.strip().split("*")[-1].split(".")[-1]
                        filthies.append(objc_str(pystr))

            ftypes_arr = objc_arr(filthies)
            panel.setAllowedFileTypes_(ftypes_arr)
            panel.setAllowsOtherFileTypes_(not self.use_extensions)

        if self.path:
            url = NSURL.fileURLWithPath_(self.path)
            panel.setDirectoryURL_(url)

        if panel.runModal():
            selection = None
            if self.mode == "save" or not self.multiple:
                selection = [panel.filename().UTF8String()]
            else:
                selection = [i.UTF8String() for i in panel.filenames()]
            self._handle_selection(selection)
            return selection
        return None
Example #5
0
    def run(self):
        panel = None
        if self.mode in ("open", "dir"):
            panel = NSOpenPanel.openPanel()
        else:
            panel = NSSavePanel.savePanel()

        panel.setCanCreateDirectories_(True)

        panel.setCanChooseDirectories_(self.mode == "dir")
        panel.setCanChooseFiles_(self.mode != "dir")
        panel.setShowsHiddenFiles_(self.show_hidden)

        if self.title:
            panel.setTitle_(objc_str(self.title))

        if self.mode != "save" and self.multiple:
            panel.setAllowsMultipleSelection_(True)

        # Mac OS X does not support wildcards unlike the other platforms.
        # This tries to convert wildcards to "extensions" when possible,
        # ans sets the panel to also allow other file types, just to be safe.
        if len(self.filters) > 0:
            filthies = []
            for f in self.filters:
                if type(f) == str:
                    if not self.use_extensions:
                        if f.strip().endswith("*"):
                            continue
                        pystr = f.strip().split("*")[-1].split(".")[-1]
                    filthies.append(objc_str(pystr))
                else:
                    for i in f[1:]:
                        if not self.use_extensions:
                            if f.strip().endswith("*"):
                                continue
                            pystr = f.strip().split("*")[-1].split(".")[-1]
                        filthies.append(objc_str(pystr))

            ftypes_arr = objc_arr(filthies)
            panel.setAllowedFileTypes_(ftypes_arr)
            panel.setAllowsOtherFileTypes_(not self.use_extensions)

        if self.path:
            url = NSURL.fileURLWithPath_(self.path)
            panel.setDirectoryURL_(url)

        if panel.runModal_():
            if self.mode == "save" or not self.multiple:
                return [panel.filename().UTF8String()]
            else:
                return [i.UTF8String() for i in panel.filenames()]
        return None
Example #6
0
    def start_advertising(self, name):
        services = [
            iprop(s.service.UUID) for s in self.pending_services.values()
        ]
        servarray = objc_arr(*services) if services else None

        adv_dict = {CBAdvertisementDataKeys.LocalName: name}
        if servarray:
            adv_dict[CBAdvertisementDataKeys.ServiceUUIDs] = servarray
        data = objc_dict(adv_dict)

        self.peripheral.startAdvertising_(data)
        for service in self.pending_services.values():
            self.peripheral.addService_(service.service)
Example #7
0
 def _add_characteristic(self, characteristic):
     chars = self.characteristics or {}
     chars[characteristic.characteristic] = characteristic
     characteristic.service = self
     self.characteristics = chars
     self.service.characteristics = objc_arr(*self.characteristics.keys())
Example #8
0
 def test_array(self):
     self.assertEqual(objc_arr(objc_i(1), objc_i(2), objc_i(3)).count(), 3)
Example #9
0
 def test_array(self):
     self.assertEqual(objc_arr(objc_i(1), objc_i(2), objc_i(3)).count(), 3)