STUSK (Stupid site keeper)

Share your advanced PureBasic knowledge/code with the community.
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

:oops: :oops: :oops:

I checked the first post, and downloaded the Sitelist2, works OK.
(I had just tried the version on your site)

Can you also add '|*.html' to the import requester. (just for completeness :) )

Edit:
Also could you put back the close window button for the about box(, or close it on mouse-click)
:lol: Otherwise I have to move my arm to the keyboard for the escape key, and I'm just too lazy :lol:
%101010 = $2A = 42
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Re: STUSK (Stupid site keeper)

Post by Fangbeast »

I checked the first post, and downloaded the Sitelist2, works OK.
(I had just tried the version on your site)
Tsk, tsk. That's why I always put the updated link in the first post here. My web site always lags behind my updates here. Site updated now.
Can you also add '|*.html' to the import requester. (just for completeness :) )
Oh, okay, I did it just for you. Even though FireFox and IE always seem to output htm and not html, I still did it for you.:):)
Also could you put back the close window button for the about box(, or close it on mouse-click) :lol: Otherwise I have to move my arm to the keyboard for the escape key, and I'm just too lazy :lol:
Sorry, no. I worry about your extreme laziness, I assume you learned from that underpants wearing on head srod. (he will kill me now). But there is an overall theme to my windows here and all but the main one have no 'x' to close the window, they are far more elegant to me. They all close with ESCape and with the exception of the about window, they all have a close button as well. I am not going to change the overall gui theme of the program by changing just one window.

Beat me up with a dead haddock if you wish, I can stand the pain if you can stand the screaming!!!!:):) You lazy tart:):):)

P.s. There are some strange characters in the FireFox imported bookmarks that I am looking at, don't know why yet. Working on it. never mind, silly me. I switched on UniCode and they were fixed (Groan)
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Re: STUSK (Stupid site keeper)

Post by Fangbeast »

Well Perkin, this is annoying.

The exported FireFox bookmarks have a <DD> description field and the IE bookmarks file do not. And that's the only way to tell the difference between the two, even though they both declare themselves to be "!DOCTYPE NETSCAPE-Bookmark-file-1>" at the front!!

I'd have to pre-read both files completely to find out which file is which as my current method uses a toggle flag to read a description from a bookmark file if it exists and when the IE exported bookmarks file is processed, it's all blank lines.

I've edited my current example code below to read out URL/TITLE/DESCRIPTION/CATEGORY/OWNER from the FireFox bookmarks file, give that a test and tell me if you want me to add the pre-read code.

Anyone have an Opera bookmarks export file for me to check out as well?

Code: Select all

Enumeration 1
  #Window_BookMarks
EndEnumeration

#WindowIndex = #PB_Compiler_EnumerationValue

Enumeration 1
  #Gadget_BookMarks_fmain
  #Gadget_BookMarks_BookMarks
  #Gadget_BookMarks_fcontrol
  #Gadget_BookMarks_OpenFile
  #Gadget_BookMarks_ExitProgram
EndEnumeration

#GadgetIndex = #PB_Compiler_EnumerationValue

Enumeration 1
  #Image_BookMarks_OpenFile
  #Image_BookMarks_ExitProgram
EndEnumeration

#ImageIndex = #PB_Compiler_EnumerationValue

CatchImage(#Image_BookMarks_OpenFile,     ?_OPT_BookMarks_OpenFile)
CatchImage(#Image_BookMarks_ExitProgram,  ?_OPT_BookMarks_ExitProgram)

DataSection
  _OPT_BookMarks_OpenFile     : IncludeBinary "Images\open32x32.ico"
  _OPT_BookMarks_ExitProgram  : IncludeBinary "Images\exit32x32.ico"
EndDataSection

Procedure.l Window_BookMarks()
  If OpenWindow(#Window_BookMarks,65,76,750,600,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
      Frame3DGadget(#Gadget_BookMarks_fmain,5,0,740,530,"")
      ListIconGadget(#Gadget_BookMarks_BookMarks,15,15,720,505,"Bookmark",200,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
        AddGadgetColumn(#Gadget_BookMarks_BookMarks,1,"Title",200)
        AddGadgetColumn(#Gadget_BookMarks_BookMarks,2,"Description",200)
        AddGadgetColumn(#Gadget_BookMarks_BookMarks,3,"Category",100)
        AddGadgetColumn(#Gadget_BookMarks_BookMarks,4,"Owner",100)
        SetGadgetFont(#Gadget_BookMarks_BookMarks,LoadFont(#Gadget_BookMarks_BookMarks,"Arial",11,0))
      Frame3DGadget(#Gadget_BookMarks_fcontrol,5,530,740,65,"")
      ButtonImageGadget(#Gadget_BookMarks_OpenFile,15,545,40,40,ImageID(#Image_BookMarks_OpenFile))
      ButtonImageGadget(#Gadget_BookMarks_ExitProgram,695,545,40,40,ImageID(#Image_BookMarks_ExitProgram))
      HideWindow(#Window_BookMarks,0)
      ProcedureReturn WindowID(#Window_BookMarks)
  EndIf
EndProcedure

Declare   OpenBookMarks()
Declare.s XMLToText(XMLString.s)                                                        ; Strip illegal characters from text strings

; My personal constants

#Author                         = "Miklós G Bolváry"                                    ; Author's name
#CopyRight                      = "PeriTek Visions 2010"                                ; Copyright holder
#Version                        = "v0.00"                                               ; Program version

#Regstring                      = " --* Freeware *-- "                                  ; Registration string

#Fish                           = "<°)))o><²³  "                                        ; Love the fish!
#Basename                       = "PeriTek Firemarks "                                  ; Base name for ini and dataabse
#Program                        = #Fish + #Basename + #Version + #Regstring             ; Copyright string
#Traynote                       = #Fish + #Basename + #Version                          ; Copyright string
#Eol                            = Chr(13) + Chr(10)                                     ; End of line marker

#TitleTime                      = 1
  
; All program variables

Structure ProgramData
  QuitValue.i                                                                           ; Program quit flag
  Mutex.i                                                                               ; Open window flag  

  TrayState.i                                                                           ; Is the form minimised to the system tray

  CurrentDir.s                                                                          ; The current program startup directory
  CurrentLine.i                                                                         ; Current line int he list, any program
EndStructure

; Any global variables, lists etc

Global Program.ProgramData                                                              ; Structure to hold program data

Global TitleString.s                                                                    ; The old window title string

; Get working directories variables and create the physical dirs that go with them

Program\CurrentDir    = GetCurrentDirectory()                                           ; Get the current directory name

Procedure OpenBookMarks()
  BookMarkFile.s = OpenFileRequester("Select FireFix Bookmarks file", Program\CurrentDir, "HTM (*.htm)|*.htm;*.html", 1)
  If BookMarkFile.s
    ExpressionId.i = CreateRegularExpression(#PB_Any, "\<[^\<]+\>")
    OwnerName.s = StringField(GetHomeDirectory(), 3, "\")
    InFileId.i = ReadFile(#PB_Any, BookMarkFile.s)
    If InFileId.i
      While Eof(InFileId) = 0
        TempString.s = ReadString(InFileId.i)
        If FindString(TempString.s, "<DT>", 1) And FindString(TempString.s, "A HREF", 1)
          MainData = 1
          TempURL.s   = StringField(TempString.s, 2, Chr(34))
          TempTitle.s = LTrim(RTrim(ReplaceRegularExpression(ExpressionId.i, TempString.s, "")))
          TempTitle.s = XMLToText(TempTitle.s)
          If LCase(Right(TempTitle.s, 4)) = ".url"
            TempTitle.s = Left(TempTitle.s, Len(TempTitle.s) - 4)
          EndIf
          ;AddGadgetItem(#Gadget_BookMarks_BookMarks, -1, TempURL.s + Chr(10) + TempTitle.s + Chr(10) + "FireFox BookMark" + Chr(10) + OwnerName.s)
        EndIf
        If FindString(TempString.s, "<DD>", 1) And MainData = 1
          Description.s = LTrim(RTrim(ReplaceRegularExpression(ExpressionId.i, TempString.s, "")))
          XMLToText(Description.s)
          AddGadgetItem(#Gadget_BookMarks_BookMarks, -1, TempURL.s + Chr(10) + TempTitle.s + Chr(10) + Description.s + Chr(10) + "Imported BookMark" + Chr(10) + OwnerName.s)
          MainData = 0
        EndIf
      Wend
    Else
      Debug "Could not open the file off disk."
    EndIf
  Else
    Debug "User cancelled the file load."
  EndIf
EndProcedure

; Strip illegal characters from text strings

Procedure.s XMLToText(XMLString.s)
  TextString.s = RemoveString(XMLString.s, Chr(13))
  If Left(TextString.s, 1) = Chr(10)
    TextString.s = Mid(TextString.s, 2)
  EndIf
  TextString.s = ReplaceString(TextString.s, "&", "&")
  TextString.s = ReplaceString(TextString.s, "<", "<")
  TextString.s = ReplaceString(TextString.s, ">", ">")
  TextString.s = ReplaceString(TextString.s, "&apos;", "'")
  TextString.s = ReplaceString(TextString.s, """, Chr(34))
  TextString.s = ReplaceString(TextString.s, "&#128", "€")
  TextString.s = ReplaceString(TextString.s, "'", "'")
  ;TextString.s = ReplaceString(TextString.s, Chr(10), "")
  ;TextString.s = ReplaceString(TextString.s, Chr(182), Chr(10))
  ;TextString.s = ReplaceString(TextString.s, Chr(13), "")
  ProcedureReturn Trim(TextString.s)
EndProcedure

XIncludeFile "FireFoxMarks_Constants.pb"                                                ; 
XIncludeFile "FireFoxMarks_Windows.pb"                                                  ; 
XIncludeFile "FireFoxMarks_Mydeclarations.pb"                                           ; All procedural declarations
XIncludeFile "FireFoxMarks_Myconstants.pb"                                              ; All my personal constants

XIncludeFile "Modules\_OpenBookMarks.pbi"                                               ; Open FireFox Bookmarks file
XIncludeFile "Modules\_XMLToText.pbi"                                                   ; Strip illegal characters from text strings

If Window_BookMarks()
  Program\QuitValue = 0
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #Window_BookMarks                    : Program\QuitValue = 1
        EndSelect
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Gadget_BookMarks_BookMarks
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
              Case #PB_EventType_RightDoubleClick
              Case #PB_EventType_RightClick
              Default
            EndSelect
          Case #Gadget_BookMarks_OpenFile           : OpenBookMarks()
          Case #Gadget_BookMarks_ExitProgram
        EndSelect
    EndSelect
  Until Program\QuitValue
  CloseWindow(#Window_BookMarks)
EndIf
End
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

Beat me up with a dead haddock if you wish, I can stand the pain if you can stand the screaming!!!!:):) You lazy tart:):):)
I can't find a haddock, but one of my loaches just died, so I could beat you with that,
but as it's only about 3 inches long, you would be laughing not screaming. :lol:

---

Just Installed Win7, so i may have messed up something.

Using example code, nothing happens when importing - but I had to comment out the XIncludeFile lines,
from the Sitelist(Src) I've got, the only file of the XInc'd ones is '_XMLToText.pbi' which is in the Generic folder
all the others are missing.

The IE7 exported faves file seemed to be imported alright with the earlier code anyway.

Edit:
I may have mixed up some of the exported file, but none of them have <DD> tags
%101010 = $2A = 42
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Re: STUSK (Stupid site keeper)

Post by Fangbeast »

I can't find a haddock, but one of my loaches just died, so I could beat you with that, but as it's only about 3 inches long, you would be laughing not screaming. :lol:
I've no idea what a loach is but if it can be wrapped ing oat cheese, i'm all for it.
Just Installed Win7, so i may have messed up something.
Story of my life.
Using example code, nothing happens when importing - but I had to comment out the XIncludeFile lines, from the Sitelist(Src) I've got, the only file of the XInc'd ones is '_XMLToText.pbi' which is in the Generic folder all the others are missing.
What on earth are you doing??? Not the old SiteList source, I said the example code in the posts I made here!! Such as the post 2 posts above this one!!!
I may have mixed up some of the exported file, but none of them have <DD> tags
The FireFox bookmarks file has <DD> tags and these contain the description field for the URL above it. The IE bookmarks file do not have <DD> tags and no description. Use the example code that I posted 2 posts above this one to test the FireFox one. (Works here).

Then tell me if you want me to add extra code to distinguish between the firefox file with descriptions and the ie one without. Personally, I'd care less about ie:):)
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

I tried the code in the previous posting (beginning with 'Well Perkin, this annoying') but as I said none of the XIncludes were available,
so I commented those lines out and tried running the code, but none of the fave files would import anything.

Reading the raw html of all the the exported faves files I have (both IE and FF), none have any <DD> tags for the bookmarks

Here's one line from the FF (v3.6.3) exported file

Code: Select all

<DT><A HREF="http://www.purebasic.fr/english/index.php" ADD_DATE="1215175643" LAST_MODIFIED="1272568592">PureBasic Forum</A>
Here's the same line from an IE (v7) exported file

Code: Select all

<DT><A HREF="http://www.purebasic.fr/english/index.php" ADD_DATE="1215175643" LAST_VISIT="1272699507" LAST_MODIFIED="1272699507">_PureBasic Forum</A>
There's only one <DD> tag in the FF file, right near bottom of file

Code: Select all

<DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
Using the earlier posted example (in this thread) and the updated OpenBookMarks() procedure inserted into the example,
all the fave files I have seemed to import correctly (maybe because mine haven't got <DD> tags?)

Does this info help?
If you want' Ill export a fresh faves file from FF that I've got installed, so you can check the html against one you have
(I've disabled IE as instructions from another of your posts, so I can't create a fresh exported file, but I have got one from last week, so you could check through that if needed)
%101010 = $2A = 42
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

Thanks for adding the '|*html' - some of my exported fave files were *.htm, some were *.html
(the last Faves I exported by FF v3.6.3 were *.html)

perhaps there's a setting somewhere which determines which?
%101010 = $2A = 42
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Re: STUSK (Stupid site keeper)

Post by Fangbeast »

I tried the code in the previous posting (beginning with 'Well Perkin, this annoying') but as I said none of the XIncludes were available, so I commented those lines out and tried running the code, but none of the fave files would import anything.
Yes, IE is annoying and it annoyed me greatly (grin). As for the Xincludes, I forgot to comment them out. All code from them is in the code above anyway.
Reading the raw html of all the the exported faves files I have (both IE and FF), none have any <DD> tags for the bookmarks
Interesting. I am running FireFox 3.6.3 and the FF bookmarks has DD tags (descriptions) for most bookmarks. The IE file doesn't.
There's only one <DD> tag in the FF file, right near bottom of file
Damn. Most times, when you elect to save a bookmark in FireFox, it extracts details such as url, title and description from the sites' html header details so nearly all of them should have <DD> tags for each entry.
Using the earlier posted example (in this thread) and the updated OpenBookMarks() procedure inserted into the example, all the fave files I have seemed to import correctly (maybe because mine haven't got <DD> tags?)
Yes, that's right. I should disable the reading of description tags just for this reason and leave it at url and title for simplicity and uncomplication.
If you want' Ill export a fresh faves file from FF that I've got installed, so you can check the html against one you have.
Good idea. We will keep bashing this example code around until it works perfectly and then add it to the main sitelist program. That way, I won't break existing working code.
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

YES - sussed it.
If a page is Bookmarked from FF (i.e. not imported bookmark) quite often they have the <DD> tags.
Not all of them though. I suppose it depends on the website being bookmarked.

E.G.
I Bookmarked the PB forum's Board Index Page, no <DD> tag was created.
I Bookmarked www.bbc.co.uk, a <DD> tag was created with the following
'Breaking news, sport, TV, radio and a whole lot more. The BBC informs, educates and entertains - wherever you are, whatever your age.'

So I'll just open the IE faves file as a html page, rather than import it into FF
open each of the wanted links, bookmark the page, which should give it the <DD>comment tags.
Then an exported FF Bookmarks file will have the <DD> tags.

Most of the bookmarks I had in FF were from an old favourites exported from IE, that's why I had no <DD> tags.



So, now we know why the FF file had no <DD> tags, you can determine wether you want to include those <DD> comment fields if they're present or not.

Hopefully this will be an end to the import problem.
(Unless you get hold of an opera file and that's completely different)
%101010 = $2A = 42
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

I just tried a portable version of Opera, bookmarking a couple of sites, exporting the bookmarks to *.html
and found that Opera also includes the <DD> tags.
%101010 = $2A = 42
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

Using the latest test code, the opera file is imported as good as the FF one.

I noticed one small bug, the last entry I had in a file had no <DD> tag, but the description was added from the next <DD> tag (which was the bottom <DD> tag.

Code: Select all

<DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
Check the FF exported file in the zip from the link I pm'd you, and you should see what I mean, it was the last entry - winehq.org
%101010 = $2A = 42
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Re: STUSK (Stupid site keeper)

Post by Fangbeast »

Using the latest test code, the opera file is imported as good as the FF one.
That's great
I noticed one small bug, the last entry I had in a file had no <DD> tag, but the description was added from the next <DD> tag (which was the bottom <DD> tag.
I saw that. Having trouble figuring this one out, am not strong on logic and we do need those nice long descriptions.

Hmm, who do I know who is logical and can help my poor old brain figure this out??? :):) (Thinking hurts, still recovering from a dratted cold)
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

Edit: disregard this fix - it doesn't work
Fangles, in the OpenBookmarks() proc, move the line 'MainData=0', one line further down - after the EndIf
that way it resets the MainData variable, and will only include it if it's directly after a DD entry.

Code: Select all

        If FindString(TempString.s, "<DD>", 1) And MainData = 1
          Description.s = LTrim(RTrim(ReplaceRegularExpression(ExpressionId.i, TempString.s, "")))
          XMLToText(Description.s)
          AddGadgetItem(#Gadget_BookMarks_BookMarks, -1, TempURL.s + Chr(10) + TempTitle.s + Chr(10) + Description.s + Chr(10) + "Imported BookMark" + Chr(10) + OwnerName.s)
        EndIf
        MainData = 0
Edit:
I know it's only a test code, but the FileRequester window' title is 'FireFix'. :)
May be intentional, I don't know. :)
Last edited by Perkin on Mon May 03, 2010 11:51 am, edited 1 time in total.
%101010 = $2A = 42
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

:oops:
Disregard that last 'fix', no Descriptions will be added. because resetting before reading next line - D'oh
Major boo-boo.
%101010 = $2A = 42
Perkin
Enthusiast
Enthusiast
Posts: 504
Joined: Thu Jul 03, 2008 10:13 pm
Location: Kent, UK

Re: STUSK (Stupid site keeper)

Post by Perkin »

I think I've got it.
Replace the OpenBookMarks() procedure from the test code with this

Should be usable for all the importing (IE, FF and Opera)

Code: Select all

Procedure OpenBookMarks()
  BookMarkFile.s = OpenFileRequester("Select FireFox Bookmarks file", Program\CurrentDir, "HTM (*.htm)|*.htm;*.html", 1)
  If BookMarkFile.s
    ExpressionId.i = CreateRegularExpression(#PB_Any, "\<[^\<]+\>")
    OwnerName.s = StringField(GetHomeDirectory(), 3, "\")
    InFileId.i = ReadFile(#PB_Any, BookMarkFile.s)
    If InFileId.i
      linecheck=0
      While Eof(InFileId) = 0
        TempString.s = ReadString(InFileId.i)
        linecheck+1
        If FindString(TempString.s, "<DT>", 1) And FindString(TempString.s, "A HREF", 1)
          MainData = 1 : GotOne=linecheck
          TempURL.s   = StringField(TempString.s, 2, Chr(34))
          TempTitle.s = LTrim(RTrim(ReplaceRegularExpression(ExpressionId.i, TempString.s, "")))
          TempTitle.s = XMLToText(TempTitle.s)
          If LCase(Right(TempTitle.s, 4)) = ".url"
            TempTitle.s = Left(TempTitle.s, Len(TempTitle.s) - 4)
          EndIf
          AddGadgetItem(#Gadget_BookMarks_BookMarks, -1, TempURL.s + Chr(10) + TempTitle.s + Chr(10) + "" + Chr(10) + "FireFox BookMark" + Chr(10) + OwnerName.s)
        EndIf
        If FindString(TempString.s, "<DD>", 1) And MainData = 1 And linecheck=GotOne+1
          Description.s = LTrim(RTrim(ReplaceRegularExpression(ExpressionId.i, TempString.s, "")))
          Description = XMLToText(Description.s)
          MainData = 0
;          AddGadgetItem(#Gadget_BookMarks_BookMarks, -1, TempURL.s + Chr(10) + TempTitle.s + Chr(10) + Description.s + Chr(10) + "Imported BookMark" + Chr(10) + OwnerName.s)
          SetGadgetItemText(#Gadget_BookMarks_BookMarks, CountGadgetItems(#Gadget_BookMarks_BookMarks)-1, Description ,2)
        EndIf
        Description=""
      Wend
    Else
      Debug "Could not open the file off disk."
    EndIf
  Else
    Debug "User cancelled the file load."
  EndIf
EndProcedure
%101010 = $2A = 42
Post Reply