Seite 1 von 1

geändertes Fensterdesign - plötzlich Bug!

Verfasst: 07.10.2005 20:09
von benpicco
Ich hab hierzu zwar schonmal ein Thema, aber ich glaube, die Bugdiskussion gehört nich in die Feedback sektion, naja, komme ich mal zu meinem Problem:
Das Alte Fensterdesign (völlig verwirrend, weil ich für ne neue Funktion immer blos eine freie Stelle gesucht habe) habe ich Expertenansicht genannt, das neue Assistent. Sie Unterscheiden sich blos in der Anordnung und verteilung der gadgets, ich hbae überall die selben Konstanten genutzt, die Abfrage der Gadgets und alles andere ist daher gleich. Jetzt das seltsame: Wähle ich im Assistenten ein Bild, ändere die Größe und klicke auf ein anderes, ist dieses auch resized! In der alten Expertenansicht passiert sowas nicht! Ich hab mir den code schon von vorn und hinten, oben und unten, rechts nach links und rückwärts angeschaut, abfragen verschlimmbessert - alles ohne Erfolg. Spring villeicht von euch jemand der Bug ins Auge? Wenn ja, sagt es mir bitte! nachdem ihr den käfer aus dem Auge entfernt habt ;) Ich verzweifle noch an diesem

Code: Alles auswählen

#jmg_Edition=#False
NewList error.s()
OnErrorGosub(?error)
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageEncoder()
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
  #vote
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_SystemMenu|#PB_Window_MinimizeGadget |#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")
      CheckBoxGadget(#vote,310,110,150,15,"Bildbewertungsmöglichkeit")
      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)
  ;----Bilder-----
  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")
  ;----Tabelle----
  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")
  CheckBoxGadget(#vote,110,90,150,15,"Bildbewertungsmöglichkeit")
  CompilerIf #jmg_Edition=#True
  CheckBoxGadget(#jmg,110,110,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)
  ;----finish-----
  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.2", #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:\","Alle unterstützten Formate|*.bmp;*.jpg;*.png;*.tiff;*.tga|Bitmaps (*.bmp)|*.bmp|JPEGs (*.jpg)|*.jpg|TrueVision Targa (*.tga)|*.tga|TIFF (*.tiff)|*.tiff|Alle Dateien|*.*",-1,#PB_Requester_MultiSelection)
      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 = #vote
      If GetGadgetState(#vote)=1
        Select MessageRequester("Info", "Die Bewertung der Bilder basiert auf php, das heißt, das einerseits die Websiten als php Dokumente gespeichert werden müssen (es sei denn sie haben in der .htacces Datei auf ihrem Server " + Chr(34) + "AddType application/x-httpd-php .html " + Chr(34) + " eingestellt), andererseits können sie es nicht offline testen (es sei denn, sie haben einen offline-Server wie z.B. Appache installiert).", #MB_OKCANCEL|#MB_ICONINFORMATION)
          Case #IdOK
            save$=GetExtensionPart(GetGadgetText(#Datei))
            SetGadgetText(#Datei,ReplaceString(GetGadgetText(#Datei),GetExtensionPart(GetGadgetText(#Datei)),"php"))
          Case #IdCancel
            SetGadgetState(#vote,0)
        EndSelect
      Else 
        SetGadgetText(#Datei,ReplaceString(GetGadgetText(#Datei),GetExtensionPart(GetGadgetText(#Datei)),save$))
      EndIf
    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))
If GetGadgetState(#vote)=1
  CreateDirectory(installpfad+"\stats")
  OpenFile(0,installpfad+"\auswert.php")
  WriteData(?auswert,?font-?auswert)
  CloseFile(0)
  NewList wert.s()
  ReadFile(0,"wertform.txt")
  Repeat
    AddElement(wert())
    wert()=ReadString()
  Until Eof(0)
  CloseFile(0)
EndIf
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
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) + ">")
If GetGadgetState(#vote)=1
 ReadFile(1,"script.txt")
 Repeat
  UseFile(1)
  string$=ReadString()
  UseFile(0)
  WriteStringN(string$)
Until Eof(1)
CloseFile(1)
EndIf
 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+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 h=1 To count;GetGadgetState(#spalten)
     WriteStringN("<td><center>"+GetFilePart(images()\source)+"</center></td>")
     NextElement(images()) 
   Next
 EndIf
 WriteStringN("</tr>")
EndIf
If GetGadgetState(#vote)=1
  WriteStringN("<tr>")
    For h=1 To count
        WriteStringN("<td><table border="+Chr(34)+Str(GetGadgetState(#border))+Chr(34)+"><center>")
        WriteStringN("<form name="+Chr(34)+"stats/pic"+Str(Z-h)+Chr(34)+" method="+Chr(34)+"POST"+Chr(34)+" OnSubmit="+Chr(34)+"submiter('stats/pic"+Str(Z-h)+"');"+Chr(34)+">")
        ForEach wert()
          WriteStringN(wert())
          ;Debug wert()
        Next
        WriteStringN("</form></center></td>")
        WriteStringN("<?php")
        WriteStringN("$file=fopen("+Chr(34)+"stats/pic"+Str(Z-h)+".lg"+Chr(34)+","+Chr(34)+"r"+Chr(34)+");")
        WriteStringN("$roh =RTrim(fread($file,20));")
        WriteStringN("$sep=strrpos($roh,"+Chr(34)+"|"+Chr(34)+");")
        WriteStringN("$count=substr($roh,0,$sep);")
        WriteStringN("$wert=substr($roh,$sep+1);")
        WriteStringN("echo "+Chr(34)+"<tr><td>Ergebnis:"+Chr(34)+".$wert/$count."+Chr(34)+"</td><td>Bewertungen:"+Chr(34)+".$count."+Chr(34)+"</td></tr>"+Chr(34)+";")
        WriteStringN("fclose($file);")
        WriteStringN("?>")
        WriteStringN("</table>")
    Next
  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)
If GetGadgetState(#vote)=1
  For h=0 To pics 
  CreateFile(1,installpfad+"\stats\pic"+Str(Z-h)+".lg")
  WriteString("1|5")
  CloseFile(1)
  CreateFile(1,installpfad+"\stats\pic"+Str(Z-h)+"_ips.lg")
  CloseFile(1)
Next
EndIf
SetGadgetState(#progress,200)
Until seite=bps
ClearList(wert())
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
DataSection 
auswert:
IncludeBinary "auswert.php"
font:
benötigte dateien:
wertform.txt

Code: Alles auswählen

  <input type="radio" name="R1" value="1" checked >1 - schrecklich
  <input type="radio" name="R1" value="2">2
  <input type="radio" name="R1" value="3">3
  <input type="radio" name="R1" value="4">4
  <input type="radio" name="R1" value="5">5
  <input type="radio" name="R1" value="6">6
  <input type="radio" name="R1" value="7">7
  <input type="radio" name="R1" value="8">8
  <input type="radio" name="R1" value="9">9
  <input type="radio" name="R1" value="10">10 - super 
  <input type="submit" value="Bewerten" name="B1">
script.txt

Code: Alles auswählen

<script type="text/javascript">
<!--
function submiter(pic) {
	for(var x=0; x<=10;x++)
	{
       if(document.forms[pic].R1[x].checked == true) 
	   break
	}
x++
//alert(x);
open("auswert.php?wert="+x+"&file="+pic,"Auswertung");
}
//-->
</script>
auswert.php

Code: Alles auswählen

<?php
  $speicher=100;
  $ip = $_SERVER['REMOTE_ADDR'];
  $vote=$HTTP_GET_VARS["wert"];
  $rohfile=$HTTP_GET_VARS["file"];
  $logfile=$rohfile.".lg";
  $ip_file=fopen($rohfile."_ips.lg","r");
  $roh=rtrim(fread($ip_file,15*$speicher));
  fclose($ip_file);
  $ips=explode("_",$roh);
  if(in_array($ip,$ips))
  {
  	echo "Sie haben dieses Bild schon bewertet, es wäre unfär, täten sie es wieder!";
  }
  else
  {
  $file=fopen($logfile,"r+");
  $roh =rtrim(fread($file,20));
  $sep=strrpos($roh,"|");
  $count=substr($roh,0,$sep)+1;
  $wert=substr($roh,$sep+1)+$vote;
  rewind($file);
  fwrite($file,$count);
  fwrite($file,"|");
  fwrite($file,$wert);
  fclose($file);
  $file=fopen($rohfile."_ips.lg","r+");
  if(count($ips)<$speicher)
  {
    $speicher=count($ips);
  }
  $_100ips[0]=$ip;
  for($x = 1; $x < $speicher+1; $x++)
  {
  array_push($_100ips,$ips[($x-1)]);
  }  
  fwrite($file,implode("_", $_100ips));
  fclose($file);
  echo "Bewertung erfolgreich abgegeben! Die Bewertung lautet nun ".$wert."/".$count."=".$wert/$count;
  }

?>
<script language="JavaScript">
function end() {
var x = confirm("Möchtes sie diese Seite schließen?");
 if(x == true) this.close();
}
  window.setTimeout(end(),2000);
</script>
(wem das zu unübersichtlich ist, der kann sich alles auch downloaden. (regt euch nich über das php auf, ich mach das erst eine Woche...)

Verfasst: 07.10.2005 21:01
von AND51
Hallo!

tut mir leid, wenn ich dein Problem nicht beheben kann (bin selber (noch) Anfänger), aber ich habe ein paar Tipps!

Ich würde an deiner Stelle die Auswahl für die Experten / Assisten Modi ganz weglassen! Der Experten Modus ist (egal ob für Anfänger oder Profis) einfach zu unübersichtlich! Lass lieber den assistent modus da, der unterteilt das ja in 3 registerkarten (oder "reiter" wie manche das nennen). Das ist erstens schon viel übersichtlicher, und zweitens ist das fenster im expertenmodus viel zu groß! da barauchst du ja ne super auflösung, da wird es schon mit der standard auflösung von 1024 mal 768 knapp! Leute die noch das steinzeitliche 800x600 haben, sehen dann vom fenster wirklcih nur einen teil, weils fenster zu groß ist!

Tipp: Egal ob man als experte, profi, oder anfänger den assistenten modus benutz, muss man sich nicht dafür schämen! also lass nur den assistent da! und wenn du den bsiherigen assistenten modus nicht ändern willst, dann lass ihn so, ansonsten mein vorschlag:
mach das doch als schritt-für-schritt assistent. also so, dass man immer wit "Weiter >" klicken mus, wenn man den schritt abgeschlossen hat.
Anfänger und Leute, die sich noch nicht auskennen bekommen so ein gefühl, wie soll ich sagen, na halt ein gefhl der sicherheit nach dem motto: "Wow, dieses Programm ist echt gut! Schritt für Schritt geht es vor und lässt mich so nicht im Stich!"

Weitere Tipps sind: Vielleicht weißt du es schon selbst, aber die Rechtschreibfehler müssen (sollten) raus. Ich kann dir da helfen, wenn du möchtest.
Außerdem wenn man auf bild wählen klickt, kommt ja so ein filerequester oder wie der hei´ßt. auf jedenfall so etwas wo man seine ateien auswählen kann. da steht unten als Datei typ nur "grafik Files" usw. Schreib das verständlicher und wenns geht so, dass man sehen kann welches Format damt gemeint ist: "GIF Files" ... So nicht! Lieber so: "GIF Dateien *.gif"


Vergessen. Wenn du wie oben erwähnt, den expetenmosu weglässt und entweder den chritt-für-schritt modus einbaustr, oder den assistenten modus lässt, dann stell das doch so ein, dass man das fenster _NICHT_ vergrößern und verkliener kann. denn dann braucht man das gar nicht und somit hast du auch nicht dein problem!


Sind alles nur Vorschläge. Gutes Gelingen beim eeieren arbeiten mit dem Programm, André

Verfasst: 09.10.2005 21:52
von benpicco
So, ich hab jetzt mal eine neue Version gemacht und mir die Kritik von AND51 angenommen, die Daeiartenbennenung verbessert und nach Rechtschreibfehlern gesucht (leider finde ich die schlecht...)
Die Idee mit dem Schritt - für - Schritt Assistenten hatte ich auch schon, aber die Masse an Einstellungsmöglichkeiten (und meine Faulheit :roll: ) haben es nur zu dem momentanen Assistenten gebracht. Ich wüsste nicht, wie ich das anstellen sollte... Etwa a´la "1.Fenster: Bitte geben sie Hier die Breite des Bildes ein. Die breite ist die Ausdehnung des Bildes nach rechts und links. Eine zu große Breite kann dazu führen,... "
Hmmm... Damit wäre ich wohl ewig beschäftigt...
Apropos Zeit, das ist auch die Existensberechtigung des Expertenmodus ^^. Man kann nämlich (vorausgesetzt man verirrt sich nicht) eine Wesite mit 3 Kliks erstellen. Das geht mit dem Assistent nicht. Leider weiß ich um die mieserable Übersichtlichkeit des expertenmodus, aber ich konnte mich nicht dazu bewegen, ihn aufzuräumen...
Und da sind wir (wir? ich meine ich!) schon wieder bei diesem seltsamen Bug... was hat der Assistent, was der Expertenmodus nicht hat? (also welchen Fehler)
Das mit dem Vergrößern hab ich weggemacht (ich frag mich, warum ich das überhaubpt reingemacht hatte). Leider hing das nicht mit dem Bug zusammen...

Verfasst: 10.10.2005 00:21
von AND51
Hallo!
Dann mal gleich übergehen zum eigentlichen Beitrag:

und mir die Kritik von AND51 angenommen
Naja, Kritik ist es nicht, es sind nur ein paar Tipps. Daas soll nicht heißen, dass du dein komplettes Programm nach mir richten sollst ;-) .

(und meine Faulheit :roll: )
Ja, die kenne ich... Ich suche auch schon nach einem Weg, die Faulheit zu besiegen...

Bitte geben sie Hier die Breite des Bildes ein. Die breite ist die Ausdehnung des Bildes nach rechts und links. Eine zu große Breite kann dazu führen,...
Wer sagt denn, dass du das so dermaßen ausführlich machen musst? jeder weiß, was die Breite ist. Die meisten Leute haben zwar keine HTML-Kenntnisse, aber ein bisschen Basiswissen kannst du schon vorraussetzen. Dann mach lieber, wenn du später Zeit hast, eine Dokumentation (Hilfe-Datei) zu deinem Projekt. Oder arbeite mit GadgetToolTips: Wanderst du mit der Maus zum beispiel auf den Button "Breite", dass dann angezeigt wird: Dieser Knopf bestimmt die Breite von..." Mit den GadgetToolTips bräuchtest du dann sogar keine Dokumentation mehr zu deinem Programm erstellen, wenn du nicht möchtest.
Weißt du, ich persönlich versuche, immer einen Kompromiss zu finden, zwischen "Benutzerfreundlichkeit des Programm" (Rechtschreibfehler, nicht übersichtlich, mieserable Funktionen...) und meiner Faulheit 8) . Dabei geht aber natürlich (eigentlich) die Benutzerfreundlichkeit vor, nicht wahr?

Man kann nämlich (vorausgesetzt man verirrt sich nicht) eine Wesite mit 3 Kliks erstellen. Das geht mit dem Assistent nicht.
Das ist ja schön und gut, aber werden dabei auch die Einstelungen vom letzten mal genommen? Die 3 Klicks nützen (in meinen Augen) nur was, wenn ich nicht schon wieder die Qualität, den Speicherort und so weiter eingeben muss. nebenbei bemerkt ist der Expertenmodus wie schon gesagt (etwas) unübersichtlich...
Unter "Expertenmodus" verstehe ich einen Modus, der mehr und detailliertere Optionen und Einstellmöglichkeiten bietet, als der "normale" oder "Anfängermodus". (Um mal das Wort "Expertenmodus" zu definieren.)

was hat der Assistent, was der Expertenmodus nicht hat? (also welchen Fehler)
Tut mir leid, das kann ich dir leider aber auch nicht sagen...

Das mit dem Vergrößern hab ich weggemacht
OK, war eh nur überflüssige Spielerrei. Nützt nur was, wenn man das Programm so macht, dass die Gadgets sich mit dem fenster vergrößern oder verkleinern.

Leider hing das nicht mit dem Bug zusammen...
Wirklich schade. Aber Kopf hoch! Vielleicht schaut ja noch ein richtiger Experte vorbei, ansonsten kehrste dem Bug den Rücken zu und machst nur den Anfängermodus.

Kritik von AND51 angenommen
Danke! :-) Dass du mir überhaupt gehör schenkst und wir gemeinsam versuchen, das Beste draus zu machen.

Verfasst: 13.10.2005 20:48
von benpicco
Hmm...
Hat niemand eine Idee, was das sein könnte?