התקדמות תמיכת הכיווניות בLazarus

החל מיום שישי ועד אתמול (עדיין יש הרבה עבודה), התחלתי לשכתב את ה API לדו כיווניות של לזרוס בהתאם לדיון שהיה לי עם כמה ממפתחי לזרוס העיקריים.

הAPI עצמו, עכשיו מספק גמישות רבה יותר להחליט על התנהגות הדו כיווניות, ובעצם עוזר לנו ליצור מערכת חכמה וגמישה יותר, כולל האפשרות לעשות Mirroring ללא שימוש ברכיבי הדו כיווניות עצמם של ה LCL.

למרות ש GTK2 לא נתמך ב 100% עדיין, למעט GTK 1.2, הוא מכיל הרבה יותר תמיכה מכל Widget אחר בלינוקס כאשר מדובר בלזרוס, ולכן התחלתי לממש לו את החיבור לAPI החדש. אני חייב לציין כי פיתחתי חוסר אהדה ל GTK אחרי העבודה על זה.

הסיבה כמו כל דבר אחר (בצבא) מתחלק לשלושה חלקים:

  1. חוסר תיעוד משוועה, מול עודף מונחים אשר גורמים לך לבזבז זמן בניסיון להבין אותם.
  2. תוספות שנכנסו יחסית מאוחר ל GTK2, והם אלו שעושים את העובדה, בעוד שבגרסאות ישנות יותר, היתה גם אפשרות כזו, אבל היא הפכה להיות Deprecated, ולכן אי אפשר להשתמש בהם, וכמו כן אין תאימות אחורה בשל כך. ממש מעצבן.
  3. מפתחי GTK, הם אנשים ממש מעבצנים בטוחים שהשמש זורחת להם מאיזור מסויים בגוף, ומתוך למעלה מ200 איש (ברשת הIRC משל עצמם !), אפילו לא אחד היה מוכן לענות על תשובות בקשר לGTK, אפילו לא RTFM זה או אחר, פשוט ערוץ שומם.

כאשר סיימתי במקור את המימוש של GTK (הלא מלא בזמנו), פול הוסיף תמיכה כזו גם ל QT4, אבל רציתי ללמוד קצת יותר על ה API של QT4, ולכן התחלתי לחקור את הנושא. כאן בניגוד ל GTK, יש תיעוד רב, עם דוגמאות בתוך התיעוד, ממש הבדל של שמים וארץ.

למרות שבשביל להשתמש בספריות ++C בפסקל, צריך שכבת תאימות שכתובה בC (אותו הדבר הפוך, אם אני אשתמש במחלקות פסקל בספרייה משותפת, אני אהיה חייב לפתוח אותם לרמה פרוצדורלית בפסקל ואז C בשביל שתוכלו לעשות אותו הדבר גם ב ++C), אשר מפרקת את המחלקות, עדיין נראה שיש מה לעשות עם QT, לפחות בצד הגרפי שלה (אין לנו צורך בשכתוב ++C שהיא מספקת כמובן).

המימוש היה כל כך חלק וקל, וחבל שלזרוס לא יציב עדיין עם QT4 (גרסת svn ה"אחרונה") וקורס לי כל הזמן, כי לרגע שחכתי את הצרות של GTK, ובשינוי API כל כך פשוט, הגעתי לתוצר כל כך מדהים מבחינה גרפית (בייחוד שמאז שניסיתי את KDE4, גם QT4 קיבל את אותו העור). אולי יותר מאוחר היום אנסה לקחת תמונת מסך של לזרוס ב QT4.

כרגע אני צריך לשכתב את המימוש של Win32, דבר שאת האמת אין לי הרבה סבלנות אליו, למרות שגם ה WinAPI הוא די נחמד לעבודה, ומספק לי הרבה יותר גמישות מאשר QT ו GTK, מבחינת דו כיווניות של רכיבים (אך בניגוד אליהם, הוא אינו מספק לי גמישות בכלל בדו כיווניות של טקסט, כנראה שאחד בא על חשבון השני).

כרגע כאשר לזרוס לקראת גרסה 1.0, ישנה עבודה רבה לגרום לכך שכל העבודה בלזרוס תהיה ב UTF-8 ואני חושב שעם מימוש הדו כיווניות, כולנו נוכל רק להנות.

בנתיים אנחנו דוברי השפות הכתובות מימין לשמאל (קרי עברית וערבית), התחלנו לתת משקל ולכוון יותר בהתנהגות של איך המימוש של UTF-8 מגיע לידי ביטוי, ובכך נוכל רק להנות מהתתפתחויות לדעתי.

3 מחשבות על “התקדמות תמיכת הכיווניות בLazarus

  1. שלומיל

    תגיד מה שתגיד , אבל המימוש של GTK יותר חשוב מ-QT אם אתה רוצה שלזרוס באמת יתפוס.
    המימוש של GTK לא מגביל עסקים שרוצים להשתמש בכלי לפיתוח.
    QT לעומת זאת מחייב לקנות רישיון פיתוח.

    אמנם מבחינת תוכנה חופשית הכל סבבה, אבל לדעתי האישית – כדי שכלי כזה יהפך למיינסטרים צריך לדאוג גם לעסקים – אלו שכיום עדיין נותנים למתכנתי VB עבודה כי הם צריכים דברים פשוטים.

  2. פינגבק: דו כיווניות בלזרוס, עדכון « לראות שונה

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s