Hi everyone,

I have added some widgets support to the python-etk module:
 - Dialog
 - StockEnums under etk.c_etk
 - Example on how to use FilechooserWidget and Dialog

Please find the patch in attachment!

-- 
Karel Malbroukou
Sr. Linux Admin

PowerE2E
# Add the Dialog widget
# Add class StockEnums in etk.c_etk (still need to put it in etk)
# Add example on how to use Dialog and FilechooserWidget

Index: etk/core.py
===================================================================
--- etk/core.py	(revision 36140)
+++ etk/core.py	(working copy)
@@ -190,3 +190,8 @@ class CheckButton(c_etk.CheckButton):
 class Spinner(c_etk.Spinner):
     __metaclass__ = EtkMeta
     _etk_type = "Etk_Spinner"
+
+
+class Dialog(c_etk.Dialog, c_etk.DialogEnums):
+    __metaclass__ = EtkMeta
+    _etk_type = "Etk_Dialog"
Index: etk/etk.c_etk.pyx
===================================================================
--- etk/etk.c_etk.pyx	(revision 36140)
+++ etk/etk.c_etk.pyx	(working copy)
@@ -159,3 +159,5 @@ include "core/separator.pxi"
 include "core/filechooser_widget.pxi"
 include "core/check_button.pxi"
 include "core/spinner.pxi"
+include "core/dialog.pxi"
+include "core/stock.pxi"
Index: etk/core/stock.pxi
===================================================================
--- etk/core/stock.pxi	(revision 0)
+++ etk/core/stock.pxi	(revision 0)
@@ -0,0 +1,219 @@
+class StockEnums:
+    NO_STOCK = ETK_STOCK_NO_STOCK
+    ADDRESS_BOOK_NEW = ETK_STOCK_ADDRESS_BOOK_NEW
+    APPOINTMENT_NEW = ETK_STOCK_APPOINTMENT_NEW
+    BOOKMARK_NEW = ETK_STOCK_BOOKMARK_NEW
+    CONTACT_NEW = ETK_STOCK_CONTACT_NEW
+    DIALOG_APPLY = ETK_STOCK_DIALOG_APPLY
+    DIALOG_OK = ETK_STOCK_DIALOG_OK
+    DIALOG_CANCEL = ETK_STOCK_DIALOG_CANCEL
+    DIALOG_YES = ETK_STOCK_DIALOG_YES
+    DIALOG_NO = ETK_STOCK_DIALOG_NO
+    DIALOG_CLOSE = ETK_STOCK_DIALOG_CLOSE
+    DOCUMENT_NEW = ETK_STOCK_DOCUMENT_NEW
+    DOCUMENT_OPEN = ETK_STOCK_DOCUMENT_OPEN
+    DOCUMENT_PRINT = ETK_STOCK_DOCUMENT_PRINT
+    DOCUMENT_PRINT_PREVIEW = ETK_STOCK_DOCUMENT_PRINT_PREVIEW
+    DOCUMENT_PROPERTIES = ETK_STOCK_DOCUMENT_PROPERTIES
+    DOCUMENT_SAVE_AS = ETK_STOCK_DOCUMENT_SAVE_AS
+    DOCUMENT_SAVE = ETK_STOCK_DOCUMENT_SAVE
+    EDIT_CLEAR = ETK_STOCK_EDIT_CLEAR
+    EDIT_COPY = ETK_STOCK_EDIT_COPY
+    EDIT_CUT = ETK_STOCK_EDIT_CUT
+    EDIT_FIND = ETK_STOCK_EDIT_FIND
+    EDIT_PASTE = ETK_STOCK_EDIT_PASTE
+    EDIT_REDO = ETK_STOCK_EDIT_REDO
+    EDIT_UNDO = ETK_STOCK_EDIT_UNDO
+    EDIT_DELETE = ETK_STOCK_EDIT_DELETE
+    EDIT_FIND_REPLACE = ETK_STOCK_EDIT_FIND_REPLACE
+    FOLDER_NEW = ETK_STOCK_FOLDER_NEW
+    FORMAT_INDENT_LESS = ETK_STOCK_FORMAT_INDENT_LESS
+    FORMAT_INDENT_MORE = ETK_STOCK_FORMAT_INDENT_MORE
+    FORMAT_JUSTIFY_CENTER = ETK_STOCK_FORMAT_JUSTIFY_CENTER
+    FORMAT_JUSTIFY_FILL = ETK_STOCK_FORMAT_JUSTIFY_FILL
+    FORMAT_JUSTIFY_LEFT = ETK_STOCK_FORMAT_JUSTIFY_LEFT
+    FORMAT_JUSTIFY_RIGHT = ETK_STOCK_FORMAT_JUSTIFY_RIGHT
+    FORMAT_TEXT_BOLD = ETK_STOCK_FORMAT_TEXT_BOLD
+    FORMAT_TEXT_ITALIC = ETK_STOCK_FORMAT_TEXT_ITALIC
+    FORMAT_TEXT_STRIKETHROUGH = ETK_STOCK_FORMAT_TEXT_STRIKETHROUGH
+    FORMAT_TEXT_UNDERLINE = ETK_STOCK_FORMAT_TEXT_UNDERLINE
+    GO_BOTTOM = ETK_STOCK_GO_BOTTOM
+    GO_DOWN = ETK_STOCK_GO_DOWN
+    GO_FIRST = ETK_STOCK_GO_FIRST
+    GO_HOME = ETK_STOCK_GO_HOME
+    GO_JUMP = ETK_STOCK_GO_JUMP
+    GO_LAST = ETK_STOCK_GO_LAST
+    GO_NEXT = ETK_STOCK_GO_NEXT
+    GO_PREVIOUS = ETK_STOCK_GO_PREVIOUS
+    GO_TOP = ETK_STOCK_GO_TOP
+    GO_UP = ETK_STOCK_GO_UP
+    LIST_ADD = ETK_STOCK_LIST_ADD
+    LIST_REMOVE = ETK_STOCK_LIST_REMOVE
+    MAIL_MESSAGE_NEW = ETK_STOCK_MAIL_MESSAGE_NEW
+    MAIL_FORWARD = ETK_STOCK_MAIL_FORWARD
+    MAIL_MARK_JUNK = ETK_STOCK_MAIL_MARK_JUNK
+    MAIL_REPLY_ALL = ETK_STOCK_MAIL_REPLY_ALL
+    MAIL_REPLY_SENDER = ETK_STOCK_MAIL_REPLY_SENDER
+    MAIL_SEND_RECEIVE = ETK_STOCK_MAIL_SEND_RECEIVE
+    MEDIA_EJECT = ETK_STOCK_MEDIA_EJECT
+    MEDIA_PLAYBACK_PAUSE = ETK_STOCK_MEDIA_PLAYBACK_PAUSE
+    MEDIA_PLAYBACK_START = ETK_STOCK_MEDIA_PLAYBACK_START
+    MEDIA_PLAYBACK_STOP = ETK_STOCK_MEDIA_PLAYBACK_STOP
+    MEDIA_RECORD = ETK_STOCK_MEDIA_RECORD
+    MEDIA_SEEK_BACKWARD = ETK_STOCK_MEDIA_SEEK_BACKWARD
+    MEDIA_SEEK_FORWARD = ETK_STOCK_MEDIA_SEEK_FORWARD
+    MEDIA_SKIP_BACKWARD = ETK_STOCK_MEDIA_SKIP_BACKWARD
+    MEDIA_SKIP_FORWARD = ETK_STOCK_MEDIA_SKIP_FORWARD
+    PROCESS_STOP = ETK_STOCK_PROCESS_STOP
+    SYSTEM_LOCK_SCREEN = ETK_STOCK_SYSTEM_LOCK_SCREEN
+    SYSTEM_LOG_OUT = ETK_STOCK_SYSTEM_LOG_OUT
+    SYSTEM_SEARCH = ETK_STOCK_SYSTEM_SEARCH
+    SYSTEM_SHUTDOWN = ETK_STOCK_SYSTEM_SHUTDOWN
+    TAB_NEW = ETK_STOCK_TAB_NEW
+    VIEW_REFRESH = ETK_STOCK_VIEW_REFRESH
+    WINDOW_NEW = ETK_STOCK_WINDOW_NEW
+    ACCESSORIES_CALCULATOR = ETK_STOCK_ACCESSORIES_CALCULATOR
+    ACCESSORIES_CHARACTER_MAP = ETK_STOCK_ACCESSORIES_CHARACTER_MAP
+    ACCESSORIES_TEXT_EDITOR = ETK_STOCK_ACCESSORIES_TEXT_EDITOR
+    HELP_BROWSER = ETK_STOCK_HELP_BROWSER
+    INTERNET_GROUP_CHAT = ETK_STOCK_INTERNET_GROUP_CHAT
+    INTERNET_MAIL = ETK_STOCK_INTERNET_MAIL
+    INTERNET_NEWS_READER = ETK_STOCK_INTERNET_NEWS_READER
+    INTERNET_WEB_BROWSER = ETK_STOCK_INTERNET_WEB_BROWSER
+    MULTIMEDIA_VOLUME_CONTROL = ETK_STOCK_MULTIMEDIA_VOLUME_CONTROL
+    OFFICE_CALENDAR = ETK_STOCK_OFFICE_CALENDAR
+    PREFERENCES_DESKTOP_ACCESSIBILITY = ETK_STOCK_PREFERENCES_DESKTOP_ACCESSIBILITY
+    PREFERENCES_DESKTOP_ASSISTIVE_TECHNOLOGY = ETK_STOCK_PREFERENCES_DESKTOP_ASSISTIVE_TECHNOLOGY
+    PREFERENCES_DESKTOP_FONT = ETK_STOCK_PREFERENCES_DESKTOP_FONT
+    PREFERENCES_DESKTOP_KEYBOARD_SHORTCUTS = ETK_STOCK_PREFERENCES_DESKTOP_KEYBOARD_SHORTCUTS
+    PREFERENCES_DESKTOP_LOCALE = ETK_STOCK_PREFERENCES_DESKTOP_LOCALE
+    PREFERENCES_DESKTOP_REMOTE_DESKTOP = ETK_STOCK_PREFERENCES_DESKTOP_REMOTE_DESKTOP
+    PREFERENCES_DESKTOP_SOUND = ETK_STOCK_PREFERENCES_DESKTOP_SOUND
+    PREFERENCES_DESKTOP_SCREENSAVER = ETK_STOCK_PREFERENCES_DESKTOP_SCREENSAVER
+    PREFERENCES_DESKTOP_THEME = ETK_STOCK_PREFERENCES_DESKTOP_THEME
+    PREFERENCES_DESKTOP_WALLPAPER = ETK_STOCK_PREFERENCES_DESKTOP_WALLPAPER
+    PREFERENCES_SYSTEM_NETWORK_PROXY = ETK_STOCK_PREFERENCES_SYSTEM_NETWORK_PROXY
+    PREFERENCES_SYSTEM_SESSION = ETK_STOCK_PREFERENCES_SYSTEM_SESSION
+    PREFERENCES_SYSTEM_WINDOWS = ETK_STOCK_PREFERENCES_SYSTEM_WINDOWS
+    SYSTEM_FILE_MANAGER = ETK_STOCK_SYSTEM_FILE_MANAGER
+    SYSTEM_INSTALLER = ETK_STOCK_SYSTEM_INSTALLER
+    SYSTEM_SOFTWARE_UPDATE = ETK_STOCK_SYSTEM_SOFTWARE_UPDATE
+    SYSTEM_USERS = ETK_STOCK_SYSTEM_USERS
+    UTILITIES_SYSTEM_MONITOR = ETK_STOCK_UTILITIES_SYSTEM_MONITOR
+    UTILITIES_TERMINAL = ETK_STOCK_UTILITIES_TERMINAL
+    APPLICATIONS_ACCESSORIES = ETK_STOCK_APPLICATIONS_ACCESSORIES
+    APPLICATIONS_DEVELOPMENT = ETK_STOCK_APPLICATIONS_DEVELOPMENT
+    APPLICATIONS_GAMES = ETK_STOCK_APPLICATIONS_GAMES
+    APPLICATIONS_GRAPHICS = ETK_STOCK_APPLICATIONS_GRAPHICS
+    APPLICATIONS_INTERNET = ETK_STOCK_APPLICATIONS_INTERNET
+    APPLICATIONS_MULTIMEDIA = ETK_STOCK_APPLICATIONS_MULTIMEDIA
+    APPLICATIONS_OFFICE = ETK_STOCK_APPLICATIONS_OFFICE
+    APPLICATIONS_OTHER = ETK_STOCK_APPLICATIONS_OTHER
+    APPLICATIONS_SYSTEM = ETK_STOCK_APPLICATIONS_SYSTEM
+    PREFERENCES_DESKTOP_PERIPHERALS = ETK_STOCK_PREFERENCES_DESKTOP_PERIPHERALS
+    PREFERENCES_DESKTOP = ETK_STOCK_PREFERENCES_DESKTOP
+    PREFERENCES_SYSTEM = ETK_STOCK_PREFERENCES_SYSTEM
+    AUDIO_CARD = ETK_STOCK_AUDIO_CARD
+    AUDIO_INPUT_MICROPHONE = ETK_STOCK_AUDIO_INPUT_MICROPHONE
+    BATTERY = ETK_STOCK_BATTERY
+    CAMERA_PHOTO = ETK_STOCK_CAMERA_PHOTO
+    CAMERA_VIDEO = ETK_STOCK_CAMERA_VIDEO
+    COMPUTER = ETK_STOCK_COMPUTER
+    DRIVE_CDROM = ETK_STOCK_DRIVE_CDROM
+    DRIVE_HARDDISK = ETK_STOCK_DRIVE_HARDDISK
+    DRIVE_REMOVABLE_MEDIA = ETK_STOCK_DRIVE_REMOVABLE_MEDIA
+    INPUT_GAMING = ETK_STOCK_INPUT_GAMING
+    INPUT_KEYBOARD = ETK_STOCK_INPUT_KEYBOARD
+    INPUT_MOUSE = ETK_STOCK_INPUT_MOUSE
+    MEDIA_CDROM = ETK_STOCK_MEDIA_CDROM
+    MEDIA_FLOPPY = ETK_STOCK_MEDIA_FLOPPY
+    MULTIMEDIA_PLAYER = ETK_STOCK_MULTIMEDIA_PLAYER
+    NETWORK = ETK_STOCK_NETWORK
+    NETWORK_WIRELESS = ETK_STOCK_NETWORK_WIRELESS
+    NETWORK_WIRED = ETK_STOCK_NETWORK_WIRED
+    PRINTER = ETK_STOCK_PRINTER
+    PRINTER_REMOTE = ETK_STOCK_PRINTER_REMOTE
+    VIDEO_DISPLAY = ETK_STOCK_VIDEO_DISPLAY
+    EMBLEM_FAVORITE = ETK_STOCK_EMBLEM_FAVORITE
+    EMBLEM_IMPORTANT = ETK_STOCK_EMBLEM_IMPORTANT
+    EMBLEM_PHOTOS = ETK_STOCK_EMBLEM_PHOTOS
+    EMBLEM_READONLY = ETK_STOCK_EMBLEM_READONLY
+    EMBLEM_SYMBOLIC_LINK = ETK_STOCK_EMBLEM_SYMBOLIC_LINK
+    EMBLEM_SYSTEM = ETK_STOCK_EMBLEM_SYSTEM
+    EMBLEM_UNREADABLE = ETK_STOCK_EMBLEM_UNREADABLE
+    FACE_ANGEL = ETK_STOCK_FACE_ANGEL
+    FACE_CRYING = ETK_STOCK_FACE_CRYING
+    FACE_DEVIL_GRIN = ETK_STOCK_FACE_DEVIL_GRIN
+    FACE_GLASSES = ETK_STOCK_FACE_GLASSES
+    FACE_GRIN = ETK_STOCK_FACE_GRIN
+    FACE_KISS = ETK_STOCK_FACE_KISS
+    FACE_PLAIN = ETK_STOCK_FACE_PLAIN
+    FACE_SAD = ETK_STOCK_FACE_SAD
+    FACE_SMILE_BIG = ETK_STOCK_FACE_SMILE_BIG
+    FACE_SMILE = ETK_STOCK_FACE_SMILE
+    FACE_SURPRISE = ETK_STOCK_FACE_SURPRISE
+    FACE_WINK = ETK_STOCK_FACE_WINK
+    APPLICATION_CERTIFICATE = ETK_STOCK_APPLICATION_CERTIFICATE
+    APPLICATION_X_EXECUTABLE = ETK_STOCK_APPLICATION_X_EXECUTABLE
+    AUDIO_X_GENERIC = ETK_STOCK_AUDIO_X_GENERIC
+    FONT_X_GENERIC = ETK_STOCK_FONT_X_GENERIC
+    IMAGE_X_GENERIC = ETK_STOCK_IMAGE_X_GENERIC
+    PACKAGE_X_GENERIC = ETK_STOCK_PACKAGE_X_GENERIC
+    TEXT_HTML = ETK_STOCK_TEXT_HTML
+    TEXT_X_GENERIC = ETK_STOCK_TEXT_X_GENERIC
+    TEXT_X_GENERIC_TEMPLATE = ETK_STOCK_TEXT_X_GENERIC_TEMPLATE
+    TEXT_X_SCRIPT = ETK_STOCK_TEXT_X_SCRIPT
+    VIDEO_X_GENERIC = ETK_STOCK_VIDEO_X_GENERIC
+    X_DIRECTORY_DESKTOP = ETK_STOCK_X_DIRECTORY_DESKTOP
+    X_DIRECTORY_NORMAL_DRAG_ACCEPT = ETK_STOCK_X_DIRECTORY_NORMAL_DRAG_ACCEPT
+    X_DIRECTORY_NORMAL_HOME = ETK_STOCK_X_DIRECTORY_NORMAL_HOME
+    X_DIRECTORY_NORMAL_OPEN = ETK_STOCK_X_DIRECTORY_NORMAL_OPEN
+    X_DIRECTORY_NORMAL = ETK_STOCK_X_DIRECTORY_NORMAL
+    X_DIRECTORY_NORMAL_VISITING = ETK_STOCK_X_DIRECTORY_NORMAL_VISITING
+    X_DIRECTORY_REMOTE = ETK_STOCK_X_DIRECTORY_REMOTE
+    X_DIRECTORY_REMOTE_SERVER = ETK_STOCK_X_DIRECTORY_REMOTE_SERVER
+    X_DIRECTORY_REMOTE_WORKGROUP = ETK_STOCK_X_DIRECTORY_REMOTE_WORKGROUP
+    X_DIRECTORY_TRASH_FULL = ETK_STOCK_X_DIRECTORY_TRASH_FULL
+    X_DIRECTORY_TRASH = ETK_STOCK_X_DIRECTORY_TRASH
+    X_OFFICE_ADDRESS_BOOK = ETK_STOCK_X_OFFICE_ADDRESS_BOOK
+    X_OFFICE_CALENDAR = ETK_STOCK_X_OFFICE_CALENDAR
+    X_OFFICE_DOCUMENT = ETK_STOCK_X_OFFICE_DOCUMENT
+    X_OFFICE_PRESENTATION = ETK_STOCK_X_OFFICE_PRESENTATION
+    X_OFFICE_SPREADSHEET = ETK_STOCK_X_OFFICE_SPREADSHEET
+    PLACES_FOLDER = ETK_STOCK_PLACES_FOLDER
+    PLACES_FOLDER_REMOTE = ETK_STOCK_PLACES_FOLDER_REMOTE
+    PLACES_FOLDER_SAVED_SEARCH = ETK_STOCK_PLACES_FOLDER_SAVED_SEARCH
+    PLACES_NETWORK_SERVER = ETK_STOCK_PLACES_NETWORK_SERVER
+    PLACES_NETWORK_WORKGROUP = ETK_STOCK_PLACES_NETWORK_WORKGROUP
+    PLACES_START_HERE = ETK_STOCK_PLACES_START_HERE
+    PLACES_USER_DESKTOP = ETK_STOCK_PLACES_USER_DESKTOP
+    PLACES_USER_HOME = ETK_STOCK_PLACES_USER_HOME
+    PLACES_USER_TRASH = ETK_STOCK_PLACES_USER_TRASH
+    AUDIO_VOLUME_HIGH = ETK_STOCK_AUDIO_VOLUME_HIGH
+    AUDIO_VOLUME_LOW = ETK_STOCK_AUDIO_VOLUME_LOW
+    AUDIO_VOLUME_MEDIUM = ETK_STOCK_AUDIO_VOLUME_MEDIUM
+    AUDIO_VOLUME_MUTED = ETK_STOCK_AUDIO_VOLUME_MUTED
+    BATTERY_CAUTION = ETK_STOCK_BATTERY_CAUTION
+    DIALOG_ERROR = ETK_STOCK_DIALOG_ERROR
+    DIALOG_INFORMATION = ETK_STOCK_DIALOG_INFORMATION
+    DIALOG_WARNING = ETK_STOCK_DIALOG_WARNING
+    DIALOG_QUESTION = ETK_STOCK_DIALOG_QUESTION
+    FOLDER_DRAG_ACCEPT = ETK_STOCK_FOLDER_DRAG_ACCEPT
+    FOLDER_OPEN = ETK_STOCK_FOLDER_OPEN
+    FOLDER_VISITING = ETK_STOCK_FOLDER_VISITING
+    IMAGE_LOADING = ETK_STOCK_IMAGE_LOADING
+    IMAGE_MISSING = ETK_STOCK_IMAGE_MISSING
+    MAIL_ATTACHMENT = ETK_STOCK_MAIL_ATTACHMENT
+    NETWORK_ERROR = ETK_STOCK_NETWORK_ERROR
+    NETWORK_IDLE = ETK_STOCK_NETWORK_IDLE
+    NETWORK_OFFLINE = ETK_STOCK_NETWORK_OFFLINE
+    NETWORK_ONLINE = ETK_STOCK_NETWORK_ONLINE
+    NETWORK_RECEIVE = ETK_STOCK_NETWORK_RECEIVE
+    NETWORK_TRANSMIT = ETK_STOCK_NETWORK_TRANSMIT
+    NETWORK_TRANSMIT_RECEIVE = ETK_STOCK_NETWORK_TRANSMIT_RECEIVE
+    NETWORK_WIRELESS_ENCRYPTED = ETK_STOCK_NETWORK_WIRELESS_ENCRYPTED
+    PRINTER_ERROR = ETK_STOCK_PRINTER_ERROR
+    USER_TRASH_FULL = ETK_STOCK_USER_TRASH_FULL
+    SMALL = ETK_STOCK_SMALL
+    MEDIUM = ETK_STOCK_MEDIUM
+    BIG = ETK_STOCK_BIG
Index: etk/core/dialog.pxi
===================================================================
--- etk/core/dialog.pxi	(revision 0)
+++ etk/core/dialog.pxi	(revision 0)
@@ -0,0 +1,115 @@
+cdef public class Dialog(Window) [object PyEtk_Dialog, type PyEtk_Dialog_Type]:
+    def __init__(self, **kargs):
+        if self.obj == NULL:
+            self._set_obj(<Etk_Object*>etk_dialog_new())
+        self._set_common_params(**kargs)
+
+    def action_area_alignment_get(self):
+        __ret = etk_dialog_action_area_alignment_get(<Etk_Dialog*>self.obj)
+        return (__ret)
+
+    def action_area_alignment_set(self, float align):
+        etk_dialog_action_area_alignment_set(<Etk_Dialog*>self.obj, align)
+
+    def action_area_hbox_get(self):
+        __ret = Object_from_instance(<Etk_Object*>etk_dialog_action_area_hbox_get(<Etk_Dialog*>self.obj))
+        return (__ret)
+
+    def action_area_homogeneous_get(self):
+        __ret = bool(<int> etk_dialog_action_area_homogeneous_get(<Etk_Dialog*>self.obj))
+        return (__ret)
+
+    def action_area_homogeneous_set(self, int homogeneous):
+        etk_dialog_action_area_homogeneous_set(<Etk_Dialog*>self.obj, <Etk_Bool>homogeneous)
+
+    def button_add(self, char* label, int response_id):
+        __ret = Object_from_instance(<Etk_Object*>etk_dialog_button_add(<Etk_Dialog*>self.obj, label, response_id))
+        return (__ret)
+
+    def button_add_from_stock(self, int stock_id, int response_id):
+        __ret = Object_from_instance(<Etk_Object*>etk_dialog_button_add_from_stock(<Etk_Dialog*>self.obj, stock_id, response_id))
+        return (__ret)
+
+    def button_response_id_set(self, Button button, int response_id):
+        etk_dialog_button_response_id_set(<Etk_Dialog*>self.obj, <Etk_Button*>button.obj, response_id)
+
+    def has_separator_get(self):
+        __ret = bool(<int> etk_dialog_has_separator_get(<Etk_Dialog*>self.obj))
+        return (__ret)
+
+    def has_separator_set(self, int has_separator):
+        etk_dialog_has_separator_set(<Etk_Dialog*>self.obj, <Etk_Bool>has_separator)
+
+    def main_area_vbox_get(self):
+        __ret = Object_from_instance(<Etk_Object*>etk_dialog_main_area_vbox_get(<Etk_Dialog*>self.obj))
+        return (__ret)
+
+    def pack_button_in_action_area(self, Button button, int response_id, int group, int fill_policy, int padding):
+        etk_dialog_pack_button_in_action_area(<Etk_Dialog*>self.obj, <Etk_Button*>button.obj, response_id, <Etk_Box_Group>group, <Etk_Box_Fill_Policy>fill_policy, padding)
+
+    def pack_in_main_area(self, Widget widget, int group, int fill_policy, int padding):
+        etk_dialog_pack_in_main_area(<Etk_Dialog*>self.obj, <Etk_Widget*>widget.obj, <Etk_Box_Group>group, <Etk_Box_Fill_Policy>fill_policy, padding) 
+
+    def pack_widget_in_action_area(self, Widget widget, int group, int fill_policy, int padding):
+        etk_dialog_pack_widget_in_action_area(<Etk_Dialog*>self.obj, <Etk_Widget*>widget.obj, <Etk_Box_Group>group, <Etk_Box_Fill_Policy>fill_policy, padding) 
+
+    property action_area_alignment:
+        def __get__(self):
+            return self.action_area_alignment_get()
+
+        def __set__(self, action_area_alignment):
+            self.action_area_alignment_set(action_area_alignment)
+
+    property action_area_hbox:
+        def __get__(self):
+            return self.action_area_hbox_get()
+
+    property action_area_homogeneous:
+        def __get__(self):
+            return self.action_area_homogeneous_get()
+
+        def __set__(self, action_area_homogeneous):
+            self.action_area_homogeneous_set(action_area_homogeneous)
+
+    property has_separator:
+        def __get__(self):
+            return self.has_separator_get()
+
+        def __set__(self, has_separator):
+            self.has_separator_set(has_separator)
+
+    property main_area_vbox:
+        def __get__(self):
+            return self.main_area_vbox_get()
+
+    def _set_common_params(self, action_area_alignment=None, action_area_homogeneous=None, has_separator=None, **kargs):
+        if action_area_alignment is not None:
+            self.action_area_alignment_set(action_area_alignment)
+        if action_area_homogeneous is not None:
+            self.action_area_homogeneous_set(action_area_homogeneous)
+        if has_separator is not None:
+            self.has_separator_set(has_separator)
+
+        if kargs:
+            Window._set_common_params(self, **kargs)
+
+    property RESPONSE_SIGNAL:
+        def __get__(self):
+            return ETK_DIALOG_RESPONSE_SIGNAL
+
+    def on_response(self, func, *a, **ka):
+        self.connect(self.RESPONSE_SIGNAL, func, *a, **ka)
+
+
+class DialogEnums:
+    NONE = ETK_RESPONSE_NONE
+    REJECT = ETK_RESPONSE_REJECT
+    ACCEPT = ETK_RESPONSE_ACCEPT
+    DELETE_EVENT = ETK_RESPONSE_DELETE_EVENT
+    OK = ETK_RESPONSE_OK
+    CANCEL = ETK_RESPONSE_CANCEL
+    CLOSE = ETK_RESPONSE_CLOSE
+    YES = ETK_RESPONSE_YES
+    NO = ETK_RESPONSE_NO
+    APPLY = ETK_RESPONSE_APPLY
+    HELP = ETK_RESPONSE_HELP
Index: include/etk/c_etk.pxd
===================================================================
--- include/etk/c_etk.pxd	(revision 36140)
+++ include/etk/c_etk.pxd	(working copy)
@@ -138,3 +138,4 @@ include "separator.pxd"
 include "filechooser_widget.pxd"
 include "check_button.pxd"
 include "spinner.pxd"
+include "dialog.pxd"
Index: include/etk/dialog.pxd
===================================================================
--- include/etk/dialog.pxd	(revision 0)
+++ include/etk/dialog.pxd	(revision 0)
@@ -0,0 +1,48 @@
+cdef extern from "etk_dialog.h":
+    ####################################################################
+    # Signals
+    int ETK_DIALOG_RESPONSE_SIGNAL
+
+    ####################################################################
+    # Enumerations
+    ctypedef enum Etk_Dialog_Response_ID:
+        ETK_RESPONSE_NONE
+        ETK_RESPONSE_REJECT
+        ETK_RESPONSE_ACCEPT
+        ETK_RESPONSE_DELETE_EVENT
+        ETK_RESPONSE_OK
+        ETK_RESPONSE_CANCEL
+        ETK_RESPONSE_CLOSE
+        ETK_RESPONSE_YES
+        ETK_RESPONSE_NO
+        ETK_RESPONSE_APPLY
+        ETK_RESPONSE_HELP
+
+    ####################################################################
+    # Structures
+    ctypedef struct Etk_Dialog
+
+    ####################################################################
+    # Functions
+    int etk_dialog_button_response_id_get(Etk_Button* button)
+    Etk_Type* etk_dialog_type_get()
+    Etk_Widget* etk_dialog_new()
+    float etk_dialog_action_area_alignment_get(Etk_Dialog* __self)
+    void etk_dialog_action_area_alignment_set(Etk_Dialog* __self, float align)
+    Etk_Widget* etk_dialog_action_area_hbox_get(Etk_Dialog* __self)
+    int etk_dialog_action_area_homogeneous_get(Etk_Dialog* __self)
+    void etk_dialog_action_area_homogeneous_set(Etk_Dialog* __self, int homogeneous)
+    Etk_Widget* etk_dialog_button_add(Etk_Dialog* __self, char* label, int response_id)
+    Etk_Widget* etk_dialog_button_add_from_stock(Etk_Dialog* __self, int stock_id, int response_id)
+    void etk_dialog_button_response_id_set(Etk_Dialog* __self, Etk_Button* button, int response_id)
+    int etk_dialog_has_separator_get(Etk_Dialog* __self)
+    void etk_dialog_has_separator_set(Etk_Dialog* __self, int has_separator)
+    Etk_Widget* etk_dialog_main_area_vbox_get(Etk_Dialog* __self)
+    void etk_dialog_pack_button_in_action_area(Etk_Dialog* __self, Etk_Button* button, int response_id, int group, int fill_policy, int padding)
+    void etk_dialog_pack_in_main_area(Etk_Dialog* __self, Etk_Widget* widget, int group, int fill_policy, int padding)
+    void etk_dialog_pack_widget_in_action_area(Etk_Dialog* __self, Etk_Widget* widget, int group, int fill_policy, int padding)
+
+#########################################################################
+# Objects
+cdef public class Dialog(Window) [object PyEtk_Dialog, type PyEtk_Dialog_Type]:
+    pass
Index: examples/17-filechooser_widget.py
===================================================================
--- examples/17-filechooser_widget.py	(revision 0)
+++ examples/17-filechooser_widget.py	(revision 0)
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+
+import etk
+
+# Functions called on events
+def print_selected(obj):
+	''' Prints out selected files '''
+	if filechooser.selected_files_get() is not None:
+		print "Selected Files: %s" % " ".join([file for file in filechooser.selected_files_get()])
+	else:
+		print "No file selected."
+
+# Used when check buttons toggled
+def chk_btns(obj, data):
+	''' Activate / Disactivate multiple selection 
+	and Show / Hide hidden files '''
+	if data == "multiple":
+		filechooser.select_multiple_set(obj.active_get())
+	if data == "hidden":
+		filechooser.show_hidden_set(obj.active_get())
+	if data == "save":
+		filechooser.is_save_set(obj.active_get())
+
+# File chooser
+filechooser = etk.FilechooserWidget()
+
+# Dialog
+dialog = etk.Dialog(title="FilechooserWidget Test Python-Etk") 
+
+# Check boxes
+select_multiple = etk.CheckButton (label="Select Multiple")
+show_hidden = etk.CheckButton (label="Show hidden")
+is_save = etk.CheckButton (label="Is save")
+
+# Place the elements into the dialog
+dialog.pack_in_main_area (filechooser, etk.VBox.START, etk.VBox.EXPAND_FILL, 0)
+dialog.pack_widget_in_action_area(select_multiple, etk.VBox.START, etk.VBox.NONE, 0)
+dialog.pack_widget_in_action_area(show_hidden, etk.VBox.START, etk.VBox.NONE, 0)
+dialog.pack_widget_in_action_area(is_save, etk.VBox.START, etk.VBox.NONE, 0)
+open = dialog.button_add_from_stock(etk.c_etk.StockEnums.DOCUMENT_OPEN, 1)
+close = dialog.button_add_from_stock(etk.c_etk.StockEnums.DIALOG_CLOSE, 2)
+
+# Events catchers
+select_multiple.connect("toggled", chk_btns, "multiple")
+show_hidden.connect("toggled", chk_btns, "hidden")
+is_save.connect("toggled", chk_btns, "save")
+open.connect("clicked", print_selected)
+close.connect("clicked", lambda x: etk.main_quit())
+
+dialog.on_destroyed(lambda x: etk.main_quit())
+dialog.show_all()
+
+etk.main()
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to