Enlightenment CVS committal

Author  : chaos
Project : e17
Module  : proto

Dir     : e17/proto/entropy/src/dialogs


Modified Files:
        etk_properties_dialog.c 


Log Message:
* Check-in of CodeWarrior's contributed properties dialog

===================================================================
RCS file: /cvs/e/e17/proto/entropy/src/dialogs/etk_properties_dialog.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- etk_properties_dialog.c     30 Dec 2006 13:43:34 -0000      1.13
+++ etk_properties_dialog.c     30 Jun 2007 07:04:53 -0000      1.14
@@ -1,214 +1,271 @@
 #include <Etk.h>
 #include "entropy.h"
 #include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
 
-typedef struct _Entropy_Etk_Properties_Dialog Entropy_Etk_Properties_Dialog;
-struct _Entropy_Etk_Properties_Dialog {
-       Etk_Widget* window;
-       Entropy_Generic_File* file;
+typedef struct _About_Dialog About_Dialog;
+
+About_Dialog *about_dialog_new();
+
+struct _About_Dialog
+{
+   Entropy_Generic_File* file;
+       
+   /* Main window */
+   struct{
+      Etk_Widget *dialog;     /* holds everything */
+      Etk_Widget *outer_vbox; /* has two rows */
+      Etk_Widget *top_hbox;   /* has two cols */
+      Etk_Widget *top_vbox;   /* has two rows */
+   } main;
+   
+   /* General frame */
+   struct {      
+      Etk_Widget *frame;
+      Etk_Widget *table;
+      Etk_Widget *file_label;
+      Etk_Widget *file_entry;
+      Etk_Widget *size_label;
+      Etk_Widget *size_entry;
+      Etk_Widget *lastm_label;
+      Etk_Widget *lastm_entry;
+      Etk_Widget *ftype_label;
+      Etk_Widget *ftype_entry;   
+   } general;
+   
+   /* Permissions frame */
+   struct {
+      Etk_Widget *frame;
+      Etk_Widget *table;   
+      Etk_Widget *owner_label;
+      Etk_Widget *owner_entry;
+      Etk_Widget *others_read_cbox;
+      Etk_Widget *others_write_cbox;
+      Etk_Widget *owner_read_cbox;
+      Etk_Widget *owner_write_cbox;
+   } perm;
+   
+   /* Preview frame */
+   struct {
+      Etk_Widget *frame;
+      Etk_Widget *image;
+   } preview;
+   
+   /* Icon frame */
+   struct {
+      Etk_Widget *frame;
+      Etk_Widget *vbox;
+      Etk_Widget *table;
+      Etk_Widget *image;
+      Etk_Widget *thumb_radio;
+      Etk_Widget *default_radio;
+      Etk_Widget *edje_radio;
+      Etk_Widget *image_radio;      
+      Etk_Widget *use_for_all_cbox;
+   } icon;
 };
 
-Etk_Bool _etk_window_deleted_cb (Etk_Object * object, void *data) 
+Etk_Bool _etk_about_dialog_window_deleted_cb (Etk_Object * object, void *data) 
 {
-       Entropy_Etk_Properties_Dialog* dialog= data;
+       About_Dialog* dialog= data;
 
        /*Remove the file reference*/
        entropy_core_file_cache_remove_reference(dialog->file->md5);
 
-       etk_object_destroy(ETK_OBJECT(dialog->window));
+       etk_object_destroy(ETK_OBJECT(dialog->main.dialog));
        entropy_free(dialog);
 
        return ETK_TRUE;
 }
 
-void etk_properties_dialog_new(Entropy_Generic_File* file) 
+/**
+ * Creates and about dialog and returns it
+ * @return returns an about dialog
+ */
+About_Dialog *about_dialog_new()
 {
-       Entropy_Etk_Properties_Dialog* dialog;
-       Etk_Widget* notebook;
-       Etk_Widget* vbox;
-       Etk_Widget* button;
-       Etk_Widget* hbox;
-       Etk_Widget* ivbox;
-       Etk_Widget* icon;
-       Etk_Widget* label;
-       Etk_Widget* pvbox;
-       char* perms;
-       char buf[50];
-       time_t stime;
-
-       /*First up, add a reference to this file*/
-       printf("Adding reference to '%s/%s'- > %s\n", file->path, 
file->filename, file->md5);
-       entropy_core_file_cache_add_reference(file->md5);
-
-       /*Retrieve file permissions*/
-       perms = entropy_generic_file_display_permissions_parse(file);
-
-       dialog = entropy_malloc(sizeof(Entropy_Etk_Properties_Dialog));
-       dialog->file = file;
-
-       dialog->window = etk_window_new();
-       etk_window_title_set(ETK_WINDOW(dialog->window), file->filename);
-
-       etk_widget_size_request_set(dialog->window, 450, 520);
-
-
-       vbox = etk_vbox_new(ETK_TRUE,0);
-       etk_container_add(ETK_CONTAINER(dialog->window), vbox);
-
-       notebook = etk_notebook_new();
-       etk_box_append(ETK_BOX(vbox), notebook, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-       /*Main page*/
-       ivbox = etk_vbox_new(ETK_FALSE,0);      
-       etk_notebook_page_append(ETK_NOTEBOOK(notebook), "General", ivbox);
-
-       hbox = etk_hbox_new(ETK_FALSE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       if (file->thumbnail) {
-               icon = 
etk_image_new_from_file(file->thumbnail->thumbnail_filename, NULL);
-               etk_box_append(ETK_BOX(hbox), icon, ETK_BOX_START, 
ETK_BOX_NONE, 0);
-       } else {
-               icon = etk_image_new_from_file(PACKAGE_DATA_DIR 
"/icons/default.png", NULL);
-               etk_box_append(ETK_BOX(hbox), icon, ETK_BOX_START, 
ETK_BOX_NONE, 0);            
-       }
-
-       pvbox = etk_vbox_new(ETK_FALSE,0);
-       etk_box_append(ETK_BOX(hbox), pvbox , ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       label = etk_label_new(file->path);
-       etk_box_append(ETK_BOX(pvbox), label, ETK_BOX_START, ETK_BOX_NONE, 0);  
-       
-       label = etk_label_new(file->filename);
-       etk_box_append(ETK_BOX(pvbox), label, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       /*Size*/
-       hbox = etk_hbox_new(ETK_TRUE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       label = etk_label_new("Size");
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-       snprintf(buf,50,"%lld kb", file->properties.st_size / 1024);
-       label = etk_label_new(buf);
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-       
-       /*Type*/
-       hbox = etk_hbox_new(ETK_TRUE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       label = etk_label_new("File Type");
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-       label = etk_label_new(file->mime_type);
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-       
-
-       /*Accessed Time*/
-       hbox = etk_hbox_new(ETK_TRUE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-       label = etk_label_new("Accessed Time");
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-       stime = file->properties.st_atime;
-       label = etk_label_new(ctime(&stime));
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-
-       /*Modified Time*/
-       hbox = etk_hbox_new(ETK_TRUE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       label = etk_label_new("Modified Time");
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-
-       stime = file->properties.st_mtime;
-       label = etk_label_new(ctime(&stime));
-       etk_box_append(ETK_BOX(hbox), label, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-       /*------------------*/
-
-       /**/
-       
-
-       /*Permissions*/
-       ivbox = etk_vbox_new(ETK_FALSE,0);      
-       etk_notebook_page_append(ETK_NOTEBOOK(notebook), "Permissions", ivbox);
-
-       /*User*/
-       label = etk_label_new("User");
-       etk_box_append(ETK_BOX(ivbox), label, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       hbox = etk_hbox_new(ETK_FALSE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Read");
-       if (perms && perms[1] == 'r') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Write");
-       if (perms && perms[2] == 'w') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Execute");
-       if (perms && perms[3] == 'x') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       /*Group*/
-       label = etk_label_new("Group");
-       etk_box_append(ETK_BOX(ivbox), label, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       hbox = etk_hbox_new(ETK_FALSE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Read");
-       if (perms && perms[4] == 'r') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Write");
-       if (perms && perms[5] == 'w') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Execute");
-       if (perms && perms[6] == 'x') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       /*Other*/
-       label = etk_label_new("Other");
-       etk_box_append(ETK_BOX(ivbox), label, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       hbox = etk_hbox_new(ETK_FALSE,0);
-       etk_box_append(ETK_BOX(ivbox), hbox, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Read");
-       if (perms && perms[7] == 'r') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Write");
-       if (perms && perms[8] == 'w') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-       button = etk_check_button_new_with_label("Execute");
-       if (perms && perms[9] == 'x') etk_button_click(ETK_BUTTON(button));
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-       
-       /*---------------------*/
-
-       hbox = etk_hbox_new(ETK_TRUE,0);
-       etk_box_append(ETK_BOX(vbox), hbox, ETK_BOX_END, ETK_BOX_NONE, 0);
-
-       button = etk_button_new_with_label("OK");
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-       etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_window_deleted_cb), dialog);
-
-       button = etk_button_new_with_label("Apply");
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
+   About_Dialog *ad;
+   Etk_Widget *button;
+   
+   ad = calloc(1, sizeof(About_Dialog));
+   
+   /* create the main window, add the boxes */
+   ad->main.dialog = etk_dialog_new();
+   ad->main.outer_vbox = etk_vbox_new(ETK_FALSE, 0);
+   ad->main.top_hbox = etk_hbox_new(ETK_FALSE, 0);
+   ad->main.top_vbox = etk_vbox_new(ETK_FALSE, 0);
+   
+   /* position the boxes properly */
+   etk_dialog_pack_in_main_area(ETK_DIALOG(ad->main.dialog), 
+                               ad->main.outer_vbox, 
+                               ETK_BOX_START,ETK_BOX_EXPAND_FILL,0);
+   etk_box_append(ETK_BOX(ad->main.outer_vbox), ad->main.top_hbox, 
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+   etk_box_append(ETK_BOX(ad->main.top_hbox), ad->main.top_vbox,
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+   
+   /* create General frame, position its widgets internally, add it */
+   ad->general.frame = etk_frame_new("General");
+   ad->general.table = etk_table_new(2, 4, ETK_FALSE);
+   ad->general.file_label = etk_label_new("File:");
+   ad->general.file_entry = etk_entry_new();
+   ad->general.size_label = etk_label_new("Size:");
+   ad->general.size_entry = etk_entry_new();
+   ad->general.lastm_label = etk_label_new("Last Modified:");
+   ad->general.lastm_entry = etk_entry_new();
+   ad->general.ftype_label = etk_label_new("File Type:");
+   ad->general.ftype_entry = etk_entry_new();
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.file_label,
+                           0, 0, 0, 0);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.file_entry,
+                           1, 1, 0, 0);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.size_label,
+                           0, 0, 1, 1);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.size_entry,
+                           1, 1, 1, 1);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.lastm_label,
+                           0, 0, 2, 2);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.lastm_entry,
+                           1, 1, 2, 2);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.ftype_label,
+                           0, 0, 3, 3);
+   etk_table_attach_default(ETK_TABLE(ad->general.table), 
+                           ad->general.ftype_entry,
+                           1, 1, 3, 3);
+   etk_container_add(ETK_CONTAINER(ad->general.frame), ad->general.table);
+   etk_box_append(ETK_BOX(ad->main.top_vbox), ad->general.frame,
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+   
+   /* create Permissions frame, position widgets internally, add it */
+   ad->perm.frame = etk_frame_new("Permissions");
+   ad->perm.table = etk_table_new(2, 3, ETK_FALSE);
+   ad->perm.owner_label = etk_label_new("Owner:");
+   ad->perm.owner_entry = etk_entry_new();
+   ad->perm.others_read_cbox = etk_check_button_new_with_label("Other can 
read");
+   ad->perm.others_write_cbox = etk_check_button_new_with_label("Other can 
write");
+   ad->perm.owner_read_cbox = etk_check_button_new_with_label("Owner can 
read");
+   ad->perm.owner_write_cbox = etk_check_button_new_with_label("Owner can 
write");
+   etk_table_attach_default(ETK_TABLE(ad->perm.table), 
+                           ad->perm.owner_label,
+                           0, 0, 0, 0);
+   etk_table_attach_default(ETK_TABLE(ad->perm.table), 
+                           ad->perm.owner_entry,
+                           1, 1, 0, 0);
+   etk_table_attach_default(ETK_TABLE(ad->perm.table), 
+                           ad->perm.others_read_cbox,
+                           0, 0, 1, 1);
+   etk_table_attach_default(ETK_TABLE(ad->perm.table), 
+                           ad->perm.owner_read_cbox,
+                           1, 1, 1, 1);
+   etk_table_attach_default(ETK_TABLE(ad->perm.table), 
+                           ad->perm.others_write_cbox,
+                           0, 0, 2, 2);
+   etk_table_attach_default(ETK_TABLE(ad->perm.table), 
+                           ad->perm.owner_write_cbox,
+                           1, 1, 2, 2);
+   etk_container_add(ETK_CONTAINER(ad->perm.frame), ad->perm.table);
+   etk_box_append(ETK_BOX(ad->main.top_vbox), ad->perm.frame,
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+   
+   /* create Preview frame, position widgets internally, add it */
+   ad->preview.frame = etk_frame_new("Preview");
+   ad->preview.image = etk_image_new();
+   etk_container_add(ETK_CONTAINER(ad->preview.frame), ad->preview.image);
+   etk_box_append(ETK_BOX(ad->main.top_hbox), ad->preview.frame,
+                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
+   
+   /* create Icon frame, position widgets itnernally, add it */
+   ad->icon.frame = etk_frame_new("Icon");
+   ad->icon.table = etk_table_new(3, 3, ETK_FALSE);
+   ad->icon.vbox = etk_vbox_new(ETK_FALSE, 0);
+   ad->icon.image = etk_image_new();
+   ad->icon.thumb_radio = etk_radio_button_new_with_label("Thumbnail", NULL);
+   ad->icon.default_radio = 
etk_radio_button_new_with_label_from_widget("Default", 
ETK_RADIO_BUTTON(ad->icon.thumb_radio));
+   ad->icon.edje_radio = etk_radio_button_new_with_label_from_widget("Edje", 
ETK_RADIO_BUTTON(ad->icon.thumb_radio));
+   ad->icon.image_radio = etk_radio_button_new_with_label_from_widget("Image", 
ETK_RADIO_BUTTON(ad->icon.thumb_radio));
+   ad->icon.use_for_all_cbox = etk_check_button_new_with_label("Use this icon 
for files of this type");
+   etk_table_attach_default(ETK_TABLE(ad->icon.table),
+                           ad->icon.image,
+                           0, 0, 0, 2);
+   etk_table_attach_default(ETK_TABLE(ad->icon.table),
+                           ad->icon.thumb_radio,
+                           1, 1, 0, 0);
+   etk_table_attach_default(ETK_TABLE(ad->icon.table),
+                           ad->icon.default_radio,
+                           1, 1, 1, 1);
+   etk_table_attach_default(ETK_TABLE(ad->icon.table),
+                           ad->icon.image_radio,
+                           2, 2, 0, 0);
+   etk_table_attach_default(ETK_TABLE(ad->icon.table),
+                           ad->icon.edje_radio,
+                           2, 2, 1, 1);   
+   etk_container_add(ETK_CONTAINER(ad->icon.frame), ad->icon.vbox);   
+   etk_box_append(ETK_BOX(ad->icon.vbox), ad->icon.table,
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+   etk_box_append(ETK_BOX(ad->icon.vbox), ad->icon.use_for_all_cbox,
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+   etk_box_append(ETK_BOX(ad->main.outer_vbox), ad->icon.frame,
+                 ETK_BOX_START, ETK_BOX_NONE, 0);
+
+   /* add buttons */
+   etk_dialog_has_separator_set(ETK_DIALOG(ad->main.dialog), ETK_TRUE);
+   
+   button = etk_dialog_button_add(ETK_DIALOG(ad->main.dialog), "Ok", 
ETK_RESPONSE_OK);
+   etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_about_dialog_window_deleted_cb), ad);
+   etk_widget_size_request_set(button, 64, -1);
+   
+   button = etk_dialog_button_add(ETK_DIALOG(ad->main.dialog), "Apply", 
ETK_RESPONSE_APPLY);
+   etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_about_dialog_window_deleted_cb), ad);
+   etk_widget_size_request_set(button, 64, -1);   
+   
+   button = etk_dialog_button_add(ETK_DIALOG(ad->main.dialog), "Cancel", 
ETK_RESPONSE_CANCEL);
+   etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_about_dialog_window_deleted_cb), ad);
+   etk_widget_size_request_set(button, 64, -1);   
+
+   
+   etk_container_border_width_set(ETK_CONTAINER(ad->main.dialog), 10);
+   etk_window_title_set(ETK_WINDOW(ad->main.dialog), "File Properties");
+   return ad;
+}
 
-       button = etk_button_new_with_label("Cancel");
-       etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_NONE, 0);
-       etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_window_deleted_cb), dialog);
-       
+void etk_properties_dialog_new(Entropy_Generic_File* file)
+{
+   About_Dialog *ad;
+   char fullname[1024];
 
-       if (perms) entropy_free(perms);
-       etk_widget_show_all(dialog->window);
+   ad = about_dialog_new();
+   ad->file = file;
+   
+   
+   if(ad && ad->main.dialog) {
+     entropy_core_file_cache_add_reference(file->md5);
+          
+     snprintf(fullname,sizeof(fullname),"%s/%s", 
ad->file->path,ad->file->filename);
+
+     /*Setup the display*/
+     etk_entry_text_set(ETK_ENTRY(ad->general.file_entry), fullname);
+
+     if (file->thumbnail) {
+            etk_image_set_from_file(ETK_IMAGE(ad->preview.image),
+                          file->thumbnail->thumbnail_filename,
+                          NULL);
+     } else {
+            etk_image_set_from_file(ETK_IMAGE(ad->preview.image),
+                          PACKAGE_DATA_DIR "/icons/default.png",
+                          NULL);            
+     }
+     
+                    
+          
+     etk_widget_show_all(ad->main.dialog);
+   }
 }
+



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to