Is there any updated for this question?

Daniel Juyung Seo (SeoZ)

On Sat, Jan 5, 2013 at 2:47 PM, Daniel Juyung Seo <[email protected]>wrote:

> This looks good but isn't this be a theme api break?
> Elementary was already released.
> Maybe this needs to be optional?
>
> Daniel Juyung Seo (SeoZ)
>
>
> On Fri, Jan 4, 2013 at 5:50 AM, Enlightenment SVN <
> [email protected]> wrote:
>
>> Log:
>> [elm] calendar: spinners for month and year now
>>
>>   Adding a separated spinner for year.
>>
>>
>>
>> Author:       ceolin
>> Date:         2013-01-03 12:50:10 -0800 (Thu, 03 Jan 2013)
>> New Revision: 82108
>> Trac:         http://trac.enlightenment.org/e/changeset/82108
>>
>> Modified:
>>   trunk/elementary/data/themes/widgets/calendar.edc
>> trunk/elementary/src/lib/elm_calendar.c
>> trunk/elementary/src/lib/elm_calendar.h
>> trunk/elementary/src/lib/elm_widget_calendar.h
>>
>> Modified: trunk/elementary/data/themes/widgets/calendar.edc
>> ===================================================================
>> --- trunk/elementary/data/themes/widgets/calendar.edc   2013-01-03
>> 20:48:52 UTC (rev 82107)
>> +++ trunk/elementary/data/themes/widgets/calendar.edc   2013-01-03
>> 20:50:10 UTC (rev 82108)
>> @@ -1,3 +1,293 @@
>> +#define CAL_SPIN(_sufix, _relative)\
>> +      part { name: "left_bt_"#_sufix;\
>> +         mouse_events:  1;\
>> +         description { state: "default" 0.0;\
>> +            rel1 { to: #_relative;\
>> +               offset: 2 2;\
>> +            }\
>> +            rel2 { to: #_relative;\
>> +               offset: -3 -3;\
>> +            }\
>> +            align: 0.0 0.5;\
>> +            min: 24 24;\
>> +            max: 24 24;\
>> +            fixed: 1 1;\
>> +            image {\
>> +               normal: "bt_base1.png";\
>> +               border: 6 6 6 6;\
>> +            }\
>> +            fill.smooth : 0;\
>> +         }\
>> +         description { state: "clicked" 0.0;\
>> +            inherit: "default" 0.0;\
>> +            image.normal: "bt_base1.png";\
>> +            image.middle: SOLID;\
>> +         }\
>> +      }\
>> +      part { name: "left_bt_"#_sufix"_over1";\
>> +         mouse_events: 0;\
>> +         description { state: "default" 0.0;\
>> +            rel1.to: "left_bt_"#_sufix;\
>> +            rel2 { to: "left_bt_"#_sufix;\
>> +               relative: 1.0 0.5;\
>> +            }\
>> +            image {\
>> +               normal: "bt_hilight.png";\
>> +               border: 7 7 7 0;\
>> +            }\
>> +         }\
>> +      }\
>> +      part { name: "left_bt_"#_sufix"_over2";\
>> +         mouse_events: 1;\
>> +         repeat_events: 1;\
>> +         description { state: "default" 0.0;\
>> +            rel1.to: "left_bt_"#_sufix;\
>> +            rel2.to: "left_bt_"#_sufix;\
>> +            image {\
>> +               normal: "bt_shine.png";\
>> +               border: 7 7 7 7;\
>> +            }\
>> +         }\
>> +      }\
>> +      part { name: "left_bt_"#_sufix"_over3";\
>> +         mouse_events: 1;\
>> +         repeat_events: 1;\
>> +         description { state: "default" 0.0;\
>> +            color: 255 255 255 0;\
>> +            rel1.to: "left_bt_"#_sufix;\
>> +            rel2.to: "left_bt_"#_sufix;\
>> +            image {\
>> +               normal: "bt_glow.png";\
>> +               border: 12 12 12 12;\
>> +            }\
>> +            fill.smooth : 0;\
>> +         }\
>> +         description { state: "clicked" 0.0;\
>> +            inherit:  "default" 0.0;\
>> +            visible: 1;\
>> +            color: 255 255 255 255;\
>> +         }\
>> +      } \
>> +      part { name: "left_bt_"#_sufix"_icon";\
>> +         repeat_events: 1;\
>> +         description { state: "default" 0.0;\
>> +            rel1.to: "left_bt_"#_sufix;\
>> +            rel2.to: "left_bt_"#_sufix;\
>> +            align: 0.5 0.5;\
>> +            min: 16 16;\
>> +            max: 16 16;\
>> +            image.normal: "sp_bt_l.png";\
>> +         }\
>> +         description { state: "rtl" 0.0;\
>> +            inherit: "default" 0.0;\
>> +            image.normal: "sp_bt_r.png";\
>> +         }\
>> +      }\
>> +      part { name: "right_bt_"#_sufix;\
>> +         mouse_events:  1;\
>> +         description { state: "default" 0.0;\
>> +            rel1 { to: #_relative;\
>> +               offset: -27 2;\
>> +            }\
>> +            rel2 { to: #_relative;\
>> +               offset: -3 -3;\
>> +            }\
>> +            align: 1.0 0.5;\
>> +            min: 24 24;\
>> +            max: 24 24;\
>> +            fixed: 1 1;\
>> +            image {\
>> +               normal: "bt_base1.png";\
>> +               border: 5 5 4 12;\
>> +            }\
>> +            fill.smooth : 0;\
>> +         }\
>> +         description { state: "clicked" 0.0;\
>> +            inherit: "default" 0.0;\
>> +            image.normal: "bt_base1.png";\
>> +            image.middle: SOLID;\
>> +         }\
>> +      }\
>> +      part { name: "right_bt_"#_sufix"_over1";\
>> +         mouse_events: 0;\
>> +         description { state: "default" 0.0;\
>> +            rel1.to: "right_bt_"#_sufix;\
>> +            rel2 { to: "right_bt_"#_sufix;\
>> +               relative: 1.0 0.5;\
>> +            }\
>> +            image {\
>> +               normal: "bt_hilight.png";\
>> +               border: 7 7 7 0;\
>> +            }\
>> +         }\
>> +      }\
>> +      part { name: "right_bt_"#_sufix"_over2";\
>> +         mouse_events: 1;\
>> +         repeat_events: 1;\
>> +         description { state: "default" 0.0;\
>> +            rel1.to: "right_bt_"#_sufix;\
>> +            rel2.to: "right_bt_"#_sufix;\
>> +            image {\
>> +               normal: "bt_shine.png";\
>> +               border: 7 7 7 7;\
>> +            }\
>> +         }\
>> +      }\
>> +      part { name: "right_bt_"#_sufix"_over3";\
>> +         mouse_events: 1;\
>> +         repeat_events: 1;\
>> +         description { state: "default" 0.0;\
>> +            color: 255 255 255 0;\
>> +            rel1.to: "right_bt_"#_sufix;\
>> +            rel2.to: "right_bt_"#_sufix;\
>> +            image {\
>> +               normal: "bt_glow.png";\
>> +               border: 12 12 12 12;\
>> +            }\
>> +            fill.smooth : 0;\
>> +         }\
>> +         description { state: "clicked" 0.0;\
>> +            inherit:  "default" 0.0;\
>> +            visible: 1;\
>> +            color: 255 255 255 255;\
>> +         }\
>> +      }\
>> +      part { name: "right_bt_"#_sufix"_icon";\
>> +         repeat_events: 1;\
>> +         description { state: "default" 0.0;\
>> +            rel1.to: "right_bt_"#_sufix;\
>> +            rel2.to: "right_bt_"#_sufix;\
>> +            align: 0.5 0.5;\
>> +            min: 16 16;\
>> +            max: 16 16;\
>> +            image.normal: "sp_bt_r.png";\
>> +         }\
>> +         description { state: "rtl" 0.0;\
>> +            inherit: "default" 0.0;\
>> +            image.normal: "sp_bt_l.png";\
>> +         }\
>> +      }\
>> +      part { name: "text_"#_sufix;\
>> +         type: TEXT;\
>> +         mouse_events: 0;\
>> +         scale: 1;\
>> +         description { state: "default" 0.0;\
>> +            align: 0 0.5;\
>> +            fixed: 1 1;\
>> +            rel1 { relative: 1.0 0.0;\
>> +               offset: 3 2;\
>> +               to: "left_bt_"#_sufix;\
>> +               to_y: #_relative;\
>> +            }\
>> +            rel2 { relative: 0.0 1.0;\
>> +               offset: -3 -2;\
>> +               to_x: "right_bt_"#_sufix;\
>> +               to_y: #_relative;\
>> +            }\
>> +            color: 0 0 0 255;\
>> +            text {\
>> +               font: "Sans,Edje-Vera";\
>> +               size: 12;\
>> +               min: 1 1;\
>> +               align: 0.5 0.5;\
>> +            }\
>> +         }\
>> +      }\
>> +      programs {\
>> +          program { name: "dec_"#_sufix"_start";\
>> +             signal: "mouse,down,1";\
>> +             source: "left_bt_"#_sufix;\
>> +             action: SIGNAL_EMIT "elm,action,decrement,"#_sufix",start"
>> "";\
>> +         }\
>> +         program { name: "dec_"#_sufix"_stop";\
>> +            signal: "mouse,up,1";\
>> +            source: "left_bt_"#_sufix;\
>> +            action: SIGNAL_EMIT "elm,action,"#_sufix",stop" ""; \
>> +         }\
>> +         program {\
>> +            name:   "left_bt_"#_sufix"_click";\
>> +            signal: "mouse,down,1";\
>> +            source: "left_bt_"#_sufix"_over2";\
>> +            action: STATE_SET "clicked" 0.0;\
>> +            target: "left_bt_"#_sufix;\
>> +         }\
>> +         program {\
>> +            name:   "left_bt_"#_sufix"_unclick";\
>> +            signal: "mouse,up,1";\
>> +            source: "left_bt_"#_sufix"over2";\
>> +            action: STATE_SET "default" 0.0;\
>> +            target: "left_bt_"#_sufix;\
>> +         }\
>> +         program {\
>> +            name:   "left_bt_"#_sufix"_click2";\
>> +            signal: "mouse,down,1";\
>> +            source: "left_bt_"#_sufix"_over3";\
>> +            action: STATE_SET "clicked" 0.0;\
>> +            target: "left_bt_"#_sufix"_over3";\
>> +         }\
>> +         program {\
>> +            name:   "left_bt_"#_sufix"_unclick2";\
>> +            signal: "mouse,up,1";\
>> +            source: "left_bt_"#_sufix"_over3";\
>> +            action: STATE_SET "default" 0.0;\
>> +            transition: DECELERATE 0.5;\
>> +            target: "left_bt_"#_sufix"_over3";\
>> +         }\
>> +         program { name: "inc_"#_sufix"_start";\
>> +            signal: "mouse,down,1";\
>> +            source: "right_bt_"#_sufix;\
>> +            action: SIGNAL_EMIT "elm,action,increment,"#_sufix",start"
>> "";\
>> +         }\
>> +         program { name: "inc_"#_sufix"_stop";\
>> +            signal: "mouse,up,1";\
>> +            source: "right_bt_"#_sufix;\
>> +            action: SIGNAL_EMIT "elm,action,"#_sufix",stop" "";\
>> +         }\
>> +         program {\
>> +            name:   "right_bt_"#_sufix"_click";\
>> +            signal: "mouse,down,1";\
>> +            source: "right_bt_"#_sufix"_over2";\
>> +            action: STATE_SET "clicked" 0.0;\
>> +            target: "right_bt_"#_sufix;\
>> +         }\
>> +         program {\
>> +            name:   "right_bt_"#_sufix"_unclick";\
>> +            signal: "mouse,up,1";\
>> +            source: "right_bt_"#_sufix"_over2";\
>> +            action: STATE_SET "default" 0.0;\
>> +            target: "right_bt_"#_sufix;\
>> +         }\
>> +         program {\
>> +            name:   "right_bt_"#_sufix"_click2";\
>> +            signal: "mouse,down,1";\
>> +            source: "right_bt_"#_sufix"_over3";\
>> +            action: STATE_SET "clicked" 0.0;\
>> +            target: "right_bt_"#_sufix"_over3";\
>> +         }\
>> +         program {\
>> +            name:   "right_bt_"#_sufix"_unclick2";\
>> +            signal: "mouse,up,1";\
>> +            source: "right_bt_"#_sufix"_over3";\
>> +            action: STATE_SET "default" 0.0;\
>> +            transition: DECELERATE 0.5;\
>> +            target: "right_bt_"#_sufix"_over3";\
>> +         }\
>> +         program { name: "to_rtl_"#_sufix;\
>> +            signal: "edje,state,rtl";\
>> +            source: "edje";\
>> +            action: STATE_SET "rtl" 0.0;\
>> +            target: "left_bt_"#_sufix"_icon";\
>> +            target: "right_bt_"#_sufix"_icon";\
>> +         }\
>> +         program { name: "to_ltr_"#_sufix;\
>> +            signal: "edje,state,ltr";\
>> +            source: "edje";\
>> +            action: STATE_SET "default" 0.0;\
>> +            target: "left_bt_"#_sufix"_icon";\
>> +            target: "right_bt_"#_sufix"_icon";\
>> +         }\
>> +      }
>> +
>>  #define CH(_pos) \
>>     part { name: "ch_"#_pos".base"; \
>>        type: RECT; \
>> @@ -363,7 +653,7 @@
>>              align: 0.0 0.5;
>>           }
>>        }
>> -      part { name: "spinner-base";
>> +      part { name: "spinner-base1";
>>           type: RECT;
>>           mouse_events: 0;
>>           description { state: "default" 0.0;
>> @@ -372,17 +662,18 @@
>>              rel1.to: "bg";
>>              rel1.offset: 6 6;
>>              rel2.to: "bg";
>> +         rel2.relative: 0.5 1.0;
>>              rel2.offset: -7 -7;
>>              color: 255 255 255 0;
>>              align: 0.0 0.0;
>>           }
>>        }
>> -      part { name: "conf_over_spinner";
>> +      part { name: "conf_over_spinner1";
>>           mouse_events:  0;
>>           description { state: "default" 0.0;
>> -            rel1.to: "spinner-base";
>> +            rel1.to: "spinner-base1";
>>              rel1.offset: -3 -3;
>> -            rel2.to: "spinner-base";
>> +            rel2.to: "spinner-base1";
>>              rel2.offset: 2 2;
>>              image {
>>                 normal: "shelf_inset.png";
>> @@ -392,13 +683,44 @@
>>              fill.smooth : 0;
>>           }
>>        }
>> +      part { name: "spinner-base2";
>> +         type: RECT;
>> +         mouse_events: 0;
>> +         description { state: "default" 0.0;
>> +            min: 24 24;
>> +            max: 999999 24;
>> +            rel1.to_x: "spinner-base1";
>> +            rel1.to_y: "bg";
>> +            rel1.relative: 1.0 0;
>> +            rel1.offset: 6 6;
>> +            rel2.to: "bg";
>> +            rel2.offset: -7 -7;
>> +            color: 255 255 255 0;
>> +            align: 0.0 0.0;
>> +         }
>> +      }
>> +      part { name: "conf_over_spinner2";
>> +         mouse_events:  0;
>> +         description { state: "default" 0.0;
>> +            rel1.to: "spinner-base2";
>> +            rel1.offset: -2 -2;
>> +            rel2.to: "spinner-base2";
>> +            rel2.offset: 2 2;
>> +            image {
>> +               normal: "shelf_inset.png";
>> +               border: 7 7 7 7;
>> +               middle: 0;
>> +            }
>> +            fill.smooth : 0;
>> +         }
>> +      }
>>        part { name: "table-base";
>>           type: RECT;
>>           mouse_events: 0;
>>           description { state: "default" 0.0;
>>              min: 256 220;
>>              rel1.to_x: "bg";
>> -            rel1.to_y: "spinner-base";
>> +            rel1.to_y: "spinner-base1";
>>              rel1.offset: 6 6;
>>              rel1.relative: 0 1;
>>              rel2.to: "bg";
>> @@ -445,200 +767,10 @@
>>              color: 255 255 255 0;
>>           }
>>        }
>> -      part { name: "left_bt";
>> -         mouse_events:  1;
>> -         description { state: "default" 0.0;
>> -            rel1 { to: "spinner-base";
>> -               offset: 2 2;
>> -            }
>> -            rel2 { to: "spinner-base";
>> -               offset: -3 -3;
>> -            }
>> -            align: 0.0 0.5;
>> -            min: 24 24;
>> -            max: 24 24;
>> -            fixed: 1 1;
>> -            image {
>> -               normal: "bt_base1.png";
>> -               border: 6 6 6 6;
>> -            }
>> -            fill.smooth : 0;
>> -         }
>> -         description { state: "clicked" 0.0;
>> -            inherit: "default" 0.0;
>> -            image.normal: "bt_base1.png";
>> -            image.middle: SOLID;
>> -         }
>> -      }
>> -      part { name: "left_over1";
>> -         mouse_events: 0;
>> -         description { state: "default" 0.0;
>> -            rel1.to: "left_bt";
>> -            rel2 { to: "left_bt";
>> -               relative: 1.0 0.5;
>> -            }
>> -            image {
>> -               normal: "bt_hilight.png";
>> -               border: 7 7 7 0;
>> -            }
>> -         }
>> -      }
>> -      part { name: "left_over2";
>> -         mouse_events: 1;
>> -         repeat_events: 1;
>> -         description { state: "default" 0.0;
>> -            rel1.to: "left_bt";
>> -            rel2.to: "left_bt";
>> -            image {
>> -               normal: "bt_shine.png";
>> -               border: 7 7 7 7;
>> -            }
>> -         }
>> -      }
>> -      part { name: "left_over3";
>> -         mouse_events: 1;
>> -         repeat_events: 1;
>> -         description { state: "default" 0.0;
>> -            color: 255 255 255 0;
>> -            rel1.to: "left_bt";
>> -            rel2.to: "left_bt";
>> -            image {
>> -               normal: "bt_glow.png";
>> -               border: 12 12 12 12;
>> -            }
>> -            fill.smooth : 0;
>> -         }
>> -         description { state: "clicked" 0.0;
>> -            inherit:  "default" 0.0;
>> -            visible: 1;
>> -            color: 255 255 255 255;
>> -         }
>> -      }
>> -      part { name: "right_bt";
>> -         mouse_events:  1;
>> -         description { state: "default" 0.0;
>> -            rel1 { to: "spinner-base";
>> -               offset: -27 3;
>> -            }
>> -            rel2 { to: "spinner-base";
>> -               offset: -3 -3;
>> -            }
>> -            align: 1.0 0.5;
>> -            min: 24 24;
>> -            max: 24 24;
>> -            fixed: 1 1;
>> -            image {
>> -               normal: "bt_base1.png";
>> -               border: 5 5 4 12;
>> -            }
>> -            fill.smooth : 0;
>> -         }
>> -         description { state: "clicked" 0.0;
>> -            inherit: "default" 0.0;
>> -            image.normal: "bt_base1.png";
>> -            image.middle: SOLID;
>> -         }
>> -      }
>> -      part { name: "right_over1";
>> -         mouse_events: 0;
>> -         description { state: "default" 0.0;
>> -            rel1.to: "right_bt";
>> -            rel2 { to: "right_bt";
>> -               relative: 1.0 0.5;
>> -            }
>> -            image {
>> -               normal: "bt_hilight.png";
>> -               border: 7 7 7 0;
>> -            }
>> -         }
>> -      }
>> -      part { name: "right_over2";
>> -         mouse_events: 1;
>> -         repeat_events: 1;
>> -         description { state: "default" 0.0;
>> -            rel1.to: "right_bt";
>> -            rel2.to: "right_bt";
>> -            image {
>> -               normal: "bt_shine.png";
>> -               border: 7 7 7 7;
>> -            }
>> -         }
>> -      }
>> -      part { name: "right_over3";
>> -         mouse_events: 1;
>> -         repeat_events: 1;
>> -         description { state: "default" 0.0;
>> -            color: 255 255 255 0;
>> -            rel1.to: "right_bt";
>> -            rel2.to: "right_bt";
>> -            image {
>> -               normal: "bt_glow.png";
>> -               border: 12 12 12 12;
>> -            }
>> -            fill.smooth : 0;
>> -         }
>> -         description { state: "clicked" 0.0;
>> -            inherit:  "default" 0.0;
>> -            visible: 1;
>> -            color: 255 255 255 255;
>> -         }
>> -      }
>> -      part { name: "left_bt_icon";
>> -         repeat_events: 1;
>> -         description { state: "default" 0.0;
>> -            rel1.to: "left_bt";
>> -            rel2.to: "left_bt";
>> -            align: 0.5 0.5;
>> -            min: 16 16;
>> -            max: 16 16;
>> -            image.normal: "sp_bt_l.png";
>> -         }
>> -         description { state: "rtl" 0.0;
>> -            inherit: "default" 0.0;
>> -            image.normal: "sp_bt_r.png";
>> -         }
>> -      }
>> -      part { name: "right_bt_icon";
>> -         repeat_events: 1;
>> -         description { state: "default" 0.0;
>> -            rel1.to: "right_bt";
>> -            rel2.to: "right_bt";
>> -            align: 0.5 0.5;
>> -            min: 16 16;
>> -            max: 16 16;
>> -            image.normal: "sp_bt_r.png";
>> -         }
>> -         description { state: "rtl" 0.0;
>> -            inherit: "default" 0.0;
>> -            image.normal: "sp_bt_l.png";
>> -         }
>> -      }
>> -      part { name: "month_text";
>> -         type: TEXT;
>> -         mouse_events: 0;
>> -         scale: 1;
>> -         description { state: "default" 0.0;
>> -            align: 0 0.5;
>> -            fixed: 1 1;
>> -            rel1 { relative: 1.0 0.0;
>> -               offset: 3 2;
>> -               to: "left_bt";
>> -               to_y: "spinner-base";
>> -            }
>> -            rel2 { relative: 0.0 1.0;
>> -               offset: -3 -2;
>> -               to_x: "right_bt";
>> -               to_y: "spinner-base";
>> -            }
>> -            color: 0 0 0 255;
>> -            text {
>> -               font: "Sans,Edje-Vera";
>> -               size: 12;
>> -               min: 1 1;
>> -               align: 0.5 0.5;
>> -            }
>> -         }
>> -      }
>> +
>> +      CAL_SPIN(month, spinner-base1)
>> +      CAL_SPIN(year, spinner-base2)
>> +
>>        CH(0)   CH(1)   CH(2)   CH(3)   CH(4)   CH(5)   CH(6)
>>        CIT(0)  CIT(1)  CIT(2)  CIT(3)  CIT(4)  CIT(5)  CIT(6)
>>        CIT(7)  CIT(8)  CIT(9)  CIT(10) CIT(11) CIT(12) CIT(13)
>> @@ -647,100 +779,6 @@
>>        CIT(28) CIT(29) CIT(30) CIT(31) CIT(32) CIT(33) CIT(34)
>>        CIT(35) CIT(36) CIT(37) CIT(38) CIT(39) CIT(40) CIT(41)
>>     }
>> -   programs {
>> -      program { name: "dec_start";
>> -         signal: "mouse,down,1";
>> -         source: "left_bt";
>> -         action: SIGNAL_EMIT "elm,action,decrement,start" "";
>> -      }
>> -      program { name: "dec_stop";
>> -         signal: "mouse,up,1";
>> -         source: "left_bt";
>> -         action: SIGNAL_EMIT "elm,action,stop" "";
>> -      }
>> -      program { name: "inc_start";
>> -         signal: "mouse,down,1";
>> -         source: "right_bt";
>> -         action: SIGNAL_EMIT "elm,action,increment,start" "";
>> -      }
>> -      program { name: "inc_stop";
>> -         signal: "mouse,up,1";
>> -         source: "right_bt";
>> -         action: SIGNAL_EMIT "elm,action,stop" "";
>> -      }
>> -      program {
>> -         name:   "left_bt_click";
>> -         signal: "mouse,down,1";
>> -         source: "left_over2";
>> -         action: STATE_SET "clicked" 0.0;
>> -         target: "left_bt";
>> -      }
>> -      program {
>> -         name:   "left_bt_unclick";
>> -         signal: "mouse,up,1";
>> -         source: "left_over2";
>> -         action: STATE_SET "default" 0.0;
>> -         target: "left_bt";
>> -      }
>> -      program {
>> -         name:   "left_bt_click2";
>> -         signal: "mouse,down,1";
>> -         source: "left_over3";
>> -         action: STATE_SET "clicked" 0.0;
>> -         target: "left_over3";
>> -      }
>> -      program {
>> -         name:   "left_bt_unclick2";
>> -         signal: "mouse,up,1";
>> -         source: "left_over3";
>> -         action: STATE_SET "default" 0.0;
>> -         transition: DECELERATE 0.5;
>> -         target: "left_over3";
>> -      }
>> -      program {
>> -         name:   "right_bt_click";
>> -         signal: "mouse,down,1";
>> -         source: "right_over2";
>> -         action: STATE_SET "clicked" 0.0;
>> -         target: "right_bt";
>> -      }
>> -      program {
>> -         name:   "right_bt_unclick";
>> -         signal: "mouse,up,1";
>> -         source: "right_over2";
>> -         action: STATE_SET "default" 0.0;
>> -         target: "right_bt";
>> -      }
>> -      program {
>> -         name:   "right_bt_click2";
>> -         signal: "mouse,down,1";
>> -         source: "right_over3";
>> -         action: STATE_SET "clicked" 0.0;
>> -         target: "right_over3";
>> -      }
>> -      program {
>> -         name:   "right_bt_unclick2";
>> -         signal: "mouse,up,1";
>> -         source: "right_over3";
>> -         action: STATE_SET "default" 0.0;
>> -         transition: DECELERATE 0.5;
>> -         target: "right_over3";
>> -      }
>> -      program { name: "to_rtl";
>> -         signal: "edje,state,rtl";
>> -         source: "edje";
>> -         action: STATE_SET "rtl" 0.0;
>> -         target: "right_bt_icon";
>> -         target: "left_bt_icon";
>> -      }
>> -      program { name: "to_ltr";
>> -         signal: "edje,state,ltr";
>> -         source: "edje";
>> -         action: STATE_SET "default" 0.0;
>> -         target: "right_bt_icon";
>> -         target: "left_bt_icon";
>> -      }
>> -   }
>>  }
>>
>>  #undef CIT
>>
>> Modified: trunk/elementary/src/lib/elm_calendar.c
>> ===================================================================
>> --- trunk/elementary/src/lib/elm_calendar.c     2013-01-03 20:48:52 UTC
>> (rev 82107)
>> +++ trunk/elementary/src/lib/elm_calendar.c     2013-01-03 20:50:10 UTC
>> (rev 82108)
>> @@ -136,6 +136,24 @@
>>     return strdup(buf);
>>  }
>>
>> +static char *
>> +_format_month(struct tm *selected_time)
>> +{
>> +   char buf[32];
>> +
>> +   if (!strftime(buf, sizeof(buf), E_("%B"), selected_time)) return NULL;
>> +   return strdup(buf);
>> +}
>> +
>> +static char *
>> +_format_year(struct tm *selected_time)
>> +{
>> +   char buf[32];
>> +
>> +   if (!strftime(buf, sizeof(buf), E_("%Y"), selected_time)) return NULL;
>> +   return strdup(buf);
>> +}
>> +
>>  static inline void
>>  _cit_mark(Evas_Object *cal,
>>            int cit,
>> @@ -187,14 +205,21 @@
>>  {
>>     char *buf;
>>
>> -   /* Set selected month */
>> -   buf = sd->format_func(&sd->shown_time);
>> +   buf = _format_month(&sd->shown_time);
>>     if (buf)
>>       {
>> -        elm_layout_text_set(sd->obj, "month_text", buf);
>> +        elm_layout_text_set(sd->obj, "text_month", buf);
>>          free(buf);
>>       }
>> -   else elm_layout_text_set(sd->obj, "month_text", "");
>> +   else elm_layout_text_set(sd->obj, "text_month", "");
>> +
>> +   buf = _format_year(&sd->shown_time);
>> +   if (buf)
>> +     {
>> +        elm_layout_text_set(sd->obj, "text_year", buf);
>> +        free(buf);
>> +     }
>> +   else elm_layout_text_set(sd->obj, "text_year", "");
>>  }
>>
>>  static char *
>> @@ -255,28 +280,43 @@
>>     Elm_Access_Info *ai;
>>     ELM_CALENDAR_DATA_GET(obj, sd);
>>
>> -   // decrement button
>> -   sd->dec_btn_access = _elm_access_edje_object_part_object_register
>> -                            (obj, elm_layout_edje_get(obj), "left_bt");
>> -   ai = _elm_access_object_get(sd->dec_btn_access);
>> -   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar decrement
>> button"));
>> +   sd->dec_btn_month_access =
>> _elm_access_edje_object_part_object_register
>> +                            (obj, elm_layout_edje_get(obj),
>> "left_bt_month");
>> +   ai = _elm_access_object_get(sd->dec_btn_month_access);
>> +   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar decrement
>> month button"));
>>
>> -   // increment button
>> -   sd->inc_btn_access = _elm_access_edje_object_part_object_register
>> -                            (obj, elm_layout_edje_get(obj), "right_bt");
>> -   ai = _elm_access_object_get(sd->inc_btn_access);
>> -   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar increment
>> button"));
>> +   sd->dec_btn_year_access = _elm_access_edje_object_part_object_register
>> +                            (obj, elm_layout_edje_get(obj),
>> "left_bt_year");
>> +   ai = _elm_access_object_get(sd->dec_btn_year_access);
>> +   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar decrement year
>> button"));
>>
>> -   // month text
>> +   sd->inc_btn_month_access =
>> _elm_access_edje_object_part_object_register
>> +                            (obj, elm_layout_edje_get(obj),
>> "right_bt_month");
>> +   ai = _elm_access_object_get(sd->inc_btn_month_access);
>> +   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar increment
>> month button"));
>> +
>> +   sd->inc_btn_year_access = _elm_access_edje_object_part_object_register
>> +                            (obj, elm_layout_edje_get(obj),
>> "right_bt_year");
>> +   ai = _elm_access_object_get(sd->inc_btn_year_access);
>> +   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar increment year
>> button"));
>> +
>>     sd->month_access = _elm_access_edje_object_part_object_register
>> -                          (obj, elm_layout_edje_get(obj), "month_text");
>> +                          (obj, elm_layout_edje_get(obj), "text_month");
>>     ai = _elm_access_object_get(sd->month_access);
>>     _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar month"));
>>
>> +   sd->year_access = _elm_access_edje_object_part_object_register
>> +                          (obj, elm_layout_edje_get(obj), "text_year");
>> +   ai = _elm_access_object_get(sd->year_access);
>> +   _elm_access_text_set(ai, ELM_ACCESS_TYPE, E_("calendar year"));
>> +
>>     po = (Evas_Object *)edje_object_part_object_get
>> -          (elm_layout_edje_get(obj), "month_text");
>> +          (elm_layout_edje_get(obj), "text_month");
>>     evas_object_pass_events_set(po, EINA_FALSE);
>>
>> +   po = (Evas_Object *)edje_object_part_object_get
>> +          (elm_layout_edje_get(obj), "text_year");
>> +   evas_object_pass_events_set(po, EINA_FALSE);
>>  }
>>
>>  static void
>> @@ -517,7 +557,7 @@
>>  }
>>
>>  static Eina_Bool
>> -_update_month(Evas_Object *obj,
>> +_update_data(Evas_Object *obj, Eina_Bool month,
>>                int delta)
>>  {
>>     struct tm time_check;
>> @@ -527,30 +567,40 @@
>>
>>     /* check if it's a valid time. for 32 bits, year greater than 2037 is
>> not */
>>     time_check = sd->shown_time;
>> -   time_check.tm_mon += delta;
>> +   if (month)
>> +       time_check.tm_mon += delta;
>> +   else
>> +       time_check.tm_year += delta;
>>     if (mktime(&time_check) == -1)
>>       return EINA_FALSE;
>>
>> -   sd->shown_time.tm_mon += delta;
>> -   if (sd->shown_time.tm_mon < 0)
>> +   if (month)
>>       {
>> -        if (sd->shown_time.tm_year == sd->year_min)
>> -          {
>> -             sd->shown_time.tm_mon++;
>> -             return EINA_FALSE;
>> -          }
>> -        sd->shown_time.tm_mon = 11;
>> -        sd->shown_time.tm_year--;
>> +       sd->shown_time.tm_mon += delta;
>> +       if (sd->shown_time.tm_mon < 0)
>> +         {
>> +            if (sd->shown_time.tm_year == sd->year_min)
>> +              {
>> +                 sd->shown_time.tm_mon++;
>> +                 return EINA_FALSE;
>> +              }
>> +            sd->shown_time.tm_mon = 11;
>> +            sd->shown_time.tm_year--;
>> +         }
>> +       else if (sd->shown_time.tm_mon > 11)
>> +         {
>> +            if (sd->shown_time.tm_year == sd->year_max)
>> +              {
>> +                 sd->shown_time.tm_mon--;
>> +                 return EINA_FALSE;
>> +              }
>> +            sd->shown_time.tm_mon = 0;
>> +            sd->shown_time.tm_year++;
>> +         }
>>       }
>> -   else if (sd->shown_time.tm_mon > 11)
>> +   else
>>       {
>> -        if (sd->shown_time.tm_year == sd->year_max)
>> -          {
>> -             sd->shown_time.tm_mon--;
>> -             return EINA_FALSE;
>> -          }
>> -        sd->shown_time.tm_mon = 0;
>> -        sd->shown_time.tm_year++;
>> +       sd->shown_time.tm_year += delta;
>>       }
>>
>>     if ((sd->select_mode != ELM_CALENDAR_SELECT_MODE_ONDEMAND)
>> @@ -569,21 +619,35 @@
>>  }
>>
>>  static Eina_Bool
>> -_spin_value(void *data)
>> +_spin_month_value(void *data)
>>  {
>>     ELM_CALENDAR_DATA_GET(data, sd);
>>
>> -   if (_update_month(data, sd->spin_speed))
>> +   if (_update_data(data, EINA_TRUE, sd->spin_speed))
>>       evas_object_smart_changed(data);
>>
>>     sd->interval = sd->interval / 1.05;
>> -   ecore_timer_interval_set(sd->spin, sd->interval);
>> +   ecore_timer_interval_set(sd->spin_month, sd->interval);
>>
>>     return ECORE_CALLBACK_RENEW;
>>  }
>>
>> +static Eina_Bool
>> +_spin_year_value(void *data)
>> +{
>> +   ELM_CALENDAR_DATA_GET(data, sd);
>> +
>> +   if (_update_data(data, EINA_FALSE, sd->spin_speed))
>> +     evas_object_smart_changed(data);
>> +
>> +   sd->interval = sd->interval / 1.05;
>> +   ecore_timer_interval_set(sd->spin_year, sd->interval);
>> +
>> +   return ECORE_CALLBACK_RENEW;
>> +}
>> +
>>  static void
>> -_button_inc_start(void *data,
>> +_button_month_inc_start(void *data,
>>                    Evas_Object *obj __UNUSED__,
>>                    const char *emission __UNUSED__,
>>                    const char *source __UNUSED__)
>> @@ -592,14 +656,14 @@
>>
>>     sd->interval = sd->first_interval;
>>     sd->spin_speed = 1;
>> -   if (sd->spin) ecore_timer_del(sd->spin);
>> -   sd->spin = ecore_timer_add(sd->interval, _spin_value, data);
>> +   if (sd->spin_month) ecore_timer_del(sd->spin_month);
>> +   sd->spin_month = ecore_timer_add(sd->interval, _spin_month_value,
>> data);
>>
>> -   _spin_value(data);
>> +   _spin_month_value(data);
>>  }
>>
>>  static void
>> -_button_dec_start(void *data,
>> +_button_month_dec_start(void *data,
>>                    Evas_Object *obj __UNUSED__,
>>                    const char *emission __UNUSED__,
>>                    const char *source __UNUSED__)
>> @@ -608,25 +672,70 @@
>>
>>     sd->interval = sd->first_interval;
>>     sd->spin_speed = -1;
>> -   if (sd->spin) ecore_timer_del(sd->spin);
>> -   sd->spin = ecore_timer_add(sd->interval, _spin_value, data);
>> +   if (sd->spin_month) ecore_timer_del(sd->spin_month);
>> +   sd->spin_month = ecore_timer_add(sd->interval, _spin_month_value,
>> data);
>>
>> -   _spin_value(data);
>> +   _spin_month_value(data);
>>  }
>>
>>  static void
>> -_button_stop(void *data,
>> -             Evas_Object *obj __UNUSED__,
>> -             const char *emission __UNUSED__,
>> -             const char *source __UNUSED__)
>> +_button_month_stop(void *data,
>> +                  Evas_Object *obj __UNUSED__,
>> +                  const char *emission __UNUSED__,
>> +                  const char *source __UNUSED__)
>>  {
>>     ELM_CALENDAR_DATA_GET(data, sd);
>>
>>     sd->interval = sd->first_interval;
>> -   if (sd->spin) ecore_timer_del(sd->spin);
>> -   sd->spin = NULL;
>> +   if (sd->spin_month) ecore_timer_del(sd->spin_month);
>> +   sd->spin_month = NULL;
>>  }
>>
>> +static void
>> +_button_year_inc_start(void *data,
>> +                      Evas_Object *obj __UNUSED__,
>> +                      const char *emission __UNUSED__,
>> +                      const char *source __UNUSED__)
>> +{
>> +   ELM_CALENDAR_DATA_GET(data, sd);
>> +
>> +   sd->interval = sd->first_interval;
>> +   sd->spin_speed = 1;
>> +   if (sd->spin_year) ecore_timer_del(sd->spin_year);
>> +   sd->spin_year = ecore_timer_add(sd->interval, _spin_year_value, data);
>> +
>> +   _spin_year_value(data);
>> +}
>> +
>> +static void
>> +_button_year_dec_start(void *data,
>> +                  Evas_Object *obj __UNUSED__,
>> +                  const char *emission __UNUSED__,
>> +                  const char *source __UNUSED__)
>> +{
>> +   ELM_CALENDAR_DATA_GET(data, sd);
>> +
>> +   sd->interval = sd->first_interval;
>> +   sd->spin_speed = -1;
>> +   if (sd->spin_year) ecore_timer_del(sd->spin_year);
>> +   sd->spin_year = ecore_timer_add(sd->interval, _spin_year_value, data);
>> +
>> +   _spin_year_value(data);
>> +}
>> +
>> +static void
>> +_button_year_stop(void *data,
>> +                 Evas_Object *obj __UNUSED__,
>> +                 const char *emission __UNUSED__,
>> +                 const char *source __UNUSED__)
>> +{
>> +   ELM_CALENDAR_DATA_GET(data, sd);
>> +
>> +   sd->interval = sd->first_interval;
>> +   if (sd->spin_year) ecore_timer_del(sd->spin_year);
>> +   sd->spin_year = NULL;
>> +}
>> +
>>  static int
>>  _get_item_day(Evas_Object *obj,
>>                int selected_it)
>> @@ -735,12 +844,12 @@
>>     if ((!strcmp(ev->keyname, "Prior")) ||
>>         ((!strcmp(ev->keyname, "KP_Prior")) && (!ev->string)))
>>       {
>> -        if (_update_month(obj, -1)) _populate(obj);
>> +        if (_update_data(obj, EINA_TRUE, -1)) _populate(obj);
>>       }
>>     else if ((!strcmp(ev->keyname, "Next")) ||
>>              ((!strcmp(ev->keyname, "KP_Next")) && (!ev->string)))
>>       {
>> -        if (_update_month(obj, 1)) _populate(obj);
>> +        if (_update_data(obj, EINA_TRUE, 1)) _populate(obj);
>>       }
>>     else if ((sd->select_mode != ELM_CALENDAR_SELECT_MODE_NONE)
>>              && ((sd->select_mode != ELM_CALENDAR_SELECT_MODE_ONDEMAND)
>> @@ -819,15 +928,24 @@
>>     priv->selectable = (~(ELM_CALENDAR_SELECTABLE_NONE));
>>
>>     edje_object_signal_callback_add
>> -     (wd->resize_obj, "elm,action,increment,start", "*",
>> -     _button_inc_start, obj);
>> +     (wd->resize_obj, "elm,action,increment,month,start", "*",
>> +     _button_month_inc_start, obj);
>>     edje_object_signal_callback_add
>> -     (wd->resize_obj, "elm,action,decrement,start", "*",
>> -     _button_dec_start, obj);
>> +     (wd->resize_obj, "elm,action,decrement,month,start", "*",
>> +      _button_month_dec_start, obj);
>>     edje_object_signal_callback_add
>> -     (wd->resize_obj, "elm,action,stop", "*",
>> -     _button_stop, obj);
>> +     (wd->resize_obj, "elm,action,increment,year,start", "*",
>> +     _button_year_inc_start, obj);
>>     edje_object_signal_callback_add
>> +     (wd->resize_obj, "elm,action,decrement,year,start", "*",
>> +     _button_year_dec_start, obj);
>> +   edje_object_signal_callback_add
>> +     (wd->resize_obj, "elm,action,month,stop", "*",
>> +     _button_month_stop, obj);
>> +   edje_object_signal_callback_add
>> +     (wd->resize_obj, "elm,action,year,stop", "*",
>> +     _button_year_stop, obj);
>> +   edje_object_signal_callback_add
>>       (wd->resize_obj, "elm,action,selected", "*",
>>       _day_selected, obj);
>>
>> @@ -875,7 +993,8 @@
>>     Elm_Calendar_Mark *mark;
>>     Elm_Calendar_Smart_Data *sd = _pd;
>>
>> -   if (sd->spin) ecore_timer_del(sd->spin);
>> +   if (sd->spin_month) ecore_timer_del(sd->spin_month);
>> +   if (sd->spin_year) ecore_timer_del(sd->spin_year);
>>     if (sd->update_timer) ecore_timer_del(sd->update_timer);
>>
>>     if (sd->marks)
>> @@ -925,9 +1044,13 @@
>>     Elm_Calendar_Smart_Data *sd = _pd;
>>
>>     items = eina_list_append(items, sd->month_access);
>> -   items = eina_list_append(items, sd->dec_btn_access);
>> -   items = eina_list_append(items, sd->inc_btn_access);
>> +   items = eina_list_append(items, sd->dec_btn_month_access);
>> +   items = eina_list_append(items, sd->inc_btn_month_access);
>>
>> +   items = eina_list_append(items, sd->year_access);
>> +   items = eina_list_append(items, sd->dec_btn_year_access);
>> +   items = eina_list_append(items, sd->inc_btn_year_access);
>> +
>>     day = 0;
>>     maxdays = _maxdays_get(&sd->shown_time);
>>     for (i = 0; i < 42; i++)
>> @@ -976,15 +1099,25 @@
>>                 }
>>            }
>>
>> -        if (sd->dec_btn_access)
>> +        if (sd->dec_btn_month_access)
>>            _elm_access_edje_object_part_object_unregister
>> -            (obj, elm_layout_edje_get(obj), "left_bt");
>> -        if (sd->inc_btn_access)
>> +            (obj, elm_layout_edje_get(obj), "left_bt_month");
>> +        if (sd->inc_btn_month_access)
>>            _elm_access_edje_object_part_object_unregister
>> -            (obj, elm_layout_edje_get(obj), "right_bt");
>> +            (obj, elm_layout_edje_get(obj), "right_bt_month");
>>          if (sd->month_access)
>>            _elm_access_edje_object_part_object_unregister
>> -            (obj, elm_layout_edje_get(obj), "month_text");
>> +            (obj, elm_layout_edje_get(obj), "text_month");
>> +
>> +        if (sd->dec_btn_year_access)
>> +          _elm_access_edje_object_part_object_unregister
>> +            (obj, elm_layout_edje_get(obj), "left_bt_year");
>> +        if (sd->inc_btn_year_access)
>> +          _elm_access_edje_object_part_object_unregister
>> +            (obj, elm_layout_edje_get(obj), "right_bt_year");
>> +        if (sd->year_access)
>> +          _elm_access_edje_object_part_object_unregister
>> +            (obj, elm_layout_edje_get(obj), "text_year");
>>       }
>>  }
>>
>> @@ -1238,7 +1371,7 @@
>>     *ret = EINA_TRUE;
>>  }
>>
>> -EAPI void
>> +EINA_DEPRECATED EAPI void
>>  elm_calendar_format_function_set(Evas_Object *obj,
>>                                   Elm_Calendar_Format_Cb format_function)
>>  {
>> @@ -1253,7 +1386,6 @@
>>     Elm_Calendar_Smart_Data *sd = _pd;
>>
>>     sd->format_func = format_function;
>> -   _set_month_year(sd);
>>  }
>>
>>  EAPI Elm_Calendar_Mark *
>>
>> Modified: trunk/elementary/src/lib/elm_calendar.h
>> ===================================================================
>> --- trunk/elementary/src/lib/elm_calendar.h     2013-01-03 20:48:52 UTC
>> (rev 82107)
>> +++ trunk/elementary/src/lib/elm_calendar.h     2013-01-03 20:50:10 UTC
>> (rev 82108)
>> @@ -640,7 +640,7 @@
>>   *
>>   * @ingroup Calendar
>>   */
>> -EAPI void                 elm_calendar_format_function_set(Evas_Object
>> *obj, Elm_Calendar_Format_Cb format_func);
>> +EINA_DEPRECATED EAPI void
>> elm_calendar_format_function_set(Evas_Object *obj, Elm_Calendar_Format_Cb
>> format_func);
>>
>>  /**
>>   * Add a new mark to the calendar
>>
>> Modified: trunk/elementary/src/lib/elm_widget_calendar.h
>> ===================================================================
>> --- trunk/elementary/src/lib/elm_widget_calendar.h      2013-01-03
>> 20:48:52 UTC (rev 82107)
>> +++ trunk/elementary/src/lib/elm_widget_calendar.h      2013-01-03
>> 20:50:10 UTC (rev 82108)
>> @@ -34,15 +34,18 @@
>>     int                      year_min, year_max, spin_speed;
>>     int                      today_it, selected_it, first_day_it;
>>     Elm_Calendar_Weekday     first_week_day;
>> -   Ecore_Timer             *spin, *update_timer;
>> +   Ecore_Timer             *spin_month, *spin_year, *update_timer;
>>     Elm_Calendar_Format_Cb   format_func;
>>     const char              *weekdays[ELM_DAY_LAST];
>>     struct tm                current_time, selected_time, shown_time;
>>     Day_Color                day_color[42]; // EINA_DEPRECATED
>>     Elm_Calendar_Select_Mode select_mode;
>> -   Evas_Object             *inc_btn_access;
>> -   Evas_Object             *dec_btn_access;
>> +   Evas_Object             *inc_btn_month_access;
>> +   Evas_Object             *dec_btn_month_access;
>>     Evas_Object             *month_access;
>> +   Evas_Object             *inc_btn_year_access;
>> +   Evas_Object             *dec_btn_year_access;
>> +   Evas_Object             *year_access;
>>     Eina_Bool                selected : 1;
>>     Elm_Calendar_Selectable  selectable;
>>  };
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
>> MVPs and experts. ON SALE this month only -- learn more at:
>> http://p.sf.net/sfu/learnmore_122712
>> _______________________________________________
>> enlightenment-svn mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>>
>
>
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to