Le... SHERMAVIGATOR !

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Le... SHERMAVIGATOR !

Message par JohnJohnsonSHERMAN »

Tada!!!! Voici mon premier VRAI programme !
Son nom : le Shermavigator (Sherman + navigateur)
Sa fonction : naviguer
Ses atouts : polyvalent, rapide, facile d'accés et d'utilisation, léger, trés léger
Votre mission : le télécharger !! ;)
http://shermanjohnson.weebly.com/sherma ... oject.html

Démarrez le programme. Utilisez le "+" pour ouvrir de nouveaux onglets. Paramétrez vos options dans Fichier > Options. Et plein d'autres choses encore.

NB : Installez dans D:\Program Files (x86)\Shermavigator4.2.1\. Cela est nécessaire au bon fonctionnement pour l'instant.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Le... SHERMAVIGATOR !

Message par JohnJohnsonSHERMAN »

Le CODE... c'est important, donc le voici :

Code : Tout sélectionner

;###########################################################################################################################################################################
;############# SHERMAVIGATOR by John Johnson SHERMAN - A powerful way to explore the Internet - www.shermanjohnson.weebly.com/shermavigator-project.html ###################
;###########################################################################################################################################################################
Global Window_0
Global Image_0, precedent, suivant, String_0, ProgressBar_0, rechercher, actualiser, ButtonImage_1, WebView_1,lecture,Panel_1
Global Img_Window_0_0, Img_Window_0_1
Enumeration main
  #param
  #histo
  #lecture
  #fichier
  #fermer2
  #Editor_1
  #ouvrirpage
  #Editor_0
  #Text_0
  #copier
  #Fermer
  #Titre
  #Couleur
  #DLadress
  #Frame1
  #Frame2
  #ShermiURL
  #checkPopUp
  #checkStatus
  #checkFav
  #checkHisto
  #Image_0
  #quit
  #IEset
  #avance
  #Menu
  #MenuItem_4
  #Ouvrir
  #Quitter
  #Recharger
  #Options
  #menupopup
  #Precedent
  #Suivant
  #OuvrirSecondElement
  #Enregistrer
  #EnregistrerSous
  #AfficherSource
  #OuvrirExternalNav
  #Affichage
  #modelecture
  #Historique
  #NouvelOnglet
  #FermerOnglet
  #Redemarrer
  #icone
  #NewFenetre
EndEnumeration
UseJPEGImageDecoder()
UsePNGImageDecoder()
Img_Window_0_0 = LoadImage(#PB_Any,"index.png")
LoadImage(#lecture,"lecture2.png")
LoadImage(#Image_0,"Shermavigator Logo.bmp")
LoadImage(1,"ShermavigatorIcon.ICO")
Enumeration FormFont
  #Font_Window_0_0
EndEnumeration
LoadFont(#Font_Window_0_0,"Arial", 15)
Enumeration fichier
  #param
EndEnumeration
Enumeration FormFont
  #Font_Window_3_0
EndEnumeration
LoadFont(#Font_Window_3_0,"Arial", 16, #PB_Font_Bold)
Declare ResizeGadgetsWindow_0()
x = 0
y = 0
width = 1270
height = 740
URL$=""
oldURL$=""
Global rouge,vert,bleu=0
Global DLadresse$=""
Global HistoState, PopupState, FavState, StatusState=#True

Procedure SetBrowserEmulation() ; permet de choisir le type de navigateur qu'on veux
                                ; https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx
  Protected IEVersion.s = "2AF9"; setting the desired IE-Version (see below)
  Protected RegistryString.s
  Protected TempRegFile.s
  Protected FF
  RegistryString = "Windows Registry Editor Version 5.00" + #CRLF$ +
                   "" + #CRLF$ +
                   "[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]" + #CRLF$ +
                   Chr(34) + GetFilePart(ProgramFilename()) + Chr(34) + "=dword:" + IEVersion + #CRLF$
  
  TempRegFile = GetTemporaryDirectory() + "SetBrowserEmulation.reg"  
  FF = CreateFile(#PB_Any, TempRegFile)
  If FF
    WriteString(FF, RegistryString)
    CloseFile(FF)
    RunProgram("regedit", "/s " + Chr(34) + TempRegFile + Chr(34), "",  #PB_Program_Wait)
    DeleteFile(TempRegFile)
    ProcedureReturn #True
  EndIf
EndProcedure

Procedure ResizeGadgetsWindow_0()
  Protected FormWindowWidth, FormWindowHeight
  FormWindowWidth = WindowWidth(Window_0)
  FormWindowHeight = WindowHeight(Window_0)
  ;ResizeGadget(Image_0, -10, 0, FormWindowWidth - -10, FormWindowHeight - MenuHeight() - StatusBarHeight(0) - 0)
  ResizeGadget(String_0, 190, 20, FormWindowWidth - 460, 25)
  ResizeGadget(ProgressBar_0, 0, 0, FormWindowWidth - 0, 10)
  ResizeGadget(rechercher, FormWindowWidth - 260, 20, 90, 25)
  ResizeGadget(actualiser, FormWindowWidth - 160, 20, 80, 25)
  ResizeGadget(ButtonImage_1, FormWindowWidth - 40, 20, 32, 32)
  ResizeGadget(lecture, FormWindowWidth - 75, 20, 30, 30)
  For i=42 To CountGadgetItems(Panel_1)-2+42
    ResizeGadget(i, 1, 10, FormWindowWidth - 25-20, FormWindowHeight-35 - MenuHeight() - StatusBarHeight(0) - 65 -5)
  Next
  ResizeGadget(Panel_1, 10, 60, FormWindowWidth - 20, FormWindowHeight -  MenuHeight() - StatusBarHeight(0) - 65)
  
EndProcedure

Procedure ResizeWeb()
  ResizeGadget(WebView_1,10,60,((WindowWidth(Window_0)/2)-30), #PB_Ignore)
  WebView_2 = WebGadget(#PB_Any, ((WindowWidth(Window_0)/2)-10) , 60, ((WindowWidth(Window_0)/2)-10),WindowHeight(Window_0) - MenuHeight() - StatusBarHeight(0) - 65 , "www.google.com")
  SplitterGadget(5555,10,60,WindowWidth(Window_0)-20,WindowHeight(Window_0) - MenuHeight() - StatusBarHeight(0) - 65,WebView_1,WebView_2, #PB_Splitter_Vertical | #PB_Splitter_Separator)
  
EndProcedure

Procedure Options(x = 0, y = 0, width = 530, height = 400)  
  couleur111=RGB(63,101,129)
  ;OpenFile(#param,"D:\Documents de didi\Programmation\Shermavigator\settings.con")
  Window_3 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_Tool | #PB_Window_ScreenCentered,WindowID(Window_0))
  TextGadget(#Titre, 10, 10, 510, 30, "Shermavigator - Options et réglages", #PB_Text_Center | #PB_Text_Border)
  SetGadgetColor(#Titre, #PB_Gadget_FrontColor,RGB(255,255,255))
  SetGadgetColor(#Titre, #PB_Gadget_BackColor,RGB(0,128,255))
  SetGadgetFont(#Titre, FontID(#Font_Window_3_0))
  ButtonGadget(#Couleur, 20, 70, 210, 25, "Couleur de fond")
  FrameGadget(#Frame1, 260, 50, 260, 130, "Paramétres")
  FrameGadget(#Frame2, 10, 50, 240, 130, "Apparence")
  ButtonGadget(#DLadress, 270, 70, 240, 25, "Chemin de téléchargement par défaut")
  HyperLinkGadget(#ShermiURL,  240, 380, 110, 15, "Shermavigator", 0, #PB_HyperLink_Underline)
  SetGadgetColor(#ShermiURL, #PB_Gadget_FrontColor,RGB(0,64,128))
  CheckBoxGadget(#checkPopUp, 270, 100, 240, 25, "Bloquer les pop-ups")
  If PopupState=1
    SetGadgetState(#checkPopUp, #PB_Checkbox_Checked)
  EndIf
  ImageGadget(#Image_0, 200, 190, 128, 172, ImageID(#Image_0))
  CheckBoxGadget(#checkStatus, 20, 100, 220, 25, "Afficher la barre de statut")
  If StatusState=1
    SetGadgetState(#checkStatus, #PB_Checkbox_Checked)
  EndIf
  CheckBoxGadget(#checkFav, 20, 120, 220, 25, "Afficher les favoris (non dispo)")
  If FavState=1
    SetGadgetState(#checkFav, #PB_Checkbox_Checked)
  EndIf
  CheckBoxGadget(#checkHisto, 270, 120, 220, 25, "Activer l'historique de navigation")
  If HistoState=1
    SetGadgetState(#checkHisto, #PB_Checkbox_Checked)
    HistoState=1
  Else
    SetGadgetState(#checkHisto, #PB_Checkbox_Unchecked)
    HistoState=0
  EndIf
  ButtonGadget(#quit,10, 370, 180, 25, "Appliquer et quitter")
  ButtonGadget(#IEset, 270, 150, 240, 25, "Utiliser la derniére version d'IE ActiveX")
  ButtonGadget(#avance, 420, 370, 100, 25, "Plus d'options >")
  ;arg$=ReadString(#param)
  Repeat
    Event2=WaitWindowEvent(10)
    Select Event2
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #ShermiURL
            SetGadgetText(WebView_1+GetGadgetState(Panel_1),"www.shermanjohnson.weebly.com/shermavigator-project.html")
            ;SetGadgetState(WebView_1,#PB_Web_Refresh)
          Case #IEset
            SetBrowserEmulation()
            SetGadgetState(WebView_1,#PB_Web_Refresh)
          Case #Couleur
            couleur111=ColorRequester(RGB(rouge,vert,bleu))
            SetWindowColor(Window_0,couleur111)
            SetGadgetState(WebView_1,#PB_Web_Refresh)
          Case #DLadress
            DLadresse$=PathRequester("Chemin de téléchargement","")
            Debug DLadresse$
          Case #checkPopUp
            If GetGadgetState(#checkPopUp)=#PB_Checkbox_Checked
              popup=1
              PopupState=1
            Else
              popup=0
              PopupState=0
            EndIf
          Case #checkFav
            If GetGadgetState(#checkFav)=#PB_Checkbox_Checked
              fav=1
              FavState=1
            Else
              fav=0
              FavState=0
            EndIf
          Case #checkHisto
            If GetGadgetState(#checkHisto)=#PB_Checkbox_Checked
              histo=1
              HistoState=#True
            Else
              histo=0
              HistoState=#False
            EndIf
          Case #checkStatus
            If GetGadgetState(#checkStatus)=#PB_Checkbox_Checked
              status=1
              StatusState=1
            Else
              status=0
              StatusState=0
            EndIf
          Case #quit
            DeleteFile("\settings.con")
            CreateFile(#param,"\settings.con")
            WriteStringN(#param,"//COLOR/BLUE:"+Str(Blue(couleur111))+"/RED:"+Str(Red(couleur111))+"/GREEN:"+Str(Green(couleur111))+"/")
            WriteStringN(#param,"/DL:"+DLadresse$+"/")
            WriteStringN(#param,"/HIST:"+Str(HistoState)+"/")
            WriteStringN(#param,"/POPUP:"+Str(PopupState)+"/")
            WriteStringN(#param,"/STATUSBAR:"+Str(StatusState)+"/")
            WriteStringN(#param,"/FAV:"+Str(FavState)+"/")
            CloseFile(#param)
            CloseWindow(Window_3)
            ProcedureReturn
        EndSelect
    EndSelect
  ForEver
  ProcedureReturn
EndProcedure

Procedure LireOptions()
  If OpenFile(1,"settings.con")
    option$=ReadString(1,#PB_File_IgnoreEOL)
    If FindString(option$,"BLUE:")=0
      CreateFile(#param,"\settings.con")
      WriteStringN(#param,"//COLOR/BLUE:"+Str(152)+"/RED:"+Str(63)+"/GREEN:"+Str(105)+"/")
      WriteStringN(#param,"/DL:"+"C:\"+"/")
      WriteStringN(#param,"/HIST:"+Str(1)+"/")
      WriteStringN(#param,"/POPUP:"+Str(1)+"/")
      WriteStringN(#param,"/STATUSBAR:"+Str(1)+"/")
      WriteStringN(#param,"/FAV:"+Str(0)+"/")
      CloseFile(#param)
      DLadresse$="C:\"
      rouge=63
      vert=105
      bleu=152
      HistoState=1
      StatusState=1
      PopupState=1
      FavState=0
    Else
      posbleu=FindString(option$,"BLUE:")
      argument$="merde"
      argument$=Mid(option$,posbleu+5,1)
      i=1
      While Right(argument$,1)<>"/"
        argument$=Mid(option$,posbleu+5,i)
        i+1
      Wend
      argument$=Trim(argument$,"/")
      bleu = Val(argument$)
      
      posbleu=FindString(option$,"RED:")
      argument$="merde"
      argument$=Mid(option$,posbleu+4,1)
      i=1
      While Right(argument$,1)<>"/"
        argument$=Mid(option$,posbleu+4,i)
        i+1
      Wend
      argument$=Trim(argument$,"/")
      rouge = Val(argument$)
      
      posbleu=FindString(option$,"GREEN:")
      argument$="merde"
      argument$=Mid(option$,posbleu+6,1)
      i=1
      While Right(argument$,1)<>"/"
        argument$=Mid(option$,posbleu+6,i)
        i+1
      Wend
      argument$=Trim(argument$,"/")
      vert = Val(argument$)
      
      truc$="/DL:"
      position = FindString(option$,truc$)
      argument$=Mid(option$,position+Len(truc$),1)
      i=1
      While Right(argument$,1) <>"/"
        argument$=Mid(option$,position+Len(truc$),i)
        i+1
      Wend
      DLadresse$=Trim(argument$,"/")
      truc$="/HIST:"
      position = FindString(option$,truc$)
      argument$=Mid(option$,position+Len(truc$),1)
      i=1
      While  Right(argument$,1) <>"/"
        argument$=Mid(option$,position+Len(truc$),i)
        i+1
      Wend
      HistoState=Val(Trim(argument$,"/"))
      truc$="/POPUP:"
      position = FindString(option$,truc$)
      argument$=Mid(option$,position+Len(truc$),1)
      i=1
      While  Right(argument$,1) <> "/"
        argument$=Mid(option$,position+Len(truc$),i)
        i+1
      Wend
      PopupState=Val(Trim(argument$,"/"))
      truc$="/STATUSBAR:"
      position = FindString(option$,truc$)
      argument$=Mid(option$,position+Len(truc$),1)
      i=1
      While  Right(argument$,1) <>"/"
        argument$=Mid(option$,position+Len(truc$),i)
        i+1
      Wend
      StatusState=Val(Trim(argument$,"/"))
      truc$="/FAV:"
      position = FindString(option$,truc$)
      argument$=Mid(option$,position+Len(truc$),1)
      i=1
      While  Right(argument$,1) <>"/"
        argument$=Mid(option$,position+Len(truc$),i)
        i+1
      Wend
      FavState=Val(Trim(argument$,"/"))
    EndIf
  EndIf
  CloseFile(1)
EndProcedure

Procedure CodeSource(adresse$,code$) ;Affiche le code source
  windaube=OpenWindow(#PB_Any, 01, 0, 1050, 600, "Shermavigator - SourceViewer", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
  EditorGadget(#Editor_0, 10, 50, 1020, 500)
  SetGadgetText(#Editor_0,code$)
  TextGadget(#Text_0, 10, 10, 1020, 25, adresse$)
  ButtonGadget(#copier, 10, 560, 170, 25, "Copier dans le Presse Papiers")
  ButtonGadget(#Fermer, 930, 560, 100, 25, "Fermer")
  Repeat
    evnet333=WaitWindowEvent()
    Select evnet333
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #copier
            SetClipboardText(GetGadgetText(#Editor_0))
          Case #Fermer
            CloseWindow(windaube)
            ProcedureReturn 
        EndSelect
      Case #PB_Event_CloseWindow
        CloseWindow(windaube)
        ProcedureReturn
    EndSelect
  ForEver
EndProcedure

Procedure Historique()
  If ReadFile(1,"history.txt")
    Window_5 = OpenWindow(#PB_Any,0,0,600,400, "Shermavigator - Historique de navigation", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
    SetWindowColor(Window_5, RGB(52,90,163))
    ButtonGadget(#fermer2, 490, 370, 100, 25, "Fermer")
    ListIconGadget(#Editor_1, 10, 10, 580, 350,"Pages Web consultées",500,#PB_ListIcon_GridLines)
    SetGadgetColor(#Editor_1,#PB_Gadget_LineColor,RGB(63,105,153))
    ButtonGadget(#ouvrirpage, 10, 370, 140, 25, "Ouvrir cette page")
    While Eof(1) =0
      nbLignes+1
      AddGadgetItem(#Editor_1,-1,ReadString(1))
    Wend
    Repeat
      evvvent=WaitWindowEvent()
      Select evvvent
        Case #PB_Event_Gadget
          Select EventGadget()
            Case #fermer2
              CloseWindow(Window_5)
              ProcedureReturn 
            Case #ouvrirpage
              SetGadgetText(WebView_1+GetGadgetState(Panel_1),GetGadgetItemText(#Editor_1,GetGadgetState(#Editor_1)))
          EndSelect
        Case #PB_Event_CloseWindow
          CloseWindow(Window_5)
          ProcedureReturn
      EndSelect
    ForEver
  Else 
    MessageRequester("Shermavigator","Impossible d'ouvrir l'historique."+Chr(10)+Chr(10)+"Vérifiez que vous vous être déja connecté a Internet et que l'option 'Activer l'Historique de navigation' est activée.")
  EndIf
EndProcedure
Window_0=OpenWindow(#PB_Any, x, y, width, height, "Shermavigator - Tiny Powerful Web Browser", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_Maximize)

LireOptions()
SetWindowColor(Window_0, RGB(rouge,vert,bleu))
AddSysTrayIcon(#icone,WindowID(Window_0),ImageID(1))
SysTrayIconToolTip(#icone,"Shermavigator")
CreateStatusBar(0, WindowID(Window_0))
AddStatusBarField(width/2)
AddStatusBarField(width/2-100)
AddStatusBarField(100)
StatusBarText(0, 0, "Label")
CreatePopupMenu(#menupopup)
MenuItem(#Precedent,"Précédent")
MenuItem(#Suivant,"Suivant")
MenuItem(#FermerOnglet,"Fermer cet onglet")
MenuItem(#NouvelOnglet, "Ouvrir un nouvel onglet")
MenuItem(#OuvrirSecondElement,"Ouvrir une nouvelle fenêtre de navigation")
MenuBar()
MenuItem(#Enregistrer,"Enregistrer")
MenuItem(#EnregistrerSous,"Enregistrer Sous")
MenuBar()
MenuItem(#AfficherSource,"Afficher le code source de la page")
MenuItem(#OuvrirExternalNav,"Ouvrir la page dans un navigateur externe")
CreateMenu(#Menu, WindowID(Window_0))
MenuTitle("Fichier")
MenuItem(#NouvelOnglet, "Nouvel onglet")
MenuItem(#NewFenetre,"Nouvelle Fenêtre")
MenuItem(#MenuItem_4, "Nouvelle Fenêtre de navigation")
MenuItem(#Ouvrir, "Ouvrir")
MenuItem(#Options, "Options")
MenuItem(#redemarrer, "Redémarrer le navigateur")
MenuItem(#Quitter, "Quitter")
MenuTitle("Affichage")
MenuItem(#AfficherSource,"Afficher le code source de la page")
MenuItem(#MenuItem_4, "Nouvel Element")
MenuItem(#modelecture,"Passer en mode lecture hors connection")
MenuItem(#historique,"Afficher l'Historique")
precedent = ButtonGadget(#PB_Any, 10, 20, 80, 25, "Précédent")
GadgetToolTip(precedent, "Revient a la page web précédente")
suivant = ButtonGadget(#PB_Any, 100, 20, 80, 25, "Suivant")
GadgetToolTip(suivant, "Va a la page web suivante")
String_0 = StringGadget(#PB_Any, 190, 20, 810, 25, "Shermavigator")
GadgetToolTip(String_0, "Recherche")
SetGadgetColor(String_0, #PB_Gadget_FrontColor,RGB(0,255,64))
SetGadgetColor(String_0, #PB_Gadget_BackColor,RGB(0,128,128))
SetGadgetFont(String_0, FontID(#Font_Window_0_0))
ProgressBar_0 = ProgressBarGadget(#PB_Any, 0, 0, 1270, 10, 0, 100)
SetGadgetColor(ProgressBar_0, #PB_Gadget_FrontColor,RGB(0,255,0))
SetGadgetColor(ProgressBar_0, #PB_Gadget_BackColor,RGB(63,82,116))
rechercher = ButtonGadget(#PB_Any, 1010, 20, 100, 25, "Rechercher")
GadgetToolTip(rechercher, "Rechercher sur Google le texte écrit dans la barre ci contre. L'autodétection d'URLs est supportée Vous devez pour cela commencer par 'www' si vous voulez afficher directement une page.")
actualiser = ButtonGadget(#PB_Any, 1120, 20, 75, 25, "Actualiser")
lecture=ImageGadget(#PB_Any,(1120+75+10),20,25,25,ImageID(#lecture),#PB_Image_Raised)
GadgetToolTip(actualiser, "Recharge la page web dans le navigateur.")
ButtonImage_1 = ButtonImageGadget(#PB_Any, 1230, 20, 30, 30, ImageID(Img_Window_0_0))
GadgetToolTip(ButtonImage_1, "Charge la page dans un navigateur externe.")
Panel_1 = PanelGadget(#PB_Any, 10, 50, 1080, 520)
SetGadgetAttribute(Panel_1,#PB_Panel_TabHeight,40)
AddGadgetItem(Panel_1, -1, "Tab 1")
WebView_1 = 42
WebGadget(WebView_1, 10, 10, 1060, 478, "www.google.com")
AddGadgetItem(Panel_1, -1, "   +")
CloseGadgetList()
SetGadgetAttribute(WebView_1,#PB_Web_BlockPopupMenu,#True)
;OpenFile(#param,"settings.con")
OpenFile(#histo,"history.txt")
FileSeek(#histo,Lof(#histo))
HideWindow(Window_0,#False)
statustrayicon=#True
InitNetwork()
Repeat
  event=WaitWindowEvent(150)
  If GetGadgetState(Panel_1)= CountGadgetItems(Panel_1)-1
    OpenGadgetList(Panel_1)
    AddGadgetItem(Panel_1,CountGadgetItems(Panel_1)-1,"Nouvel Onglet n°"+Str(WebView_1+CountGadgetItems(Panel_1)-1-42))
    WebGadget(WebView_1+CountGadgetItems(Panel_1)-2, 10, 10, 1060, 478, "www.google.com")
    SetGadgetState(Panel_1,CountGadgetItems(Panel_1)-2)
    SetGadgetAttribute(WebView_1+GetGadgetState(Panel_1),#PB_Web_BlockPopupMenu,#True)
    CloseGadgetList()
    ResizeGadgetsWindow_0()
  EndIf
  actuel=WebView_1+GetGadgetState(Panel_1)
  If GetGadgetAttribute(actuel,#PB_Web_Busy) <>0
    SetWindowTitle(Window_0, "Shermavigator - Chargement...")
    If dejaaffiche=#False
      SetGadgetItemText(Panel_1,GetGadgetState(Panel_1),LSet("Chargement...",26))
      dejaaffiche=#True
    EndIf
  Else
    SetWindowTitle(Window_0,"Shermavigator v4.2.2 - "+GetGadgetItemText(WebView_1+GetGadgetState(Panel_1),#PB_Web_PageTitle))
    URL$=GetGadgetText(WebView_1+GetGadgetState(Panel_1))
    If URL$  <> oldURL$
      SetGadgetItemText(Panel_1,GetGadgetState(Panel_1),LSet(GetGadgetItemText(WebView_1+GetGadgetState(Panel_1),#PB_Web_PageTitle),26))
      If HistoState=1
        WriteStringN(#histo,URL$)
      EndIf
      oldURL$=URL$
    EndIf
  EndIf
  If EventType()=#PB_EventType_PopupMenu
    DisplayPopupMenu(#menupopup,WindowID(Window_0))
  EndIf
  If FormatDate("%hh:%ii:%ss", Date()) <> date$
    StatusBarText(0,2,FormatDate("%hh:%ii:%ss", Date()))
    date$=FormatDate("%hh:%ii:%ss", Date())
  EndIf
  Select event
    Case #PB_Event_SysTray    ;Gérer le clic sur l'icone, si la fenétre est visible, la masquer, et inversement
      Select EventGadget()
        Case #icone 
          If statustrayicon=#True
            HideWindow(Window_0,#True)
            statustrayicon=#False
          Else
            HideWindow(Window_0,#False)
            statustrayicon=#True
          EndIf
      EndSelect
    Case #PB_EventType_DownloadProgress
      SetGadgetState(ProgressBar_0,(GetGadgetAttribute(WebView_1+GetGadgetState(Panel_1),#PB_Web_Progress)/GetGadgetAttribute(WebView_1+GetGadgetState(Panel_1),#PB_Web_ProgressMax))*100)
    Case #PB_Event_SizeWindow
      ResizeGadgetsWindow_0()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case precedent
          SetGadgetState(WebView_1+GetGadgetState(Panel_1),#PB_Web_Back)
        Case suivant
          SetGadgetState(WebView_1+GetGadgetState(Panel_1),#PB_Web_Forward)
        Case rechercher
          If Left(GetGadgetText(String_0),3)<>"www"
            If Left(GetGadgetText(String_0),7)<>"http://" Or Left(GetGadgetText(String_0),8)<>"https://"
              SetGadgetText(WebView_1+GetGadgetState(Panel_1),"https://www.google.fr/?gws_rd=ssl#newwindow=1&q=" + GetGadgetText(String_0))
            Else 
              SetGadgetText(WebView_1+GetGadgetState(Panel_1),URLEncoder(GetGadgetText(String_0)))
            EndIf
          Else
            SetGadgetText(WebView_1+GetGadgetState(Panel_1),URLEncoder("http://"+GetGadgetText(String_0)))
          EndIf
        Case actualiser
          SetGadgetState(WebView_1+GetGadgetState(Panel_1),#PB_Web_Refresh)
        Case ButtonImage_1
          RunProgram(GetGadgetText(WebView_1+GetGadgetState(Panel_1)))
        Case lecture
          Select EventType()
            Case #PB_EventType_LeftDoubleClick
              If ReceiveHTTPFile(GetGadgetText(WebView_1+GetGadgetState(Panel_1)),DLadresse$+GetGadgetText(WebView_1+GetGadgetState(Panel_1)))
                MessageRequester("Shermavigator",GetGadgetText(WebView_1+GetGadgetState(Panel_1))+Chr(10)+"Cette page va être archivée en mode lecture."+Chr(10)+"Chemin : "+DLadresse$+GetGadgetText(WebView_1+GetGadgetState(Panel_1)))
              Else
                MessageRequester("Shermavigator", "Impossible de télécharger "+GetGadgetText(WebView_1+GetGadgetState(Panel_1)))
              EndIf
            Case #PB_EventType_LeftClick
          EndSelect
        Case WebView_1+GetGadgetState(Panel_1)
          Select EventType()
            Case #PB_EventType_DownloadStart
          EndSelect
      EndSelect
      StatusBarText(0, 0, "Navigateur Shermavigator. Connected to : "+GetGadgetItemText(WebView_1+GetGadgetState(Panel_1),#PB_Web_PageTitle),0)
      StatusBarText(0,1,"     Adresse : "+GetGadgetText(WebView_1+GetGadgetState(Panel_1)))     
    Case #PB_Event_Menu
      Select EventMenu()
        Case #MenuItem_4
          ResizeWeb()
        Case #Quitter
          End
        Case #Ouvrir
          adresse$=OpenFileRequester( "Ouvrir ", "","Pages Web | *.htm;*html;*php;*css | Tous les fichiers | *.*",0 )
          SetGadgetText(WebView_1+GetGadgetState(Panel_1), "file://"+adresse$)
        Case #Options
          Options()
          LireOptions()
        Case #Precedent
          SetGadgetState(WebView_1+GetGadgetState(Panel_1),#PB_Web_Back)
        Case #Suivant
          SetGadgetState(WebView_1+GetGadgetState(Panel_1),#PB_Web_Forward)
        Case #OuvrirSecondElement
          ResizeWeb()
        Case #OuvrirExternalNav
          RunProgram(GetGadgetText(WebView_1+GetGadgetState(Panel_1)))
        Case #AfficherSource
          CodeSource(GetGadgetText(WebView_1+GetGadgetState(Panel_1)),GetGadgetItemText(WebView_1+GetGadgetState(Panel_1),#PB_Web_HtmlCode))
        Case #Historique
          Historique()
        Case #FermerOnglet
          activeonglet=GetGadgetState(Panel_1)
          SetGadgetState(Panel_1,activeonglet+1)
          RemoveGadgetItem(Panel_1,activeonglet)
        Case #NouvelOnglet
          OpenGadgetList(Panel_1)
          AddGadgetItem(Panel_1,CountGadgetItems(Panel_1)-1,"Nouvel Onglet n°"+Str(WebView_1+CountGadgetItems(Panel_1)-1-42))
          WebGadget(WebView_1+CountGadgetItems(Panel_1)-2, 10, 10, 1060, 478, "www.google.com")
          SetGadgetState(Panel_1,CountGadgetItems(Panel_1)-2)
          SetGadgetAttribute(WebView_1+GetGadgetState(Panel_1),#PB_Web_BlockPopupMenu,#True)
          CloseGadgetList()
          ResizeGadgetsWindow_0()
        Case #Redemarrer
          RunProgram("D:\Program Files (x86)\Shermavigator4.2.1\Shermavigator v4.2.2.exe") ;Il faudrait "universaliser" cette ligne a tous les chemins d'accés de l'ordi, ou que soit le Sherm'
          End
        Case #NewFenetre
          RunProgram("D:\Program Files (x86)\Shermavigator4.2.1\Shermavigator v4.2.2.exe")
      EndSelect
  EndSelect
Until event=#PB_Event_CloseWindow
Et voilà ! C'est long hein?
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Le... SHERMAVIGATOR !

Message par Micheao »

Dans ton code inutile de mettre 2 fois Enumeration FormFont

Code : Tout sélectionner

Enumeration FormFont
  #Font_Window_0_0
EndEnumeration
LoadFont(#Font_Window_0_0,"Arial", 15)
Enumeration fichier
  #param
EndEnumeration
Enumeration FormFont
  #Font_Window_3_0

LoadFont(#Font_Window_3_0,"Arial", 16, #PB_Font_Bold)
c'est mieux comme ça :

Code : Tout sélectionner

Enumeration FormFont
  #Font_Window_0_0
   Font_Window_3_0 
EndEnumeration
LoadFont(#Font_Window_0_0,"Arial", 15)
LoadFont(#Font_Window_3_0,"Arial", 16, #PB_Font_Bold)

Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Le... SHERMAVIGATOR !

Message par djes »

Un premier code partagé, ça mérite déjà un bravo :)

Après ça, bon, j'ai essayé de compiler, j'ai un bug sur la création du fichier de prefs. J'ai mis en com, mais la fenêtre reste vide... Pour l'instant je vais en rester là, j'attends la correction :)
Avatar de l’utilisateur
Micoute
Messages : 2583
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Le... SHERMAVIGATOR !

Message par Micoute »

Micheao a écrit :Dans ton code inutile de mettre 2 fois Enumeration FormFont

Code : Tout sélectionner

Enumeration FormFont
  #Font_Window_0_0
EndEnumeration
LoadFont(#Font_Window_0_0,"Arial", 15)
Enumeration fichier
  #param
EndEnumeration
Enumeration FormFont
  #Font_Window_3_0

LoadFont(#Font_Window_3_0,"Arial", 16, #PB_Font_Bold)
c'est mieux comme ça :

Code : Tout sélectionner

Enumeration FormFont
  #Font_Window_0_0
   Font_Window_3_0 
EndEnumeration
LoadFont(#Font_Window_0_0,"Arial", 15)
LoadFont(#Font_Window_3_0,"Arial", 16, #PB_Font_Bold)

Bien sûr que si que ça se fait et c'est bien pour ça que Fred a inventé ce système de label, tu devrais relire le fichier d'aide de PB.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Le... SHERMAVIGATOR !

Message par Marc56 »

C'est bien d'avoir fait l'effort de packager aussi :wink:

Maintenant pour faire plus net, il faudrait inclure les graphiques dans l'EXE, ça évite de devoir livrer un tas de petits fichiers en plus.
(Voir aide sur: IncludeBinary et CatchImage)

Conseil 2: étant donné qu'on n'imprime plus les codes sources, ne pas hésiter à mettre des lignes vides :o

Conseil 3: Toujours commencer par un EnableExplicit :idea:

Code : Tout sélectionner

RunProgram("D:\Program Files (x86)\Shermavigator4.2.1\Shermavigator v4.2.2.exe") 
;Il faudrait "universaliser" cette ligne a tous les chemins d'accés de l'ordi, ou que soit le Sherm'
Emplacement du programme en cours:
http://www.purebasic.com/french/documen ... ename.html

D'une manière générale: jamais de chemin absolu dans un programme (même en Dev),
toujours du chemin relatif et utiliser les variables d'environnement
(SET dans une fenêtre de commande pour les récupérer)

:)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Le... SHERMAVIGATOR !

Message par Ar-S »

@Micoute
oui les labels c'est pratique mais sherman a utilisé le même nom de label "FormFont" pour 2 enumerations..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Le... SHERMAVIGATOR !

Message par Marc56 »

Bah, c'est inutile pour deux séries si proches, mais techniquement ça marche

Code : Tout sélectionner

Enumeration FormFont
    #AAA
    #BBB
    #CCC
EndEnumeration

Enumeration FormFont
    #DDD
    #EEE
    #FFF
EndEnumeration

Debug #AAA
Debug #BBB
Debug #CCC
Debug #DDD
Debug #EEE
Debug #FFF
Résultat

Code : Tout sélectionner

0
1
2
3
4
5
Les énumérations nommées servent surtout pour reprendre la suite quand on utilise des Includes ou qu'on a un grand code et qu'on ne veut pas 'scroller'

:)
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Le... SHERMAVIGATOR !

Message par Marc56 »

Ton code est tellement serré que tu en oublie des trucs essentiels :o

Ex: chaque fois qu'on accède à une ressource externe (ouverture/suppression de fichiers, il faut tester le résultat et prévoir une sortie alternative en cas d'échec (comme les Try /Catch dans d'autres langages))
(FileSize() te permet de voir si un fichier existe)
La machine de l'utilisateur n'a peut être pas des droits en écriture sur l'emplacement que tu as prévu.

À certains endroits, tu l'as presque bien fait, mais mal imbriqué:

Code : Tout sélectionner

If OpenFile(1,"settings.con")
    ... Code
EndIf
CloseFile(1)
Ici, si ton fichier ne peut être ouvert, il y aura quand même une tentative de fermeture, donc potentiellement un message d'erreur car ton ClosFile est à l’extérieur du test If.

La bonne méthode serait:

Code : Tout sélectionner

If OpenFile(1,"settings.con")
    ... code si OK
    CloseFile(1)
Else
   ... message d'erreur et éventuelle sortie
   ... MessageRequester(...)
   ... End ; (si erreur fatale)
EndIf
Perso, pour ne pas oublier les sorties, je commence même par la condition mauvaise

Code : Tout sélectionner

If Not OpenFile(1,"settings.con")
    ... message d'erreur et éventuelle sortie
    End
Else
    ... code à effectuer
    CloseFile(1)
EndIf
PS. Vu que la plupart des utilisateurs ont aujourd'hui des écrans 16/9 en 1920x, évite d'ouvrir la fenêtre principale en plein écran (#PB_Window_Maximize) c'est pénible 8O Prend plutôt la largeur de l'écran (DesktopWidth() et affiche par exemple à 80% :)

Cela dit, dans l'ensemble, beau boulot, car ça fonctionne
(enfin, la version à télécharger, car ton code source ne donne pas les fichiers graphiques)

:wink:
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Le... SHERMAVIGATOR !

Message par Marc56 »

Oui :wink:

Je le fais aussi dans l'IDE en affichant le gestionnaire de notes et en nommant les endroits importants.
(Les notes peuvent aussi s'afficher dans le gestionnaire de procédure.)

Très commode ce gestionnaire de notes, sauf le bug qui fait que la couleur (surlignage) qu'on donne aux mots clé ou à la ligne entière ne s'affiche pas dans une procédure si on a défini une couleur pour les procédures.
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Le... SHERMAVIGATOR !

Message par JohnJohnsonSHERMAN »

Déja, merci. Tous pour ces réponses rapides, ces conseils et tout !!! Ca fait bien plaisir !

Ensuite, le double Enumeration, je l´avait meme pas vu.. sinon je l´aurais viré. En fait c´est le concepteur de fenetre de pb qui l´a généré ainsi au déébut de mon projet.
Quant aux moyens d´inclure l´image dans l´exe, je savais que ca existait, mais j´y avait pas pensé donc merci bien! Je vais l´inclure dés maintenant.
Enfin, si vous rencontrez une erreur avec un des ficiers crééz-le de force (l´historique : "history.txt", les préfs : "settings.con").
De toute facons, ne compilez pas le code, prenez l´installateur sur mon site...

En tout cas merci et restez a l´écoute pour e futures versions!! :)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Le... SHERMAVIGATOR !

Message par Ar-S »

si vous rencontrez une erreur avec un des ficiers crééz-le de force
Allons ! Ton code dois faire les vérifications (via filesize par ex) ! Ce n'est pas aux testeurs de s'adapter. Ils testent ton code, ensuite à toi de le corriger. Sinon ça laisse planer des doute sur la fiabilité de l'exe proposé.
Bonne continuation en tout cas, c'est un beau 1er jet.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Le... SHERMAVIGATOR !

Message par JohnJohnsonSHERMAN »

Ce que je ne pige pas, c´est comment certains peuvent avoir un ug sur le fichier des préfs... normalement OpenFile crée le fichier si celui ci n´existe pas, il devrait donc etr automatiquementcré. Aprés, ca vient peut etre de l´antivirus ou du systéme, ca dépend si vous avez les droits d´écriture là ou vous avez mis l´exe... c´est pour a que je dis de les créer de force, au cas ou le Shermavigator n´ait pas pu créér les fichiers.
C´est vrai que de toutes facons ce projet est loin d´etre fini... il me reste a régler tout un tas de trucs genre la fermeture des onglets, les messages d´erreur, les téléchargements...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Le... SHERMAVIGATOR !

Message par Marc56 »

De la façon dont tu as fait ton setup, le programme s'installe dans ProgramFiles(x86) ce qui est bien :D

Par contre il faut savoir que ce répertoire n'est accessible en écriture que pour les profiles Admin (sécurité) :!:
(Le but est d'empêcher un programme de casser une installation ou de supprimer des répertoires/ Fichiers d'autres)

Ton programme en cours de lancement tente d'y écrire les fichiers de préfs, ce qui n'est pas conforme :twisted:

Un programme normalisé, doit écrire ses donnes dans un sous-répertoire de %AppData% :)

Dans innosetup, tu met pour les fichiers de données ... DestDir: "{userappdata}\<ton répertoire>" (il sera créé) :!:
De la façon dont tu es connecté, ce répertoire sera créé dans Local ou Roaming

Dans ton programme tu gère tes données par exemple:
DataDir.s = GetHomeDirectory() + "AppData\<ton répertoire>" 8)
C'est Windows qui gère pour aller dans Local ou Roaming

Et, non, il ne faut pas dire « l'utilisateur n'a qu'à être admin. » même pour un admin c'est mal d'écrire dans les répertoires program :P

C'est pas facile de mettre au point un setup, mais c'est ce qui différencie la bidouille du travail bien fait :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Le... SHERMAVIGATOR !

Message par Ar-S »

Spock, tu sais que tu peux aussi indiquer à windows l'emplacement de tes fichiers doc/images/vidéos afin que les raccourcis systèmes mènent au bon endroit.
Ce que je trouves débile moi, c'est que depuis l'avènement des disques partitionnés, Windows ne mettent pas par défaut le dossier utilisateur sur une partoche non système, alors que souvent une partition datas existe sur les pc neuf d'aujourd'hui.

L'heureux bele :mrgreen:
Image

j’arrête là le hors sujet, désolé de la dérive Sherman
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre