Seite 26 von 41

Verfasst: 08.05.2009 21:40
von Thorsten1867
ts-soft hat geschrieben:@Thorsten1867
bekommste den zweiten rund? rot und rund, wie die rauf und runter buttons?
Das würde passen :wink:
Sollte kein Problem sein. Entwurf mit Durchmesser 16px unterwegs.

Verfasst: 08.05.2009 21:55
von ts-soft
:allright: passt

Verfasst: 09.05.2009 00:10
von HeX0R
Das Haupticon sieht ziemlich pixelig aus, wenn man die Symbole aufm Desktop groß anzeigen lässt.
Bild

Verfasst: 09.05.2009 00:23
von ts-soft
HeX0R hat geschrieben:Das Haupticon sieht ziemlich pixelig aus, wenn man die Symbole aufm Desktop groß anzeigen lässt.
Man hast Du gute Augen, mir fällt das garnicht auf :mrgreen:

32x32 ist nur drinnen, aber vielleicht Zauber ich noch ein Multiples Vista
Kompatibles Icon.

Ich sollte mir nen Grafiker anstellen :wink:

Danke für den Hinweis, mal sehen ob ich da was machen kann.

Verfasst: 09.05.2009 01:34
von HeX0R
ts-soft hat geschrieben: 32x32 ist nur drinnen, aber vielleicht Zauber ich noch ein Multiples Vista
Kompatibles Icon.
Ich hab nicht mal Vista.
Nur haben mir die etwas größeren Symbole von Vista ganz gut aufm Desktop gefallen (der bei mir ziemlich leer ist).
Deswegen habe ich den Desktop irgendwann auf große Symbole umgestellt, und siehe da.....

Verfasst: 10.05.2009 17:10
von ts-soft
@HeX0R
Hab mal ein Mehrfachicon reingepackt, weichgezeichnet, evtl. mußte den
Desktopcache löschen, damit Du es sehen kannst.


Der Lister hat jetzt einen HexViewer erhalten, basierend auf dem Source,
den al90 auch im PureFileMaster nutzt, danke nochmal dafür :allright:

Hier mal ein DemoPlugin in PB, so wie es später im PFM, JA!COMMANDER
und hoffentlich auch im TC funktioniert. Es sind nur die beiden wichtigsten
Funktionen, autom. Konfiguration im TC ist so nicht möglich :wink:

ListLoad(ParentWin, File.s, Flags)
ParentWin ist das Control, welches das Plugin darstellt.
Für den PluginEntwickler nur wichtig, weil dieses Handle für SetParent be-
nötigt wird. Wenn dieser Parameter 0 ist, sollte das Plugin sein eigenes
Fenster darstellen, ansonsten bleibt das versteckt.

File.s ist die für das Plugin bestimmte Datei.

Die Flags werden zur Zeit nicht unterstützt.

Zurückgeben sollte die DLL das Handle des Containers, in dem das Plugin sitzt.

ListCloseWindow(ListWin)
Diese Funktion ist zum aufräumen des Plugins.

Code: Alles auswählen

UseJPEGImageDecoder()

Global win, img, btn, con

Procedure Win_CB(hWnd, uMsg, wParam, lParam)
  Protected File.s, pic, Result = #PB_ProcessPureBasicEvents
  
  Select uMsg
       
    Case #WM_SIZE
      ResizeGadget(img, #PB_Ignore, #PB_Ignore, GadgetWidth(con), GadgetHeight(con) - 50)
      ResizeGadget(btn, GadgetWidth(con) / 2 - 30, GadgetHeight(con) - 40, #PB_Ignore, #PB_Ignore)
    
    Case #WM_COMMAND
      If wParam & $FFFF
        Select GetDlgCtrlID_(lParam)
          Case btn
            File = OpenFileRequester("","","",0)
            If File
              pic = LoadImage(#PB_Any, File)
              ResizeImage(pic, GadgetWidth(img), GadgetHeight(img))
              SetGadgetState(img, ImageID(pic))
            EndIf
        EndSelect
      EndIf

  EndSelect
  
  ProcedureReturn Result
EndProcedure

ProcedureDLL ListLoad(ParentWin, File.s, Flags)
  
  win = OpenWindow(#PB_Any, 0, 0, 322, 150, "PluginDemo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible)
  If win
    
    con = ContainerGadget(#PB_Any, 0, 0, WindowWidth(win), WindowHeight(win), #PB_Container_BorderLess)
    img = ImageGadget(#PB_Any, 0, 0, 0, 0, ImageID(LoadImage(#PB_Any, File)))
    btn = ButtonGadget(#PB_Any, 0, 0, 60, 30, "...")
    
    CloseGadgetList()
    SetWindowCallback(@Win_CB())
    If ParentWin
      SetParent_(GadgetID(con), ParentWin)
      
      ProcedureReturn GadgetID(con)
    Else
      HideWindow(win, #False)
    EndIf
  EndIf 
  
EndProcedure

ProcedureDLL ListCloseWindow(ListWin)
  FreeGadget(con)
  CloseWindow(win)
EndProcedure
Wenn Ihr Fragen habt oder Vorschläge habt, einfach los :wink:


// geändert
Syntax korrigiert

Verfasst: 10.05.2009 18:48
von ts-soft
hier ein testcode, damit man sieht das es funktioniert:

Code: Alles auswählen

EnableExplicit

OpenWindow(0, 0, 0, 640, 480, "test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)

ContainerGadget(0, 0, 0, 0, 0)

Define ListWin
If OpenLibrary(0, "plugin.dll")
  ListWin = CallFunction(0, "ListLoad", GadgetID(0),#PB_Compiler_Home + "Examples\Sources\Data\PureBasic.bmp", 0)
  If ListWin
    MoveWindow_(ListWin, 0, 0, GadgetWidth(0), GadgetHeight(0), 1)
  EndIf
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      CallFunction(0, "ListCloseWindow", ListWin)
      CloseLibrary(0)
      Break
    
    Case #PB_Event_SizeWindow
      ResizeGadget(0, 0, 0, WindowWidth(0), WindowHeight(0))
      If ListWin
        MoveWindow_(ListWin, 0, 0, GadgetWidth(0), GadgetHeight(0), 1)
      EndIf
  EndSelect
ForEver
//geändert
Testcode angepaßt

Verfasst: 10.05.2009 18:57
von al90
ts-soft hat geschrieben:Der Lister hat jetzt einen HexViewer erhalten, basierend auf dem Source,
den al90 auch im PureFileMaster nutzt, danke nochmal dafür :allright:
Gerne geschehen. :allright:
Hier mal ein DemoPlugin in PB, so wie es später im PFM, JA!COMMANDER
und hoffentlich auch im TC funktioniert. Es sind nur die beiden wichtigsten
Funktionen, autom. Konfiguration im TC ist so nicht möglich :wink:
Werde mich mal langsam darin einarbeiten. :wink:

BTW:
Ich wollte mir gerade mal das listplugin.hlp durchlesen und musste
feststellen das ich die WinHlp32.exe für Vista erst extra vom MS Server
laden muss. Und dann auch noch vorher mit der dämlichen Gültigkeitsprüfung. :freak:

Verfasst: 10.05.2009 19:16
von ts-soft
al90 hat geschrieben: Werde mich mal langsam darin einarbeiten. :wink:

BTW:
Ich wollte mir gerade mal das listplugin.hlp durchlesen und musste
feststellen das ich die WinHlp32.exe für Vista erst extra vom MS Server
laden muss. Und dann auch noch vorher mit der dämlichen Gültigkeitsprüfung. :freak:
Erstmal genügen ja die beiden Funktionen, das was noch fehlt läßt sich
sowieso im moment nicht umsetzen, Druck-Routinen usw. hab ich nicht,
und die Dateitypen, für die das Plugin dann zuständig ist, kann man auch in
seinen Prefs festlegen. Wichtig ist, das die Plugins verschiebbar sind, weil
anhand der Reihenfolge wird die Zuordnung ausgeführt. Also das erste
Plugin, das für *.bmp eingestellt ist, wird genutzt, bei einem nachfolgendem
Plugin kommt die Datei daher nicht an.

// Nachtrag:
Ist hoffentlich jedem klargeworden, das für Events nur das Callback zur
Verfügung steht! Anhand des Beispiels sollte man das normalle Eventloop
ins Callback übertragen können :wink:

Das ist aber auch schon der einzige Unterschied zur normalen
PB-Programmierung. Im allgemeinen hat so ein Plugin ja auch nicht soviel
Gadgets.

Verfasst: 10.05.2009 22:22
von al90
ts-soft hat geschrieben:Das ist aber auch schon der einzige Unterschied zur normalen
PB-Programmierung. Im allgemeinen hat so ein Plugin ja auch nicht soviel
Gadgets.
Ok ich werde mich die nächsten Tage mal damit befassen. Hast ja ein
schönes beispiel gemacht wo ich mit klar kommen müsste. Ansonsten
frage ich nochmal nach. :allright: