Pastey Gallery Maker v.3
- Posted by irv Apr 03, 2019
-- Simple example program in Euphoria language to create a html -- page with all the picture files in the current directory. -- Marco Achury, 2008 -- Released to public domain. Feel free to use and modify. -- Updated for Eu 4.1b2 by Irv Mullins -- Added EuGTK interface Mar 21, 2019 constant docs = "Open a folder containing images and select files to add" include GtkEngine.e include GtkFileSelector.e include std/filesys.e include std/datetime.e include std/net/url.e integer FN -- File number for output sequence input = sprintf("~/%s/*",{user_name}) -- default home sequence output = canonical_path("~/output.html") -- default in home constant win = create(GtkWindow,"title=Gallery Maker,size=300x200,border=10,$destroy=Quit"), pan = create(GtkBox,"orientation=vertical,spacing=10"), lbl = create(GtkLabel,docs), box = create(GtkButtonBox), btn1 = create(GtkButton,"gtk-quit","Quit"), btn2 = create(GtkButton,"gtk-open","SelectFolder"), btn3 = create(GtkButton, "gtk-ok","ViewHTML") gtk:add(win,pan) gtk:add(pan,lbl) gtk:add(box,{btn1,btn2,btn3}) pack_end(pan,box) show_all(win) main() ---------------------------------------------------------------------------------- global function SelectFolder() ---------------------------------------------------------------------------------- ifdef UNIX then fileselector:filters = {"images"} end ifdef ifdef WINDOWS then fileselector:filters = {"all"} end ifdef fileselector:preview_size = 400 fileselector:show_preview = TRUE fileselector:select_multiple = TRUE input = fileselector:Open() GenerateHTML() return 1 end function ---------------------------------------------------------------------------------- global function GenerateHTML() ---------------------------------------------------------------------------------- object fname, fdate, fpath = pathname(input[1]) object fpix, fsize FN = open (output, "w") if FN =-1 then Error(,,"Cannot open output file!") abort(1) end if puts (FN, "<HTML>\n") puts (FN, " <HEAD>\n") puts (FN, sprintf(" <TITLE>Images in %s</TITLE> ",{fpath})) puts (FN, "<style>\n") puts (FN, """ body {background:#7A7A7A;} div.hint { display: block; border: thin solid black; padding: 8px; font-size: small; border-radius: 20px; margin-left: 20px; margin-right: 20px; background-color: #DACOCD; } div.quote { display: block; border: 1px solid black; padding: 15px; background: #D0D0D0; margin: 5px;} .boxshadow { -moz-box-shadow : #888888 4px 4px 6px; -webkit-box-shadow: $888888 4px 4px 6px; box-shadow: #888888 4px 4px 6px; filter: progid:DXImageTransform.Microsoft.Shadow (color='#888888', Direction=135, Strength=6); } """) puts (FN, "</style>\n") puts (FN, " </HEAD>\n\n") puts (FN, "<BODY>\n") puts (FN, "<div class='hint quote boxshadow'>\n") puts (FN, "<big><b>Euphoria Image Gallery </b></big>") puts (FN, sprintf("<small>%d Files from %s in %s\n<br>\n<br></small>",{length(input),fpath,output})) puts (FN, "</div>\n") puts (FN, "<table border='0'\n") puts (FN, "<tr>\n") for i=1 to length(input) do fname = url:decode(input[i]) fpix = create(GdkPixbuf,fname) fsize = get(fpix,"size") fdate = file_timestamp(fname) puts(FN,"<td width='25%'>\n") printf(FN,"<a href='%s'>\n",{fname}) printf(FN,"<center><img src='%s'",{fname}) puts(FN," height='250px'></a></center>\n") puts(FN,"<br clear='all' />") printf(FN,"<div class='quote hint boxshadow' width='%d' align='bottom'>\n",fsize[1]) printf(FN,"<small><b>Path:</b> %s </small><br />\n",{fpath}) printf(FN,"<small><b>Name:</b> %s </small><br />\n",{filename(fname)}) puts(FN,text:format("<small><b>File Size:</b> [,,] bytes</small><br>\n",file_length(fname))) puts(FN,text:format("<small><b>Date:</b> []/[]/[] Time: []:[]:[]</small>\n</td>\n\n",fdate)) if remainder(i,3)=0 then puts (FN, "</div></tr>\n\n<tr>\n") end if end for puts (FN, "</table>\n") printf(FN, "<address><b>Page generated: %s</b>",{datetime:format(now())}) puts (FN, " by a Euphoria powered script.</address>") puts (FN, "</BODY>\n</HTML>\n") close(FN) if Info(,,text:format("<b>Input folder:</b> []\n<b>Output file:</b> [] has <b>[]</b> images.", {fpath,output,length(input)}),,GTK_BUTTONS_OK_CANCEL) = MB_OK then show_uri("file://" & output) end if return 1 end function ----------------------------- global function ViewHTML() -- when OK button clicked ----------------------------- show_uri("file://" & output) return 1 end function ------------- END ------------


