Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/estickies/src/bin


Modified Files:
        about.c conf.c stickies.c 


Log Message:
- shortcut info in about dialog
- copy / cut / paste (text) support
- fix note dragging
- note: copy / cut currently copies/cuts all the text in the note. this might 
be due to an etk bug that should be fixed soon.


===================================================================
RCS file: /cvs/e/e17/proto/estickies/src/bin/about.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- about.c     4 Aug 2006 04:30:40 -0000       1.1
+++ about.c     4 Aug 2006 15:05:20 -0000       1.2
@@ -11,6 +11,7 @@
    Etk_Widget *logo;
    Etk_Widget *desctext;   
    Etk_Widget *abouttext;
+   Etk_Widget *helptext;   
    
    if(win)
      {
@@ -63,9 +64,24 @@
                          "Brian 'morlenxus' Miculcy",
                          ETK_TRUE);
    etk_container_add(ETK_CONTAINER(frame), abouttext);
+   etk_box_pack_start(ETK_BOX(vbox), frame, ETK_FALSE, ETK_FALSE, 0);
+   
+   /* Help */
+   frame = etk_frame_new("Common shortcuts");
+   helptext = etk_text_view_new();
+   etk_widget_size_request_set(helptext, -1, 75);
+   etk_object_properties_set(ETK_OBJECT(helptext),
+                            "focusable", ETK_FALSE, NULL);   
+   etk_textblock_text_set(ETK_TEXT_VIEW(helptext)->textblock,
+                         "<b>control-n:</b> create a new note\n"
+                         "<b>control-q:</b> quit application\n"
+                         "<b>control-c:</b> copy selected text\n"
+                         "<b>control-x:</b> cut selected text\n"
+                         "<b>control-v:</b> paste text from clipboard\n",
+                         ETK_TRUE);
+   etk_container_add(ETK_CONTAINER(frame), helptext);
    etk_box_pack_start(ETK_BOX(vbox), frame, ETK_FALSE, ETK_FALSE, 0);   
 
-                                                                
    etk_dialog_pack_in_main_area(ETK_DIALOG(win), vbox, ETK_FALSE, ETK_FALSE,
                                0, ETK_FALSE);
    etk_dialog_button_add(ETK_DIALOG(win), "Close", ETK_RESPONSE_CLOSE);
@@ -75,5 +91,7 @@
    
etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(abouttext)->textblock_object,
                                           ETK_FALSE);
    
etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(desctext)->textblock_object,
+                                          ETK_FALSE);
+   
etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(helptext)->textblock_object,
                                           ETK_FALSE);   
 }
===================================================================
RCS file: /cvs/e/e17/proto/estickies/src/bin/conf.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- conf.c      31 Jul 2006 00:31:45 -0000      1.2
+++ conf.c      4 Aug 2006 15:05:20 -0000       1.3
@@ -187,6 +187,7 @@
    if(!ecore_file_exists(buf) || ecore_file_size(buf) == 0)
      {
        /* no saved config */
+       _e_about_show();
        _e_config_defaults_apply(ss);   
        return 0;
      }
===================================================================
RCS file: /cvs/e/e17/proto/estickies/src/bin/stickies.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- stickies.c  4 Aug 2006 04:30:40 -0000       1.5
+++ stickies.c  4 Aug 2006 15:05:20 -0000       1.6
@@ -16,6 +16,7 @@
 static void _e_sticky_focus_out_cb(Etk_Object *object, void *data);
 static void _e_sticky_sticky_cb(Etk_Object *object, const char *property_name, 
void *data);
 static void _e_sticky_delete_confirm_cb(Etk_Object *obj, int response_id, void 
*data);  
+static void _e_sticky_clipboard_text_request_cb(Etk_Object *object, void 
*event, void *data);
 
 static void
 _e_sticky_key_down_cb(Etk_Object *object, void *event, void *data)
@@ -35,7 +36,6 @@
             sn = _e_sticky_new();
             ss->stickies = evas_list_append(ss->stickies, sn);
             _e_sticky_show(sn);
-            //printf("appending stick, total = %d\n", 
evas_list_count(ss->stickies));
          }
        else if(!strcmp(ev->key, "d"))
          {
@@ -44,7 +44,35 @@
        else if(!strcmp(ev->key, "q"))
          {
             etk_main_quit();
-         }     
+         }
+       else if(!strcmp(ev->key, "c") || !strcmp(ev->key, "x"))
+         {
+            const char *text = NULL;
+            Etk_String *string = NULL;
+            Etk_Textblock_Iter *iter1;
+            Etk_Textblock_Iter *iter2;      
+            
+            iter1 = 
etk_textblock_object_cursor_get(ETK_TEXT_VIEW(s->textview)->textblock_object);
+            iter2 = 
etk_textblock_object_selection_bound_get(ETK_TEXT_VIEW(s->textview)->textblock_object);
+            
+            string = etk_textblock_range_text_get(
+                                  ETK_TEXT_VIEW(s->textview)->textblock,
+                                  iter1, iter2, ETK_FALSE);
+            
+            if(string && (text = etk_string_get(string)))
+              {                  
+                 etk_clipboard_text_set(s->textview, text, strlen(text) + 1);
+                 etk_object_destroy(ETK_OBJECT(string));
+              }
+            
+            if(!strcmp(ev->key, "x"))
+              etk_textblock_delete_range(ETK_TEXT_VIEW(s->textview)->textblock,
+                                         iter1, iter2);
+         }
+       else if(!strcmp(ev->key, "v"))
+         {
+            etk_clipboard_text_request(ETK_WIDGET(s->win));
+         }
      }
 }
 
@@ -87,11 +115,13 @@
    
    s = data;
    ev = event;
+
+   etk_window_geometry_get(ETK_WINDOW(s->win), &s->x, &s->y, NULL, NULL);
    
    if(_e_sticky_is_moving)
      {
-       _e_sticky_move(s, s->x + ev->cur.canvas.x - _e_sticky_mouse_x,
-                      s->y + ev->cur.canvas.y - _e_sticky_mouse_y);
+       _e_sticky_move(s, s->x + ev->cur.widget.x - _e_sticky_mouse_x,
+                      s->y + ev->cur.widget.y  - _e_sticky_mouse_y);
      }
 }
 
@@ -102,8 +132,12 @@
    
    s = data;
    etk_window_geometry_get(ETK_WINDOW(s->win), &s->x, &s->y, NULL, NULL);
-   
+
      {
+       /* FIXME:
+        * this bit of code forces estickies to only work on X11.
+        * we need to acquire this info through etk.
+        */
        Ecore_X_Window root;
        int x, y, w, h;
        
@@ -123,7 +157,8 @@
    E_Sticky *s;
    
    s = data;
-   etk_window_geometry_get(ETK_WINDOW(s->win), NULL, NULL, &s->w, &s->h);
+   if(!_e_sticky_is_moving)
+     etk_window_geometry_get(ETK_WINDOW(s->win), NULL, NULL, &s->w, &s->h);
 }
 
 static int
@@ -297,6 +332,7 @@
    etk_box_pack_start(ETK_BOX(hbox), s->close_button, ETK_FALSE, ETK_FALSE, 0);
 
    s->textview = etk_text_view_new();
+   etk_widget_repeat_mouse_events_set(s->textview, ETK_TRUE);
    if(s->text)
      etk_textblock_text_set(ETK_TEXT_VIEW(s->textview)->textblock, s->text,
                            ETK_TRUE);
@@ -306,7 +342,8 @@
    etk_box_pack_start(ETK_BOX(vbox), s->textview, ETK_TRUE, ETK_TRUE, 0);
    
    etk_container_add(ETK_CONTAINER(s->win), vbox);
-   etk_widget_focus(s->textview);   
+   etk_widget_focus(s->textview);
+   etk_signal_connect("clipboard_received", ETK_OBJECT(s->win), 
ETK_CALLBACK(_e_sticky_clipboard_text_request_cb), s);
 }
 
 E_Sticky *
@@ -464,6 +501,29 @@
    etk_object_destroy(obj);
 }
 
+static void _e_sticky_clipboard_text_request_cb(Etk_Object *object, void 
*event, void *data)
+{
+   Etk_Event_Selection_Request *ev;
+   Etk_Selection_Data_Text *ev_text;
+   Etk_Textblock_Iter *cursor;
+   Etk_Textblock_Iter *selection;   
+   E_Sticky *s;
+   
+   ev = event;
+   if(!(s = data) || !(ev_text = ev->data) || !(ev_text->text))
+     return;
+            
+   cursor = 
etk_textblock_object_cursor_get(ETK_TEXT_VIEW(s->textview)->textblock_object);
+   selection = 
etk_textblock_object_selection_bound_get(ETK_TEXT_VIEW(s->textview)->textblock_object);
+   
+   /* TODO:
+    * handle the case where we are pasting and there's a selection
+    */
+   
+   etk_textblock_insert(ETK_TEXT_VIEW(s->textview)->textblock, cursor,
+                       ev_text->text, strlen(ev_text->text));
+}
+
 int main(int argc, char **argv)
 {
    E_Sticky *s;
@@ -480,7 +540,7 @@
    if(ss->stickies)
      {
        Evas_List *l;
-       //printf("loading %d stickies!\n", evas_list_count(ss->stickies));
+
        for(l = ss->stickies; l; l = l->next)
          {
             _e_sticky_load_from(l->data);
@@ -490,7 +550,6 @@
      }
    else
      {
-       //printf("no stickies found\n");
        s = _e_sticky_new();
        ss->stickies = evas_list_append(ss->stickies, s);
        _e_sticky_show(s);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to