Bu sayfadaki yazılar
Sayfanın metni
Sayfa 25
Örnekteki alt-menü 8 elemanlı bir dikey menüdür. Alt kenar koordinatı hesaplanırken şu formül kullanılmıştır: Üst kenar (eleman sayısı*14) 4 1 Formülde eklenen ekstra piksel alt çizginin de hesaba katılması için gereklidir. Bu formül menülerde kullanabileceğiniz tek formüldür. Bunun dışında hemen her hesap için deneme yolunu seçmeniz gerekmektedir.
MENÜ TİPLERİ:
GEOS menüleri değişik tiplerde olabilirler. Bu tipler sadece görüntü değil, işletim açısından da farklılıklar yaratabilirler. Daha önce bahsettiğimiz yatay ve dikey menü tipleri yalnızca görüntü ve ekran düzenini ilgilendiren seçeneklerdir. Ana menünüz bir dikey menü olabilir ve bu menüyle bir yatay menüyü açabilirsiniz. Bu yatay menüden yapılacak bir seçenek ile de başka bir dikey menüyü açabilir ve bu işlemi istediğiniz kadar yapabilirsiniz. Yani işleyiş olarak yatay ve dikey menüler arasında fark yoktur. Oysa daha önce bahsetmediğimiz bir menü tipi vardır ki menülerin görüntüleri ile hiçbir ilgisi yoktur, fakat kullanıcıya büyük kolaylık sağlar. Normalde mouse'unuz (ok işareti) bir alt-menü sınırlarını aşarsa alt-menü otomatik olarak kapatılir ve kontrol ana menüye verilir. Ama eğer menü tipinizi $40 değeriyle OR'larsanız bir SINIRLANDI-RILMIŞ MENÜ tipiniz olur. Bu tür menülerde mouse menü sınırları içinde hapsedilmiştir ve menüyü kapatmanın tek yolu üst taraftan dışarı çıkmaktır. (Sınırlar sol, sağ ve alt kenar için geçerlidir.) Böylece çok uzun me-
| nülerde kullanıcı menü dışına çıkma korkusu olmadan, menü içinde istediği hızda dolaşabilir. Mesela yedi elemanlı, sınırlandırılmış bir dikey menü yaratmak isterseniz menü tipi baytınız $c7 (580 OR $40 OR $07) olmalıdır. Menü rutinleriniz oldukça becerikli olabilirler. Hatta kendi kendini değiştiren menüler bile yaratabilirsiniz. (Sakın en başta böyle bir şey denemeyin; çok zorlanırsınız.) Bu tür menüler geoWRITE programının karakter tipi menüsünde yer almaktadır. Menüden altı çizgili yazı türünü seçerseniz bu seçeneğin yanına bir yıldız (*) işareti konur. (veya tekrar seçilince silinir) Menü seçenekleri ya bir alt-menü açar ya da bir servis rutinine sıçrar demiştik. Oysa yapılabilecek bir işlem daha vardır. Bir DİNAMİK ALT-MENÜ çağırılabilir. Yani alt-menü açılmadan önce servis rutinine sıçranır ve bu rutinden çıkınca r0 tarafından gösterilen alt-menü açılır. Bir dinamik alt-menü aracılığıyla sistemin durumu kontrol edilebilir. ve altmenünün açılıp açılmayacağına ya da seçeneklerinin neler olacağına karar verilebilir. Dinamik alt-menü örneği geoPAINT programının fonts (karakter setleri) alt-mehüsünde bulunur. Bu menüden bir font seçtiğinizde bu fontun erişilebilir boyutları kontrol edilir ve açılan üçüncü menüde bu karakter boyutları gösterilir. (Yandaki Tablo)
MENÜ RUTİNLERİ:
1. DoMenli Adres: $C151 Fonksiyon: r0 tarafından gösterilen menü tablosu tarafından tanım-
25 lanan menüyü çizer ve aktive eder. Gerekli Hazırlık: a: Menü çizildikten sonra mouse'nin üzerine konacağı seçenek numarası. rü: Menü tablosunun adresi. Değiştirilen registerler: a, x, y, TÜ-r13 Açıklama: r0 register'inin gösterdiği menü tanım tablosunun tanımladığı menüyü ekrana çizer ve aktive eder. (Aynı ikonlar gibi menüler de aktive edildikten sonra tüm yük GE-OS Kernal'ına ve ana döngüye bırakılır. GEOS Kernal alt alta sıralanmış herhangi sayıda menüyle başa çıkabilir.) Aktive ettikten sonra da mouse'u kaçıncı seçeneğin üzerine yerleştireceği GEOS'a a registeri tarafın- 2. ReDoMenu Adres: $C193 Fonksiyon: Menü elemanlarından biri seçildikten sonra menüyü tekrar aktive eder. Hazırlık: YOK Değiştirilen registerler: a, x, y, rÜ-r13 Açıklama: Ana döngüdeki menü rutinleri ekranda görünen menülerin hepsinin yapısını ve tipini bilir. Eğer bir menü elemanı bir servis rutini çağırırsa GEOS bu rutine sıçrama yapar. Bu rutinin içinde programcı GE-OS'a o an kullanılan menüyü ne yapması gerektiğini belirtmelidir. ReDo- Menu kullanılarak bu menü tekrar kullanılır hale getirilir. 3. DoPreviaus Menü Adres: $C190 Fonksiyon: Bir alt-menüyü yok eder ve bir önceki menüyü tekrar aktive eder. Hazırlık: YOK Değiştirilen registerler: a, x, y, TÜ-r13
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 24
Eğer son elemandan sonra hâlâ boş yer kaldıysa bu alan son seçeneğin kutucuğuna aitmiş gibi görünür ve uygulamada bir problem yaratmaz. GEOS Menü tablosunda 7. bayt menü tipini (yatay-dikey) ve kaç elemanlı bir menü oluşturulacağını belirtir. İki işi birden yapabilmesi için menü tipi baytını (yatay — $00; dikey — $80) eleman sayısıyla OR'lar. Yani yedi elemanlı bir dikey menümüz varsa 7. baytın değeri $87 olur. Sonuçta Menü tablomuzun başı şöyle bir şey olur:
TESTMENÜ: byte 18 ; Menünün üstü byte 24 ; Menünün altı 0 ; Sol kenar “word 319 ; Sağ kenar “word $07 ; Menü tipi OR eleman sayısı MENÜ ELEMANLARININ TANIMLANMASI:
Bundan sonraki baytlarda menü elemanları her seçenek için 5 bayt kullanılacak şekilde tanımlanır. Bu baytlardan ilk ikisi seçeneğe ait olan yazının saklandığı bellek alanını gösterir. Bu alanda seçeneği yazdıktan sonra $00 baytıyla GEOS'a yazı datalarının bittiğini söyleyebilirsiniz. Üçüncü baytta bu seçeneğin başka bir alt-menü'yü mü yoksa bir servis rutinini mi çağıracağı belirlenir (altmenü — $80; servis rutini $00). Son iki baytta ise seçenek tipine göre servis rutini veya alt-menü tablosunun başlangıç adresi standart “Low-High” formatta saklanır. (1. Tablo)
1. TABLO MENÜ TEST: .byte 10 .byte 24
“word 0 Aword 255
$02 “byte $80 “word altmenü 1 Word texi2 $80 “word altmenü2
SEÇENEK TEXT DATALARININ HAZIRLANMASI:
Menü elemanlarının text datalarını hazırlamak hiç de zor değildir, ama aklınızda tutmanız gereken bir şey vardır; normal ASCII karakterleri GEOS için BÜYÜK HARFLER yerine geçer. Eğer küçük harflerle yazmak isterseniz ASCII kodlarına $20 eklemeniz gerekmektedir. Yani kodlarıyla saklanır. Yazmak istediğiniz şeyi yazdıktan sonra $00 değeriyle yazılacak textin bittiğini GEOS'a bildirirsiniz. Mesela; $41, $42, $43, $44, $00 datalarına sahip bir menü elemanı ekranda ABCD olarak görünür.
2. TABLO
ALT MENÜ
byte 24
ALT-MENÜLER
Alt-menüler bir menü seçeneği tarafından çağırılan menülere verilen addır. Aynı normal menüler gibi bir tanım tablosuna sahiptirler. Bu tanım tablosunun pointeri seçenekle birlikte asıl menü tanımlanırken GEOS'a bildirilir. Bir alt-menü tablosu da normal bir menü tablosuyla aynıdır. İlk altı baytla menünün alt, üst, sol, sağ kenarlarını belirtiriz. Sonraki baytla menü tipi ve eleman sayısı bildirilir ve daha sonra da eleman tanımları tablosu gelir. Yani toplam olarak sayısı) 4 7 baytlık bir tablo gerekir. Bir alt-menü tablosu şöyle bir şey olabilir: (2. Tablo)
şalt menü, ana menünün hemen altından başlıyor
byte 244(8*14)41 ;8 seçenek kadar yer ayarlanıyor
“word 0 word 155 $88 “word alttextl “byte $00 .Wword “word alttext2 $80 word altmenü2.2
;menü kutusunun sol kenarı ;menü kutusunun sağ kenarı ;8 elemanlı dikey menü ($80 OR $08) şyazı datası adresi ;bir servis rutini çağırılacak ;servis rutini başlangıç adresi ;yazı datası adresi şalt menü açar şalt menü tanım tablosu
altmenünün 1. seçeneği
;3 satırlık 6 seçenek daha tanımlanacak
kutusunun üstü şmenü kutusunun altı kutusunun sol kenarı şmenü kutusunun sağ kenarı ;yatay menü ($00) OR 2 eleman($02) seçeneğin yazılarının adresi ;bir alt menü açar —, şalt menü tanım tablosu adresi ;2, seçeneğin yazılarının adresi ;bir alt-menü açar şalt menü tanım tablosu adresi
1. seçenek
2. seçenek