Page 13 of 17
					
				Re: Chromium WebGadget
				Posted: Sun Feb 19, 2023 6:57 pm
				by JHPJHP
				Updated (CrWG Builder):
- added Home screen
- added Startup screen
- improved Options screen
- added zoom and tooltip
- added progress bar
- various other improvements
Zoom and Tooltip
Not only does it zoom the page, but also controls the size of the PureBasic window.
NOTE: This is still a work in progress, but the example is now demonstrated from a PureBasic window.
Modern UI
CrWG Builder is being written using the Bootstrap Framework, hosted in a (PureBasic) Chromium WebGadget, with communications initiated from the DevTools Protocol, processed through the WebSockets API.
			 
			
					
				Re: Chromium WebGadget
				Posted: Mon Feb 27, 2023 1:43 am
				by skinkairewalker
				Is it possible to disable these translation popup, right click popup and disable the user to open the devtools?
screenshot : 
https://prnt.sc/Gi1XnX2AWDSn
screenshot1 : 
https://prnt.sc/NF733XBP07Qc
screenshot2 : 
https://prnt.sc/F6f9LiVFj3vn 
			 
			
					
				Re: Chromium WebGadget
				Posted: Mon Feb 27, 2023 5:27 pm
				by JHPJHP
				Hi skinkairewalker,
Please download the latest version. Let me know if it resolves your concerns.
JHPJHP wrote:When time permits I’m available to help with questions about the framework, and even provide additional examples and shortcuts to assist with development. That said, if you post a question and I take the time to respond, please have the curtesy to reply with an acknowledgment.
--------------------------------
CrWG Builder is a work in progress.  The application when finished should help users create their own Chromium WebGadget applications.  In addition, demonstrate another method for creating a modern UI; please note, at least a basic understanding of web-design is required.
 
			 
			
					
				Re: Chromium WebGadget
				Posted: Tue Feb 28, 2023 8:27 pm
				by skinkairewalker
				JHPJHP wrote: Mon Feb 27, 2023 5:27 pm
Hi skinkairewalker,
Please download the latest version. Let me know if it resolves your concerns.
JHPJHP wrote:When time permits I’m available to help with questions about the framework, and even provide additional examples and shortcuts to assist with development. That said, if you post a question and I take the time to respond, please have the curtesy to reply with an acknowledgment.
--------------------------------
CrWG Builder is a work in progress.  The application when finished should help users create their own Chromium WebGadget applications.  In addition, demonstrate another method for creating a modern UI; please note, at least a basic understanding of web-design is required.
 
hi, sorry to bother you again, I would like to prevent users from right-clicking and being able to view the source code of the page easily ... in the examples inside: 
CrWG Framework\Bootstrap Modern UI when running to access the browser's DevTools just right click and inspect the element...
 
			 
			
					
				Re: Chromium WebGadget
				Posted: Tue Feb 28, 2023 8:59 pm
				by JHPJHP
				Hi skinkairewalker,
It's not a bother asking a question, it's great to see interest in something I've written, even if it's just passing interest.
But previously you've asked questions and I posted answers, but you neglected to provide any feedback or at the minimum a thank you.
The three images you posted had to do with the CrWG Builder application, so changes were only applied to that example.
If you confirm the following changes were effective, I'll apply them to the other Bootstrap Modern UI examples.
NOTE: The things you requested (and more) were accomplished using CSS and JavaScript...
The following might be overkill but should provide a direction for your own application.
1. Suppress Translate Window
-- not knowing what would work I incorporated various solutions
---- <html lang="en" translate="no"> [ HTML Tag ]
---- <meta name="google" value="notranslate"> [ Head - Meta Tag ]
---- <body class="notranslate"> [ Body Tag ]
---- #gtx-trans { display: none; } [ CSS ]
2. Prevent Context Menu [ JavaScript ]
document.addEventListener("contextmenu", event => event.preventDefault());
3. Prevent Drag Image [ Body Tag ]
<body ondragstart="return false;">
4. Disable Element Selection [ CSS ]
* {
    -webkit-touch-callout:none;
    -webkit-user-select:none;
    -moz-user-select:none;
    -ms-user-select:none;
    user-select:none;
}
NB* The Translate window should already have been suppressed via the CLS file: --disable-features=Translate.
			 
			
					
				Re: Chromium WebGadget
				Posted: Tue Feb 28, 2023 9:02 pm
				by skinkairewalker
				Sorry, I just forgot to say thank you!!
amazing work, congrats!
			 
			
					
				Re: Chromium WebGadget
				Posted: Wed Mar 01, 2023 8:40 pm
				by skinkairewalker
				How do I redirect to another page that I load manually, without javascript or html redirecting automatically? 
in the same way below?
Code: Select all
crwg_data\FilenameCLS = #PB_Compiler_Filename
  crwg_data\GadgetNumber = #Cr_WebGadget
  crwg_data\SourceURL = "editor.html"
  crwg_data\DataSource = *HTML
  crwg_data\DataLength = MemorySize(*HTML)
  Cr_WebGadget_Init(crwg_data)
  SendData.SEND_DATA
  
  
 
			 
			
					
				Re: Chromium WebGadget
				Posted: Wed Mar 01, 2023 10:08 pm
				by JHPJHP
				Hi skinkairewalker,
There are two methods for redirecting to another webpage.
NOTE: The examples included with the framework demonstrate the following solutions.
DevTools Method
(internet webpage)
Code: Select all
SendData\EventID = 20300
SendData\Method = "Page.navigate"
SendData\Params = #DQUOTE$ + "url" + #DQUOTE$ + ":" + #DQUOTE$ + "https://www.google.ca" + #DQUOTE$
Cr_WebSocket_Send(Connection, @SendData)
 
or
(local HTML file)
Code: Select all
SendData\EventID = 20300
SendData\Method = "Page.navigate"
SendData\Params = #DQUOTE$ + "url" + #DQUOTE$ + ":" + #DQUOTE$ + "C:/CrWG Framework/webpage.html" + #DQUOTE$
Cr_WebSocket_Send(Connection, @SendData)
 
IAccessible Method
(only used when DevTools is not required but page navigation is still needed)
Code: Select all
crwg_data\SourceURL = "https://www.google.ca"
Cr_WebGadget_Update(crwg_data, "Refresh")
 
or
(ReadFile is just one method for "loading" a DataSource)
Code: Select all
If ReadFile(0, "C:\CrWG Framework\webpage.html")
  While Not Eof(0)
    HTML$ + ReadString(0) + #LF$
  Wend
  *HTML = UTF8(HTML$)
  CloseFile(0)
EndIf
*HTML = UTF8(HTML$)
crwg_data\DataSource = *HTML
crwg_data\DataLength = MemorySize(*HTML)
Cr_WebGadget_Update(crwg_data, "Refresh")
...
FreeMemory(*HTML)
 
			 
			
					
				Re: Chromium WebGadget
				Posted: Thu Mar 02, 2023 5:39 am
				by skinkairewalker
				worked great, thanks a lot for the support!  you are the man …
			 
			
					
				Re: Chromium WebGadget
				Posted: Thu Mar 02, 2023 5:40 am
				by skinkairewalker
				I would have one more question, is it possible to run javascript functions within the site using the purebasic side?
			 
			
					
				Re: Chromium WebGadget
				Posted: Thu Mar 02, 2023 6:02 pm
				by JHPJHP
				Hi skinkairewalker,
Yes, executing JavaScript from PureBasic is a simple process when using the DevTools Protocol.
Code: Select all
SendData\EventID = 23200
SendData\Method = "Runtime.evaluate"
SendData\Params = "expression":"document.getElementById('button').click();"
Cr_WebSocket_Send(Connection, @SendData)
The above example is the simplest method for executing JavaScript.
More complex versions of the same algorithm, and more complex algorithms are available depending on your requirements.
Again, please see existing examples; DevTools_Basic.pb contains code matching your exact request. 
			 
			
					
				Re: Chromium WebGadget
				Posted: Thu Mar 02, 2023 8:57 pm
				by skinkairewalker
				thank you very much, amazing tool!
I'm already starting to develop applications with it ...
screenshot : 
https://prnt.sc/lilYVZEDSMD4
the only thing missing is the tool being cross-platform ... it would be an excellent competitor to nw.js, electron and others .
but anyway, thank you immensely for the work and support 
			 
			
					
				Re: Chromium WebGadget
				Posted: Sat Mar 04, 2023 11:14 pm
				by skinkairewalker
				JHPJHP wrote: Wed Mar 01, 2023 10:08 pm
NOTE: The examples included with the framework demonstrate the following solutions.
(ReadFile is just one method for "loading" a DataSource)
Code: Select all
If ReadFile(0, "pagefolder\webpage.html")
  While Not Eof(0)
    HTML$ + ReadString(0) + #LF$
  Wend
  *HTML = UTF8(HTML$)
  CloseFile(0)
EndIf
*HTML = UTF8(HTML$)
crwg_data\DataSource = *HTML
crwg_data\DataLength = MemorySize(*HTML)
Cr_WebGadget_Update(crwg_data, "Refresh")
...
FreeMemory(*HTML)
 
 
This method is not redirecting (nothing happens when it is triggered within the DevToolsEvent(JSONValue, Connection, PageID.s) function) ... How do I know what error is giving?
my source :
Code: Select all
If JSONArrayValueArgs
                          ElementId$ = GetJSONString(JSONArrayValueArgs)
                          ;MessageRequester("Chromium WebGadget", "ElementID: " + ElementId$, #PB_MessageRequester_Info)
                          
                          If (ElementId$ = "EditProject")
                            
                           ; MessageRequester("","Abrindo o projeto : "+Params$)
                            
                          If ReadFile(0, GetCurrentDirectory()+"editor\manager.html")
                            While Not Eof(0)
                              HTML2$ + ReadString(0) + #LF$
                            Wend
                              CurrentDirectory$ = GetCurrentDirectory()
                              HTML2$ = ReplaceString(HTML2$, "[CurrentDirectory]", CurrentDirectory$)
                              *HTML2 = UTF8(HTML2$)
                              CloseFile(0)
                          EndIf
   
                         crwg_data\FilenameCLS = #PB_Compiler_Filename
                          crwg_data\GadgetNumber = #Cr_WebGadget
                          crwg_data\SourceURL = "manager.html"
                          crwg_data\DataSource = *HTML2
                          crwg_data\DataLength = MemorySize(*HTML2)
                          Cr_WebGadget_Update(crwg_data, "Refresh")
                          
                          FreeMemory(*HTML2)
                          ....
 
			 
			
					
				Re: Chromium WebGadget
				Posted: Sun Mar 05, 2023 9:38 am
				by JHPJHP
				Hi skinkairewalker,
Sorry, the documentation for 
Cr_WebGadget_Update is spotty.
Your example won't work as the function requires the IAccessible Interface, and you're mixing code with the DevTools protocol.
When 
CrWG Builder is finished, the program should assist with using the framework, but until then try the following.
Code: Select all
Procedure UpdateWebpage(HtmlFile.s, Connection)
  If ReadFile(0, HtmlFile)
    While Not Eof(0)
      HTML$ + ReadString(0) + #LF$
    Wend
    HTML$ = ReplaceString(HTML$, "[CurrentDirectory]", GetCurrentDirectory())
    CloseFile(0)
  EndIf
  TempFile$ = GetTemporaryDirectory() + GetFilePart(HtmlFile)
  DeleteFile(TempFile$, #PB_FileSystem_Force)
  If CreateFile(0, TempFile$)
    WriteString(0, HTML$)
    CloseFile(0)
  EndIf
  TempFile$ = ReplaceString(TempFile$, "\", "/")
  SendData.SEND_DATA
  SendData\EventID = 23200
  SendData\Method = "Page.navigate"
  SendData\Params = #DQUOTE$ + "url" + #DQUOTE$ + ":" + #DQUOTE$ + TempFile$ + #DQUOTE$
  ProcedureReturn Cr_WebSocket_Send(Connection, @SendData)
EndProcedure
UpdateWebpage("editor\manager.html", Connection)
 
			 
			
					
				Re: Chromium WebGadget
				Posted: Mon Mar 06, 2023 12:07 pm
				by JHPJHP
				Updated:
- 
improved Procedure Cr_WebGadget_Update
- some minor improvements to the framework and examples
Cr_WebGadget_Update now returns a Boolean (#True) if successful; previously a String was returned.  This Procedure should mostly be used when the IAccessible Interface is enabled, but there are a few exceptions.
infratec has confirmed the problem he previously 
reported has been fixed.  In addition, based on his suggestions a couple potential issues with the framework have been addressed.