<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - CocoaExt</title>
		<link>https://www.blitzforum.de/worklogs/253/</link>
		<description>Worklog von Chaos Interactive</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Sun, 14 Feb 2010 12:07:43 +0100</pubDate>
		<lastBuildDate>Sun, 14 Feb 2010 12:07:43 +0100</lastBuildDate>

		<item>
			<title>bugFixes</title>
			<link>https://www.blitzforum.de/worklogs/253/#2141</link>
			<guid>https://www.blitzforum.de/worklogs/253/#2141</guid>
			<author>d-bug</author>
			<description>Vorweg mal ne kurze Info zu MaxGUI 1.38 und CocoaExt:&lt;br /&gt;Einfach CocoaExt neu kompilieren, dann l&amp;auml;ufts wunderbar.&lt;br /&gt;&lt;br /&gt;So, hab in letzter Zeit mal wieder gef&amp;uuml;hlte 2.000.000 bugfixes veranstaltet. Die folgende Liste beginnt am&lt;br /&gt;23.12.2009 und endet heute...&lt;br /&gt;&lt;br /&gt;+ = hinzu / - = entfernt / # = gefixt bzw. ge&amp;auml;ndert&lt;br /&gt;&lt;br /&gt;+ cocoaext.userdefaults: Unterst&amp;uuml;tzung f&amp;uuml;r Default-Variablen.&lt;br /&gt;+ cocoaext.gui: Methode um Gadgets drehen zu k&amp;ouml;nnen.  &lt;br /&gt;+ cocoaext.gui: Checkbox-Verhalten f&amp;uuml;r MenuItems&lt;br /&gt;# cocoaext.gui: GadgetHidden auf ein Fenster angewendet f&amp;uuml;hrte unter besondern Umst&amp;auml;nden zum Absturz&lt;br /&gt;# cocoaext.gui: Vordefinierte Breite der Scrollbars auf die, von Apple vorgebenen, 15 Pixel ge&amp;auml;ndert&lt;br /&gt;# cocoaext.gui: Absturz beim &amp;quot;nullen&amp;quot; des Images einer ImageView gefixt&lt;br /&gt;+ cocoaext.gui: CocoaSelectButtonMenuItem und CocoaSelectedButtonMenuItem hinzugef&amp;uuml;gt (anwendbar auf Popup-und Pulldown Buttons)&lt;br /&gt;# cocoaext.gui: Popup-und Pulldown Buttons konnten die MenuItems nicht sperren (disabled)&lt;br /&gt;# cocoaext.gui: MaxGUI1.36+ Crash mit: &amp;quot;duplicate identifier _NSSetHotKey&amp;quot; Meldung &amp;lt;-- (hatte ich ja schon mal erw&amp;auml;hnt)&lt;br /&gt;+ cocoaext.tabbar: setItemExtra und setItemText Unterst&amp;uuml;tzung&lt;br /&gt;# cocoaext.tabbar: CocoaDisableFocusRing f&amp;uuml;r alle Sub-Gadgets eingebaut&lt;br /&gt;+ cocoaext.scopeview: Man kann nun auf den Modus-Popup-Button zugreifen&lt;br /&gt;# cocoaext.tabbar: Absturz beim entfernen des letzten Items gefixt&lt;br /&gt;+ cocoaext.tabbarView: Hab die komplette Tabbar &amp;uuml;ber den Haufen geworfen und eine TabbarView hinzugef&amp;uuml;gt&lt;br /&gt;# cocoaext.gui: EVENT_GADGETACTION vor Aufruf des Men&amp;uuml;s bei Popup-und Pulldown Buttons hinzugef&amp;uuml;gt&lt;br /&gt;# cocoaext.gui: Unkontrolliertes Verhalten bei aufeinanderfolgenden Sheet-Alerts gefixt &lt;br /&gt;&lt;br /&gt;Ihr seht also, es lohnt sich wirklich mal was gr&amp;ouml;&amp;szlig;eres mit seinen eigenen Modulen zu programmieren. So findet man dann auch mal die Bugs :&amp;gt;&lt;br /&gt;&lt;br /&gt;Zu der dem Verwerfen der Tabbar ist noch was nachzulegen:&lt;br /&gt;Da ich wirklich &amp;uuml;berhaupt keine kontrolliertes Verhalten beim hinzuf&amp;uuml;gen oder entfernen der Tabs herbeif&amp;uuml;hren konnte, bin schlu&amp;szlig;endlich zu dem Ergebnis gekommen, dass die von BRL eingef&amp;uuml;hrte Item-Verwaltung &amp;uuml;ber Arrays schei&amp;szlig;e ist. Ich bin also hingegangen und habe das ganze &amp;uuml;ber LinkedLists realisiert und das l&amp;auml;uft doch um einiges stabiler. Au&amp;szlig;erdem bringt die neue TabbarView jetzt pro Tab ein ContentPanel mit, dass automatisch ein bzw. ausgeblendet wird. Dieses Panel kann auch bei bedarf ersetzt werden. Das ein/ausblenden bleibt!&lt;br /&gt;Nachteil der ganzen Geschichte ist, dass die Tabs nicht mehr automatisch ihre Gr&amp;ouml;&amp;szlig;e &amp;auml;ndern, wenn es zu viele auf der Leiste sind.&lt;br /&gt;&lt;br /&gt;Um die Kompatibilit&amp;auml;t zu erhalten habe ich die alte Tabbar mal dabei gelassen, werde sie aber nie und nimmer mehr anpacken. Bei mir liegt die eher als Abfall auf der Platte. :&amp;gt;&lt;br /&gt;&lt;br /&gt;So long...</description>
			<pubDate>Sun, 14 Feb 2010 12:07:43 +0100</pubDate>
		</item>

		<item>
			<title>Warnung^2!!!</title>
			<link>https://www.blitzforum.de/worklogs/253/#2029</link>
			<guid>https://www.blitzforum.de/worklogs/253/#2029</guid>
			<author>d-bug</author>
			<description>Heute wurde ja bekannter ma&amp;szlig;en schon MaxGUI 1.36 ver&amp;ouml;ffentlicht, dass Key Events und diesen &amp;auml;rgerlichen &amp;quot;TIntWrapper ist nun Private&amp;quot; K&amp;auml;se gefixt hat!&lt;br /&gt;&lt;br /&gt;Daf&amp;uuml;r bekam ich aber beim kompilieren die Fehlermeldung, dass NSSetHotKey nun doppelt vorhanden sei! Dies war wiederum ein Fehler von mir. Bitte holt euch die letzte Version von CocoaExt aus dem SVN und kompiliert diese neu.&lt;br /&gt;&lt;br /&gt;(Es gab da auch noch diverse andere Bugfixes, die mir w&amp;auml;hrend der Erstellung meines ersten gr&amp;ouml;&amp;szlig;eren CocoaExt Projekts unter gekommen sind.)&lt;br /&gt;&lt;br /&gt;Gr&amp;uuml;&amp;szlig;e</description>
			<pubDate>Thu, 31 Dec 2009 09:57:56 +0100</pubDate>
		</item>

		<item>
			<title>Warnung!</title>
			<link>https://www.blitzforum.de/worklogs/253/#2007</link>
			<guid>https://www.blitzforum.de/worklogs/253/#2007</guid>
			<author>d-bug</author>
			<description>Solltet ihr dar&amp;uuml;ber nachdenken auf das gerade eben erschienen 1.35er Update der MaxGUI upzugraden und nebenbei auch noch CocoaExt verwenden wollen, so muss ich euch warnen! Das funktioniert nicht mehr miteinander. Netterweise hat SebHoll die, f&amp;uuml;r CocoaExt, wahrscheinlich wichtigste Klasse (TIntWrapper) in der neuen Version der MaxGUI auf &amp;quot;private&amp;quot; gesetzt. Ich habe ihn bereits darum gebeten dies r&amp;uuml;ckg&amp;auml;ngig zu machen, da es unter anderem auch kleptos scintilla.mod (die OSX Version) betrifft. Diese greift ebenfalls auf die TIntWrapper Klasse zur&amp;uuml;ck.&lt;br /&gt;&lt;br /&gt;SpeedFix:&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &amp;ouml;ffnet &lt;b&gt;...BlitzMax/mod/maxgui.mod/cocoamaxgui.mod/cocoagui.bmx&lt;/b&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; geht zu &lt;b&gt;Zeile 915&lt;/b&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; kommentiert das dort stehende &lt;b&gt;Private&lt;/b&gt; einfach aus.&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; kompiliert die Module neu&lt;br /&gt;&lt;br /&gt;Dies hat keinen Einfluss auf die Funktionalit&amp;auml;t von MaxGUI.&lt;br /&gt;&lt;br /&gt;Bis denne!</description>
			<pubDate>Wed, 23 Dec 2009 00:23:41 +0100</pubDate>
		</item>

		<item>
			<title>ScopeBar</title>
			<link>https://www.blitzforum.de/worklogs/253/#1963</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1963</guid>
			<author>d-bug</author>
			<description>Moin,&lt;br /&gt;&lt;br /&gt;nun hatte ich mal Lust auf was anderes und hab begonnen die ScopeBar zu erstellen. Die ScopeBar ist auch bei Apple ein selbst gefriemeltes Wunderwerk, wenn man z.B. die Suche in Safari oder XCode aktiviert. Da ich kein besonderes Interesse an 2.000 Einstellm&amp;ouml;glichkeiten habe, ist sie ziemlich statisch geraten. Man kann sie allerdings als eine Art Vorlage betrachten.&lt;br /&gt;&lt;br /&gt;Erst mal was f&amp;uuml;rs Auge:&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/scope_search.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;Zu sehen ist die Leiste im &amp;quot;Normal&amp;quot; Modus, nachdem sie eingeblendet wurde. Eine einfache Suchfunktion mit noch fehlender Trefferanzeige und eine Vor-und Zur&amp;uuml;ck Button-Kombination mit der man zwischen den Treffern hin und her springen k&amp;ouml;nnen soll. Au&amp;szlig;erdem gibts links noch einen Popup-Button, der es erm&amp;ouml;glicht zwischen &amp;quot;Suchen&amp;quot; und &amp;quot;Suchen &amp;amp; Ersetzen&amp;quot; hin und her zu wechsen. Dieser wird sp&amp;auml;ter mal optional sein, damit man auch die Leiste nur zum suchen verwenden kann.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/scope_replace.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;Nun ist das ganze ausgeklappt, bzw. der Ersetzen-Teil der Leiste wird ebenfalls angezeigt. Dort gibt es links die drei Buttons, die verschiedene Arten des Ersetzens erm&amp;ouml;glichen sollen. Au&amp;szlig;erdem hats da ein normales Textfeld, in dem man den Token eingeben kann.&lt;br /&gt;&lt;br /&gt;Die ganze Suchfunktionalit&amp;auml;t wird nicht von der Leiste geliefert. Daf&amp;uuml;r wirds aber einen Haufen Methoden und Callbacks geben, die man verwenden kann. Die Textarea als solches ist nur lose drangepappt. Man k&amp;ouml;nnte also auch klepto2' Scintilla-Gadget benutzen. Einzig und allein muss man die TextArea oder die ScintillaArea als Target-View der Leiste zuweisen. Diese sorgt dann wiederum daf&amp;uuml;r, dass die TextArea automatisch vergr&amp;ouml;&amp;szlig;ert oder verkleinert wird, je nach momentanem Stand der Leiste. Die Leiste ist also keine Leiste als solches, sondern eine Erweiterung der TextArea. Man muss die Gr&amp;ouml;&amp;szlig;e so angeben, wie die TextArea sp&amp;auml;ter gro&amp;szlig; sein soll. &lt;br /&gt;&lt;br /&gt;So, das wars dann auch erst mal.&lt;br /&gt;</description>
			<pubDate>Sun, 22 Nov 2009 18:00:53 +0100</pubDate>
		</item>

		<item>
			<title>Drag &amp; Drop für ImageViews</title>
			<link>https://www.blitzforum.de/worklogs/253/#1961</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1961</guid>
			<author>d-bug</author>
			<description>Vorweg: Heute kein Bilderbuch hier.&lt;br /&gt;&lt;br /&gt;Soeben ist es mir gelungen Drag&amp;amp;Drop f&amp;uuml;r die ImageViews zu integrieren. Letztens gabs ja nur Drop, dass ging mir allerdings ein wenig auf die Nerven, also hab ich mich heute mal wieder dran gesetzt. Erstaunlicherweise gibt es erschreckend wenige samples im Netz, die es einem einfacher machen w&amp;uuml;rden das alles zu verstehen. Wie dem auch sei, ich fand dann doch noch zwei nach denen ich mich richten konnte.&lt;br /&gt;&lt;br /&gt;So war es mir zuerst m&amp;ouml;glich Images durch die Gegend zu ziehen, die vorher in die ImageView &amp;quot;gedropt&amp;quot; wurden. Diese speicherten ihren Pfad ab und wurden mit diesem Pfad auch wieder ausgelesen und konnten so auch wieder in einer anderen Applikation abgelegt werden. &lt;br /&gt;&lt;br /&gt;Nach ein wenig mehr Hirnschmalz konnte ich dann auch noch das ganze so implementieren, dass wenn man ein Image programmiertechnisch an die ImageView &amp;uuml;bergibt, dieses wenigstens schon mal von anderen ImageViews erkannt wird. Leider kann man es nicht mehr in anderen Applikationen ablegen, oder gar auf dem Desktop.&lt;br /&gt;&lt;br /&gt;Vielleicht sollte ich einfach generell nur mit Pfaden laden lassen. Was aber dann hie&amp;szlig;e, dass man seine Images&lt;br /&gt;irgendwo zwischen speichern m&amp;uuml;sste, wenn sie zur Laufzeit generiert wurden oder Teile einer Pixmap sind.&lt;br /&gt;&lt;br /&gt;&amp;Uuml;brigens wird w&amp;auml;hrend des Ziehens auch noch ein nettes transparentes Thumbnail angezeigt, was in seiner Grundeinstellung auf eine Breite von 300 Pixel proportional skaliert wird und einen Alphawert von 0.8 hat. Kann man selbst redend einstellen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ein nettes neues Custom-Gadget  namens TCocoaExtMatrix gibts &amp;uuml;brigens auch noch. Ich habe mir erlaubt eine Tabelle zu programmieren, auf die man andere Gadgets legen kann. Soll dem einfachen Positionieren und resizen von Gadgets dienen. Sehr praktisch w&amp;auml;re das z.B. bei meinem ChaosKnuffel gewesen. Da h&amp;auml;tte ich all die kleinen Buttons drauf schmei&amp;szlig;en k&amp;ouml;nnen.&lt;br /&gt;&lt;br /&gt;Das Ding hat aber auch einen Nachteil. Da BRL die Gr&amp;ouml;&amp;szlig;e von Gadgets als Integer speichert, ist die Berechnung der Zellengr&amp;ouml;&amp;szlig;en nicht sehr genau.  Legt man, so wie ich, einen Haufen farbiger Panels drauf und setzt deren Layout auf 1,1,1,1 werden sie zwar sch&amp;ouml;n skaliert, wenn man das Fenster vergr&amp;ouml;&amp;szlig;ert, aber man sieht auch den Hintergrund bei manchen Gr&amp;ouml;&amp;szlig;en. So quasi als Raster. :&amp;gt;&lt;br /&gt;&lt;br /&gt;Nun ja, kann eben nicht alles klappen.&lt;br /&gt;&lt;br /&gt;Bis zum n&amp;auml;chsten mal!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Sat, 21 Nov 2009 19:53:20 +0100</pubDate>
		</item>

		<item>
			<title>BugFixes und Neues</title>
			<link>https://www.blitzforum.de/worklogs/253/#1956</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1956</guid>
			<author>d-bug</author>
			<description>So, nachdem ich YellowRider nun das erste mal die neue Version von CocoaExt komplett gegeben habe, kamen auch gleich zig Bugs auf. So weit es in meiner Macht lag, hab ich diese auch gefixt.&lt;br /&gt;&lt;br /&gt;Einzig verblieben ist momentan eine recht mysteri&amp;ouml;se Gr&amp;ouml;&amp;szlig;en&amp;auml;nderung in der TabView, die ausschlie&amp;szlig;lich beim ersten Tab auftritt. Das aber auch nur, wenn sie die TabView auf einer SplitView befindet und den NSTabViewNoTabs flag gesetzt hat. Sehr sehr mysteri&amp;ouml;s *grusel*. Da wei&amp;szlig; ich im Moment einfach nicht, was die Ursache sein k&amp;ouml;nnte. Alle m&amp;ouml;glichen Versuche hab ich schon gestartet. Nat&amp;uuml;rlich ohne Erfolg. Ich lass das jetzt einfach mal so, vielleicht hab ich ja mal eine Eingebung.&lt;br /&gt;&lt;br /&gt;Tja, neues ist nicht all zu viel hinzu gekommen. Ein paar Methoden, die das Handling einiger Gadgets vereinfachen soll, f&amp;uuml;r die sich aber eine extra Funktion nicht lohnt, weil der 08/15 Anwender von MaxGUI sie wohl nie ben&amp;ouml;tigen wird. (Bitte nicht krumm nehmen)&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem gibts jetzt auch noch das letzte mir verbliebene &amp;quot;standard&amp;quot; Gadget zu bestaunen. Die ImageView! Die ist nichts anderes als ein Gadget das ein Bild anzeigen kann. Man kann der View verschiedene Rahmentypen zuweisen und per Drag&amp;amp;Drop auch Bilder drauf ziehen. Letzteres l&amp;ouml;st einen Event aus, der als EventExtra den kompletten Pfad zum Image beinhaltet. W&amp;auml;re noch sch&amp;ouml;n, wenn man auch Images aus der View ziehen k&amp;ouml;nnte, so wie beim ColorWell, aber da hab ich noch nichts zu gefunden. Noch ein Vorteil gegen&amp;uuml;ber eines Panels: Per NSImageViewAnimate flag kann man sich animierte Images auf der View anzeigen lassen. Die Abspielgeschwindigkeit und dergleichen werden direkt aus dem Image gelesen.&lt;br /&gt;&lt;br /&gt;Zur ImageView gibts ein Bild! Nicht weil es schrecklich spektakul&amp;auml;r ist, sondern weil die K&amp;uuml;he total geil sind! :&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/imageview_preview.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;(oben sieht man auch den Event, der ausgel&amp;ouml;st wurde als ich das Bild namens moo.jpg auf die View zog.)&lt;br /&gt;&lt;br /&gt;so, gr&amp;uuml;&amp;szlig;t eure besseren H&amp;auml;lften (soweit vorhanden) und bis zum n&amp;auml;chsten mal!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Tue, 17 Nov 2009 19:16:50 +0100</pubDate>
		</item>

		<item>
			<title>Das Ende naht! (zumindest das der Tabbar)</title>
			<link>https://www.blitzforum.de/worklogs/253/#1934</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1934</guid>
			<author>d-bug</author>
			<description>Hall&amp;ouml;le,&lt;br /&gt;&lt;br /&gt;wo ich es jetzt endlich schaffte die Sortierung der Tabs ans laufen zu bekommen und auch so andere Klinigkeiten &amp;uuml;berarbeitete, muss ich gestehen, dass ich nicht damit gerechnet hatte, dass dieses Gadget so ein Monster werden w&amp;uuml;rde.&lt;br /&gt;&lt;br /&gt;Die Sortierung als solches kostete mich etwas Gehirnschmalz. Ich hatte sie bereits am laufen, als ich feststellte, dass Safari das ganz anders handhabt. Manchmal sollte man eben doch mal genauer hinschauen. Das automatische k&amp;uuml;rzen der Items z.B. klang irgendwie einfacher als es war. Auch recht ungl&amp;uuml;cklich hat mich das k&amp;uuml;rzen der Labels auf dem Tab gemacht. Stundenlang hab ich versucht mir eine L&amp;ouml;sung daf&amp;uuml;r auszudenken, dass die Labels nur gek&amp;uuml;rzt und mit &amp;quot;...&amp;quot; versehen wurden, wenn man einen neuen Tab erstellte, nicht aber, wenn man das Fenster vergr&amp;ouml;&amp;szlig;erte oder verkleinerte. Dann viel mir pl&amp;ouml;tzlich auf, dass ich als Berechnungsgrundlage der Labell&amp;auml;nge den bereits vorher gek&amp;uuml;rzten Texts genommen hatte und nicht den urspr&amp;uuml;nglichen Text. Kleiner Fehler gro&amp;szlig;e Ursache.&lt;br /&gt;&lt;br /&gt;Auf Wunsch von ozzi (siehe Kommentare) hab ich dann auch noch Icons eingebaut. YellowRider wollte gerne die Unterst&amp;uuml;tzung f&amp;uuml;r verschiedene Themes. Die hab ich auch eingebaut. Au&amp;szlig;erdem gibts eine 24x24 gro&amp;szlig;e View, in der man ein Gadget seiner Wahl platzieren kann. Die muss allerdings auch noch sichtbar geschaltet werden. Auf dem Screen ist das auf dem Tab mit dem ProgressIndicator zu sehen. Das Zahnr&amp;auml;dchen ist btw. das Icon!&lt;br /&gt;&lt;br /&gt;Am meisten Probleme hat es mir wohl bereitet, die TabView mit der Tabbar zu synchronisieren. Bis ich mal rausbekommen hatte, dass die TabView ihre Items neu sortiert, wenn man eines entfernt, h&amp;auml;tte ich fast meinen kostbaren iMac vor Wut gegen die Wand getreten. Ist aber auch nirgends wirklich dokumentiert. Ich hatte mich nur immer &amp;uuml;ber die tollen, unvorhersehbaren Abst&amp;uuml;rze gewundert, die die TabView verursachte, wenn man in der Tabbar einen Tab geschlossen hatte.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/tabbar_preview2.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;Zu sehen ist hier eine geskinnte Version der Tabbar. Das Standard-Theme ist immer noch dass des Safaris.&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;</description>
			<pubDate>Sat, 07 Nov 2009 21:37:01 +0100</pubDate>
		</item>

		<item>
			<title>von CustomGadgets und Gepfusche</title>
			<link>https://www.blitzforum.de/worklogs/253/#1916</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1916</guid>
			<author>d-bug</author>
			<description>Hallo Welt,&lt;br /&gt;&lt;br /&gt;nachdem ich nun einen Gro&amp;szlig;teil der standard Gadgets wieder hergestellt habe, dachte ich mir, ich versuch mich mal an einer Art ProxyGadget. Da ich die Safari-Tabs ziemlich knorke finde, hab ich also angefangen genau jene mal nachzubauen. Selbst Apple hat diese Tabs nur hingepfuscht. Die Leiste hat eigentlich rein garnichts mit der eigentlichen NSTabView am Hut. Diese kann n&amp;auml;mlich keine verschiedenen Styles oder gar einen Schlie&amp;szlig;en-Button auf den Controls darstellen. Schaut man sich mal die Resources im Safari-Paket an, kommt man schnell dahinter, dass diese Tabs nur aus einzelnen Images und ein paar Buttons bestehen.&lt;br /&gt;&lt;br /&gt;Viel gerede um den hei&amp;szlig;en Brei. Am besten zeig ich euch mal ein Image, wie weit ich bereits damit bin:&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/tabbar_preview.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Was bereits funktioniert:&lt;/b&gt;&lt;br /&gt;Man kann bereits Tabs hinzuf&amp;uuml;gen (&amp;quot;+&amp;quot; rechts in der Leiste) und Tabs schlie&amp;szlig;en (&amp;quot;X&amp;quot; auf den Tabs). Au&amp;szlig;erdem kann man dies auch programmiertechnisch machen.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Was ich noch implementieren MUSS:&lt;/b&gt;&lt;br /&gt;Auf jeden Fall die eigentliche TabView! Im Moment geht es nur um die eigentliche Leiste mit den Tabs. Au&amp;szlig;erdem muss ich noch auf inactive Fenster reagieren, denn es sieht recht dumm aus, wenn die Fenster gedimmt werden, die Tabbar aber so bleibt. Au&amp;szlig;erdem wird der Schlie&amp;szlig;en-Button nicht ordnungsgem&amp;auml;&amp;szlig; angezeigt, wenn man ein Tab geschlossen hat und das n&amp;auml;chste unter die Maus h&amp;uuml;pft.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Was ich noch implementieren M&amp;Ouml;CHTE:&lt;/b&gt;&lt;br /&gt;Verschieben der Tabs innerhalb der Leiste! Eine AccessoryView, auf der man eigene Gadgets in die Tabs packen kann, wie z.B. einen ProgressIndicator oder dergleichen...&lt;br /&gt;&lt;br /&gt;Das ganze ist mir blankem BlitzMax-Code entstanden und nat&amp;uuml;rlich unter Verwendung von CocoaExt. Bei letzterem musste ich allerdings den Buttons noch einen Flag verpassen, der ihnen das zeichnen des Hintergrundes untersagt.&lt;br /&gt;&lt;br /&gt;Das ganze sieht, im Moment noch, ohne Toolbar ziemlich unfein aus. Dazu muss ich dem Fenster erst mal beibringen k&amp;ouml;nnen, auf die unterste schwarze Kante der Titlebar nicht zu zeichnen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Achso, die eigentliche NSTabView (die mit CreateTabber bei MaxGUI erstellt wird) kann jetzt die Controls oben, unten, links oder rechts haben. Au&amp;szlig;erdem kann man ihr gar keine Controls zuweisen (das brauche ich f&amp;uuml;r z.B. die Tabbar). Davon hab ich keinen Screen parat, aber ihr k&amp;ouml;nnts mir auch so glauben. &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Bis dahin!</description>
			<pubDate>Sun, 01 Nov 2009 00:06:05 +0100</pubDate>
		</item>

		<item>
			<title>ScrollView und Placards</title>
			<link>https://www.blitzforum.de/worklogs/253/#1897</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1897</guid>
			<author>d-bug</author>
			<description>Hall&amp;ouml;le!&lt;br /&gt;&lt;br /&gt;Erst einmal zu der sicherlich aufkommenden Frage: &amp;quot;Was sind Placards?&amp;quot;&lt;br /&gt;Placards sind eigentlich nichts anderes als Buttons, die bei einer ScrollView links oder rechts neben dem horizontalen Scroller, oder &amp;uuml;ber und unter dem vertikalen Scroller liegen. Dazu wird der jeweilige Scroller gek&amp;uuml;rzt um gen&amp;uuml;gend Raum f&amp;uuml;r die Buttons zu schaffen. Warum die nun Placards hei&amp;szlig;en, kann ich euch auch nicht sagen, aber ich hab den Namen trotzdem mal aus der Apple Interface Guideline &amp;uuml;bernommen. &lt;br /&gt;&lt;br /&gt;Im Moment hab ich es leider erst fertig gebracht, dem horizontalen Scroller solche Placards aufzuzwingen, was schon hart genug war, da es daf&amp;uuml;r eigentlich keine Unterst&amp;uuml;tzung seitens Cocoa gibt. Die Dinger m&amp;uuml;ssen also m&amp;uuml;hsam von Hand gecodet werden. M&amp;uuml;hsam vor allem, weil man daf&amp;uuml;r NSScrollView subclassen muss um ihr mit der Methode &amp;quot;tile&amp;quot; feins&amp;auml;uberlich zu erkl&amp;auml;ren, dass sie gef&amp;auml;lligst den Scroller gek&amp;uuml;rzt zeichnen soll. Das nervte unglaublich und steht mir noch f&amp;uuml;r die vertikalen Scroller bevor.&lt;br /&gt;&lt;br /&gt;Es ist au&amp;szlig;erdem nur m&amp;ouml;glich die Placards entweder links oder rechts vom Scroller zu haben, aber keinesfalls auf beiden Seiten.&lt;br /&gt;&lt;br /&gt;Um das ganze so einfach wie M&amp;ouml;glich zu gestalten setze ich als Placard eine NSView, die dann wiederum mit Buttons oder dergleichen best&amp;uuml;ckt werden kann. Man muss sich allerdings dar&amp;uuml;ber im klaren sein, dass man erstens: Vorher schon wissen muss wie gro&amp;szlig; der Raum sein soll - und zweitens: Das wenn man ein ChildGadget des Placards mit FreeGadget l&amp;ouml;scht, dort ein wei&amp;szlig;er Raum &amp;uuml;brig bleibt!&lt;br /&gt;&lt;br /&gt;So, noch ein wenig lausig formatierten Code: (ich hasse es alle Tabs rausnehmen zu m&amp;uuml;ssen)&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]SuperStrict&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' import CocoaExtension framework&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Framework chaos.cocoaext&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' callbacks&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Function CallBack_EndApplication (Event:TEvent)&lt;br /&gt;	End&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Function CallBack_OnAction (Event:TEvent)&lt;br /&gt;	Print Event.toString ()&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' set application event callbacks&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;CocoaRegisterEventCallback (NSApp, EVENT_APPTERMINATE, CallBack_EndApplication)&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' create a window&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Global MyWindow:TGadget = CocoaCreateWindow (AppTitle, NSCenter,200, 400, 200,, NSWindowDocument, NSWindowHasTitlebar | NSWindowIsResizable, 32)&lt;br /&gt;CocoaRegisterEventCallback (MyWindow, EVENT_WINDOWCLOSE, CallBack_EndApplication)&lt;br /&gt;SetMinWindowSize (MyWindow, 200, 20)&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' create a scrollview without autohiding scrollers&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Global MyScrollview:TGadget = CocoaCreateScrollView (10,10,380,180, MyWindow, NSBezelBorder)&lt;br /&gt;CocoaRegisterEventCallback (MyScrollView, EVENT_GADGETACTION, CallBack_OnAction)&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' add a pixmap-panel as documentview to the scrollview (has to be simplified)&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Global DocumentView:TGadget = CocoaCreateView (704,320)&lt;br /&gt;Global Panel:TGadget =	CreatePanel (0,0,704,320,DocumentView)&lt;br /&gt;SetPanelPixmap (Panel, LoadPixmapPNG (AppDir+&amp;quot;/data/tileset.png&amp;quot;), PANELPIXMAP_TILE)									&lt;br /&gt;CocoaScrollViewSetDocumentView (MyScrollView, DocumentView)&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' create tilesize-unit for 32x32 sized tiles&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Global Tiles32:String = CocoaCreateRulerUnit (&amp;quot;Tiles32&amp;quot;, &amp;quot;t32&amp;quot;, 32.0, 2.0, 0.1)&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' add rulers to the scrollview and set their units to Tiles32&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Global hRuler:TGadget = CocoaCreateRuler (MyScrollView, NSHorizontal)&lt;br /&gt;CocoaSetMeasurmentUnits (hRuler, Tiles32)&lt;br /&gt;Global vRuler:TGadget = CocoaCreateRuler (MyScrollView, NSVertical)&lt;br /&gt;CocoaSetMeasurmentUnits (vRuler, Tiles32)&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' add horizontal placard with buttons on it&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Global hPlacard:TGadget = CocoaCreateScrollViewHorizontalPlacard (MyScrollView, 120, NSLeft)&lt;br /&gt;&lt;br /&gt;Global MyButton:TGadget = CocoaCreateButton (&amp;quot;Button&amp;quot;, -1, 0, 52, 18, hPlacard, NSSmallSquareBezelStyle,,NSSmallFont) &lt;br /&gt;CocoaRegisterEventCallback (MyButton, EVENT_GADGETACTION, CallBack_OnAction)&lt;br /&gt;&lt;br /&gt;Global MyPullDown:TGadget = CocoaCreatePullDownButton (&amp;quot;Pulldown&amp;quot;, 50, 0, 72, 18, hPlacard, NSSmallSquareBezelStyle,,NSSmallFont)&lt;br /&gt;For Local i:Int = 1 To 10&lt;br /&gt;	CocoaCreateMenu (&amp;quot;Item &amp;quot;+i, MyPullDown)&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;' Mainloop&lt;br /&gt;'-----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Repeat&lt;br /&gt;	WaitEvent ()&lt;br /&gt;Forever[/syntax]&lt;br /&gt;... das ist der ganze code f&amp;uuml;r die Erstellung des Fensters, dass auf folgendem Screen zu sehen ist:&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/scrollview_placards.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Sat, 24 Oct 2009 16:28:05 +0200</pubDate>
		</item>

		<item>
			<title>ScrollView, RulerView und spezielle Einheiten</title>
			<link>https://www.blitzforum.de/worklogs/253/#1885</link>
			<guid>https://www.blitzforum.de/worklogs/253/#1885</guid>
			<author>d-bug</author>
			<description>Guten Abend!&lt;br /&gt;&lt;br /&gt;Da ich gestern Abend noch anfing die ScrollView wieder zu implementieren, dachte ich mir, ich mach es gleich mal richtig und verpasse dem Lineal (RulerView) mal die M&amp;ouml;glichkeit eigene Einheiten zu verpassen. Erst dachte ich das sei Hexenwerk und wollte schon einen Scheiterhaufen errichten, aber dann war es pl&amp;ouml;tzlich doch recht einfach.&lt;br /&gt;&lt;br /&gt;Zu Testzwecken habe ich dann mal irgendein Tileset aus dem Netz gezogen, es auf ein Panel gepackt und in der ScrollView anzeigen lassen. (Im Moment noch &amp;uuml;ber den Umweg einer NSView)&lt;br /&gt;&lt;br /&gt;Als n&amp;auml;chstes hab ich dann eine Einheit namens &amp;quot;Tiles32&amp;quot; generiert.  Das ganze wird bei CocoaExt an die ScrollView &amp;uuml;bergeben. Intern wird diese dann der NSRulerView Klasse als neue Unit (Einheit) &amp;uuml;bergeben und Systemweit installiert. Nat&amp;uuml;rlich nur, solange man nicht neu starten, hoffe ich zumindest. Leider l&amp;auml;sst sich die systemweite Installation nicht vermeiden.&lt;br /&gt;&lt;br /&gt;Der Code sieht in etwa so aus:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Global Tiles32:String = CocoaCreateRulerUnit (&amp;quot;Tiles32&amp;quot;, &amp;quot;t32&amp;quot;, 32.0, 2.0, 0.1)&lt;br /&gt;Global MyScrollview:TGadget = CocoaCreateScrollView (10,10,380,180, MyWindow,NSBezelBorder, NSScrollViewHasVerticalRuler | NSScrollViewHasHorizontalRuler, Tiles32)&lt;br /&gt;Global DocumentView:TGadget = CocoaCreateView (704,320)&lt;br /&gt;Global Panel:TGadget = CreatePanel (0,0,704,320,DocumentView)&lt;br /&gt;SetPanelPixmap (Panel, LoadPixmapPNG (&amp;quot;/data/tileset.png&amp;quot;), PANELPIXMAP_TILE)									&lt;br /&gt;CocoaScrollViewSetDocumentView (MyScrollView, DocumentView)&lt;br /&gt;[/syntax]&lt;br /&gt;Wie schon gesagt noch mit Umweg &amp;uuml;ber die NSView Klasse, hier mit CocoaCreateView erstellt. Dieser Umweg f&amp;auml;llt aber zuk&amp;uuml;nftig flach, sobald ich das Panel in einen TCocoaExtGadget Ableger gepackt habe.&lt;br /&gt;&lt;br /&gt;Die ganzen Werte der Funktion CocoaCreateRulerUnit kann man &lt;a href=&quot;http://developer.apple.com/mac/library/documentation/Cocoa/Reference/ApplicationKit/Classes/NSRulerView_Class/Reference/Reference.html#//apple_ref/occ/clm/NSRulerView/registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:&quot; target=&quot;_blank&quot;&gt;hier&lt;/a&gt; nachlesen. Die Reihenfolge der &amp;Uuml;bergabevariablen entspricht der, der Tabelle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Das Ergebnis sieht dann so aus:&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://d-bug.chaos-interactive.de/data/cocoaext/scrollview_rulerunits.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;so, das war es auch schon wieder. </description>
			<pubDate>Mon, 19 Oct 2009 20:34:32 +0200</pubDate>
		</item>


	</channel>
</rss>
