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.


    pip install gestures, WKWebView, UI animations and more

    Pythonista
    8
    36
    13097
    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.
    • bennr01
      bennr01 last edited by

      After looking into this issue for a bit, it seems like the same bug as in Issue #364. This should have been fixed 12 months ago, just a month after the latest version bump for master. So it is possible that you have a version installed before that version bump.

      So, since it seems like the master branch became a bit outdated,I just merged 152 commits from dev into master. This should include the fix as well as a version bump, so could you please try another selfupdate?

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

        That did the trick.
        selfupdate was successfull.

        "pip install pythonista-gestures" installed the first time.

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

          @bennr01, a big thank you! for all you do to keep us stashed & pipped.

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

            @mikael said:

            @bennr01, a big thank you! for all you do to keep us stashed & pipped.

            It's always a pleasure. Though in this case, the fix was made by yjqiang.

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

              @mikael Just a tiny correction, please correct me if I’m wrong. In the multipeer readme it says one should use <pip install multipeer> to install your module, which doesn’t work. You probably meant <pip install pythonista-multipeer>.

              mikael 1 Reply Last reply Reply Quote 1
              • mikael
                mikael @Drizzel last edited by

                @Drizzel, thank you, fixed. Multipeer was my first PyPi exercise, and my naming convention was still evolving – meaning, I did not yet know how to give a module a different name in site-packages and PyPi. :-)

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

                  Hi, I tested one demo code in readme of pythonista-wkwebview

                  class MagicWebView(WKWebView):
                    
                    def on_magic(self, message):
                      print('WKWebView magic ' + message)
                      
                  html = '''
                  <body>
                  <button onclick="window.webkit.messageHandlers.magic.postMessage(\'spell\')">
                  Cast a spell
                  </button>
                  </body>
                  '''
                  
                  v = MagicWebView()
                  v.load_html(html)
                  

                  Well it works good, but when I try to load html file, the 'on_magic' doesn't work, here's my code in py file

                  class MagicWebView(WKWebView):
                  	def on_magic(self, message):
                  		print('WKWebView magic ' + message)
                  
                  v = MagicWebView()
                  v.present()
                  # v.load_html(html)
                  v.load_url('test.html', no_cache=False, timeout=5)
                  v.clear_cache()
                  

                  I don't know how to fix it

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

                    @Anxietier try

                    import os
                    
                    w = WKWebView()
                    f = os.path.abspath('test.html')
                    print(f)
                    w.load_url(f)
                    w.present() 
                    
                    Anxietier 1 Reply Last reply Reply Quote 0
                    • mikael
                      mikael @Anxietier last edited by

                      @Anxietier, I see the online documentation covers this poorly. Here’s the method docstring:

                      Loads the contents of the given url asynchronously.

                      If the url starts with file://, loads a local file. If the remaining url starts with /, path starts from Pythonista root.

                      For remote (non-file) requests, there are two additional options:

                      • Set no_cache to True to skip the local cache, default is False
                      • Set timeout to a specific timeout value, default is 10 (seconds)
                      Anxietier 1 Reply Last reply Reply Quote 0
                      • mikael
                        mikael @Anxietier last edited by

                        @Anxietier, you can get this and similar documentation on other methods using the help function, e.g. in Pythonista console:

                        >>> import wkwebview
                        >>> help(wkwebview.WKWebView.load_url)
                        
                        1 Reply Last reply Reply Quote 0
                        • Anxietier
                          Anxietier @cvp last edited by

                          @cvp
                          thanks, but it seems doesn’t work, here’s my test code

                          file_name = 'test.copy(2).html'
                          file_abs_path = os.path.abspath(file_name)
                          url_file_name = 'file://' + file_name
                          url_file_abs_path = 'file://' + file_abs_path
                          
                          with open(file_name, 'r', encoding='utf8') as f:
                          	html = ''.join(f.readlines())
                          
                          v = MagicWebView()
                          v.present()
                          
                          # v.load_html(html) # can load but button doesn't work
                          
                          # v.load_url(file_name, no_cache=False, timeout=5) # can load but button doesn't work
                          
                          # v.load_url(file_abs_path, no_cache=False, timeout=5) # can load but button doesn't work
                          
                          # v.load_url(url_file_name, no_cache=False, timeout=5) # would let ista crash or load faild
                          
                          # v.load_url(url_file_abs_path, no_cache=False, timeout=5) # doesn't load
                          
                          v.clear_cache() 
                          
                          1 Reply Last reply Reply Quote 0
                          • Anxietier
                            Anxietier @mikael last edited by

                            @mikael
                            I’m not sure if I described my issue clearly, and here’s my another test code, perhaps that would be clearly

                            file_name = 'test.copy(2).html'
                            file_abs_path = os.path.abspath(file_name)
                            url_file_name = 'file://' + file_name
                            url_file_abs_path = 'file://' + file_abs_path
                            
                            with open(file_name, 'r', encoding='utf8') as f:
                            	html = ''.join(f.readlines())
                            
                            v = MagicWebView()
                            v.present()
                            
                            # v.load_html(html) # can load but button doesn't work
                            
                            # v.load_url(file_name, no_cache=False, timeout=5) # can load but button doesn't work
                            
                            # v.load_url(file_abs_path, no_cache=False, timeout=5) # can load but button doesn't work
                            
                            # v.load_url(url_file_name, no_cache=False, timeout=5) # would let ista crash or load faild
                            
                            # v.load_url(url_file_abs_path, no_cache=False, timeout=5) # doesn't load
                            
                            v.clear_cache() 
                            
                            mikael 2 Replies Last reply Reply Quote 0
                            • mikael
                              mikael @Anxietier last edited by mikael

                              @Anxietier, I will have to look at this, maybe something has changed in recent iOS versions.

                              Meanwhile, this:

                              html = ''.join(f.readlines())

                              ... looks funny, breaking and joining with no change. Just html = f.read() should work fine.

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

                                @Anxietier, I placed this script:

                                import wkwebview
                                
                                class MyWebView(wkwebview.WKWebView):
                                    
                                    def on_magic(self, message):
                                        print('WKWebView magic ' + message)
                                
                                wv = MyWebView()
                                wv.present('fullscreen')
                                
                                wv.load_url('load_url.html')
                                

                                ... and this HTML as the file load_url.html in the same directory:

                                <body>
                                <button onclick="window.webkit.messageHandlers.magic.postMessage('spell')">
                                Cast a spell
                                </button>
                                </body>
                                

                                And the button works fine. Note that I removed the backlashes in the onclick handler as escaping not necessary in a file.

                                I suspect you might have some kind of non-printing character issue.

                                Anxietier 1 Reply Last reply Reply Quote 1
                                • stephen
                                  stephen @mikael last edited by stephen

                                  @mikael said:

                                  @Anxietier, have to look at this, maybe something has changed in recent iOS versions.

                                  Meanwhile, this:

                                  html = ''.join(f.readlines())

                                  ... looks funny, breaking and joining with no change. Just html = f.read() should work fine.

                                  much cleaner than i would of. lol

                                  
                                  html = ''.join([line for line in f])
                                  
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • Anxietier
                                    Anxietier @mikael last edited by Anxietier

                                    @mikael
                                    oh I see, I usually use r_string in py, so I didn't notice \' in doc_string
                                    now it works fine
                                    thanks for help

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

                                      hi, im back again :D
                                      we know that some browser has non-pic mode (i dont know right name,just like that mean), is it possible to add that feature to wkwebview? for some reason, i just need the full html content (dom-tree maybe?)

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

                                        @Anxietier, if you mean ”Reader Mode”, WKWebView does not include it. But you can use a SafariViewController, see @cvp’s code around the middle of this thread.

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

                                          If you just want to parse the HTML, use requests. Unless you need JavaScript to run I guess.

                                          @mikael isn't there a delegate that would let you filter by uri? I forget if the should_load_uri or whatever gets called for <img>'s -- in which case he could just return false for non-html urls.

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

                                            @JonB, no it does not. Would be good to understand the need a bit more before trying to bend WKWebView to it. For the most part, just fetching the page with requests, then filtering imgs and javascript before giving it to WKwebView might work just as well.

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