Das hab ich geändert und ein paar neue Funktionen eingebaut. Er sieht (leider) noch immer so aus wie die alte Version, naja, es ist etwas unübersichtlicher geworden, weil die neuen Funktionen Platz brauchten...
(andererseits soll man auch alles auf einen Blick haben, ohne groß Einstellungen suchen zu müssen...) Naja, bevor ich hier meine ganze Lebensgeschichte erzähe, hier der
Code: Alles auswählen
;special thanks to Christi and the whole PB comunity
#jmg_Edition=#False
NewList error.s()
OnErrorGosub(?error)
Procedure.s GetAppDir()
FullPath.s = Space(360)
DLL = OpenLibrary(#PB_Any, "Kernel32")
CallFunction(DLL, "GetModuleFileNameA", CallFunction(DLL, "GetModuleHandleA", 0), @FullPath, 360)
CloseLibrary(DLL)
FullPath = GetPathPart(FullPath)
If Right(FullPath, 1) <> "\" : FullPath + "\" : EndIf
ProcedureReturn FullPath
EndProcedure
Procedure.s html_hex(color.l)
red$= LSet(Hex(Red(color)),2,"0")
green$= LSet(Hex(Green(color)),2,"0")
blue$= LSet(Hex(Blue(color)),2,"0")
ProcedureReturn "#"+red$+green$+blue$
EndProcedure
Procedure scroll(window)
Protected text$
Protected merk$
Repeat
text$=GetWindowTitle(window)
merk$=Left(text$,1)
text$=Right(text$,Len(text$)-1)+merk$
Delay(100)
SetWindowTitle(window,text$)
ForEver
EndProcedure
Enumeration
#Window_0
EndEnumeration
Global pics.w,anz.w,seite.w
Global Format.s, position.s,installpfad.s, path.s,verz.s
Global farbe.l,textfarbe.l, tablefarbe.l,x.l
Global bps.f
Global result.b, noscroll.b
NewList text.s()
;- MenuBar Constants
;
Enumeration
#MenuBar_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#asstnt
#asstnt_txt
#Text_1
#Text_2
#Frame3D_1
#Text_4
#Text_5
#Text_6
#Hoehe
#breite
#anderung
#select
#Text_7
#Text_8
#zeilen
#spalten
#Text_9
#titel
#Text_10
#Datei
#Text_12
#border
#vor
#nach
#erstellen
#clr1
#clr2
#clr3
#format
#colour
#rahmen
#text_r
#pos_t
#pos1
#pos2
#pos3
#maxpics
#picsges
#warning
#pfad
#pfadwahl
#pfad_t
#info1
#info2
#progress
#fontfarbe
#bildtext
#maxbild
#text_11
#seiten
#info3
#qualwal
#qualitat
#qtxt
#endbildX
#endbildY
#endbiltxtX
#endbiltxtY
#vorq
#vqtxt
#head
#hinfo
#vorschau
#back
#forward
#erase
#images
#image
#global
#Properties
#pProperties
#inc_size
#name
#jmg
#textprev
#table_bg
#big_v
#big_n
#big_h
#text
#editor
#br
#load
EndEnumeration
;- StatusBar Constants
;
Enumeration
#StatusBar_0
EndEnumeration
Structure images
source.s
sizeX.w
sizeY.w
pSizeX.w
pSizeY.w
Quality.b
pQuality.b
;newDir.s
EndStructure
NewList images.images()
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "DiagramTTHabsburg", 10)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 10, #PB_Font_Bold)
Global FontID3
FontID3 = LoadFont(3, "Andy", 14, #PB_Font_Bold)
;error=4/zero
Procedure LoadText(Source$, GadgetID)
;Debug "Start"
refresh=FileSize(Source$)/20
file=ReadFile(#PB_Any,Source$)
Repeat
SetGadgetText(GadgetID,GetGadgetText(GadgetID)+Chr(ReadByte()))
If x<=0 And noscroll=0
StatusBarText(#text,0,Str((count/20.0)*100)+"%")
WindowEvent()
x=refresh
count+1
EndIf
x-1
Until Eof(file)
CloseFile(file)
;Debug "Ende"
EndProcedure
Procedure choose()
OpenWindow(0,210,30,250,90,#PB_Window_ScreenCentered,"Modiwahl")
CreateGadgetList(WindowID())
Frame3DGadget(#Frame3D_1, 10, 0, 170, 60, "")
TextGadget(#Text_1, 10, 10, 120, 20, "BenpiccoSoft´s", #PB_Text_Center)
SetGadgetFont(#Text_1, FontID2)
TextGadget(#Text_2,20, 30, 140, 20, "Thumbnail Maker", #PB_Text_Center)
SetGadgetFont(#Text_2, FontID3)
ButtonGadget(0,10,65,100,20,"Expertenmodus")
ButtonGadget(1,120,65,100,20,"Assistent")
Repeat
Until WaitWindowEvent()=#PB_Event_Gadget
ProcedureReturn EventGadgetID()
CloseWindow(0)
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 100, 176, 1000, 390, #PB_Window_MinimizeGadget | #PB_Window_SizeGadget|#PB_Window_ScreenCentered , "Thumbnail Maker ")
If CreateStatusBar(#StatusBar_0, WindowID())
EndIf
If CreateGadgetList(WindowID())
TextGadget(#Text_1, 230, 10, 120, 20, "BenpiccoSoft´s", #PB_Text_Center)
SetGadgetFont(#Text_1, FontID2)
TextGadget(#Text_2, 220, 30, 140, 20, "Thumbnail Maker", #PB_Text_Center)
SetGadgetFont(#Text_2, FontID3)
Frame3DGadget(#Frame3D_1, 200, 0, 170, 60, "")
TextGadget(#Text_4, 10, 10, 40, 20, "Höhe:")
TextGadget(#Text_5, 10, 30, 40, 20, "Breite:")
TextGadget(#Text_6, 10, 50, 50, 20, "Änderung:")
SpinGadget(#Hoehe, 40, 10, 50, 15, 1, 1024)
SpinGadget(#breite, 50, 30, 40, 15, 1, 768)
SpinGadget(#anderung, 70, 50, 40, 15, 0, 30)
ButtonGadget(#select, 460, 125, 100, 25, "Bilder wählen")
;ComboBoxGadget(#format,560,130,60,160, #PB_ComboBox_Editable)
TextGadget(#Text_7, 440, 10, 40, 20, "Zeilen:")
TextGadget(#Text_8, 440, 30, 40, 20, "Spalten:")
SpinGadget(#zeilen, 480, 10, 40, 15, 1, 1000)
SpinGadget(#spalten, 480, 30, 40, 15, 1, 100)
TextGadget(#Text_9, 450, 60, 30, 20, "Titel:")
StringGadget(#titel, 490, 60, 100, 20, "Bildvorschau")
TextGadget(#Text_10, 420, 90, 60, 20, "Dateiname:")
StringGadget(#Datei, 490, 90, 110, 20, "Bildvorschau.html")
TextGadget(#Text_12, 10, 70, 70, 20, "Rahmendicke:")
SpinGadget(#border, 80, 70, 50, 15, 0, 10)
EditorGadget(#vor, 30, 130, 190, 150)
SetGadgetText(#vor, "Hier können sie etwas Text eingeben, ")
AddGadgetItem(#vor,1, "der vor der Bildertabelle gezeigt " )
AddGadgetItem(#vor,2, "werden soll. Es kann sogar html sein.")
EditorGadget(#nach, 240, 130, 190, 150)
SetGadgetText(#nach, "Und hier können sie schreiben,")
AddGadgetItem(#nach,1," was später unter den Bildern steht.")
ButtonGadget(#erstellen, 460, 160, 110, 40, "Website erstellen!", #PB_Button_MultiLine)
TextGadget(#Text_2, 220, 30, 140, 20, "Thumbnail Maker", #PB_Text_Center)
SetGadgetFont(#Text_2, FontID3)
ButtonGadget(#clr1, 85,280,100,20,"löschen")
ButtonGadget(#clr2, 295,280,100,20,"löschen")
DisableGadget(#erstellen,1)
ButtonGadget(#colour, 10,90,90,20,"Hintergrundfarbe")
TextGadget(#text_r, 135,70,90,15,"Bilderrahmendicke")
SpinGadget(#rahmen, 223,70,50,15,0,10)
TextGadget(#pos_t,460,210,150,15,"tabellenausrichtung")
OptionGadget(#pos1,460,225,50,15,"rechts")
OptionGadget(#pos2,460,240,50,15,"mitte")
OptionGadget(#pos3,460,255,50,15,"links")
StringGadget(#maxpics,540,20,30,15,Str(4*3), #PB_String_ReadOnly|#PB_String_Numeric )
StringGadget(#picsges,580,20,30,15,"0",#PB_String_ReadOnly)
;TextGadget(#warning, 530,37,100,20," ")
TextGadget(#pfad_t, 105,90,100,20,"Bitte Zielpfad wählen")
StringGadget(#pfad,210,90,120,20,"c:\")
ButtonGadget(#pfadwahl, 335,90,80,20,"Durchsuchen")
TextGadget(#info1, 540,8,30,15,"max")
TextGadget(#info2, 575,8,30,15,"total")
ProgressBarGadget(#progress, 145,350,300,10,0,200,#PB_ProgressBar_Smooth )
ButtonGadget(#fontfarbe, 280,68,80,20,"Textfarbe")
CheckBoxGadget(#bildtext, 500,500,90,15,"Text im Bild")
TextGadget(#text_11,440,270,80,15,"Bilder pro Seite:")
SpinGadget(#maxbild,520,270,50,15,1,10000)
TextGadget(#info3,530,37,35,15,"Seiten:")
StringGadget(#seiten,565,37,20,15,"no pics yet",#PB_String_ReadOnly)
ListViewGadget(#images,810,10,170,300)
CheckBoxGadget(#qualwal,20,300,200,15,"Bilder nicht ändern")
TrackBarGadget(#qualitat,20,320,200,15,0,10,#PB_TrackBar_Ticks )
TextGadget(#qtxt,10,280,50,15,"Qualität:")
TextGadget(#endbiltxtX,230,300,80,15,"Originalbildweite")
TextGadget(#endbiltxtY,230,320,80,15,"Originalbildhöhe")
SpinGadget(#endbildX,320,300,50,15,1,10000)
SpinGadget(#endbildY,320,320,50,15,1,10000)
TextGadget(#vqtxt,100,10,100,15,"Vorschauqualität")
TrackBarGadget(#vorq,95,30,100,15,0,10,#PB_TrackBar_Ticks)
EditorGadget(#head,600,160,190,150)
TextGadget(#hinfo,625,140,150,15,"Head Bereich editieren:")
ButtonGadget(#clr3, 645,310,100,20,"löschen")
ButtonGadget(#back,645,0,15,15,"<")
ButtonGadget(#forward,660,0,15,15,">")
ButtonGadget(#erase,750,130,50,20,"Löschen")
ImageGadget(#image,615,10,100,100,0)
ButtonGadget(#global,425,300,100,50,"Einstellungen auf alle Elemente anwenden",#PB_Button_MultiLine)
CheckBoxGadget(#Properties,5,350,140,15,"Proportionen beibehalten")
CheckBoxGadget(#pProperties,0,110,150,15,"Proportionen beibehalten")
CheckBoxGadget(#inc_size,450,350,100,15,"Incluseive Größe")
CheckBoxGadget(#name, 565,350,150,15,"Bilder mit Namen versehen")
CompilerIf #jmg_Edition=#True
CheckBoxGadget(#jmg,530,320,110,15,"JMG-Tabellenkopf")
CompilerEndIf
SetGadgetState(#Properties,1)
SetGadgetState(#pProperties,1)
ImageGadget(#textprev,365,68,150,20,0)
ButtonGadget(#table_bg,200,110,100,17,"Tabellenhintergrund")
ButtonGadget(#big_v,12,130,12,12,Chr(29))
ButtonGadget(#big_n,222,130,12,12,Chr(29))
ButtonGadget(#big_h,600,140,12,12,Chr(29))
EndIf
EndIf
EndProcedure
Procedure Open_Assistant()
If OpenWindow(#Window_0,100,100,620,460,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget |#PB_Window_ScreenCentered,"Thumbnail Maker Wizzard ")
If CreateStatusBar(#StatusBar_0, WindowID())
EndIf
If CreateGadgetList(WindowID())
TextGadget(#asstnt_txt,1,1,610,50,"loading...")
ButtonGadget(#back,200,420,100,20,"zurück")
ButtonGadget(#forward,300,420,100,20,"Weiter")
CheckBoxGadget(#bildtext, 500,500,90,15,"Text im Bild")
ProgressBarGadget(#progress, 145,410,300,10,0,200,#PB_ProgressBar_Smooth )
PanelGadget(#asstnt,1,60,610,350)
;----------------
AddGadgetItem(#asstnt,0,"Bilder")
ButtonGadget(#select, 30,250, 100, 25, "Bilder wählen")
TextGadget(#Text_4, 10, 10, 40, 20, "Höhe:")
TextGadget(#Text_5, 10, 30, 40, 20, "Breite:")
TextGadget(#Text_6, 10, 50, 50, 20, "Änderung:")
SpinGadget(#Hoehe, 40, 10, 50, 15, 1, 1024)
SpinGadget(#breite, 50, 30, 40, 15, 1, 768)
SpinGadget(#anderung, 70, 50, 40, 15, 0, 30)
ImageGadget(#image,200,10,100,100,0)
TextGadget(#vqtxt,100,10,100,15,"Vorschauqualität")
TrackBarGadget(#vorq,95,30,100,15,0,10,#PB_TrackBar_Ticks)
ButtonGadget(#global,300,250,100,50,"Einstellungen auf alle Elemente anwenden",#PB_Button_MultiLine)
CheckBoxGadget(#inc_size,300,305,150,15,"Incluseive Originalbildgröße")
CheckBoxGadget(#pProperties,5,70,150,15,"Proportionen beibehalten")
CheckBoxGadget(#qualwal,10,90,150,15,"Originalbilder nicht ändern")
TrackBarGadget(#qualitat,10,180,150,15,0,10,#PB_TrackBar_Ticks )
Frame3DGadget(#qtxt,5,110,160,100,"Qualität:")
TextGadget(#endbiltxtX,10,130,80,15,"Originalbildweite")
TextGadget(#endbiltxtY,10,145,80,15,"Originalbildhöhe")
CheckBoxGadget(#Properties,10,165,140,15,"Proportionen beibehalten")
SpinGadget(#endbildX,95,130,50,15,1,10000)
SpinGadget(#endbildY,95,150,50,15,1,10000)
;ListViewGadget(#images,810,10,170,300)
SetGadgetState(#Properties,1)
SetGadgetState(#pProperties,1)
ListViewGadget(#images,435,5,160,300)
ButtonGadget(#erase,240,270,50,20,"Löschen")
;----------------
AddGadgetItem(#asstnt,1,"Tabelle")
TextGadget(#Text_9, 450, 60, 30, 20, "Titel:")
StringGadget(#titel, 490, 60, 100, 20, "Bildvorschau")
TextGadget(#Text_10, 420, 90, 60, 20, "Dateiname:")
StringGadget(#Datei, 490, 90, 110, 20, "Bildvorschau.html")
ButtonGadget(#fontfarbe, 10,10,80,20,"Textfarbe")
TextGadget(#text_11,100,10,80,15,"Bilder pro Seite:")
SpinGadget(#maxbild,180,10,50,15,1,10000)
TextGadget(#info3,270,10,35,15,"Seiten:")
StringGadget(#seiten,320,10,20,15,"no pics yet",#PB_String_ReadOnly)
TextGadget(#info1, 270,25,30,15,"max")
TextGadget(#info2, 330,25,30,15,"total")
StringGadget(#maxpics,300,25,30,15,Str(4*3), #PB_String_ReadOnly|#PB_String_Numeric)
StringGadget(#picsges,355,25,30,15,"0",#PB_String_ReadOnly)
ButtonGadget(#colour, 10,30,90,20,"Hintergrundfarbe")
TextGadget(#text_r, 100,30,90,15,"Bilderrahmendicke")
SpinGadget(#rahmen, 190,30,50,15,0,10)
TextGadget(#pos_t,10,100,150,15,"Tabellenausrichtung")
OptionGadget(#pos1,10,115,50,15,"rechts")
OptionGadget(#pos2,10,130,50,15,"mitte")
OptionGadget(#pos3,10,145,50,15,"links")
TextGadget(#Text_12, 110, 50, 70, 20, "Rahmendicke:")
SpinGadget(#border, 180, 50, 50, 15, 0, 10)
ImageGadget(#textprev,5,68,150,20,0)
ButtonGadget(#table_bg,10,50,100,17,"Tabellenhintergrund")
CheckBoxGadget(#name, 110,70,150,15,"Bilder mit Namen versehen")
CompilerIf #jmg_Edition=#True
CheckBoxGadget(#jmg,110,90,110,15,"JMG-Tabellenkopf")
CompilerEndIf
TextGadget(#Text_7, 440, 10, 40, 20, "Zeilen:")
TextGadget(#Text_8, 440, 30, 40, 20, "Spalten:")
SpinGadget(#zeilen, 480, 10, 40, 15, 1, 1000)
SpinGadget(#spalten, 480, 30, 40, 15, 1, 100)
;----------------
AddGadgetItem(#asstnt,2,"Finish")
ButtonGadget(#erstellen, 400, 100, 110, 40, "Website erstellen!", #PB_Button_MultiLine)
TextGadget(#pfad_t, 210,10,100,20,"Bitte Zielpfad wählen")
StringGadget(#pfad,310,10,120,20,"c:\")
ButtonGadget(#pfadwahl, 435,10,80,20,"Durchsuchen")
ButtonGadget(#big_h,500,155,12,12,Chr(29))
EditorGadget(#head,315,170,190,150)
TextGadget(#hinfo,340,145,150,15,"Head Bereich editieren:")
ButtonGadget(#big_v,185,5,12,12,Chr(29))
EditorGadget(#vor, 5, 20, 190, 150)
SetGadgetText(#vor, "Hier können sie etwas Text eingeben, ")
AddGadgetItem(#vor,1, "der vor der Bildertabelle gezeigt " )
AddGadgetItem(#vor,2, "werden soll. Es kann sogar html sein.")
ButtonGadget(#big_n,195,155,12,12,Chr(29))
EditorGadget(#nach, 5, 170, 190, 150)
SetGadgetText(#nach, "Und hier können sie schreiben,")
AddGadgetItem(#nach,1," was später unter den Bildern steht.")
ButtonGadget(#clr1, 210,155,100,20,"löschen")
ButtonGadget(#clr2, 210,300,100,20,"löschen")
ButtonGadget(#clr3, 500,300,100,20,"löschen")
CloseGadgetList()
DisableGadget(#erstellen,1)
EndIf
EndIf
EndProcedure
Procedure UpdateExample()
CreateImage(0,80,20)
UseImage(0)
StartDrawing(ImageOutput())
Box(0,0,80,15,farbe)
FrontColor(Red(textfarbe),Green(textfarbe),Blue(textfarbe))
Box(0,15,80,5,tablefarbe)
DrawingMode(4)
Box(1,1,79,14,tablefarbe)
DrawingMode(1)
DrawText("Beispieltext")
StopDrawing()
SetGadgetState(#textprev,UseImage(0))
EndProcedure
Procedure TextInput(Gadget)
OpenWindow(#text,100,100,300,300,#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget,"Texteditor",#Window_0)
CreateMenu(0,WindowID(#text))
CreateStatusBar(#text,WindowID(#text))
AddStatusBarField(200)
CreateGadgetList(WindowID(#text))
EditorGadget(#editor,1,20,WindowWidth(),WindowHeight()-45)
CheckBoxGadget(#br,5,2,240,15,"<br> automatisch am Ende der Zeile einfügen")
ButtonGadget(#load,247,2,50,15,"Laden")
SetGadgetText(#editor,GetGadgetText(Gadget))
StatusBarText(#text,0,"Special Thanks to Christi")
WindowEvent()
Repeat
Event=WaitWindowEvent()
EventMenuID=EventMenuID()
If EventMenuID=#PB_Shortcut_Return
SetGadgetItemText(#editor,y,GetGadgetItemText(#editor,y,0)+"<br>"+Chr(13),0)
EndIf
If Event=#PB_Event_SizeWindow
ResizeGadget(#editor,1,20,WindowWidth()-1,WindowHeight()-45)
ResizeGadget(#load,WindowWidth()-GadgetWidth(#load)-2,2,GadgetWidth(#load),GadgetHeight(#load))
ElseIf Event=#PB_Event_Gadget
GadgetID=EventGadgetID()
If GadgetID=#br
If GetGadgetState(#br)=1
AddKeyboardShortcut(#text,#PB_Shortcut_Return,#PB_Shortcut_Return)
Else
RemoveKeyboardShortcut(#text,#PB_Shortcut_Return)
EndIf
ElseIf GadgetID=#editor
SendMessage_(GadgetID(#editor), #EM_EXGETSEL, 1, range.charrange)
CurrentLineIndex = SendMessage_(GadgetID(#editor), #EM_EXLINEFROMCHAR, 0, range\cpMin)
y = CurrentLineIndex ;+ 1
CurrentLineStartIndex = SendMessage_(GadgetID(#editor), #EM_LINEINDEX, CurrentLineIndex, 0)
x = range\cpMax - CurrentLineStartIndex + 1
StatusBarText(#text,0,"Spalte:"+Str(x)+" Zeile:"+Str(y+1))
ElseIf GadgetID=#load
file$=OpenFileRequester("Textdatei wählen","text.txt","Text Files|*.txt;*.html;*.htm;*.php|All Files|*.*",0)
If file$
StatusBarText(#text,0,"laden...")
LoadText(file$,#editor)
StatusBarText(#text,0,"Fertig!")
EndIf
EndIf
EndIf
Until Event=#PB_Event_CloseWindow
SetGadgetText(Gadget,GetGadgetText(#editor))
CloseWindow(#text)
EndProcedure
If choose()=0
Open_Window_0()
asst=0
DisableGadget(#back,1)
DisableGadget(#forward,1)
Else
asst=1
Open_Assistant()
GadgetID=#asstnt
DisableGadget(#back,1)
DisableGadget(#forward,0)
EndIf
While WindowEvent():Wend
CompilerIf #jmg_Edition=#True
SetWindowTitle(#Window_0,Trim(GetWindowTitle(#Window_0))+" - Special JMG Edition ")
CompilerEndIf
noscroll=1
If ProgramParameter()<>"noscroll"
CreateThread(@scroll(),#Window_0)
noscroll=0
EndIf
Format = "*.bmp"
farbe=RGB(255,255,255)
textfarbe=RGB(0,0,0)
tablefarbe=farbe
UpdateExample()
SetGadgetState(#endbildX,640)
SetGadgetState(#endbildY,480)
SetGadgetText(#endbildX,Str(GetGadgetState(#endbildX)))
SetGadgetText(#endbildY,Str(GetGadgetState(#endbildY)))
SetGadgetState(#qualitat,7)
DisableGadget(#qualitat,1)
SetGadgetState(#vorq,10)
SetGadgetState(#qualwal,1)
DisableGadget(#Properties,1)
DisableGadget(#endbildX,1)
DisableGadget(#endbildY,1)
DisableGadget(#erase,1)
;AddGadgetItem(#format,-1, "*.bmp")
;AddGadgetItem(#format,-1, "*.jpg")
;AddGadgetItem(#format,-1, "*.png")
;AddGadgetItem(#format,-1, "*.gif")
;AddGadgetItem(#format,-1, "*.tga")
;AddGadgetItem(#format,-1, "*.*")
AddStatusBarField(100)
StatusBarText(#StatusBar_0,0,"Version 2.1", #PB_StatusBar_Center | #PB_StatusBar_Raised )
;SetGadgetState(#format,0)
SetGadgetState (#Hoehe,120) : SetGadgetText(#Hoehe,Str(GetGadgetState(#Hoehe)))
SetGadgetState (#breite,180) : SetGadgetText(#breite,Str(GetGadgetState(#breite)))
SetGadgetState (#anderung,5) : SetGadgetText(#anderung,Str(GetGadgetState(#anderung)))
SetGadgetState (#border,1) : SetGadgetText(#border,Str(GetGadgetState(#border)))
SetGadgetState (#zeilen,4) : SetGadgetText(#zeilen,Str(GetGadgetState(#zeilen)))
SetGadgetState (#spalten,3) : SetGadgetText(#spalten,Str(GetGadgetState(#spalten)))
SetGadgetState(#rahmen,0): SetGadgetText(#rahmen,Str(GetGadgetState(#rahmen)))
SetGadgetState(#maxbild, 100):SetGadgetText(#maxbild, Str(GetGadgetState(#maxbild)))
SetGadgetState(#pos2,1)
position = "center"
farbe = RGB(255,255,255)
Procedure ShowImage(id)
Protected merk
merk=ListIndex(images())
SelectElement(images(),id)
LoadImage(0,images()\source)
ResizeImage(0,images()\pSizeX,images()\pSizeY)
UseJPEGImageEncoder()
SaveImage(0,"temp.jpg",#PB_ImagePlugin_JPEG,GetGadgetState(#vorq))
LoadImage(0,"temp.jpg")
SetGadgetState(#image,UseImage(0))
DeleteFile("temp.jpg")
SelectElement(images(),merk)
EndProcedure
;EndIf
Procedure UpdateImage(id)
Protected merk
merk=ListIndex(images())
SelectElement(images(),id)
images()\sizeX=GetGadgetState(#endbildX)
images()\sizeY=GetGadgetState(#endbildY)
images()\pSizeX=GetGadgetState(#breite)
images()\pSizeY=GetGadgetState(#Hoehe)
images()\Quality=GetGadgetState(#qualitat)
images()\pQuality=GetGadgetState(#vorq)
SelectElement(images(),merk)
ShowImage(merk)
EndProcedure
Procedure UpdateSpin()
SetGadgetText(#Hoehe,Str(GetGadgetState(#Hoehe)))
SetGadgetText(#breite,Str(GetGadgetState(#breite)))
SetGadgetText(#anderung,Str(GetGadgetState(#anderung)))
SetGadgetText(#border,Str(GetGadgetState(#border)))
SetGadgetText(#zeilen,Str(GetGadgetState(#zeilen)))
SetGadgetText(#spalten,Str(GetGadgetState(#spalten)))
SetGadgetText(#rahmen,Str(GetGadgetState(#rahmen)))
SetGadgetText(#maxbild, Str(GetGadgetState(#maxbild)))
SetGadgetText(#endbildX,Str(GetGadgetState(#endbildX)))
SetGadgetText(#endbildY,Str(GetGadgetState(#endbildY)))
EndProcedure
;DisableGadget(#select,1)
AddKeyboardShortcut(#Window_0,#PB_Shortcut_Delete,#PB_Shortcut_Delete)
;- Hauptschleife
If asst=1
Goto predefinedgadgetid
EndIf
Repeat
back:
If GetGadgetState(#maxbild) > pics
SetGadgetState(#maxbild, pics)
EndIf
Event = WaitWindowEvent()
;MenuID=MenuID()
If Event = #PB_EventMenu
MenuID = EventMenuID()
EndIf
If Event = #PB_EventGadget
GadgetID = EventGadgetID()
UpdateSpin()
predefinedgadgetid:
;-images
If GadgetID = #images And GetGadgetState(#images) >-1
;UpdateSpin()
SelectElement(images(),GetGadgetState(#images))
SetGadgetState(#endbildX,images()\sizeX)
SetGadgetState(#endbildY,images()\sizeY)
SetGadgetState(#breite,images()\pSizeX)
SetGadgetState(#Hoehe,images()\pSizeY)
SetGadgetState(#qualitat,images()\Quality)
SetGadgetState(#vorq,images()\pQuality)
WindowEvent()
ShowImage(ListIndex(images()))
UpdateSpin()
endindex=GetGadgetState(#images)
;GadgetID=0
;UpdateImage(ListIndex(images()))
;While WindowEvent():Wend
ElseIf GadgetID = #Hoehe
SetGadgetText(#Hoehe,Str(GetGadgetState(#Hoehe)))
If GetGadgetState(#images)>-1
If GetGadgetState(#pProperties)=1
SelectElement(images(),GetGadgetState(#images))
SetGadgetState(#breite,ValF(StrF((images()\pSizeX/images()\pSizeY)))*GetGadgetState(#Hoehe))
EndIf
UpdateImage(GetGadgetState(#images))
EndIf
ElseIf GadgetID = #breite
SetGadgetText(#breite,Str(GetGadgetState(#breite)))
If GetGadgetState(#images)>-1
If GetGadgetState(#pProperties)=1
SelectElement(images(),GetGadgetState(#images))
SetGadgetState(#Hoehe,ValF(StrF((images()\pSizeY/images()\pSizeX)))*GetGadgetState(#breite))
EndIf
UpdateImage(GetGadgetState(#images))
EndIf
ElseIf GadgetID = #erase Or Event=#PB_Shortcut_Delete
result = MessageRequester("Waring", "Wirklich löschen?", #PB_MessageRequester_YesNo)
If result=6 And GetGadgetState(#images)>-1
SelectElement(images(),GetGadgetState(#images))
DeleteElement(images(),1)
RemoveGadgetItem(#images,GetGadgetState(#images))
pics-1
SetGadgetText(#picsges, Str(pics))
EndIf
ElseIf GadgetID = #endbildX
If GetGadgetState(#images)>-1
SetGadgetText(#endbildX,Str(GetGadgetState(#endbildX)))
If GetGadgetState(#Properties)=1
SelectElement(images(),GetGadgetState(#images))
SetGadgetState(#endbildY,ValF(StrF((images()\sizeY/images()\sizeX)))*GetGadgetState(#endbildX))
EndIf
UpdateImage(GetGadgetState(#images))
EndIf
ElseIf GadgetID = #endbildY
If GetGadgetState(#images)>-1
SetGadgetText(#endbildY,Str(GetGadgetState(#endbildY)))
If GetGadgetState(#Properties)=1
SelectElement(images(),GetGadgetState(#images))
SetGadgetState(#endbildX,ValF(StrF((images()\sizeX/images()\sizeY)))*GetGadgetState(#endbildY))
EndIf
UpdateImage(GetGadgetState(#images))
EndIf
ElseIf GadgetID = #maxbild
SetGadgetText(#maxbild,Str(GetGadgetState(#maxbild)))
mpx=Val(GetGadgetText(#maxpics))
If GetGadgetState(#maxbild)>mpx
SetGadgetState(#maxbild,mpx)
EndIf
bps=pics/GetGadgetState(#maxbild)
If bps <> Int(bps)
bps=Int(bps)+1
EndIf
SetGadgetText(#seiten,Str(bps))
ElseIf GadgetID = #qualwal
DisableGadget(#qualitat, GetGadgetState(#qualwal))
DisableGadget(#endbildX, GetGadgetState(#qualwal))
DisableGadget(#endbildY, GetGadgetState(#qualwal))
DisableGadget(#Properties,GetGadgetState(#qualwal))
ElseIf GadgetID = #anderung
SetGadgetText(#anderung,Str(GetGadgetState(#anderung)))
ElseIf GadgetID = #select
image$=OpenFileRequester("Bild auswählen","c:\","Grafik Files|*.bmp;*.jpg;*.png;*.tiff;*.tga|Bitmaps|*.bmp|JPEGs|*.jpg|TrueVision Targa|*.tga|Tiff|*.tiff|Alle Dateien|*.*",-1,#PB_Requester_MultiSelection)
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageDecoder()
If CountList(images())
LastElement(images())
SetGadgetState(#images,ListIndex(images()))
EndIf
While image$
If LoadImage(0,image$)
pics = pics + 1
DisableGadget(#erase,0)
DisableGadget(#erstellen,0)
AddGadgetItem(#images,-1,GetFilePart(image$))
AddElement(images())
UseImage(0)
images()\source=image$
images()\sizeX=ImageWidth()
images()\sizeY=ImageHeight()
images()\pSizeX=GetGadgetState(#breite)
images()\pSizeY=ValF(StrF((ImageHeight()/ImageWidth())))*GetGadgetState(#breite)
images()\Quality=GetGadgetState(#qualitat)
images()\pQuality=GetGadgetState(#vorq)
ShowImage(ListIndex(images()))
SetGadgetState(#images,ListIndex(images()))
Else
;AddGadgetItem(#error,-1,"Error opnening file "+image$)
EndIf
image$ = NextSelectedFileName()
Wend
SetGadgetState(#maxbild,Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten)))
SetGadgetText(#picsges, Str(pics))
SetGadgetText(#maxbild, Str(pics))
bps=pics/GetGadgetState(#maxbild)
If bps <> Int(bps)
bps=Int(bps)+1
EndIf
SetGadgetText(#seiten,Str(bps))
SetGadgetText(#maxpics,Str(GetGadgetState(#zeilen)*GetGadgetState(#spalten)*bps))
If pics > Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten))
SetGadgetState(#maxbild,Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten)))
EndIf
ElseIf GadgetID = #spalten
bps=pics/GetGadgetState(#maxbild)
If bps <> Int(bps)
bps=Int(bps)+1
EndIf
SetGadgetText(#maxpics,Str(Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten))))
If pics > Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten))
SetGadgetState(#maxbild,Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten)))
Else
;SetGadgetText(#warning," ")
EndIf
ElseIf GadgetID = #zeilen
bps=pics/Val(GetGadgetText(#maxbild))
If bps <> Int(bps)
bps=Int(bps)+1
EndIf
SetGadgetText(#maxpics,Str(Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten))))
If pics > Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten))
SetGadgetState(#maxbild,Val(GetGadgetText(#zeilen))*Val(GetGadgetText(#spalten)))
Else
;SetGadgetText(#warning," ")
EndIf
ElseIf GadgetID = #rahmen
SetGadgetText(#rahmen,Str(GetGadgetState(#rahmen)))
ElseIf GadgetID = #titel
ElseIf GadgetID = #Datei
;ElseIf GadgetID = #format
;SetGadgetText(1, Str(GetGadgetState(1)))
;Format = GetGadgetText(#format)
ElseIf GadgetID = #border
SetGadgetText(#border,Str(GetGadgetState(#border)))
ElseIf GadgetID = #vor
ElseIf GadgetID=#global
ForEach images()
If GetGadgetState(#inc_size)=1
images()\sizeX=GetGadgetState(#endbildX)
images()\sizeY=GetGadgetState(#endbildY)
EndIf
images()\pSizeX=GetGadgetState(#breite)
images()\pSizeY=GetGadgetState(#Hoehe)
images()\Quality=GetGadgetState(#qualitat)
images()\pQuality=GetGadgetState(#vorq)
Next
ElseIf GadgetID = #nach
ElseIf GadgetID =#qualitat
If GetGadgetState(#images)>-1
UpdateImage(GetGadgetState(#images))
EndIf
ElseIf GadgetID = #vorq
If GetGadgetState(#images)>-1
UpdateImage(GetGadgetState(#images))
EndIf
ElseIf GadgetID = #colour
nfarbe = ColorRequester(farbe)
If nfarbe > -1
farbe=nfarbe
UpdateExample()
EndIf
ElseIf GadgetID = #fontfarbe
nfarbe = ColorRequester(textfarbe)
If nfarbe >-1
textfarbe=nfarbe
UpdateExample()
EndIf
ElseIf GadgetID=#table_bg
result=MessageRequester("Frage","Tabellenhintergrund dem Seitenhintergrund gleichsetzten?",#PB_MessageRequester_YesNoCancel)
If result=6
tablefarbe=farbe
ElseIf result=7
nfarbe=ColorRequester(tablefarbe)
If nfarbe>-1
tablefarbe=nfarbe
EndIf
UpdateExample()
EndIf
ElseIf GadgetID = #clr1
ClearGadgetItemList(#vor)
ElseIf GadgetID = #clr2
ClearGadgetItemList(#nach)
ElseIf GadgetID = #clr3
ClearGadgetItemList(#head)
ElseIf GadgetID = #pos1
position="right"
ElseIf GadgetID = #pos2
position="center"
ElseIf GadgetID = #pos3
position="left"
ElseIf GadgetID = #pfadwahl
installpfad = PathRequester("Bitte Speicherpfad der Datei angeben",GetGadgetText(#pfad))
If Len(installpfad)>0
SetGadgetText(#pfad, installpfad)
DisableGadget(#select,0)
ElseIf GadgetID = #pfad
installpfad = GetGadgetText(#pfad)
DisableGadget(#select,0)
EndIf
ElseIf GadgetID=#big_v
TextInput(#vor)
ElseIf GadgetID=#big_n
TextInput(#nach)
ElseIf GadgetID=#big_h
TextInput(#head)
ElseIf GadgetID = #erstellen
;If GetGadgetState(#zeilen)*GetGadgetState(#spalten) <= pics
Goto erstell
;Else
;MessageRequester("Error", "Nicht genügend bilder vorhanden um Tabelle vollständig auszufüllen. Bitte ändern sie die Zeilen oder Die Spalten!")
;EndIf
ElseIf asst=1 And GadgetID=#asstnt
Select GetGadgetState(#asstnt)
Case 0
SetGadgetText(#asstnt_txt,"Nehmen sie hier Bildeinstelungen vor")
DisableGadget(#back,1)
DisableGadget(#forward,0)
Case 1
SetGadgetText(#asstnt_txt,"Definieren sie die Tabelle nach ihren Wünschen")
DisableGadget(#back,0)
DisableGadget(#forward,0)
Case 2
SetGadgetText(#asstnt_txt,"Nehmen sie abschließende Einstellungen vor")
DisableGadget(#forward,1)
DisableGadget(#back,0)
EndSelect
ElseIf asst=1 And GadgetID=#forward
SetGadgetState(#asstnt,GetGadgetState(#asstnt)+1)
GadgetID=#asstnt
Goto predefinedgadgetid
ElseIf asst=1 And GadgetID=#back
SetGadgetState(#asstnt,GetGadgetState(#asstnt)-1)
GadgetID=#asstnt
Goto predefinedgadgetid
EndIf
EndIf
Until Event = #PB_EventCloseWindow
End
;- Page generieren
erstell:
Z = 0
CreateDirectory(installpfad+GetGadgetText(#titel))
CompilerIf #jmg_Edition=#True
If GetGadgetState(#jmg)=1
CreateDirectory(installpfad+"\jmg-pics")
ExamineDirectory(1,GetAppDir()+"bilder\","*.*")
Repeat
UseDirectory(1)
FileType = NextDirectoryEntry()
If FileType
FileName$ = DirectoryEntryName()
If FileType = 1
test= test+1
;MessageRequester("Test"+Str(test),"Test von "+GetAppDir()+"bilder\"+FileName$+" nach "+installpfad+"\"+FileName$)
If CopyFile( GetAppDir()+"bilder\"+FileName$,installpfad+"\jmg-pics\"+FileName$)
Else
error=1
EndIf
EndIf
EndIf
Until FileType = 0
If error = 1
MessageRequester("Error", "Fehler beim kopieren der JMG-Bilder")
EndIf
EndIf
CompilerEndIf
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageEncoder()
bps=pics/GetGadgetState(#maxbild)
If bps <> Int(bps)
bps=Int(bps)+1
EndIf
;MessageRequester("info","Seiten:"+Str(bps))
ForEach images()
SetGadgetState(#progress, ValF(StrF((ListIndex(images())/CountList(images()))))*100)
;CopyFile(images()\source, installpfad+GetGadgetText(#titel)+"\"+DirectoryEntryName())
LoadImage(0,images()\source)
ResizeImage(0, images()\pSizeX+GetGadgetState(#anderung),images()\pSizeY+GetGadgetState(#anderung))
SaveImage(0, installpfad+GetGadgetText(#titel)+"\vorschau_"+Str(ListIndex(images()))+".jpg",#PB_ImagePlugin_JPEG,images()\pQuality)
If GetGadgetState(#qualwal)=1
LoadImage(0,images()\source)
ResizeImage(0,images()\sizeX,images()\sizeY)
SaveImage(0, installpfad+GetGadgetText(#titel)+"\bild_"+Str(ListIndex(images()))+".jpg",#PB_ImagePlugin_JPEG, images()\Quality)
Else
CopyFile(images()\source,installpfad+GetGadgetText(#titel)+"\bild_"+Str(ListIndex(images()))+".jpg")
EndIf
Next
;MessageRequester("test0", bilder(x-1))
;MessageRequester("test1",path+DirectoryEntryName() + " quelle")
;MessageRequester("test2",installpfad+GetGadgetText(#titel)+"\"+DirectoryEntryName() + " ziel")
seite=0
Repeat
seite=seite+1
If bps>1
DeleteFile(installpfad+Str(seite)+GetGadgetText(#Datei))
OpenFile(0,installpfad+Str(seite)+GetGadgetText(#Datei))
Else
DeleteFile(installpfad+GetGadgetText(#Datei))
OpenFile(0,installpfad+GetGadgetText(#Datei))
EndIf
;UseFile(seite)
WriteStringN("<html>")
WriteStringN("<head>")
WriteStringN("<meta name="+Chr(34)+"generator"+Chr(34)+" content="+Chr(34)+"Benpicco´s Thumbnail Maker"+Chr(34)+">")
WriteStringN("<title>"+ GetGadgetText(#titel) + "</title>")
WriteString(GetGadgetText(#head))
WriteStringN("</head>")
WriteStringN("<body bgcolor = "+Chr(34) +html_hex(farbe)+Chr(34) + " text="+Chr(34) +html_hex(textfarbe)+Chr(34) + ">")
WriteStringN(GetGadgetText(#vor)+"<br>")
WriteString("<div align="+position+">")
CompilerIf #jmg_Edition=#True
If GetGadgetState(#jmg) = 1
WriteStringN("<table><tr><td>")
ReadFile(1,"head.txt")
Repeat
UseFile(1)
string$=ReadString()
If string$="#!?titeldummy¿¡#"
string$=GetGadgetText(#titel)
EndIf
UseFile(0)
WriteStringN(string$)
Until Eof(1)
CloseFile(1)
WriteStringN("<table border="+Chr(34) + GetGadgetText(#border) + Chr(34) +" width=100% bgcolor="+Chr(34) +html_hex(tablefarbe)+ Chr(34)+">")
Else
WriteStringN("<table border="+Chr(34) + GetGadgetText(#border) + Chr(34) +" bgcolor="+Chr(34) +html_hex(tablefarbe)+ Chr(34)+">")
EndIf
CompilerElse
WriteStringN("<table border="+Chr(34) + GetGadgetText(#border) + Chr(34) +"bgcolor="+Chr(34) +html_hex(tablefarbe)+ Chr(34)+">")
CompilerEndIf
For y = 1 To GetGadgetState(#zeilen)
WriteStringN("<tr>")
count=0
For x = 1 To GetGadgetState(#spalten)
If Z => (seite*GetGadgetState(#maxbild)) Or Z>pics-1 Or Z>CountList(images())
Goto weiter
EndIf
SelectElement(images(),Z)
SetGadgetState(#progress, Int((((GetGadgetState(#zeilen)+GetGadgetState(#spalten))/Z)*100)+100))
If GetGadgetState(#bildtext)=1
WriteStringN("<div style="+Chr(34)+"position:absolute;"+Chr(34)+">")
EndIf
bild$=GetGadgetText(#titel)+"\bild_"+Str(Z)+".jpg"
bild_v$=GetGadgetText(#titel)+"\vorschau_"+Str(Z)+".jpg"
WriteStringN("<td><center><a href="+Chr(34)+bild$+Chr(34)+" target = "+Chr(34)+"_blank"+Chr(34)+"><img src="+Chr(34)+bild_v$+Chr(34)+"height = "+Chr(34)+Str(images()\pSizeY)+Chr(34)+" border="+GetGadgetText(#rahmen)+" width = "+Chr(34)+Str(images()\pSizeX)+Chr(34)+" alt="+Chr(34)+GetFilePart(bild$)+Chr(34)+"+ onMouseOver="+Chr(34)+"this.width ="+Chr(39)+Str(images()\pSizeX+GetGadgetState(#anderung))+Chr(39)+Chr(59)+" this.height = "+Chr(39)+ Str(images()\pSizeY+GetGadgetState(#anderung))+Chr(39)+ Chr(59)+Chr(34)+" onMouseOut = "+Chr(34)+"this.width="+Chr(39)+Str(images()\pSizeX)+Chr(39)+Chr(59)+" this.height="+Chr(39)+Str(images()\pSizeY)+Chr(39)+Chr(59)+Chr(34)+"></a></center></td>")
;If GetGadgetState(#bildtext) = 1
; textbild$=RemoveString(GetFilePart(bild$), GetExtensionPart(("."+bild$)),1)
; WriteStringN( "<p style="+Chr(34)+"position:absolute; top:3%; left:25%; width:100%;"+Chr(34)+"><font size=2%>"+Chr(34)+textbild$+Chr(34)+"</font></div></p>")
;EndIf
Z=Z+1
count+1
Next
weiter:
WriteStringN("</tr>")
If GetGadgetState(#name)=1
WriteStringN("<tr>")
If Z-count=>0 And Z-count<=CountList(images())
SelectElement(images(),Z-count)
For x=1 To GetGadgetState(#spalten)
If x<=count
WriteStringN("<td><center>"+GetFilePart(images()\source)+"</center></td>")
NextElement(images())
Else
Break
EndIf
Next
EndIf
WriteStringN("</tr>")
EndIf
Next
WriteStringN("</table></div><br>")
CompilerIf #jmg_Edition=#True
If GetGadgetState(#jmg) = 1
WriteStringN("</td></tr></table>")
EndIf
CompilerEndIf
WriteStringN(GetGadgetText(#nach)+"<br>")
If bps > 1
WriteStringN("<p align="+Chr(34)+"center"+Chr(34)+">Seiten: ")
For x = 1 To bps+0
WriteStringN("<a href="+Chr(34)+Str(x)+GetGadgetText(#Datei)+Chr(34)+"> "+Str(x)+" </a>")
Next
WriteStringN("</p><div align="+Chr(34)+"right"+Chr(34)+"><small>Seite "+Str(seite)+" von "+Str(bps)+"</small></div>")
EndIf
WriteStringN("</body></html>")
CloseFile(0)
SetGadgetState(#progress,200)
Until seite=bps
MessageRequester("Sucess!", "Bildvorschau wurde erfolgreich erstellt!")
If bps>1
RunProgram(installpfad+"1"+GetGadgetText(#Datei))
Else
RunProgram(installpfad+GetGadgetText(#Datei))
EndIf
Goto back
error:
AddElement(error())
error()=GetErrorDescription()+ " on Line "+Str(GetErrorLineNR())
errorreport$=""
ForEach error()
errorreport$=errorreport$+error()+Chr(13)+Chr(10)
Next
Select MessageRequester("ERROR", "Es traten folgende Fehler auf:" + Chr(10) + errorreport$ + Chr(10) + "Programm weiter ausführen?", #MB_YESNO|#MB_ICONERROR)
Case #IdYes
Return
Case #IdNo
Goto mailme:
EndSelect
Return
mailme:
errorreport$=""
ForEach error()
errorreport$=errorreport$+error()+"%0A"
Next
MessageRequester("Info","Bite setzten sie mich über diese Fehler in Kenntnis.")
RunProgram("mailto:benpicco@compuserve.de?subject=Bugreport_Thumbnailmaker&body=Fehlerbeschreibung:%0A"+errorreport$)
End
kann man natürlich auch hier runterladen. (naja, besser hier...)
edit: peinlicher Fehler entfernt