omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    SFSymbols?

    Pythonista
    7
    39
    13979
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • JonB
      JonB @cvp last edited by

      @cvp strange, works on my ios9 ipad. ill have to play around with my ios13.

      mikael 1 Reply Last reply Reply Quote 0
      • mikael
        mikael @JonB last edited by

        @JonB, must have changed since iOS 9? As said, imageAsset is now marked as readonly in the docs, and there is this statement in the first paragraph of UIImage:

        ”Image objects are immutable, so you always create them from existing image data, such as an image file on disk or programmatically created image data.”

        1 Reply Last reply Reply Quote 0
        • mikael
          mikael last edited by mikael

          As a half-accidental result, you can use the file linked above as a package:

          import sfsymbol
          
          img = sfsymbol.SymbolImage('arrow.right.to.line')
          

          There are three optional parameters:

          • point_size - Integer font size
          • weight - Font weight, one of sfsymbol.ULTRALIGHT, THIN, LIGHT, REGULAR, MEDIUM, SEMIBOLD, BOLD, HEAVY, BLACK
          • scale - Size relative to font size, one of SMALL, MEDIUM, LARGE
          cvp 1 Reply Last reply Reply Quote 1
          • cvp
            cvp @mikael last edited by

            @mikael if you call your code dirty again, I promise to stop writing programs 😂

            1 Reply Last reply Reply Quote 0
            • pulbrich
              pulbrich last edited by

              @mikael thanks for this, excellent. (If only it had a fuzzy search function... Just if you feel bored...)

              mikael 1 Reply Last reply Reply Quote 0
              • mikael
                mikael @pulbrich last edited by mikael

                @pulbrich, others, any suggestions for a fuzzy search? fuzzywuzzy is good, but I would like to avoid requiring an extra install. difflib.get_close_matches results are highly unintuitive.

                Is there something easy to use provided by iOS?

                1 Reply Last reply Reply Quote 0
                • TPO
                  TPO last edited by

                  @mikael you could try FuzzyFinder in 10 lines of Python

                  Cheers,

                  1 Reply Last reply Reply Quote 1
                  • pulbrich
                    pulbrich last edited by

                    I would go with @TPO ‘s idea, perfectly enough for the purpose.

                    mikael 1 Reply Last reply Reply Quote 0
                    • mikael
                      mikael @pulbrich last edited by

                      @pulbrich, @TPO, thanks. Search now included, see the updated picture above.

                      Usability is not 100% - for some reason textfield.end_editing() does not hide the keyboard, at least on my phone.

                      cvp 1 Reply Last reply Reply Quote 1
                      • pulbrich
                        pulbrich last edited by

                        @mikael Many, many thanks! Perfect now!

                        1 Reply Last reply Reply Quote 0
                        • cvp
                          cvp @mikael last edited by

                          @mikael said:

                          for some reason textfield.end_editing() does not hide the keyboard

                          Same on my iPad mini 4 (iOS 13 + Pythonista beta)
                          There is a kind of flicking, I think that the keyboard is dismissed and then comes back.

                          1 Reply Last reply Reply Quote 0
                          • JonB
                            JonB last edited by

                            FWIW:

                            from ui import *
                            from objc_util import *
                            uiimage=ObjCClass('UIImage')
                            v=Image.named('test:Lenna')
                            u=uiimage.systemImageNamed_('lessthan.circle')
                            v.objc_instance._setImageAsset_(u.imageAsset())
                            

                            Leading underscore did the trick, iPadOS 13.1.3.
                            Maybe not the most future proof, but does the job...

                            cvp mikael 2 Replies Last reply Reply Quote 0
                            • cvp
                              cvp @JonB last edited by

                              @JonB As usual, you're the 🤴

                              1 Reply Last reply Reply Quote 0
                              • mikael
                                mikael @JonB last edited by

                                @JonB, thanks. Intuitively this seems like it should be faster and more efficient than going via the PNG conversion.

                                But when I went to test the performance I ran into a couple of issues with the asset approach:

                                • Resulting image size is dependent on the size of the original ui.Image created.
                                • Both the original and ”asset-applied” images are retained in the ui.Image somehow, and for example ButtonItems do not really handle that well.

                                See below couple of example images. First one uses a too-large initializing picture (Lenna), the second too small one (triangle arrow icon), which you can see presented in the title area.

                                Break 1
                                Break 2

                                cvp 1 Reply Last reply Reply Quote 0
                                • cvp
                                  cvp @mikael last edited by

                                  @mikael your module now crashes with

                                  Traceback (most recent call last):
                                    File "/private/var/mobile/Containers/Shared/AppGroup/668A7D98-7216-47ED-917D-AA0B6173167E/Pythonista3/Documents/MesTests/sfsymbol.py", line 233, in <module>
                                      data_source = symbol_table.data_source = SymbolSource(root, symbol_table)
                                    File "/private/var/mobile/Containers/Shared/AppGroup/668A7D98-7216-47ED-917D-AA0B6173167E/Pythonista3/Documents/MesTests/sfsymbol.py", line 76, in __init__
                                      image=SymbolImage('arrow.left', 8, weight=THIN),
                                    File "/private/var/mobile/Containers/Shared/AppGroup/668A7D98-7216-47ED-917D-AA0B6173167E/Pythonista3/Documents/MesTests/sfsymbol.py", line 27, in SymbolImage
                                      conf = UIImageSymbolConfiguration.configurationWithConfiguration_and_(
                                    File "/var/containers/Bundle/Application/34BAEE1A-BC33-4D6F-A0C1-B733E4991F31/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/site-packages/objc_util.py", line 445, in __getattr__
                                      cached_method = ObjCClassMethod(self, attr)
                                    File "/var/containers/Bundle/Application/34BAEE1A-BC33-4D6F-A0C1-B733E4991F31/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/site-packages/objc_util.py", line 752, in __init__
                                      raise AttributeError('No class method found for selector "%s"' % (self.sel_name))
                                  AttributeError: No class method found for selector "configurationWithConfiguration:and:"
                                  
                                  mikael 1 Reply Last reply Reply Quote 0
                                  • mikael
                                    mikael @cvp last edited by

                                    @cvp, yes, just noticed. iOS 14 must’ve changed it. Will take a look.

                                    cvp 1 Reply Last reply Reply Quote 0
                                    • cvp
                                      cvp @mikael last edited by

                                      @mikael 900 added symbols in iOS 14 see here

                                      mikael 2 Replies Last reply Reply Quote 0
                                      • mikael
                                        mikael @cvp last edited by

                                        @cvp, here’s the relevant code if you want to do a manual quick fix. Will push an update to PyPI soon.

                                            ...
                                            if point_size is not None:
                                                conf = conf.configurationByApplyingConfiguration_(
                                                        UIImageSymbolConfiguration.configurationWithPointSize_(point_size))
                                            if weight is not None:
                                                conf = conf.configurationByApplyingConfiguration_(
                                                    UIImageSymbolConfiguration.configurationWithWeight_(weight))
                                            if scale is not None:
                                                conf = conf.configurationByApplyingConfiguration_(
                                                    UIImageSymbolConfiguration.configurationWithScale_(scale))
                                            objc_image = objc_image.imageByApplyingSymbolConfiguration_(conf)
                                            ...
                                        
                                        cvp 1 Reply Last reply Reply Quote 0
                                        • mikael
                                          mikael @cvp last edited by

                                          @cvp, for the new symbols, I found a downloadable list of changes, but no list of new icons or an updated master list.

                                          cvp 1 Reply Last reply Reply Quote 0
                                          • cvp
                                            cvp @mikael last edited by

                                            @mikael said:

                                            if you want to do a manual quick fix.

                                            Seems ok

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors