JA!COMMANDER 1.25

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich werde doch nicht 2 Programme erstellen, bloß weil Ihr keine Styles mögt.
Unter Vista siehts gut aus :wink:
Bild
Unter XP hab ich auch keine Probleme. Das manche Controls ohne Style
nicht oder anders Funktionieren, da kann ich nichts für.

Das mit der Sprachauswahl verstehe ich sowieso überhaupt nicht, das sind
nur Standard Controls, lediglich der ToolWindow Style ist gesetzt :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

das mit dem verhunzten Fenster hatte ich auch schonmal, aber bei einem
anderen Programm :wink:
Win11 x64 | PB 6.20
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ist nur der eine Style, somit muß ich den bei allen Dialogen wieder
entfernen oder Fenster noch mal für ungültig erklären. Naja gut, der Rest
scheint unter XP Altdeutsch ja in Ordnung zu sein.

// edit
Nach dem nächsten Update ist das Problem behoben für XP und Vista User
im Win2k Design :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

ts-soft hat geschrieben:XP Altdeutsch
Wie de Herr so's Gscherr... ;)
ts-soft hat geschrieben: // edit
Nach dem nächsten Update ist das Problem behoben für XP und Vista User
im Win2k Design :mrgreen:
Na alla, geht doch :allright:
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

ts-soft hat geschrieben:// edit
Nach dem nächsten Update ist das Problem behoben für XP und Vista User
im Win2k Design :mrgreen:
Das ist gut, auch für mein manchmal-benutz-XP.
Win11 x64 | PB 6.20
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

HeX0R hat geschrieben: Na alla, geht doch :allright:
Für dich tu ick doch alles, alter :allright:

PS: Updatechecker nutzen, nur dort ist die aktuelle Version im moment zu
finden!

// edit
transparente Fensterleisten im Klassik Look, ich schmeiß mich weg :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Einwandfrei jetzt!
Danke
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Ich habe das sampleplugin mal ein wenig verbessert:

Code: Alles auswählen

; Plugininterface JA!COMMANDER
; ListLoad is the same as for a TotalCommander ListerPlugin.
; ShowFlags is not supported (ignored in the moment)
Prototype.i ListLoad(ParentWin.i, FileToLoad.p-ascii, ShowFlags.l = 0)

; this is the same as above but not compatible to TotalCommander
; this functions is for Unicode DLLs
Prototype.i ListLoadW(ParentWin.i, FileToLoad.p-unicode, ShowFlags.l = 0)

; This is your cleanup function, the same as in TotalCommander
; This function is not required.
; If TC Or JA!COMMANDER doesn't found this function,
; the window becomes destroyed with DestroyWindow_(hWnd)
Prototype   ListCloseWindow(ListWin.i)

EnableExplicit

UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global win, img, info, con, image, image_copy

Procedure.s ByteRechner(dSize.d)
	Protected Namen = $4B4D4754, i = 24, C.c, Result.s = "0"

	If dSize > 0.0
		While dSize > 1024 And i >= 0
			dSize / 1024
			C = (Namen >> i) & $FF
			i - 8
		Wend
		Result = StrD(dSize, 2) + " " + Chr(C) + "Byte"
	EndIf
	ProcedureReturn Result
EndProcedure

Procedure Win_CB(hWnd, uMsg, wParam, lParam)
	Protected File.s, pic, Result = #PB_ProcessPureBasicEvents
	Protected Pattern.s = "JPEG-Files (*.jpg, *.jpeg)|*.jpg;*.jpeg"
	Protected x, y, xf.f, yf.f

	Select uMsg

		Case #WM_SIZE
			ResizeGadget(img, #PB_Ignore, #PB_Ignore, GadgetWidth(con), GadgetHeight(con) - 100)
			ResizeGadget(info, #PB_Ignore, GadgetHeight(con) - 99, GadgetWidth(con), #PB_Ignore)
			If image
				xf         = ImageWidth(image) / ImageHeight(image)
				yf         = GadgetWidth(con) / (GadgetHeight(con) - 100)
				If IsImage(image_copy)
					FreeImage(image_copy)
				EndIf
				image_copy = CopyImage(image, #PB_Any)
				If xf > yf
					xf = GadgetWidth(con) / ImageWidth(image_copy)
					If xf > 2
						xf = 2
					EndIf
					ResizeImage(image_copy, ImageWidth(image_copy) * xf, ImageHeight(image_copy) * xf)
				Else
					xf = (GadgetHeight(con) - 100) / ImageHeight(image_copy)
					If xf > 2
						xf = 2
					EndIf
					ResizeImage(image_copy, ImageWidth(image_copy) * xf, ImageHeight(image_copy) * xf)
				EndIf
				SetGadgetState(img, ImageID(image_copy))
			EndIf

		Case #WM_COMMAND
			If wParam & $FFFF
				;Select GetDlgCtrlID_(lParam)
				;           Case btn
				;             File = OpenFileRequester("", path, Pattern, 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, 0)
		info  = EditorGadget(#PB_Any, 0, 0, 320, 98, #PB_Editor_ReadOnly)
		image = LoadImage(#PB_Any, File)

		If image
			SetGadgetState(img, ImageID(image))
			AddGadgetItem(info, -1, "Name:" + #TAB$ + #TAB$ + GetFilePart(File))
			AddGadgetItem(info, -1, "Path:" + #TAB$ + #TAB$ + GetPathPart(File))
			AddGadgetItem(info, -1, "Dimension:" + #TAB$ + Str(ImageWidth(image)) + " x " + Str(ImageHeight(Image)) + " pixel")
			AddGadgetItem(info, -1, "Depth:" + #TAB$ + #TAB$ + Str(ImageDepth(image)) + " bit")
			AddGadgetItem(info, -1, "Size:" + #TAB$ + #TAB$ + ByteRechner(FileSize(File)))
		Else
			SetGadgetText(info, "unknown format")
		EndIf

		CloseGadgetList()
		SetWindowCallback(@Win_CB())
		If ParentWin
			SetParent_(GadgetID(con), ParentWin)

			ProcedureReturn GadgetID(con)
		Else
			; only for testing
			HideWindow(win, #False)
		EndIf
	EndIf

EndProcedure

ProcedureDLL ListCloseWindow(ListWin)
	If IsImage(image_copy)
		FreeImage(image_copy)
	EndIf
	If image
		FreeImage(image)
	EndIf
	FreeGadget(con)
	CloseWindow(win)
EndProcedure
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Sieht gut aus :allright:

Hier noch ein paar kleine Tipps zu Plugins:

Wer mit Subclassing, Callback und Co nicht klarkommt, dem empfehle ich
EasyVENT für Plugins zu nehmen, da ein normaller EventLoop ja nicht geht.

Im übrigen muß das Fenster oder Control nicht unbedingt zerstört werden,
es genügt das Control zu verstecken (Fenster ist ja sowieso versteckt) und
es einfach mit SetParent wieder zurückzuholen.

Endgültig aufräumen macht man dann in DetachProcess(Instance)

Also jungs, ran und Plugins entwickeln oder einfach nur Ideen posten, findet
sich schon jemand.

Ich selber muß erstmal etwas anderes, lange geplantes, zu Ende bringen,
wenn alles klappt werdet Ihr begeistert sein :)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

HeX0R hat geschrieben:Ich habe das sampleplugin mal ein wenig verbessert:
Da hab ich jetzt ein merkwürdiges Problem mit :freak:
Wenn ich mir hintereinander weg so 20 - 30 Bilder ansehe, kommt
irgendwann nur noch jedes 2te, aber der Text ist da. Kannste mal bitte
checken ob das bei Dir auch so ist?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten