Local .DSL - Handling


Forum: myDSL Extensions (deprecated)
Topic: Local .DSL - Handling
started by: struppi

Posted by struppi on April 25 2005,13:41
hi. i think the dsl 1.0 version of the mydslPanel is really good - for downloading extensions from the repository.

but what about all the local stored extensions? the last, perl+dillo version was able to load extensions from the internet _and_ from local drives.

so i tried to modify the flua mydslPanel. This is the result:

mydslPanel2.lua:
Code Sample
#!/bin/flua

-- (C) Robert Shingledecker 2005
--
-- Main GUI loop for myDSL Extensions
-- Modified by Struppi

w = Window{430,170, "DSL Download Extension Panel"}

b1 = Button{10,10,130,30, "&Apps"}
function b1.callback()
  execute("mydslBrowser.lua apps")
end

b2 = Button{10,50,130,30, "&Multimedia"}
function b2:callback()
  execute("mydslBrowser.lua multimedia")
end

b3 = Button{10,90,130,30, "&Themes"}
function b3:callback()
  execute("mydslBrowser.lua themes")
end

b4 = Button{150,10,130,30, "&Games"}
function b4:callback()
  execute("mydslBrowser.lua games")
end

b5 = Button{150,50,130,30, "&Net"}
function b5:callback()
  execute("mydslBrowser.lua net")
end

b6 = Button{150,90,130,30, "&UCI"}
function b6:callback()
  execute("mydslBrowser.lua uci")
end

b7 = Button{290,10,130,30, "G&tk2"}
function b7:callback()
  execute("mydslBrowser.lua gtk2")
end

b8 = Button{290,50,130,30, "&System"}
function b8:callback()
  execute("mydslBrowser.lua system")
end

b9 = Button{290,90,130,30, "&WM_Apps"}
function b9:callback()
  execute("mydslBrowser.lua wm_apps")
end

inp = Input{130,130,140,25,"MyDsl - Directory:"; callback=cb}
b10 = Return_Button{290,127,100,30, "OK"}
function b10:callback()
  myDslDir=inp.value
  execute("mydslLocalBrowser.lua " .. myDslDir)
end

w:end_layout()
w:show()


myDslLocalBrowser.lua:
Code Sample
#!/bin/flua -f

-- (c) 2005 Robert Shingledecker
-- myDSL extension browser noramlly called from mydslPanel
-- Local modification by Struppi

function parseInfo(s)
 local i,j = strfind(s,".dsl")
 if not i then
    return nil
 end
 local t=strsub(s,1,j)
 --local k,l = strfind(t,'"')
 --s=strsub(t,k+1)
 s=t
 return s
end

-- Main
if getn(arg) == 1 then
  myDslDir = arg[1]
else
  print("usage: mydslBrowser.lua [library_name]")
  exit(1)
end

execute('ls /mnt/' .. myDslDir .. '/optional/*.dsl >index.txt')
local file,err = openfile("index.txt", "r")

if not file then
  print("Cannot open file index.txt: ".. err)
  exit(1)
end

filetable = {}
fname = tmpname()
filelist = openfile(fname,"w")
line = read(file, "*l")
while line do
  result = parseInfo(line)
  if result then
     tinsert(filetable,result)
     write(filelist, result .. "\n")
  end
  line = read(file,"*l")
end
closefile(file)
closefile(filelist)

w = Window{300,400,'/mnt/'..myDslDir; box=Boxtype.none}
function w:callback()
 remove(fname)
 remove('index.txt')
 exit(0)
end
browser = Select_Browser{0,0,300,400; type=Browsertype.single}

function browser:callback()
  selected_item = filetable[self.value]

  if fl_ask("Install DSL-Extension " .. selected_item ..  " ?") then
     execute("mydsl-load " .. selected_item )
     remove(fname)
     remove('index.txt')
     exit(0)
   else
      return
   end

  --execute('mydslInfo.lua ' .. myDslDir .. ' ' .. selected_item)
end

if not browser:load(fname) then
  print("can't load ", fname)
  exit(1)
end

browser.position = 0
w.resizable = browser
w:show()


i'm not a programmer and i think the two scripts are full of unneeded things, but it works. the user can enter the device and the script looks for all .dsl-files (.uci and .tar.gz can be added quite easy) in the /mnt/<device>/optional directory. one click on an extension asks whether to install it or not.

perhaps this is an idea for robert an the other 'dsl-professionals' :)

struppi

Posted by mikshaw on April 25 2005,14:12
very cool =o)

This apparently builds a new list every time the script is called, and then removes the list when you install a package?
What about the possiblity to select multiple packages to install?

Posted by struppi on April 25 2005,14:30
Quote
What about the possiblity to select multiple packages to install?


i forgot this: change the browser:callback() function and you can load them one after another...

Code Sample
function browser:callback()
 selected_item = filetable[self.value]

 if fl_ask("Install DSL-Extension " .. selected_item ..  " ?") then
    execute("mydsl-load " .. selected_item )
    return
  else
     return
  end
end


it's not that elegant, but it works :)

the better idea would be to change the browser properties to make it possible to select and deselect the extensions. clicking on an "install" button would start the installation of all selected items.

Posted by roberts on April 25 2005,20:47
I have thought of local extensions. but then that seems to duplicate the already inbuilt support for the local extensions in emelfm,
namely the myDSL button, and the double click to install/unistall uci types.
We seem to use emelfm as the swiss army knife for the local stores.

This is the same reason why I didn't make a GUI for excel viewer, or powerpoint viewer, we save space and use emelfm as the launching GUI for both of these. Just  use emelfm to browser the local stores and double click to launch. Same concept and save code.

Posted by cbagger01 on April 25 2005,22:32
Emelfm is the most efficient way to navigate and launch files.  In my opinion, it is the second most important purpose of a file manager program and Emelfm does a great job in this area.

The only advantage to a local+network myDSLgui is that you have "one stop shopping" for your extensions instead of using two different interfaces.

However, in my case I prefer to just use the whole "/optional" concept and then I let the fluxbox menu system become my personal "localMyDSLGui".

But I can understand the confusion with newbies who don't get the big picture yet.

Besides these forums, a real eye opener is all of the people over at the X-DSL XBOX port website that quickly slap the distro into their xbox and start clicking on stuff without reading any of the manuals / faqs and then start posting about how their extensions disappear when they reboot :laugh:

My personal opinion is that a new button ("Help") on the myDSL gui that opens up a web page with some FAQ-like help that explains how the system works will go a long way to prevent these questions.  Maybe a direct dillo link to a specific DSL documentation website page?

Posted by Guest on April 28 2005,12:21
Hi,
I used DSL some time ago, just when the 'mydsl' stuff was getting underway.

Am keen to get back into DSL but need a little help on the mydsyl extensions.

I have just cruised around the forums (bear in mind a dial up connection in a 3rd world country!), a long process without much specific info on actually using the mydsl extensions.  Found this thread, with this comment:

Maybe a direct dillo link to a specific DSL documentation website page?

Sorry to ask, but can anyone help me find such a page?

Regards,

Geoff.

Posted by clivesay on April 28 2005,14:08
I just did this about a week ago. Hope it helps.

< Screenshot HowTo's >

Posted by gjhicks on April 29 2005,16:17
Hi there,

Sorry last post was a 'guest' by mistake.

Thanks for the link to the help file.  It has been a while since I had a go at DSL and (dare I say, its big brother Feather!) due to work constraints but am keen to get back up to speed.

Am currently in Pakistan and have an awful connection but will be back in the communications world in a week or so and will try out the "new" DSL.

Bye for now,

Geoff.

Powered by Ikonboard 3.1.2a
Ikonboard © 2001 Jarvis Entertainment Group, Inc.