summaryrefslogtreecommitdiffstats
path: root/amor
diff options
context:
space:
mode:
Diffstat (limited to 'amor')
-rw-r--r--amor/AmorIface.h49
-rw-r--r--amor/Makefile.am38
-rw-r--r--amor/TODO15
-rw-r--r--amor/amor.cpp1024
-rw-r--r--amor/amor.desktop74
-rw-r--r--amor/amor.h164
-rw-r--r--amor/amoranim.cpp254
-rw-r--r--amor/amoranim.h117
-rw-r--r--amor/amorbubble.cpp250
-rw-r--r--amor/amorbubble.h81
-rw-r--r--amor/amorconfig.cpp83
-rw-r--r--amor/amorconfig.h58
-rw-r--r--amor/amordialog.cpp285
-rw-r--r--amor/amordialog.h107
-rw-r--r--amor/amorpm.cpp94
-rw-r--r--amor/amorpm.h64
-rw-r--r--amor/amortips.cpp181
-rw-r--r--amor/amortips.h60
-rw-r--r--amor/amorwidget.cpp125
-rw-r--r--amor/amorwidget.h67
-rw-r--r--amor/configure.in.in3
-rw-r--r--amor/data/Makefile.am14
-rw-r--r--amor/data/billyrc129
-rw-r--r--amor/data/blobrc312
-rw-r--r--amor/data/bonhommerc193
-rw-r--r--amor/data/bsdrc128
-rw-r--r--amor/data/eyesrc232
-rw-r--r--amor/data/ghostrc183
-rw-r--r--amor/data/nekorc202
-rw-r--r--amor/data/pics/Makefile.am1
-rw-r--r--amor/data/pics/animated/Makefile.am1
-rw-r--r--amor/data/pics/animated/blob/Makefile.am82
-rw-r--r--amor/data/pics/animated/blob/blob.pngbin0 -> 556 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown1.pngbin0 -> 186 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown2.pngbin0 -> 247 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown3.pngbin0 -> 465 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown4.pngbin0 -> 720 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown5.pngbin0 -> 662 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown6.pngbin0 -> 727 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown7.pngbin0 -> 879 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown8.pngbin0 -> 924 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamDown9.pngbin0 -> 689 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp1.pngbin0 -> 646 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp10.pngbin0 -> 345 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp2.pngbin0 -> 648 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp3.pngbin0 -> 713 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp4.pngbin0 -> 787 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp5.pngbin0 -> 615 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp6.pngbin0 -> 581 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp7.pngbin0 -> 582 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp8.pngbin0 -> 701 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_BeamUp9.pngbin0 -> 611 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_b1.pngbin0 -> 511 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_b2.pngbin0 -> 431 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_e1.pngbin0 -> 618 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_ex1.pngbin0 -> 580 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_f1.pngbin0 -> 478 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_f2.pngbin0 -> 388 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_f3.pngbin0 -> 272 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire10.pngbin0 -> 235 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire11.pngbin0 -> 166 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire2.pngbin0 -> 594 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire3.pngbin0 -> 651 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire4.pngbin0 -> 681 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire5.pngbin0 -> 600 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire6.pngbin0 -> 627 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire7.pngbin0 -> 574 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire8.pngbin0 -> 391 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_fire9.pngbin0 -> 243 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_g1.pngbin0 -> 593 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_g2.pngbin0 -> 573 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_gl1.pngbin0 -> 587 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_gl2.pngbin0 -> 587 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_gl3.pngbin0 -> 468 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_h1.pngbin0 -> 606 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_h2.pngbin0 -> 617 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_h3.pngbin0 -> 623 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_jet1.pngbin0 -> 559 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_jet2.pngbin0 -> 574 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_jet3.pngbin0 -> 608 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_jet4.pngbin0 -> 638 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_jet1.pngbin0 -> 556 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_jet2.pngbin0 -> 566 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_jet3.pngbin0 -> 603 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_jet4.pngbin0 -> 637 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_turn1.pngbin0 -> 605 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_turn2.pngbin0 -> 526 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_turn3.pngbin0 -> 482 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_l_turn4.pngbin0 -> 472 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r135.pngbin0 -> 633 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r180.pngbin0 -> 574 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r225.pngbin0 -> 656 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r270.pngbin0 -> 553 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r315.pngbin0 -> 639 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r45.pngbin0 -> 649 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r90.pngbin0 -> 559 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r_turn1.pngbin0 -> 594 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r_turn2.pngbin0 -> 505 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r_turn3.pngbin0 -> 475 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_r_turn4.pngbin0 -> 465 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_s1.pngbin0 -> 586 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_s2.pngbin0 -> 605 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_s3.pngbin0 -> 610 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_sl1.pngbin0 -> 511 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_sl2.pngbin0 -> 498 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_sl3.pngbin0 -> 487 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_sl4.pngbin0 -> 454 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_z1.pngbin0 -> 400 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_z2.pngbin0 -> 251 bytes
-rw-r--r--amor/data/pics/animated/blob/blob_z3.pngbin0 -> 222 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/Makefile.am46
-rw-r--r--amor/data/pics/animated/bonhomme/b-f.pngbin0 -> 276 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b-f2.pngbin0 -> 285 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b1-r.pngbin0 -> 325 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b1.pngbin0 -> 322 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b2-r.pngbin0 -> 301 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b2.pngbin0 -> 295 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b3-r.pngbin0 -> 238 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b3.pngbin0 -> 236 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b4-r.pngbin0 -> 216 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/b4.pngbin0 -> 209 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bcol1.pngbin0 -> 321 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bcol2.pngbin0 -> 318 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib1.pngbin0 -> 289 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib2.pngbin0 -> 304 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib3.pngbin0 -> 302 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib4.pngbin0 -> 305 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib5.pngbin0 -> 307 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib6.pngbin0 -> 304 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrib7.pngbin0 -> 298 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bdrop.pngbin0 -> 321 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo1.pngbin0 -> 270 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo2.pngbin0 -> 250 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo3.pngbin0 -> 244 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo4.pngbin0 -> 231 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo5.pngbin0 -> 223 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo6.pngbin0 -> 197 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bgo7.pngbin0 -> 157 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bh1.pngbin0 -> 248 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bpof1.pngbin0 -> 313 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bpof2.pngbin0 -> 306 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bpof3.pngbin0 -> 315 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bpof4.pngbin0 -> 338 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bpof5.pngbin0 -> 339 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/bpof6.pngbin0 -> 306 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/sa1.pngbin0 -> 310 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/sa2.pngbin0 -> 377 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/sa2a.pngbin0 -> 389 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/sa2b.pngbin0 -> 394 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/sa2c.pngbin0 -> 375 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/salut.pngbin0 -> 303 bytes
-rw-r--r--amor/data/pics/animated/bonhomme/salut1.pngbin0 -> 269 bytes
-rw-r--r--amor/data/pics/animated/eyes/Makefile.am31
-rw-r--r--amor/data/pics/animated/eyes/eye_1.pngbin0 -> 241 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_2.pngbin0 -> 202 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_b.pngbin0 -> 254 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_d.pngbin0 -> 231 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_e.pngbin0 -> 241 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_h1.pngbin0 -> 242 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_h2.pngbin0 -> 251 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_h3.pngbin0 -> 258 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_h4.pngbin0 -> 252 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_l.pngbin0 -> 244 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m1.pngbin0 -> 508 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m2.pngbin0 -> 525 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m3.pngbin0 -> 548 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m4.pngbin0 -> 430 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m5.pngbin0 -> 326 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m6.pngbin0 -> 220 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_m7.pngbin0 -> 166 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_s1.pngbin0 -> 285 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_s2.pngbin0 -> 271 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_s3.pngbin0 -> 274 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_s4.pngbin0 -> 274 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_u.pngbin0 -> 228 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_z1.pngbin0 -> 273 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_z2.pngbin0 -> 231 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_z3.pngbin0 -> 269 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_z4.pngbin0 -> 241 bytes
-rw-r--r--amor/data/pics/animated/eyes/eye_z5.pngbin0 -> 202 bytes
-rw-r--r--amor/data/pics/animated/ghost/Makefile.am19
-rw-r--r--amor/data/pics/animated/ghost/ghost_1.pngbin0 -> 425 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_2.pngbin0 -> 407 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_e.pngbin0 -> 185 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m1.pngbin0 -> 394 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m2.pngbin0 -> 347 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m3.pngbin0 -> 312 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m4.pngbin0 -> 290 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m5.pngbin0 -> 254 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m6.pngbin0 -> 240 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_m7.pngbin0 -> 224 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_z1.pngbin0 -> 198 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_z2.pngbin0 -> 237 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_z3.pngbin0 -> 300 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_z4.pngbin0 -> 310 bytes
-rw-r--r--amor/data/pics/animated/ghost/ghost_z5.pngbin0 -> 378 bytes
-rw-r--r--amor/data/pics/animated/neko/Makefile.am31
-rw-r--r--amor/data/pics/animated/neko/claw1.pngbin0 -> 327 bytes
-rw-r--r--amor/data/pics/animated/neko/claw2.pngbin0 -> 322 bytes
-rw-r--r--amor/data/pics/animated/neko/jump1.pngbin0 -> 351 bytes
-rw-r--r--amor/data/pics/animated/neko/jump2.pngbin0 -> 359 bytes
-rw-r--r--amor/data/pics/animated/neko/jump3.pngbin0 -> 355 bytes
-rw-r--r--amor/data/pics/animated/neko/jump4.pngbin0 -> 341 bytes
-rw-r--r--amor/data/pics/animated/neko/jumpl1.pngbin0 -> 336 bytes
-rw-r--r--amor/data/pics/animated/neko/jumpl2.pngbin0 -> 363 bytes
-rw-r--r--amor/data/pics/animated/neko/jumpl3.pngbin0 -> 361 bytes
-rw-r--r--amor/data/pics/animated/neko/jumpl4.pngbin0 -> 344 bytes
-rw-r--r--amor/data/pics/animated/neko/lick.pngbin0 -> 339 bytes
-rw-r--r--amor/data/pics/animated/neko/lick2.pngbin0 -> 339 bytes
-rw-r--r--amor/data/pics/animated/neko/run1.pngbin0 -> 351 bytes
-rw-r--r--amor/data/pics/animated/neko/run2.pngbin0 -> 338 bytes
-rw-r--r--amor/data/pics/animated/neko/run3.pngbin0 -> 351 bytes
-rw-r--r--amor/data/pics/animated/neko/run4.pngbin0 -> 337 bytes
-rw-r--r--amor/data/pics/animated/neko/scratch1.pngbin0 -> 343 bytes
-rw-r--r--amor/data/pics/animated/neko/scratch2.pngbin0 -> 316 bytes
-rw-r--r--amor/data/pics/animated/neko/scratch3.pngbin0 -> 331 bytes
-rw-r--r--amor/data/pics/animated/neko/scratch4.pngbin0 -> 318 bytes
-rw-r--r--amor/data/pics/animated/neko/sit.pngbin0 -> 315 bytes
-rw-r--r--amor/data/pics/animated/neko/sitleft.pngbin0 -> 316 bytes
-rw-r--r--amor/data/pics/animated/neko/sleep1.pngbin0 -> 323 bytes
-rw-r--r--amor/data/pics/animated/neko/sleep2.pngbin0 -> 321 bytes
-rw-r--r--amor/data/pics/animated/neko/surprise.pngbin0 -> 355 bytes
-rw-r--r--amor/data/pics/animated/neko/tail.pngbin0 -> 321 bytes
-rw-r--r--amor/data/pics/animated/neko/yawn.pngbin0 -> 338 bytes
-rw-r--r--amor/data/pics/animated/pingu/Makefile.am104
-rw-r--r--amor/data/pics/animated/pingu/bash_l1.pngbin0 -> 967 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l10.pngbin0 -> 1014 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l11.pngbin0 -> 1002 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l12.pngbin0 -> 1026 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l2.pngbin0 -> 894 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l3.pngbin0 -> 797 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l4.pngbin0 -> 638 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l5.pngbin0 -> 677 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l6.pngbin0 -> 745 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l7.pngbin0 -> 703 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l8.pngbin0 -> 862 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_l9.pngbin0 -> 893 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r1.pngbin0 -> 954 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r10.pngbin0 -> 977 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r11.pngbin0 -> 981 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r12.pngbin0 -> 1029 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r2.pngbin0 -> 898 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r3.pngbin0 -> 797 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r4.pngbin0 -> 628 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r5.pngbin0 -> 679 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r6.pngbin0 -> 747 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r7.pngbin0 -> 694 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r8.pngbin0 -> 865 bytes
-rw-r--r--amor/data/pics/animated/pingu/bash_r9.pngbin0 -> 907 bytes
-rw-r--r--amor/data/pics/animated/pingu/blocker1.pngbin0 -> 1485 bytes
-rw-r--r--amor/data/pics/animated/pingu/blocker2.pngbin0 -> 1450 bytes
-rw-r--r--amor/data/pics/animated/pingu/blocker3.pngbin0 -> 1411 bytes
-rw-r--r--amor/data/pics/animated/pingu/blocker4.pngbin0 -> 1477 bytes
-rw-r--r--amor/data/pics/animated/pingu/blocker5.pngbin0 -> 1456 bytes
-rw-r--r--amor/data/pics/animated/pingu/blocker6.pngbin0 -> 1421 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber1.pngbin0 -> 964 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber10.pngbin0 -> 952 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber11.pngbin0 -> 852 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber12.pngbin0 -> 753 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber13.pngbin0 -> 756 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber14.pngbin0 -> 324 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber15.pngbin0 -> 262 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber16.pngbin0 -> 162 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber2.pngbin0 -> 964 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber3.pngbin0 -> 964 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber4.pngbin0 -> 1001 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber5.pngbin0 -> 998 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber6.pngbin0 -> 987 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber7.pngbin0 -> 986 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber8.pngbin0 -> 960 bytes
-rw-r--r--amor/data/pics/animated/pingu/bomber9.pngbin0 -> 1101 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger1.pngbin0 -> 1332 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger10.pngbin0 -> 1298 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger11.pngbin0 -> 1394 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger12.pngbin0 -> 1324 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger13.pngbin0 -> 1364 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger14.pngbin0 -> 1324 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger2.pngbin0 -> 1310 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger3.pngbin0 -> 1324 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger4.pngbin0 -> 1319 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger5.pngbin0 -> 1351 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger6.pngbin0 -> 1320 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger7.pngbin0 -> 1314 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger8.pngbin0 -> 1297 bytes
-rw-r--r--amor/data/pics/animated/pingu/digger9.pngbin0 -> 1390 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller1.pngbin0 -> 1032 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller2.pngbin0 -> 1002 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller3.pngbin0 -> 990 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller4.pngbin0 -> 926 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller5.pngbin0 -> 973 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller6.pngbin0 -> 1002 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller7.pngbin0 -> 1032 bytes
-rw-r--r--amor/data/pics/animated/pingu/faller8.pngbin0 -> 1076 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater1.pngbin0 -> 960 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater2.pngbin0 -> 960 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater3.pngbin0 -> 961 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater4.pngbin0 -> 967 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater5.pngbin0 -> 960 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater6.pngbin0 -> 965 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater7.pngbin0 -> 959 bytes
-rw-r--r--amor/data/pics/animated/pingu/floater8.pngbin0 -> 965 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble1.pngbin0 -> 1319 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble2.pngbin0 -> 873 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble3.pngbin0 -> 847 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble4.pngbin0 -> 587 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble5.pngbin0 -> 764 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble6.pngbin0 -> 693 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble7.pngbin0 -> 725 bytes
-rw-r--r--amor/data/pics/animated/pingu/tumble8.pngbin0 -> 1066 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l1.pngbin0 -> 869 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l2.pngbin0 -> 859 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l3.pngbin0 -> 927 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l4.pngbin0 -> 858 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l5.pngbin0 -> 842 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l6.pngbin0 -> 744 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l7.pngbin0 -> 909 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_l8.pngbin0 -> 958 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r1.pngbin0 -> 1008 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r2.pngbin0 -> 868 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r3.pngbin0 -> 753 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r4.pngbin0 -> 844 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r5.pngbin0 -> 896 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r6.pngbin0 -> 959 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r7.pngbin0 -> 845 bytes
-rw-r--r--amor/data/pics/animated/pingu/walk_r8.pngbin0 -> 848 bytes
-rw-r--r--amor/data/pics/animated/tao/Makefile.am50
-rw-r--r--amor/data/pics/animated/tao/yy-1.pngbin0 -> 1140 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-2.pngbin0 -> 1116 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-3.pngbin0 -> 1098 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-4.pngbin0 -> 1070 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-5.pngbin0 -> 985 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-6.pngbin0 -> 985 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-7.pngbin0 -> 953 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-8.pngbin0 -> 924 bytes
-rw-r--r--amor/data/pics/animated/tao/yy-9.pngbin0 -> 887 bytes
-rw-r--r--amor/data/pics/animated/tao/yy.pngbin0 -> 1156 bytes
-rw-r--r--amor/data/pics/animated/tao/yy105.pngbin0 -> 1190 bytes
-rw-r--r--amor/data/pics/animated/tao/yy120.pngbin0 -> 1283 bytes
-rw-r--r--amor/data/pics/animated/tao/yy135.pngbin0 -> 1237 bytes
-rw-r--r--amor/data/pics/animated/tao/yy15.pngbin0 -> 1114 bytes
-rw-r--r--amor/data/pics/animated/tao/yy150.pngbin0 -> 1272 bytes
-rw-r--r--amor/data/pics/animated/tao/yy165.pngbin0 -> 1218 bytes
-rw-r--r--amor/data/pics/animated/tao/yy180.pngbin0 -> 1171 bytes
-rw-r--r--amor/data/pics/animated/tao/yy195.pngbin0 -> 1122 bytes
-rw-r--r--amor/data/pics/animated/tao/yy210.pngbin0 -> 1131 bytes
-rw-r--r--amor/data/pics/animated/tao/yy225.pngbin0 -> 1205 bytes
-rw-r--r--amor/data/pics/animated/tao/yy240.pngbin0 -> 1272 bytes
-rw-r--r--amor/data/pics/animated/tao/yy255.pngbin0 -> 1241 bytes
-rw-r--r--amor/data/pics/animated/tao/yy270.pngbin0 -> 1188 bytes
-rw-r--r--amor/data/pics/animated/tao/yy285.pngbin0 -> 1196 bytes
-rw-r--r--amor/data/pics/animated/tao/yy30.pngbin0 -> 1146 bytes
-rw-r--r--amor/data/pics/animated/tao/yy300.pngbin0 -> 1206 bytes
-rw-r--r--amor/data/pics/animated/tao/yy315.pngbin0 -> 1240 bytes
-rw-r--r--amor/data/pics/animated/tao/yy330.pngbin0 -> 1239 bytes
-rw-r--r--amor/data/pics/animated/tao/yy345.pngbin0 -> 1197 bytes
-rw-r--r--amor/data/pics/animated/tao/yy45.pngbin0 -> 1188 bytes
-rw-r--r--amor/data/pics/animated/tao/yy60.pngbin0 -> 1303 bytes
-rw-r--r--amor/data/pics/animated/tao/yy75.pngbin0 -> 1266 bytes
-rw-r--r--amor/data/pics/animated/tao/yy90.pngbin0 -> 1171 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx10.pngbin0 -> 332 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx12.pngbin0 -> 365 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx14.pngbin0 -> 485 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx16.pngbin0 -> 495 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx18.pngbin0 -> 647 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx20.pngbin0 -> 716 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx22.pngbin0 -> 743 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx24.pngbin0 -> 817 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx26.pngbin0 -> 913 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx28.pngbin0 -> 947 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx30.pngbin0 -> 1062 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx6.pngbin0 -> 206 bytes
-rw-r--r--amor/data/pics/animated/tao/yyx8.pngbin0 -> 267 bytes
-rw-r--r--amor/data/pics/animated/worm/Makefile.am40
-rw-r--r--amor/data/pics/animated/worm/w-a1.pngbin0 -> 332 bytes
-rw-r--r--amor/data/pics/animated/worm/w-a2.pngbin0 -> 339 bytes
-rw-r--r--amor/data/pics/animated/worm/w-b1.pngbin0 -> 306 bytes
-rw-r--r--amor/data/pics/animated/worm/w-b2.pngbin0 -> 304 bytes
-rw-r--r--amor/data/pics/animated/worm/w-be1.pngbin0 -> 310 bytes
-rw-r--r--amor/data/pics/animated/worm/w-be2.pngbin0 -> 305 bytes
-rw-r--r--amor/data/pics/animated/worm/w-be3.pngbin0 -> 312 bytes
-rw-r--r--amor/data/pics/animated/worm/w-be4.pngbin0 -> 325 bytes
-rw-r--r--amor/data/pics/animated/worm/w-d1.pngbin0 -> 290 bytes
-rw-r--r--amor/data/pics/animated/worm/w-d2.pngbin0 -> 259 bytes
-rw-r--r--amor/data/pics/animated/worm/w-d3.pngbin0 -> 259 bytes
-rw-r--r--amor/data/pics/animated/worm/w-d4.pngbin0 -> 241 bytes
-rw-r--r--amor/data/pics/animated/worm/w-d5.pngbin0 -> 180 bytes
-rw-r--r--amor/data/pics/animated/worm/w-dr1.pngbin0 -> 321 bytes
-rw-r--r--amor/data/pics/animated/worm/w-e1.pngbin0 -> 293 bytes
-rw-r--r--amor/data/pics/animated/worm/w-l1.pngbin0 -> 333 bytes
-rw-r--r--amor/data/pics/animated/worm/w-l2.pngbin0 -> 335 bytes
-rw-r--r--amor/data/pics/animated/worm/w-l3.pngbin0 -> 344 bytes
-rw-r--r--amor/data/pics/animated/worm/w-ml0.pngbin0 -> 315 bytes
-rw-r--r--amor/data/pics/animated/worm/w-ml1.pngbin0 -> 330 bytes
-rw-r--r--amor/data/pics/animated/worm/w-ml2.pngbin0 -> 322 bytes
-rw-r--r--amor/data/pics/animated/worm/w-ml3.pngbin0 -> 319 bytes
-rw-r--r--amor/data/pics/animated/worm/w-mr0.pngbin0 -> 311 bytes
-rw-r--r--amor/data/pics/animated/worm/w-mr1.pngbin0 -> 326 bytes
-rw-r--r--amor/data/pics/animated/worm/w-mr2.pngbin0 -> 318 bytes
-rw-r--r--amor/data/pics/animated/worm/w-mr3.pngbin0 -> 327 bytes
-rw-r--r--amor/data/pics/animated/worm/w-s1.pngbin0 -> 235 bytes
-rw-r--r--amor/data/pics/animated/worm/w-s2.pngbin0 -> 257 bytes
-rw-r--r--amor/data/pics/animated/worm/w-s3.pngbin0 -> 251 bytes
-rw-r--r--amor/data/pics/animated/worm/w-u1.pngbin0 -> 218 bytes
-rw-r--r--amor/data/pics/animated/worm/w-u2.pngbin0 -> 260 bytes
-rw-r--r--amor/data/pics/animated/worm/w-u3.pngbin0 -> 276 bytes
-rw-r--r--amor/data/pics/animated/worm/w-wl1.pngbin0 -> 322 bytes
-rw-r--r--amor/data/pics/animated/worm/w-wl2.pngbin0 -> 329 bytes
-rw-r--r--amor/data/pics/animated/worm/w-wr1.pngbin0 -> 317 bytes
-rw-r--r--amor/data/pics/animated/worm/w-wr2.pngbin0 -> 327 bytes
-rw-r--r--amor/data/pics/preview/Makefile.am5
-rw-r--r--amor/data/pics/preview/billy.pngbin0 -> 547 bytes
-rw-r--r--amor/data/pics/preview/blob.pngbin0 -> 556 bytes
-rw-r--r--amor/data/pics/preview/bonhomme.pngbin0 -> 296 bytes
-rw-r--r--amor/data/pics/preview/bsd.pngbin0 -> 1329 bytes
-rw-r--r--amor/data/pics/preview/eyes.pngbin0 -> 241 bytes
-rw-r--r--amor/data/pics/preview/ghost.pngbin0 -> 425 bytes
-rw-r--r--amor/data/pics/preview/neko.pngbin0 -> 315 bytes
-rw-r--r--amor/data/pics/preview/tao.pngbin0 -> 1776 bytes
-rw-r--r--amor/data/pics/preview/tux.pngbin0 -> 605 bytes
-rw-r--r--amor/data/pics/preview/worm.pngbin0 -> 311 bytes
-rw-r--r--amor/data/pics/static/Makefile.am5
-rw-r--r--amor/data/pics/static/billy.pngbin0 -> 824 bytes
-rw-r--r--amor/data/pics/static/bsd.pngbin0 -> 2321 bytes
-rw-r--r--amor/data/pics/static/tux.pngbin0 -> 1694 bytes
-rw-r--r--amor/data/pingurc167
-rw-r--r--amor/data/taorc148
-rw-r--r--amor/data/tips-en39
-rw-r--r--amor/data/tuxrc127
-rw-r--r--amor/data/wormrc225
-rw-r--r--amor/hi16-app-amor.pngbin0 -> 1012 bytes
-rw-r--r--amor/hi22-app-amor.pngbin0 -> 1515 bytes
-rw-r--r--amor/hi32-app-amor.pngbin0 -> 2680 bytes
-rw-r--r--amor/hi48-app-amor.pngbin0 -> 4595 bytes
-rw-r--r--amor/main.cpp70
-rw-r--r--amor/preparetips45
-rw-r--r--amor/version.h1
436 files changed, 5823 insertions, 0 deletions
diff --git a/amor/AmorIface.h b/amor/AmorIface.h
new file mode 100644
index 0000000..575d18d
--- /dev/null
+++ b/amor/AmorIface.h
@@ -0,0 +1,49 @@
+/* AmorIface.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+
+#ifndef __AmorIface_h__
+#define __AmorIface_h__
+
+#include <dcopobject.h>
+
+class AmorIface : virtual public DCOPObject
+{
+ K_DCOP
+public:
+
+k_dcop:
+ virtual void showTip(QString tip) = 0;
+ virtual void showMessage(QString message ) = 0;
+ virtual void showMessage(QString message, int msec ) = 0;
+
+ virtual void screenSaverStopped() = 0;
+ virtual void screenSaverStarted() = 0;
+
+};
+
+#endif
+
diff --git a/amor/Makefile.am b/amor/Makefile.am
new file mode 100644
index 0000000..413c24e
--- /dev/null
+++ b/amor/Makefile.am
@@ -0,0 +1,38 @@
+
+# set the include path for X, qt and KDE
+INCLUDES= $(all_includes)
+# claim, which subdirectories you want to install
+SUBDIRS = data
+
+####### This part is very amor specific
+# you can add here more. This one gets installed
+bin_PROGRAMS = amor
+
+# Which sources should be compiled for amor.
+amor_SOURCES = amordialog.cpp amor.cpp amorwidget.cpp main.cpp amoranim.cpp amorpm.cpp\
+ amorbubble.cpp amorconfig.cpp amortips.cpp AmorIface.skel
+
+include_HEADERS = AmorIface.h
+
+# the library search path
+amor_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+
+# the libraries to link against. Be aware of the order. First the libraries,
+# that depend on the following ones.
+amor_LDADD = $(LIB_KDEUI)
+
+# this option you can leave out. Just, if you use "make dist", you need it
+noinst_HEADERS = amor.h amorwidget.h amoranim.h amorpm.h amordialog.h\
+ amorbubble.h amorconfig.h amortips.h
+
+METASOURCES = AUTO
+
+messages:
+ perl ./preparetips > tips.cpp
+ $(XGETTEXT) tips.cpp *.cpp -o $(podir)/amor.pot
+ rm -f tips.cpp
+
+xdg_apps_DATA = amor.desktop
+
+KDE_ICON = amor
+
diff --git a/amor/TODO b/amor/TODO
new file mode 100644
index 0000000..bc9c9f4
--- /dev/null
+++ b/amor/TODO
@@ -0,0 +1,15 @@
+As of 04/14/04...
+
+ - find a way to use round bubbles without using Painter.drawRoundRect,
+because you can only specify the relative roundness of the corners. The corners
+should have a fixed radius.
+
+ - What should be done about messages that arrive while the screensaver
+is on?.
+
+ - Clean up the messages queue. Why is the default timing for messages
+and tips calculated in class queueItem instead of in class Amor?
+
+ - Reduce the delay between a showMessage is received and the bubble is
+actually shown.
+
diff --git a/amor/amor.cpp b/amor/amor.cpp
new file mode 100644
index 0000000..9f98bb3
--- /dev/null
+++ b/amor/amor.cpp
@@ -0,0 +1,1024 @@
+/* amor.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+
+#include <kdebug.h>
+
+#include <kpopupmenu.h>
+#include <qtimer.h>
+#include <qcursor.h>
+#include <qvaluelist.h>
+
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kstartupinfo.h>
+#include <kwin.h>
+#include <kwinmodule.h>
+#include <kstandarddirs.h>
+#include <khelpmenu.h>
+#include <kiconloader.h>
+
+#include "amor.h"
+#include "amor.moc"
+#include "amorpm.h"
+#include "amorbubble.h"
+#include "amorwidget.h"
+#include "amordialog.h"
+#include "version.h"
+#include <X11/Xlib.h>
+#include <kdebug.h>
+
+// #define DEBUG_AMOR
+
+#define SLEEP_TIMEOUT 180 // Animation sleeps after SLEEP_TIMEOUT seconds
+ // of mouse inactivity.
+#define TIPS_FILE "tips" // Display tips in TIP_FILE-LANG, e.g "tips-en"
+#define TIP_FREQUENCY 20 // Frequency tips are displayed small == more
+ // often.
+
+#define BUBBLE_TIME_STEP 250
+
+// Standard animation groups
+#define ANIM_BASE "Base"
+#define ANIM_NORMAL "Sequences"
+#define ANIM_FOCUS "Focus"
+#define ANIM_BLUR "Blur"
+#define ANIM_DESTROY "Destroy"
+#define ANIM_SLEEP "Sleep"
+#define ANIM_WAKE "Wake"
+
+//---------------------------------------------------------------------------
+// QueueItem
+// Constructor
+//
+
+QueueItem::QueueItem(itemType ty, QString te, int ti)
+{
+ // if the time field was not given, calculate one based on the type
+ // and length of the item
+ int effectiveLength = 0, nesting = 0;
+
+ // discard html code from the lenght count
+ for (unsigned int i = 0; i < te.length(); i++)
+ {
+ if (te[i] == '<') nesting++;
+ else if (te[i] == '>') nesting--;
+ else if (!nesting) effectiveLength++;
+ }
+ if (nesting) // malformed html
+ {
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "QueueItem::QueueItem(): Malformed HTML!" << endl;
+#endif
+ effectiveLength = te.length();
+ }
+
+ if (ti == -1)
+ {
+ switch (ty) {
+ case Talk : // shorter times
+ ti = 1500 + 45 * effectiveLength;
+ break;
+ case Tip : // longer times
+ ti = 4000 + 30 * effectiveLength;
+ break;
+ }
+ }
+
+ iType = ty;
+ iText = te;
+ iTime = ti;
+}
+
+//---------------------------------------------------------------------------
+// AMOR
+// Constructor
+//
+Amor::Amor() : DCOPObject( "AmorIface" ), QObject()
+{
+ mAmor = 0;
+ mBubble = 0;
+ mForceHideAmorWidget = false;
+ if (readConfig())
+ {
+ mTargetWin = 0;
+ mNextTarget = 0;
+ mAmorDialog = 0;
+ mMenu = 0;
+ mCurrAnim = mBaseAnim;
+ mPosition = mCurrAnim->hotspot().x();
+ mState = Normal;
+
+ mWin = new KWinModule;
+ connect(mWin, SIGNAL(activeWindowChanged(WId)),
+ this, SLOT(slotWindowActivate(WId)));
+ connect(mWin, SIGNAL(windowRemoved(WId)),
+ this, SLOT(slotWindowRemove(WId)));
+ connect(mWin, SIGNAL(stackingOrderChanged()),
+ this, SLOT(slotStackingChanged()));
+ connect(mWin, SIGNAL(windowChanged(WId, const unsigned long *)),
+ this, SLOT(slotWindowChange(WId, const unsigned long *)));
+ connect(mWin, SIGNAL(currentDesktopChanged(int)),
+ this, SLOT(slotDesktopChange(int)));
+
+ mAmor = new AmorWidget();
+ connect(mAmor, SIGNAL(mouseClicked(const QPoint &)),
+ SLOT(slotMouseClicked(const QPoint &)));
+ connect(mAmor, SIGNAL(dragged(const QPoint &, bool)),
+ SLOT(slotWidgetDragged(const QPoint &, bool)));
+ mAmor->resize(mTheme.maximumSize());
+
+ mTimer = new QTimer(this);
+ connect(mTimer, SIGNAL(timeout()), SLOT(slotTimeout()));
+
+ mStackTimer = new QTimer(this);
+ connect(mStackTimer, SIGNAL(timeout()), SLOT(restack()));
+
+ mBubbleTimer = new QTimer(this);
+ connect(mBubbleTimer, SIGNAL(timeout()), SLOT(slotBubbleTimeout()));
+
+ time(&mActiveTime);
+ mCursPos = QCursor::pos();
+ mCursorTimer = new QTimer(this);
+ connect(mCursorTimer, SIGNAL(timeout()), SLOT(slotCursorTimeout()));
+ mCursorTimer->start( 500 );
+
+ if (mWin->activeWindow())
+ {
+ mNextTarget = mWin->activeWindow();
+ selectAnimation(Focus);
+ mTimer->start(0, true);
+ }
+ if (!connectDCOPSignal(0,0, "KDE_stop_screensaver()", "screenSaverStopped()",false))
+ kdDebug(10000) << "Could not attach signal...KDE_stop_screensaver()" << endl;
+ else
+ kdDebug(10000) << "attached dcop signals..." << endl;
+
+ if (!connectDCOPSignal(0,0, "KDE_start_screensaver()", "screenSaverStarted()",false))
+ kdDebug(10000) << "Could not attach signal...KDE_start_screensaver()" << endl;
+ else
+ kdDebug(10000) << "attached dcop signals..." << endl;
+
+ mTipsQueue.setAutoDelete(true);
+
+ KStartupInfo::appStarted();
+ }
+ else
+ {
+ kapp->quit();
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Destructor
+//
+Amor::~Amor()
+{
+ delete mWin;
+ delete mAmor;
+ delete mBubble;
+}
+
+void Amor::screenSaverStopped()
+{
+#ifdef DEBUG_AMOR
+ kdDebug(10000)<<"void Amor::screenSaverStopped() \n";
+#endif
+
+ mAmor->show();
+ mForceHideAmorWidget = false;
+
+ mTimer->start(0, true);
+}
+
+void Amor::screenSaverStarted()
+{
+#ifdef DEBUG_AMOR
+ kdDebug(10000)<<"void Amor::screenSaverStarted() \n";
+#endif
+
+ mAmor->hide();
+ mTimer->stop();
+ mForceHideAmorWidget = true;
+
+ // GP: hide the bubble (if there's any) leaving any current message in the queue
+ hideBubble();
+}
+
+//---------------------------------------------------------------------------
+//
+void Amor::showTip( QString tip )
+{
+ if (mTipsQueue.count() < 5 && !mForceHideAmorWidget) // start dropping tips if the queue is too long
+ mTipsQueue.enqueue(new QueueItem(QueueItem::Tip, tip));
+
+ if (mState == Sleeping)
+ {
+ selectAnimation(Waking); // Set waking immediatedly
+ mTimer->start(0, true);
+ }
+}
+
+
+void Amor::showMessage( QString message )
+{
+ showMessage(message, -1);
+}
+
+void Amor::showMessage( QString message , int msec )
+{
+ // FIXME: What should be done about messages and tips while the screensaver is on?
+ if (mForceHideAmorWidget) return; // do not show messages sent while in the screensaver
+
+ mTipsQueue.enqueue(new QueueItem(QueueItem::Talk, message, msec));
+
+ if (mState == Sleeping)
+ {
+ selectAnimation(Waking); // Set waking immediatedly
+ mTimer->start(0, true);
+ }
+}
+
+
+//---------------------------------------------------------------------------
+//
+// Clear existing theme and reload configuration
+//
+void Amor::reset()
+{
+ hideBubble();
+
+ mAmor->setPixmap(0L); // get rid of your old copy of the pixmap
+
+ AmorPixmapManager::manager()->reset();
+ mTips.reset();
+
+// mTipsQueue.clear(); Why had I chosen to clean the tips queue? insane!
+
+ readConfig();
+
+ mCurrAnim = mBaseAnim;
+ mPosition = mCurrAnim->hotspot().x();
+ mState = Normal;
+
+ mAmor->resize(mTheme.maximumSize());
+ mCurrAnim->reset();
+
+ mTimer->start(0, true);
+}
+
+//---------------------------------------------------------------------------
+//
+// Read the selected theme.
+//
+bool Amor::readConfig()
+{
+ // Read user preferences
+ mConfig.read();
+
+ if (mConfig.mTips)
+ {
+ mTips.setFile(TIPS_FILE);
+ }
+
+ // Select a random theme if user requested it
+ if (mConfig.mRandomTheme)
+ {
+ QStringList files;
+
+ // Store relative paths into files to avoid storing absolute pathnames.
+ KGlobal::dirs()->findAllResources("appdata", "*rc", false, false, files);
+ int randomTheme = kapp->random() % files.count();
+ mConfig.mTheme = (QString)*files.at(randomTheme);
+ }
+
+ // read selected theme
+ if (!mTheme.setTheme(mConfig.mTheme))
+ {
+ KMessageBox::error(0, i18n("Error reading theme: ") + mConfig.mTheme);
+ return false;
+ }
+
+ if ( !mTheme.isStatic() )
+ {
+ const char *groups[] = { ANIM_BASE, ANIM_NORMAL, ANIM_FOCUS, ANIM_BLUR,
+ ANIM_DESTROY, ANIM_SLEEP, ANIM_WAKE, 0 };
+
+ // Read all the standard animation groups
+ for (int i = 0; groups[i]; i++)
+ {
+ if (mTheme.readGroup(groups[i]) == false)
+ {
+ KMessageBox::error(0, i18n("Error reading group: ") + groups[i]);
+ return false;
+ }
+ }
+ }
+ else
+ {
+ if ( mTheme.readGroup( ANIM_BASE ) == false )
+ {
+ KMessageBox::error(0, i18n("Error reading group: ") + ANIM_BASE);
+ return false;
+ }
+ }
+
+ // Get the base animation
+ mBaseAnim = mTheme.random(ANIM_BASE);
+
+ return true;
+}
+
+//---------------------------------------------------------------------------
+//
+// Show the bubble text
+//
+void Amor::showBubble()
+{
+ if (!mTipsQueue.isEmpty())
+ {
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Amor::showBubble(): Displaying tips bubble." << endl;
+#endif
+
+ if (!mBubble)
+ {
+ mBubble = new AmorBubble;
+ }
+
+ mBubble->setOrigin(mAmor->x()+mAmor->width()/2,
+ mAmor->y()+mAmor->height()/2);
+ mBubble->setMessage(mTipsQueue.head()->text());
+
+// mBubbleTimer->start(mTipsQueue.head()->time(), true);
+ mBubbleTimer->start(BUBBLE_TIME_STEP, true);
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Hide the bubble text if visible
+//
+void Amor::hideBubble(bool forceDequeue)
+{
+ if (mBubble)
+ {
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Amor::hideBubble(): Hiding tips bubble" << endl;
+#endif
+
+ // GP: stop mBubbleTimer to avoid deleting the first element, just in case we are changing windows
+ // or something before the tip was shown long enough
+ mBubbleTimer->stop();
+
+ // GP: the first message on the queue should be taken off for a
+ // number of reasons: a) forceDequeue == true, only when called
+ // from slotBubbleTimeout; b) the bubble is not visible ; c)
+ // the bubble is visible, but there's Tip being displayed. The
+ // latter is to keep backwards compatibility and because
+ // carrying around a tip bubble when switching windows quickly is really
+ // annoyying
+ if (forceDequeue || !mBubble->isVisible() ||
+ (mTipsQueue.head()->type() == QueueItem::Tip)) /* there's always an item in the queue here */
+ mTipsQueue.dequeue();
+
+ delete mBubble;
+ mBubble = 0;
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Select a new animation appropriate for the current state.
+//
+void Amor::selectAnimation(State state)
+{
+ switch (state)
+ {
+ case Blur:
+ hideBubble();
+ mCurrAnim = mTheme.random(ANIM_BLUR);
+ mState = Focus;
+ break;
+
+ case Focus:
+ hideBubble();
+ mCurrAnim = mTheme.random(ANIM_FOCUS);
+ mCurrAnim->reset();
+ mTargetWin = mNextTarget;
+ if (mTargetWin != None)
+ {
+ mTargetRect = KWin::windowInfo(mTargetWin).frameGeometry();
+
+ // if the animation falls outside of the working area,
+ // then relocate it so that is inside the desktop again
+ QRect desktopArea = mWin->workArea();
+ mInDesktopBottom = false;
+
+ if (mTargetRect.y() - mCurrAnim->hotspot().y() + mConfig.mOffset <
+ desktopArea.y())
+ {
+ // relocate the animation at the bottom of the screen
+ mTargetRect = QRect(desktopArea.x(),
+ desktopArea.y() + desktopArea.height(),
+ desktopArea.width(), 0);
+
+ // we'll relocate the animation in the desktop
+ // frame, so do not add the offset to its vertical position
+ mInDesktopBottom = true;
+ }
+
+ if ( mTheme.isStatic() )
+ {
+ if ( mConfig.mStaticPos < 0 )
+ mPosition = mTargetRect.width() + mConfig.mStaticPos;
+ else
+ mPosition = mConfig.mStaticPos;
+ if ( mPosition >= mTargetRect.width() )
+ mPosition = mTargetRect.width()-1;
+ else if ( mPosition < 0 )
+ mPosition = 0;
+ }
+ else
+ {
+ if (mCurrAnim->frame())
+ {
+ if (mTargetRect.width() == mCurrAnim->frame()->width())
+ mPosition = mCurrAnim->hotspot().x();
+ else
+ mPosition = ( kapp->random() %
+ (mTargetRect.width() - mCurrAnim->frame()->width()) )
+ + mCurrAnim->hotspot().x();
+ }
+ else
+ {
+ mPosition = mTargetRect.width()/2;
+ }
+ }
+ }
+ else
+ {
+ // We don't want to do anything until a window comes into
+ // focus.
+ mTimer->stop();
+ }
+ mAmor->hide();
+
+ restack();
+ mState = Normal;
+ break;
+
+ case Destroy:
+ hideBubble();
+ mCurrAnim = mTheme.random(ANIM_DESTROY);
+ mState = Focus;
+ break;
+
+ case Sleeping:
+ mCurrAnim = mTheme.random(ANIM_SLEEP);
+ break;
+
+ case Waking:
+ mCurrAnim = mTheme.random(ANIM_WAKE);
+ mState = Normal;
+ break;
+
+ default:
+ // Select a random normal animation if the current animation
+ // is not the base, otherwise select the base. This makes us
+ // alternate between the base animation and a random
+ // animination.
+ if (mCurrAnim == mBaseAnim && !mBubble)
+ {
+ mCurrAnim = mTheme.random(ANIM_NORMAL);
+ }
+ else
+ {
+ mCurrAnim = mBaseAnim;
+ }
+ break;
+ }
+
+ if (mCurrAnim->totalMovement() + mPosition > mTargetRect.width() ||
+ mCurrAnim->totalMovement() + mPosition < 0)
+ {
+ // The selected animation would end outside of this window's width
+ // We could randomly select a different one, but I prefer to just
+ // use the default animation.
+ mCurrAnim = mBaseAnim;
+ }
+
+ mCurrAnim->reset();
+}
+
+//---------------------------------------------------------------------------
+//
+// Set the animation's stacking order to be just above the target window's
+// window decoration, or on top.
+//
+void Amor::restack()
+{
+ if (mTargetWin == None)
+ {
+ return;
+ }
+
+ if (mConfig.mOnTop)
+ {
+ // simply raise the widget to the top
+ mAmor->raise();
+ return;
+ }
+
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "restacking" << endl;
+#endif
+
+ Window sibling = mTargetWin;
+ Window dw, parent = None, *wins;
+
+ do {
+ unsigned int nwins = 0;
+
+ // We must use the target window's parent as our sibling.
+ // Is there a faster way to get parent window than XQueryTree?
+ if (XQueryTree(qt_xdisplay(), sibling, &dw, &parent, &wins, &nwins))
+ {
+ if (nwins)
+ {
+ XFree(wins);
+ }
+ }
+
+ if (parent != None && parent != dw )
+ sibling = parent;
+ } while ( parent != None && parent != dw );
+
+ // Set animation's stacking order to be above the window manager's
+ // decoration of target window.
+ XWindowChanges values;
+ values.sibling = sibling;
+ values.stack_mode = Above;
+ XConfigureWindow(qt_xdisplay(), mAmor->winId(), CWSibling | CWStackMode,
+ &values);
+}
+
+//---------------------------------------------------------------------------
+//
+// The user clicked on our animation.
+//
+void Amor::slotMouseClicked(const QPoint &pos)
+{
+ bool restartTimer = mTimer->isActive();
+
+ // Stop the animation while the menu is open.
+ if (restartTimer)
+ {
+ mTimer->stop();
+ }
+
+ if (!mMenu)
+ {
+ KHelpMenu* help = new KHelpMenu(0, KGlobal::instance()->aboutData(), false);
+ KPopupMenu* helpMnu = help->menu();
+ mMenu = new KPopupMenu();
+ mMenu->insertTitle("Amor"); // I really don't want this i18n'ed
+ mMenu->insertItem(SmallIcon("configure"), i18n("&Configure..."), this, SLOT(slotConfigure()));
+ mMenu->insertSeparator();
+ mMenu->insertItem(SmallIcon("help"), i18n("&Help"), helpMnu);
+ mMenu->insertItem(SmallIcon("exit"), i18n("&Quit"), kapp, SLOT(quit()));
+ }
+
+ mMenu->exec(pos);
+
+ if (restartTimer)
+ {
+ mTimer->start(1000, true);
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Check cursor position
+//
+void Amor::slotCursorTimeout()
+{
+ QPoint currPos = QCursor::pos();
+ QPoint diff = currPos - mCursPos;
+ time_t now = time(0);
+
+ if (mForceHideAmorWidget) return; // we're hidden, do nothing
+
+ if (abs(diff.x()) > 1 || abs(diff.y()) > 1)
+ {
+ if (mState == Sleeping)
+ {
+ // Set waking immediatedly
+ selectAnimation(Waking);
+ }
+ mActiveTime = now;
+ mCursPos = currPos;
+ }
+ else if (mState != Sleeping && now - mActiveTime > SLEEP_TIMEOUT)
+ {
+ // GP: can't go to sleep if there are tips in the queue
+ if (mTipsQueue.isEmpty())
+ mState = Sleeping; // The next animation will become sleeping
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Display the next frame or a new animation
+//
+void Amor::slotTimeout()
+{
+ if ( mForceHideAmorWidget )
+ return;
+
+ if (!mTheme.isStatic())
+ mPosition += mCurrAnim->movement();
+ mAmor->setPixmap(mCurrAnim->frame());
+ mAmor->move(mTargetRect.x() + mPosition - mCurrAnim->hotspot().x(),
+ mTargetRect.y() - mCurrAnim->hotspot().y() + (!mInDesktopBottom?mConfig.mOffset:0));
+ if (!mAmor->isVisible())
+ {
+ mAmor->show();
+ restack();
+ }
+
+ if (mCurrAnim == mBaseAnim && mCurrAnim->validFrame())
+ {
+ // GP: Application tips/messages can be shown in any frame number; amor tips are
+ // only displayed on the first frame of mBaseAnim (the old way of doing this).
+ if ( !mTipsQueue.isEmpty() && !mBubble && mConfig.mAppTips)
+ showBubble();
+ else if (kapp->random()%TIP_FREQUENCY == 1 && mConfig.mTips && !mBubble && !mCurrAnim->frameNum())
+ {
+ mTipsQueue.enqueue(new QueueItem(QueueItem::Tip, mTips.tip()));
+ showBubble();
+ }
+ }
+
+ if (mTheme.isStatic())
+ mTimer->start((mState == Normal) || (mState == Sleeping) ? 1000 : 100, true);
+ else
+ mTimer->start(mCurrAnim->delay(), true);
+
+ if (!mCurrAnim->next())
+ {
+ if ( mBubble )
+ mCurrAnim->reset();
+ else
+ selectAnimation(mState);
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Display configuration dialog
+//
+void Amor::slotConfigure()
+{
+ if (!mAmorDialog)
+ {
+ mAmorDialog = new AmorDialog();
+ connect(mAmorDialog, SIGNAL(changed()), SLOT(slotConfigChanged()));
+ connect(mAmorDialog, SIGNAL(offsetChanged(int)),
+ SLOT(slotOffsetChanged(int)));
+ }
+
+ mAmorDialog->show();
+}
+
+//--------------------------------------------------------------------------
+//
+// Configuration changed.
+//
+void Amor::slotConfigChanged()
+{
+ reset();
+}
+
+//---------------------------------------------------------------------------
+//
+// Offset changed
+//
+void Amor::slotOffsetChanged(int off)
+{
+ mConfig.mOffset = off;
+
+ if (mCurrAnim->frame())
+ {
+ mAmor->move(mPosition + mTargetRect.x() - mCurrAnim->hotspot().x(),
+ mTargetRect.y() - mCurrAnim->hotspot().y() + (!mInDesktopBottom?mConfig.mOffset:0));
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Display About box
+//
+void Amor::slotAbout()
+{
+ QString about = i18n("Amor Version %1\n\n").arg(AMOR_VERSION) +
+ i18n("Amusing Misuse Of Resources\n\n") +
+ i18n("Copyright (c) 1999 Martin R. Jones <mjones@kde.org>\n\n") +
+ i18n("Original Author: Martin R. Jones <mjones@kde.org>\n") +
+ i18n("Current Maintainer: Gerardo Puga <gpuga@gioia.ing.unlp.edu.ar>\n" ) +
+ "\nhttp://www.powerup.com.au/~mjones/amor/";
+ KMessageBox::about(0, about, i18n("About Amor"));
+}
+
+//---------------------------------------------------------------------------
+//
+// Widget dragged
+//
+void Amor::slotWidgetDragged( const QPoint &delta, bool release )
+{
+ if (mCurrAnim->frame())
+ {
+ int newPosition = mPosition + delta.x();
+ if (mCurrAnim->totalMovement() + newPosition > mTargetRect.width())
+ newPosition = mTargetRect.width() - mCurrAnim->totalMovement();
+ else if (mCurrAnim->totalMovement() + newPosition < 0)
+ newPosition = -mCurrAnim->totalMovement();
+ mPosition = newPosition;
+ mAmor->move(mTargetRect.x() + mPosition - mCurrAnim->hotspot().x(),
+ mAmor->y());
+
+ if ( mTheme.isStatic() && release ) {
+ // static animations save the new position as preferred.
+ int savePos = mPosition;
+ if ( savePos > mTargetRect.width()/2 )
+ savePos -= (mTargetRect.width()+1);
+
+ mConfig.mStaticPos = savePos;
+ mConfig.write();
+ }
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Focus changed to a different window
+//
+void Amor::slotWindowActivate(WId win)
+{
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Window activated:" << win << endl;
+#endif
+
+ mTimer->stop();
+ mNextTarget = win;
+
+ // This is an active event that affects the target window
+ time(&mActiveTime);
+
+ // A window gaining focus implies that the current window has lost
+ // focus. Initiate a blur event if there is a current active window.
+ if (mTargetWin)
+ {
+ // We are losing focus from the current window
+ selectAnimation(Blur);
+ mTimer->start(0, true);
+ }
+ else if (mNextTarget)
+ {
+ // We are setting focus to a new window
+ if (mState != Focus )
+ selectAnimation(Focus);
+ mTimer->start(0, true);
+ }
+ else
+ {
+ // No action - We can get this when we switch between two empty
+ // desktops
+ mAmor->hide();
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Window removed
+//
+void Amor::slotWindowRemove(WId win)
+{
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Window removed" << endl;
+#endif
+
+ if (win == mTargetWin)
+ {
+ // This is an active event that affects the target window
+ time(&mActiveTime);
+
+ selectAnimation(Destroy);
+ mTimer->stop();
+ mTimer->start(0, true);
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Window stacking changed
+//
+void Amor::slotStackingChanged()
+{
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Stacking changed" << endl;
+#endif
+
+ // This is an active event that affects the target window
+ time(&mActiveTime);
+
+ // We seem to get this signal before the window has been restacked,
+ // so we just schedule a restack.
+ mStackTimer->start( 20, TRUE );
+}
+
+//---------------------------------------------------------------------------
+//
+// Properties of a window changed
+//
+void Amor::slotWindowChange(WId win, const unsigned long * properties)
+{
+
+ if (win != mTargetWin)
+ {
+ return;
+ }
+
+ // This is an active event that affects the target window
+ time(&mActiveTime);
+
+ KWin::Info info = KWin::info( mTargetWin );
+
+ if (info.isIconified() ||
+ info.mappingState == NET::Withdrawn)
+ {
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Target window iconified" << endl;
+#endif
+
+ // The target window has been iconified
+ selectAnimation(Destroy);
+ mTargetWin = None;
+ mTimer->stop();
+ mTimer->start(0, true);
+
+ return;
+ }
+
+ if (properties[0] & NET::WMGeometry)
+ {
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Target window moved or resized" << endl;
+#endif
+
+ QRect newTargetRect = KWin::windowInfo(mTargetWin).frameGeometry();
+
+ // if the change in the window caused the animation to fall
+ // out of the working area of the desktop, or if the animation
+ // didn't fall in the working area before but it does now, then
+ // refocus on the current window so that the animation is
+ // relocated.
+ QRect desktopArea = mWin->workArea();
+
+ bool fitsInWorkArea = !(newTargetRect.y() - mCurrAnim->hotspot().y() + mConfig.mOffset < desktopArea.y());
+ if ((!fitsInWorkArea && !mInDesktopBottom) || (fitsInWorkArea && mInDesktopBottom))
+ {
+ mNextTarget = mTargetWin;
+ selectAnimation(Blur);
+ mTimer->start(0, true);
+
+ return;
+ }
+
+ if (!mInDesktopBottom)
+ mTargetRect = newTargetRect;
+
+ // make sure the animation is still on the window.
+ if (mCurrAnim->frame())
+ {
+ hideBubble();
+ if (mTheme.isStatic())
+ {
+ if ( mConfig.mStaticPos < 0 )
+ mPosition = mTargetRect.width() + mConfig.mStaticPos;
+ else
+ mPosition = mConfig.mStaticPos;
+ if ( mPosition >= mTargetRect.width() )
+ mPosition = mTargetRect.width()-1;
+ else if ( mPosition < 0 )
+ mPosition = 0;
+ }
+ else if (mPosition > mTargetRect.width() -
+ (mCurrAnim->frame()->width() - mCurrAnim->hotspot().x()))
+ {
+ mPosition = mTargetRect.width() - (mCurrAnim->frame()->width() - mCurrAnim->hotspot().x());
+ }
+ mAmor->move(mTargetRect.x() + mPosition - mCurrAnim->hotspot().x(),
+ mTargetRect.y() - mCurrAnim->hotspot().y() + (!mInDesktopBottom?mConfig.mOffset:0));
+ }
+
+ return;
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Changed to a different desktop
+//
+void Amor::slotDesktopChange(int desktop)
+{
+ // GP: signal currentDesktopChanged seems to be emitted even if you
+ // change to the very same desktop you are in.
+ if (mWin->currentDesktop() == desktop)
+ return;
+
+#ifdef DEBUG_AMOR
+ kdDebug(10000) << "Desktop change" << endl;
+#endif
+
+ mNextTarget = None;
+ mTargetWin = None;
+ selectAnimation( Normal );
+ mTimer->stop();
+ mAmor->hide();
+}
+
+// GP ===========================================================================
+
+void Amor::slotBubbleTimeout()
+{
+ // has the queue item been displayed for long enough?
+ QueueItem *first = mTipsQueue.head();
+#ifdef DEBUG_AMOR
+ if (!first) kdDebug(10000) << "Amor::slotBubbleTimeout(): empty queue!" << endl;
+#endif
+ if ((first->time() > BUBBLE_TIME_STEP) && (mBubble->isVisible()))
+ {
+ first->setTime(first->time() - BUBBLE_TIME_STEP);
+ mBubbleTimer->start(BUBBLE_TIME_STEP, true);
+ return;
+ }
+
+ // do not do anything if the mouse pointer is in the bubble
+ if (mBubble->mouseWithin())
+ {
+ first->setTime(500); // show this item for another 500ms
+ mBubbleTimer->start(BUBBLE_TIME_STEP, true);
+ return;
+ }
+
+ // are there any other tips pending?
+ if (mTipsQueue.count() > 1)
+ {
+ mTipsQueue.dequeue();
+ showBubble(); // shows the next item in the queue
+ } else
+ hideBubble(true); // hideBubble calls dequeue() for itself.
+}
+
+//===========================================================================
+
+AmorSessionWidget::AmorSessionWidget()
+{
+ // the only function of this widget is to catch & forward the
+ // saveYourself() signal from the session manager
+ connect(kapp, SIGNAL(saveYourself()), SLOT(wm_saveyourself()));
+}
+
+void AmorSessionWidget::wm_saveyourself()
+{
+ // no action required currently.
+}
+
diff --git a/amor/amor.desktop b/amor/amor.desktop
new file mode 100644
index 0000000..c8dfcea
--- /dev/null
+++ b/amor/amor.desktop
@@ -0,0 +1,74 @@
+[Desktop Entry]
+Name=AMOR
+Name[af]=Amor
+Name[ar]=برنامج AMOR
+Name[bg]=Amor
+Name[bn]=আমোর
+Name[fi]=Amor
+Name[fo]=Amor
+Name[fr]=Amor
+Name[hi]=एमोर
+Name[pa]=ਅਮੋਰ
+Name[sv]=Amor
+Name[ta]= AMOR
+Name[tr]=Amor
+Name[zh_CN]=阿莫(AMOR)
+Exec=amor
+Icon=amor
+Type=Application
+DocPath=amor/index.html
+GenericName=On-Screen Creature
+GenericName[be]=Экранная жывёла
+GenericName[bg]=Усмивка за работното място
+GenericName[bn]=পর্দায় বসবাসকারী জন্তু
+GenericName[ca]=Criatura a la pantalla
+GenericName[cs]=Příšerka na obrazovce
+GenericName[cy]=Creadur Ar-Sgrin
+GenericName[da]=Skabning på skærmen
+GenericName[de]=Maskottchen für die Arbeitsfläche
+GenericName[el]=Πλάσμα στην οθόνη
+GenericName[eo]=Surekrana kreaĵo
+GenericName[es]=Criatura de la pantalla
+GenericName[et]=Elajas töölaual
+GenericName[eu]=Pantailako gizakia
+GenericName[fa]=ایجاد‌کنندۀ روی پرده
+GenericName[fi]=Näytönolento
+GenericName[fr]=Créature sur l'écran
+GenericName[ga]=Créatúr ar do scáileán
+GenericName[gl]=Criatura no Escritório
+GenericName[he]=יצור מסכי
+GenericName[hr]=Kretura na zaslonu
+GenericName[hu]=Animált figurák
+GenericName[is]=Skjámyndataka
+GenericName[it]=Creatura sullo schermo
+GenericName[ja]=画面上の生物
+GenericName[km]=ការច្នៃ​ប្រឌិត​លើ​អេក្រង់
+GenericName[ko]=화면 위 생명체
+GenericName[lv]=Ekrāna dzīvnieks
+GenericName[mk]=Креатура на екранот
+GenericName[mt]=Annimal ta' fuq l-iskrin
+GenericName[nb]=Vesen på skjermen
+GenericName[nds]=Schriefdisch-Maskottje
+GenericName[ne]=पर्दा क्रिएचर
+GenericName[nl]=Schermvermaak
+GenericName[nn]=Skjermvesen
+GenericName[pa]=ਆਨ-ਸਕਰੀਨ ਲਵੋ
+GenericName[pl]=Stworzenie ekranowe
+GenericName[pt]=Criatura no Ecrã
+GenericName[pt_BR]=Criatura na Tela
+GenericName[ro]=Creatură pe ecran
+GenericName[ru]=Экранные зверушки
+GenericName[sk]=Stvorenie na obrazovke
+GenericName[sl]=Zaslonska živalca
+GenericName[sr]=Створење на екрану
+GenericName[sr@Latn]=Stvorenje na ekranu
+GenericName[sv]=Varelse på skärmen
+GenericName[ta]=திரையில் உருவாக்கி
+GenericName[tg]=Махлуқ дар экран
+GenericName[tr]=Ekranda Gezinen Yaratık
+GenericName[uk]=Екранна істота
+GenericName[zh_CN]=屏幕涂鸦
+GenericName[zh_TW]=畫面擷取程式
+Terminal=false
+X-DCOP-ServiceType=Unique
+Categories=Qt;KDE;Utility;Amusement;
diff --git a/amor/amor.h b/amor/amor.h
new file mode 100644
index 0000000..a64486b
--- /dev/null
+++ b/amor/amor.h
@@ -0,0 +1,164 @@
+/* amor.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMOR_H
+#define AMOR_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qwidget.h>
+#include <qptrqueue.h>
+
+#include "amoranim.h"
+#include "amortips.h"
+#include "amorconfig.h"
+#include "AmorIface.h"
+
+class AmorDialog;
+class AmorBubble;
+class AmorWidget;
+
+class QTimer;
+class KWinModule;
+class KPopupMenu;
+
+class QueueItem {
+public:
+
+ enum itemType { Talk , Tip };
+
+ QueueItem(itemType ty, QString te, int ti = -1);
+
+ itemType type() { return iType; }
+ QString text() { return iText; };
+ int time() { return iTime; };
+
+ void setTime(int newTime) { if (iTime > 0) iTime = newTime; };
+
+private:
+ itemType iType;
+ QString iText;
+ int iTime;
+};
+
+//---------------------------------------------------------------------------
+//
+// Amor handles window manager input and animation selection and updates.
+//
+class Amor : public QObject, virtual public AmorIface
+{
+ Q_OBJECT
+public:
+ Amor();
+ virtual ~Amor();
+
+ virtual void showTip(QString tip);
+ virtual void showMessage(QString message);
+ virtual void showMessage(QString message, int msec);
+ virtual void screenSaverStopped();
+ virtual void screenSaverStarted();
+
+ void reset();
+
+public slots:
+ void slotWindowActivate(WId);
+ void slotWindowRemove(WId);
+ void slotStackingChanged();
+ void slotWindowChange(WId, const unsigned long * properties);
+ void slotDesktopChange(int);
+
+protected slots:
+ void slotMouseClicked(const QPoint &pos);
+ void slotTimeout();
+ void slotCursorTimeout();
+ void slotConfigure();
+ void slotConfigChanged();
+ void slotOffsetChanged(int);
+ void slotAbout();
+ void slotWidgetDragged( const QPoint &delta, bool release );
+ void restack();
+ void hideBubble(bool forceDequeue = false);
+
+ void slotBubbleTimeout();
+
+protected:
+ enum State { Focus, Blur, Normal, Sleeping, Waking, Destroy };
+
+ bool readConfig();
+ void readGroupConfig(KConfigBase &config, QPtrList<AmorAnim> &animList,
+ const char *seq);
+ void showBubble();
+ AmorAnim *randomAnimation(QPtrList<AmorAnim> &animList);
+ void selectAnimation(State state=Normal);
+ void active();
+
+private:
+ KWinModule *mWin;
+ WId mTargetWin; // The window that the animations sits on
+ QRect mTargetRect; // The goemetry of the target window
+ WId mNextTarget; // The window that will become the target
+ AmorWidget *mAmor; // The widget displaying the animation
+ AmorThemeManager mTheme; // Animations used by current theme
+ AmorAnim *mBaseAnim; // The base animation
+ AmorAnim *mCurrAnim; // The currently running animation
+ int mPosition; // The position of the animation
+ State mState; // The current state of the animation
+ QTimer *mTimer; // Frame timer
+ QTimer *mCursorTimer;// Cursor timer
+ QTimer *mStackTimer; // Restacking timer
+ QTimer *mBubbleTimer;// Bubble tip timer (GP: I didn't create this one, it had no use when I found it)
+ AmorDialog *mAmorDialog; // Setup dialog
+ KPopupMenu *mMenu; // Our menu
+ time_t mActiveTime; // The time an active event occurred
+ QPoint mCursPos; // The last recorded position of the pointer
+ QString mTipText; // Text to display in a bubble when possible
+ AmorBubble *mBubble; // Text bubble
+ AmorTips mTips; // Tips to display in the bubble
+ bool mInDesktopBottom; // the animation is not on top of the
+ // title bar, but at the bottom of the desktop
+
+ AmorConfig mConfig; // Configuration parameters
+ bool mForceHideAmorWidget;
+
+ QPtrQueue<QueueItem> mTipsQueue; // GP: tips queue
+};
+
+//---------------------------------------------------------------------------
+
+class AmorSessionWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ AmorSessionWidget();
+ ~AmorSessionWidget() {};
+public slots:
+ void wm_saveyourself();
+};
+
+#endif // AMOR_H
+
diff --git a/amor/amoranim.cpp b/amor/amoranim.cpp
new file mode 100644
index 0000000..61447f1
--- /dev/null
+++ b/amor/amoranim.cpp
@@ -0,0 +1,254 @@
+/* amoranim.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include <stdlib.h>
+#include <kapplication.h>
+#include <kstandarddirs.h>
+#include "amoranim.h"
+#include "amorpm.h"
+
+//---------------------------------------------------------------------------
+//
+// Constructor
+//
+AmorAnim::AmorAnim(KConfigBase &config)
+ : mMaximumSize(0, 0)
+{
+ mCurrent = 0;
+ mTotalMovement = 0;
+ readConfig(config);
+}
+
+//---------------------------------------------------------------------------
+//
+// Destructor
+//
+AmorAnim::~AmorAnim()
+{
+}
+
+//---------------------------------------------------------------------------
+//
+// Get the Pixmap for the current frame.
+//
+const QPixmap *AmorAnim::frame()
+{
+ const QPixmap *pixmap = 0;
+
+ if (validFrame())
+ pixmap = AmorPixmapManager::manager()->pixmap(*mSequence.at(mCurrent));
+
+ return pixmap;
+}
+
+//---------------------------------------------------------------------------
+//
+// Read a single animation's parameters. The config class should already
+// have its group set to the animation that is to be read.
+//
+void AmorAnim::readConfig(KConfigBase &config)
+{
+ // Read the list of frames to display and load them into the pixmap
+ // manager.
+ mSequence = config.readListEntry("Sequence");
+ int frames = mSequence.count();
+ for ( QStringList::Iterator it = mSequence.begin();
+ it != mSequence.end();
+ ++it )
+ {
+ const QPixmap *pixmap =
+ AmorPixmapManager::manager()->load(*it);
+ if (pixmap)
+ mMaximumSize = mMaximumSize.expandedTo(pixmap->size());
+ }
+
+ // Read the delays between frames.
+ QStrList list;
+ int entries = config.readListEntry("Delay",list);
+ mDelay.resize(frames);
+ for (int i = 0; i < entries && i < frames; i++)
+ mDelay[i] = atoi(list.at(i));
+
+ // Read the distance to move between frames and calculate the total
+ // distance that this aniamtion moves from its starting position.
+ entries = config.readListEntry("Movement",list);
+ mMovement.resize(frames);
+ for (int i = 0; i < entries && i < frames; i++)
+ {
+ mMovement[i] = atoi(list.at(i));
+ mTotalMovement += mMovement[i];
+ }
+
+ // Read the hotspot for each frame.
+ entries = config.readListEntry("HotspotX",list);
+ mHotspot.resize(frames);
+ for (int i = 0; i < entries && i < frames; i++)
+ mHotspot[i].setX(atoi(list.at(i)));
+
+ entries = config.readListEntry("HotspotY",list);
+ for (int i = 0; i < entries && i < frames; i++)
+ mHotspot[i].setY(atoi(list.at(i)));
+
+ // Add the overlap of the last frame to the total movement.
+ const QPoint &lastHotspot = mHotspot[mHotspot.size()-1];
+ if (mTotalMovement > 0)
+ {
+ const QPixmap *lastFrame =
+ AmorPixmapManager::manager()->pixmap(mSequence.last());
+ if (lastFrame)
+ {
+ mTotalMovement += (lastFrame->width() - lastHotspot.x());
+ }
+ }
+ else if (mTotalMovement < 0)
+ {
+ mTotalMovement -= lastHotspot.x();
+ }
+}
+
+//===========================================================================
+
+AmorThemeManager::AmorThemeManager()
+ : mMaximumSize(0, 0)
+{
+ mConfig = 0;
+ mAnimations.setAutoDelete(true);
+}
+
+//---------------------------------------------------------------------------
+//
+AmorThemeManager::~AmorThemeManager()
+{
+ delete mConfig;
+}
+
+//---------------------------------------------------------------------------
+//
+bool AmorThemeManager::setTheme(const QString & file)
+{
+ mPath = locate("appdata", file);
+
+ delete mConfig;
+
+ mConfig = new KSimpleConfig(mPath, true);
+ mConfig->setGroup("Config");
+
+ // Get the directory where the pixmaps are stored and tell the
+ // pixmap manager.
+ QString pixmapPath = mConfig->readPathEntry("PixmapPath");
+ if (pixmapPath.isEmpty())
+ return false;
+
+ if (pixmapPath[0] == '/')
+ {
+ // absolute path to pixmaps
+ mPath = pixmapPath;
+ }
+ else
+ {
+ // relative to config file.
+ mPath.truncate(mPath.findRev('/')+1);
+ mPath += pixmapPath;
+ }
+
+ mStatic = mConfig->readBoolEntry("Static", false);
+
+ mMaximumSize.setWidth(0);
+ mMaximumSize.setHeight(0);
+
+ mAnimations.clear();
+
+ return true;
+}
+
+//---------------------------------------------------------------------------
+//
+// Select an animimation randomly from a group
+//
+AmorAnim *AmorThemeManager::random(const QString & group)
+{
+ QString grp( group );
+
+ if (mStatic)
+ grp = "Base";
+
+ AmorAnimationGroup *animGroup = mAnimations.find(grp);
+
+ if (animGroup) {
+ int idx = kapp->random()%animGroup->count();
+ return animGroup->at( idx );
+ }
+
+ return 0;
+}
+
+//---------------------------------------------------------------------------
+//
+// Read an animation group.
+//
+bool AmorThemeManager::readGroup(const QString & seq)
+{
+ AmorPixmapManager::manager()->setPixmapDir(mPath);
+
+ AmorAnimationGroup *animList = new AmorAnimationGroup;
+ animList->setAutoDelete(true);
+
+ // Read the list of available animations.
+ mConfig->setGroup("Config");
+ QStrList list;
+ int entries = mConfig->readListEntry(seq, list);
+
+ // Read each individual animation
+ for (int i = 0; i < entries; i++)
+ {
+ mConfig->setGroup(list.at(i));
+ AmorAnim *anim = new AmorAnim(*mConfig);
+ animList->append(anim);
+ mMaximumSize = mMaximumSize.expandedTo(anim->maximumSize());
+ }
+
+ // If no animations were available for this group, just add the base anim
+ if (entries == 0)
+ {
+ mConfig->setGroup("Base");
+ AmorAnim *anim = new AmorAnim(*mConfig);
+ if (anim)
+ {
+ animList->append(anim);
+ mMaximumSize = mMaximumSize.expandedTo(anim->maximumSize());
+ entries++;
+ }
+ }
+
+ // Couldn't read any entries at all
+ if (entries == 0)
+ return false;
+
+ mAnimations.insert(seq, animList);
+
+ return true;
+}
+
diff --git a/amor/amoranim.h b/amor/amoranim.h
new file mode 100644
index 0000000..75341a1
--- /dev/null
+++ b/amor/amoranim.h
@@ -0,0 +1,117 @@
+/* amoranim.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORANIM_H
+#define AMORANIM_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <qmemarray.h>
+#include <qdict.h>
+#include <qstringlist.h>
+#include <kconfigbase.h>
+#include <ksimpleconfig.h>
+
+//---------------------------------------------------------------------------
+//
+// AmorAnim contains the properties of a single animation
+//
+class AmorAnim
+{
+public:
+ AmorAnim(KConfigBase &config);
+ virtual ~AmorAnim();
+
+ void reset()
+ { mCurrent = 0; }
+ bool next()
+ { return (++mCurrent < mSequence.count()); }
+ int frameNum() const
+ { return mCurrent; }
+ bool validFrame() const
+ { return (mCurrent < mSequence.count()); }
+ int totalMovement() const
+ { return mTotalMovement; }
+ QSize maximumSize() const
+ { return mMaximumSize; }
+
+ int delay() const
+ { return (validFrame() ? mDelay[mCurrent] : 100); }
+ QPoint hotspot() const
+ { return (validFrame() ? mHotspot[mCurrent] : QPoint(16,16)); }
+ int movement() const
+ { return (validFrame() ? mMovement[mCurrent] : 0); }
+ const QPixmap *frame();
+
+protected:
+ void readConfig(KConfigBase &config);
+
+protected:
+ unsigned int mCurrent; // current frame in sequence
+ QStringList mSequence; // sequence of images to display
+ QMemArray<int> mDelay; // delay between frames
+ QMemArray<QPoint> mHotspot; // the hotspot in a frame
+ QMemArray<int> mMovement; // the distance to move between frames
+ int mTotalMovement; // the total distance this animation moves
+ QSize mMaximumSize; // the maximum size of any frame
+};
+
+//---------------------------------------------------------------------------
+typedef QPtrList<AmorAnim> AmorAnimationGroup;
+
+//---------------------------------------------------------------------------
+//
+// AmorThemeManager maintains an animation theme
+//
+class AmorThemeManager
+{
+public:
+ AmorThemeManager();
+ virtual ~AmorThemeManager();
+
+ bool setTheme(const QString & file);
+ bool readGroup(const QString & seq);
+ bool isStatic() const
+ { return mStatic; }
+
+ AmorAnim *random(const QString & group);
+
+ QSize maximumSize() const { return mMaximumSize; }
+
+protected:
+ QString mPath;
+ KSimpleConfig *mConfig;
+ QSize mMaximumSize; // The largest pixmap used
+ QDict<AmorAnimationGroup> mAnimations; // list of animation groups
+ bool mStatic; // static image
+};
+
+#endif // AMORANIM_H
+
diff --git a/amor/amorbubble.cpp b/amor/amorbubble.cpp
new file mode 100644
index 0000000..a0c9f6b
--- /dev/null
+++ b/amor/amorbubble.cpp
@@ -0,0 +1,250 @@
+/* amorbubble.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include "amorbubble.h"
+#include "amorbubble.moc"
+#include <qpainter.h>
+#include <ktextbrowser.h>
+#include <qtooltip.h>
+#include <kstandarddirs.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/shape.h>
+#include <qtimer.h>
+
+#define ARROW_WIDTH 10
+#define ARROW_HEIGHT 12
+#define BORDER_SIZE 4
+#define BUBBLE_OFFSET 16
+#define BUBBLE_TIMEOUT 4000 // Minimum milliseconds to display a tip
+
+//---------------------------------------------------------------------------
+//
+// Constructor
+//
+AmorBubble::AmorBubble()
+ : QWidget(0, 0, WStyle_Customize | WStyle_NoBorder | WX11BypassWM )
+{
+ mOriginX = 0;
+ mOriginY = 0;
+ mBrowser = new KTextBrowser( this );
+ mBrowser->setFrameStyle( QFrame::NoFrame | QFrame::Plain );
+ mBrowser->setMargin( 0 );
+
+ mBrowser->setWrapPolicy(QTextEdit::AtWordOrDocumentBoundary); // too long to fit in one line?
+
+ QColorGroup clgrp = mBrowser->colorGroup();
+ clgrp.setColor(QColorGroup::Text, Qt::black);
+ //Laurent QTextBrowser didn't have this function FIX me
+ //mBrowser->setPaperColorGroup( clgrp );
+ mBrowser->setPaper( QToolTip::palette().active().brush( QColorGroup::Background ) );
+ mBrowser->setVScrollBarMode( QTextBrowser::AlwaysOff );
+ mBrowser->setHScrollBarMode( QTextBrowser::AlwaysOff );
+ mBrowser->viewport()->installEventFilter( this );
+
+ mBrowser->mimeSourceFactory()->addFilePath(KGlobal::dirs()->findResourceDir("data", "kdewizard/pics")+"kdewizard/pics/");
+ QStringList icons = KGlobal::dirs()->resourceDirs("icon");
+ QStringList::Iterator it;
+ for (it = icons.begin(); it != icons.end(); ++it)
+ mBrowser->mimeSourceFactory()->addFilePath(*it);
+
+ mMouseWithin = false;
+}
+
+//---------------------------------------------------------------------------
+//
+// Destructor
+//
+AmorBubble::~AmorBubble()
+{
+}
+
+//---------------------------------------------------------------------------
+//
+// Set the message to display in the bubble. Causes the geometry of the
+// widget to be recalculated.
+//
+void AmorBubble::setMessage(const QString& message)
+{
+ mMessage = QString( "<html>%1</html>" ).arg( message );
+ // hacks because heightForWidth() doesn't work.
+ setGeometry( -1000, 0, 300, 1000 );
+ show();
+ mBrowser->setGeometry( 0, 0, 250, 1000 );
+ mBrowser->setText( mMessage );
+ calcGeometry();
+}
+
+//---------------------------------------------------------------------------
+//
+// Calculates the size, position and mask of the bubble
+//
+void AmorBubble::calcGeometry()
+{
+ mBound = QRect( 0, 0, 250, 0 );
+// mBound.setHeight( mBrowser->heightForWidth( mBound.width() ) );
+ mBound.setHeight( mBrowser->contentsHeight() );
+ mBound.moveBy(ARROW_WIDTH+BORDER_SIZE, BORDER_SIZE);
+
+ // initialise the default geometry of the bubble
+ int w = mBound.width() + BORDER_SIZE * 2 + ARROW_WIDTH;
+ int h = mBound.height() + BORDER_SIZE * 2;
+ int xpos = mOriginX + BUBBLE_OFFSET;
+ int ypos = mOriginY - BORDER_SIZE - ARROW_HEIGHT / 2;
+
+ mArrowVert = Top;
+ mArrowHorz = Left;
+
+ // The actual position of the bubble may change if it is too close to
+ // the desktop boundary.
+ if (mOriginX + w > kapp->desktop()->width())
+ {
+ // source on right
+ xpos = mOriginX - w - BUBBLE_OFFSET;
+ mArrowHorz = Right;
+ mBound.moveBy( -ARROW_WIDTH, 0 );
+ }
+
+ if (mOriginY + h > kapp->desktop()->height())
+ {
+ // source at bottom
+ ypos = mOriginY - h + BORDER_SIZE + ARROW_HEIGHT / 2;
+ mArrowVert = Bottom;
+ }
+
+ // Check for negative vertical bubble position (top of the screen)
+ if ( ypos < 0 )
+ ypos = 0;
+
+ setGeometry(xpos, ypos, w, h);
+ mBrowser->setGeometry( mBound );
+
+ // create and apply the shape mask
+ mMask.resize(w, h);
+ mMask.fill(color0);
+ QPainter maskPainter(&mMask);
+ maskPainter.setPen(color1);
+ maskPainter.setBrush(color1);
+ drawBubble(maskPainter);
+ XShapeCombineMask( x11Display(), winId(), ShapeBounding, 0, 0,
+ mMask.handle(), ShapeSet );
+}
+
+//---------------------------------------------------------------------------
+//
+// Draw the bubble that text will be draw into using the current pen
+// as the outline and the current brush as the fill.
+//
+void AmorBubble::drawBubble(QPainter &p)
+{
+ QPointArray pointArray(3);
+
+ int left = ARROW_WIDTH;
+
+ if (mArrowHorz == Left)
+ {
+ pointArray.setPoint(0, ARROW_WIDTH+1, 0);
+ pointArray.setPoint(1, 0, -3);
+ pointArray.setPoint(2, ARROW_WIDTH+1, ARROW_HEIGHT);
+ }
+ else
+ {
+ pointArray.setPoint(0, 0, 0);
+ pointArray.setPoint(1, ARROW_WIDTH+1, -3);
+ pointArray.setPoint(2, 0, ARROW_HEIGHT);
+ pointArray.translate(width() - ARROW_WIDTH - 1, 0);
+ left = 0;
+ }
+
+ if (mArrowVert == Top)
+ {
+ pointArray.translate(0, BORDER_SIZE + ARROW_HEIGHT / 2);
+ }
+ else
+ {
+ pointArray.translate(0, height() - BORDER_SIZE - ARROW_HEIGHT / 2);
+ }
+
+// p.drawRoundRect(left, 0, width() - ARROW_WIDTH, height(), 10, 20);
+ p.drawRect(left, 0, width() - ARROW_WIDTH, height());
+
+ QPen pen(p.pen());
+ p.setPen(NoPen);
+ p.drawPolygon(pointArray);
+
+ p.setPen(pen);
+ p.drawPolyline(pointArray, 0, 3);
+}
+
+//---------------------------------------------------------------------------
+//
+// Draw the message in a bubble
+//
+void AmorBubble::paintEvent(QPaintEvent *)
+{
+ QPainter painter(this);
+ painter.setPen(black);
+ painter.setBrush( QToolTip::palette().active().brush( QColorGroup::Background ) );
+ drawBubble(painter);
+}
+
+//---------------------------------------------------------------------------
+//
+// The user clicked on the widget
+//
+void AmorBubble::mouseReleaseEvent(QMouseEvent *)
+{
+ hide();
+}
+
+//---------------------------------------------------------------------------
+//
+bool AmorBubble::eventFilter( QObject *, QEvent *e )
+{
+ switch ( e->type() )
+ {
+
+// GP case QEvent::Enter:
+// GP mBubbleTimer->stop();
+// GP break;
+// GP case QEvent::Leave:
+// GP if ( isVisible() )
+// GP mBubbleTimer->start( 1000, true );
+// GP break;
+ case QEvent::Enter:
+ mMouseWithin = true;
+ break;
+ case QEvent::Leave:
+ mMouseWithin = false;
+ break;
+ case QEvent::MouseButtonRelease:
+ hide(); // GP This is the only reason a bubble might posibly be created but hidden
+ break;
+ default:
+ break;
+ }
+
+ return false;
+}
diff --git a/amor/amorbubble.h b/amor/amorbubble.h
new file mode 100644
index 0000000..722ec91
--- /dev/null
+++ b/amor/amorbubble.h
@@ -0,0 +1,81 @@
+/* amorbubble.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORBUBBLE_H
+#define AMORBUBBLE_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kapplication.h>
+#include <qwidget.h>
+#include <qbitmap.h>
+
+class QTextBrowser;
+class QTimer;
+
+//---------------------------------------------------------------------------
+//
+// AmorBubble displays a message in a shaped window
+//
+class AmorBubble : public QWidget
+{
+ Q_OBJECT
+public:
+ AmorBubble();
+ virtual ~AmorBubble();
+
+ void setOrigin(int x, int y) { mOriginX = x; mOriginY = y; }
+ void setMessage(const QString& message);
+
+ bool mouseWithin() { return mMouseWithin; }
+
+protected:
+ enum VertPos { Top, Bottom };
+ enum HorzPos { Left, Right };
+
+ void calcGeometry();
+ void drawBubble(QPainter &p);
+ virtual void paintEvent(QPaintEvent *);
+ virtual void mouseReleaseEvent(QMouseEvent *);
+ virtual bool eventFilter( QObject *, QEvent * );
+
+protected:
+ QString mMessage; // message to display
+ int mOriginX; // X origin of bubble arrow
+ int mOriginY; // Y origin of bubble arrow
+ QRect mBound; // bounds of the text
+ QBitmap mMask; // shape mask
+ VertPos mArrowVert; // vertical position of the arrow
+ HorzPos mArrowHorz; // horizontal position of the arrow
+ QTextBrowser *mBrowser; // displays the message
+
+ bool mMouseWithin; // the mouse pointer is inside the bubble
+};
+
+#endif // AMORBUBBLE_H
+
diff --git a/amor/amorconfig.cpp b/amor/amorconfig.cpp
new file mode 100644
index 0000000..3a0c209
--- /dev/null
+++ b/amor/amorconfig.cpp
@@ -0,0 +1,83 @@
+/* amorconfig.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include <kapplication.h>
+#include "amorconfig.h"
+#include <kconfig.h>
+
+//---------------------------------------------------------------------------
+//
+// Constructor
+//
+AmorConfig::AmorConfig()
+{
+ mOnTop = false;
+ mOffset = 0;
+ mTheme = "blobrc";
+ mTips = false;
+ mAppTips = true;
+ mStaticPos = 20;
+}
+
+//---------------------------------------------------------------------------
+//
+// Read the configuration
+//
+void AmorConfig::read()
+{
+ KConfig *config = kapp->config();
+ KConfigGroupSaver cs(config, "General");
+
+ mOnTop = config->readBoolEntry("OnTop", false);
+ mOffset = config->readNumEntry("Offset", 0);
+ mTheme = config->readEntry("Theme", "blobrc");
+ mTips = config->readBoolEntry("Tips", false);
+ mRandomTheme = config->readBoolEntry("RandomTheme", false);
+ mAppTips = config->readBoolEntry("ApplicationTips", true);
+ mStaticPos = config->readNumEntry("StaticPosition", 20);
+}
+
+//---------------------------------------------------------------------------
+//
+// Write the configuration
+//
+void AmorConfig::write()
+{
+ KConfig *config = kapp->config();
+ KConfigGroupSaver cs(config, "General");
+
+ config->writeEntry("OnTop", mOnTop);
+ config->writeEntry("Offset", mOffset);
+ config->writeEntry("Theme", mTheme);
+ config->writeEntry("Tips", mTips);
+ config->writeEntry("RandomTheme", mRandomTheme);
+ config->writeEntry("ApplicationTips", mAppTips);
+ config->writeEntry("StaticPosition", mStaticPos);
+
+ config->sync();
+}
+
+
diff --git a/amor/amorconfig.h b/amor/amorconfig.h
new file mode 100644
index 0000000..9a93069
--- /dev/null
+++ b/amor/amorconfig.h
@@ -0,0 +1,58 @@
+/* amorconfig.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORCONFIG_H
+#define AMORCONFIG_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstring.h>
+
+//---------------------------------------------------------------------------
+//
+// AmorConfig contains amor configuration parameters
+//
+class AmorConfig
+{
+public:
+ AmorConfig();
+
+ void read();
+ void write();
+
+ QString mTheme;
+ bool mOnTop;
+ int mOffset;
+ bool mTips;
+ bool mRandomTheme;
+ bool mAppTips;
+ int mStaticPos;
+};
+
+#endif // AMORCONFIG_H
+
diff --git a/amor/amordialog.cpp b/amor/amordialog.cpp
new file mode 100644
index 0000000..36f2be3
--- /dev/null
+++ b/amor/amordialog.cpp
@@ -0,0 +1,285 @@
+/* amordialog.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qslider.h>
+#include <qpainter.h>
+#include <kapplication.h>
+#include <ksimpleconfig.h>
+#include "amordialog.h"
+#include "amordialog.moc"
+#include "version.h"
+#include <klocale.h>
+#include <qvbox.h>
+#include <kstandarddirs.h>
+
+//---------------------------------------------------------------------------
+//
+// Constructor
+//
+AmorDialog::AmorDialog()
+ : KDialogBase(0, "amordlg", false, i18n("Options"), Ok|Apply|Cancel, Ok )
+{
+ mConfig.read();
+ QVBox *mainwidget = makeVBoxMainWidget();
+
+ QHBox *hb = new QHBox(mainwidget);
+
+ // Theme list
+ QVBox *themeBox = new QVBox(hb);
+ themeBox->setSpacing(spacingHint());
+
+ QLabel *label = new QLabel(i18n("Theme:"), themeBox);
+
+ mThemeListBox = new QListBox(themeBox);
+ connect(mThemeListBox,SIGNAL(highlighted(int)),SLOT(slotHighlighted(int)));
+ mThemeListBox->setMinimumSize( fontMetrics().maxWidth()*20,
+ fontMetrics().lineSpacing()*6 );
+
+ mAboutEdit = new QMultiLineEdit(themeBox);
+ mAboutEdit->setReadOnly(true);
+ mAboutEdit->setMinimumHeight( fontMetrics().lineSpacing()*4 );
+
+ themeBox->setStretchFactor(mThemeListBox, 4);
+ themeBox->setStretchFactor(mAboutEdit, 1);
+
+ // Animation offset
+ QVBox *offsetBox = new QVBox(hb);
+ offsetBox->setSpacing(spacingHint());
+ label = new QLabel(i18n("Offset:"), offsetBox);
+
+ QSlider *slider = new QSlider(-40, 40, 5, mConfig.mOffset,
+ QSlider::Vertical, offsetBox);
+ connect(slider, SIGNAL(valueChanged(int)), SLOT(slotOffset(int)));
+
+ // Always on top
+ QCheckBox *checkBox = new QCheckBox(i18n("Always on top"), mainwidget);
+ connect(checkBox, SIGNAL(toggled(bool)), SLOT(slotOnTop(bool)));
+ checkBox->setChecked(mConfig.mOnTop);
+
+ checkBox = new QCheckBox(i18n("Show random tips"), mainwidget);
+ connect(checkBox, SIGNAL(toggled(bool)), SLOT(slotRandomTips(bool)));
+ checkBox->setChecked(mConfig.mTips); // always keep this one after the connect, or the QList would not be grayed when it should
+
+ checkBox = new QCheckBox(i18n("Use a random character"), mainwidget);
+ connect(checkBox, SIGNAL(toggled(bool)), SLOT(slotRandomTheme(bool)));
+ checkBox->setChecked(mConfig.mRandomTheme);
+
+ checkBox = new QCheckBox(i18n("Allow application tips"), mainwidget);
+ connect(checkBox, SIGNAL(toggled(bool)), SLOT(slotApplicationTips(bool)));
+ checkBox->setChecked(mConfig.mAppTips);
+
+ readThemes();
+}
+
+//---------------------------------------------------------------------------
+//
+// Destructor
+//
+AmorDialog::~AmorDialog()
+{
+}
+
+//---------------------------------------------------------------------------
+//
+// Get list of all themes
+//
+void AmorDialog::readThemes()
+{
+ QStringList files;
+
+ // Non-recursive search for theme files, with the relative paths stored
+ // in files so that absolute paths are not used.
+ KGlobal::dirs()->findAllResources("appdata", "*rc", false, false, files);
+
+ for (QStringList::ConstIterator it = files.begin();
+ it != files.end();
+ it++)
+ addTheme(*it);
+}
+
+//---------------------------------------------------------------------------
+//
+// Add a single theme to the list
+//
+void AmorDialog::addTheme(const QString& file)
+{
+ KSimpleConfig config(locate("appdata", file), true);
+
+ config.setGroup("Config");
+
+ QString pixmapPath = config.readPathEntry("PixmapPath");
+ if (pixmapPath.isEmpty())
+ {
+ return;
+ }
+
+ pixmapPath += "/";
+
+ if (pixmapPath[0] != '/')
+ {
+ // relative to config file. We add a / to indicate the dir
+ pixmapPath = locate("appdata", pixmapPath);
+ }
+
+ QString description = config.readEntry("Description");
+ QString about = config.readEntry("About", " ");
+ QString pixmapName = config.readEntry("Icon");
+
+ pixmapPath += pixmapName;
+
+ QPixmap pixmap(pixmapPath);
+
+ AmorListBoxItem *item = new AmorListBoxItem(description, pixmap);
+ mThemeListBox->insertItem(item);
+ mThemes.append(file);
+ mThemeAbout.append(about);
+
+ if (mConfig.mTheme == file)
+ {
+ mThemeListBox->setSelected(mThemeListBox->count()-1, true);
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// User highlighted a theme
+//
+void AmorDialog::slotHighlighted(int index)
+{
+ mConfig.mTheme = *mThemes.at(index);
+ mAboutEdit->setText(*mThemeAbout.at(index));
+}
+
+//---------------------------------------------------------------------------
+//
+// User changed offset
+//
+void AmorDialog::slotOffset(int off)
+{
+ mConfig.mOffset = off;
+ emit offsetChanged(mConfig.mOffset);
+}
+
+//---------------------------------------------------------------------------
+//
+// User toggled always on top
+//
+void AmorDialog::slotOnTop(bool onTop)
+{
+ mConfig.mOnTop = onTop;
+}
+
+//---------------------------------------------------------------------------
+//
+// User toggled random tips
+//
+void AmorDialog::slotRandomTips(bool tips)
+{
+ mConfig.mTips = tips;
+}
+
+//---------------------------------------------------------------------------
+//
+// User toggled random character
+//
+void AmorDialog::slotRandomTheme(bool randomTheme)
+{
+ mThemeListBox->setEnabled(!randomTheme);
+ mConfig.mRandomTheme = randomTheme;
+}
+
+//---------------------------------------------------------------------------
+//
+// User toggled application tips
+//
+void AmorDialog::slotApplicationTips(bool tips)
+{
+ mConfig.mAppTips = tips;
+}
+
+//---------------------------------------------------------------------------
+//
+// User clicked Ok
+//
+void AmorDialog::slotOk()
+{
+ mConfig.write();
+ emit changed();
+ accept();
+}
+
+//---------------------------------------------------------------------------
+//
+// User clicked Ok
+//
+void AmorDialog::slotApply()
+{
+ mConfig.write();
+ emit changed();
+}
+
+//---------------------------------------------------------------------------
+//
+// User clicked Cancel
+//
+void AmorDialog::slotCancel()
+{
+ // restore offset
+ KConfig *config = kapp->config();
+ KConfigGroupSaver cs(config, "General");
+ emit offsetChanged(config->readNumEntry("Offset"));
+ reject();
+}
+
+//===========================================================================
+//
+// AmorListBoxItem implements a list box items for selection of themes
+//
+void AmorListBoxItem::paint( QPainter *p )
+{
+ p->drawPixmap( 3, 0, mPixmap );
+ QFontMetrics fm = p->fontMetrics();
+ int yPos; // vertical text position
+ if ( mPixmap.height() < fm.height() )
+ yPos = fm.ascent() + fm.leading()/2;
+ else
+ yPos = mPixmap.height()/2 - fm.height()/2 + fm.ascent();
+ p->drawText( mPixmap.width() + 5, yPos, text() );
+}
+
+int AmorListBoxItem::height(const QListBox *lb ) const
+{
+ return QMAX( mPixmap.height(), lb->fontMetrics().lineSpacing() + 1 );
+}
+
+int AmorListBoxItem::width(const QListBox *lb ) const
+{
+ return mPixmap.width() + lb->fontMetrics().width( text() ) + 6;
+}
+
diff --git a/amor/amordialog.h b/amor/amordialog.h
new file mode 100644
index 0000000..59e639d
--- /dev/null
+++ b/amor/amordialog.h
@@ -0,0 +1,107 @@
+/* amordialog.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORDIALOG_H
+#define AMORDIALOG_H
+
+#include <qdialog.h>
+#include <qlistbox.h>
+#include <qptrlist.h>
+#include <qmultilineedit.h>
+#include "amorconfig.h"
+#include <kdialogbase.h>
+
+//---------------------------------------------------------------------------
+//
+// AmorDialog provides a setup dialog.
+//
+class AmorDialog : public KDialogBase
+{
+ Q_OBJECT
+
+public:
+ AmorDialog();
+ virtual ~AmorDialog();
+
+signals:
+ //-----------------------------------------------------------------------
+ //
+ // The configuration has changed in some way.
+ //
+ void changed();
+
+ //-----------------------------------------------------------------------
+ //
+ // The animation offset has been changed.
+ //
+ void offsetChanged(int);
+
+protected slots:
+ void slotHighlighted(int);
+ void slotOnTop(bool);
+ void slotRandomTips(bool);
+ void slotRandomTheme(bool);
+ void slotApplicationTips(bool);
+ void slotOffset(int);
+ void slotOk();
+ void slotApply();
+ void slotCancel();
+
+protected:
+ void readThemes();
+ void addTheme(const QString& file);
+
+protected:
+ QListBox *mThemeListBox;
+ QMultiLineEdit *mAboutEdit;
+ QStringList mThemes;
+ QStringList mThemeAbout;
+ AmorConfig mConfig;
+};
+
+//---------------------------------------------------------------------------
+//
+// AmorListBoxItem implements a list box items for selection of themes
+//
+class AmorListBoxItem : public QListBoxItem
+{
+public:
+ AmorListBoxItem(const QString & s, const QPixmap& p)
+ : QListBoxItem(), mPixmap(p)
+ { setText(s); }
+
+protected:
+ virtual void paint(QPainter *);
+ virtual int height(const QListBox *) const;
+ virtual int width(const QListBox *) const;
+ virtual const QPixmap *pixmap() const { return &mPixmap; }
+
+private:
+ QPixmap mPixmap;
+};
+
+#endif // AMORDIALOG_H
+
diff --git a/amor/amorpm.cpp b/amor/amorpm.cpp
new file mode 100644
index 0000000..2a34495
--- /dev/null
+++ b/amor/amorpm.cpp
@@ -0,0 +1,94 @@
+/* amorpm.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include "amorpm.h"
+
+// static
+AmorPixmapManager *AmorPixmapManager::mManager = 0;
+
+//---------------------------------------------------------------------------
+//
+// Constructor
+//
+AmorPixmapManager::AmorPixmapManager()
+ : mPixmapDir(".")
+{
+ mPixmaps.setAutoDelete(true);
+}
+
+//---------------------------------------------------------------------------
+//
+// Destructor
+//
+AmorPixmapManager::~AmorPixmapManager()
+{
+}
+
+//---------------------------------------------------------------------------
+//
+// Load an image into the image manager
+//
+// Returns:
+// pointer to pixmap if loaded successfully, 0 otherwise.
+//
+const QPixmap *AmorPixmapManager::load(const QString & img)
+{
+ QPixmap *pixmap = mPixmaps.find(img);
+
+ if (!pixmap)
+ {
+ // pixmap has not yet been loaded.
+ QString path = mPixmapDir + QString("/") + img;
+ pixmap = new QPixmap(path);
+
+ if (!pixmap->isNull())
+ {
+ mPixmaps.insert(img,pixmap);
+ }
+ else
+ {
+ delete pixmap;
+ pixmap = 0;
+ }
+ }
+
+ return pixmap;
+}
+
+//---------------------------------------------------------------------------
+//
+// returns a pointer to the pixmap manager.
+//
+AmorPixmapManager *AmorPixmapManager::manager()
+{
+ if (!mManager)
+ {
+ mManager = new AmorPixmapManager();
+ }
+
+ return mManager;
+}
+
diff --git a/amor/amorpm.h b/amor/amorpm.h
new file mode 100644
index 0000000..f67850b
--- /dev/null
+++ b/amor/amorpm.h
@@ -0,0 +1,64 @@
+/* amorpm.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORPM_H
+#define AMORPM_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qdict.h>
+#include <qpixmap.h>
+
+//---------------------------------------------------------------------------
+//
+// AmorPixmapManager stores the frames used in animations.
+//
+class AmorPixmapManager
+{
+public:
+ AmorPixmapManager();
+ virtual ~AmorPixmapManager();
+
+ void setPixmapDir(const QString &dir)
+ { mPixmapDir = dir; }
+ void reset()
+ { mPixmapDir = "."; mPixmaps.clear(); }
+ const QPixmap *load(const QString & img);
+ const QPixmap *pixmap(const QString & img) const
+ { return mPixmaps.find(img); }
+
+ static AmorPixmapManager *manager();
+
+public:
+ QString mPixmapDir; // get pixmaps from here
+ QDict<QPixmap> mPixmaps; // list of pixmaps
+ static AmorPixmapManager *mManager; // static pointer to instance
+};
+
+#endif // AMORPM_H
+
diff --git a/amor/amortips.cpp b/amor/amortips.cpp
new file mode 100644
index 0000000..1ef7c8f
--- /dev/null
+++ b/amor/amortips.cpp
@@ -0,0 +1,181 @@
+/* amortips.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include <stdlib.h>
+#include <kapplication.h>
+#include "amortips.h"
+#include <kstandarddirs.h>
+#include <klocale.h>
+#include <qfile.h>
+#include <qregexp.h>
+#include <kdebug.h>
+
+//---------------------------------------------------------------------------
+//
+AmorTips::AmorTips()
+{
+ KGlobal::locale()->insertCatalogue("ktip"); // For ktip tip translations
+}
+
+//---------------------------------------------------------------------------
+//
+// Set the file containing tips. This reads all tips into memory at the
+// moment - need to make more efficient.
+//
+bool AmorTips::setFile(const QString& file)
+{
+ bool rv = false;
+
+ QString path( locate("appdata", file) );
+ if(path.length() && read(path))
+ rv = true;
+
+ rv |= readKTips();
+
+ return rv;
+}
+
+//---------------------------------------------------------------------------
+//
+// Clear all tips from memory
+//
+void AmorTips::reset()
+{
+ mTips.clear();
+}
+
+//---------------------------------------------------------------------------
+//
+// Get a tip randomly from the list
+//
+QString AmorTips::tip()
+{
+ if (mTips.count())
+ {
+ QString tip = *mTips.at(kapp->random() % mTips.count());
+ return i18n(tip.utf8());
+ }
+
+ return i18n("No tip");
+}
+
+//---------------------------------------------------------------------------
+//
+// Read the tips from ktip's file
+//
+bool AmorTips::readKTips()
+{
+ QString fname;
+
+ fname = locate("data", QString("kdewizard/tips"));
+
+ if (fname.isEmpty())
+ return false;
+
+ QFile f(fname);
+ if (f.open(IO_ReadOnly))
+ {
+ // Reading of tips must be exactly as in KTipDatabase::loadTips for translation
+ QString content = f.readAll();
+ const QRegExp rx("\\n+");
+
+ int pos = -1;
+ while ((pos = content.find("<html>", pos + 1, false)) != -1)
+ {
+ QString tip = content
+ .mid(pos + 6, content.find("</html>", pos, false) - pos - 6)
+ .replace(rx, "\n");
+ if (!tip.endsWith("\n"))
+ tip += "\n";
+ if (tip.startsWith("\n"))
+ tip = tip.mid(1);
+ if (tip.isEmpty())
+ {
+ kdDebug() << "Empty tip found! Skipping! " << pos << endl;
+ continue;
+ }
+ mTips.append(tip);
+ }
+
+ f.close();
+ }
+
+ return true;
+}
+
+//---------------------------------------------------------------------------
+//
+// Read all tips from the specified file.
+//
+bool AmorTips::read(const QString& path)
+{
+ QFile file(path);
+
+ if (file.open(IO_ReadOnly))
+ {
+ while (!file.atEnd())
+ {
+ readTip(file);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+//---------------------------------------------------------------------------
+//
+// Read a single tip.
+//
+bool AmorTips::readTip(QFile &file)
+{
+ char buffer[1024] = "";
+ QString tip;
+
+ while (!file.atEnd() && buffer[0] != '%')
+ {
+ file.readLine(buffer, 1024);
+ if (buffer[0] != '%')
+ {
+ tip += QString::fromUtf8(buffer);
+ }
+ }
+
+ if (!tip.isEmpty())
+ {
+ if (tip[tip.length()-1] == '\n')
+ {
+ tip.truncate(tip.length()-1);
+ }
+ mTips.append(tip);
+ return true;
+ }
+
+ return false;
+}
+
+
diff --git a/amor/amortips.h b/amor/amortips.h
new file mode 100644
index 0000000..7b0ddff
--- /dev/null
+++ b/amor/amortips.h
@@ -0,0 +1,60 @@
+/* amortips.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORTIPS_H
+#define AMORTIPS_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qstrlist.h>
+class QFile;
+
+//---------------------------------------------------------------------------
+//
+// AmorTips selects random tips from a data file
+//
+class AmorTips
+{
+public:
+ AmorTips();
+
+ bool setFile(const QString& file);
+ void reset();
+ QString tip();
+
+protected:
+ bool readKTips();
+ bool read(const QString& file);
+ bool readTip(QFile &file);
+
+protected:
+ QStringList mTips;
+};
+
+#endif // AMORTIPS_H
+
diff --git a/amor/amorwidget.cpp b/amor/amorwidget.cpp
new file mode 100644
index 0000000..e343524
--- /dev/null
+++ b/amor/amorwidget.cpp
@@ -0,0 +1,125 @@
+/* amorwidget.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#include "amorwidget.h"
+#include "amorwidget.moc"
+#include <qbitmap.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/shape.h>
+
+//---------------------------------------------------------------------------
+//
+// Constructor
+//
+AmorWidget::AmorWidget()
+ : QWidget(0, 0, WStyle_Customize | WStyle_NoBorder | WX11BypassWM ),
+ mPixmap(0)
+{
+ setBackgroundMode( NoBackground );
+ dragging = false;
+}
+
+//---------------------------------------------------------------------------
+//
+// Destructor
+//
+AmorWidget::~AmorWidget()
+{
+}
+
+//---------------------------------------------------------------------------
+//
+// Set the pixmap to display
+//
+void AmorWidget::setPixmap(const QPixmap *pixmap)
+{
+ mPixmap = pixmap;
+
+ if (mPixmap)
+ {
+ if (mPixmap->mask())
+ {
+ XShapeCombineMask( x11Display(), winId(), ShapeBounding, 0, 0,
+ mPixmap->mask()->handle(), ShapeSet );
+ repaint(false);
+ }
+
+ update();
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// Draw the pixmap
+//
+void AmorWidget::paintEvent(QPaintEvent *)
+{
+ if (mPixmap)
+ bitBlt( this, 0, 0, mPixmap );
+ else
+ erase();
+}
+
+//---------------------------------------------------------------------------
+//
+// The user clicked on the widget
+//
+void AmorWidget::mousePressEvent(QMouseEvent *me)
+{
+ clickPos = me->globalPos();
+}
+
+//---------------------------------------------------------------------------
+//
+// The user moved the mouse
+//
+void AmorWidget::mouseMoveEvent(QMouseEvent *me)
+{
+ if ( me->state() == LeftButton ) {
+ if ( !dragging && (clickPos-me->globalPos()).manhattanLength() > 3 )
+ dragging = true;
+ if ( dragging ) {
+ emit dragged( me->globalPos() - clickPos, false );
+ clickPos = me->globalPos();
+ }
+ }
+}
+
+//---------------------------------------------------------------------------
+//
+// The user clicked on the widget
+//
+void AmorWidget::mouseReleaseEvent(QMouseEvent *me)
+{
+ if ( dragging )
+ emit dragged( me->globalPos() - clickPos, true );
+ else if ( me->state() == RightButton )
+ emit mouseClicked(clickPos);
+
+ clickPos = QPoint();
+ dragging = false;
+}
+
diff --git a/amor/amorwidget.h b/amor/amorwidget.h
new file mode 100644
index 0000000..5aaac82
--- /dev/null
+++ b/amor/amorwidget.h
@@ -0,0 +1,67 @@
+/* amorwidget.h
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+#ifndef AMORWIDGET_H
+#define AMORWIDGET_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kapplication.h>
+#include <qwidget.h>
+
+//---------------------------------------------------------------------------
+//
+// AmorWidget displays a shaped pixmap
+//
+class AmorWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ AmorWidget();
+ virtual ~AmorWidget();
+
+ void setPixmap(const QPixmap *pixmap);
+
+signals:
+ void mouseClicked(const QPoint &pos);
+ void dragged( const QPoint &delta, bool release );
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+
+protected:
+ const QPixmap *mPixmap;
+ QPoint clickPos;
+ bool dragging;
+};
+
+#endif // AMORWIDGET_H
+
diff --git a/amor/configure.in.in b/amor/configure.in.in
new file mode 100644
index 0000000..1fe61bd
--- /dev/null
+++ b/amor/configure.in.in
@@ -0,0 +1,3 @@
+if test "x$kde_use_qt_mac" = "xyes"; then
+ DO_NOT_COMPILE="$DO_NOT_COMPILE amor"
+fi
diff --git a/amor/data/Makefile.am b/amor/data/Makefile.am
new file mode 100644
index 0000000..35a9c97
--- /dev/null
+++ b/amor/data/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS = pics
+
+amor_DATA = blobrc ghostrc eyesrc bonhommerc nekorc pingurc wormrc tips-en \
+ billyrc bsdrc tuxrc taorc
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor
+
+install-data-local:
+ -rm -f $(DESTDIR)$(amordir)/tips
+ $(LN_S) $(amordir)/tips-en $(DESTDIR)$(amordir)/tips
+
+uninstall-local:
+ -rm -f $(DESTDIR)$(amordir)/tips
diff --git a/amor/data/billyrc b/amor/data/billyrc
new file mode 100644
index 0000000..c0b7a4b
--- /dev/null
+++ b/amor/data/billyrc
@@ -0,0 +1,129 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/static
+Static=true
+Description=Little Billy
+Description[af]=Klein Billy
+Description[ar]=بيل الصغير
+Description[be]=Маленькі Біллі
+Description[bg]=Малкият Били
+Description[bn]=ছোট্ট বিলি
+Description[br]=Billy Bihan
+Description[bs]=Mali Billy
+Description[ca]=Petit Guillem
+Description[cs]=Malý Billy
+Description[cy]=Bili Bach
+Description[da]=Lille Billy
+Description[de]=Klein Billy
+Description[el]=Μικρός Billy
+Description[eo]=Malgranda Bilĉjo
+Description[es]=Pequeño Billy
+Description[et]=Pisi-Villu
+Description[eu]=Billy Txikia
+Description[fa]=چوب‌دستی کوچک
+Description[fi]=Pikku-Billy
+Description[gl]=O Pequeno Billy
+Description[he]=בילי הקטן
+Description[hi]=नन्हा बिल्लू
+Description[hr]=Mali Billy
+Description[hu]=Billy fiú
+Description[is]=Billi litli
+Description[it]=Piccolo Bill
+Description[ja]=リトルビル
+Description[km]=កូនប៊ីលីតូច
+Description[ko]=작은 빌리
+Description[lt]=Mažasis Bilas
+Description[lv]=Mazais Billijs
+Description[mk]=Малиот Били
+Description[mt]=Iċ-Ċkejken Billy
+Description[nb]=Lille Billy
+Description[nds]=Lütt Willi
+Description[ne]=सानो बिल्ली
+Description[nl]=Kleine Billy
+Description[nn]=Litlebill
+Description[pa]=ਛੋਟੀ ਬਿੱਲੀ
+Description[pl]=Mały Billy
+Description[pt]=Pequeno Bill
+Description[pt_BR]=Pequeno Billy
+Description[ro]=Micuţul Billy
+Description[ru]=Маленький Билли
+Description[sk]=Malý Billy
+Description[sl]=Mali Billy
+Description[sr]=Мали Били
+Description[sr@Latn]=Mali Bili
+Description[sv]=Lilla Billy
+Description[ta]= லிட்டில் பில்யி
+Description[tg]=Билли Пастқад
+Description[th]=บิลลี่ตัวจ้อย
+Description[tr]=Küçük Billy
+Description[uk]=Маленький Біллі
+Description[uz]=Kichik Billi
+Description[uz@cyrillic]=Кичик Билли
+Description[ven]=Billy Mutuku
+Description[zh_CN]=小小比利
+Description[zh_TW]=小比利
+About=Static window sitter\nGraphic from http://www.xbill.org/
+About[af]=Statiese venster sitter\nGraphic van http://www.xbill.org/
+About[ar]=قاعدة النوافذ الساكنة \nالرسوم من http://www.xbill.org
+About[az]=Statik pəncərə mürəbbiyəsi\nQrafikalar http://www.xbill.org/
+About[be]=Статычны наглядчык вокнаў\nГрафіка з http://www.xbill.org/
+About[bg]=Неанимирано човече\nГрафиката е взета от http://www.xbill.org/
+About[bn]=উইন্ডোর এক স্থানে স্থির হয়ে বসে থাকে\nগ্রাফিক্সের উৎস - http://www.xbill.org/
+About[bs]=Statički window sitter\nGrafika iz http://www.xbill.org/
+About[ca]=Model de finestra estàtica\nGràfic de http://www.xbill.org/
+About[cs]=Statická ozdoba okna\nGrafika z http://www.xbill.org/
+About[cy]=Gwarchodydd ffenest sefydlog\nGraffeg oddiwrth http://www.xbill.org/
+About[da]=Statisk vinduessitter\nGrafik fra http://www.xbill.org/
+About[de]=Statischer Fenstersitzer\nGraphik von http://www.xbill.org/
+About[el]=Στατικό εικονίδιο\nΓραφικό από το http://www.xbill.org/
+About[eo]=Moviĝema fenestrosidulo\nGrafiko de http://www.xbill.org/
+About[es]=Cuidador estático de ventanas\nGraphic from http://www.xbill.org/
+About[et]=Liikumatu aknahoidja\nGraafika: http://www.xbill.org/
+About[eu]=Lehio modelo egonkorra\nIrudia http://www.xbill.org/'tik
+About[fa]=مدل پنجرۀ ایستا\nنگاره از http://www.xbill.org/
+About[fi]=Staattinen ikkunakoriste\nGrafiikat osoitteesta http://www.xbill.org/
+About[fr]=Surveillant statique de fenêtres\nDessin de http://www.xbill.org/
+About[ga]=Peata statach fuinneoige\nGrafaic ó http://www.xbill.org/
+About[gl]=Vixiante estático de fiestras\nImaxe sacada de http://www.xbill.org/
+About[he]=שומר חלון סטטי\nגרפיקה מתוך /http://www.xbill.org
+About[hi]=स्थिर विंडो सिटर\nचित्र http://www.xbill.org/ से
+About[hr]=Statički sjedač na prozoru\nSlika preuzeta sa http://www.xbill.org/
+About[hu]=Nem animált ablakdíszítés\nA grafika származási helye: http://www.xbill.org/
+About[is]=Static window sitter\nMynd frá http://www.xbill.org/
+About[it]=Immagine statica.\nGrafica presa da http://www.xbill.org/
+About[ja]=動かないウィンドウ監視人\nグラフィックは http://www.xbill.org/ より
+About[km]=អ្នក​ថែទាំ​បង្អួចថិតិវន្ត\nរចនា​ក្រាហ្វិក​ពី http://www.xbill.org/
+About[lt]=Nejudantis sėdėtojas ant lango\nGrafika iš http://www.xbill.org/
+About[lv]=Statisks uz loga sēdētājs\nGrafika no http://www.xbill.org/
+About[mk]=Статичен седач врз прозорец\nСликата е од http://www.xbill.org/
+About[mt]=Stampa statika\nGrafika minn http://www.xbill.org/
+About[nb]=Statisk vindusitter\n Bilde fra http://www.xbill.org/
+About[nds]=Fast Finstersitter\nGrafik vun http://www.xbill.org/
+About[ne]=http://www.xbill.org/ बाट स्थिर सञ्झ्याल sitter\nGraphic
+About[nl]=Statische vensterzitter\nAfbeeldingen van from http://www.xbill.org/
+About[nn]=Statisk vindaugssitjar\nBilete frå http://www.xbill.org/
+About[pl]=Obrazek w tym samym miejscu ekranu\nGrafika ze strony http://www.xbill.org/
+About[pt]=Elemento estático sobre as janelas\nImagens de http://www.xbill.org/
+About[pt_BR]=Janela Estática\nGráfica de http://www.xbill.org/
+About[ro]=Imagine statică\nGrafică de la http://www.xbill.org/
+About[ru]=Статичный сторож окон\nГрафика от http://www.xbill.org/
+About[sk]=Statická ozdoba okna\nGrafika z http://www.xbill.org/
+About[sl]=Statično okno\nGrafika z http://www.xbill.org/
+About[sr]=Статични седач на прозору\nГрафика са http://www.xbill.org/
+About[sr@Latn]=Statični sedač na prozoru\nGrafika sa http://www.xbill.org/
+About[sv]=Statisk fönstervakt\nGrafik från http://www.xbill.org/
+About[ta]= நிலையான சாளரம் \nவரைகலையில் இருந்து http://www.தமிழ்இணையம்.org/
+About[tg]=Нигаҳбонии статикии тиреза\nГрафика аз http://www.xbill.org/
+About[th]=นั่งเล่นบนหน้าต่าง\nกราฟิกจาก http://www.xbill.org/
+About[tr]=Statik pencere bakıcısı\nGrafikler http://www.xbill.org/ 'tan
+About[uk]=Натурщик статичного вікна\nГрафіка з http://www.xbill.org/
+About[ven]=Tshidzuli tsha window isa tshimbili\nGirafu ubva http://www.xbill.org/
+About[xh]=Isibambo sewindow esingashukumi\nUmzobo http://www.xbill.org/
+About[zh_CN]=窗口静坐者\n图形来自 http://www.xbill.org/
+Icon=../preview/billy.png
+
+[Base]
+Sequence=billy.png
+HotspotX=14
+HotspotY=40
+
diff --git a/amor/data/blobrc b/amor/data/blobrc
new file mode 100644
index 0000000..176ae07
--- /dev/null
+++ b/amor/data/blobrc
@@ -0,0 +1,312 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/animated/blob
+Description=Multi-Talented Spot
+Description[ar]=نقطة متعددة المواهب
+Description[be]=Таленавіты калабок
+Description[bg]=Всезнайко
+Description[bn]=বহুমুখী প্রতিভাসম্পন্ন বিন্দু
+Description[bs]=Više-talentirana tačka
+Description[ca]=Anunci multi-dotat
+Description[cs]=Talentovaný chlapík
+Description[cy]=Smotyn Aml-Dalentog
+Description[da]=Plet med multitalent
+Description[de]=Das Multitalent
+Description[el]=Πολυτάλαντη κουκκίδα
+Description[eo]=Multtalenta makulo
+Description[es]=Mancha multifacética
+Description[et]=Väga andekas plekk
+Description[eu]=Ahalmen Askodun Gunea
+Description[fa]=شکارچی استعدادها
+Description[fi]=Monitaitoinen piste
+Description[fr]=Point à talents multiples
+Description[ga]=Spota Ildánach
+Description[gl]=Ponto con moitas faculdades
+Description[he]=פרצוף כישרוני
+Description[hi]=लाल बुझक्कड़
+Description[hr]=Višestruko nadarena točka
+Description[hu]=Spot
+Description[is]=Fjölhæfur Depill
+Description[it]=Macchia con molte abilità
+Description[ja]=マルチタレントスポット
+Description[km]=ក្បាល​មាន​ទេពកោសល្យ​ច្រើន
+Description[ko]=다재다능한 점
+Description[lv]=Multitalantīgs traips
+Description[mk]=Мултиталентирана точка
+Description[mt]=Ballun Bravu u Divertenti
+Description[nb]=Flekk med mange talenter
+Description[nds]=Dat Multitalent
+Description[ne]=बहुँमुखी बिन्दु
+Description[nl]=Multi-getalenteerde stip
+Description[nn]=Talentfullt punkt
+Description[pl]=Bardzo zdolna plamka
+Description[pt]=Ponto Muito Talentoso
+Description[pt_BR]=Spot com Multi-talentos
+Description[ro]=Punct cu multiple talente
+Description[ru]=Талантливое пятнышко
+Description[sk]=Šikovný krúžok
+Description[sl]=Splošno nadarjena pika
+Description[sr]=Вишеталентована тачка
+Description[sr@Latn]=Višetalentovana tačka
+Description[sv]=Punkt med många talanger
+Description[tg]=Одами Оқил
+Description[th]=จุดอารมณ์ดี
+Description[tr]=Çok Yetenekli Benek
+Description[uk]=Здібна кулька
+Description[xh]=Indawo Eneziphiwo Ezininzi
+Description[zh_CN]=多才多艺的脸
+About=By Martin R. Jones\nJet pack, beam and fire animations by Mark Grant
+About[af]=Deur Martin R. Jones\nJet pak, straal en vuur animasie Deur Merk Toegestaan
+About[ar]=من مارتن ر. جونز\nJet pack, الضوء, و النار من تصميم مارك غرانت
+About[az]=Martin R. Jones tərəfindən\nJet pack, beam and fire animations by Mark Grant
+About[be]=Аўтары Martin R. Jones\nАнімацыі агню, палёту і луча - Mark Grant
+About[bg]=Автор Мартин Р. Джоунс\nПодобрения и анимация от Марк Гранд
+About[bn]=তৈরি করেছেন মার্টিন আর. জোন্স\nজেট প্যাক, রশ্মি ও আগুনের অ্যানিমেশন তৈরি করেছেন মার্ক গ্র্যান্ট
+About[bs]=Autor: Martin R. Jones\nAnimacije mlaznog ranca, zrake i pucanja napravio Mark Grant
+About[ca]=Per Martin R. Jones\nPaquet jet, nau i animacions de foc per Mark Grant
+About[cs]=Autor Martin R. Jones\nAnimace: Mark Grant
+About[cy]=Gan Martin R. Jones\nAnimeiddiadau pecyn jet, pelydryn a tân gan Mark Grant
+About[da]=Af Martin R. Jones\nJetpack, stråle- og brandanimationer af Mark Grant
+About[de]=Von Martin R. Jones\nRaketenrucksack, Strahl- und Feueranimationen von Mark Grant
+About[el]=Από τον Martin R. Jones\nJet pack, εφέ κίνησης ακτίνας και φωτιάς από τον Mark Grant
+About[eo]=De Martin R. Jones\nĴetpako, radiado kaj fajrospektakleto de Mark Grant
+About[es]=Por Martin R. Jones\nAnimaciones de la mochila a chorro, rayos y fuego por Mark Grant
+About[et]=Autor: Martin R. Jones\nJet pack, beam and fire animatsioonid: Mark Grant
+About[eu]=Martin R. Jonesek egina\nJet bilduma, tximista eta su animazioak Mark Grantek eginak
+About[fa]=توسط مارتین آر. جونز \n، پویانماییهای فوران، پرتو و آتش توسط مارک گرانت
+About[fi]=Tehnyt Martin R. Jones\nAnimaatiot Mark Grant
+About[fr]=Par Martin R. Jones\nAnimations du jet et du feu par Mark Grant
+About[ga]=Le Martin R. Jones\nÍomhánna beo den scairdphaca, léas, agus tine le Mark Grant
+About[gl]=Por Martin R. Jones\nAs animacións do propulsor, do raio e do fogo son de Mark Grant
+About[he]=מאת מרטין ר. ג'ונס\nאנימציות תעופה, שיגור והתלקחות מאת מארק גרנט
+About[hi]=मार्टिन आर. जोन्स द्वारा\nजेट पैक, शहतीर तथा अग्नि एनिमेशन्स- मार्क ग्रान्ट द्वारा
+About[hr]=Autor: Martin R. Jones\nAnimacije malznog paketa, zrake i vatre: Mark Grant
+About[hu]=Készítette: Martin R. Jones\nA jet pack, a sugár és a tűz animációja Mark Grant munkája
+About[is]=Eftir Martin R. Jones\nÞotuhreyfill, leysir og teikningar af skotum eftir Mark Grant
+About[it]=Di Martin R. Jones.\nLe animazioni dello zaino-razzo, del fascio e del fuoco sono state realizzate da Mark Grant.
+About[ja]=By Martin R. Jones\nジェットパック、ビーム、ファイアアニメーション by Mark Grant
+About[km]=ដោយ Martin R. Jones\nJet pack, ចលនា​ភ្លើង និង​បាច់​ពន្លឺ​ដោយ Mark Grant
+About[lt]=Darė Martin R. Jones\nJet pack, spindulių ir ugnies animacijos Mark Grant
+About[lv]=Autors - Martin R. Jones\nAnimācija - Mark Grant
+About[mk]=Од Мартин Р. Џонс\nАнимации со ракетен погон, зрак и оган од Марк Грант
+About[mt]=Ta' Martin R. Jones\nUħud mill-animazzjonijiet ta' Mark Grant
+About[nb]=Av Martin R. Jones\nJet-pakke, stråle og flamme-animasjoner av Mark Grant
+About[nds]=Vun Martin R. Jones\nRaketendrift, Strahl un Füeranimatschonen vun Mark Grant
+About[nl]=Door Martin R. Jones\nJet pack, beam en fire animaties door Mark Grant
+About[nn]=Av Martin R. Jones\nJetmotor, stråle- og flammeanimasjon av Mark Grant
+About[pl]=Autorstwa Martina Jonesa\nPromienie i animacje ognia autorstwa Marka Granta
+About[pt]=De Martin R. Jones\nJactos e animações de raios e fogo de Mark Grant
+About[pt_BR]=Por Martin R. Jones\nAnimações por Mark Grant
+About[ro]=De Martin R. Jones\nAnimaţie motor rachetă, rază şi foc de Mark Grant
+About[ru]=Автор - Martin R. Jones\nАнимация от Mark Grant
+About[sk]=Vytvoril Martin R. Jones\nJet pack, laser a oheň vytvoril Mark Grant
+About[sl]=Od Martina R. Jonesa\nAnimacije izdelal Mark Grant
+About[sr]=Од Мартина Р. Џонса (Martin R. Jones)\nМлазни ранац, анимација зракова и ватре од Марка Гранта (Mark Grant)
+About[sr@Latn]=Od Martina R. Džonsa (Martin R. Jones)\nMlazni ranac, animacija zrakova i vatre od Marka Granta (Mark Grant)
+About[sv]=Av Martin R. Jones\nJetpack, stråle och eldanimeringar av Mark Grant
+About[ta]=மார்டீன் ரா.ஜோன்ஸ்\nஜெட் பக், பீம் மற்றும் நெருப்பு அசைவூட்டம் மார்க் கிரன்ட்
+About[tg]=Мартин Р.Ҷонес\nАниматсияҳо аз Марк Грант
+About[th]=โดย Martin R. Jones\nJet pack, beam และสร้างการพ่นไฟโดย Mark Grant
+About[tr]=Martin R. Jones\nMark Grant Jet pack, ışın ve ateş animasyonlarının sahibi.
+About[uk]=Автор: Martin R. Jones\nСтрумінь, промені та оживлення вогню: Mark Grant
+About[ven]=Nga Martin R. Jones\nJet pack, beam na zwa zwipuka zwamulilo nga Mark Grant
+About[xh]=Ngu Martin R. Jones\nJet pack, umqadi nomlilo wophiliso ngu Mark Grant
+About[zh_CN]=作者:Martin R. Jones\nJet pack、光束和火焰动画作者为:Mark Grant
+Icon=../../preview/blob.png
+Base=Base
+Sequences=Blink,BounceLeft,BounceRight,Hair,Ears,Girl,ShuffleLeft,ShuffleRight,Glasses,RollLeft,RollRight,UpsideDown,FadeLeft,FadeRight,JetRight,JetLeft,Fire
+Focus=ZoomIn,DropIn,FadeIn,BeamDown
+Blur=ZoomOut,FadeOut,BeamUp
+Destroy=DropOut
+Sleep=Snooze
+Wake=Blink
+
+[Base]
+Sequence=blob.png
+Movement=0
+Delay=4000
+HotspotX=16
+HotspotY=28
+
+[ZoomIn]
+Sequence=blob_z3.png,blob_z2.png,blob_z1.png
+Movement=0,0,0
+Delay=100,100,100
+HotspotX=16,16,16
+HotspotY=28,28,28
+
+[ZoomOut]
+Sequence=blob_z1.png,blob_z2.png,blob_z3.png
+Movement=0,0,0
+Delay=100,100,100
+HotspotX=16,16,16
+HotspotY=28,28,28
+
+[DropIn]
+Sequence=blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png
+Movement=0,0,0,0,0
+Delay=150,100,100,100,100
+HotspotX=16,16,16,16,16
+HotspotY=750,500,250,100,50
+
+[DropOut]
+Sequence=blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png,blob_ex1.png
+Movement=0,0,0,0,0,0,0,0
+Delay=150,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=0,-25,-50,-100,-250,-500,-750,-1000
+
+[Snooze]
+Sequence=blob_sl4.png,blob_sl1.png,blob_sl2.png,blob_sl3.png
+Movement=0,0,0,0
+Delay=1000,500,500,500
+HotspotX=16,16,16,16
+HotspotY=28,28,28,28
+
+[Blink]
+Sequence=blob_b1.png,blob_b2.png,blob_b1.png
+Movement=0,0,0
+Delay=100,100,100
+HotspotX=16,16,16
+HotspotY=28,28,28
+
+[BounceLeft]
+Sequence=blob_b1.png,blob.png,blob.png,blob.png,blob_b1.png
+Movement=0,-8,-8,-8,-8
+Delay=100,100,100,100,100
+HotspotX=16,16,16,16,16
+HotspotY=28,36,38,36,28
+
+[BounceRight]
+Sequence=blob_b1.png,blob.png,blob.png,blob.png,blob_b1.png
+Movement=0,8,8,8,8
+Delay=100,100,100,100,100
+HotspotX=16,16,16,16,16
+HotspotY=28,36,38,36,28
+
+[Hair]
+Sequence=blob_h1.png,blob_h2.png,blob_h3.png,blob_h2.png,blob_h1.png
+Movement=0,0,0,0,0
+Delay=200,200,2000,200,200
+HotspotX=16,16,16,16,16
+HotspotY=28,28,28,28,28
+
+[Ears]
+Sequence=blob_e1.png
+Movement=0
+Delay=3000
+HotspotX=16
+HotspotY=28
+
+[Girl]
+Sequence=blob_g1.png,blob_g2.png,blob_g1.png
+Movement=0,0,0
+Delay=800,200,800
+HotspotX=16,16,16
+HotspotY=28,28,28
+
+[ShuffleLeft]
+Sequence=blob_s1.png,blob_s2.png,blob_s3.png,blob_s2.png,blob_s3.png,blob_s2.png,blob_s3.png,blob_s2.png,blob_s1.png
+Movement=0,-4,-4,-4,-4,-4,-4,-4,0
+Delay=200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16
+HotspotY=29,32,32,32,32,32,32,32,29
+
+[ShuffleRight]
+Sequence=blob_s1.png,blob_s2.png,blob_s3.png,blob_s2.png,blob_s3.png,blob_s2.png,blob_s3.png,blob_s2.png,blob_s1.png
+Movement=0,4,4,4,4,4,4,4,0
+Delay=200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16
+HotspotY=29,32,32,32,32,32,32,32,29
+
+[Glasses]
+Sequence=blob_gl1.png,blob_gl2.png,blob_gl3.png,blob_gl2.png,blob_gl1.png
+Movement=0,0,0,0,0
+Delay=150,150,3000,150,150
+HotspotX=16,16,16,16,16
+HotspotY=28,28,28,28,28
+
+[RollLeft]
+Sequence=blob_r315.png,blob_r270.png,blob_r225.png,blob_r180.png,blob_r135.png,blob_r90.png,blob_r45.png,blob.png
+Movement=-4,-4,-4,-4,-4,-4,-4,-4
+Delay=100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=28,28,28,28,28,28,28,28
+
+[RollRight]
+Sequence=blob_r45.png,blob_r90.png,blob_r135.png,blob_r180.png,blob_r225.png,blob_r270.png,blob_r315.png,blob.png
+Movement=4,4,4,4,4,4,4,4
+Delay=100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=28,28,28,28,28,28,28,28
+
+[UpsideDown]
+Sequence=blob_r45.png,blob_r90.png,blob_r135.png,blob_r180.png,blob_r225.png,blob_r270.png,blob_r315.png,blob.png
+Movement=0,0,0,0,0,0,0,0
+Delay=100,100,100,3000,100,100,100,100
+HotspotX=10,6,10,16,22,28,22,16
+HotspotY=26,18,10,6,10,18,26,28
+
+[FadeIn]
+Sequence=blob_f3.png,blob_f2.png,blob_f1.png
+Movement=0,0,0
+Delay=100,100,100
+HotspotX=16,16,16
+HotspotY=28,28,28
+
+[FadeOut]
+Sequence=blob_f1.png,blob_f2.png,blob_f3.png
+Movement=0,0,0
+Delay=100,100,100
+HotspotX=16,16,16
+HotspotY=28,28,28
+
+[FadeLeft]
+Sequence=blob_f1.png,blob_f2.png,blob_f3.png,blob.png,blob_f3.png,blob_f2.png,blob_f1.png
+Movement=0,0,0,-100,0,0,0
+Delay=100,100,100,500,100,100,100
+HotspotX=16,16,16,2000,16,16,16
+HotspotY=28,28,28,28,28,28,28
+
+[FadeRight]
+Sequence=blob_f1.png,blob_f2.png,blob_f3.png,blob.png,blob_f3.png,blob_f2.png,blob_f1.png
+Movement=0,0,0,100,0,0,0
+Delay=100,100,100,500,100,100,100
+HotspotX=16,16,16,2000,16,16,16
+HotspotY=28,28,28,28,28,28,28
+
+[Fire]
+Sequence=blob_fire2.png,blob_fire3.png,blob_fire4.png,blob_fire5.png,blob_fire6.png,blob_fire5.png,blob_fire6.png,blob_fire5.png,blob_fire6.png,blob_fire5.png,blob_fire6.png,blob_fire7.png,blob_fire8.png,blob_fire9.png,blob_fire10.png,blob_fire11.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=600,400,300,200,200,200,200,200,200,200,200,200,200,200,200,3000
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,26,26
+
+[JetRight]
+Sequence=blob_r_turn1.png,blob_r_turn2.png,blob_r_turn3.png,blob_r_turn4.png,blob_jet1.png,blob_jet2.png,blob_jet3.png,blob_jet4.png,blob_jet3.png,blob_jet4.png,blob_jet3.png,blob_jet2.png,blob_r_turn4.png,blob_r_turn3.png,blob_r_turn2.png,blob_r_turn1.png
+Movement=0,0,0,0,0,8,16,20,20,20,16,16,8,0,0,0
+Delay=100,100,100,200,200,200,200,200,200,200,200,200,200,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=28,28,28,28,28,32,38,44,44,44,44,38,32,28,28,28,28
+
+[JetLeft]
+Sequence=blob_l_turn1.png,blob_l_turn2.png,blob_l_turn3.png,blob_l_turn4.png,blob_l_jet1.png,blob_l_jet2.png,blob_l_jet3.png,blob_l_jet4.png,blob_l_jet3.png,blob_l_jet4.png,blob_l_jet3.png,blob_l_jet2.png,blob_l_turn4.png,blob_l_turn3.png,blob_l_turn2.png,blob_l_turn1.png
+Movement=0,0,0,0,0,-8,-16,-20,-20,-20,-16,-16,-8,0,0,0
+Delay=100,100,100,200,200,200,200,200,200,200,200,200,200,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=28,28,28,28,28,32,38,44,44,44,44,38,32,28,28,28,28
+
+[BeamDown]
+Sequence=blob_BeamDown1.png,blob_BeamDown2.png,blob_BeamDown3.png,blob_BeamDown4.png,blob_BeamDown5.png,blob_BeamDown6.png,blob_BeamDown7.png,blob_BeamDown8.png,blob_BeamDown9.png
+Movement=0,0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16
+HotspotY=28,28,28,28,28,28,28,28,28
+
+[BeamUp]
+Sequence=blob_BeamUp1.png,blob_BeamUp2.png,blob_BeamUp3.png,blob_BeamUp4.png,blob_BeamUp5.png,blob_BeamUp6.png,blob_BeamUp7.png,blob_BeamUp8.png,blob_BeamUp9.png,blob_BeamUp10.png
+Movement=0,0,0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16
+HotspotY=28,28,28,28,28,28,28,28,28,28
+
diff --git a/amor/data/bonhommerc b/amor/data/bonhommerc
new file mode 100644
index 0000000..2ee5eda
--- /dev/null
+++ b/amor/data/bonhommerc
@@ -0,0 +1,193 @@
+# KDE Config File
+#
+# This guy seems to be waiting or is bored or something.
+# jead@iname.com
+#
+[Config]
+PixmapPath=pics/animated/bonhomme
+Description=Bonhomme
+Description[be]=Пляшучыя чалавечкі
+Description[bg]=Тао
+Description[bn]=বনমি
+Description[cs]=Mužíček
+Description[et]=Kriipsu-Juku
+Description[hi]=बॉनहॉम
+Description[km]=មនុស្ស​ឆ្អឹង
+Description[lv]=KauluVīrs
+Description[ne]=बोन्होम
+Description[pl]=Dobry człowiek
+Description[ru]=Добрячок
+Description[sr]=Костурко
+Description[sr@Latn]=Kosturko
+Description[ta]= பான்ஸாமி
+Description[tg]=Бонхомме
+Description[th]=มนุษย์ลายเส้น
+Description[tr]=Yıldırım Adam
+Description[uk]=Іграшковий чоловічок
+Description[wa]=Boulome
+Description[zh_CN]=Bonhomme线条人
+About=By Jean-Claude Dumas
+About[af]=Deur Jean-Claude Dumas
+About[ar]=من جان كلود دوماس
+About[az]=Jean-Claude Dumas tərəfindən
+About[be]=Аўтар Jean-Claude Dumas
+About[bg]=Автор Жан Клод Дюма
+About[bn]=তৈরি করেছেন জাঁ-ক্ল ডুমাস
+About[br]=Gant Jean-Claude Dumas
+About[bs]=Autor: Jean-Claude Dumas
+About[ca]=Per Jean-Claude Dumas
+About[cs]=Autor Jean-Claude Dumas
+About[cy]=Gan Jean-Claude Dumas
+About[da]=Af Jean-Claude Dumas
+About[de]=Von Jean-Claude Dumas
+About[el]=Από τον Jean-Claude Dumas
+About[eo]=De Jean-Claude Dumas
+About[es]=Por Jean-Claude Dumas
+About[et]=Autor: Jean-Claude Dumas
+About[eu]=Jean-Claude Dumasek Egina
+About[fa]=توسط جین کلود داموس
+About[fi]=Tehnyt Jean-Claude Dumas
+About[fo]=Av Jean-Claude Dumas
+About[fr]=Par Jean-Claude Dumas
+About[ga]=Le Jean-Claude Dumas
+About[gl]=Por Jean-Claude Dumas
+About[he]=מאת ז'אן-קלוד דומא
+About[hi]=जीन-क्लाउड डूमा द्वारा
+About[hr]=Autor: Jean-Claude Dumas
+About[hu]=Készítette: Jean-Claude Dumas
+About[is]=Eftir Jean-Claude Dumas
+About[it]=Di Jean-Claude Dumas
+About[km]=ដោយ Jean-Claude Dumas
+About[lt]=Darė Jean-Claude Dumas
+About[lv]=Autors - Jean-Claude Dumas
+About[mk]=Од Жан Клод Дима
+About[mt]=Ta' Jean-Claude Dumas
+About[nb]=Av Jean-Claude Dumas
+About[nds]=Vun Jean-Claude Dumas
+About[ne]=जिन-क्लाउड डुमासद्वारा
+About[nl]=Door Jean-Claude Dumas
+About[nn]=Av Jean-Claude Dumas
+About[pl]=Autorstwa Jean-Claude'a Dumasa
+About[pt]=De Jean-Claude Dumas
+About[pt_BR]=Por Jean-Claude Dumas
+About[ro]=De Jean-Claude Dumas
+About[ru]=Автор - Jean-Claude Dumas
+About[sk]=Vytvoril Jean-Claude Dumas
+About[sl]=Od Jean-Claudea Dumasa
+About[sr]=Од Жана-Клода Диме (Jean-Claude Dumas)
+About[sr@Latn]=Od Žana-Kloda Dime (Jean-Claude Dumas)
+About[sv]=Av Jean-Claude Dumas
+About[tg]=Ҷан-Клауде Думас
+About[th]=โดย Jean-Claude Dumas
+About[tr]=Jean-Claude Dumas
+About[uk]=Автор: Jean-Claude Dumas
+About[uz]=Jean-Klaude Dumas (Jean-Claude Dumas) yaratgan
+About[uz@cyrillic]=Жеан-Клауде Думас (Jean-Claude Dumas) яратган
+About[ven]=Nga Jean-Claude Dumas
+About[wa]=Sicrît pa Jean-Claude Dumas
+About[xh]=Ngu Jean-Claude Dumas
+About[zh_CN]=作者:Jean-Claude Dumas
+Icon=../../preview/bonhomme.png
+Base=Base
+Sequences=WalkRight,WalkLeft,Pof,Drib,Col,ColRight,ColLeft,Hop,Sa,Hi
+Focus=Go,Col
+Blur=UnGo,Col
+Destroy=DropOut
+
+[Base]
+Sequence=b-f.png,b-f2.png,b-f.png,b-f2.png,b-f.png,b-f2.png,b-f.png,b-f1.png,b-f.png,b-f2.png,b-f.png,b-f2.png,b-f.png,b-f2.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=300,300,300,300,300,300,300,300,300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[Go]
+Sequence=bgo7.png,bgo6.png,bgo5.png,bgo4.png,bgo3.png,bgo2.png,bgo1.png,b-f.png
+Movement=0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30
+
+[UnGo]
+Sequence=b-f.png,bgo1.png,bgo2.png,bgo3.png,bgo4.png,bgo5.png,bgo6.png,bgo7.png,
+Movement=0,0,0,0,0,0,0,0
+Delay=150,150,150,150,150,150,150,150
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30
+
+[Pof]
+Sequence=bpof1.png,bpof1.png,bpof1.png,bpof2.png,bpof3.png,bpof4.png,bpof5.png,bpof6.png,bpof6.png,bpof1.png,bpof1.png,bpof1.png,bpof2.png,bpof3.png,bpof4.png,bpof5.png,bpof6.png,bpof6.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[Drib]
+Sequence=bdrib1.png,bdrib2.png,bdrib3.png,bdrib4.png,bdrib5.png,bdrib6.png,bdrib7.png,bdrib6.png,bdrib5.png,bdrib4.png,bdrib3.png,bdrib4.png,bdrib5.png,bdrib6.png,bdrib7.png,bdrib6.png,bdrib5.png,bdrib4.png,bdrib3.png,bdrib4.png,bdrib5.png,bdrib6.png,bdrib7.png,bdrib6.png,bdrib5.png,bdrib4.png,bdrib3.png,bdrib2.png,bdrib1
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=300,300,100,100,100,100,50,100,100,100,100,100,100,100,100,50,100,100,100,100,100,100,100,100,50,100,100,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[WalkLeft]
+Sequence=b4-r.png,b3-r.png,b2-r.png,b1-r.png,b2-r.png,b3-r.png,b4-r.png,b3-r.png,b2-r.png,b1-r.png,b2-r.png,b3-r.png,b4-r.png,b3-r.png,b2-r.png,b1-r.png,b2-r.png,b3-r.png,b4-r.png
+Movement=-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
+Delay=200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[WalkRight]
+Sequence=b4.png,b3.png,b2.png,b1.png,b2.png,b3.png,b4.png,b3.png,b2.png,b1.png,b2.png,b3.png,b4.png,b3.png,b2.png,b1.png,b2.png,b3.png,b4.png
+Movement=4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+Delay=200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[DropOut]
+Sequence=bdrop.png,bdrop.png,bdrop.png,bdrop.png,bdrop.png,bdrop.png,bdrop.png,bdrop.png
+Movement=0,0,0,0,0,0,0,0
+Delay=150,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=0,-25,-50,-100,-250,-500,-750,-1000
+
+[Col]
+Sequence=bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[ColLeft]
+Sequence=bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png
+Movement=0,0,0,0,0,0,0,0,-150,0,0,0,0,0,0,0
+Delay=50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[ColRight]
+Sequence=bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png,bcol1.png,bcol2.png
+Movement=0,0,0,0,0,0,0,0,-150,0,0,0,0,0,0,0
+Delay=50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[Hop]
+Sequence=b-f.png,bh1.png,bdrop.png,bh1.png,b-f.png,bh1.png,bdrop.png,bh1.png,b-f.png,bh1.png,bdrop.png,bh1.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0
+Delay=150,150,150,150,150,150,150,150,150,150,150,150
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,40,60,40,30,40,60,40,30,40,60,40
+
+[Sa]
+Sequence=sa1.png,sa2.png,sa2a.png,sa2b.png,sa2c.png,sa2a.png,sa2b.png,sa2c.png,sa2a.png,sa2b.png,sa2c.png,sa2.png,sa1.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=300,300,200,200,200,200,200,200,200,200,200,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[Hi]
+Sequence=salut.png,salut1.png
+Movement=0,0
+Delay=4000,300
+HotspotX=16,16
+HotspotY=30,30
diff --git a/amor/data/bsdrc b/amor/data/bsdrc
new file mode 100644
index 0000000..8b88bbc
--- /dev/null
+++ b/amor/data/bsdrc
@@ -0,0 +1,128 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/static
+Static=true
+Description=FreeBSD Mascot
+Description[af]=Freebsd Gelukbringer
+Description[az]=FreeBSD Gəlinciyi
+Description[be]=Сімвал FreeBSD
+Description[bg]=Талисман на FreeBSD
+Description[bn]=FreeBSD মাস্কট
+Description[bs]=FreeBSD maskota
+Description[ca]=Mascota de FreeBSD
+Description[cs]=Maskot FreeBSD
+Description[cy]=Masgot FreeBSD
+Description[da]=FreeBSD-maskot
+Description[de]=FreeBSD-Maskottchen
+Description[el]=Η μασκότ του FreeBSD
+Description[eo]=Simbolbesto de FreeBSD
+Description[es]=Mascota de FreeBSD
+Description[et]=FreeBSD maskott
+Description[eu]=FreeBSD Maskota
+Description[fa]=مایۀ خوش‌شانسی FreeBSD
+Description[fi]=FreeBSD-maskotti
+Description[fr]=Mascotte de FreeBSD
+Description[ga]=Sonóg FreeBSD
+Description[gl]=A mascota de FreeBSD
+Description[he]=הקמיע של BSD
+Description[hi]=फ्री-बीएसडी शुभंकर
+Description[hr]=FreeBSD maskota
+Description[hu]=FreeBSD kabala
+Description[is]=BSD lukkudýrið
+Description[it]=Mascotte di FreeeBSD
+Description[ja]=FreeBSD マスコット
+Description[km]=សុភមង្គល​វត្ថុ FreeBSD
+Description[ko]=FreeBSD 마스코트
+Description[lt]=FreeBSD talismanas
+Description[lv]=FreeBSD talismans
+Description[mk]=Маскотата на FreeBSD
+Description[ms]= Maskot FreeBSD
+Description[nb]=FreeBSD-maskott
+Description[nds]=FreeBSD-Maskottje
+Description[ne]=स्वतन्त्र बीएसडी मासकोट
+Description[nl]=FreeBSD-mascotte
+Description[nn]=FreeBSD-maskot
+Description[pl]=Maskotka FreeBSD
+Description[pt]=Mascote do FreeBSD
+Description[pt_BR]=Mascote do FreeBSD
+Description[ro]=Mascota FreeBSD
+Description[ru]=Чёртик FreeBSD
+Description[sk]=Maskot FreeBSD
+Description[sl]=Maskota FreeBSD
+Description[sr]=Маскота FreeBSD-а
+Description[sr@Latn]=Maskota FreeBSD-a
+Description[sv]=FreeBSD-maskot
+Description[ta]= இலவசம் BSD Mascot
+Description[tg]=Аджари FreeBSD
+Description[th]=สัญลักษณ์ของ FreeBSD
+Description[tr]=FreeBSD Maskotu
+Description[uk]=Талісман FreeBSD
+Description[uz]=FreeBSD tumori
+Description[uz@cyrillic]=FreeBSD тумори
+Description[ven]=Mascot ya BSD dza mahala
+Description[wa]=Mascote FreeBSD
+Description[zh_CN]=FreeBSD 吉祥物
+About=Static window sitter
+About[af]=Statiese venster sitter
+About[ar]=قاعد النوافذ الساكنة
+About[az]=Statik pəncərə mürəbbiyəsi
+About[be]=Статычны наглядчык вокнаў
+About[bg]=Неанимирано дяволче
+About[bn]=উইন্ডোর এক স্থানে স্থির হয়ে বসে থাকে
+About[bs]=Statički window sitter
+About[ca]=Model estàtic de finestra
+About[cs]=Statická ozdoba okna
+About[cy]=Gwarchodydd ffenest sefydlog
+About[da]=Statisk vinduessitter
+About[de]=Statischer Fenstersitzer
+About[el]=Στατικό εικονίδιο
+About[eo]=Moviĝema fenestrosidulo
+About[es]=Cuidador estático de ventanas
+About[et]=Liikumatu aknahoidja
+About[eu]=Lehio modelo egonkorra
+About[fa]=مدل پنجرۀ ایستا
+About[fi]=Staattinen ikkunallaistuja
+About[fr]=Surveillant statique de fenêtres
+About[ga]=Peata statach fuinneoige
+About[gl]=Vixiante estático de fiestras
+About[he]=שומר חלון סטטי
+About[hi]=स्थिर विंडो सिटर
+About[hr]=Statički sjedač na prozoru
+About[hu]=Nem animált ablakdíszítés
+About[is]=Situr og passar glugga
+About[it]=Immagine statica
+About[ja]=動かないウィンドウ監視人
+About[km]=អ្នក​ថែទាំ​បង្អួចឋិតិវន្ត
+About[lt]=Nejudantis sėdėtojas ant lango
+About[lv]=Statisks uz loga sēdētājs
+About[mk]=Статичен седач врз прозорци
+About[mt]=Stampa statika
+About[nb]=Statisk vindusitter
+About[nds]=Fast Finstersitter
+About[ne]=स्थिर सञ्झ्याल सिटर
+About[nl]=Statische vensterzitter
+About[nn]=Statisk vindaugssitjar
+About[pl]=Stale w tym samym miejscu
+About[pt]=Elemento estático pousado sobre as janelas
+About[pt_BR]=Janela Estática
+About[ro]=Imagine statică
+About[ru]=Статичный сторож окон
+About[sk]=Statická ozdoba okna
+About[sl]=Statično okno
+About[sr]=Статични седач на прозору
+About[sr@Latn]=Statični sedač na prozoru
+About[sv]=Statisk fönstervakt
+About[ta]= நிலையான சாளரம் அமர்தல்
+About[tg]=Нигаҳбонии статикии тиреза
+About[th]=นั่งเล่นบนหน้าต่าง
+About[tr]=Statik pencere bakıcı
+About[uk]=Статична прикраса для вікна
+About[ven]=Tshidzuli tsha window yo imaho
+About[zh_CN]=窗口静坐者
+Icon=../preview/bsd.png
+
+[Base]
+Sequence=bsd.png
+HotspotX=25
+HotspotY=54
+
diff --git a/amor/data/eyesrc b/amor/data/eyesrc
new file mode 100644
index 0000000..7adc974
--- /dev/null
+++ b/amor/data/eyesrc
@@ -0,0 +1,232 @@
+# KDE Config File
+#
+# This by jead@iname.com. Do whatever you want with it. C'est ca qui est ca. :)
+[Config]
+PixmapPath=pics/animated/eyes
+Description=Crazy Eyes
+Description[af]=Mal Oë
+Description[ar]=عيون مجنونة
+Description[be]=Вочы
+Description[bg]=Луди очички
+Description[bn]=পাগলা চোখ
+Description[br]=Daoulagad foll
+Description[bs]=Lude oči
+Description[ca]=Ulls bojos
+Description[cs]=Voči šílený
+Description[cy]=Llygaid Gwirion
+Description[de]=Verrückte Augen
+Description[el]=Τρελά μάτια
+Description[eo]=Frenezaj okuloj
+Description[es]=Ojos locos
+Description[et]=Hullud silmad
+Description[eu]=Begi Zoroak
+Description[fa]=چشمهای احمق
+Description[fi]=Hullut silmät
+Description[fr]=Yeux fous
+Description[ga]=Súile Craiceáilte
+Description[gl]=Ollos Tolos
+Description[he]=עיניים מוטרפות
+Description[hi]=नटखट नयन
+Description[hr]=Divlje oči
+Description[hu]=Izzó szemek
+Description[is]=Geðveik augu (Crazy Eyes)
+Description[it]=Occhi pazzi
+Description[ja]=クレイジーアイ
+Description[km]=ភ្នែក​ឆ្កួតៗ
+Description[ko]=미친 눈
+Description[lt]=Beprotiškos akys
+Description[lv]=Trakās acis
+Description[mk]=Забегани очи
+Description[nb]=Ville øyne
+Description[nds]=Mall Ogen
+Description[ne]=एकोहोरा आँखा
+Description[nl]=Gekke ogen
+Description[nn]=Ville auge
+Description[pa]=ਭੈੜੀਆਂ ਅੱਖਾਂ
+Description[pl]=Szalone oczy
+Description[pt]=Olhos Loucos
+Description[pt_BR]=Olhos Malucos
+Description[ro]=Ochişori nebunatici
+Description[ru]=Безумные глаза
+Description[sk]=Šialené oči
+Description[sl]=Nore oči
+Description[sr]=Блесаве очи
+Description[sr@Latn]=Blesave oči
+Description[sv]=Galna ögon
+Description[ta]= நகைச்சுவை கண்கள்
+Description[tg]=Нигоҳҳои Ҷиннибашара
+Description[th]=ดวงตาแสนโง่
+Description[tr]=Çılgın Gözler
+Description[uk]=Шалені очі
+Description[uz]=Jinninamo koʻzlar
+Description[uz@cyrillic]=Жиннинамо кўзлар
+Description[ven]=Mato a tshipengo
+Description[zh_CN]=疯狂双眼
+Description[zh_TW]=瘋狂的眼睛
+About=By Jean-Claude Dumas
+About[af]=Deur Jean-Claude Dumas
+About[ar]=من جان كلود دوماس
+About[az]=Jean-Claude Dumas tərəfindən
+About[be]=Аўтар Jean-Claude Dumas
+About[bg]=Автор Жан Клод Дюма
+About[bn]=তৈরি করেছেন জাঁ-ক্ল ডুমাস
+About[br]=Gant Jean-Claude Dumas
+About[bs]=Autor: Jean-Claude Dumas
+About[ca]=Per Jean-Claude Dumas
+About[cs]=Autor Jean-Claude Dumas
+About[cy]=Gan Jean-Claude Dumas
+About[da]=Af Jean-Claude Dumas
+About[de]=Von Jean-Claude Dumas
+About[el]=Από τον Jean-Claude Dumas
+About[eo]=De Jean-Claude Dumas
+About[es]=Por Jean-Claude Dumas
+About[et]=Autor: Jean-Claude Dumas
+About[eu]=Jean-Claude Dumasek Egina
+About[fa]=توسط جین کلود داموس
+About[fi]=Tehnyt Jean-Claude Dumas
+About[fo]=Av Jean-Claude Dumas
+About[fr]=Par Jean-Claude Dumas
+About[ga]=Le Jean-Claude Dumas
+About[gl]=Por Jean-Claude Dumas
+About[he]=מאת ז'אן-קלוד דומא
+About[hi]=जीन-क्लाउड डूमा द्वारा
+About[hr]=Autor: Jean-Claude Dumas
+About[hu]=Készítette: Jean-Claude Dumas
+About[is]=Eftir Jean-Claude Dumas
+About[it]=Di Jean-Claude Dumas
+About[km]=ដោយ Jean-Claude Dumas
+About[lt]=Darė Jean-Claude Dumas
+About[lv]=Autors - Jean-Claude Dumas
+About[mk]=Од Жан Клод Дима
+About[mt]=Ta' Jean-Claude Dumas
+About[nb]=Av Jean-Claude Dumas
+About[nds]=Vun Jean-Claude Dumas
+About[ne]=जिन-क्लाउड डुमासद्वारा
+About[nl]=Door Jean-Claude Dumas
+About[nn]=Av Jean-Claude Dumas
+About[pl]=Autorstwa Jean-Claude'a Dumasa
+About[pt]=De Jean-Claude Dumas
+About[pt_BR]=Por Jean-Claude Dumas
+About[ro]=De Jean-Claude Dumas
+About[ru]=Автор - Jean-Claude Dumas
+About[sk]=Vytvoril Jean-Claude Dumas
+About[sl]=Od Jean-Claudea Dumasa
+About[sr]=Од Жана-Клода Диме (Jean-Claude Dumas)
+About[sr@Latn]=Od Žana-Kloda Dime (Jean-Claude Dumas)
+About[sv]=Av Jean-Claude Dumas
+About[tg]=Ҷан-Клауде Думас
+About[th]=โดย Jean-Claude Dumas
+About[tr]=Jean-Claude Dumas
+About[uk]=Автор: Jean-Claude Dumas
+About[uz]=Jean-Klaude Dumas (Jean-Claude Dumas) yaratgan
+About[uz@cyrillic]=Жеан-Клауде Думас (Jean-Claude Dumas) яратган
+About[ven]=Nga Jean-Claude Dumas
+About[wa]=Sicrît pa Jean-Claude Dumas
+About[xh]=Ngu Jean-Claude Dumas
+About[zh_CN]=作者:Jean-Claude Dumas
+Icon=../../preview/eyes.png
+Sequences=Base,GlideLeft,GlideRight,EyesLeft,EyesRight,Blink,Sourcils,Hyp
+Focus=Rotr,UnMelt
+Blur=Rotl,Melt
+Destroy=Flyaway
+Sleep=Sleep
+Wake=Blink
+
+[Base]
+Sequence=eye_2.png,eye_1.png
+Movement=0,0
+Delay=300,5000
+HotspotX=16,16
+HotspotY=30,30
+
+[Blink]
+Sequence=eye_b.png,eye_1.png
+Movement=0,0
+Delay=300,3000
+HotspotX=16,16
+HotspotY=30,30
+
+[Sleep]
+Sequence=eye_2.png
+Movement=0
+Delay=200
+HotspotX=16
+HotspotY=30
+
+[Sourcils]
+Sequence=eye_1.png,eye_s1.png,eye_s2.png,eye_s3.png,eye_s4.png,eye_s3.png,eye_s4.png,eye_s3.png,eye_s2.png,eye_s1.png
+Movement=0,0,0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30
+
+[Hyp]
+Sequence=eye_1.png,eye_h1.png,eye_h2.png,eye_h3.png,eye_h4.png,eye_h3.png,eye_h4.png,eye_h3.png,eye_h4.png,eye_h3.png,eye_h2.png,eye_h1.png,eye_1.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=200,200,200,200,100,100,100,100,100,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30,30,30,30
+
+[Rotr]
+Sequence=eye_z1.png,eye_z2.png,eye_z3.png,eye_z4.png,eye_z5.png,eye_2.png
+Movement=0,0,0,0,0,0
+Delay=100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30
+
+[Rotl]
+Sequence=eye_1.png,eye_z5.png,eye_z4.png,eye_z3.png,eye_z2.png,eye_z1.png
+Movement=0,0,0,0,0,0
+Delay=100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30
+
+[Melt]
+Sequence=eye_m1.png,eye_m2.png,eye_m3.png,eye_m4.png,eye_m5.png,eye_m6.png,eye_m7.png
+Movement=0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30
+
+[UnMelt]
+Sequence=eye_m7.png,eye_m6.png,eye_m5.png,eye_m4.png,eye_m3.png,eye_m2.png,eye_m1.png
+Movement=0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30
+
+[EyesRight]
+Sequence=eye_1.png,eye_d.png,eye_d.png,eye_e.png,eye_e.png,eye_e.png,eye_e.png,eye_e.png,eye_u.png,eye_u.png,eye_1.png
+Movement=0,0,0,0,12,12,12,12,0,0,0
+Delay=100,100,100,300,100,100,100,300,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16
+HotspotY=25,17,9,3,3,3,3,3,9,17,25
+
+[EyesLeft]
+Sequence=eye_1.png,eye_d.png,eye_d.png,eye_l.png,eye_l.png,eye_l.png,eye_l.png,eye_l.png,eye_u.png,eye_u.png,eye_1.png
+Movement=0,0,0,0,-12,-12,-12,-12,0,0,0
+Delay=100,100,100,300,100,100,100,300,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16
+HotspotY=25,17,9,3,3,3,3,3,9,17,25
+
+[GlideLeft]
+Sequence=eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png
+Movement=-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
+Delay=300,300,300,300,300,300,300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=30,31,30,31,30,31,30,31,30,31,30,31
+
+[GlideRight]
+Sequence=eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png,eye_1.png
+Movement=4,4,4,4,4,4,4,4,4,4,4,4
+Delay=300,300,300,300,300,300,300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=31,30,31,30,31,30,31,30,31,30,31,30
+
+[Flyaway]
+Sequence=eye_m1.png,eye_m2.png,eye_m3.png,eye_m4.png,eye_m5.png,eye_m6.png,eye_m.png7,eye_m7.png
+Movement=0,0,0,0,0,0,0,0
+Delay=150,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=0,25,50,100,250,500,750,1000
+
diff --git a/amor/data/ghostrc b/amor/data/ghostrc
new file mode 100644
index 0000000..35c1529
--- /dev/null
+++ b/amor/data/ghostrc
@@ -0,0 +1,183 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/animated/ghost
+Description=Spooky Ghost
+Description[af]=Onheilspellende Spook
+Description[be]=Страшны прывід
+Description[bg]=Призрачен Дух
+Description[bn]=ভূতুড়ে ভূত
+Description[br]=Tasmant
+Description[bs]=Strašni duh
+Description[ca]=Fantasma misteriós
+Description[cs]=Strašidelný duch
+Description[cy]=Bwgan Arwsydus
+Description[de]=Kleines Gespenst
+Description[el]=Στοιχειωμένο φάντασμα
+Description[eo]=Hantema spirito
+Description[es]=Fantasma misterioso
+Description[et]=Jube tont
+Description[eu]=Mamu Izugarria
+Description[fa]=روح شبح‌وار
+Description[fi]=Pelottava aave
+Description[fr]=Fantôme
+Description[ga]=Taibhse
+Description[gl]=Horripilante Pantasma
+Description[he]=רוח רפאים
+Description[hi]=नन्हा प्रेत
+Description[hr]=Jezivi duh
+Description[hu]=Kísértet
+Description[is]=Voðaleg vofa
+Description[it]=Fantasma spettrale
+Description[ja]=ゆうれい
+Description[km]=ខ្មោច​ដែល​គួរ​ឲ្យ​ព្រឺ​ក្បាល
+Description[ko]=귀신
+Description[lt]=Kraupus vaiduoklis
+Description[lv]=Spokainais spoks
+Description[mk]=Откачен дух
+Description[nb]=Skummelt spøkelse
+Description[nds]=Lütt Spöker
+Description[ne]=स्पोकी घोस्ट
+Description[nl]=Het spookje
+Description[nn]=Skremmande skrømt
+Description[pl]=Duszek
+Description[pt]=Fantasma Assustador
+Description[pt_BR]=Ghost
+Description[ro]=Fantomă înfiorătoare
+Description[ru]=Призрак
+Description[sk]=Strašidelný duch
+Description[sl]=Strašljivi duh
+Description[sr]=Сабласни дух
+Description[sr@Latn]=Sablasni duh
+Description[sv]=Skrämmande spöke
+Description[ta]= பயமுறுத்தும் பேய்
+Description[tg]=Хаёлот
+Description[th]=ผีน้อยสปุ๊คกี้
+Description[tr]=Şirin Hayalet
+Description[uk]=Невловимий привид
+Description[uz]=Arvoh Spuki
+Description[uz@cyrillic]=Арвоҳ Спуки
+Description[ven]=Tshipuku
+Description[zh_CN]=蒙面幽灵
+About=By Martin R. Jones\nBased on an icon by the KDE artist team.
+About[af]=Deur Martin R. Jones\nBased op 'n ikoon Deur die Kde kunstenaar span.
+About[ar]=من مارتن ر. جونز\nمبنية على أيقونة من فريق رسامي KDE
+About[az]=Martin R. Jones tərəfindən\nBased on an icon by the KDE artist team.
+About[be]=Аўтар Martin R. Jones\nЗроблена на базе значак ад каманды художнікаў KDE.
+About[bg]=Автор Мартин Р. Джоунс\nБазирано на икона от KDE
+About[bn]=তৈরি করেছেন মার্টিন আর. জোন্স\nকে.ডি.ই. শিল্পী দলের বানানো একটি আইকনের ওপর ভিত্তি করে।
+About[br]=Gant Martin R. Jones\nDiazezet war un arlun skipail arzour KDE.
+About[bs]=Autor Martin R. Jones\nBazirano na ikoni koju je napravio KDE tim umjetnika.
+About[ca]=Per Martin R. Jones\nBasat en una icona del equip artístic de KDE.
+About[cs]=Autor Martin R. Jones\nNa základě ikony z KDE
+About[cy]=Gan Martin R. Jones\nSeiliedig ar eicon gan y tîm arlunio KDE.
+About[da]=Af Martin R. Jones\nBaseret på en ikon af KDE's kunstnerhold.
+About[de]=Von Martin R. Jones\nNach einem Symbol des KDE-Artist-Teams
+About[el]=Από τον Martin R. Jones\n Βασισμένο σε ένα εικονίδιο της καλλιτεχνικής ομάδας του KDE.
+About[eo]=De Martin R. Jones\nbazita sur piktogramo de la KDE-artistaro.
+About[es]=Por Martin R. Jones\nBasado en un ícono proveniente del equipo de artistas de KDE.
+About[et]=Autor: Martin R. Jones\nAluseks KDE kunstnike loodud ikoon.
+About[eu]=Martin R. Jonesek Eginak\nKDE artista taldeak egindako ikono batetan oinarritua.
+About[fa]=توسط مارتین آر.جونز \nبر اساس یک شمایل توسط تیم هنرمندان KDE
+About[fi]=Tehnyt Martin R. Jones\nPerustuu KDE-taiteilijaryhmän kuvakkeeseen.
+About[fr]=Par Martin R. Jones\nBasé sur une icône de l'équipe artistique de KDE.
+About[ga]=Le Martin R. Jones\nBunaithe ar dheilbhín ó fhoireann ealaíontóirí KDE.
+About[gl]=Por Martin R. Jones\nBaseado nun ícone do equipo artístico de KDE.
+About[he]=מאת מרטין ר. ג'ונס\nמבוסס על סמל מאת צוות האמנים של KDE.
+About[hi]=मार्टिन आर. जोन्स द्वारा\nकेडीई कलाकारों की टोली द्वारा बनाए एक प्रतीक के आधार पर
+About[hr]=Autor: Martin R. Jones\nZasnovano na ikoni KDE tima.
+About[hu]=Készítette: Martin R. Jones\nA KDE grafikus csapatának egy ikonján alapul.
+About[is]=By Martin R. Jones\nByggt á táknmynd eftir KDE listamannahópinn
+About[it]=Di Martin R. Jones.\nBasato su un'icona della squadra di artisti di KDE.
+About[ja]=By Martin R. Jones\nアイコン by KDE アーティストチーム
+About[km]=ដោយ Martin R. Jones\nផ្អែកលើ​រូបតំណាង​រចនាដោយ​ក្រុម​វិចិត្រករ KDE ។
+About[lt]=Darė Martin R. Jones\nPagal KDE menininkų komandos piktogramą.
+About[lv]=Autors - Martin R. Jones\nBāzēts uz KDE ikonas.
+About[mk]=Од Мартин Р. Џонс\nБазирано врз икона од уметничкиот тим на KDE.
+About[mt]=Ta' Martin R. Jones\nIbbażat fuq ġabra ta' ikoni tal-grupp ta' artisti KDE.
+About[nb]=Av Martin R. Jones\nBasert på et ikon fra kunstnerlaget til KDE.
+About[nds]=Vun Martin R. Jones\nBuut op'n Lüttbild vun den KDE-Krink.
+About[ne]= मार्टिन आर.जोन्सद्वारा\n केडीई कलाकार समूहद्वारा एउटा प्रतिमामा आधारित
+About[nl]=Door Martin R. Jones\nGebaseerd op een pictogram van het KDE Artist Team.
+About[nn]=Av Martin R. Jones\nBasert på eit ikon frå kunstnarlaget til KDE.
+About[pl]=Autorstwa Martina R. Jonesa\nNa podstawie ikony zespołu artystów KDE.
+About[pt]=De Martin R. Jones\nBaseado num ícone da equipa artística do KDE.
+About[pt_BR]=Por Martin R. Jones\nBaseado no ícone feito pelo time de designers do KDE.
+About[ro]=De Martin R. Jones\nBazat pe o iconiţă a echipei artiştilor KDE.
+About[ru]=Автор - Martin R. Jones\nНа основе пиктограммы команды художников KDE.
+About[sk]=Vytvoril Martin R. Jones\nZaložené na ikone od KDE artist tímu.
+About[sl]=Od Martina R. Jonesa\nTemelji na ikoni ekipe umetnikov KDE.
+About[sr]=Од Мартина Р. Џонса (Martin R. Jones)\nЗасновано на иконици коју је направио уметнички тим KDE-а.
+About[sr@Latn]=Od Martina R. Džonsa (Martin R. Jones)\nZasnovano na ikonici koju je napravio umetnički tim KDE-a.
+About[sv]=Av Martin R. Jones\nBaserad på en ikon av KDE:s artistgrupp
+About[ta]= மார்டீன் ரா.ஜோன்ஸ் \nKDE கலைஞர் குழு சின்னத்திற்கு ஏற்றவாறு.
+About[tg]=Мартин Р.Ҷонес\nТасвирҳо аз командаи бадеи KDE.
+About[th]=โดย Martin R. Jones\nโดยใช้พื้นฐานจากไอคอนของกลุ่มศิลปิน KDE
+About[tr]=Martin R. Jones\nKDE sanatçı ekibinin bir simgesine dayanır.
+About[uk]=Автор: Martin R. Jones\nЗроблено з піктограми від команди мистецтв KDE.
+About[uz]=Martin R. Jouns (Martin R. Jones) yaratgan\nKDE tasvirchilar jamoasi yaratgan nishonchada asoslangan.
+About[uz@cyrillic]=Мартин Р. Жоунс (Martin R. Jones) яратган\nKDE тасвирчилар жамоаси яратган нишончада асосланган.
+About[ven]=Nga Martin R. Jones\nZwo di sendeka nga aikhonu nga tshigwada tsha vhamvumvusi vha KDE.
+About[xh]= Martin R. Jones\nYamelene kwiqhosa leqela labazobi be KDE.
+About[zh_CN]=作者:Martin R. Jones\n基于 KDE 艺术组制作的一个图标。
+Icon=../../preview/ghost.png
+Sequences=Base,GlideLeft,GlideRight,EyesLeft,EyesRight
+Focus=ZoomIn
+Blur=ZoomOut,Melt
+Destroy=ZoomOut
+
+[Base]
+Sequence=ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png
+Movement=0,0,0,0,0,0,0,0,0,0
+Delay=300,300,300,300,300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30,30,30
+
+[ZoomIn]
+Sequence=ghost_z1.png,ghost_z2.png,ghost_z3.png,ghost_z4.png,ghost_z5.png,ghost_2.png
+Movement=0,0,0,0,0,0
+Delay=100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30
+
+[ZoomOut]
+Sequence=ghost_1.png,ghost_z5.png,ghost_z4.png,ghost_z3.png,ghost_z2.png,ghost_z1.png
+Movement=0,0,0,0,0,0
+Delay=100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30
+
+[Melt]
+Sequence=ghost_m1.png,ghost_m2.png,ghost_m3.png,ghost_m4.png,ghost_m5.png,ghost_m6.png,ghost_m7.png,ghost_d3.png
+Movement=0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=30,30,30,30,30,30,30,30
+
+[EyesRight]
+Sequence=ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png
+Movement=0,0,0,0,12,12,12,12,0,0,0
+Delay=100,100,100,300,100,100,100,300,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16
+HotspotY=25,20,15,10,10,10,10,10,15,20,25
+
+[EyesLeft]
+Sequence=ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png,ghost_e.png
+Movement=0,0,0,0,-12,-12,-12,-12,0,0,0
+Delay=100,100,100,300,100,100,100,300,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16
+HotspotY=25,20,15,10,10,10,10,10,15,20,25
+
+[GlideLeft]
+Sequence=ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png
+Movement=-4,-4,-4,-4,-4,-4
+Delay=300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16
+HotspotY=30,31,30,31,30,31
+
+[GlideRight]
+Sequence=ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png,ghost_1.png,ghost_2.png
+Movement=4,4,4,4,4,4
+Delay=300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16
+HotspotY=30,31,30,31,30,31
+
diff --git a/amor/data/nekorc b/amor/data/nekorc
new file mode 100644
index 0000000..a158270
--- /dev/null
+++ b/amor/data/nekorc
@@ -0,0 +1,202 @@
+# KDE Config File
+# An AMOR version of Oneko (a cat who follows your pointer around)
+# Chris Spiegel (matrix@xirtam.org)
+
+[Config]
+PixmapPath=pics/animated/neko
+Description=Neko
+Description[bg]=Неко
+Description[bn]=নেকো
+Description[et]=Hiirepüüdja
+Description[hi]=नेको
+Description[km]=នេកូ
+Description[ne]=नेको
+Description[ru]=Неко
+Description[ta]= Neko
+Description[tg]=Пишак
+Description[th]=เน็คโก้
+Description[tr]=Mırnav
+Description[uz@cyrillic]=Неко
+Description[zh_CN]=Neko小猫咪
+About=Artwork from oneko by Masayuki Koba\nAMOR'd by Chris Spiegel
+About[af]=Kunswerk van oneko deur Masayuki Koba\Namor'd deur Chris Spiegel
+About[ar]=عمل فني من أونيكو و من تصميم ماياسوكي كوبا\n نقلت الى Amor عن طريق كريس شبيغل
+About[az]=Masayuki Kobanın sənət abidəsi\nAMOR'd by Chris Spiegel
+About[be]=Малюнкі з oneko (аўтар Masayuki Koba)\n перанос ў AMOR - Chris Spiegel
+About[bg]=Автор Масияки Коба\nАдаптация от Крис Шпигел
+About[bn]=শিল্পকর্ম নেওয়া হয়েছে মাসায়ুকি কোবা'র তৈরি ওনেকো থেকে\nআমর-এর জন্য প্রস্তুত করেছেন ক্রিস স্পাইজেল
+About[bs]=Artwork iz oneko-a koji je napravio Masayuki Koba\nAMORovao Chris Spiegel
+About[ca]=Treball gràfic de oneko per Masayuki Koba\nAMOR per Chris Spiegel
+About[cs]=Grafika z programu oneko, Masayuki Koba\nPřevod: Chris Spiegel
+About[cy]=Gwaith arlunio oddiwrth oneko gan Masayuki Koba\nWedi ei AMORio gan Chris Spiegel
+About[da]=Billedmateriale fra oneko af Masayuki Koba\nAMOR'et af Chris Spiegel
+About[de]=Zeichnungen der Katze (oneko) von Masayuki Koba\nAuf AMOR portiert von Chris Spiegel
+About[el]=Καλλιτεχνική εργασία από το oneko από τον Masayuki Koba\n Προσαρμογή στο AMOR από τον Chris Spiegel
+About[eo]=Artaĵo de Masayuki Koba\nAMOR-ita de Chris Spiegel
+About[es]=Arte de oneko por Masayuki Koba\nAMORizado por Chris Spiegel
+About[et]=Hiirepüüdja graafika: Masayuki Koba\nAMORile kohandas: Chris Spiegel
+About[eu]=Artelana onekotik Masayuki Kobak egina\nChris Spiegel'ek AMOR'tua
+About[fa]=کارهنری از oneko توسط ماسایوکی کوبا \nAMOR'd توسط کریس اسپیگل
+About[fi]=Kuvat oneko ohjelmasta, tehnyt Masayuki Koba\nMuokannut Amorille sopivaksi Chris Spiegel
+About[fr]=Travail basé sur « oneko » de Masayuki Koba\nAMORé par Chris Spiegel
+About[ga]=Maisiúchán ó oneko le Masayuki Koba\nCurtha i AMOR ag Chris Spiegel
+About[gl]=Imaxes de oneko por Masayuki Koba\nAdaptadas a AMOR por Chris Spiegel
+About[he]=עבודות האמנות מתוך oneko מאת מאסאיוקי קובה\nהותאם ל־AMOR על ידי כריס שפיגל
+About[hi]=कलाकृति ओनेको से, मसायुकी कोबा द्वारा\nअमोर्ड- क्रिस स्पीजेल द्वारा
+About[hr]=Slike preuzete iz: oneko, autor Masayuki Koba\nZa AMOR prilagodi: Chris Spiegel
+About[hu]=A grafika Masuyaki Koba Onekojából származik\nAMOR-átirat: Chris Spiegel
+About[is]=Artwork from oneko by Masayuki Koba\nAMOR-erað af Chris Spiegel
+About[it]=I disegni provengono da Oneko, di Masayuki Koba.\nConvertito ad AMOR da Chris Spiegel.
+About[ja]=oneko のグラフィック by Masayuki Koba\nAMOR化 by Chris Spiegel
+About[km]=សិល្បៈកម្ម​ពី អូនេកូ(oneko) ដោយ មាសាយូគី កូបា (Masayuki Koba)\nAMOR'd ដោយ Chris Spiegel
+About[lt]=Meninė dalis iš oneko, daryto Masayuki Koba\nAMOR'ui pritaikė Chris Spiegel
+About[lv]=Grafika - Masayuki Koba\nAMOR'd - Chris Spiegel
+About[mk]=Сликите се од oneko на Masayuki Koba\nПриспособено за AMOR од Крис Спигел
+About[mt]=Artwork minn oneko ta' Masayuki Koba\nMaqlub għal AMOR minn Chris Spiegel
+About[nb]=Kunstnerisk arbeide fra oneko av Masayuki Koba\nTilpasset AMOR av Chris Spiegel
+About[nds]=oneko-Biller vun Masayuki Koba\nFör AMOR ümsett vun Chris Spiegel
+About[ne]=Masayuki Koba द्वारा वानकोबाट कलाकार्य\nAMOR'd by Chris Spiegel
+About[nl]=Illustraties van oneko door Masayuki Koba\nOvergezet naar AMOR door Chris Spiegel
+About[nn]=Bilete frå oneko av Masayuki Koba\nTilpassa AMOR av Chris Spiegel
+About[pl]=Pochodzi z oneko, autorstwa Masayuki Koba\ndostosowane do AMOR przez Chrisa Spiegela
+About[pt]=Criação do oneko de Masayuki Koba\nAMORado por Chris Spiegel
+About[pt_BR]=Arte por Masayuki Koba\nAMOR por Chris Spiegel
+About[ro]=Grafică din oneko de Masayuki Koba\nPortat la AMOR de Chris Spiegel
+About[ru]=Рисунки от oneko - Masayuki Koba\nАдаптировано для AMOR - Chris Spiegel
+About[sk]=Obrázok z programu oneko od Masayuki Koba\nAMORoval Chris Spiegel
+About[sl]=Umetniško delo iz oneko izdelal Masayuki Koba\niz AMOR pa Chris Spiegel
+About[sr]=Графика из Oneko-а од Масајукија Кобе (Masayuki Koba)\nУ AMOR претворио Крис Шпигел (Chris Spiegel)
+About[sr@Latn]=Grafika iz Oneko-a od Masajukija Kobe (Masayuki Koba)\nU AMOR pretvorio Kris Špigel (Chris Spiegel)
+About[sv]=Grafik från oneko av Masayuki Koba\nTill Amor av Chris Spiegel
+About[tg]=Масаюки Коба\nИШҚ - Крис Спигел
+About[th]=งานศิลป์จาก oneko โดย Masayuki Koba\nAMOR'd โดย Chris Spiegel
+About[tr]=Çizimler Masayuki Koba\nArmor'a geçiş Chris Spiegel
+About[uk]=Праця від oneko, автор: Masayuki Koba\nАдаптовано до AMOR - Chris Spiegel
+About[ven]=Mushumo wa zwanda ubva kha oneko nga Masayuki Koba\nAMOR'd nga Chris Spiegel
+About[xh]=Artwork esuka oneko ngu Masayuki Koba\nAMOR'd ngo Chris Spiegel
+About[zh_CN]=艺术作者为 oneko 小组的 Masayuki Koba\nAMOR'd 作者为 Chris Spiegel
+About[zu]=Umsebenzi wezandla osuka ku Masayuki Koba\nAMOR'd ngu Chris Spiegel
+Icon=../../preview/neko.png
+Base=Base
+Sequences=RightScratch,LeftScratch,RunRight,RunLeft,Yawn,RightLick,LeftLick,Claw,JumpRight,JumpLeft
+Focus=Start
+Blur=End
+Destroy=DropOut
+Sleep=Snooze
+Wake=Surprise
+
+[Base]
+Sequence=tail.png,sit.png,tail.png,sit.png,tail.png,sit.png,tail.png,sit.png,tail.png,sit.png,tail.png,sit.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29
+
+[JumpRight]
+Sequence=jump1.png,jump2.png,run2.png,jump3.png,jump4.png
+Movement=10,10,10,10,10
+Delay=200,200,200,200,200
+HotspotX=16,16,16,16,16
+HotspotY=34,40,44,34,29
+
+[JumpLeft]
+Sequence=jumpl1.png,jumpl2.png,run4.png,jumpl3.png,jumpl4.png
+Movement=-10,-10,-10,-10,-10
+Delay=200,200,200,200,200
+HotspotX=16,16,16,16,16
+HotspotY=34,40,44,34,29
+
+[Claw]
+Sequence=claw1.png,claw2.png,claw1.png,claw2.png,claw1.png,claw2.png,claw1.png,claw2.png
+Movement=0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=17,17,17,17,17,17,17,17
+
+[Snooze]
+Sequence=sleep1.png,sleep2.png
+Movement=0,0
+Delay=450,450
+HotspotX=16,16
+HotspotY=29,29
+
+[Surprise]
+Sequence=surprise.png
+Movement=0
+Delay=600
+HotspotX=16
+HotspotY=29
+
+[RightScratch]
+Sequence=scratch1.png,scratch2.png,scratch1.png,scratch2.png,scratch1.png,scratch2.png,scratch1.png,scratch2.png,scratch1.png,scratch2.png,scratch1.png,scratch2.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,
+Delay=100,100,100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29
+
+[LeftScratch]
+Sequence=scratch3.png,scratch4.png,scratch3.png,scratch4.png,scratch3.png,scratch4.png,scratch3.png,scratch4.png,scratch3.png,scratch4.png,scratch3.png,scratch4.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,
+Delay=100,100,100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29
+
+[RunRight]
+Sequence=run2.png,run1.png,run2.png,run1.png,run2.png,run1.png,run2.png,run1.png,run2.png,run1.png,run2.png,run1.png
+Movement=10,10,10,10,10,10,10,10,10,10,10,10
+Delay=100,100,100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29
+
+[RunLeft]
+Sequence=run4.png,run3.png,run4.png,run3.png,run4.png,run3.png,run4.png,run3.png,run4.png,run3.png,run4.png,run3.png
+Movement=-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10
+Delay=100,100,100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29
+
+# It seems, for me, that if Start and End are only one pixmap,
+# they don't stay on for the desired delay .. ?? Anyway, this
+# seems to work OK
+[End]
+Sequence=surprise.png,surprise.png,surprise.png,surprise.png
+Movement=0,0,0,0
+Delay=400,400,400,400
+HotspotX=16,16,16,16
+HotspotY=29,29,29,29
+
+[Start]
+Sequence=yawn.png,yawn.png,yawn.png,yawn.png
+Movement=0,0,0,0
+Delay=400,400,400,400
+HotspotX=16,16,16,16
+HotspotY=29,29,29,29
+
+[Yawn]
+Sequence=yawn.png
+Movement=0
+Delay=1600
+HotspotX=16
+HotspotY=29
+
+[RightLick]
+Sequence=lick.png,sit.png,lick.png,sit.png,lick.png,sit.png,lick.png,sit.png,lick.png,sit.png,lick.png
+Movement=0,0,0,0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29
+
+[LeftLick]
+Sequence=lick2.png,sit.png,lick2.png,sit.png,lick2.png,sit.png,lick2.png,sit.png,lick2.png,sit.png,lick2.png
+Movement=0,0,0,0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29
+
+# Values shamelessly stolen from Bonhomme, by Jean-Claude Dumas .. :)
+[DropOut]
+Sequence=surprise.png,surprise.png,surprise.png,surprise.png,surprise.png,surprise.png,surprise.png,surprise.png
+Movement=0,0,0,0,0,0,0,0
+Delay=150,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=0,-25,-50,-100,-250,-500,-750,-1000
diff --git a/amor/data/pics/Makefile.am b/amor/data/pics/Makefile.am
new file mode 100644
index 0000000..0c1d96c
--- /dev/null
+++ b/amor/data/pics/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = animated preview static
diff --git a/amor/data/pics/animated/Makefile.am b/amor/data/pics/animated/Makefile.am
new file mode 100644
index 0000000..e3207b2
--- /dev/null
+++ b/amor/data/pics/animated/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = blob bonhomme eyes ghost neko pingu tao worm
diff --git a/amor/data/pics/animated/blob/Makefile.am b/amor/data/pics/animated/blob/Makefile.am
new file mode 100644
index 0000000..192d34a
--- /dev/null
+++ b/amor/data/pics/animated/blob/Makefile.am
@@ -0,0 +1,82 @@
+# Add all your pic files here
+amor_DATA = blob_b1.png \
+ blob_b2.png \
+ blob_BeamDown1.png \
+ blob_BeamDown2.png \
+ blob_BeamDown3.png \
+ blob_BeamDown4.png \
+ blob_BeamDown5.png \
+ blob_BeamDown6.png \
+ blob_BeamDown7.png \
+ blob_BeamDown8.png \
+ blob_BeamDown9.png \
+ blob_BeamUp10.png \
+ blob_BeamUp1.png \
+ blob_BeamUp2.png \
+ blob_BeamUp3.png \
+ blob_BeamUp4.png \
+ blob_BeamUp5.png \
+ blob_BeamUp6.png \
+ blob_BeamUp7.png \
+ blob_BeamUp8.png \
+ blob_BeamUp9.png \
+ blob_e1.png \
+ blob_ex1.png \
+ blob_f1.png \
+ blob_f2.png \
+ blob_f3.png \
+ blob_fire10.png \
+ blob_fire11.png \
+ blob_fire2.png \
+ blob_fire3.png \
+ blob_fire4.png \
+ blob_fire5.png \
+ blob_fire6.png \
+ blob_fire7.png \
+ blob_fire8.png \
+ blob_fire9.png \
+ blob_g1.png \
+ blob_g2.png \
+ blob_gl1.png \
+ blob_gl2.png \
+ blob_gl3.png \
+ blob_h1.png \
+ blob_h2.png \
+ blob_h3.png \
+ blob_jet1.png \
+ blob_jet2.png \
+ blob_jet3.png \
+ blob_jet4.png \
+ blob_l_jet1.png \
+ blob_l_jet2.png \
+ blob_l_jet3.png \
+ blob_l_jet4.png \
+ blob_l_turn1.png \
+ blob_l_turn2.png \
+ blob_l_turn3.png \
+ blob_l_turn4.png \
+ blob.png \
+ blob_r135.png \
+ blob_r180.png \
+ blob_r225.png \
+ blob_r270.png \
+ blob_r315.png \
+ blob_r45.png \
+ blob_r90.png \
+ blob_r_turn1.png \
+ blob_r_turn2.png \
+ blob_r_turn3.png \
+ blob_r_turn4.png \
+ blob_s1.png \
+ blob_s2.png \
+ blob_s3.png \
+ blob_sl1.png \
+ blob_sl2.png \
+ blob_sl3.png \
+ blob_sl4.png \
+ blob_z1.png \
+ blob_z2.png \
+ blob_z3.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/blob
diff --git a/amor/data/pics/animated/blob/blob.png b/amor/data/pics/animated/blob/blob.png
new file mode 100644
index 0000000..85a0db7
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown1.png b/amor/data/pics/animated/blob/blob_BeamDown1.png
new file mode 100644
index 0000000..1103bba
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown2.png b/amor/data/pics/animated/blob/blob_BeamDown2.png
new file mode 100644
index 0000000..e569f7c
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown3.png b/amor/data/pics/animated/blob/blob_BeamDown3.png
new file mode 100644
index 0000000..c578f38
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown4.png b/amor/data/pics/animated/blob/blob_BeamDown4.png
new file mode 100644
index 0000000..e68d750
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown5.png b/amor/data/pics/animated/blob/blob_BeamDown5.png
new file mode 100644
index 0000000..91baa2a
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown5.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown6.png b/amor/data/pics/animated/blob/blob_BeamDown6.png
new file mode 100644
index 0000000..91ab229
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown6.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown7.png b/amor/data/pics/animated/blob/blob_BeamDown7.png
new file mode 100644
index 0000000..8b7143c
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown7.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown8.png b/amor/data/pics/animated/blob/blob_BeamDown8.png
new file mode 100644
index 0000000..b6a813b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown8.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamDown9.png b/amor/data/pics/animated/blob/blob_BeamDown9.png
new file mode 100644
index 0000000..65c00c9
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamDown9.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp1.png b/amor/data/pics/animated/blob/blob_BeamUp1.png
new file mode 100644
index 0000000..1343658
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp10.png b/amor/data/pics/animated/blob/blob_BeamUp10.png
new file mode 100644
index 0000000..c330a8c
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp10.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp2.png b/amor/data/pics/animated/blob/blob_BeamUp2.png
new file mode 100644
index 0000000..cee9aec
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp3.png b/amor/data/pics/animated/blob/blob_BeamUp3.png
new file mode 100644
index 0000000..d1a6825
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp4.png b/amor/data/pics/animated/blob/blob_BeamUp4.png
new file mode 100644
index 0000000..decb861
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp5.png b/amor/data/pics/animated/blob/blob_BeamUp5.png
new file mode 100644
index 0000000..6fbcc72
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp5.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp6.png b/amor/data/pics/animated/blob/blob_BeamUp6.png
new file mode 100644
index 0000000..d4175c8
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp6.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp7.png b/amor/data/pics/animated/blob/blob_BeamUp7.png
new file mode 100644
index 0000000..56a1747
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp7.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp8.png b/amor/data/pics/animated/blob/blob_BeamUp8.png
new file mode 100644
index 0000000..d8c7f2c
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp8.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_BeamUp9.png b/amor/data/pics/animated/blob/blob_BeamUp9.png
new file mode 100644
index 0000000..72db7c7
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_BeamUp9.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_b1.png b/amor/data/pics/animated/blob/blob_b1.png
new file mode 100644
index 0000000..bc97918
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_b1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_b2.png b/amor/data/pics/animated/blob/blob_b2.png
new file mode 100644
index 0000000..444a3b6
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_b2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_e1.png b/amor/data/pics/animated/blob/blob_e1.png
new file mode 100644
index 0000000..65da0b6
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_e1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_ex1.png b/amor/data/pics/animated/blob/blob_ex1.png
new file mode 100644
index 0000000..f917960
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_ex1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_f1.png b/amor/data/pics/animated/blob/blob_f1.png
new file mode 100644
index 0000000..e41ae0b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_f1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_f2.png b/amor/data/pics/animated/blob/blob_f2.png
new file mode 100644
index 0000000..34a0b50
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_f2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_f3.png b/amor/data/pics/animated/blob/blob_f3.png
new file mode 100644
index 0000000..72deac2
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_f3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire10.png b/amor/data/pics/animated/blob/blob_fire10.png
new file mode 100644
index 0000000..cd25bf2
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire10.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire11.png b/amor/data/pics/animated/blob/blob_fire11.png
new file mode 100644
index 0000000..5ddb229
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire11.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire2.png b/amor/data/pics/animated/blob/blob_fire2.png
new file mode 100644
index 0000000..a9c11b1
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire3.png b/amor/data/pics/animated/blob/blob_fire3.png
new file mode 100644
index 0000000..6e56e2a
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire4.png b/amor/data/pics/animated/blob/blob_fire4.png
new file mode 100644
index 0000000..1f60daa
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire5.png b/amor/data/pics/animated/blob/blob_fire5.png
new file mode 100644
index 0000000..6008bbc
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire5.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire6.png b/amor/data/pics/animated/blob/blob_fire6.png
new file mode 100644
index 0000000..8e50a9b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire6.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire7.png b/amor/data/pics/animated/blob/blob_fire7.png
new file mode 100644
index 0000000..1301f0e
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire7.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire8.png b/amor/data/pics/animated/blob/blob_fire8.png
new file mode 100644
index 0000000..af004b5
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire8.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_fire9.png b/amor/data/pics/animated/blob/blob_fire9.png
new file mode 100644
index 0000000..701ca74
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_fire9.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_g1.png b/amor/data/pics/animated/blob/blob_g1.png
new file mode 100644
index 0000000..25011dd
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_g1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_g2.png b/amor/data/pics/animated/blob/blob_g2.png
new file mode 100644
index 0000000..5abd3b3
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_g2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_gl1.png b/amor/data/pics/animated/blob/blob_gl1.png
new file mode 100644
index 0000000..9c1ed8c
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_gl1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_gl2.png b/amor/data/pics/animated/blob/blob_gl2.png
new file mode 100644
index 0000000..c621f22
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_gl2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_gl3.png b/amor/data/pics/animated/blob/blob_gl3.png
new file mode 100644
index 0000000..5d7ac0a
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_gl3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_h1.png b/amor/data/pics/animated/blob/blob_h1.png
new file mode 100644
index 0000000..e7c89ac
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_h1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_h2.png b/amor/data/pics/animated/blob/blob_h2.png
new file mode 100644
index 0000000..6983286
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_h2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_h3.png b/amor/data/pics/animated/blob/blob_h3.png
new file mode 100644
index 0000000..02302ed
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_h3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_jet1.png b/amor/data/pics/animated/blob/blob_jet1.png
new file mode 100644
index 0000000..2d32bea
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_jet1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_jet2.png b/amor/data/pics/animated/blob/blob_jet2.png
new file mode 100644
index 0000000..6284686
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_jet2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_jet3.png b/amor/data/pics/animated/blob/blob_jet3.png
new file mode 100644
index 0000000..05f3864
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_jet3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_jet4.png b/amor/data/pics/animated/blob/blob_jet4.png
new file mode 100644
index 0000000..fa74fac
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_jet4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_jet1.png b/amor/data/pics/animated/blob/blob_l_jet1.png
new file mode 100644
index 0000000..a35760b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_jet1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_jet2.png b/amor/data/pics/animated/blob/blob_l_jet2.png
new file mode 100644
index 0000000..2a28db6
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_jet2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_jet3.png b/amor/data/pics/animated/blob/blob_l_jet3.png
new file mode 100644
index 0000000..80f4148
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_jet3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_jet4.png b/amor/data/pics/animated/blob/blob_l_jet4.png
new file mode 100644
index 0000000..150b6e7
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_jet4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_turn1.png b/amor/data/pics/animated/blob/blob_l_turn1.png
new file mode 100644
index 0000000..1ad2ac2
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_turn1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_turn2.png b/amor/data/pics/animated/blob/blob_l_turn2.png
new file mode 100644
index 0000000..b664999
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_turn2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_turn3.png b/amor/data/pics/animated/blob/blob_l_turn3.png
new file mode 100644
index 0000000..d99b0a0
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_turn3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_l_turn4.png b/amor/data/pics/animated/blob/blob_l_turn4.png
new file mode 100644
index 0000000..92fa5f2
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_l_turn4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r135.png b/amor/data/pics/animated/blob/blob_r135.png
new file mode 100644
index 0000000..691d53a
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r135.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r180.png b/amor/data/pics/animated/blob/blob_r180.png
new file mode 100644
index 0000000..3657c66
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r180.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r225.png b/amor/data/pics/animated/blob/blob_r225.png
new file mode 100644
index 0000000..f957f93
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r225.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r270.png b/amor/data/pics/animated/blob/blob_r270.png
new file mode 100644
index 0000000..8851572
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r270.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r315.png b/amor/data/pics/animated/blob/blob_r315.png
new file mode 100644
index 0000000..6ddfe12
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r315.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r45.png b/amor/data/pics/animated/blob/blob_r45.png
new file mode 100644
index 0000000..7a752d7
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r45.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r90.png b/amor/data/pics/animated/blob/blob_r90.png
new file mode 100644
index 0000000..525dbba
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r90.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r_turn1.png b/amor/data/pics/animated/blob/blob_r_turn1.png
new file mode 100644
index 0000000..6b9d054
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r_turn1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r_turn2.png b/amor/data/pics/animated/blob/blob_r_turn2.png
new file mode 100644
index 0000000..9f4cc9f
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r_turn2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r_turn3.png b/amor/data/pics/animated/blob/blob_r_turn3.png
new file mode 100644
index 0000000..cc27fe3
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r_turn3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_r_turn4.png b/amor/data/pics/animated/blob/blob_r_turn4.png
new file mode 100644
index 0000000..c704d3d
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_r_turn4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_s1.png b/amor/data/pics/animated/blob/blob_s1.png
new file mode 100644
index 0000000..c88bf4b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_s1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_s2.png b/amor/data/pics/animated/blob/blob_s2.png
new file mode 100644
index 0000000..4c05c8a
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_s2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_s3.png b/amor/data/pics/animated/blob/blob_s3.png
new file mode 100644
index 0000000..93fcb53
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_s3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_sl1.png b/amor/data/pics/animated/blob/blob_sl1.png
new file mode 100644
index 0000000..166b89b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_sl1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_sl2.png b/amor/data/pics/animated/blob/blob_sl2.png
new file mode 100644
index 0000000..c10d456
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_sl2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_sl3.png b/amor/data/pics/animated/blob/blob_sl3.png
new file mode 100644
index 0000000..425d664
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_sl3.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_sl4.png b/amor/data/pics/animated/blob/blob_sl4.png
new file mode 100644
index 0000000..5369223
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_sl4.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_z1.png b/amor/data/pics/animated/blob/blob_z1.png
new file mode 100644
index 0000000..e222d1a
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_z1.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_z2.png b/amor/data/pics/animated/blob/blob_z2.png
new file mode 100644
index 0000000..a56703c
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_z2.png
Binary files differ
diff --git a/amor/data/pics/animated/blob/blob_z3.png b/amor/data/pics/animated/blob/blob_z3.png
new file mode 100644
index 0000000..bb6060b
--- /dev/null
+++ b/amor/data/pics/animated/blob/blob_z3.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/Makefile.am b/amor/data/pics/animated/bonhomme/Makefile.am
new file mode 100644
index 0000000..1d6f12c
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/Makefile.am
@@ -0,0 +1,46 @@
+# Add all your pic files here
+amor_DATA = b1.png \
+ b1-r.png \
+ b2.png \
+ b2-r.png \
+ b3.png \
+ b3-r.png \
+ b4.png \
+ b4-r.png \
+ bcol1.png \
+ bcol2.png \
+ bdrib1.png \
+ bdrib2.png \
+ bdrib3.png \
+ bdrib4.png \
+ bdrib5.png \
+ bdrib6.png \
+ bdrib7.png \
+ bdrop.png \
+ b-f2.png \
+ b-f.png \
+ bgo1.png \
+ bgo2.png \
+ bgo3.png \
+ bgo4.png \
+ bgo5.png \
+ bgo6.png \
+ bgo7.png \
+ bh1.png \
+ bpof1.png \
+ bpof2.png \
+ bpof3.png \
+ bpof4.png \
+ bpof5.png \
+ bpof6.png \
+ sa1.png \
+ sa2a.png \
+ sa2b.png \
+ sa2c.png \
+ sa2.png \
+ salut1.png \
+ salut.png
+
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/bonhomme
diff --git a/amor/data/pics/animated/bonhomme/b-f.png b/amor/data/pics/animated/bonhomme/b-f.png
new file mode 100644
index 0000000..8ebe1a9
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b-f.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b-f2.png b/amor/data/pics/animated/bonhomme/b-f2.png
new file mode 100644
index 0000000..d54612f
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b-f2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b1-r.png b/amor/data/pics/animated/bonhomme/b1-r.png
new file mode 100644
index 0000000..ea85a03
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b1-r.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b1.png b/amor/data/pics/animated/bonhomme/b1.png
new file mode 100644
index 0000000..5063099
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b2-r.png b/amor/data/pics/animated/bonhomme/b2-r.png
new file mode 100644
index 0000000..8692ddc
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b2-r.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b2.png b/amor/data/pics/animated/bonhomme/b2.png
new file mode 100644
index 0000000..d4aecf7
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b3-r.png b/amor/data/pics/animated/bonhomme/b3-r.png
new file mode 100644
index 0000000..2562b53
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b3-r.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b3.png b/amor/data/pics/animated/bonhomme/b3.png
new file mode 100644
index 0000000..913950f
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b3.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b4-r.png b/amor/data/pics/animated/bonhomme/b4-r.png
new file mode 100644
index 0000000..377a272
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b4-r.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/b4.png b/amor/data/pics/animated/bonhomme/b4.png
new file mode 100644
index 0000000..fdfc19c
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/b4.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bcol1.png b/amor/data/pics/animated/bonhomme/bcol1.png
new file mode 100644
index 0000000..7d89330
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bcol1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bcol2.png b/amor/data/pics/animated/bonhomme/bcol2.png
new file mode 100644
index 0000000..006250d
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bcol2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib1.png b/amor/data/pics/animated/bonhomme/bdrib1.png
new file mode 100644
index 0000000..006b17e
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib2.png b/amor/data/pics/animated/bonhomme/bdrib2.png
new file mode 100644
index 0000000..11a20f2
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib3.png b/amor/data/pics/animated/bonhomme/bdrib3.png
new file mode 100644
index 0000000..52b734f
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib3.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib4.png b/amor/data/pics/animated/bonhomme/bdrib4.png
new file mode 100644
index 0000000..0cae0e1
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib4.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib5.png b/amor/data/pics/animated/bonhomme/bdrib5.png
new file mode 100644
index 0000000..cab174b
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib5.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib6.png b/amor/data/pics/animated/bonhomme/bdrib6.png
new file mode 100644
index 0000000..08e233f
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib6.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrib7.png b/amor/data/pics/animated/bonhomme/bdrib7.png
new file mode 100644
index 0000000..363d4d8
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrib7.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bdrop.png b/amor/data/pics/animated/bonhomme/bdrop.png
new file mode 100644
index 0000000..7d89330
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bdrop.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo1.png b/amor/data/pics/animated/bonhomme/bgo1.png
new file mode 100644
index 0000000..c680f56
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo2.png b/amor/data/pics/animated/bonhomme/bgo2.png
new file mode 100644
index 0000000..06b0b96
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo3.png b/amor/data/pics/animated/bonhomme/bgo3.png
new file mode 100644
index 0000000..ed09446
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo3.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo4.png b/amor/data/pics/animated/bonhomme/bgo4.png
new file mode 100644
index 0000000..9e6cede
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo4.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo5.png b/amor/data/pics/animated/bonhomme/bgo5.png
new file mode 100644
index 0000000..8d216d8
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo5.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo6.png b/amor/data/pics/animated/bonhomme/bgo6.png
new file mode 100644
index 0000000..df4478a
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo6.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bgo7.png b/amor/data/pics/animated/bonhomme/bgo7.png
new file mode 100644
index 0000000..4d3b2f2
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bgo7.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bh1.png b/amor/data/pics/animated/bonhomme/bh1.png
new file mode 100644
index 0000000..6357f40
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bh1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bpof1.png b/amor/data/pics/animated/bonhomme/bpof1.png
new file mode 100644
index 0000000..6993821
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bpof1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bpof2.png b/amor/data/pics/animated/bonhomme/bpof2.png
new file mode 100644
index 0000000..c1756fa
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bpof2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bpof3.png b/amor/data/pics/animated/bonhomme/bpof3.png
new file mode 100644
index 0000000..9711a4d
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bpof3.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bpof4.png b/amor/data/pics/animated/bonhomme/bpof4.png
new file mode 100644
index 0000000..cb2ef3d
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bpof4.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bpof5.png b/amor/data/pics/animated/bonhomme/bpof5.png
new file mode 100644
index 0000000..0541a75
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bpof5.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/bpof6.png b/amor/data/pics/animated/bonhomme/bpof6.png
new file mode 100644
index 0000000..c1756fa
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/bpof6.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/sa1.png b/amor/data/pics/animated/bonhomme/sa1.png
new file mode 100644
index 0000000..9cb3380
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/sa1.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/sa2.png b/amor/data/pics/animated/bonhomme/sa2.png
new file mode 100644
index 0000000..9878562
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/sa2.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/sa2a.png b/amor/data/pics/animated/bonhomme/sa2a.png
new file mode 100644
index 0000000..433c262
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/sa2a.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/sa2b.png b/amor/data/pics/animated/bonhomme/sa2b.png
new file mode 100644
index 0000000..4e5fe79
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/sa2b.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/sa2c.png b/amor/data/pics/animated/bonhomme/sa2c.png
new file mode 100644
index 0000000..f0781b7
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/sa2c.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/salut.png b/amor/data/pics/animated/bonhomme/salut.png
new file mode 100644
index 0000000..5ae1e16
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/salut.png
Binary files differ
diff --git a/amor/data/pics/animated/bonhomme/salut1.png b/amor/data/pics/animated/bonhomme/salut1.png
new file mode 100644
index 0000000..212be97
--- /dev/null
+++ b/amor/data/pics/animated/bonhomme/salut1.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/Makefile.am b/amor/data/pics/animated/eyes/Makefile.am
new file mode 100644
index 0000000..8f357eb
--- /dev/null
+++ b/amor/data/pics/animated/eyes/Makefile.am
@@ -0,0 +1,31 @@
+# Add all your pic files here
+amor_DATA = eye_1.png \
+ eye_2.png \
+ eye_b.png \
+ eye_d.png \
+ eye_e.png \
+ eye_h1.png \
+ eye_h2.png \
+ eye_h3.png \
+ eye_h4.png \
+ eye_l.png \
+ eye_m1.png \
+ eye_m2.png \
+ eye_m3.png \
+ eye_m4.png \
+ eye_m5.png \
+ eye_m6.png \
+ eye_m7.png \
+ eye_s1.png \
+ eye_s2.png \
+ eye_s3.png \
+ eye_s4.png \
+ eye_u.png \
+ eye_z1.png \
+ eye_z2.png \
+ eye_z3.png \
+ eye_z4.png \
+ eye_z5.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/eyes
diff --git a/amor/data/pics/animated/eyes/eye_1.png b/amor/data/pics/animated/eyes/eye_1.png
new file mode 100644
index 0000000..6309988
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_1.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_2.png b/amor/data/pics/animated/eyes/eye_2.png
new file mode 100644
index 0000000..592c9e0
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_2.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_b.png b/amor/data/pics/animated/eyes/eye_b.png
new file mode 100644
index 0000000..0920f6d
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_b.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_d.png b/amor/data/pics/animated/eyes/eye_d.png
new file mode 100644
index 0000000..55a8b14
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_d.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_e.png b/amor/data/pics/animated/eyes/eye_e.png
new file mode 100644
index 0000000..dc01f75
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_e.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_h1.png b/amor/data/pics/animated/eyes/eye_h1.png
new file mode 100644
index 0000000..dce2977
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_h1.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_h2.png b/amor/data/pics/animated/eyes/eye_h2.png
new file mode 100644
index 0000000..bdfc826
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_h2.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_h3.png b/amor/data/pics/animated/eyes/eye_h3.png
new file mode 100644
index 0000000..e7e5eda
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_h3.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_h4.png b/amor/data/pics/animated/eyes/eye_h4.png
new file mode 100644
index 0000000..ba51a66
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_h4.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_l.png b/amor/data/pics/animated/eyes/eye_l.png
new file mode 100644
index 0000000..4451596
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_l.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m1.png b/amor/data/pics/animated/eyes/eye_m1.png
new file mode 100644
index 0000000..e5896e1
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m1.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m2.png b/amor/data/pics/animated/eyes/eye_m2.png
new file mode 100644
index 0000000..1200fad
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m2.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m3.png b/amor/data/pics/animated/eyes/eye_m3.png
new file mode 100644
index 0000000..18ce925
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m3.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m4.png b/amor/data/pics/animated/eyes/eye_m4.png
new file mode 100644
index 0000000..b09edb8
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m4.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m5.png b/amor/data/pics/animated/eyes/eye_m5.png
new file mode 100644
index 0000000..d4cb7ef
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m5.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m6.png b/amor/data/pics/animated/eyes/eye_m6.png
new file mode 100644
index 0000000..0e74fa1
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m6.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_m7.png b/amor/data/pics/animated/eyes/eye_m7.png
new file mode 100644
index 0000000..c5d0816
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_m7.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_s1.png b/amor/data/pics/animated/eyes/eye_s1.png
new file mode 100644
index 0000000..c0bf047
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_s1.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_s2.png b/amor/data/pics/animated/eyes/eye_s2.png
new file mode 100644
index 0000000..1011e68
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_s2.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_s3.png b/amor/data/pics/animated/eyes/eye_s3.png
new file mode 100644
index 0000000..02eadb7
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_s3.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_s4.png b/amor/data/pics/animated/eyes/eye_s4.png
new file mode 100644
index 0000000..dd406ad
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_s4.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_u.png b/amor/data/pics/animated/eyes/eye_u.png
new file mode 100644
index 0000000..bb10be3
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_u.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_z1.png b/amor/data/pics/animated/eyes/eye_z1.png
new file mode 100644
index 0000000..2e6f459
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_z1.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_z2.png b/amor/data/pics/animated/eyes/eye_z2.png
new file mode 100644
index 0000000..88b705c
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_z2.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_z3.png b/amor/data/pics/animated/eyes/eye_z3.png
new file mode 100644
index 0000000..578f05c
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_z3.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_z4.png b/amor/data/pics/animated/eyes/eye_z4.png
new file mode 100644
index 0000000..6309988
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_z4.png
Binary files differ
diff --git a/amor/data/pics/animated/eyes/eye_z5.png b/amor/data/pics/animated/eyes/eye_z5.png
new file mode 100644
index 0000000..592c9e0
--- /dev/null
+++ b/amor/data/pics/animated/eyes/eye_z5.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/Makefile.am b/amor/data/pics/animated/ghost/Makefile.am
new file mode 100644
index 0000000..122495f
--- /dev/null
+++ b/amor/data/pics/animated/ghost/Makefile.am
@@ -0,0 +1,19 @@
+# Add all your pic files here
+amor_DATA = ghost_1.png \
+ ghost_2.png \
+ ghost_e.png \
+ ghost_m1.png \
+ ghost_m2.png \
+ ghost_m3.png \
+ ghost_m4.png \
+ ghost_m5.png \
+ ghost_m6.png \
+ ghost_m7.png \
+ ghost_z1.png \
+ ghost_z2.png \
+ ghost_z3.png \
+ ghost_z4.png \
+ ghost_z5.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/ghost
diff --git a/amor/data/pics/animated/ghost/ghost_1.png b/amor/data/pics/animated/ghost/ghost_1.png
new file mode 100644
index 0000000..7042e08
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_1.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_2.png b/amor/data/pics/animated/ghost/ghost_2.png
new file mode 100644
index 0000000..f45e82a
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_2.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_e.png b/amor/data/pics/animated/ghost/ghost_e.png
new file mode 100644
index 0000000..0eb184a
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_e.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m1.png b/amor/data/pics/animated/ghost/ghost_m1.png
new file mode 100644
index 0000000..d06461b
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m1.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m2.png b/amor/data/pics/animated/ghost/ghost_m2.png
new file mode 100644
index 0000000..48ee585
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m2.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m3.png b/amor/data/pics/animated/ghost/ghost_m3.png
new file mode 100644
index 0000000..9c54126
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m3.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m4.png b/amor/data/pics/animated/ghost/ghost_m4.png
new file mode 100644
index 0000000..7bc2fa2
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m4.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m5.png b/amor/data/pics/animated/ghost/ghost_m5.png
new file mode 100644
index 0000000..2eff65b
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m5.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m6.png b/amor/data/pics/animated/ghost/ghost_m6.png
new file mode 100644
index 0000000..1961ff3
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m6.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_m7.png b/amor/data/pics/animated/ghost/ghost_m7.png
new file mode 100644
index 0000000..5664128
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_m7.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_z1.png b/amor/data/pics/animated/ghost/ghost_z1.png
new file mode 100644
index 0000000..a092d04
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_z1.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_z2.png b/amor/data/pics/animated/ghost/ghost_z2.png
new file mode 100644
index 0000000..9ee97dd
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_z2.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_z3.png b/amor/data/pics/animated/ghost/ghost_z3.png
new file mode 100644
index 0000000..48fcccb
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_z3.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_z4.png b/amor/data/pics/animated/ghost/ghost_z4.png
new file mode 100644
index 0000000..6ac3d64
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_z4.png
Binary files differ
diff --git a/amor/data/pics/animated/ghost/ghost_z5.png b/amor/data/pics/animated/ghost/ghost_z5.png
new file mode 100644
index 0000000..af66260
--- /dev/null
+++ b/amor/data/pics/animated/ghost/ghost_z5.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/Makefile.am b/amor/data/pics/animated/neko/Makefile.am
new file mode 100644
index 0000000..1d97869
--- /dev/null
+++ b/amor/data/pics/animated/neko/Makefile.am
@@ -0,0 +1,31 @@
+# Add all your pic files here
+amor_DATA = claw1.png \
+ claw2.png \
+ jump1.png \
+ jump2.png \
+ jump3.png \
+ jump4.png \
+ jumpl1.png \
+ jumpl2.png \
+ jumpl3.png \
+ jumpl4.png \
+ lick2.png \
+ lick.png \
+ run1.png \
+ run2.png \
+ run3.png \
+ run4.png \
+ scratch1.png \
+ scratch2.png \
+ scratch3.png \
+ scratch4.png \
+ sitleft.png \
+ sit.png \
+ sleep1.png \
+ sleep2.png \
+ surprise.png \
+ tail.png \
+ yawn.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/neko
diff --git a/amor/data/pics/animated/neko/claw1.png b/amor/data/pics/animated/neko/claw1.png
new file mode 100644
index 0000000..3fd1823
--- /dev/null
+++ b/amor/data/pics/animated/neko/claw1.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/claw2.png b/amor/data/pics/animated/neko/claw2.png
new file mode 100644
index 0000000..47fd671
--- /dev/null
+++ b/amor/data/pics/animated/neko/claw2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jump1.png b/amor/data/pics/animated/neko/jump1.png
new file mode 100644
index 0000000..0c215d7
--- /dev/null
+++ b/amor/data/pics/animated/neko/jump1.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jump2.png b/amor/data/pics/animated/neko/jump2.png
new file mode 100644
index 0000000..fdea8cf
--- /dev/null
+++ b/amor/data/pics/animated/neko/jump2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jump3.png b/amor/data/pics/animated/neko/jump3.png
new file mode 100644
index 0000000..ec9d854
--- /dev/null
+++ b/amor/data/pics/animated/neko/jump3.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jump4.png b/amor/data/pics/animated/neko/jump4.png
new file mode 100644
index 0000000..56820c8
--- /dev/null
+++ b/amor/data/pics/animated/neko/jump4.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jumpl1.png b/amor/data/pics/animated/neko/jumpl1.png
new file mode 100644
index 0000000..8769232
--- /dev/null
+++ b/amor/data/pics/animated/neko/jumpl1.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jumpl2.png b/amor/data/pics/animated/neko/jumpl2.png
new file mode 100644
index 0000000..ce05929
--- /dev/null
+++ b/amor/data/pics/animated/neko/jumpl2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jumpl3.png b/amor/data/pics/animated/neko/jumpl3.png
new file mode 100644
index 0000000..80e309d
--- /dev/null
+++ b/amor/data/pics/animated/neko/jumpl3.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/jumpl4.png b/amor/data/pics/animated/neko/jumpl4.png
new file mode 100644
index 0000000..146e54b
--- /dev/null
+++ b/amor/data/pics/animated/neko/jumpl4.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/lick.png b/amor/data/pics/animated/neko/lick.png
new file mode 100644
index 0000000..91460f2
--- /dev/null
+++ b/amor/data/pics/animated/neko/lick.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/lick2.png b/amor/data/pics/animated/neko/lick2.png
new file mode 100644
index 0000000..5500c30
--- /dev/null
+++ b/amor/data/pics/animated/neko/lick2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/run1.png b/amor/data/pics/animated/neko/run1.png
new file mode 100644
index 0000000..3fce7ca
--- /dev/null
+++ b/amor/data/pics/animated/neko/run1.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/run2.png b/amor/data/pics/animated/neko/run2.png
new file mode 100644
index 0000000..327763b
--- /dev/null
+++ b/amor/data/pics/animated/neko/run2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/run3.png b/amor/data/pics/animated/neko/run3.png
new file mode 100644
index 0000000..b9e6686
--- /dev/null
+++ b/amor/data/pics/animated/neko/run3.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/run4.png b/amor/data/pics/animated/neko/run4.png
new file mode 100644
index 0000000..8fa6886
--- /dev/null
+++ b/amor/data/pics/animated/neko/run4.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/scratch1.png b/amor/data/pics/animated/neko/scratch1.png
new file mode 100644
index 0000000..295655a
--- /dev/null
+++ b/amor/data/pics/animated/neko/scratch1.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/scratch2.png b/amor/data/pics/animated/neko/scratch2.png
new file mode 100644
index 0000000..b78a4da
--- /dev/null
+++ b/amor/data/pics/animated/neko/scratch2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/scratch3.png b/amor/data/pics/animated/neko/scratch3.png
new file mode 100644
index 0000000..9beb423
--- /dev/null
+++ b/amor/data/pics/animated/neko/scratch3.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/scratch4.png b/amor/data/pics/animated/neko/scratch4.png
new file mode 100644
index 0000000..2b19c63
--- /dev/null
+++ b/amor/data/pics/animated/neko/scratch4.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/sit.png b/amor/data/pics/animated/neko/sit.png
new file mode 100644
index 0000000..bee476c
--- /dev/null
+++ b/amor/data/pics/animated/neko/sit.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/sitleft.png b/amor/data/pics/animated/neko/sitleft.png
new file mode 100644
index 0000000..f711d48
--- /dev/null
+++ b/amor/data/pics/animated/neko/sitleft.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/sleep1.png b/amor/data/pics/animated/neko/sleep1.png
new file mode 100644
index 0000000..f8f1c51
--- /dev/null
+++ b/amor/data/pics/animated/neko/sleep1.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/sleep2.png b/amor/data/pics/animated/neko/sleep2.png
new file mode 100644
index 0000000..c7194fa
--- /dev/null
+++ b/amor/data/pics/animated/neko/sleep2.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/surprise.png b/amor/data/pics/animated/neko/surprise.png
new file mode 100644
index 0000000..2d06199
--- /dev/null
+++ b/amor/data/pics/animated/neko/surprise.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/tail.png b/amor/data/pics/animated/neko/tail.png
new file mode 100644
index 0000000..e5b47a6
--- /dev/null
+++ b/amor/data/pics/animated/neko/tail.png
Binary files differ
diff --git a/amor/data/pics/animated/neko/yawn.png b/amor/data/pics/animated/neko/yawn.png
new file mode 100644
index 0000000..b16cf59
--- /dev/null
+++ b/amor/data/pics/animated/neko/yawn.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/Makefile.am b/amor/data/pics/animated/pingu/Makefile.am
new file mode 100644
index 0000000..a52245e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/Makefile.am
@@ -0,0 +1,104 @@
+# Add all your pic files here
+amor_DATA = bash_l10.png \
+ bash_l11.png \
+ bash_l12.png \
+ bash_l1.png \
+ bash_l2.png \
+ bash_l3.png \
+ bash_l4.png \
+ bash_l5.png \
+ bash_l6.png \
+ bash_l7.png \
+ bash_l8.png \
+ bash_l9.png \
+ bash_r10.png \
+ bash_r11.png \
+ bash_r12.png \
+ bash_r1.png \
+ bash_r2.png \
+ bash_r3.png \
+ bash_r4.png \
+ bash_r5.png \
+ bash_r6.png \
+ bash_r7.png \
+ bash_r8.png \
+ bash_r9.png \
+ blocker1.png \
+ blocker2.png \
+ blocker3.png \
+ blocker4.png \
+ blocker5.png \
+ blocker6.png \
+ bomber10.png \
+ bomber11.png \
+ bomber12.png \
+ bomber13.png \
+ bomber14.png \
+ bomber15.png \
+ bomber16.png \
+ bomber1.png \
+ bomber2.png \
+ bomber3.png \
+ bomber4.png \
+ bomber5.png \
+ bomber6.png \
+ bomber7.png \
+ bomber8.png \
+ bomber9.png \
+ digger10.png \
+ digger11.png \
+ digger12.png \
+ digger13.png \
+ digger14.png \
+ digger1.png \
+ digger2.png \
+ digger3.png \
+ digger4.png \
+ digger5.png \
+ digger6.png \
+ digger7.png \
+ digger8.png \
+ digger9.png \
+ faller1.png \
+ faller2.png \
+ faller3.png \
+ faller4.png \
+ faller5.png \
+ faller6.png \
+ faller7.png \
+ faller8.png \
+ floater1.png \
+ floater2.png \
+ floater3.png \
+ floater4.png \
+ floater5.png \
+ floater6.png \
+ floater7.png \
+ floater8.png \
+ tumble1.png \
+ tumble2.png \
+ tumble3.png \
+ tumble4.png \
+ tumble5.png \
+ tumble6.png \
+ tumble7.png \
+ tumble8.png \
+ walk_l1.png \
+ walk_l2.png \
+ walk_l3.png \
+ walk_l4.png \
+ walk_l5.png \
+ walk_l6.png \
+ walk_l7.png \
+ walk_l8.png \
+ walk_r1.png \
+ walk_r2.png \
+ walk_r3.png \
+ walk_r4.png \
+ walk_r5.png \
+ walk_r6.png \
+ walk_r7.png \
+ walk_r8.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/pingu
diff --git a/amor/data/pics/animated/pingu/bash_l1.png b/amor/data/pics/animated/pingu/bash_l1.png
new file mode 100644
index 0000000..3aecb50
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l10.png b/amor/data/pics/animated/pingu/bash_l10.png
new file mode 100644
index 0000000..a47eefe
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l10.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l11.png b/amor/data/pics/animated/pingu/bash_l11.png
new file mode 100644
index 0000000..3682b7e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l11.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l12.png b/amor/data/pics/animated/pingu/bash_l12.png
new file mode 100644
index 0000000..23bd7d3
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l12.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l2.png b/amor/data/pics/animated/pingu/bash_l2.png
new file mode 100644
index 0000000..70d2641
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l3.png b/amor/data/pics/animated/pingu/bash_l3.png
new file mode 100644
index 0000000..47ec510
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l4.png b/amor/data/pics/animated/pingu/bash_l4.png
new file mode 100644
index 0000000..5904d76
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l5.png b/amor/data/pics/animated/pingu/bash_l5.png
new file mode 100644
index 0000000..39e99c3
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l6.png b/amor/data/pics/animated/pingu/bash_l6.png
new file mode 100644
index 0000000..6d328ee
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l7.png b/amor/data/pics/animated/pingu/bash_l7.png
new file mode 100644
index 0000000..78b1a6b
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l8.png b/amor/data/pics/animated/pingu/bash_l8.png
new file mode 100644
index 0000000..6406967
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_l9.png b/amor/data/pics/animated/pingu/bash_l9.png
new file mode 100644
index 0000000..bb97ee6
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_l9.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r1.png b/amor/data/pics/animated/pingu/bash_r1.png
new file mode 100644
index 0000000..a219626
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r10.png b/amor/data/pics/animated/pingu/bash_r10.png
new file mode 100644
index 0000000..ba0b0a1
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r10.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r11.png b/amor/data/pics/animated/pingu/bash_r11.png
new file mode 100644
index 0000000..d00679b
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r11.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r12.png b/amor/data/pics/animated/pingu/bash_r12.png
new file mode 100644
index 0000000..7586dd3
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r12.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r2.png b/amor/data/pics/animated/pingu/bash_r2.png
new file mode 100644
index 0000000..3708ac8
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r3.png b/amor/data/pics/animated/pingu/bash_r3.png
new file mode 100644
index 0000000..6115600
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r4.png b/amor/data/pics/animated/pingu/bash_r4.png
new file mode 100644
index 0000000..b3f0cf2
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r5.png b/amor/data/pics/animated/pingu/bash_r5.png
new file mode 100644
index 0000000..2cd3ab3
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r6.png b/amor/data/pics/animated/pingu/bash_r6.png
new file mode 100644
index 0000000..d926f7b
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r7.png b/amor/data/pics/animated/pingu/bash_r7.png
new file mode 100644
index 0000000..40e1a1f
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r8.png b/amor/data/pics/animated/pingu/bash_r8.png
new file mode 100644
index 0000000..a3adeb0
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bash_r9.png b/amor/data/pics/animated/pingu/bash_r9.png
new file mode 100644
index 0000000..0f300ec
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bash_r9.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/blocker1.png b/amor/data/pics/animated/pingu/blocker1.png
new file mode 100644
index 0000000..ec80d84
--- /dev/null
+++ b/amor/data/pics/animated/pingu/blocker1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/blocker2.png b/amor/data/pics/animated/pingu/blocker2.png
new file mode 100644
index 0000000..1266601
--- /dev/null
+++ b/amor/data/pics/animated/pingu/blocker2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/blocker3.png b/amor/data/pics/animated/pingu/blocker3.png
new file mode 100644
index 0000000..8bafa3e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/blocker3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/blocker4.png b/amor/data/pics/animated/pingu/blocker4.png
new file mode 100644
index 0000000..1bf012e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/blocker4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/blocker5.png b/amor/data/pics/animated/pingu/blocker5.png
new file mode 100644
index 0000000..b97b7be
--- /dev/null
+++ b/amor/data/pics/animated/pingu/blocker5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/blocker6.png b/amor/data/pics/animated/pingu/blocker6.png
new file mode 100644
index 0000000..9af87c5
--- /dev/null
+++ b/amor/data/pics/animated/pingu/blocker6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber1.png b/amor/data/pics/animated/pingu/bomber1.png
new file mode 100644
index 0000000..f1cfc39
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber10.png b/amor/data/pics/animated/pingu/bomber10.png
new file mode 100644
index 0000000..9cf05a3
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber10.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber11.png b/amor/data/pics/animated/pingu/bomber11.png
new file mode 100644
index 0000000..fea710a
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber11.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber12.png b/amor/data/pics/animated/pingu/bomber12.png
new file mode 100644
index 0000000..710cdf5
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber12.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber13.png b/amor/data/pics/animated/pingu/bomber13.png
new file mode 100644
index 0000000..432de42
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber13.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber14.png b/amor/data/pics/animated/pingu/bomber14.png
new file mode 100644
index 0000000..b1d939e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber14.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber15.png b/amor/data/pics/animated/pingu/bomber15.png
new file mode 100644
index 0000000..b61d38a
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber15.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber16.png b/amor/data/pics/animated/pingu/bomber16.png
new file mode 100644
index 0000000..fe0e574
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber16.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber2.png b/amor/data/pics/animated/pingu/bomber2.png
new file mode 100644
index 0000000..f1cfc39
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber3.png b/amor/data/pics/animated/pingu/bomber3.png
new file mode 100644
index 0000000..f1cfc39
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber4.png b/amor/data/pics/animated/pingu/bomber4.png
new file mode 100644
index 0000000..f995ddc
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber5.png b/amor/data/pics/animated/pingu/bomber5.png
new file mode 100644
index 0000000..461bbfb
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber6.png b/amor/data/pics/animated/pingu/bomber6.png
new file mode 100644
index 0000000..0f86ea1
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber7.png b/amor/data/pics/animated/pingu/bomber7.png
new file mode 100644
index 0000000..a6581f2
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber8.png b/amor/data/pics/animated/pingu/bomber8.png
new file mode 100644
index 0000000..db27d89
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/bomber9.png b/amor/data/pics/animated/pingu/bomber9.png
new file mode 100644
index 0000000..cff81fa
--- /dev/null
+++ b/amor/data/pics/animated/pingu/bomber9.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger1.png b/amor/data/pics/animated/pingu/digger1.png
new file mode 100644
index 0000000..085ca98
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger10.png b/amor/data/pics/animated/pingu/digger10.png
new file mode 100644
index 0000000..6b24822
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger10.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger11.png b/amor/data/pics/animated/pingu/digger11.png
new file mode 100644
index 0000000..a8ac44a
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger11.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger12.png b/amor/data/pics/animated/pingu/digger12.png
new file mode 100644
index 0000000..b4dc655
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger12.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger13.png b/amor/data/pics/animated/pingu/digger13.png
new file mode 100644
index 0000000..6008733
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger13.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger14.png b/amor/data/pics/animated/pingu/digger14.png
new file mode 100644
index 0000000..e07e4fd
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger14.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger2.png b/amor/data/pics/animated/pingu/digger2.png
new file mode 100644
index 0000000..e45c7ab
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger3.png b/amor/data/pics/animated/pingu/digger3.png
new file mode 100644
index 0000000..325fa18
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger4.png b/amor/data/pics/animated/pingu/digger4.png
new file mode 100644
index 0000000..b802f14
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger5.png b/amor/data/pics/animated/pingu/digger5.png
new file mode 100644
index 0000000..8e38e07
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger6.png b/amor/data/pics/animated/pingu/digger6.png
new file mode 100644
index 0000000..52f9a7f
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger7.png b/amor/data/pics/animated/pingu/digger7.png
new file mode 100644
index 0000000..f55c6d5
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger8.png b/amor/data/pics/animated/pingu/digger8.png
new file mode 100644
index 0000000..1d8858f
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/digger9.png b/amor/data/pics/animated/pingu/digger9.png
new file mode 100644
index 0000000..dbc37ae
--- /dev/null
+++ b/amor/data/pics/animated/pingu/digger9.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller1.png b/amor/data/pics/animated/pingu/faller1.png
new file mode 100644
index 0000000..654d31f
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller2.png b/amor/data/pics/animated/pingu/faller2.png
new file mode 100644
index 0000000..5621e7c
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller3.png b/amor/data/pics/animated/pingu/faller3.png
new file mode 100644
index 0000000..066ed4a
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller4.png b/amor/data/pics/animated/pingu/faller4.png
new file mode 100644
index 0000000..d8ea7cb
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller5.png b/amor/data/pics/animated/pingu/faller5.png
new file mode 100644
index 0000000..9d86830
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller6.png b/amor/data/pics/animated/pingu/faller6.png
new file mode 100644
index 0000000..5621e7c
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller7.png b/amor/data/pics/animated/pingu/faller7.png
new file mode 100644
index 0000000..654d31f
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/faller8.png b/amor/data/pics/animated/pingu/faller8.png
new file mode 100644
index 0000000..7f3ad41
--- /dev/null
+++ b/amor/data/pics/animated/pingu/faller8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater1.png b/amor/data/pics/animated/pingu/floater1.png
new file mode 100644
index 0000000..ebc4344
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater2.png b/amor/data/pics/animated/pingu/floater2.png
new file mode 100644
index 0000000..3fbadf6
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater3.png b/amor/data/pics/animated/pingu/floater3.png
new file mode 100644
index 0000000..f7d3884
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater4.png b/amor/data/pics/animated/pingu/floater4.png
new file mode 100644
index 0000000..4255147
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater5.png b/amor/data/pics/animated/pingu/floater5.png
new file mode 100644
index 0000000..1c2de68
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater6.png b/amor/data/pics/animated/pingu/floater6.png
new file mode 100644
index 0000000..44730d6
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater7.png b/amor/data/pics/animated/pingu/floater7.png
new file mode 100644
index 0000000..62aa90e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/floater8.png b/amor/data/pics/animated/pingu/floater8.png
new file mode 100644
index 0000000..3418665
--- /dev/null
+++ b/amor/data/pics/animated/pingu/floater8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble1.png b/amor/data/pics/animated/pingu/tumble1.png
new file mode 100644
index 0000000..1321877
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble2.png b/amor/data/pics/animated/pingu/tumble2.png
new file mode 100644
index 0000000..717862d
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble3.png b/amor/data/pics/animated/pingu/tumble3.png
new file mode 100644
index 0000000..ae093e5
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble4.png b/amor/data/pics/animated/pingu/tumble4.png
new file mode 100644
index 0000000..8ac7e6e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble5.png b/amor/data/pics/animated/pingu/tumble5.png
new file mode 100644
index 0000000..683872c
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble6.png b/amor/data/pics/animated/pingu/tumble6.png
new file mode 100644
index 0000000..19adfd4
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble7.png b/amor/data/pics/animated/pingu/tumble7.png
new file mode 100644
index 0000000..4e01cb9
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/tumble8.png b/amor/data/pics/animated/pingu/tumble8.png
new file mode 100644
index 0000000..3b8766d
--- /dev/null
+++ b/amor/data/pics/animated/pingu/tumble8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l1.png b/amor/data/pics/animated/pingu/walk_l1.png
new file mode 100644
index 0000000..15df071
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l2.png b/amor/data/pics/animated/pingu/walk_l2.png
new file mode 100644
index 0000000..9e8c032
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l3.png b/amor/data/pics/animated/pingu/walk_l3.png
new file mode 100644
index 0000000..ee92b68
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l4.png b/amor/data/pics/animated/pingu/walk_l4.png
new file mode 100644
index 0000000..b8f9b6b
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l5.png b/amor/data/pics/animated/pingu/walk_l5.png
new file mode 100644
index 0000000..62358f9
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l6.png b/amor/data/pics/animated/pingu/walk_l6.png
new file mode 100644
index 0000000..12838bb
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l7.png b/amor/data/pics/animated/pingu/walk_l7.png
new file mode 100644
index 0000000..25f5cdd
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_l8.png b/amor/data/pics/animated/pingu/walk_l8.png
new file mode 100644
index 0000000..316f46a
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_l8.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r1.png b/amor/data/pics/animated/pingu/walk_r1.png
new file mode 100644
index 0000000..3dd16ca
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r1.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r2.png b/amor/data/pics/animated/pingu/walk_r2.png
new file mode 100644
index 0000000..ba8f615
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r2.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r3.png b/amor/data/pics/animated/pingu/walk_r3.png
new file mode 100644
index 0000000..f0fe5a9
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r3.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r4.png b/amor/data/pics/animated/pingu/walk_r4.png
new file mode 100644
index 0000000..c01875e
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r4.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r5.png b/amor/data/pics/animated/pingu/walk_r5.png
new file mode 100644
index 0000000..f33fdfd
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r5.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r6.png b/amor/data/pics/animated/pingu/walk_r6.png
new file mode 100644
index 0000000..dac872b
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r6.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r7.png b/amor/data/pics/animated/pingu/walk_r7.png
new file mode 100644
index 0000000..5414b6b
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r7.png
Binary files differ
diff --git a/amor/data/pics/animated/pingu/walk_r8.png b/amor/data/pics/animated/pingu/walk_r8.png
new file mode 100644
index 0000000..0ea1009
--- /dev/null
+++ b/amor/data/pics/animated/pingu/walk_r8.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/Makefile.am b/amor/data/pics/animated/tao/Makefile.am
new file mode 100644
index 0000000..babc50e
--- /dev/null
+++ b/amor/data/pics/animated/tao/Makefile.am
@@ -0,0 +1,50 @@
+# Add all your pic files here
+amor_DATA = yy105.png \
+ yy120.png \
+ yy135.png \
+ yy150.png \
+ yy15.png \
+ yy165.png \
+ yy180.png \
+ yy195.png \
+ yy-1.png \
+ yy210.png \
+ yy225.png \
+ yy240.png \
+ yy255.png \
+ yy270.png \
+ yy285.png \
+ yy-2.png \
+ yy300.png \
+ yy30.png \
+ yy315.png \
+ yy330.png \
+ yy345.png \
+ yy-3.png \
+ yy45.png \
+ yy-4.png \
+ yy-5.png \
+ yy60.png \
+ yy-6.png \
+ yy75.png \
+ yy-7.png \
+ yy-8.png \
+ yy90.png \
+ yy-9.png \
+ yy.png \
+ yyx10.png \
+ yyx12.png \
+ yyx14.png \
+ yyx16.png \
+ yyx18.png \
+ yyx20.png \
+ yyx22.png \
+ yyx24.png \
+ yyx26.png \
+ yyx28.png \
+ yyx30.png \
+ yyx6.png \
+ yyx8.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/tao
diff --git a/amor/data/pics/animated/tao/yy-1.png b/amor/data/pics/animated/tao/yy-1.png
new file mode 100644
index 0000000..05139a5
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-1.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-2.png b/amor/data/pics/animated/tao/yy-2.png
new file mode 100644
index 0000000..491d257
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-2.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-3.png b/amor/data/pics/animated/tao/yy-3.png
new file mode 100644
index 0000000..f4fc26e
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-3.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-4.png b/amor/data/pics/animated/tao/yy-4.png
new file mode 100644
index 0000000..b7c027d
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-4.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-5.png b/amor/data/pics/animated/tao/yy-5.png
new file mode 100644
index 0000000..27881bf
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-5.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-6.png b/amor/data/pics/animated/tao/yy-6.png
new file mode 100644
index 0000000..27881bf
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-6.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-7.png b/amor/data/pics/animated/tao/yy-7.png
new file mode 100644
index 0000000..c016f9a
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-7.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-8.png b/amor/data/pics/animated/tao/yy-8.png
new file mode 100644
index 0000000..38183ed
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-8.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy-9.png b/amor/data/pics/animated/tao/yy-9.png
new file mode 100644
index 0000000..3ac3d7e
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy-9.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy.png b/amor/data/pics/animated/tao/yy.png
new file mode 100644
index 0000000..e45fb61
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy105.png b/amor/data/pics/animated/tao/yy105.png
new file mode 100644
index 0000000..71b0afe
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy105.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy120.png b/amor/data/pics/animated/tao/yy120.png
new file mode 100644
index 0000000..bd09790
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy120.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy135.png b/amor/data/pics/animated/tao/yy135.png
new file mode 100644
index 0000000..e7e7ddf
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy135.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy15.png b/amor/data/pics/animated/tao/yy15.png
new file mode 100644
index 0000000..2ea9002
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy15.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy150.png b/amor/data/pics/animated/tao/yy150.png
new file mode 100644
index 0000000..adfff96
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy150.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy165.png b/amor/data/pics/animated/tao/yy165.png
new file mode 100644
index 0000000..5d72512
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy165.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy180.png b/amor/data/pics/animated/tao/yy180.png
new file mode 100644
index 0000000..88e3de7
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy180.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy195.png b/amor/data/pics/animated/tao/yy195.png
new file mode 100644
index 0000000..35f0435
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy195.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy210.png b/amor/data/pics/animated/tao/yy210.png
new file mode 100644
index 0000000..c8f2c15
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy210.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy225.png b/amor/data/pics/animated/tao/yy225.png
new file mode 100644
index 0000000..aee2e9d
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy225.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy240.png b/amor/data/pics/animated/tao/yy240.png
new file mode 100644
index 0000000..2f64c2b
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy240.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy255.png b/amor/data/pics/animated/tao/yy255.png
new file mode 100644
index 0000000..bb429c6
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy255.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy270.png b/amor/data/pics/animated/tao/yy270.png
new file mode 100644
index 0000000..c3d9374
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy270.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy285.png b/amor/data/pics/animated/tao/yy285.png
new file mode 100644
index 0000000..cef1f8a
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy285.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy30.png b/amor/data/pics/animated/tao/yy30.png
new file mode 100644
index 0000000..d5ddd3d
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy30.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy300.png b/amor/data/pics/animated/tao/yy300.png
new file mode 100644
index 0000000..649606e
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy300.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy315.png b/amor/data/pics/animated/tao/yy315.png
new file mode 100644
index 0000000..b8136e8
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy315.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy330.png b/amor/data/pics/animated/tao/yy330.png
new file mode 100644
index 0000000..389af9d
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy330.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy345.png b/amor/data/pics/animated/tao/yy345.png
new file mode 100644
index 0000000..7bd415a
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy345.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy45.png b/amor/data/pics/animated/tao/yy45.png
new file mode 100644
index 0000000..aaa845c
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy45.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy60.png b/amor/data/pics/animated/tao/yy60.png
new file mode 100644
index 0000000..ac9925e
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy60.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy75.png b/amor/data/pics/animated/tao/yy75.png
new file mode 100644
index 0000000..92c3387
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy75.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yy90.png b/amor/data/pics/animated/tao/yy90.png
new file mode 100644
index 0000000..483d685
--- /dev/null
+++ b/amor/data/pics/animated/tao/yy90.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx10.png b/amor/data/pics/animated/tao/yyx10.png
new file mode 100644
index 0000000..98cf1ab
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx10.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx12.png b/amor/data/pics/animated/tao/yyx12.png
new file mode 100644
index 0000000..49270c5
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx12.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx14.png b/amor/data/pics/animated/tao/yyx14.png
new file mode 100644
index 0000000..2e973f3
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx14.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx16.png b/amor/data/pics/animated/tao/yyx16.png
new file mode 100644
index 0000000..ba025e6
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx16.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx18.png b/amor/data/pics/animated/tao/yyx18.png
new file mode 100644
index 0000000..8983376
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx18.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx20.png b/amor/data/pics/animated/tao/yyx20.png
new file mode 100644
index 0000000..9b1ab5f
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx20.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx22.png b/amor/data/pics/animated/tao/yyx22.png
new file mode 100644
index 0000000..edd897d
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx22.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx24.png b/amor/data/pics/animated/tao/yyx24.png
new file mode 100644
index 0000000..1c618f7
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx24.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx26.png b/amor/data/pics/animated/tao/yyx26.png
new file mode 100644
index 0000000..8d0d045
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx26.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx28.png b/amor/data/pics/animated/tao/yyx28.png
new file mode 100644
index 0000000..037eba8
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx28.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx30.png b/amor/data/pics/animated/tao/yyx30.png
new file mode 100644
index 0000000..337ac30
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx30.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx6.png b/amor/data/pics/animated/tao/yyx6.png
new file mode 100644
index 0000000..5599878
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx6.png
Binary files differ
diff --git a/amor/data/pics/animated/tao/yyx8.png b/amor/data/pics/animated/tao/yyx8.png
new file mode 100644
index 0000000..9cdf2dc
--- /dev/null
+++ b/amor/data/pics/animated/tao/yyx8.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/Makefile.am b/amor/data/pics/animated/worm/Makefile.am
new file mode 100644
index 0000000..4562e8a
--- /dev/null
+++ b/amor/data/pics/animated/worm/Makefile.am
@@ -0,0 +1,40 @@
+# Add all your pic files here
+amor_DATA = w-a1.png \
+ w-a2.png \
+ w-b1.png \
+ w-b2.png \
+ w-be1.png \
+ w-be2.png \
+ w-be3.png \
+ w-be4.png \
+ w-d1.png \
+ w-d2.png \
+ w-d3.png \
+ w-d4.png \
+ w-d5.png \
+ w-dr1.png \
+ w-e1.png \
+ w-l1.png \
+ w-l2.png \
+ w-l3.png \
+ w-ml0.png \
+ w-ml1.png \
+ w-ml2.png \
+ w-ml3.png \
+ w-mr0.png \
+ w-mr1.png \
+ w-mr2.png \
+ w-mr3.png \
+ w-s1.png \
+ w-s2.png \
+ w-s3.png \
+ w-u1.png \
+ w-u2.png \
+ w-u3.png \
+ w-wl1.png \
+ w-wl2.png \
+ w-wr1.png \
+ w-wr2.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/animated/worm
diff --git a/amor/data/pics/animated/worm/w-a1.png b/amor/data/pics/animated/worm/w-a1.png
new file mode 100644
index 0000000..1219075
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-a1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-a2.png b/amor/data/pics/animated/worm/w-a2.png
new file mode 100644
index 0000000..622a9d5
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-a2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-b1.png b/amor/data/pics/animated/worm/w-b1.png
new file mode 100644
index 0000000..73f94d9
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-b1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-b2.png b/amor/data/pics/animated/worm/w-b2.png
new file mode 100644
index 0000000..dea3c97
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-b2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-be1.png b/amor/data/pics/animated/worm/w-be1.png
new file mode 100644
index 0000000..8cf8940
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-be1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-be2.png b/amor/data/pics/animated/worm/w-be2.png
new file mode 100644
index 0000000..4d59132
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-be2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-be3.png b/amor/data/pics/animated/worm/w-be3.png
new file mode 100644
index 0000000..1d85e77
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-be3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-be4.png b/amor/data/pics/animated/worm/w-be4.png
new file mode 100644
index 0000000..68d225d
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-be4.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-d1.png b/amor/data/pics/animated/worm/w-d1.png
new file mode 100644
index 0000000..b06d547
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-d1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-d2.png b/amor/data/pics/animated/worm/w-d2.png
new file mode 100644
index 0000000..cea1149
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-d2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-d3.png b/amor/data/pics/animated/worm/w-d3.png
new file mode 100644
index 0000000..cc70e76
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-d3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-d4.png b/amor/data/pics/animated/worm/w-d4.png
new file mode 100644
index 0000000..fb98926
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-d4.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-d5.png b/amor/data/pics/animated/worm/w-d5.png
new file mode 100644
index 0000000..368bb09
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-d5.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-dr1.png b/amor/data/pics/animated/worm/w-dr1.png
new file mode 100644
index 0000000..3c80f1f
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-dr1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-e1.png b/amor/data/pics/animated/worm/w-e1.png
new file mode 100644
index 0000000..529f4b7
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-e1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-l1.png b/amor/data/pics/animated/worm/w-l1.png
new file mode 100644
index 0000000..cfe128a
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-l1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-l2.png b/amor/data/pics/animated/worm/w-l2.png
new file mode 100644
index 0000000..bcfb63a
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-l2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-l3.png b/amor/data/pics/animated/worm/w-l3.png
new file mode 100644
index 0000000..a32d7b6
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-l3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-ml0.png b/amor/data/pics/animated/worm/w-ml0.png
new file mode 100644
index 0000000..5966eda
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-ml0.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-ml1.png b/amor/data/pics/animated/worm/w-ml1.png
new file mode 100644
index 0000000..19f12d2
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-ml1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-ml2.png b/amor/data/pics/animated/worm/w-ml2.png
new file mode 100644
index 0000000..6d5cbf9
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-ml2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-ml3.png b/amor/data/pics/animated/worm/w-ml3.png
new file mode 100644
index 0000000..d476391
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-ml3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-mr0.png b/amor/data/pics/animated/worm/w-mr0.png
new file mode 100644
index 0000000..196431a
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-mr0.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-mr1.png b/amor/data/pics/animated/worm/w-mr1.png
new file mode 100644
index 0000000..ee9e738
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-mr1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-mr2.png b/amor/data/pics/animated/worm/w-mr2.png
new file mode 100644
index 0000000..1f1a45e
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-mr2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-mr3.png b/amor/data/pics/animated/worm/w-mr3.png
new file mode 100644
index 0000000..adbf28e
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-mr3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-s1.png b/amor/data/pics/animated/worm/w-s1.png
new file mode 100644
index 0000000..4d092fe
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-s1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-s2.png b/amor/data/pics/animated/worm/w-s2.png
new file mode 100644
index 0000000..49a7915
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-s2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-s3.png b/amor/data/pics/animated/worm/w-s3.png
new file mode 100644
index 0000000..583e70b
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-s3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-u1.png b/amor/data/pics/animated/worm/w-u1.png
new file mode 100644
index 0000000..d3d77c2
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-u1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-u2.png b/amor/data/pics/animated/worm/w-u2.png
new file mode 100644
index 0000000..580bb45
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-u2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-u3.png b/amor/data/pics/animated/worm/w-u3.png
new file mode 100644
index 0000000..b762397
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-u3.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-wl1.png b/amor/data/pics/animated/worm/w-wl1.png
new file mode 100644
index 0000000..8de3fde
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-wl1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-wl2.png b/amor/data/pics/animated/worm/w-wl2.png
new file mode 100644
index 0000000..4850cf3
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-wl2.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-wr1.png b/amor/data/pics/animated/worm/w-wr1.png
new file mode 100644
index 0000000..5f1af84
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-wr1.png
Binary files differ
diff --git a/amor/data/pics/animated/worm/w-wr2.png b/amor/data/pics/animated/worm/w-wr2.png
new file mode 100644
index 0000000..5fb349c
--- /dev/null
+++ b/amor/data/pics/animated/worm/w-wr2.png
Binary files differ
diff --git a/amor/data/pics/preview/Makefile.am b/amor/data/pics/preview/Makefile.am
new file mode 100644
index 0000000..fca491d
--- /dev/null
+++ b/amor/data/pics/preview/Makefile.am
@@ -0,0 +1,5 @@
+# Add all your pic files here
+amor_DATA = billy.png bonhomme.png ghost.png neko.png tux.png blob.png bsd.png eyes.png tao.png worm.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/preview
diff --git a/amor/data/pics/preview/billy.png b/amor/data/pics/preview/billy.png
new file mode 100644
index 0000000..4bc7035
--- /dev/null
+++ b/amor/data/pics/preview/billy.png
Binary files differ
diff --git a/amor/data/pics/preview/blob.png b/amor/data/pics/preview/blob.png
new file mode 100644
index 0000000..85a0db7
--- /dev/null
+++ b/amor/data/pics/preview/blob.png
Binary files differ
diff --git a/amor/data/pics/preview/bonhomme.png b/amor/data/pics/preview/bonhomme.png
new file mode 100644
index 0000000..db98040
--- /dev/null
+++ b/amor/data/pics/preview/bonhomme.png
Binary files differ
diff --git a/amor/data/pics/preview/bsd.png b/amor/data/pics/preview/bsd.png
new file mode 100644
index 0000000..9cc2086
--- /dev/null
+++ b/amor/data/pics/preview/bsd.png
Binary files differ
diff --git a/amor/data/pics/preview/eyes.png b/amor/data/pics/preview/eyes.png
new file mode 100644
index 0000000..6309988
--- /dev/null
+++ b/amor/data/pics/preview/eyes.png
Binary files differ
diff --git a/amor/data/pics/preview/ghost.png b/amor/data/pics/preview/ghost.png
new file mode 100644
index 0000000..7042e08
--- /dev/null
+++ b/amor/data/pics/preview/ghost.png
Binary files differ
diff --git a/amor/data/pics/preview/neko.png b/amor/data/pics/preview/neko.png
new file mode 100644
index 0000000..bee476c
--- /dev/null
+++ b/amor/data/pics/preview/neko.png
Binary files differ
diff --git a/amor/data/pics/preview/tao.png b/amor/data/pics/preview/tao.png
new file mode 100644
index 0000000..b2d2d3e
--- /dev/null
+++ b/amor/data/pics/preview/tao.png
Binary files differ
diff --git a/amor/data/pics/preview/tux.png b/amor/data/pics/preview/tux.png
new file mode 100644
index 0000000..a196145
--- /dev/null
+++ b/amor/data/pics/preview/tux.png
Binary files differ
diff --git a/amor/data/pics/preview/worm.png b/amor/data/pics/preview/worm.png
new file mode 100644
index 0000000..196431a
--- /dev/null
+++ b/amor/data/pics/preview/worm.png
Binary files differ
diff --git a/amor/data/pics/static/Makefile.am b/amor/data/pics/static/Makefile.am
new file mode 100644
index 0000000..27d7e60
--- /dev/null
+++ b/amor/data/pics/static/Makefile.am
@@ -0,0 +1,5 @@
+# Add all your pic files here
+amor_DATA = billy.png bsd.png tux.png
+
+# This is where it will all be installed
+amordir = $(kde_datadir)/amor/pics/static
diff --git a/amor/data/pics/static/billy.png b/amor/data/pics/static/billy.png
new file mode 100644
index 0000000..89d5d28
--- /dev/null
+++ b/amor/data/pics/static/billy.png
Binary files differ
diff --git a/amor/data/pics/static/bsd.png b/amor/data/pics/static/bsd.png
new file mode 100644
index 0000000..77d3b2a
--- /dev/null
+++ b/amor/data/pics/static/bsd.png
Binary files differ
diff --git a/amor/data/pics/static/tux.png b/amor/data/pics/static/tux.png
new file mode 100644
index 0000000..924c569
--- /dev/null
+++ b/amor/data/pics/static/tux.png
Binary files differ
diff --git a/amor/data/pingurc b/amor/data/pingurc
new file mode 100644
index 0000000..31b8b0e
--- /dev/null
+++ b/amor/data/pingurc
@@ -0,0 +1,167 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/animated/pingu
+Description=Tux
+Description[be]=Tукс
+Description[bg]=Тъкс
+Description[bn]=টাক্স
+Description[eo]=Tuĉjo
+Description[he]=טקס
+Description[hi]=टक्स
+Description[lv]=Tuksis
+Description[mk]=Пингвин
+Description[ne]=टक्स
+Description[ru]=Тукс
+Description[ta]= Tux
+Description[tg]=Тукс
+Description[th]=ตุ๊กซ์
+Description[tr]=Penguen (Hareketli)
+Description[uz]=Taks
+Description[uz@cyrillic]=Такс
+Description[zh_CN]=Tux小企鹅
+About=By Frank Pieczynski\nBased on graphics of the game "pingus".
+About[af]=Deur Frank Pieczynski\nBased op grafieka van die speletjie "pingus".
+About[ar]=من فرانك بيسزينسكي\nمبنية على رسومات لعبة "pingus".
+About[az]=Frank Pieczynski tərəfindən\n"Pingus" oyunu qrafikaları əsasında.
+About[be]=Аўтар Frank Pieczynski\nЗаснавана на графіцы з гульні "pingus".
+About[bg]=Автор Франк Пижински\nБазирано на графика от играта pingus
+About[bn]=তৈরি করেছেন পিসজিনস্কি\n"পিঙ্গাস" দলের গ্রাফিক্সের ওপর ভিত্তি করে।
+About[br]=Gant Frank Pieczynski\nDiazezet war ur skeudenn c'hoari « pingus ».
+About[bs]=Autor Frank Pieczynski\nBazirano na slikama iz igre "pingus".
+About[ca]=Per Frank Pieczynski\nBasat en els gràfics del joc "pingus".
+About[cs]=Autor Frank Pieczynski\nNa základě grafiky hry "pingus".
+About[cy]=Gan Frank Pieczynski\nSeiliedig ar raffegau y gêm "pingus".
+About[da]=Af Frank Pieczynski\nBaseret på grafik fra spillet "pingus".
+About[de]=Von Frank Pieczynski\nNach den Graphiken des Spiels "Pingus"
+About[el]=Από τον Frank Pieczynski\n Βασισμένο σε γραφικά από το παιχνίδι "pingus".
+About[eo]=De Frank Pieczynski\nbazita sur grafikoj de la ludo "pingus".
+About[es]=Por Frank Pieczynski\nBasado en gráficos del juego «pingus».
+About[et]=Autor: Frank Pieczynski\nAluseks mängu "pingus" graafika.
+About[eu]=Frank Pieczynskik egina\n"pingus" jokoaren irudietan oinarritua.
+About[fa]=وسط فرانک پیزینسکی \nبر اساس نگاره‌های بازی «pingus».
+About[fi]=Tehnyt Frank Pieczynski\nPerustuu "pingus" pelin grafiikoihin.
+About[fr]=Par Frank Pieczynski\nBasé sur les graphismes du jeu « pingus ».
+About[ga]=Le Frank Pieczynski\nBunaithe ar ghrafaic an chluiche "pingus".
+About[gl]=Por Frank Pieczynski\nBaseado nos gráficos do xogo "pingus".
+About[he]=מאת פרנק פיצינקסי\nמבוסס על הגרפיקה של המשחק "pingus".
+About[hi]=फ्रेंक पाईजेंस्की द्वारा\nखेल "pingus" के चित्रों पर आधारित.
+About[hr]=Autor: Frank Pieczynski\nZasnovano na grafici iz igre "pingus".
+About[hu]=Készítette: Frank Pieczynski\nA grafika a "Pingus" nevű játékból származik.
+About[is]=By Frank Pieczynski\nByggt á myndefni úr leiknum "pingus".
+About[it]=Di Frank Pieczynski.\nBasato sulla grafica del gioco "pingus".
+About[ja]=By Frank Pieczynski\nゲーム "pingus" のグラフィックに基づく
+About[km]=ដោយ Frank Pieczynski\nផ្អែកលើ​ក្រាហ្វិក​ល្បែង "pingus" ។
+About[lt]=Darė Frank Pieczynski\nPagal „pingus“ žaidimo grafiką.
+About[lv]=Autors - Frank Pieczynski\nBāzēts uz spēles "pingus" grafiskās idejas.
+About[mk]=Од Frank Pieczynski\nБазирано на графиката од играта „pingus“.
+About[mt]=Ta' Frank Pieczynski\nIbażat fuq grafika tal-logħba "pingus".
+About[nb]=Av Frank Pieczynski\nBasert på bilde fra spillet «pingus».
+About[nds]=Vun Frank Pieczynski\nBuut op Biller vun dat Speel "pingus".
+About[ne]=फ्र्‌याङ्क पाइस्जिन्किद्वारा\nखेल "pingus"को ग्राफिकहरूमा आधारित
+About[nl]=Door Frank Pieczynski\nGebaseerd op illustraties uit het spel "pingus".
+About[nn]=Av Frank Pieczynski\nBasert på grafikk frå spelet "pingus".
+About[pl]=Autorstwa Franka Pieczynskiego\nNa podstawie grafiki z gry "pingus".
+About[pt]=De Frank Pieczynski\nBaseado numa imagem do jogo "pingus".
+About[pt_BR]=Por Frank Pieczynski\nBaseado nos gráficos do jogo "pingus".
+About[ro]=De Frank Pieczynski\nBazat pe grafica jocului "pingus".
+About[ru]=Автор - Frank Pieczynski\nНа основе графики игры "pingus".
+About[sk]=Vytvoril Frank Pieczynski\nZaložené na grafike z hry "pingus".
+About[sl]=Od Franka Pieczynskega\nTemelji na grafiki igre "pingus".
+About[sr]=Од Френка Пјечинског (Frank Pieczynski)\нБазирано на графици игре Pingus.
+About[sr@Latn]=Od Frenka Pječinskog (Frank Pieczynski)\nBazirano na grafici igre Pingus.
+About[sv]=Av Frank Pieczynski\nBaserad på grafik från spelet "Pingus"
+About[ta]=பிரான்க் பிஸ்சிகி \nஅசைவுட்ட விளையாட்டு " பின்கஸ்" லை பற்றியது.
+About[tg]=Франки Пикзунский\nТасвирҳои бозии "pingus".
+About[th]=โดย Frank Pieczynski\nโดยใช้พื้นฐานกราฟิกจากเกม "pingus"
+About[tr]=Frank Pieczynski\nPingus oyunundan esinlenilmiştir.
+About[uk]=Автор: Frank Pieczynski\nПобудовано з графіки для гри "pingus".
+About[uz]=Frank Pissinski (Frank Pieczynski) yaratgan\nPingus oʻyinining grafikasida asoslangan.
+About[uz@cyrillic]=Франк Писцински (Frank Pieczynski) яратган\nPingus ўйинининг графикасида асосланган.
+About[ven]=Nga Frank Pieczynski\nZwo di sendeka nga girafu ya mutambo "pingus".
+About[xh]=Ngu Frank Pieczynski\nyamelene nemizobo yomdlalo "pingus".
+About[zh_CN]=作者:Frank Pieczynski\n基于“pingus”游戏中的图形。
+About[zu]=Ngu Frank Pieczynski\nIsekelwe emidwebeni yomdlalo "pingus".
+Icon=../../preview/tux.png
+Base=Base
+Sequences=WalkLeft,WalkRight,Float,Tumble,Dig,BashLeft,BashRight
+Focus=FallUp
+Blur=FallDown
+Destroy=Bomb
+
+[Base]
+Sequence=blocker1.png,blocker2.png,blocker3.png,blocker4.png,blocker5.png,blocker6.png,blocker1.png,blocker2.png,blocker3.png,blocker4.png,blocker5.png,blocker6.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0
+Delay=200,200,1000,200,200,200,200,200,1000,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32
+
+[Float]
+Sequence=floater1.png,floater2.png,floater3.png,floater4.png,floater5.png,floater6.png,floater7.png,floater8.png
+Movement=2,2,2,2,2,2,2,2
+Delay=200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=32,40,50,60,60,50,40,32
+
+[FallDown]
+Sequence=faller1.png,faller2.png,faller3.png,faller4.png,faller5.png,faller6.png,faller7.png,faller8.png
+Movement=0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=20,10,-10,-50,-130,-300,-500,-750
+#HotspotY=32,20,0,-20,-50,-80,-120,-160
+
+[FallUp]
+Sequence=faller1.png,faller2.png,faller3.png,faller4.png,faller5.png,faller6.png,faller7.png,faller8.png
+Movement=0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=750,500,250,150,100,75,50,40
+
+[Tumble]
+Sequence=tumble1.png,tumble2.png,tumble3.png,tumble4.png,tumble5.png,tumble6.png,tumble7.png,tumble8.png
+Movement=0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32
+
+[WalkLeft]
+Sequence=walk_l1.png,walk_l2.png,walk_l3.png,walk_l4.png,walk_l5.png,walk_l6.png,walk_l7.png,walk_l8.png
+Movement=-4,-4,-4,-4,-4,-4,-4,-4
+Delay=300,300,300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32
+
+[WalkRight]
+Sequence=walk_r1.png,walk_r2.png,walk_r3.png,walk_r4.png,walk_r5.png,walk_r6.png,walk_r7.png,walk_r8.png
+Movement=4,4,4,4,4,4,4,4
+Delay=300,300,300,300,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32
+
+[BashLeft]
+Sequence=bash_l1.png,bash_l2.png,bash_l3.png,bash_l4.png,bash_l5.png,bash_l6.png,bash_l7.png,bash_l8.png,bash_l9.png,bash_l10.png,bash_l11.png,bash_l12.png
+Movement=-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
+Delay=200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32
+
+[BashRight]
+Sequence=bash_r1.png,bash_r2.png,bash_r3.png,bash_r4.png,bash_r5.png,bash_r6.png,bash_r7.png,bash_r8.png,bash_r9.png,bash_r10.png,bash_r11.png,bash_r12.png
+Movement=8,8,8,8,8,8,8,8,8,8,8,8
+Delay=200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32
+
+[Bomb]
+Sequence=bomber1.png,bomber2.png,bomber3.png,bomber4.png,bomber5.png,bomber6.png,bomber7.png,bomber8.png,bomber9.png,bomber10.png,bomber11.png,bomber12.png,bomber13.png,bomber14.png,bomber15.png,bomber16.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100,100,100,100,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
+
+[Dig]
+Sequence=digger1.png,digger2.png,digger3.png,digger4.png,digger5.png,digger6.png,digger7.png,digger8.png,digger9.png,digger10.png,digger11.png,digger12.png,digger13.png,digger14.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=200,200,200,200,200,200,200,200,200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32,32,32
diff --git a/amor/data/taorc b/amor/data/taorc
new file mode 100644
index 0000000..5e6b13a
--- /dev/null
+++ b/amor/data/taorc
@@ -0,0 +1,148 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/animated/tao
+Description=Tao
+Description[be]=Дао
+Description[bg]=Тао
+Description[bn]=তাও
+Description[he]=טאו
+Description[hi]=ताओ
+Description[mk]=Тао
+Description[ne]=टाओ
+Description[ru]=Дао
+Description[sr]=Тао
+Description[ta]= Tao
+Description[th]=เต๋า
+Description[uz@cyrillic]=Тао
+Description[zh_CN]=道
+About=By Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang symbol inspired by my Tai Chi practice.
+About[af]=Deur Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang simbool geïnspireer Deur my Tai Chi oefening.
+About[ar]=تأليف Daniel Pfeiffer <occitan@esperanto.org>\nرموز الين و اليان من ممارستي للتاي شي.
+About[az]=Daniel Pfeiffer <occitan@esperanto.org> tərəfindən\nYin Yang symbol inspired by my Tai Chi practice.
+About[be]=Аўтар Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang symbol inspired by my Tai Chi practice.
+About[bg]=Автор Даниел Пфайфар <occitan@esperanto.org>\nИдеята за символа идва от хобито на автора
+About[bn]=তৈরি করেছেন ড্যানিয়েল ফেইফার <occitan@esperanto.org>\nইন ইয়াং প্রতীকের অনুপ্রেরণা পেয়েছি আমার তাই চি অনুশীলন থেকে।
+About[br]=Gant Daniel Pfeiffer <occitan@esperanto.org>\nArouez Yin Yang a zo awenet gant pleustr Tai Chi.
+About[bs]=Autor Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang simbol inspirisan mojim prakticiranjem Tai Chi.
+About[ca]=Per Daniel Pfeiffer <occitan@esperanto.org>\nEl símbol del Yin Yang s'ha inspirat en la meva pràctica del Tai Chi.
+About[cs]=Autor Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang symbol inspirován mým cvičením Taiči
+About[cy]=Gan Daniel Pfeiffer <occitan@esperanto.org>\n Ysbrydolwyd y symbol Yin Yang gan fy ymarfer Tai Chi.
+About[da]=Af Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang-symbol inspireret fra mine Tai Chi-øvelser.
+About[de]=Von Daniel Pfeiffer <occitan@esperanto.org>\nYin-Yang-Symbol inspiriert durch meine Tai-Chi-Übungen
+About[el]=Από τον Daniel Pfeiffer <occitan@esperanto.org>\n Το σύμβολο Yin Yang εμπνευσμένο από την πρακτική μου στο Tai Chi.
+About[eo]=De Daniel Pfeiffer <occitan@esperanto.org>\nJinjan-simbolo inspirita de mia Tajĝi-praktikado.
+About[es]=Por Daniel Pfeiffer <occitan@esperanto.org>\nSímbolo del Yin Yang, inspirado en mi práctica de Tai Chi.
+About[et]=Autor: Daniel Pfeiffer <occitan@esperanto.org>\nYin-yangi sümbol jäi mulle külge taiji harrastusest.
+About[eu]=Daniel Pfeiffer egina <occitan@esperanto.org>\nYin Yang simboloa nire Tai Chi praktikan oinarritua.
+About[fa]=توسط دنیل فیفر <occitan@esperanto.org>\n نماد الهام گرفته توسط یینیانگ تمرین تای چی من
+About[fi]=Tehnyt Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang symbolin inspiroinut Tai Chi -harjoitukseni.
+About[fr]=Par Daniel Pfeiffer <occitan@esperanto.org>\nLe symbole Yin Yang est inspiré par ma pratique du Tai Chi.
+About[ga]=Le Daniel Pfeiffer <occitan@esperanto.org>\nSiombail Yin Yang spreagtha ag mo chleachtadh Tai Chi.
+About[gl]=Por Daniel Pfeiffer <occitan@esperanto.org>\nO símbolo do Yin-Yang inspirado na miña prática do Tai Chi.
+About[he]=מאת דניאל פפר <occitan@esperanto.org>\nההשראה לסמל היין-יאנג נלקחה מאימוני הטאי צ'י שלי.
+About[hi]=डेनियल फीफ़र द्वारा <occitan@esperanto.org>\nयिन यांग चिह्न मेरे ताई-ची अभ्यास से प्रेरित
+About[hr]=Daniel Pfeiffer <occitan@esperanto.org>\n"Znak 'Yin Yang' inspiriralo je moje vježbanje Tai Chia."
+About[hu]=Készítette: Daniel Pfeiffer (<occitan@esperanto.org>)\nA 'Yin Yang' szimbólumot saját Tai Chi gyakorlataimból merítettem.
+About[is]=By Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang merkið kom til af áhuga mínum á Tai Chi.
+About[it]=Di Daniel Pfeiffer <occitan@esperanto.org>\nSimbolo Yin Yang ispirato alla mia pratica Tai Chi.
+About[ja]=By Daniel Pfeiffer <occitan@esperanto.org>\n太極拳の練習から発想を得た陰陽シンボル
+About[km]=ដោយ Daniel Pfeiffer <occitan@esperanto.org>\nនិមិត្ត​សញ្ញាយីងយ៉ាង(Yin Yang) ដែលបង្កើត​ឡើងដោយការអនុវត្តតាយឈី (Tai Chi) របស់​ខ្ញុំ ។
+About[lt]=Darė Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang simbolį įkvėpė mano Tai Chi praktika.
+About[lv]=Autors - Daniel Pfeiffer <occitan@esperanto.org>\nIņ Jaņ motīvu inspirācija no personīgās Tai Chi praktizēšanas.
+About[mk]=Од Даниел Фајфер <occitan@esperanto.org>\nСимболот Јин-Јанг е инспириран од моето вежбање на Тај Чи.
+About[mt]=Ta' Daniel Pfeiffer <occitan@esperanto.org>\nSimbolu Yin Yang ispirat mil-prattika tiegħi tat-Tai Chi.
+About[nb]=Av Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang symbolet er inspirert av mine Tai Chi-øvelser.
+About[nds]=Vun Daniel Pfeiffer <occitan@esperanto.org>\n"Yin un Yang"-Symbool, anreegt dör mien Tai-Chi-Öven.
+About[ne]=डानियल फेइफरद्वारा <occitan@esperanto.org>\nमेरो टाइ चि अभ्यासद्वारा यिङ् याङ् प्रेरणा गरीएको प्रतिक।
+About[nl]=Door Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang-symbool geïnspireerd door mijn Tai Chi-ervaring.
+About[nn]=Av Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang-symbolet er inspirert av Tai Chi-erfaringa mi.
+About[pl]=Autorstwa Daniela Pfeiffera <occitan@esperanto.org>\nYin Symbol Yang inspirowany przez moją praktykę Tai Chi.
+About[pt]=De Daniel Pfeiffer <occitan@esperanto.org>\nSímbolo do Yin Yang inspirado na minha prática de Tai Chi.
+About[pt_BR]=Por Daniel Pfeiffer <occitan@esperanto.org>\nSímbolo Yin Yang inspirado em minha prática de Tai Chi.
+About[ro]=De Daniel Pfeiffer <occitan@esperanto.org>\nSimbol Yin Yang inspirat de practica Tai Chi.
+About[ru]=Автор - Daniel Pfeiffer <occitan@esperanto.org>\nСимвол инь-ян взят из моей практики тайцзи.
+About[sk]=Vytvoril Daniel Pfeiffer <occitan@esperanto.org>\nSymbol Yin Yang inšpirovaný mojou skúsenosťou s Tai Chi.
+About[sl]=Od Daniela Pfeifferja <occitan@esperanto.org>\nZa simbol jin-jang sem dobil navdih pri vadbi tai chija.
+About[sr]=Од Данијела Фајфера (Daniel Pfeiffer) <occitan@esperanto.org>\nСимбол Јинга и Јанга инспирисан мојом тај-чи вежбом.
+About[sr@Latn]=Od Danijela Fajfera (Daniel Pfeiffer) <occitan@esperanto.org>\nSimbol Jinga i Janga inspirisan mojom taj-či vežbom.
+About[sv]=Av Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang symbol inspirerad av att utöva Tai Chi
+About[tg]=Даниел Пфейфиффер <occitan@esperanto.org>\Тасвирҳо аз машқи Tai Chi
+About[th]=โดย Daniel Pfeiffer <occitan@esperanto.org>\nสัญลักษณ์ หยิน-หยาง จากแบบฝึก Tai Chi ของผม
+About[tr]=Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang sembolü Tai Chi'den esinlenilmiştir.
+About[uk]=Автор: Daniel Pfeiffer <occitan@esperanto.org>\nСимвол Yin Yang від натхнення з моєї практики Tai Chi.
+About[ven]=Nga Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang zwiga zwo tutuwedzhwa nga nga ndowendowe yanga ya Tai Chi.
+About[xh]=By Daniel Pfeiffer <occitan@esperanto.org>\nYin Yang iphawu ikhuthaziswe luqheliso lwam lwe Tai Chi.
+About[zh_CN]=作者:Daniel Pfeiffer <occitan@esperanto.org>\n我从太极锻炼中得到灵感的阴阳符号。
+About[zu]=Ngu Daniel Pfeiffer <occitan@esperanto.org>\nUphawu lwe-Yin Yang olugqugquzelwe ukwenza kwami i-Tai Chi.
+Icon=../../preview/tao.png
+Base=Base
+Sequences=Left,Right,Turn
+Focus=Grow
+Blur=Shrink
+Sleep=Hide
+Wake=Unhide
+Destroy=Fall
+
+[Base]
+Sequence=yy.png
+Movement=0
+Delay=2000
+HotspotX=0
+HotspotY=32
+
+[Left]
+Sequence=yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png,yy.png
+Movement=-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
+Delay=200,190,180,170,160,150,150,150,150,150,150,150,150,150,150,150,150,150,150,160,170,180,190,200
+HotspotX=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
+
+[Right]
+Sequence=yy15.png,yy30.png,yy45.png,yy60.png,yy75.png,yy90.png,yy105.png,yy120.png,yy135.png,yy150.png,yy165.png,yy180.png,yy195.png,yy210.png,yy225.png,yy240.png,yy255.png,yy270.png,yy285.png,yy300.png,yy315.png,yy330.png,yy345.png,yy.png
+Movement=2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+Delay=200,190,180,170,160,150,150,150,150,150,150,150,150,150,150,150,150,150,150,160,170,180,190,200
+HotspotX=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
+
+[Turn]
+Sequence=yy.png,yy15.png,yy30.png,yy45.png,yy60.png,yy75.png,yy90.png,yy105.png,yy120.png,yy135.png,yy150.png,yy165.png,yy180.png,yy195.png,yy210.png,yy225.png,yy240.png,yy255.png,yy270.png,yy285.png,yy300.png,yy315.png,yy330.png,yy345.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=200,190,180,170,160,150,150,150,150,150,150,150,150,150,150,150,150,150,150,160,170,180,190,200
+HotspotX=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+HotspotY=32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
+
+[Grow]
+Sequence=yyx6.png,yyx8.png,yyx10.png,yyx12.png,yyx14.png,yyx16.png,yyx18.png,yyx20.png,yyx22.png,yyx24.png,yyx26.png,yyx28.png,yyx30.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=150,150,150,150,150,150,150,150,150,150,150,150,150
+HotspotX=-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1
+HotspotY=6,8,10,12,14,16,18,20,22,24,26,28,30
+
+[Shrink]
+Sequence=yyx30.png,yyx28.png,yyx26.png,yyx24.png,yyx22.png,yyx20.png,yyx18.png,yyx16.png,yyx14.png,yyx12.png,yyx10.png,yyx8.png,yyx6.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=150,150,150,150,150,150,150,150,150,150,150,150,150
+HotspotX=-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13
+HotspotY=30,28,26,24,22,20,18,16,14,12,10,8,6
+
+[Hide]
+Sequence=yy-1.png,yy-2.png,yy-3.png,yy-4.png,yy-5.png,yy-6.png,yy-7.png,yy-8.png,yy-9.png
+Movement=0,0,0,0,0,0,0,0,0
+Delay=150,150,150,150,150,150,150,150,60000
+HotspotX=0,0,0,0,0,0,0,0,0
+HotspotY=31,30,29,28,27,26,25,24,23
+
+[Unhide]
+Sequence=yy-9.png,yy-8.png,yy-7.png,yy-6.png,yy-5.png,yy-4.png,yy-3.png,yy-2.png,yy-1.png
+Movement=0,0,0,0,0,0,0,0,0
+Delay=150,150,150,150,150,150,150,150,150
+HotspotX=0,0,0,0,0,0,0,0,0
+HotspotY=23,24,25,26,27,28,29,30,31
+
+[Fall]
+Sequence=yy15.png,yy30.png,yy45.png,yy60.png,yy75.png,yy90.png,yy105.png,yy120.png,yy135.png,yy150.png,yy165.png,yy180.png,yy195.png,yy210.png,yy225.png,yy240.png,yy255.png,yy270.png,yy285.png,yy300.png,yy315.png,yy330.png,yy345.png,yy.png,yy15.png,yy30.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100
+HotspotX=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+HotspotY=31,29,27,25,22,19,15,10,4,-3,-11,-21,-33,-47,-64,-85,-110,-140,-176,-219,-271,-333,-407,-496,-603,-731
+
diff --git a/amor/data/tips-en b/amor/data/tips-en
new file mode 100644
index 0000000..6f7fb5f
--- /dev/null
+++ b/amor/data/tips-en
@@ -0,0 +1,39 @@
+Don't run with scissors.
+%
+Never trust car salesmen or politicians.
+%
+Real programmers don't comment their code. It was hard to write, it should be hard to understand.
+%
+It is much easier to suggest solutions when you know nothing about the problem.
+%
+You can never have too much memory or disk space.
+%
+The answer is 42.
+%
+It's not a bug. It's a misfeature.
+%
+Help stamp out and abolish redundancy.
+%
+To maximize a window vertically, click the maximize button with the middle mouse button.
+%
+You can use Alt+Tab to switch between applications.
+%
+Press Ctrl+Esc to show the applications running in your current session.
+%
+Alt+F2 displays a small window that you can type a command into.
+%
+Ctrl+F1 to Ctrl+F8 can be used to switch virtual desktops.
+%
+You can move buttons on the panel using the middle mouse button.
+%
+Alt+F1 pops-up the system menu.
+%
+Ctrl+Alt+Esc can be used to kill an application that has stopped responding.
+%
+If you leave KDE applications open when you logout, they will be restarted automatically when you log back in.
+%
+The KDE file manager is also a web browser and an FTP client.
+%
+Applications can display messages and tips in an Amor bubble using the showMessage() and
+showTip() DCOP calls
+% \ No newline at end of file
diff --git a/amor/data/tuxrc b/amor/data/tuxrc
new file mode 100644
index 0000000..e9854ed
--- /dev/null
+++ b/amor/data/tuxrc
@@ -0,0 +1,127 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/static
+Static=true
+Description=Unanimated Tux
+Description[af]=Ongeanimeerde Tux
+Description[ar]=Tux غير متحرك
+Description[be]=Неанімаваны Тукс
+Description[bg]=Неанимиран Тъкс
+Description[bn]=অ্যানিমেশনবিহীন টাক্স
+Description[bs]=Neanimirani Tux
+Description[ca]=Tux sense animació
+Description[cs]=Neanimovaný Tux
+Description[cy]=Tux heb ei animeddio
+Description[da]=Uanimeret Tux
+Description[de]=Tux (nicht animiert)
+Description[el]=Μη κινούμενος Tux
+Description[eo]=Nemoviĝema Tuĉjo
+Description[es]=Tux inanimado
+Description[et]=Liikumatu Tux
+Description[eu]=Tux animabakoa
+Description[fa]=Tux غیر پویا
+Description[fi]=Animoimaton Tux
+Description[fr]=Tux (in)animé
+Description[ga]=Tux neamhbheoite
+Description[gl]=Tux Inanimado
+Description[he]=טקס ללא הנפשה
+Description[hi]=स्थिर टक्स
+Description[hr]=Statički Tux
+Description[hu]=nem animált Tux
+Description[is]=Hreyfingalaus Tux
+Description[it]=Tux immobile
+Description[ja]=動かない Tux
+Description[km]=Tux គ្មាន​ចលនា
+Description[ko]=움직이지 않는 턱스
+Description[lt]=Nejudantis Tux
+Description[lv]=Neanimēts Tuksis
+Description[mk]=Неанимиран пингвин
+Description[nb]=Stillestående Tux
+Description[nds]=Tux (nich animeert)
+Description[ne]=एनिमेट नगरिएको टक्स
+Description[nl]=Statische Tux
+Description[nn]=Stilleståande Tux
+Description[pl]=Nieanimowany Tux
+Description[pt]=Tux não-animado
+Description[pt_BR]=Tux Inanimado
+Description[ro]=Tux neanimat
+Description[ru]=Статичный Тукс
+Description[sk]=Neanimovaný Tux
+Description[sl]=Neanimiran Tux
+Description[sr]=Неанимирани Tux
+Description[sr@Latn]=Neanimirani Tux
+Description[sv]=Tux utan animering
+Description[tg]=Тукси оддӣ
+Description[th]=ตุ๊กซ์ที่เคลื่อนไหวไม่ได้
+Description[tr]=Haraketsiz Penguen
+Description[uk]=Неоживлений Tux
+Description[uz]=Animatsiyasiz Taks
+Description[uz@cyrillic]=Анимациясиз Такс
+Description[ven]=Tux i songo itwaho zwazwipuka
+Description[xh]=Okungaphiliswanga Tux
+Description[zh_CN]=没有动画的 Tux 小企鹅
+Description[zh_TW]=不動的 Tux
+About=Static window sitter
+About[af]=Statiese venster sitter
+About[ar]=قاعد النوافذ الساكنة
+About[az]=Statik pəncərə mürəbbiyəsi
+About[be]=Статычны наглядчык вокнаў
+About[bg]=Неанимирано дяволче
+About[bn]=উইন্ডোর এক স্থানে স্থির হয়ে বসে থাকে
+About[bs]=Statički window sitter
+About[ca]=Model estàtic de finestra
+About[cs]=Statická ozdoba okna
+About[cy]=Gwarchodydd ffenest sefydlog
+About[da]=Statisk vinduessitter
+About[de]=Statischer Fenstersitzer
+About[el]=Στατικό εικονίδιο
+About[eo]=Moviĝema fenestrosidulo
+About[es]=Cuidador estático de ventanas
+About[et]=Liikumatu aknahoidja
+About[eu]=Lehio modelo egonkorra
+About[fa]=مدل پنجرۀ ایستا
+About[fi]=Staattinen ikkunallaistuja
+About[fr]=Surveillant statique de fenêtres
+About[ga]=Peata statach fuinneoige
+About[gl]=Vixiante estático de fiestras
+About[he]=שומר חלון סטטי
+About[hi]=स्थिर विंडो सिटर
+About[hr]=Statički sjedač na prozoru
+About[hu]=Nem animált ablakdíszítés
+About[is]=Situr og passar glugga
+About[it]=Immagine statica
+About[ja]=動かないウィンドウ監視人
+About[km]=អ្នក​ថែទាំ​បង្អួចឋិតិវន្ត
+About[lt]=Nejudantis sėdėtojas ant lango
+About[lv]=Statisks uz loga sēdētājs
+About[mk]=Статичен седач врз прозорци
+About[mt]=Stampa statika
+About[nb]=Statisk vindusitter
+About[nds]=Fast Finstersitter
+About[ne]=स्थिर सञ्झ्याल सिटर
+About[nl]=Statische vensterzitter
+About[nn]=Statisk vindaugssitjar
+About[pl]=Stale w tym samym miejscu
+About[pt]=Elemento estático pousado sobre as janelas
+About[pt_BR]=Janela Estática
+About[ro]=Imagine statică
+About[ru]=Статичный сторож окон
+About[sk]=Statická ozdoba okna
+About[sl]=Statično okno
+About[sr]=Статични седач на прозору
+About[sr@Latn]=Statični sedač na prozoru
+About[sv]=Statisk fönstervakt
+About[ta]= நிலையான சாளரம் அமர்தல்
+About[tg]=Нигаҳбонии статикии тиреза
+About[th]=นั่งเล่นบนหน้าต่าง
+About[tr]=Statik pencere bakıcı
+About[uk]=Статична прикраса для вікна
+About[ven]=Tshidzuli tsha window yo imaho
+About[zh_CN]=窗口静坐者
+Icon=../preview/tux.png
+
+[Base]
+Sequence=tux.png
+HotspotX=25
+HotspotY=54
+
diff --git a/amor/data/wormrc b/amor/data/wormrc
new file mode 100644
index 0000000..c662675
--- /dev/null
+++ b/amor/data/wormrc
@@ -0,0 +1,225 @@
+# KDE Config File
+[Config]
+PixmapPath=pics/animated/worm
+Description=Little Worm
+Description[af]=Klein Wurm
+Description[ar]=دودة صغيرة
+Description[be]=Маленькі чарвячок
+Description[bg]=Малкото Червейче
+Description[bn]=ছোট্ট কেঁচো
+Description[br]=Buzugig
+Description[bs]=Mali crv
+Description[ca]=Cuquet
+Description[cs]=Červík
+Description[cy]=Pry' Genwair Bach
+Description[da]=Lille orm
+Description[de]=Kleiner Wurm
+Description[el]=Μικρό σκουλήκι
+Description[eo]=Vermeto
+Description[es]=Gusanito
+Description[et]=Ussike
+Description[eu]=Hartxoa
+Description[fa]=کرم کوچک
+Description[fi]=Pieni mato
+Description[fr]=Petit ver de terre
+Description[ga]=Péistín
+Description[gl]=Pequeno Verme
+Description[he]=תולעת קטנה
+Description[hi]=नन्ही इल्ली
+Description[hr]=Mali crv
+Description[hu]=kukac
+Description[is]=Lítill ormur
+Description[it]=Vermiciattolo
+Description[ja]=小さいむし
+Description[km]=កូន​ដង្កូវ​តូច
+Description[ko]=작은 벌레
+Description[lv]=Mazais tārps
+Description[mk]=Мало црвче
+Description[nb]=Liten orm
+Description[nds]=Lütt Worm
+Description[ne]=सानो वोर्म
+Description[nl]=Kleine worm
+Description[nn]=Liten orm
+Description[pa]=ਛੋਟਾ ਕੀੜਾ
+Description[pl]=Robaczek
+Description[pt]=Pequeno Verme
+Description[pt_BR]=Pequeno Verme
+Description[ro]=Micul vierme
+Description[ru]=Маленький червячок
+Description[sk]=Malý červík
+Description[sl]=Mali črv
+Description[sr]=Мали црв
+Description[sr@Latn]=Mali crv
+Description[sv]=Lilla masken
+Description[ta]= சிறு புழு
+Description[tg]=Кирми Майдаяк
+Description[th]=หนอนตัวจิ๋ว
+Description[tr]=Küçük Kurtçuk
+Description[uk]=Хробачок
+Description[uz]=Kichkina chuvalchang
+Description[uz@cyrillic]=Кичкина чувалчанг
+Description[xh]=Umbungu Omncinci
+Description[zh_CN]=小虫虫
+Description[zh_TW]=小蟲
+About=By Bartosz Trudnowski\nMade for my wife
+About[af]=Deur Bartosz Trudnowski\nMade vir my vrou
+About[ar]=من Bartosz Trudnowski\nصنعته لزوجتي
+About[az]=Bartosz Trudnowski tərəfindən\nHəyat yoldaşıma
+About[be]=Аўтар Bartosz Trudnowski\nЗрабіў для жонкі
+About[bg]=Автор Бартоз Трудновски\nПосвещава се на съпругата на автора
+About[bn]=তৈরি করেছেন বার্টোজ ট্রুডনোস্কি\nআমার স্ত্রী'র জন্য বানিয়েছি
+About[br]=Gant Bartosz Trudnowski\nGraet evit ma wreg
+About[bs]=Autor Bartosz Trudnowski\nNapravljeno za moju ženu
+About[ca]=Per Bartosz Trudnowski\nFet per a la meva dona
+About[cs]=Autor Bartosz Trudnowski\nPro mou manželku
+About[cy]=Gan Bartosz Trudnowski\nGwnaethwyd i fy ngwraig
+About[da]=Af Bartosz Trudnowski\nLavet til min kone
+About[de]=Von Bartosz Trudnowski\nFür meine Frau
+About[el]=Από τον Bartosz Trudnowski\n Φτιάχτηκε για τη σύζυγό μου
+About[eo]=De Bartosz Trudnowski\nFarita por mia edzino
+About[es]=Por Bartosz Trudnowski\nHecho para mi esposa
+About[et]=Autor: Bartosz Trudnowski\nTehtud minu abikaasale
+About[eu]=Bartosz Trudnowski'k egina\nEmaztearentzat egina
+About[fa]=توسط بارتز ترودنوسکی \nساخته شده برای همسرم
+About[fi]=Tehnyt Bartosz Trudnowski\nTehty vaimolleni
+About[fr]=Par Bartosz Trudnowski\nDéveloppé pour ma femme
+About[ga]=Le Bartosz Trudnowski\nDéanta do mo bhean chéile
+About[gl]=Por Bartosz Trudnowski\nFeito para a miña muller
+About[he]=מאת ברטוש טרודנובסקי\nנעשה עבור אישתי
+About[hi]=बार्तोज़ त्रुदनोव्स्की द्वारा\nमेरी पत्नि द्वारा बनाया हुआ
+About[hr]=Autor Bartosz Trudnowski\n"Za moju suprugu."
+About[hu]=Készítette: Bartosz Trudnowski\nA feleségemnek ajánlom
+About[is]=By Bartosz Trudnowski\nGert fyrir elskuna mína (já, eiginkonuna)
+About[it]=Di Bartosz Trudnowski\nFatto per mia moglie.
+About[ja]=By Bartosz Trudnowski\n妻のために
+About[km]=ដោយ Bartosz Trudnowski\nសម្រាប់​ភរិយា​ខ្ញុំ
+About[lt]=Darė Bartosz Trudnowski\nPadarytas mano žmonai
+About[lv]=Autors - Bartosz Trudnowski\nIzgatavots manai sievai.
+About[mk]=Од Bartosz Trudnowski\nНаправено за жена ми
+About[mt]=Ta' Bartosz Trudnowski\nDedikat għall-mara tiegħi
+About[nb]=Av Bartosz Trudnowski\nLaget til min kone
+About[nds]=Vun Bartosz Trudnowski\nMaakt för mien Fru
+About[ne]=बारटोस्ज ट्रुडनोस्कीद्वारा\nमेरी पत्नीको लागि बनाइयो
+About[nl]=Door Bartosz Trudnowski\nGemaakt voor mijn vrouw
+About[nn]=Av Bartosz Trudnowski\nLaga til kona mi
+About[pl]=Autorstwa Bartosza Trudnowskiego\nWykonane dla mojej żony
+About[pt]=De Bartosz Trudnowski\nFeito para a minha mulher
+About[pt_BR]=Por Bartosz Trudnowski\nFeito para minha esposa
+About[ro]=De Bartosz Trudnowski\nFăcut pentru soţia mea
+About[ru]=Автор - Bartosz Trudnowski\nСделано для моей жены
+About[sk]=Vytvoril Bartosz Trudnowski\nPre svoju ženu
+About[sl]=Od Bartosza Trudnowskega\nNaredil za svojo ženo
+About[sr]=Од Бартоша Трудновског (Bartosz Trudnowski)\нНаправљено за моју жену
+About[sr@Latn]=Od Bartoša Trudnovskog (Bartosz Trudnowski)\nNapravljeno za moju ženu
+About[sv]=Av Bartosz Trudnowski\nGjord för min fru
+About[tg]=Бартоз Трудновскй\Барои зани ман
+About[th]=โดย Bartosz Trudnowski\nสร้างจากภรรยาผมเอง
+About[tr]=Bartosz Trudnowski\nEşim için yaptım
+About[uk]=Автор: Bartosz Trudnowski\nЗроблено моєю жінкою
+About[uz]=Bartosz Trudnovski (Bartosz Trudnowski) yaratgan\nTurmush oʻrtogʻim uchun yaratilgan.
+About[uz@cyrillic]=Бартосз Трудновски (Bartosz Trudnowski) яратган\nТурмуш ўртоғим учун яратилган.
+About[ven]=Nga Bartosz Trudnowski\nZwo itelwa musadzi wanga
+About[xh]=Ngu Bartosz Trudnowski\nYenzelwe inkosikazi yam
+About[zh_CN]=作者:Bartosz Trudnowski\n为我妻子而作
+About[zu]=Ngu Bartosz Trudnowski\nYenzelwe unkosikazi wami
+Icon=../../preview/worm.png
+Base=Base
+Sequences=MoveLeft,MoveRight,Eyes,Eye,BigEyes,Angry,Wobble,Love
+#Sequences=MoveLeft,MoveRight
+Blur=Dig
+Focus=Up
+Destroy=DropOut
+Sleep=Zzz
+
+[Base]
+Sequence=w-b1.png
+Movement=0
+Delay=2000
+HotspotX=16
+HotspotY=29
+
+[Eyes]
+Sequence=w-b1.png,w-b1.png,w-b1.png,w-b1.png,w-b2.png,w-b1.png,w-b2.png,w-b1.png,w-b1.png,w-b1.png,w-b1.png,w-b2.png,w-b1.png,w-b1.png,w-b1.png,w-b1.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=300,300,300,300,150,150,150,300,300,300,300,100,300,300,300,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
+
+[Dig]
+Sequence=w-d1.png,w-d2.png,w-d3.png,w-d4.png,w-d5.png
+Movement=0,0,0,0,0
+Delay=100,100,100,100,200
+HotspotX=16,16,16,16,16
+HotspotY=29,29,29,29,29
+
+[Up]
+Sequence=w-d5.png,w-u1.png,w-u2.png,w-u3.png,w-b1.png
+Movement=0,0,0,0,0
+Delay=100,100,100,100,300
+HotspotX=16,16,16,16,16
+HotspotY=29,29,29,29,29
+
+[DropOut]
+Sequence=w-b1.png,w-dr1.png,w-dr1.png,w-dr1.png,w-dr1.png,w-dr1.png,w-dr1.png,w-dr1.png
+Movement=0,0,0,0,0,0,0,0
+Delay=150,100,100,100,100,100,100,100
+HotspotX=16,16,16,16,16,16,16,16
+HotspotY=29,-25,-50,-100,-250,-500,-750,-1000
+
+[Zzz]
+Sequence=w-s1.png,w-s2.png,w-s3.png,w-s2.png,w-s3.png,w-s1.png
+Movement=0,0,0,0,0,0
+Delay=300,200,200,200,200,300
+HotspotX=16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29
+
+[Eye]
+Sequence=w-b1.png,w-e1.png,w=b1.png
+Movement=0,0,0
+Delay=300,300,300
+HotspotX=16,16,16
+HotspotY=29,29,29
+
+[MoveLeft]
+Sequence=w-ml0.png,w-ml1.png,w-ml2.png,w-ml3.png,w-ml2.png,w-ml1.png,w-ml2.png,w-ml3.png,w-ml2.png,w-ml1.png,w-ml0.png
+Movement=0,0,0,0,-4,-3,0,0,-4,-3,0
+Delay=100,200,200,200,200,200,200,200,200,200,100
+HotspotX=16,26,26,26,26,26,26,26,26,26,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29
+
+[MoveRight]
+Sequence=w-mr0.png,w-mr1.png,w-mr2.png,w-mr3.png,w-mr2.png,w-mr1.png,w-mr2.png,w-mr3.png,w-mr2.png,w-mr1.png,w-mr0.png
+Movement=0,0,0,0,4,3,0,0,4,3,0
+Delay=100,200,200,200,200,200,200,200,200,200,100
+HotspotX=16,6,6,6,6,6,6,6,6,6,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29
+
+[BigEyes]
+Sequence=w-b1.png,w-be1.png,w-be2.png,w-be3.png,w-be4.png,w-be3.png,w-be2.png,w-be1.png,w-b1.png
+Movement=0,0,0,0,0,0,0,0,0
+Delay=300,150,150,200,300,200,150,150,300
+HotspotX=16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29
+
+[Angry]
+Sequence=w-a1.png,w-a2.png,w-a1.png,w-a2.png,w-a1.png,w-a2.png
+Movement=0,0,0,0,0,0
+Delay=150,150,150,150,150,150
+HotspotX=16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29
+
+[Wobble]
+Sequence=w-b1.png,w-wl1.png,w-wl2.png,w-wl1.png,w-b1.png,w-wl1.png,w-wl2.png,w-wl1.png,w-b1.png,w-wr1.png,w-wr2.png,w-wr1.png,w-b1.png,w-wr1.png,w-wr2.png,w-wr1.png,w-b1.png
+Movement=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Delay=300,150,150,150,150,150,150,150,300,150,150,150,150,150,150,150,300
+HotspotX=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
+
+[Love]
+Sequence=w-l1.png,w-l2.png,w-l3.png,w-l1.png,w-l2.png,w-l3.png
+Movement=0,0,0,0,0,0
+Delay=200,200,200,200,200,200
+HotspotX=16,16,16,16,16,16
+HotspotY=29,29,29,29,29,29
+
+
diff --git a/amor/hi16-app-amor.png b/amor/hi16-app-amor.png
new file mode 100644
index 0000000..f113266
--- /dev/null
+++ b/amor/hi16-app-amor.png
Binary files differ
diff --git a/amor/hi22-app-amor.png b/amor/hi22-app-amor.png
new file mode 100644
index 0000000..610b896
--- /dev/null
+++ b/amor/hi22-app-amor.png
Binary files differ
diff --git a/amor/hi32-app-amor.png b/amor/hi32-app-amor.png
new file mode 100644
index 0000000..42aa5cd
--- /dev/null
+++ b/amor/hi32-app-amor.png
Binary files differ
diff --git a/amor/hi48-app-amor.png b/amor/hi48-app-amor.png
new file mode 100644
index 0000000..6cea2c9
--- /dev/null
+++ b/amor/hi48-app-amor.png
Binary files differ
diff --git a/amor/main.cpp b/amor/main.cpp
new file mode 100644
index 0000000..16e89c8
--- /dev/null
+++ b/amor/main.cpp
@@ -0,0 +1,70 @@
+/* main.cpp
+**
+** Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-devel@kde.org
+*/
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+
+#include <kuniqueapplication.h>
+#include <klocale.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <dcopclient.h>
+
+#include "version.h"
+#include "amor.h"
+
+
+static const char description[] = I18N_NOOP("KDE creature for your desktop");
+
+int main(int argc, char *argv[])
+{
+ KAboutData aboutData( "amor", I18N_NOOP("amor"),
+ AMOR_VERSION, description, KAboutData::License_GPL,
+ "(c) 1999, Martin R. Jones");
+ aboutData.addAuthor("Martin R. Jones",0, "mjones@kde.org");
+ aboutData.addAuthor("Gerardo Puga", I18N_NOOP("Current maintainer"), "gpuga@gioia.ing.unlp.edu.ar");
+ KCmdLineArgs::init( argc, argv, &aboutData );
+
+ if (!KUniqueApplication::start()) {
+ fprintf(stderr, "%s is already running!\n", aboutData.appName());
+ exit(0);
+ }
+ KUniqueApplication app;
+
+ // session management
+ AmorSessionWidget *sessionWidget = new AmorSessionWidget;
+ app.setTopWidget(sessionWidget);
+
+ new Amor();
+
+ app.dcopClient()->setDefaultObject( "AmorIface" );
+
+ return app.exec();
+}
+
diff --git a/amor/preparetips b/amor/preparetips
new file mode 100644
index 0000000..03bcf67
--- /dev/null
+++ b/amor/preparetips
@@ -0,0 +1,45 @@
+# little script to extract the text from the tips file
+# and output it, so xgettext can add the tips to the po file
+#
+# 2000 by Matthias Kiefer <matthias.kiefer@gmx.de>
+
+open(FILE,"<data/tips-en") || die "unable to open tips file";
+
+$inTip=0;
+$tip="";
+
+while(<FILE>)
+{
+ chomp;
+
+ # tip ends with %
+ if(!/^%/)
+ {
+ # replace \ with \\
+ s/\\/\\\\/g;
+
+ # replace " with \"
+ s/"/\\"/g;
+
+ if($inTip != 0)
+ {
+ $tip=$tip."\n\"$_\\n\"";
+ }
+ else
+ {
+ $inTip=1;
+ $tip="\"$_\\n\"";
+ }
+
+ next;
+ }
+ elsif($inTip != 0)
+ {
+ # remove last newline
+ $tip =~ s/\\n\"$/\"/g;
+ print "i18n(\n", $tip, "\n);\n";
+ $inTip=0;
+ }
+}
+
+close(FILE);
diff --git a/amor/version.h b/amor/version.h
new file mode 100644
index 0000000..c12084b
--- /dev/null
+++ b/amor/version.h
@@ -0,0 +1 @@
+#define AMOR_VERSION "2.3"