/* vim: set sw=3 ts=3 sts=3 expandtab: */
group {
   name: "ecdb/window";
   min: 640 390;

   script {
      public settings_time_id;
      public in_transition;
      const Float:show_timeout = 1.5;

      public show_settings(val) {
         set_int(in_transition, 1);
         run_program(PROGRAM:"settings,show");
         run_program(PROGRAM:"icons,show");
         if (get_int(settings_time_id) != 0) {
            cancel_timer(get_int(settings_time_id));
         }
         return 0;
      }
   }

   parts {
      part {
         name: "background";
         mouse_events: 0;
         scale: 1;

         description {
            state: "default" 0.0;
            min: 640 390;
            max: 999999 999999;

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

            rel2 {
               relative: 1.0 1.0;
               offset: -1 -1;
            }

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

      part {
         name: "bottom_shiv";
         type: RECT;
         scale: 1;

         description {
            state: "default" 0.0;
            visible: 0;
            align: 0.0 1.0;
            max: 99999 230;
         }
      }

      part {
         name: "top_shiv";
         type: RECT;
         scale: 1;

         description {
            state: "default" 0.0;
            visible: 0;
            align: 0.0 0.0;
            max: 99999 145;
         }
      }

      part {
         name: "paned_container";
         type: RECT;
         scale: 1;

         description {
            state: "default" 0.0;
            visible: 0;
            align: 0.0 0.0;
            max: 99999 99999;
            min: 99999 0;

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

            rel2 {
               relative: 0.0 0.0;
               offset: 0 0;
            }
         }

         description {
            state: "visible" 0.0;
            inherit: "default" 0.0;
            
            rel1 {
               to_y: "top_shiv";
               relative: 0.0 1.0;
            }

            rel2 {
               to_y: "bottom_shiv";
               relative: 1.0 0.0;
               offset: -1 -1;
            }
         }
      }

      part {
         name: "paned_draggie";
         type: RECT;
         scale: 1;

         dragable {
            confine: "paned_container";
            x: 0 0 0;
            y: -1 1 0;
         }

         description {
            state: "default" 0.0;
            min: 99999 9;
            color: 0 0 0 20;

            rel1 {
               relative: 0.0 0.0;
            }

            rel2 {
               relative: 1.0 0.0;
            }
         }

         description {
            state: "active" 0.0;
            inherit: "default" 0.0;
            color: 0 0 0 80;
         }
      }

      part {
         name: "paned_image";
         repeat_events: 1;
         type: IMAGE;
         scale: 1;

         description {
            state: "default" 0.0;
            min: 42 5;
            max: 42 5;
            color: 255 255 255 255;

            rel1 {
               to_y: "paned_draggie";
               relative: 0.0 0.0;
               offset: 2 2;
            }

            rel2 {
               to_y: "paned_draggie";
               relative: 1.0 1.0;
               offset: -3 -3;
            }

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

      part {
         name: "filelist_clip";
         type: RECT;
         scale: 1;

         description {
            state: "default" 0.0;
            visible: 0;

            rel1 {
               offset: 5 5;
            }

            rel2 {
               to_y: "paned_draggie";
               offset: -6 -12;
            }
         }

         description {
            state: "visible" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }

      part {
         name: "filelist_container";
         type: IMAGE;
         clip_to: "filelist_clip";
         scale: 1;

         description {
            state: "default" 0.0;
            color: 255 255 255 0;

            rel1 {
               offset: 5 5;
            }

            rel2 {
               to_y: "paned_draggie";
               relative: 1.0 0.0;
               offset: -6 -6;
            }

            image {
               normal: "focus.png";
               border: 7 7 7 7;
            }
         }

         description {
            state: "focused" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 155;
         }
      }

      part {
         name: "filelist";
         type: SWALLOW;
         clip_to: "filelist_clip";
         scale: 1;

         description {
            state: "default" 0.0;

            rel1 {
               to: "filelist_container";
               offset: 3 3;
            }

            rel2 {
               to: "filelist_container";
               offset: -4 -4;
            }
         }
      }
      
      part {
         name: "filelist_overlay";
         type: IMAGE;
         clip_to: "filelist_clip";
         mouse_events: 1;
         repeat_events: 1;
         scale: 1;

         description {
            state: "default" 0.0;
            color: 255 255 255 0;

            rel1 {
               to: "filelist";
            }

            rel2 {
               to: "filelist";
            }

            image {
               normal: "text_overlay.png";
               border: 7 7 7 7;
            }
         }

         description {
            state: "active" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 100;
         }
      }

      part {
         name: "filelist_overlay_text";
         type: TEXT;
         effect: NONE;
         clip_to: "filelist_clip";
         mouse_events: 1;
         repeat_events: 1;
         scale: 1;

         description {
            state: "default" 0.0;
            align: 0.5 0.5;
            color: 255 255 255 0;

            rel1 {
               to: "filelist_overlay";
               relative: 0.0 0.0;
            }

            rel2 {
               to: "filelist_overlay";
               relative: 1.0 1.0;
            }

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

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

      part {
         name: "action_area";
         type: SWALLOW;
         mouse_events: 1;
         repeat_events: 1;
         scale: 1;

         description {
            state: "default" 0.0;
            min: 640 170;

            rel1 {
               to: "paned_draggie";
               offset: 0 12;
            }

            rel2 {
               relative: 1.0 1.0;
               offset: -1 -1;
            }
         }
      }

      part {
         name: "settings_tab";
         type: RECT;
         mouse_events: 1;
         scale: 1;

         description {
            state: "default" 0.0;
            align: 1.0 0.0;
            min: 24 24;
            max: 24 24;
            color: 0 0 0 0;

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

            rel2 {
               relative: 1.0 1.0;
               offset: -1 -1;
            }
         }

         description {
            state: "visible" 0.0;
            inherit: "default" 0.0;
            min: 140 72;
            max: 140 72;
            color: 0 0 0 128;
         }
      }

      part {
         name: "about_icon";
         type: IMAGE;
         mouse_events: 1;
         repeat_events: 1;
         scale: 1;

         description {
            state: "default" 0.0;
            min: 0 0;
            max: 0 0;
            color: 255 255 255 0;
            align: 0.0 0.0;

            rel1 {
               to: "config_icon";
               relative: 1.0 0.0;
               offset: 4 0;
            }

            rel2 {
               to: "config_icon";
               relative: 1.0 1.0;
               offset: -5 0;
            }

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

         description {
            state: "visible" 0.0;
            inherit: "default" 0.0;
            min: 64 64;
            max: 64 64;
            color: 255 255 255 255;
         }
      }

      part {
         name: "config_icon";
         type: IMAGE;
         mouse_events: 1;
         repeat_events: 1;
         scale: 1;

         description {
            state: "default" 0.0;
            min: 0 0;
            max: 0 0;
            color: 255 255 255 0;
            align: 0.0 0.0;

            rel1 {
               to: "settings_tab";
               relative: 0.0 0.0;
               offset: 4 4;
            }

            rel2 {
               to: "settings_tab";
               relative: 1.0 1.0;
               offset: -5 -5;
            }

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

         description {
            state: "visible" 0.0;
            inherit: "default" 0.0;
            min: 64 64;
            max: 64 64;
            color: 255 255 255 255;
         }
      }

   }

   programs {
      program {
         name: "settings,activate";
         signal: "mouse,in";
         source: "settings_tab";
         script {
            new i = timer(show_timeout, "show_settings", 0);
            set_int(settings_time_id, i);
         }
      }

      program {
         name: "settings,deactivate";
         action: STATE_SET "default" 0.0;
         target: "settings_tab";
         transition: DECELERATE 0.3;
      }

      program {
         name: "scripting,deactivate";
         signal: "mouse,out";
         source: "settings_tab";
         script {
            if (!get_int(in_transition))
            {
               run_program(PROGRAM:"settings,deactivate")
               run_program(PROGRAM:"icons,hide");
               if (get_int(settings_time_id) != 0) {
                  cancel_timer(get_int(settings_time_id));
                  set_int(settings_time_id, 0);
               }
            }
         }
      }

      program {
         name: "icons,hide";
         action: STATE_SET "default" 0.0;
         target: "about_icon";
         target: "config_icon";
         transition: DECELERATE 0.3;
      }

      program {
         name: "icons,show";
         action: STATE_SET "visible" 0.0;
         target: "about_icon";
         target: "config_icon";
         transition: DECELERATE 0.3;
      }

      program {
         name: "about_icon,clicked";
         signal: "mouse,clicked,1";
         source: "about_icon";
         action: SIGNAL_EMIT "ecdb/about/show" "ecdb";
      }

      program {
         name: "config_icon,clicked";
         signal: "mouse,clicked,1";
         source: "config_icon";
         action: SIGNAL_EMIT "ecdb/config/show" "ecdb";
      }

      program {
         name: "settings,show";
         action: STATE_SET "visible" 0.0;
         target: "settings_tab";
         transition: DECELERATE 0.3;
         after: "settings,after";
      }

      program {
         name: "settings,after";
         script {
            set_int(in_transition, 0);
         }
      }

      program {
         name: "filelist,visible";
         signal: "ecdb,filelist,visible";
         source: "ecdb";
         after: "filelist,visible_swallow";
         action: STATE_SET "visible" 0.0;
         target: "paned_container";
         transition: DECELERATE 0.5;
      }

      program {
         name: "filelist,visible_swallow";
         action: STATE_SET "visible" 0.0;
         target: "filelist_clip";
      }

      program {
         name: "filelist,hide";
         signal: "ecdb,filelist,hide";
         source: "ecdb";
         action: STATE_SET "default" 0.0;
         target: "paned_container";
         transition: DECELERATE 0.5;
      }

      program {
         name: "filelist,hide_swallow";
         after: "filelist,hide";
         action: STATE_SET "default" 0.0;
         target: "filelist_clip";
      }

      program {
         name: "filelist,focus,in";
         signal: "mouse,in";
         source: "filelist_overlay";
         action: STATE_SET "focused" 0.0;
         target: "filelist_container";
         transition: LINEAR 0.2;
      }
      
      program {
         name: "filelist,focus,out";
         signal: "mouse,out";
         source: "filelist_overlay";
         action: STATE_SET "default" 0.0;
         target: "filelist_container";
         transition: LINEAR 0.2;
      }

      program {
         name: "filelist_overlay,activate";
         action: STATE_SET "active" 0.0;
         signal: "ecdb,filelist_overlay,activate";
         source: "ecdb";
         target: "filelist_overlay";
         target: "filelist_overlay_text";
         transition: DECELERATE 0.5;
      }

      program {
         name: "filelist_overlay,deactivate";
         action: STATE_SET "default" 0.0;
         signal: "ecdb,filelist_overlay,deactivate";
         source: "ecdb";
         target: "filelist_overlay";
         target: "filelist_overlay_text";
         transition: DECELERATE 0.5;
      }

      program {
         name: "draggie_activate";
         signal: "mouse,down,1";
         action: STATE_SET "active" 0.0;
         source: "paned_draggie";
         target: "paned_draggie";
         transition: DECELERATE 0.5;
      }

      program {
         name: "draggie_deactivate";
         signal: "mouse,clicked,1";
         signal: "mouse,up,1";
         action: STATE_SET "default" 0.0;
         source: "paned_draggie";
         target: "paned_draggie";
         transition: DECELERATE 0.5;
      }
   }
}