/* vim: set sw=3 ts=3 sts=3 expandtab: */
group {
   name: "ecdb/check";

   script {
      public s;

      public toggle_state() {
         if (get_int(s) == 0)
         {
            set_state(PART:"check", "active", 0.0);
            emit("ecdb,check,checked", "ecdb");
            set_int(s, 1);
         }
         else
         {
            set_state(PART:"check", "default", 0.0);
            emit("ecdb,check,unchecked", "ecdb");
            set_int(s, 0);
         }
      }
   }

   parts {
      part {
         name: "check_base";
         type: IMAGE;
         scale: 1;

         description {
            state: "default" 0.0;
            min: 20 18;
            max: 20 18;
            fixed: 1 1;
            align: 0.0 0.5;

            rel1 { 
               relative: 0.0 0.0; 
               offset: 2 2; 
            }

            rel2 { 
               relative: 0.0 1.0; 
               offset: 2 -3; 
            }

            image {
               normal: "check_base.png";
            }
         }

         description {
            state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 128;
         }
      }

      part {
         name: "check_shadow";
         type: IMAGE;

         description {
            state: "default" 0.0;
            color: 255 255 255 128;
            image.normal: "check_shadow.png";

            rel1 { 
               to: "check";
               relative: 0.0 0.0; 
               offset: 0 1; 
            }

            rel2 { 
               to: "check";
               relative: 1.0 1.0; 
               offset: -1 -1; 
            }
         } 

         description {
            state: "focused" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 255;
            image.normal: "check_focus.png";
   
            rel1 { 
               to: "check";
               relative: 0.0 0.0; 
               offset: 0 0; 
            }
   
            rel2 { 
               to: "check";
               relative: 1.0 1.0; 
               offset: -1 -1; 
            }
         }
   
         description {
            state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 0;
         }
      }
   
      part {
         name: "check";
         scale: 1;
   
         description {
            state: "default" 0.0;
            min: 20 18;
            max: 20 18;
            fixed: 1 1;
            align: 0.0 0.5;
   
            rel1 { 
               relative: 0.0 0.0; 
               offset: 2 2; 
            }
      
            rel2 { 
               relative: 0.0 1.0; 
               offset: 2 -3; 
            }
      
            image {
               normal: "check0.png";
            }
         }
      
         description {
            state: "active" 0.0;
            inherit: "default" 0.0;
         
            image {
               normal: "check2.png";
            }
         }
      
         description {
            state: "disabled_unsel" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 128;
         }

         description {
            state: "disabled_sel" 0.0;
            inherit: "active" 0.0;
            color: 255 255 255 128;
         }
      }

      part {
         name: "ecdb.label";
         type: TEXT;
         scale: 1;
         
         description {
            state: "default" 0.0;
            color: 60 60 60 255;
            fixed: 1 1;

            rel1 {
               to_x: "check_base";
               to_y: "check";
               relative: 1.0 0.0;
               offset: 5 0;
            }

            rel2 {
               relative: 1.0 1.0;
               to_y: "check";
               offset: -1 0;
            }

            text {
               text: "";
               font: "ecdb/default";
               size: 11;
               align: 0.0 0.5;
            }
         }
      }
   }

   programs {
      program {
         name: "emit_clicked";
         signal: "mouse,clicked,1";
         action: SIGNAL_EMIT "ecdb,clicked" "ecdb";
         source: "*";
      }

      program {
         name: "emit_activate";
         signal: "mouse,down,1";
         action: SIGNAL_EMIT "ecdb,activate" "ecdb";
         source: "*";
      }

      program {
         name: "focus_in";
         signal: "ecdb,focus,in";
         signal: "mouse,down,1";
         action: STATE_SET "focused" 0.0;
         source: "*";
         target: "check_shadow";
      }

      program {
         name: "focus_out";
         signal: "ecdb,focus,out";
         action: STATE_SET "default" 0.0;
         source: "ecdb";
         target: "check_shadow";
      }

      program {
         name: "clicked";
         signal: "mouse,down,1";
         source: "*";

         script {
            toggle_state();
         }
      }

      program {
         name: "disabled";
         signal: "ecdb,disable";
         source: "ecdb";
         action: STATE_SET "disabled" 0.0;
         target: "check_base";
         target: "check_shadow";
      }

      program {
         name: "disabled_check";
         signal: "ecdb,disable";
         source: "ecdb";

         script {
            if (get_int(s) == 1)
               set_state(PART:"check", "disabled_sel",
                           0.0);
            else
               set_state(PART:"check",
                     "disabled_unsel", 0.0);
         }
      }

      program {
         name: "enabled";
         signal: "ecdb,enable";
         source: "ecdb";
         action: STATE_SET "default" 0.0;
         target: "check_base";
         target: "check_shadow";
      }

      program {
         name: "enabled_check";
         signal: "ecdb,enable";
         source: "ecdb";
         
         script {
            if (get_int(s) == 1)
               set_state(PART:"check", "active", 0.0);
            else
               set_state(PART:"check", "default", 0.0);
         }
      }

      program {
         name: "check_off";
         signal: "ecdb,check,off";
         source: "ecdb";

         script {
            set_int(s, 0);
         }

         action: STATE_SET "default" 0.0;
         target: "check";
      }

      program {
         name: "check_on";
         signal: "ecdb,check,on";
         source: "ecdb";

         script {
            set_int(s, 1);
         }

         action: STATE_SET "active" 0.0;
         target: "check";
      }
   }
}