ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_linkמדריך להרחבת אפיפני: טאב חדש בלחיצה כפולה

published at 20/05/2007 - 10:42 · ‏פורסם mksoft · ‏tags פיתוח , מדריכים ומגזינים · שלח לחברידידותי למדפסת
פיתוח בדיון בפורום "למה אין לי תפריט כלים באפיפני?" הובע הצורך בפתיחת טאבים ע"י לחיצה כפולה. באופן אישי זה לא כל כך חסר לי, רוב הזמן אני משתמש במקלדת, ו-CTRL+T נחמד מאוד, ולפעמים המועטות שאני חפץ בעכבר התוסף של ה-gestures עושה את העבודה יפה.

מאחר שקל מאוד להרחיב את אפיפני בעזרת פייתון ומעט האקינג לא הרג אף אחד (נו, אולי המחסור בשעות שינה כן ;-) אז בואו ניצור תוסף שעושה זאת.

הרחבה של אפיפני כוללת 2 קבצים (לפחות):

  • קובץ עם סיומת ephy-extension, אשר מספק מידע על התוסף (כולל שם הקובץ להפעלת התוסף)
  • הקובץ עצמו אשר הוצהר עליו
תוכן הקובץ newtab-dblclick.ephy-extension‏:

[Epiphany Extension] Name=New tab with double click Description=Opens new tab double clicking empty space on the tab bar Authors=Meir Kriheli <meir@mksoft.co.il> URL=http://whatsup.org.il/meir/newtab_dblclick.tar.gz Version=0.1 [Loader] Type=python Module=newtab-dblclick

המדור החשוב ביותר הוא ה-Loader. שם מציינים את סוג התוסף (פייתון) ושם המודול אותו נטען (ללא סיומת ה-py במקרה שלנו).

מדור ה-Epiphany Extension מספק מידע אודות התוסף ודי מדבר בעד עצמו.

כעת נכתוב את התוסף עצמו בקובץ newtab-dblclick.py‏:

import gtk import epiphany # default url for the new tab DEFAULT_URL = 'about:blank' # new tab options for Epiphany, just to make the # code readable later on NEW_TAB_OPTS = \ epiphany.NEW_TAB_IN_EXISTING_WINDOW | \ epiphany.NEW_TAB_APPEND_LAST | \ epiphany.NEW_TAB_OPEN_PAGE def button_pressed(object, event, window): "Check if it's a double click, if so open new tab" if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS: e_shell = epiphany.ephy_shell_get_default() tab = window.get_active_tab() notebook = window.get_notebook() # Create a new tab new_tab = e_shell.new_tab( window, tab, DEFAULT_URL, NEW_TAB_OPTS ) # Give it focus notebook.set_current_page( notebook.page_num(new_tab) ) return True else: return False def attach_window(window): "Called upon loading the extension" notebook = window.get_notebook() notebook.newtab_signal_handler = notebook.connect('button-press-event', button_pressed , window) def detach_window(window): "Called upon unloading the extension" notebook = window.get_notebook() if notebook.newtab_signal_handler: notebook.disconnect(notebook.newtab_signal_handler) del notebook.newtab_signal_handler

הפונקציות החשובות ביותר הן attach_window ו-detach_window, אשר נקראות כאשר התוסף נטען או מוסר (בהתאמה). אליהן גם מועבר החלון הנוכחי של אפיפני. בפונקציית ה-attach_window אנו מתחברים לסיגנל לחיצת העכבר, דואגים שגם החלון יועבר אל הפונקציה המטפלת בו (button_pressed) ושומרים את ה-handle המתקבל. אנו משתמשים ב-handle הזה כדי לנתק את החיבור לסיגנל כאשר התוסף מוסר בפונקציית detach_window.

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

עדכון: שוחררה גרסה חדשה - 0.2 המתאימה גם לאפיפני 2.22.0 ומעלה

זוהי גרסה ראשונית ובוסרית של התוסף. הקוד תחת רישיון ה-GPL זמין להורדה. כדי להתקינו יש לפתוח את הקובץ לתיקיה ‎.gnome2/epiphany/extensions בתיקיית הבית שלכם (לעת עתה, מי שירצה לייצר deb או rpm יבורך). לא לשכוח כמובן להפעיל את התוסף.

להאקינג ושימוש ב-reflection ו-introspection של פייתון כדי להכיר את ממשקי התכנות ניתן להשתמש בתוסף python console. הרחבות מעניינות נוספות תמצאו ב-sstuhr.dk.

 

קישורים רלוונטיים

· עוד על פיתוח
· חדשות מאת mksoft


הסיפור הנקרא ביותר בנושא פיתוח:
הטבלה המחזורית של האופרטורים

מדריך להרחבת אפיפני: טאב חדש בלחיצה כפולה | כניסה / יצירת מנוי חדש | 5 תגובות
סף חסימה
  
ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן
Re: הרחבת אפיפני: טאב חדש בלחיצה כפולה (ניקוד: 1)
ע"י arielgalula ב 20/05/2007 - 10:54

(מידע על משתמש | שלח הודעה) http://
מעולה! עובד היטב, יש בעיונת אחת, אולי לא בעיונת אלא הרגל שלי משוא"ש:
לחיצה כפולה על טאב פתוח פותחת אף היא טאב חדש. כאשר בד"כ לחיצה כפולה על טאב מרעננת אותו או סוגרת אותו (אצלי לפחות).

[ השב לזאת ]

Re: הרחבת אפיפני: טאב חדש בלחיצה כפולה ע"י mksoft ב 20/05/2007 - 11:54
Re: מדריך להרחבת אפיפני: טאב חדש בלחיצה כפולה (ניקוד: 0)
ע"י פינגווין אנונימי ב 20/05/2007 - 15:16
תודה רבה מאיר, כבר זמן-מה שרציתי לנגוס בכתיבת הרחבות לאפיפני!

[ השב לזאת ]

Re: מדריך להרחבת אפיפני: טאב חדש בלחיצה כפולה (ניקוד: 0)
ע"י פינגווין אנונימי ב 21/05/2007 - 17:52
תודה רבה.

באג: לחיצה כפולה על לחצני החיצים גם פותח טאב חדש (ואני בסה"כ רציתי לחזור לטאב ההוא)

[ השב לזאת ]

Re: מדריך להרחבת אפיפני: טאב חדש בלחיצה כפולה (ניקוד: 0)
ע"י פינגווין אנונימי ב 29/03/2008 - 11:42

<img src="http://brainstorm.ubuntu.com/idea/4914/image/1/" />

[ השב לזאת ]