From 65018f75b755d312be1452bccc196d9a8fcfc68c Mon Sep 17 00:00:00 2001 From: Vedran Ljubovic Date: Sun, 20 Aug 2006 18:43:09 +0000 Subject: [PATCH] Importing EDE2 code to svn... NOTE: It doesn't compile! Stuff thats broken: edewm, eworkpanel, eiconman, emenueditor --- AUTHORS | 28 + BUGS | 5 + COPYING | 339 ++++ ChangeLog | 212 +++ EDE | 0 INSTALL | 228 +++ Makefile | 103 ++ NEWS | 1 + README.in | 14 + README.patches | 34 + configure.in | 184 ++ datas/Makefile | 19 + datas/desktop-links/Internet.desktop | 10 + datas/desktop-links/Makefile | 15 + datas/desktop-links/Terminal.desktop | 10 + datas/ede.conf | 63 + datas/efltk.conf | 23 + datas/icons-16/3floppy_mount.png | Bin 0 -> 754 bytes datas/icons-16/3floppy_unmount.png | Bin 0 -> 728 bytes datas/icons-16/Makefile | 223 +++ datas/icons-16/about.png | Bin 0 -> 797 bytes datas/icons-16/access.png | Bin 0 -> 1113 bytes datas/icons-16/access2.png | Bin 0 -> 1054 bytes datas/icons-16/applix.png | Bin 0 -> 836 bytes datas/icons-16/archos_mount.png | Bin 0 -> 854 bytes datas/icons-16/archos_unmount.png | Bin 0 -> 816 bytes datas/icons-16/back.png | Bin 0 -> 733 bytes datas/icons-16/back2.png | Bin 0 -> 904 bytes datas/icons-16/back3.png | Bin 0 -> 1107 bytes datas/icons-16/binary.png | Bin 0 -> 572 bytes datas/icons-16/blockdevice.png | Bin 0 -> 863 bytes datas/icons-16/bookmark.png | Bin 0 -> 690 bytes datas/icons-16/bookmark2.png | Bin 0 -> 997 bytes datas/icons-16/bookmark_add.png | Bin 0 -> 670 bytes datas/icons-16/bookmark_add2.png | Bin 0 -> 961 bytes datas/icons-16/bookmark_folder.png | Bin 0 -> 884 bytes datas/icons-16/bookmark_folder2.png | Bin 0 -> 940 bytes datas/icons-16/bookmark_toolbar.png | Bin 0 -> 724 bytes datas/icons-16/bookmark_toolbar2.png | Bin 0 -> 765 bytes datas/icons-16/cancel.png | Bin 0 -> 821 bytes datas/icons-16/cd-record.png | Bin 0 -> 1049 bytes datas/icons-16/cd_mount.png | Bin 0 -> 983 bytes datas/icons-16/cd_unmount.png | Bin 0 -> 959 bytes datas/icons-16/cdrom_mount.png | Bin 0 -> 983 bytes datas/icons-16/cdrom_unmount.png | Bin 0 -> 959 bytes datas/icons-16/cdtrack.png | Bin 0 -> 893 bytes datas/icons-16/chardevice.png | Bin 0 -> 698 bytes datas/icons-16/colorset.png | Bin 0 -> 929 bytes datas/icons-16/configure.png | Bin 0 -> 646 bytes datas/icons-16/core.png | Bin 0 -> 980 bytes datas/icons-16/deb.png | Bin 0 -> 929 bytes datas/icons-16/decrypted.png | Bin 0 -> 1009 bytes datas/icons-16/desktop.png | Bin 0 -> 916 bytes datas/icons-16/document.png | Bin 0 -> 617 bytes datas/icons-16/down.png | Bin 0 -> 1097 bytes datas/icons-16/e.png | Bin 0 -> 930 bytes datas/icons-16/econtrol.png | Bin 0 -> 839 bytes datas/icons-16/edit.png | Bin 0 -> 710 bytes datas/icons-16/editcopy.png | Bin 0 -> 799 bytes datas/icons-16/editcut.png | Bin 0 -> 833 bytes datas/icons-16/editdelete.png | Bin 0 -> 551 bytes datas/icons-16/editpaste.png | Bin 0 -> 979 bytes datas/icons-16/editshred.png | Bin 0 -> 526 bytes datas/icons-16/edittrash.png | Bin 0 -> 832 bytes datas/icons-16/efinder.png | Bin 0 -> 996 bytes datas/icons-16/ehelpbook.png | Bin 0 -> 1076 bytes datas/icons-16/emenueditor.png | Bin 0 -> 679 bytes datas/icons-16/empty2.png | Bin 0 -> 573 bytes datas/icons-16/empty_ascii.png | Bin 0 -> 515 bytes datas/icons-16/encrypted.png | Bin 0 -> 928 bytes datas/icons-16/exec.png | Bin 0 -> 1059 bytes datas/icons-16/exit.png | Bin 0 -> 882 bytes datas/icons-16/file_broken.png | Bin 0 -> 766 bytes datas/icons-16/file_locked.png | Bin 0 -> 1004 bytes datas/icons-16/fileclose.png | Bin 0 -> 754 bytes datas/icons-16/filefind.png | Bin 0 -> 898 bytes datas/icons-16/filenew.png | Bin 0 -> 605 bytes datas/icons-16/fileopen.png | Bin 0 -> 554 bytes datas/icons-16/fileprint.png | Bin 0 -> 1108 bytes datas/icons-16/filesave.png | Bin 0 -> 728 bytes datas/icons-16/find.png | Bin 0 -> 1174 bytes datas/icons-16/folder.png | Bin 0 -> 761 bytes datas/icons-16/folder_green.png | Bin 0 -> 645 bytes datas/icons-16/folder_home.png | Bin 0 -> 617 bytes datas/icons-16/folder_image.png | Bin 0 -> 839 bytes datas/icons-16/folder_mail.png | Bin 0 -> 597 bytes datas/icons-16/folder_man.png | Bin 0 -> 793 bytes datas/icons-16/folder_new.png | Bin 0 -> 649 bytes datas/icons-16/folder_open.png | Bin 0 -> 682 bytes datas/icons-16/folder_orange.png | Bin 0 -> 654 bytes datas/icons-16/folder_red.png | Bin 0 -> 569 bytes datas/icons-16/folder_sound.png | Bin 0 -> 823 bytes datas/icons-16/folder_tar.png | Bin 0 -> 799 bytes datas/icons-16/folder_video.png | Bin 0 -> 845 bytes datas/icons-16/folder_violet.png | Bin 0 -> 647 bytes datas/icons-16/folder_yellow.png | Bin 0 -> 369 bytes datas/icons-16/font.png | Bin 0 -> 586 bytes datas/icons-16/font_bitmap.png | Bin 0 -> 3383 bytes datas/icons-16/font_truetype.png | Bin 0 -> 969 bytes datas/icons-16/font_type1.png | Bin 0 -> 856 bytes datas/icons-16/forward.png | Bin 0 -> 726 bytes datas/icons-16/forward2.png | Bin 0 -> 887 bytes datas/icons-16/forward3.png | Bin 0 -> 1088 bytes datas/icons-16/frameprint.png | Bin 0 -> 1105 bytes datas/icons-16/gimp.png | Bin 0 -> 916 bytes datas/icons-16/gimp2.png | Bin 0 -> 1024 bytes datas/icons-16/gnome-apps.png | Bin 0 -> 1118 bytes datas/icons-16/go.png | Bin 0 -> 1180 bytes datas/icons-16/go2.png | Bin 0 -> 1189 bytes datas/icons-16/gohome.png | Bin 0 -> 617 bytes datas/icons-16/history.png | Bin 0 -> 717 bytes datas/icons-16/history_clear.png | Bin 0 -> 778 bytes datas/icons-16/html.png | Bin 0 -> 1001 bytes datas/icons-16/ica.png | Bin 0 -> 828 bytes datas/icons-16/image.png | Bin 0 -> 842 bytes datas/icons-16/info.png | Bin 0 -> 865 bytes datas/icons-16/java_src.png | Bin 0 -> 845 bytes datas/icons-16/kcontrol.png | Bin 0 -> 1205 bytes datas/icons-16/kde1.png | Bin 0 -> 635 bytes datas/icons-16/kde2.png | Bin 0 -> 948 bytes datas/icons-16/kde3.png | Bin 0 -> 998 bytes datas/icons-16/kde4.png | Bin 0 -> 997 bytes datas/icons-16/kde5.png | Bin 0 -> 1022 bytes datas/icons-16/kde6.png | Bin 0 -> 1027 bytes datas/icons-16/kdisknav.png | Bin 0 -> 835 bytes datas/icons-16/key_enter.png | Bin 0 -> 408 bytes datas/icons-16/kfm_home.png | Bin 0 -> 617 bytes datas/icons-16/khelpcenter.png | Bin 0 -> 1131 bytes datas/icons-16/klipper.png | Bin 0 -> 622 bytes datas/icons-16/klpq.png | Bin 0 -> 1068 bytes datas/icons-16/kmail.png | Bin 0 -> 510 bytes datas/icons-16/kmultiple.png | Bin 0 -> 565 bytes datas/icons-16/konqueror.png | Bin 0 -> 833 bytes datas/icons-16/konqueror2.png | Bin 0 -> 1028 bytes datas/icons-16/konqueror3.png | Bin 0 -> 1173 bytes datas/icons-16/konsole.png | Bin 0 -> 532 bytes datas/icons-16/konsole2.png | Bin 0 -> 1161 bytes datas/icons-16/konsole3.png | Bin 0 -> 1144 bytes datas/icons-16/kvirc.png | Bin 0 -> 836 bytes datas/icons-16/licq.png | Bin 0 -> 1046 bytes datas/icons-16/lime.png | Bin 0 -> 923 bytes datas/icons-16/linuxconf.png | Bin 0 -> 1114 bytes datas/icons-16/lock.png | Bin 0 -> 825 bytes datas/icons-16/lockoverlay.png | Bin 0 -> 941 bytes datas/icons-16/log.png | Bin 0 -> 855 bytes datas/icons-16/logout.png | Bin 0 -> 836 bytes datas/icons-16/mail_generic.png | Bin 0 -> 600 bytes datas/icons-16/make.png | Bin 0 -> 863 bytes datas/icons-16/midi.png | Bin 0 -> 493 bytes datas/icons-16/mime_empty.png | Bin 0 -> 515 bytes datas/icons-16/misc.png | Bin 0 -> 1059 bytes datas/icons-16/moc_src.png | Bin 0 -> 968 bytes datas/icons-16/mozilla-m.png | Bin 0 -> 712 bytes datas/icons-16/mozilla-mail.png | Bin 0 -> 751 bytes datas/icons-16/mozilla.png | Bin 0 -> 841 bytes datas/icons-16/nedit.png | Bin 0 -> 927 bytes datas/icons-16/netscape.png | Bin 0 -> 928 bytes datas/icons-16/network.png | Bin 0 -> 833 bytes datas/icons-16/no.png | Bin 0 -> 821 bytes datas/icons-16/noatun.png | Bin 0 -> 1062 bytes datas/icons-16/noatun2.png | Bin 0 -> 848 bytes datas/icons-16/openterm.png | Bin 0 -> 532 bytes datas/icons-16/opera.png | Bin 0 -> 904 bytes datas/icons-16/package_application.png | Bin 0 -> 551 bytes datas/icons-16/package_multimedia.png | Bin 0 -> 1210 bytes datas/icons-16/pdf-document.png | Bin 0 -> 779 bytes datas/icons-16/quicktime.png | Bin 0 -> 930 bytes datas/icons-16/real_doc.png | Bin 0 -> 895 bytes datas/icons-16/reload.png | Bin 0 -> 982 bytes datas/icons-16/remove.png | Bin 0 -> 313 bytes datas/icons-16/resource.png | Bin 0 -> 885 bytes datas/icons-16/rpm.png | Bin 0 -> 870 bytes datas/icons-16/run.png | Bin 0 -> 1059 bytes datas/icons-16/scanner.png | Bin 0 -> 695 bytes datas/icons-16/services.png | Bin 0 -> 1059 bytes datas/icons-16/shell1.png | Bin 0 -> 701 bytes datas/icons-16/socket.png | Bin 0 -> 1108 bytes datas/icons-16/soffice.png | Bin 0 -> 1072 bytes datas/icons-16/sound.png | Bin 0 -> 776 bytes datas/icons-16/source.png | Bin 0 -> 644 bytes datas/icons-16/spreadsheet.png | Bin 0 -> 893 bytes datas/icons-16/stop.png | Bin 0 -> 821 bytes datas/icons-16/synaptic.png | Bin 0 -> 1111 bytes datas/icons-16/tar.png | Bin 0 -> 870 bytes datas/icons-16/tex.png | Bin 0 -> 576 bytes datas/icons-16/tgz.png | Bin 0 -> 898 bytes datas/icons-16/trash.png | Bin 0 -> 899 bytes datas/icons-16/trashcan_empty.png | Bin 0 -> 832 bytes datas/icons-16/trashcan_full.png | Bin 0 -> 1050 bytes datas/icons-16/tux.png | Bin 0 -> 1115 bytes datas/icons-16/txt.png | Bin 0 -> 965 bytes datas/icons-16/unknown.png | Bin 0 -> 515 bytes datas/icons-16/unlock.png | Bin 0 -> 1009 bytes datas/icons-16/up.png | Bin 0 -> 722 bytes datas/icons-16/video.png | Bin 0 -> 548 bytes datas/icons-16/view_bottom.png | Bin 0 -> 825 bytes datas/icons-16/view_choose.png | Bin 0 -> 895 bytes datas/icons-16/view_detailed.png | Bin 0 -> 825 bytes datas/icons-16/view_icon.png | Bin 0 -> 882 bytes datas/icons-16/view_left_right.png | Bin 0 -> 683 bytes datas/icons-16/view_multicolumn.png | Bin 0 -> 914 bytes datas/icons-16/view_remove.png | Bin 0 -> 597 bytes datas/icons-16/view_right.png | Bin 0 -> 851 bytes datas/icons-16/view_sidetree.png | Bin 0 -> 887 bytes datas/icons-16/view_text.png | Bin 0 -> 800 bytes datas/icons-16/view_top_bottom.png | Bin 0 -> 671 bytes datas/icons-16/view_tree.png | Bin 0 -> 849 bytes datas/icons-16/viewmag+.png | Bin 0 -> 1065 bytes datas/icons-16/viewmag-.png | Bin 0 -> 1054 bytes datas/icons-16/viewmag.png | Bin 0 -> 1014 bytes datas/icons-16/vnc.png | Bin 0 -> 786 bytes datas/icons-16/widget_doc.png | Bin 0 -> 500 bytes datas/icons-16/window_fullscreen.png | Bin 0 -> 948 bytes datas/icons-16/window_list.png | Bin 0 -> 1144 bytes datas/icons-16/window_new.png | Bin 0 -> 784 bytes datas/icons-16/window_nofullscreen.png | Bin 0 -> 938 bytes datas/icons-16/wizard.png | Bin 0 -> 313 bytes datas/icons-16/www.png | Bin 0 -> 1103 bytes datas/icons-16/xmms.png | Bin 0 -> 889 bytes datas/icons-16/xmms_classic.png | Bin 0 -> 883 bytes datas/icons-16/zip.png | Bin 0 -> 347 bytes datas/icons-16/zip_mount.png | Bin 0 -> 738 bytes datas/icons-16/zip_unmount.png | Bin 0 -> 717 bytes datas/icons-48/3floppy_mount.png | Bin 0 -> 4490 bytes datas/icons-48/3floppy_unmount.png | Bin 0 -> 4296 bytes datas/icons-48/Makefile | 209 +++ datas/icons-48/access.png | Bin 0 -> 4560 bytes datas/icons-48/access2.png | Bin 0 -> 4226 bytes datas/icons-48/applix.png | Bin 0 -> 3507 bytes datas/icons-48/archos_mount.png | Bin 0 -> 3872 bytes datas/icons-48/archos_unmount.png | Bin 0 -> 3675 bytes datas/icons-48/ascii.png | Bin 0 -> 2487 bytes datas/icons-48/binary.png | Bin 0 -> 2663 bytes datas/icons-48/blockdevice.png | Bin 0 -> 2812 bytes datas/icons-48/cd.png | Bin 0 -> 3960 bytes datas/icons-48/cd_audio.png | Bin 0 -> 5062 bytes datas/icons-48/cd_video.png | Bin 0 -> 5425 bytes datas/icons-48/cdr.png | Bin 0 -> 3369 bytes datas/icons-48/cdrom_mount.png | Bin 0 -> 4574 bytes datas/icons-48/cdrom_unmount.png | Bin 0 -> 4426 bytes datas/icons-48/cdtrack.png | Bin 0 -> 3847 bytes datas/icons-48/cdwriter_mount.png | Bin 0 -> 5231 bytes datas/icons-48/cdwriter_unmount.png | Bin 0 -> 5076 bytes datas/icons-48/chardevice.png | Bin 0 -> 1675 bytes datas/icons-48/colorscm.png | Bin 0 -> 4290 bytes datas/icons-48/core.png | Bin 0 -> 3717 bytes datas/icons-48/core2.png | Bin 0 -> 3736 bytes datas/icons-48/deb.png | Bin 0 -> 3354 bytes datas/icons-48/desktop.png | Bin 0 -> 3390 bytes datas/icons-48/document.png | Bin 0 -> 2602 bytes datas/icons-48/document2.png | Bin 0 -> 2345 bytes datas/icons-48/dvd_mount.png | Bin 0 -> 4967 bytes datas/icons-48/dvd_unmount.png | Bin 0 -> 4802 bytes datas/icons-48/encrypted.png | Bin 0 -> 3661 bytes datas/icons-48/exec.png | Bin 0 -> 4900 bytes datas/icons-48/file_broken.png | Bin 0 -> 2802 bytes datas/icons-48/file_locked.png | Bin 0 -> 3668 bytes datas/icons-48/folder.png | Bin 0 -> 4326 bytes datas/icons-48/folder2_html.png | Bin 0 -> 5492 bytes datas/icons-48/folder2_html2.png | Bin 0 -> 5574 bytes datas/icons-48/folder2_sound.png | Bin 0 -> 5227 bytes datas/icons-48/folder2_video.png | Bin 0 -> 5637 bytes datas/icons-48/folder_cool.png | Bin 0 -> 5380 bytes datas/icons-48/folder_gray.png | Bin 0 -> 4379 bytes datas/icons-48/folder_green.png | Bin 0 -> 4650 bytes datas/icons-48/folder_gz.png | Bin 0 -> 5130 bytes datas/icons-48/folder_home.png | Bin 0 -> 3213 bytes datas/icons-48/folder_home1.png | Bin 0 -> 4350 bytes datas/icons-48/folder_html.png | Bin 0 -> 5196 bytes datas/icons-48/folder_image.png | Bin 0 -> 5802 bytes datas/icons-48/folder_locked.png | Bin 0 -> 5054 bytes datas/icons-48/folder_mail.png | Bin 0 -> 4180 bytes datas/icons-48/folder_man.png | Bin 0 -> 4118 bytes datas/icons-48/folder_orange.png | Bin 0 -> 4667 bytes datas/icons-48/folder_red.png | Bin 0 -> 4502 bytes datas/icons-48/folder_rpm.png | Bin 0 -> 4738 bytes datas/icons-48/folder_sound.png | Bin 0 -> 5829 bytes datas/icons-48/folder_tar.png | Bin 0 -> 5877 bytes datas/icons-48/folder_video.png | Bin 0 -> 5620 bytes datas/icons-48/folder_violet.png | Bin 0 -> 4573 bytes datas/icons-48/folder_yelow.png | Bin 0 -> 4430 bytes datas/icons-48/font.png | Bin 0 -> 3598 bytes datas/icons-48/font_truetype.png | Bin 0 -> 3711 bytes datas/icons-48/font_type1.png | Bin 0 -> 3569 bytes datas/icons-48/fonts_bitmap.png | Bin 0 -> 2744 bytes datas/icons-48/freeBSD_hdd_mount.png | Bin 0 -> 4532 bytes datas/icons-48/freeBSD_hdd_unmount.png | Bin 0 -> 4370 bytes datas/icons-48/ftp.png | Bin 0 -> 3157 bytes datas/icons-48/gimp.png | Bin 0 -> 3240 bytes datas/icons-48/gimp2.png | Bin 0 -> 4743 bytes datas/icons-48/gnome-apps.png | Bin 0 -> 5471 bytes datas/icons-48/go.png | Bin 0 -> 5809 bytes datas/icons-48/go2.png | Bin 0 -> 6439 bytes datas/icons-48/handheld.png | Bin 0 -> 4069 bytes datas/icons-48/hdd_mount.png | Bin 0 -> 3974 bytes datas/icons-48/hdd_unmount.png | Bin 0 -> 3759 bytes datas/icons-48/html.png | Bin 0 -> 6419 bytes datas/icons-48/html2.png | Bin 0 -> 3585 bytes datas/icons-48/ica.png | Bin 0 -> 3601 bytes datas/icons-48/image.png | Bin 0 -> 3668 bytes datas/icons-48/info.png | Bin 0 -> 3985 bytes datas/icons-48/kcalc.png | Bin 0 -> 3821 bytes datas/icons-48/kcontrol.png | Bin 0 -> 6407 bytes datas/icons-48/kdevelop1.png | Bin 0 -> 35133 bytes datas/icons-48/kdisknav.png | Bin 0 -> 3482 bytes datas/icons-48/kfm_home.png | Bin 0 -> 4288 bytes datas/icons-48/khelpcenter.png | Bin 0 -> 5065 bytes datas/icons-48/klpq.png | Bin 0 -> 4307 bytes datas/icons-48/kmail.png | Bin 0 -> 4799 bytes datas/icons-48/kmenu.png | Bin 0 -> 5809 bytes datas/icons-48/kmultiple.png | Bin 0 -> 2024 bytes datas/icons-48/knode.png | Bin 0 -> 3911 bytes datas/icons-48/konqueror.png | Bin 0 -> 5240 bytes datas/icons-48/konqueror2.png | Bin 0 -> 4288 bytes datas/icons-48/konqueror2a.png | Bin 0 -> 5754 bytes datas/icons-48/konqueror3 | Bin 0 -> 4084 bytes datas/icons-48/konsole.png | Bin 0 -> 5100 bytes datas/icons-48/konsole2.png | Bin 0 -> 5210 bytes datas/icons-48/konsole3.png | Bin 0 -> 5081 bytes datas/icons-48/kppp.png | Bin 0 -> 5327 bytes datas/icons-48/kvirc.png | Bin 0 -> 3747 bytes datas/icons-48/licq.png | Bin 0 -> 2945 bytes datas/icons-48/lime.png | Bin 0 -> 5187 bytes datas/icons-48/link.png | Bin 0 -> 3246 bytes datas/icons-48/linux-classic_hdd_mount.png | Bin 0 -> 4269 bytes datas/icons-48/linux-classic_hdd_unmount.png | Bin 0 -> 4101 bytes datas/icons-48/linux_hdd_mount.png | Bin 0 -> 4569 bytes datas/icons-48/linux_hdd_unmount.png | Bin 0 -> 4410 bytes datas/icons-48/linuxconf.png | Bin 0 -> 4487 bytes datas/icons-48/lockoverlay.png | Bin 0 -> 2728 bytes datas/icons-48/log.png | Bin 0 -> 4559 bytes datas/icons-48/mac_hdd_mount.png | Bin 0 -> 5210 bytes datas/icons-48/mac_hdd_unmount.png | Bin 0 -> 5021 bytes datas/icons-48/make.png | Bin 0 -> 4452 bytes datas/icons-48/make2.png | Bin 0 -> 4831 bytes datas/icons-48/message.png | Bin 0 -> 3076 bytes datas/icons-48/midi.png | Bin 0 -> 3019 bytes datas/icons-48/mime.png | Bin 0 -> 1951 bytes datas/icons-48/mime_html.png | Bin 0 -> 3408 bytes datas/icons-48/mime_soffice.png | Bin 0 -> 5302 bytes datas/icons-48/mime_sound.png | Bin 0 -> 3321 bytes datas/icons-48/mime_track.png | Bin 0 -> 3375 bytes datas/icons-48/mime_txt.png | Bin 0 -> 2684 bytes datas/icons-48/misc_doc.png | Bin 0 -> 3879 bytes datas/icons-48/mouse.png | Bin 0 -> 3082 bytes datas/icons-48/mozilla-m.png | Bin 0 -> 2692 bytes datas/icons-48/mozilla-mail.png | Bin 0 -> 3053 bytes datas/icons-48/mozilla.png | Bin 0 -> 4227 bytes datas/icons-48/mshdd_mount.png | Bin 0 -> 5660 bytes datas/icons-48/mshdd_unmount.png | Bin 0 -> 5472 bytes datas/icons-48/nedit.png | Bin 0 -> 4859 bytes datas/icons-48/netscape.png | Bin 0 -> 3354 bytes datas/icons-48/netscape_doc.png | Bin 0 -> 3749 bytes datas/icons-48/network.png | Bin 0 -> 5877 bytes datas/icons-48/network_local.png | Bin 0 -> 5877 bytes datas/icons-48/noatun.png | Bin 0 -> 5213 bytes datas/icons-48/noatun2.png | Bin 0 -> 3062 bytes datas/icons-48/opera.png | Bin 0 -> 4032 bytes datas/icons-48/package_multimedia.png | Bin 0 -> 4709 bytes datas/icons-48/pdf.png | Bin 0 -> 3141 bytes datas/icons-48/php.png | Bin 0 -> 3475 bytes datas/icons-48/postscript.png | Bin 0 -> 4770 bytes datas/icons-48/postscript2.png | Bin 0 -> 3768 bytes datas/icons-48/printer.png | Bin 0 -> 4307 bytes datas/icons-48/quicktime.png | Bin 0 -> 4946 bytes datas/icons-48/real_doc.png | Bin 0 -> 3372 bytes datas/icons-48/recycled.png | Bin 0 -> 4158 bytes datas/icons-48/resource.png | Bin 0 -> 3891 bytes datas/icons-48/rpm.png | Bin 0 -> 3832 bytes datas/icons-48/scanner.png | Bin 0 -> 4023 bytes datas/icons-48/shellscript.png | Bin 0 -> 2622 bytes datas/icons-48/socket.png | Bin 0 -> 4424 bytes datas/icons-48/soffice.png | Bin 0 -> 4881 bytes datas/icons-48/sound.png | Bin 0 -> 4313 bytes datas/icons-48/source.png | Bin 0 -> 2735 bytes datas/icons-48/source_c.png | Bin 0 -> 2951 bytes datas/icons-48/source_cpp.png | Bin 0 -> 2859 bytes datas/icons-48/source_f.png | Bin 0 -> 2962 bytes datas/icons-48/source_h.png | Bin 0 -> 2904 bytes datas/icons-48/source_java.png | Bin 0 -> 4156 bytes datas/icons-48/source_l.png | Bin 0 -> 2894 bytes datas/icons-48/source_moc.png | Bin 0 -> 4053 bytes datas/icons-48/source_o.png | Bin 0 -> 2939 bytes datas/icons-48/source_p.png | Bin 0 -> 2903 bytes datas/icons-48/source_pl.png | Bin 0 -> 2901 bytes datas/icons-48/source_s.png | Bin 0 -> 2771 bytes datas/icons-48/source_y.png | Bin 0 -> 2891 bytes datas/icons-48/spreadsheet.png | Bin 0 -> 3559 bytes datas/icons-48/synaptic.png | Bin 0 -> 4383 bytes datas/icons-48/tar.png | Bin 0 -> 5093 bytes datas/icons-48/template_source.png | Bin 0 -> 2850 bytes datas/icons-48/tex.png | Bin 0 -> 3688 bytes datas/icons-48/tgz.png | Bin 0 -> 5041 bytes datas/icons-48/trashcan_empty.png | Bin 0 -> 3396 bytes datas/icons-48/trashcan_full.png | Bin 0 -> 5149 bytes datas/icons-48/tux.png | Bin 0 -> 3997 bytes datas/icons-48/txt.png | Bin 0 -> 4102 bytes datas/icons-48/unknown.png | Bin 0 -> 1951 bytes datas/icons-48/unknown2.png | Bin 0 -> 2996 bytes datas/icons-48/vcalendar.png | Bin 0 -> 3918 bytes datas/icons-48/vcard.png | Bin 0 -> 3941 bytes datas/icons-48/video.png | Bin 0 -> 3123 bytes datas/icons-48/vmware.png | Bin 0 -> 35702 bytes datas/icons-48/vnc.png | Bin 0 -> 2457 bytes datas/icons-48/widget_doc.png | Bin 0 -> 2489 bytes datas/icons-48/window_list.png | Bin 0 -> 4004 bytes datas/icons-48/wmaker_apps.png | Bin 0 -> 3216 bytes datas/icons-48/wordprocessing.png | Bin 0 -> 2602 bytes datas/icons-48/www.png | Bin 0 -> 3154 bytes datas/icons-48/xmms2.png | Bin 0 -> 4886 bytes datas/icons-48/xmms_classic.png | Bin 0 -> 4112 bytes datas/icons-48/zip.png | Bin 0 -> 634 bytes datas/icons-48/zip_mount.png | Bin 0 -> 4580 bytes datas/icons-48/zip_unmount.png | Bin 0 -> 4386 bytes datas/mime.conf | 101 ++ datas/mimetypes.conf | 87 + datas/programs-links/Applications.directory | 66 + datas/programs-links/Casino.desktop | 8 + datas/programs-links/Development.directory | 56 + datas/programs-links/Emacs.desktop | 74 + datas/programs-links/Eterm.desktop | 73 + datas/programs-links/GIMP.desktop | 87 + datas/programs-links/Games.directory | 69 + datas/programs-links/Graphics.directory | 69 + datas/programs-links/Internet.directory | 66 + datas/programs-links/Kterm.desktop | 69 + datas/programs-links/Makefile | 157 ++ datas/programs-links/Mastermind.desktop | 8 + datas/programs-links/Mozilla.desktop | 8 + datas/programs-links/Multimedia.directory | 67 + datas/programs-links/Netscape.desktop | 83 + datas/programs-links/Opera.desktop | 8 + datas/programs-links/Qubix.desktop | 8 + datas/programs-links/Root.directory | 56 + datas/programs-links/Settings.directory | 67 + datas/programs-links/System.directory | 69 + datas/programs-links/UNIX-regular.desktop | 77 + datas/programs-links/UNIX.desktop | 78 + datas/programs-links/Utilities.directory | 68 + datas/programs-links/Vim.desktop | 54 + datas/programs-links/Vnterm.desktop | 75 + datas/programs-links/WordPerfect.desktop | 38 + datas/programs-links/Xemacs.desktop | 40 + datas/programs-links/abiword.desktop | 8 + datas/programs-links/acroread.desktop | 8 + datas/programs-links/alsaplayer.desktop | 8 + datas/programs-links/calc.desktop | 36 + datas/programs-links/colorsconf.desktop | 8 + datas/programs-links/control.desktop | 8 + datas/programs-links/cooledit.desktop | 8 + datas/programs-links/dialup.desktop | 8 + datas/programs-links/ecdplayer.desktop | 8 + datas/programs-links/edisplayconf.desktop | 8 + datas/programs-links/ehardware.desktop | 8 + datas/programs-links/eiconconf.desktop | 8 + datas/programs-links/eimgviewer.desktop | 8 + datas/programs-links/epanelconf.desktop | 8 + datas/programs-links/esoundmixer.desktop | 8 + datas/programs-links/etimedate.desktop | 8 + datas/programs-links/ewmconf.desktop | 8 + datas/programs-links/finder.desktop | 8 + datas/programs-links/fluid.desktop | 8 + datas/programs-links/fstabedit.desktop | 8 + datas/programs-links/gv.desktop | 8 + datas/programs-links/lbreak.desktop | 8 + datas/programs-links/lynx.desktop | 40 + datas/programs-links/lyx.desktop | 8 + datas/programs-links/mplayer.desktop | 8 + datas/programs-links/notepad.desktop | 8 + datas/programs-links/ooffice.desktop | 8 + datas/programs-links/postoffice.desktop | 8 + datas/programs-links/printers.desktop | 8 + datas/programs-links/realplayer.desktop | 8 + datas/programs-links/rxvt.desktop | 11 + datas/programs-links/sccalc.desktop | 8 + datas/programs-links/scrsaver.desktop | 8 + datas/programs-links/tips.desktop | 8 + datas/programs-links/x11amp.desktop | 8 + datas/programs-links/xbill.desktop | 22 + datas/programs-links/xdvi.desktop | 8 + datas/programs-links/xmag.desktop | 8 + datas/programs-links/xmms.desktop | 8 + datas/programs-links/xpdf.desktop | 8 + datas/programs-links/xsane.desktop | 8 + datas/programs-links/xwpe.desktop | 8 + datas/programs-links/xxgdb.desktop | 8 + datas/schemes/Active.scheme | 29 + datas/schemes/Blueworld.scheme | 24 + datas/schemes/Brown1.scheme | 25 + datas/schemes/Brown2.scheme | 25 + datas/schemes/Ede1.scheme | 24 + datas/schemes/Ede2.scheme | 25 + datas/schemes/Ede3.scheme | 25 + datas/schemes/Futuristic.scheme | 26 + datas/schemes/Gray1.scheme | 25 + datas/schemes/GrayBrown.scheme | 25 + datas/schemes/LightBrown.scheme | 24 + datas/schemes/Lilola.scheme | 25 + datas/schemes/Makefile | 33 + datas/schemes/None.scheme | 24 + datas/schemes/Tubus.scheme | 25 + datas/schemes/TypicalBrown.scheme | 25 + datas/startede.in | 47 + datas/wmanager.conf | 32 + docs/ede/Makefile | 26 + docs/ede/authors.html | 70 + docs/ede/changelog.html | 197 ++ docs/ede/copying.html | 200 +++ docs/ede/ede-small.gif | Bin 0 -> 1806 bytes docs/ede/ede.png | Bin 0 -> 2437 bytes docs/ede/getede.png | Bin 0 -> 2455 bytes docs/ede/help.html | 70 + docs/ede/index.html | 100 ++ docs/ede/logoinvert100.png | Bin 0 -> 2294 bytes docs/ede/style.css | 26 + ecolorconf/EDE_FontChooser.cpp | 357 ++++ ecolorconf/EDE_FontChooser.h | 51 + ecolorconf/Makefile | 21 + ecolorconf/ecolorconf.cpp | 308 ++++ ecolorconf/ecolorconf.fl | 276 +++ ecolorconf/ecolorconf.fld | 275 +++ ecolorconf/ecolorconf.h | 47 + ecolorconf/ecolorutils.cpp | 701 ++++++++ ecolorconf/ecolorutils.h | 71 + ecolorconf/edetheme.cpp | 315 ++++ ecolorconf/locale/hu.po | 208 +++ ecolorconf/locale/id.po | 203 +++ ecolorconf/locale/messages.pot | 205 +++ ecolorconf/locale/ru.po | 204 +++ ecolorconf/locale/sk.po | 212 +++ ecolorconf/locale/sr.po | 203 +++ econtrol/Makefile | 22 + econtrol/econtrol.cpp | 371 ++++ econtrol/econtrol.fld | 193 ++ econtrol/econtrol.h | 25 + econtrol/icons/behaviour.xpm | 441 +++++ econtrol/icons/display.xpm | 570 ++++++ econtrol/icons/hwinfo.xpm | 688 +++++++ econtrol/icons/keyboard.xpm | 163 ++ econtrol/icons/mimetypes.xpm | 597 ++++++ econtrol/icons/newsoft.xpm | 479 +++++ econtrol/icons/panel.xpm | 353 ++++ econtrol/icons/printer.xpm | 506 ++++++ econtrol/icons/samba.xpm | 818 +++++++++ econtrol/icons/screensaver.xpm | 557 ++++++ econtrol/icons/themes.xpm | 354 ++++ econtrol/icons/timedate.xpm | 482 +++++ econtrol/icons/wallpaper.xpm | 973 ++++++++++ econtrol/icons/windowmanager.xpm | 551 ++++++ econtrol/locale/hu.po | 136 ++ econtrol/locale/id.po | 193 ++ econtrol/locale/messages.pot | 143 ++ econtrol/locale/ru.po | 168 ++ econtrol/locale/sk.po | 192 ++ econtrol/locale/sr.po | 191 ++ ede.spec.in | 76 + edeconf.h.in | 82 + edelib2/Config.cpp | 883 +++++++++ edelib2/Config.h | 755 ++++++++ edelib2/Icon.cpp | 165 ++ edelib2/Icon.h | 91 + edelib2/Makefile | 15 + edelib2/MimeType.cpp | 347 ++++ edelib2/MimeType.h | 68 + edelib2/NLS.h | 21 + edelib2/Run.cpp | 237 +++ edelib2/Run.h | 72 + edelib2/Util.cpp | 346 ++++ edelib2/Util.h | 88 + edelib2/about_dialog.cpp | 84 + edelib2/about_dialog.h | 27 + edelib2/aboutdialog.fld | 71 + edelib2/locale/messages.pot | 43 + edelib2/process.cpp | 693 +++++++ edelib2/process.h | 205 +++ edelib2/pty.cpp | 353 ++++ edelib2/pty.h | 90 + edewm/Atoms.cpp | 243 +++ edewm/Atoms.h | 131 ++ edewm/COMPLIANCE | 128 ++ edewm/Cursor.cpp | 298 +++ edewm/Cursor.h | 70 + edewm/Desktop.h | 81 + edewm/Events.cpp | 508 ++++++ edewm/Events.h | 45 + edewm/Frame.cpp | 1700 ++++++++++++++++++ edewm/Frame.h | 344 ++++ edewm/Hints.cpp | 512 ++++++ edewm/Hints.h | 40 + edewm/Makefile | 42 + edewm/Sound.cpp | 173 ++ edewm/Sound.h | 63 + edewm/Titlebar.cpp | 429 +++++ edewm/Titlebar.h | 79 + edewm/Tracers.h | 42 + edewm/Utils.cpp | 29 + edewm/Utils.h | 20 + edewm/Windowmanager.cpp | 733 ++++++++ edewm/Windowmanager.h | 165 ++ edewm/app.xpm | 21 + edewm/debug.cpp | 62 + edewm/debug.h | 26 + edewm/edewm | Bin 0 -> 131276 bytes edewm/locale/fi.po | 89 + edewm/locale/hu.po | 85 + edewm/locale/id.po | 89 + edewm/locale/messages.po.default | 63 + edewm/locale/messages.pot | 88 + edewm/locale/ru.po | 90 + edewm/locale/sk.po | 87 + edewm/locale/sr.po | 87 + edewm/main.cpp | 54 + edewm/mask.xpm | 15 + edewm/tests/Makefile | 38 + edewm/tests/basic_moveresize.cpp | 95 + edewm/tests/basic_moveresize.fld | 61 + edewm/tests/demo.ogg | Bin 0 -> 413925 bytes edewm/tests/sound_test.cpp | 14 + edewm/tests/testpositions.sh | 70 + edialog/Makefile | 17 + edialog/edialog.cpp | 237 +++ edisplayconf/Makefile | 22 + edisplayconf/conf.cpp | 130 ++ edisplayconf/conf.h | 11 + edisplayconf/edisplayconf.cpp | 243 +++ edisplayconf/edisplayconf.fl | 188 ++ edisplayconf/edisplayconf.fld | 174 ++ edisplayconf/edisplayconf.h | 75 + edisplayconf/exset.h | 76 + edisplayconf/locale/hu.po | 99 + edisplayconf/locale/id.po | 104 ++ edisplayconf/locale/messages.pot | 105 ++ edisplayconf/locale/ru.po | 104 ++ edisplayconf/locale/sk.po | 104 ++ edisplayconf/locale/sr.po | 104 ++ efiler/EDE_FileBrowser.cxx | 364 ++++ efiler/EDE_FileBrowser.h | 95 + efiler/Makefile | 17 + efiler/efiler.cpp | 538 ++++++ efiler/mimetypes.conf | 87 + efinder/Makefile | 21 + efinder/efinder.cpp | 497 +++++ efinder/efinder.fld | 470 +++++ efinder/efinder.h | 69 + efinder/eglob.cpp | 622 +++++++ efinder/eglob.h | 44 + efinder/glob.c | 504 ++++++ efinder/globber.c | 304 ++++ efinder/globber.h | 86 + efinder/icons/block_dev.xpm | 24 + efinder/icons/char_dev.xpm | 61 + efinder/icons/dir_close.xpm | 25 + efinder/icons/dir_open.xpm | 29 + efinder/icons/exe.xpm | 24 + efinder/icons/fifo.xpm | 24 + efinder/icons/go_down.xpm | 25 + efinder/icons/go_to.xpm | 25 + efinder/icons/help.xpm | 26 + efinder/icons/page.xpm | 23 + efinder/icons/page_lnk.xpm | 24 + efinder/icons/sexe.xpm | 24 + efinder/icons/socket.xpm | 23 + efinder/icons/up.xpm | 246 +++ efinder/locale/hu.po | 317 ++++ efinder/locale/id.po | 342 ++++ efinder/locale/messages.pot | 314 ++++ efinder/locale/ru.po | 320 ++++ efinder/locale/sk.po | 337 ++++ eiconman/Makefile | 22 + eiconman/edeskconf.cpp | 159 ++ eiconman/edeskconf.fl | 163 ++ eiconman/edeskconf.fld | 143 ++ eiconman/edeskconf.h | 45 + eiconman/edeskicon.cpp | 594 ++++++ eiconman/edeskicon.h | 109 ++ eiconman/eiconman.cpp | 837 +++++++++ eiconman/eiconman.h | 111 ++ eiconman/icons/clean.xpm | 20 + eiconman/icons/monitor.xpm | 174 ++ eiconman/locale/hu.po | 209 +++ eiconman/locale/id.po | 258 +++ eiconman/locale/messages.pot | 218 +++ eiconman/locale/ru.po | 259 +++ eiconman/locale/sk.po | 258 +++ eiconman/locale/sr.po | 249 +++ eiconman/propdialog.cpp | 146 ++ eiconman/propdialog.fl | 126 ++ eiconman/propdialog.fld | 115 ++ eiconman/propdialog.h | 24 + eiconsconf/Makefile | 22 + eiconsconf/eicon.cpp | 98 + eiconsconf/eicon.h | 43 + eiconsconf/eiconsconf.cpp | 191 ++ eiconsconf/eiconsconf.fld | 131 ++ eiconsconf/eiconsconf.h | 21 + eiconsconf/locale/hu.po | 67 + eiconsconf/locale/id.po | 71 + eiconsconf/locale/messages.pot | 73 + eiconsconf/locale/ru.po | 72 + eiconsconf/locale/sk.po | 71 + eiconsconf/locale/sr.po | 71 + eimage/Makefile | 17 + eimage/eimage.cpp | 394 ++++ einstaller/Makefile | 21 + einstaller/TODO | 8 + einstaller/einstall.cpp | 274 +++ einstaller/einstall.h | 26 + einstaller/einstaller.cpp | 156 ++ einstaller/einstaller.fl | 97 + einstaller/einstaller.fld | 107 ++ einstaller/einstaller.h | 30 + einstaller/icons/install.xpm | 490 +++++ einstaller/locale/hu.po | 64 + einstaller/locale/messages.pot | 69 + einstaller/locale/ru.po | 71 + einstaller/locale/sk.po | 71 + ekeyconf/Makefile | 17 + ekeyconf/Shortcut_Button.cpp | 54 + ekeyconf/Shortcut_Button.h | 43 + ekeyconf/ekeyconf.cpp | 154 ++ ekeyconf/ekeyconf.fl | 135 ++ ekeyconf/ekeyconf.h | 19 + ekeyconf/ekeys.cpp | 285 +++ ekeyconf/ekeys.h | 36 + ekeyconf/locale/messages.pot | 55 + elauncher/Makefile | 22 + elauncher/elauncher.cpp | 758 ++++++++ elauncher/elauncher.h | 61 + elauncher/icons/crash.xpm | 295 +++ elauncher/icons/error.xpm | 315 ++++ elauncher/icons/run.xpm | 551 ++++++ elauncher/locale/Makefile | 208 +++ elauncher/locale/hu.po | 177 ++ elauncher/locale/id.po | 179 ++ elauncher/locale/messages.pot | 178 ++ elauncher/locale/ru.po | 180 ++ elauncher/locale/sk.po | 179 ++ elauncher/locale/sr.po | 179 ++ emenueditor/Makefile | 22 + emenueditor/emenueditor.cpp | 395 ++++ emenueditor/emenueditor.h | 46 + emenueditor/icons/folder.xpm | 155 ++ emenueditor/icons/item.xpm | 88 + emenueditor/icons/up.xpm | 155 ++ emenueditor/locale/hu.po | 123 ++ emenueditor/locale/id.po | 136 ++ emenueditor/locale/messages.pot | 130 ++ emenueditor/locale/ru.po | 135 ++ emenueditor/locale/sk.po | 134 ++ emenueditor/locale/sr.po | 136 ++ epanelconf/Makefile | 22 + epanelconf/epanelconf.cpp | 253 +++ epanelconf/epanelconf.fl | 189 ++ epanelconf/epanelconf.fld | 195 ++ epanelconf/epanelconf.h | 35 + epanelconf/locale/hu.po | 131 ++ epanelconf/locale/id.po | 126 ++ epanelconf/locale/messages.pot | 127 ++ epanelconf/locale/ru.po | 127 ++ epanelconf/locale/sk.po | 127 ++ epanelconf/locale/sr.po | 135 ++ epanelconf/util.cpp | 347 ++++ epanelconf/util.h | 22 + esvrconf/Makefile | 21 + esvrconf/ehacklist.h | 207 +++ esvrconf/escreensaver.cpp | 514 ++++++ esvrconf/escreensaver.h | 41 + esvrconf/escrsaverconf.cpp | 176 ++ esvrconf/escrsaverconf.fl | 117 ++ esvrconf/escrsaverconf.fld | 128 ++ esvrconf/escrsaverconf.h | 33 + esvrconf/icons/energy.xpm | 307 ++++ esvrconf/locale/hu.po | 63 + esvrconf/locale/messages.pot | 67 + esvrconf/locale/ru.po | 67 + esvrconf/locale/sk.po | 66 + etimedate/Date_Time.h | 155 ++ etimedate/EDE_Calendar.cpp | 471 +++++ etimedate/EDE_Calendar.h | 111 ++ etimedate/Fl_Date_Time.cpp | 735 ++++++++ etimedate/Fl_Date_Time.h | 120 ++ etimedate/Makefile | 22 + etimedate/TODO | 17 + etimedate/TimeBox.cpp | 461 +++++ etimedate/TimeBox.h | 212 +++ etimedate/etimedate.cpp | 339 ++++ etimedate/etimedate.fld | 86 + etimedate/etimedate.h | 29 + etimedate/icons/world.xpm | 190 ++ etimedate/icons/world2.xpm | 176 ++ etimedate/locale/hu.po | 53 + etimedate/locale/id.po | 146 ++ etimedate/locale/messages.pot | 57 + etimedate/locale/ru.po | 147 ++ etimedate/locale/sk.po | 147 ++ etimedate/locale/sr.po | 146 ++ etip/Makefile | 21 + etip/etip.cpp | 145 ++ etip/etip.fld | 100 ++ etip/etip.h | 20 + etip/icons/hint.xpm | 820 +++++++++ etip/locale/id.po | 93 + etip/locale/messages.pot | 81 + etip/locale/ru.po | 93 + etip/locale/sk.po | 94 + etip/locale/sr.po | 95 + evolume/Makefile | 22 + evolume/evolume.cpp | 624 +++++++ evolume/evolume.h | 93 + evolume/locale/hu.po | 66 + evolume/locale/id.po | 101 ++ evolume/locale/messages.pot | 72 + evolume/locale/ru.po | 78 + evolume/locale/sk.po | 102 ++ evolume/prefs.cpp | 115 ++ evolume/prefs.fld | 132 ++ evolume/prefs.h | 28 + ewmconf/Makefile | 22 + ewmconf/ewm.cpp | 131 ++ ewmconf/ewm.h | 37 + ewmconf/ewmconf.cpp | 347 ++++ ewmconf/ewmconf.fl | 220 +++ ewmconf/ewmconf.fld | 228 +++ ewmconf/ewmconf.h | 42 + ewmconf/locale/hu.po | 141 ++ ewmconf/locale/id.po | 148 ++ ewmconf/locale/messages.pot | 145 ++ ewmconf/locale/ru.po | 149 ++ ewmconf/locale/sk.po | 148 ++ ewmconf/locale/sr.po | 148 ++ eworkpanel/EDE_Config.cpp | 990 ++++++++++ eworkpanel/EDE_Config.h | 752 ++++++++ eworkpanel/Makefile | 22 + eworkpanel/NLS.h | 12 + eworkpanel/aboutdialog.cpp | 54 + eworkpanel/aboutdialog.fld | 44 + eworkpanel/aboutdialog.h | 22 + eworkpanel/cpumonitor.cpp | 390 ++++ eworkpanel/cpumonitor.h | 57 + eworkpanel/dock.cpp | 40 + eworkpanel/dock.h | 16 + eworkpanel/icons/about.xpm | 170 ++ eworkpanel/icons/clean.xpm | 19 + eworkpanel/icons/desktop.xpm | 208 +++ eworkpanel/icons/ede-small.xpm | 76 + eworkpanel/icons/ede_small.xpm | 316 ++++ eworkpanel/icons/favourites.xpm | 150 ++ eworkpanel/icons/file.xpm | 88 + eworkpanel/icons/find.xpm | 205 +++ eworkpanel/icons/help.xpm | 138 ++ eworkpanel/icons/keyboard.xpm | 164 ++ eworkpanel/icons/lock.xpm | 165 ++ eworkpanel/icons/logout.xpm | 25 + eworkpanel/icons/mini_penguin.xpm | 124 ++ eworkpanel/icons/panel.xpm | 199 ++ eworkpanel/icons/penguin.xpm | 358 ++++ eworkpanel/icons/programs.xpm | 155 ++ eworkpanel/icons/programs_user.xpm | 178 ++ eworkpanel/icons/run.xpm | 177 ++ eworkpanel/icons/showdesktop.xpm | 138 ++ eworkpanel/icons/shutdown.xpm | 160 ++ eworkpanel/icons/sound.xpm | 162 ++ eworkpanel/icons/sound_penguin.xpm | 202 +++ eworkpanel/icons/tux.xpm | 91 + eworkpanel/item.cpp | 127 ++ eworkpanel/item.h | 98 + eworkpanel/keyboardchooser.cpp | 303 ++++ eworkpanel/keyboardchooser.h | 60 + eworkpanel/locale/hu.po | 179 ++ eworkpanel/locale/id.po | 257 +++ eworkpanel/locale/messages.pot | 185 ++ eworkpanel/locale/ru.po | 248 +++ eworkpanel/locale/sk.po | 259 +++ eworkpanel/locale/sr.po | 257 +++ eworkpanel/logoutdialog.cpp | 240 +++ eworkpanel/logoutdialog.fld | 76 + eworkpanel/logoutdialog.h | 40 + eworkpanel/mainmenu.cpp | 481 +++++ eworkpanel/mainmenu.h | 73 + eworkpanel/mainmenu_scan.cpp | 227 +++ eworkpanel/menu.h | 57 + eworkpanel/panelbutton.cpp | 166 ++ eworkpanel/panelbutton.h | 58 + eworkpanel/taskbutton.cpp | 463 +++++ eworkpanel/taskbutton.h | 55 + eworkpanel/workpanel.cpp | 664 +++++++ eworkpanel/workpanel.h | 114 ++ exset/exset.h | 74 + install-sh | 250 +++ l10n-prepare.pl | 53 + l10n/.tar.gz | Bin 0 -> 70024 bytes l10n/fi.tar.gz | Bin 0 -> 968 bytes l10n/fi/edewm.po | 89 + l10n/hu.tar.gz | Bin 0 -> 11461 bytes l10n/hu/ecolorconf.po | 208 +++ l10n/hu/econtrol.po | 136 ++ l10n/hu/edewm.po | 85 + l10n/hu/edisplayconf.po | 99 + l10n/hu/efinder.po | 317 ++++ l10n/hu/eiconman.po | 209 +++ l10n/hu/eiconsconf.po | 67 + l10n/hu/einstaller.po | 64 + l10n/hu/elauncher.po | 177 ++ l10n/hu/emenueditor.po | 123 ++ l10n/hu/epanelconf.po | 131 ++ l10n/hu/esvrconf.po | 63 + l10n/hu/etimedate.po | 53 + l10n/hu/evolume.po | 66 + l10n/hu/ewmconf.po | 141 ++ l10n/hu/eworkpanel.po | 179 ++ l10n/id.tar.gz | Bin 0 -> 12448 bytes l10n/id/ecolorconf.po | 203 +++ l10n/id/econtrol.po | 193 ++ l10n/id/edewm.po | 89 + l10n/id/edisplayconf.po | 104 ++ l10n/id/efinder.po | 342 ++++ l10n/id/eiconman.po | 258 +++ l10n/id/eiconsconf.po | 71 + l10n/id/elauncher.po | 179 ++ l10n/id/emenueditor.po | 136 ++ l10n/id/epanelconf.po | 126 ++ l10n/id/erun.po | 51 + l10n/id/etimedate.po | 146 ++ l10n/id/etip.po | 93 + l10n/id/evolume.po | 101 ++ l10n/id/ewmconf.po | 148 ++ l10n/id/eworkpanel.po | 257 +++ l10n/nontranslated.tar.gz | Bin 0 -> 8928 bytes l10n/nontranslated/common.pot | 43 + l10n/nontranslated/ecolorconf.pot | 205 +++ l10n/nontranslated/econtrol.pot | 143 ++ l10n/nontranslated/edewm.pot | 88 + l10n/nontranslated/edisplayconf.pot | 105 ++ l10n/nontranslated/efinder.pot | 314 ++++ l10n/nontranslated/eiconman.pot | 218 +++ l10n/nontranslated/eiconsconf.pot | 73 + l10n/nontranslated/einstaller.pot | 69 + l10n/nontranslated/ekeyconf.pot | 55 + l10n/nontranslated/elauncher.pot | 178 ++ l10n/nontranslated/emenueditor.pot | 130 ++ l10n/nontranslated/epanelconf.pot | 127 ++ l10n/nontranslated/erun.pot | 50 + l10n/nontranslated/esvrconf.pot | 67 + l10n/nontranslated/etimedate.pot | 57 + l10n/nontranslated/etip.pot | 81 + l10n/nontranslated/evolume.pot | 72 + l10n/nontranslated/ewmconf.pot | 145 ++ l10n/nontranslated/eworkpanel.pot | 185 ++ l10n/ru.tar.gz | Bin 0 -> 13257 bytes l10n/ru/ecolorconf.po | 204 +++ l10n/ru/econtrol.po | 168 ++ l10n/ru/edewm.po | 90 + l10n/ru/edisplayconf.po | 104 ++ l10n/ru/efinder.po | 320 ++++ l10n/ru/eiconman.po | 259 +++ l10n/ru/eiconsconf.po | 72 + l10n/ru/einstaller.po | 71 + l10n/ru/elauncher.po | 180 ++ l10n/ru/emenueditor.po | 135 ++ l10n/ru/epanelconf.po | 127 ++ l10n/ru/erun.po | 52 + l10n/ru/esvrconf.po | 67 + l10n/ru/etimedate.po | 147 ++ l10n/ru/etip.po | 93 + l10n/ru/evolume.po | 78 + l10n/ru/ewmconf.po | 149 ++ l10n/ru/eworkpanel.po | 248 +++ l10n/sk.tar.gz | Bin 0 -> 14714 bytes l10n/sk/ecolorconf.po | 212 +++ l10n/sk/econtrol.po | 192 ++ l10n/sk/edewm.po | 87 + l10n/sk/edisplayconf.po | 104 ++ l10n/sk/efinder.po | 337 ++++ l10n/sk/eiconman.po | 258 +++ l10n/sk/eiconsconf.po | 71 + l10n/sk/einstaller.po | 71 + l10n/sk/elauncher.po | 179 ++ l10n/sk/emenueditor.po | 134 ++ l10n/sk/epanelconf.po | 127 ++ l10n/sk/erun.po | 51 + l10n/sk/esvrconf.po | 66 + l10n/sk/etimedate.po | 147 ++ l10n/sk/etip.po | 94 + l10n/sk/evolume.po | 102 ++ l10n/sk/ewmconf.po | 148 ++ l10n/sk/eworkpanel.po | 259 +++ l10n/sr.tar.gz | Bin 0 -> 12913 bytes l10n/sr/ecolorconf.po | 203 +++ l10n/sr/econtrol.po | 191 ++ l10n/sr/edewm.po | 87 + l10n/sr/edisplayconf.po | 104 ++ l10n/sr/eiconman.po | 249 +++ l10n/sr/eiconsconf.po | 71 + l10n/sr/elauncher.po | 179 ++ l10n/sr/emenueditor.po | 136 ++ l10n/sr/epanelconf.po | 135 ++ l10n/sr/erun.po | 47 + l10n/sr/etimedate.po | 146 ++ l10n/sr/etip.po | 95 + l10n/sr/ewmconf.po | 148 ++ l10n/sr/eworkpanel.po | 257 +++ makeinclude.in | 84 + mkinstalldirs | 40 + tempfile.tmp | Bin 0 -> 1201 bytes 1004 files changed, 88271 insertions(+) create mode 100755 AUTHORS create mode 100755 BUGS create mode 100755 COPYING create mode 100755 ChangeLog create mode 100755 EDE create mode 100755 INSTALL create mode 100755 Makefile create mode 100755 NEWS create mode 100644 README.in create mode 100644 README.patches create mode 100755 configure.in create mode 100755 datas/Makefile create mode 100755 datas/desktop-links/Internet.desktop create mode 100755 datas/desktop-links/Makefile create mode 100755 datas/desktop-links/Terminal.desktop create mode 100755 datas/ede.conf create mode 100755 datas/efltk.conf create mode 100755 datas/icons-16/3floppy_mount.png create mode 100755 datas/icons-16/3floppy_unmount.png create mode 100755 datas/icons-16/Makefile create mode 100755 datas/icons-16/about.png create mode 100755 datas/icons-16/access.png create mode 100755 datas/icons-16/access2.png create mode 100755 datas/icons-16/applix.png create mode 100755 datas/icons-16/archos_mount.png create mode 100755 datas/icons-16/archos_unmount.png create mode 100755 datas/icons-16/back.png create mode 100755 datas/icons-16/back2.png create mode 100755 datas/icons-16/back3.png create mode 100755 datas/icons-16/binary.png create mode 100755 datas/icons-16/blockdevice.png create mode 100755 datas/icons-16/bookmark.png create mode 100755 datas/icons-16/bookmark2.png create mode 100755 datas/icons-16/bookmark_add.png create mode 100755 datas/icons-16/bookmark_add2.png create mode 100755 datas/icons-16/bookmark_folder.png create mode 100755 datas/icons-16/bookmark_folder2.png create mode 100755 datas/icons-16/bookmark_toolbar.png create mode 100755 datas/icons-16/bookmark_toolbar2.png create mode 100755 datas/icons-16/cancel.png create mode 100755 datas/icons-16/cd-record.png create mode 100755 datas/icons-16/cd_mount.png create mode 100755 datas/icons-16/cd_unmount.png create mode 100755 datas/icons-16/cdrom_mount.png create mode 100755 datas/icons-16/cdrom_unmount.png create mode 100755 datas/icons-16/cdtrack.png create mode 100755 datas/icons-16/chardevice.png create mode 100755 datas/icons-16/colorset.png create mode 100755 datas/icons-16/configure.png create mode 100755 datas/icons-16/core.png create mode 100755 datas/icons-16/deb.png create mode 100755 datas/icons-16/decrypted.png create mode 100755 datas/icons-16/desktop.png create mode 100755 datas/icons-16/document.png create mode 100755 datas/icons-16/down.png create mode 100755 datas/icons-16/e.png create mode 100755 datas/icons-16/econtrol.png create mode 100755 datas/icons-16/edit.png create mode 100755 datas/icons-16/editcopy.png create mode 100755 datas/icons-16/editcut.png create mode 100755 datas/icons-16/editdelete.png create mode 100755 datas/icons-16/editpaste.png create mode 100755 datas/icons-16/editshred.png create mode 100755 datas/icons-16/edittrash.png create mode 100755 datas/icons-16/efinder.png create mode 100755 datas/icons-16/ehelpbook.png create mode 100755 datas/icons-16/emenueditor.png create mode 100755 datas/icons-16/empty2.png create mode 100755 datas/icons-16/empty_ascii.png create mode 100755 datas/icons-16/encrypted.png create mode 100755 datas/icons-16/exec.png create mode 100755 datas/icons-16/exit.png create mode 100755 datas/icons-16/file_broken.png create mode 100755 datas/icons-16/file_locked.png create mode 100755 datas/icons-16/fileclose.png create mode 100755 datas/icons-16/filefind.png create mode 100755 datas/icons-16/filenew.png create mode 100755 datas/icons-16/fileopen.png create mode 100755 datas/icons-16/fileprint.png create mode 100755 datas/icons-16/filesave.png create mode 100755 datas/icons-16/find.png create mode 100755 datas/icons-16/folder.png create mode 100755 datas/icons-16/folder_green.png create mode 100755 datas/icons-16/folder_home.png create mode 100755 datas/icons-16/folder_image.png create mode 100755 datas/icons-16/folder_mail.png create mode 100755 datas/icons-16/folder_man.png create mode 100755 datas/icons-16/folder_new.png create mode 100755 datas/icons-16/folder_open.png create mode 100755 datas/icons-16/folder_orange.png create mode 100755 datas/icons-16/folder_red.png create mode 100755 datas/icons-16/folder_sound.png create mode 100755 datas/icons-16/folder_tar.png create mode 100755 datas/icons-16/folder_video.png create mode 100755 datas/icons-16/folder_violet.png create mode 100755 datas/icons-16/folder_yellow.png create mode 100755 datas/icons-16/font.png create mode 100755 datas/icons-16/font_bitmap.png create mode 100755 datas/icons-16/font_truetype.png create mode 100755 datas/icons-16/font_type1.png create mode 100755 datas/icons-16/forward.png create mode 100755 datas/icons-16/forward2.png create mode 100755 datas/icons-16/forward3.png create mode 100755 datas/icons-16/frameprint.png create mode 100755 datas/icons-16/gimp.png create mode 100755 datas/icons-16/gimp2.png create mode 100755 datas/icons-16/gnome-apps.png create mode 100755 datas/icons-16/go.png create mode 100755 datas/icons-16/go2.png create mode 100755 datas/icons-16/gohome.png create mode 100755 datas/icons-16/history.png create mode 100755 datas/icons-16/history_clear.png create mode 100755 datas/icons-16/html.png create mode 100755 datas/icons-16/ica.png create mode 100755 datas/icons-16/image.png create mode 100755 datas/icons-16/info.png create mode 100755 datas/icons-16/java_src.png create mode 100755 datas/icons-16/kcontrol.png create mode 100755 datas/icons-16/kde1.png create mode 100755 datas/icons-16/kde2.png create mode 100755 datas/icons-16/kde3.png create mode 100755 datas/icons-16/kde4.png create mode 100755 datas/icons-16/kde5.png create mode 100755 datas/icons-16/kde6.png create mode 100755 datas/icons-16/kdisknav.png create mode 100755 datas/icons-16/key_enter.png create mode 100755 datas/icons-16/kfm_home.png create mode 100755 datas/icons-16/khelpcenter.png create mode 100755 datas/icons-16/klipper.png create mode 100755 datas/icons-16/klpq.png create mode 100755 datas/icons-16/kmail.png create mode 100755 datas/icons-16/kmultiple.png create mode 100755 datas/icons-16/konqueror.png create mode 100755 datas/icons-16/konqueror2.png create mode 100755 datas/icons-16/konqueror3.png create mode 100755 datas/icons-16/konsole.png create mode 100755 datas/icons-16/konsole2.png create mode 100755 datas/icons-16/konsole3.png create mode 100755 datas/icons-16/kvirc.png create mode 100755 datas/icons-16/licq.png create mode 100755 datas/icons-16/lime.png create mode 100755 datas/icons-16/linuxconf.png create mode 100755 datas/icons-16/lock.png create mode 100755 datas/icons-16/lockoverlay.png create mode 100755 datas/icons-16/log.png create mode 100755 datas/icons-16/logout.png create mode 100755 datas/icons-16/mail_generic.png create mode 100755 datas/icons-16/make.png create mode 100755 datas/icons-16/midi.png create mode 100755 datas/icons-16/mime_empty.png create mode 100755 datas/icons-16/misc.png create mode 100755 datas/icons-16/moc_src.png create mode 100755 datas/icons-16/mozilla-m.png create mode 100755 datas/icons-16/mozilla-mail.png create mode 100755 datas/icons-16/mozilla.png create mode 100755 datas/icons-16/nedit.png create mode 100755 datas/icons-16/netscape.png create mode 100755 datas/icons-16/network.png create mode 100755 datas/icons-16/no.png create mode 100755 datas/icons-16/noatun.png create mode 100755 datas/icons-16/noatun2.png create mode 100755 datas/icons-16/openterm.png create mode 100755 datas/icons-16/opera.png create mode 100755 datas/icons-16/package_application.png create mode 100755 datas/icons-16/package_multimedia.png create mode 100755 datas/icons-16/pdf-document.png create mode 100755 datas/icons-16/quicktime.png create mode 100755 datas/icons-16/real_doc.png create mode 100755 datas/icons-16/reload.png create mode 100755 datas/icons-16/remove.png create mode 100755 datas/icons-16/resource.png create mode 100755 datas/icons-16/rpm.png create mode 100755 datas/icons-16/run.png create mode 100755 datas/icons-16/scanner.png create mode 100755 datas/icons-16/services.png create mode 100755 datas/icons-16/shell1.png create mode 100755 datas/icons-16/socket.png create mode 100755 datas/icons-16/soffice.png create mode 100755 datas/icons-16/sound.png create mode 100755 datas/icons-16/source.png create mode 100755 datas/icons-16/spreadsheet.png create mode 100755 datas/icons-16/stop.png create mode 100755 datas/icons-16/synaptic.png create mode 100755 datas/icons-16/tar.png create mode 100755 datas/icons-16/tex.png create mode 100755 datas/icons-16/tgz.png create mode 100755 datas/icons-16/trash.png create mode 100755 datas/icons-16/trashcan_empty.png create mode 100755 datas/icons-16/trashcan_full.png create mode 100755 datas/icons-16/tux.png create mode 100755 datas/icons-16/txt.png create mode 100755 datas/icons-16/unknown.png create mode 100755 datas/icons-16/unlock.png create mode 100755 datas/icons-16/up.png create mode 100755 datas/icons-16/video.png create mode 100755 datas/icons-16/view_bottom.png create mode 100755 datas/icons-16/view_choose.png create mode 100755 datas/icons-16/view_detailed.png create mode 100755 datas/icons-16/view_icon.png create mode 100755 datas/icons-16/view_left_right.png create mode 100755 datas/icons-16/view_multicolumn.png create mode 100755 datas/icons-16/view_remove.png create mode 100755 datas/icons-16/view_right.png create mode 100755 datas/icons-16/view_sidetree.png create mode 100755 datas/icons-16/view_text.png create mode 100755 datas/icons-16/view_top_bottom.png create mode 100755 datas/icons-16/view_tree.png create mode 100755 datas/icons-16/viewmag+.png create mode 100755 datas/icons-16/viewmag-.png create mode 100755 datas/icons-16/viewmag.png create mode 100755 datas/icons-16/vnc.png create mode 100755 datas/icons-16/widget_doc.png create mode 100755 datas/icons-16/window_fullscreen.png create mode 100755 datas/icons-16/window_list.png create mode 100755 datas/icons-16/window_new.png create mode 100755 datas/icons-16/window_nofullscreen.png create mode 100755 datas/icons-16/wizard.png create mode 100755 datas/icons-16/www.png create mode 100755 datas/icons-16/xmms.png create mode 100755 datas/icons-16/xmms_classic.png create mode 100755 datas/icons-16/zip.png create mode 100755 datas/icons-16/zip_mount.png create mode 100755 datas/icons-16/zip_unmount.png create mode 100755 datas/icons-48/3floppy_mount.png create mode 100755 datas/icons-48/3floppy_unmount.png create mode 100755 datas/icons-48/Makefile create mode 100755 datas/icons-48/access.png create mode 100755 datas/icons-48/access2.png create mode 100755 datas/icons-48/applix.png create mode 100755 datas/icons-48/archos_mount.png create mode 100755 datas/icons-48/archos_unmount.png create mode 100755 datas/icons-48/ascii.png create mode 100755 datas/icons-48/binary.png create mode 100755 datas/icons-48/blockdevice.png create mode 100755 datas/icons-48/cd.png create mode 100755 datas/icons-48/cd_audio.png create mode 100755 datas/icons-48/cd_video.png create mode 100755 datas/icons-48/cdr.png create mode 100755 datas/icons-48/cdrom_mount.png create mode 100755 datas/icons-48/cdrom_unmount.png create mode 100755 datas/icons-48/cdtrack.png create mode 100755 datas/icons-48/cdwriter_mount.png create mode 100755 datas/icons-48/cdwriter_unmount.png create mode 100755 datas/icons-48/chardevice.png create mode 100755 datas/icons-48/colorscm.png create mode 100755 datas/icons-48/core.png create mode 100755 datas/icons-48/core2.png create mode 100755 datas/icons-48/deb.png create mode 100755 datas/icons-48/desktop.png create mode 100755 datas/icons-48/document.png create mode 100755 datas/icons-48/document2.png create mode 100755 datas/icons-48/dvd_mount.png create mode 100755 datas/icons-48/dvd_unmount.png create mode 100755 datas/icons-48/encrypted.png create mode 100755 datas/icons-48/exec.png create mode 100755 datas/icons-48/file_broken.png create mode 100755 datas/icons-48/file_locked.png create mode 100755 datas/icons-48/folder.png create mode 100755 datas/icons-48/folder2_html.png create mode 100755 datas/icons-48/folder2_html2.png create mode 100755 datas/icons-48/folder2_sound.png create mode 100755 datas/icons-48/folder2_video.png create mode 100755 datas/icons-48/folder_cool.png create mode 100755 datas/icons-48/folder_gray.png create mode 100755 datas/icons-48/folder_green.png create mode 100755 datas/icons-48/folder_gz.png create mode 100755 datas/icons-48/folder_home.png create mode 100755 datas/icons-48/folder_home1.png create mode 100755 datas/icons-48/folder_html.png create mode 100755 datas/icons-48/folder_image.png create mode 100755 datas/icons-48/folder_locked.png create mode 100755 datas/icons-48/folder_mail.png create mode 100755 datas/icons-48/folder_man.png create mode 100755 datas/icons-48/folder_orange.png create mode 100755 datas/icons-48/folder_red.png create mode 100755 datas/icons-48/folder_rpm.png create mode 100755 datas/icons-48/folder_sound.png create mode 100755 datas/icons-48/folder_tar.png create mode 100755 datas/icons-48/folder_video.png create mode 100755 datas/icons-48/folder_violet.png create mode 100755 datas/icons-48/folder_yelow.png create mode 100755 datas/icons-48/font.png create mode 100755 datas/icons-48/font_truetype.png create mode 100755 datas/icons-48/font_type1.png create mode 100755 datas/icons-48/fonts_bitmap.png create mode 100755 datas/icons-48/freeBSD_hdd_mount.png create mode 100755 datas/icons-48/freeBSD_hdd_unmount.png create mode 100755 datas/icons-48/ftp.png create mode 100755 datas/icons-48/gimp.png create mode 100755 datas/icons-48/gimp2.png create mode 100755 datas/icons-48/gnome-apps.png create mode 100755 datas/icons-48/go.png create mode 100755 datas/icons-48/go2.png create mode 100755 datas/icons-48/handheld.png create mode 100755 datas/icons-48/hdd_mount.png create mode 100755 datas/icons-48/hdd_unmount.png create mode 100755 datas/icons-48/html.png create mode 100755 datas/icons-48/html2.png create mode 100755 datas/icons-48/ica.png create mode 100755 datas/icons-48/image.png create mode 100755 datas/icons-48/info.png create mode 100755 datas/icons-48/kcalc.png create mode 100755 datas/icons-48/kcontrol.png create mode 100755 datas/icons-48/kdevelop1.png create mode 100755 datas/icons-48/kdisknav.png create mode 100755 datas/icons-48/kfm_home.png create mode 100755 datas/icons-48/khelpcenter.png create mode 100755 datas/icons-48/klpq.png create mode 100755 datas/icons-48/kmail.png create mode 100755 datas/icons-48/kmenu.png create mode 100755 datas/icons-48/kmultiple.png create mode 100755 datas/icons-48/knode.png create mode 100755 datas/icons-48/konqueror.png create mode 100755 datas/icons-48/konqueror2.png create mode 100755 datas/icons-48/konqueror2a.png create mode 100755 datas/icons-48/konqueror3 create mode 100755 datas/icons-48/konsole.png create mode 100755 datas/icons-48/konsole2.png create mode 100755 datas/icons-48/konsole3.png create mode 100755 datas/icons-48/kppp.png create mode 100755 datas/icons-48/kvirc.png create mode 100755 datas/icons-48/licq.png create mode 100755 datas/icons-48/lime.png create mode 100755 datas/icons-48/link.png create mode 100755 datas/icons-48/linux-classic_hdd_mount.png create mode 100755 datas/icons-48/linux-classic_hdd_unmount.png create mode 100755 datas/icons-48/linux_hdd_mount.png create mode 100755 datas/icons-48/linux_hdd_unmount.png create mode 100755 datas/icons-48/linuxconf.png create mode 100755 datas/icons-48/lockoverlay.png create mode 100755 datas/icons-48/log.png create mode 100755 datas/icons-48/mac_hdd_mount.png create mode 100755 datas/icons-48/mac_hdd_unmount.png create mode 100755 datas/icons-48/make.png create mode 100755 datas/icons-48/make2.png create mode 100755 datas/icons-48/message.png create mode 100755 datas/icons-48/midi.png create mode 100755 datas/icons-48/mime.png create mode 100755 datas/icons-48/mime_html.png create mode 100755 datas/icons-48/mime_soffice.png create mode 100755 datas/icons-48/mime_sound.png create mode 100755 datas/icons-48/mime_track.png create mode 100755 datas/icons-48/mime_txt.png create mode 100755 datas/icons-48/misc_doc.png create mode 100755 datas/icons-48/mouse.png create mode 100755 datas/icons-48/mozilla-m.png create mode 100755 datas/icons-48/mozilla-mail.png create mode 100755 datas/icons-48/mozilla.png create mode 100755 datas/icons-48/mshdd_mount.png create mode 100755 datas/icons-48/mshdd_unmount.png create mode 100755 datas/icons-48/nedit.png create mode 100755 datas/icons-48/netscape.png create mode 100755 datas/icons-48/netscape_doc.png create mode 100755 datas/icons-48/network.png create mode 100755 datas/icons-48/network_local.png create mode 100755 datas/icons-48/noatun.png create mode 100755 datas/icons-48/noatun2.png create mode 100755 datas/icons-48/opera.png create mode 100755 datas/icons-48/package_multimedia.png create mode 100755 datas/icons-48/pdf.png create mode 100755 datas/icons-48/php.png create mode 100755 datas/icons-48/postscript.png create mode 100755 datas/icons-48/postscript2.png create mode 100755 datas/icons-48/printer.png create mode 100755 datas/icons-48/quicktime.png create mode 100755 datas/icons-48/real_doc.png create mode 100755 datas/icons-48/recycled.png create mode 100755 datas/icons-48/resource.png create mode 100755 datas/icons-48/rpm.png create mode 100755 datas/icons-48/scanner.png create mode 100755 datas/icons-48/shellscript.png create mode 100755 datas/icons-48/socket.png create mode 100755 datas/icons-48/soffice.png create mode 100755 datas/icons-48/sound.png create mode 100755 datas/icons-48/source.png create mode 100755 datas/icons-48/source_c.png create mode 100755 datas/icons-48/source_cpp.png create mode 100755 datas/icons-48/source_f.png create mode 100755 datas/icons-48/source_h.png create mode 100755 datas/icons-48/source_java.png create mode 100755 datas/icons-48/source_l.png create mode 100755 datas/icons-48/source_moc.png create mode 100755 datas/icons-48/source_o.png create mode 100755 datas/icons-48/source_p.png create mode 100755 datas/icons-48/source_pl.png create mode 100755 datas/icons-48/source_s.png create mode 100755 datas/icons-48/source_y.png create mode 100755 datas/icons-48/spreadsheet.png create mode 100755 datas/icons-48/synaptic.png create mode 100755 datas/icons-48/tar.png create mode 100755 datas/icons-48/template_source.png create mode 100755 datas/icons-48/tex.png create mode 100755 datas/icons-48/tgz.png create mode 100755 datas/icons-48/trashcan_empty.png create mode 100755 datas/icons-48/trashcan_full.png create mode 100755 datas/icons-48/tux.png create mode 100755 datas/icons-48/txt.png create mode 100755 datas/icons-48/unknown.png create mode 100755 datas/icons-48/unknown2.png create mode 100755 datas/icons-48/vcalendar.png create mode 100755 datas/icons-48/vcard.png create mode 100755 datas/icons-48/video.png create mode 100755 datas/icons-48/vmware.png create mode 100755 datas/icons-48/vnc.png create mode 100755 datas/icons-48/widget_doc.png create mode 100755 datas/icons-48/window_list.png create mode 100755 datas/icons-48/wmaker_apps.png create mode 100755 datas/icons-48/wordprocessing.png create mode 100755 datas/icons-48/www.png create mode 100755 datas/icons-48/xmms2.png create mode 100755 datas/icons-48/xmms_classic.png create mode 100755 datas/icons-48/zip.png create mode 100755 datas/icons-48/zip_mount.png create mode 100755 datas/icons-48/zip_unmount.png create mode 100755 datas/mime.conf create mode 100644 datas/mimetypes.conf create mode 100755 datas/programs-links/Applications.directory create mode 100755 datas/programs-links/Casino.desktop create mode 100755 datas/programs-links/Development.directory create mode 100755 datas/programs-links/Emacs.desktop create mode 100755 datas/programs-links/Eterm.desktop create mode 100755 datas/programs-links/GIMP.desktop create mode 100755 datas/programs-links/Games.directory create mode 100755 datas/programs-links/Graphics.directory create mode 100755 datas/programs-links/Internet.directory create mode 100755 datas/programs-links/Kterm.desktop create mode 100755 datas/programs-links/Makefile create mode 100755 datas/programs-links/Mastermind.desktop create mode 100755 datas/programs-links/Mozilla.desktop create mode 100755 datas/programs-links/Multimedia.directory create mode 100755 datas/programs-links/Netscape.desktop create mode 100755 datas/programs-links/Opera.desktop create mode 100755 datas/programs-links/Qubix.desktop create mode 100755 datas/programs-links/Root.directory create mode 100755 datas/programs-links/Settings.directory create mode 100755 datas/programs-links/System.directory create mode 100755 datas/programs-links/UNIX-regular.desktop create mode 100755 datas/programs-links/UNIX.desktop create mode 100755 datas/programs-links/Utilities.directory create mode 100755 datas/programs-links/Vim.desktop create mode 100755 datas/programs-links/Vnterm.desktop create mode 100755 datas/programs-links/WordPerfect.desktop create mode 100755 datas/programs-links/Xemacs.desktop create mode 100755 datas/programs-links/abiword.desktop create mode 100755 datas/programs-links/acroread.desktop create mode 100755 datas/programs-links/alsaplayer.desktop create mode 100755 datas/programs-links/calc.desktop create mode 100755 datas/programs-links/colorsconf.desktop create mode 100755 datas/programs-links/control.desktop create mode 100755 datas/programs-links/cooledit.desktop create mode 100755 datas/programs-links/dialup.desktop create mode 100755 datas/programs-links/ecdplayer.desktop create mode 100755 datas/programs-links/edisplayconf.desktop create mode 100755 datas/programs-links/ehardware.desktop create mode 100755 datas/programs-links/eiconconf.desktop create mode 100755 datas/programs-links/eimgviewer.desktop create mode 100755 datas/programs-links/epanelconf.desktop create mode 100755 datas/programs-links/esoundmixer.desktop create mode 100755 datas/programs-links/etimedate.desktop create mode 100755 datas/programs-links/ewmconf.desktop create mode 100755 datas/programs-links/finder.desktop create mode 100755 datas/programs-links/fluid.desktop create mode 100755 datas/programs-links/fstabedit.desktop create mode 100755 datas/programs-links/gv.desktop create mode 100755 datas/programs-links/lbreak.desktop create mode 100755 datas/programs-links/lynx.desktop create mode 100755 datas/programs-links/lyx.desktop create mode 100755 datas/programs-links/mplayer.desktop create mode 100755 datas/programs-links/notepad.desktop create mode 100755 datas/programs-links/ooffice.desktop create mode 100755 datas/programs-links/postoffice.desktop create mode 100755 datas/programs-links/printers.desktop create mode 100755 datas/programs-links/realplayer.desktop create mode 100755 datas/programs-links/rxvt.desktop create mode 100755 datas/programs-links/sccalc.desktop create mode 100755 datas/programs-links/scrsaver.desktop create mode 100755 datas/programs-links/tips.desktop create mode 100755 datas/programs-links/x11amp.desktop create mode 100755 datas/programs-links/xbill.desktop create mode 100755 datas/programs-links/xdvi.desktop create mode 100755 datas/programs-links/xmag.desktop create mode 100755 datas/programs-links/xmms.desktop create mode 100755 datas/programs-links/xpdf.desktop create mode 100755 datas/programs-links/xsane.desktop create mode 100755 datas/programs-links/xwpe.desktop create mode 100755 datas/programs-links/xxgdb.desktop create mode 100755 datas/schemes/Active.scheme create mode 100755 datas/schemes/Blueworld.scheme create mode 100755 datas/schemes/Brown1.scheme create mode 100755 datas/schemes/Brown2.scheme create mode 100755 datas/schemes/Ede1.scheme create mode 100755 datas/schemes/Ede2.scheme create mode 100755 datas/schemes/Ede3.scheme create mode 100755 datas/schemes/Futuristic.scheme create mode 100755 datas/schemes/Gray1.scheme create mode 100755 datas/schemes/GrayBrown.scheme create mode 100755 datas/schemes/LightBrown.scheme create mode 100755 datas/schemes/Lilola.scheme create mode 100755 datas/schemes/Makefile create mode 100755 datas/schemes/None.scheme create mode 100755 datas/schemes/Tubus.scheme create mode 100755 datas/schemes/TypicalBrown.scheme create mode 100755 datas/startede.in create mode 100755 datas/wmanager.conf create mode 100755 docs/ede/Makefile create mode 100755 docs/ede/authors.html create mode 100755 docs/ede/changelog.html create mode 100755 docs/ede/copying.html create mode 100755 docs/ede/ede-small.gif create mode 100755 docs/ede/ede.png create mode 100755 docs/ede/getede.png create mode 100755 docs/ede/help.html create mode 100755 docs/ede/index.html create mode 100755 docs/ede/logoinvert100.png create mode 100755 docs/ede/style.css create mode 100644 ecolorconf/EDE_FontChooser.cpp create mode 100644 ecolorconf/EDE_FontChooser.h create mode 100755 ecolorconf/Makefile create mode 100755 ecolorconf/ecolorconf.cpp create mode 100755 ecolorconf/ecolorconf.fl create mode 100755 ecolorconf/ecolorconf.fld create mode 100755 ecolorconf/ecolorconf.h create mode 100755 ecolorconf/ecolorutils.cpp create mode 100755 ecolorconf/ecolorutils.h create mode 100755 ecolorconf/edetheme.cpp create mode 100755 ecolorconf/locale/hu.po create mode 100755 ecolorconf/locale/id.po create mode 100755 ecolorconf/locale/messages.pot create mode 100755 ecolorconf/locale/ru.po create mode 100755 ecolorconf/locale/sk.po create mode 100755 ecolorconf/locale/sr.po create mode 100755 econtrol/Makefile create mode 100755 econtrol/econtrol.cpp create mode 100755 econtrol/econtrol.fld create mode 100755 econtrol/econtrol.h create mode 100755 econtrol/icons/behaviour.xpm create mode 100755 econtrol/icons/display.xpm create mode 100755 econtrol/icons/hwinfo.xpm create mode 100755 econtrol/icons/keyboard.xpm create mode 100755 econtrol/icons/mimetypes.xpm create mode 100755 econtrol/icons/newsoft.xpm create mode 100755 econtrol/icons/panel.xpm create mode 100755 econtrol/icons/printer.xpm create mode 100755 econtrol/icons/samba.xpm create mode 100755 econtrol/icons/screensaver.xpm create mode 100755 econtrol/icons/themes.xpm create mode 100755 econtrol/icons/timedate.xpm create mode 100755 econtrol/icons/wallpaper.xpm create mode 100755 econtrol/icons/windowmanager.xpm create mode 100755 econtrol/locale/hu.po create mode 100755 econtrol/locale/id.po create mode 100755 econtrol/locale/messages.pot create mode 100755 econtrol/locale/ru.po create mode 100755 econtrol/locale/sk.po create mode 100755 econtrol/locale/sr.po create mode 100755 ede.spec.in create mode 100755 edeconf.h.in create mode 100755 edelib2/Config.cpp create mode 100755 edelib2/Config.h create mode 100755 edelib2/Icon.cpp create mode 100755 edelib2/Icon.h create mode 100755 edelib2/Makefile create mode 100644 edelib2/MimeType.cpp create mode 100644 edelib2/MimeType.h create mode 100755 edelib2/NLS.h create mode 100755 edelib2/Run.cpp create mode 100755 edelib2/Run.h create mode 100644 edelib2/Util.cpp create mode 100644 edelib2/Util.h create mode 100755 edelib2/about_dialog.cpp create mode 100755 edelib2/about_dialog.h create mode 100755 edelib2/aboutdialog.fld create mode 100755 edelib2/locale/messages.pot create mode 100755 edelib2/process.cpp create mode 100755 edelib2/process.h create mode 100755 edelib2/pty.cpp create mode 100755 edelib2/pty.h create mode 100644 edewm/Atoms.cpp create mode 100644 edewm/Atoms.h create mode 100644 edewm/COMPLIANCE create mode 100644 edewm/Cursor.cpp create mode 100644 edewm/Cursor.h create mode 100644 edewm/Desktop.h create mode 100644 edewm/Events.cpp create mode 100644 edewm/Events.h create mode 100644 edewm/Frame.cpp create mode 100644 edewm/Frame.h create mode 100644 edewm/Hints.cpp create mode 100644 edewm/Hints.h create mode 100644 edewm/Makefile create mode 100644 edewm/Sound.cpp create mode 100644 edewm/Sound.h create mode 100644 edewm/Titlebar.cpp create mode 100644 edewm/Titlebar.h create mode 100644 edewm/Tracers.h create mode 100644 edewm/Utils.cpp create mode 100644 edewm/Utils.h create mode 100644 edewm/Windowmanager.cpp create mode 100644 edewm/Windowmanager.h create mode 100644 edewm/app.xpm create mode 100644 edewm/debug.cpp create mode 100644 edewm/debug.h create mode 100755 edewm/edewm create mode 100644 edewm/locale/fi.po create mode 100644 edewm/locale/hu.po create mode 100644 edewm/locale/id.po create mode 100644 edewm/locale/messages.po.default create mode 100644 edewm/locale/messages.pot create mode 100644 edewm/locale/ru.po create mode 100644 edewm/locale/sk.po create mode 100644 edewm/locale/sr.po create mode 100644 edewm/main.cpp create mode 100644 edewm/mask.xpm create mode 100644 edewm/tests/Makefile create mode 100644 edewm/tests/basic_moveresize.cpp create mode 100644 edewm/tests/basic_moveresize.fld create mode 100644 edewm/tests/demo.ogg create mode 100644 edewm/tests/sound_test.cpp create mode 100644 edewm/tests/testpositions.sh create mode 100755 edialog/Makefile create mode 100755 edialog/edialog.cpp create mode 100755 edisplayconf/Makefile create mode 100755 edisplayconf/conf.cpp create mode 100755 edisplayconf/conf.h create mode 100755 edisplayconf/edisplayconf.cpp create mode 100755 edisplayconf/edisplayconf.fl create mode 100755 edisplayconf/edisplayconf.fld create mode 100755 edisplayconf/edisplayconf.h create mode 100755 edisplayconf/exset.h create mode 100755 edisplayconf/locale/hu.po create mode 100755 edisplayconf/locale/id.po create mode 100755 edisplayconf/locale/messages.pot create mode 100755 edisplayconf/locale/ru.po create mode 100755 edisplayconf/locale/sk.po create mode 100755 edisplayconf/locale/sr.po create mode 100644 efiler/EDE_FileBrowser.cxx create mode 100644 efiler/EDE_FileBrowser.h create mode 100644 efiler/Makefile create mode 100644 efiler/efiler.cpp create mode 100644 efiler/mimetypes.conf create mode 100755 efinder/Makefile create mode 100755 efinder/efinder.cpp create mode 100755 efinder/efinder.fld create mode 100755 efinder/efinder.h create mode 100755 efinder/eglob.cpp create mode 100755 efinder/eglob.h create mode 100755 efinder/glob.c create mode 100755 efinder/globber.c create mode 100755 efinder/globber.h create mode 100755 efinder/icons/block_dev.xpm create mode 100755 efinder/icons/char_dev.xpm create mode 100755 efinder/icons/dir_close.xpm create mode 100755 efinder/icons/dir_open.xpm create mode 100755 efinder/icons/exe.xpm create mode 100755 efinder/icons/fifo.xpm create mode 100755 efinder/icons/go_down.xpm create mode 100755 efinder/icons/go_to.xpm create mode 100755 efinder/icons/help.xpm create mode 100755 efinder/icons/page.xpm create mode 100755 efinder/icons/page_lnk.xpm create mode 100755 efinder/icons/sexe.xpm create mode 100755 efinder/icons/socket.xpm create mode 100755 efinder/icons/up.xpm create mode 100755 efinder/locale/hu.po create mode 100755 efinder/locale/id.po create mode 100755 efinder/locale/messages.pot create mode 100755 efinder/locale/ru.po create mode 100755 efinder/locale/sk.po create mode 100755 eiconman/Makefile create mode 100755 eiconman/edeskconf.cpp create mode 100755 eiconman/edeskconf.fl create mode 100755 eiconman/edeskconf.fld create mode 100755 eiconman/edeskconf.h create mode 100755 eiconman/edeskicon.cpp create mode 100755 eiconman/edeskicon.h create mode 100755 eiconman/eiconman.cpp create mode 100755 eiconman/eiconman.h create mode 100755 eiconman/icons/clean.xpm create mode 100755 eiconman/icons/monitor.xpm create mode 100755 eiconman/locale/hu.po create mode 100755 eiconman/locale/id.po create mode 100755 eiconman/locale/messages.pot create mode 100755 eiconman/locale/ru.po create mode 100755 eiconman/locale/sk.po create mode 100755 eiconman/locale/sr.po create mode 100755 eiconman/propdialog.cpp create mode 100755 eiconman/propdialog.fl create mode 100755 eiconman/propdialog.fld create mode 100755 eiconman/propdialog.h create mode 100755 eiconsconf/Makefile create mode 100755 eiconsconf/eicon.cpp create mode 100755 eiconsconf/eicon.h create mode 100755 eiconsconf/eiconsconf.cpp create mode 100755 eiconsconf/eiconsconf.fld create mode 100755 eiconsconf/eiconsconf.h create mode 100755 eiconsconf/locale/hu.po create mode 100755 eiconsconf/locale/id.po create mode 100755 eiconsconf/locale/messages.pot create mode 100755 eiconsconf/locale/ru.po create mode 100755 eiconsconf/locale/sk.po create mode 100755 eiconsconf/locale/sr.po create mode 100755 eimage/Makefile create mode 100644 eimage/eimage.cpp create mode 100755 einstaller/Makefile create mode 100755 einstaller/TODO create mode 100755 einstaller/einstall.cpp create mode 100755 einstaller/einstall.h create mode 100755 einstaller/einstaller.cpp create mode 100755 einstaller/einstaller.fl create mode 100755 einstaller/einstaller.fld create mode 100755 einstaller/einstaller.h create mode 100755 einstaller/icons/install.xpm create mode 100755 einstaller/locale/hu.po create mode 100755 einstaller/locale/messages.pot create mode 100755 einstaller/locale/ru.po create mode 100755 einstaller/locale/sk.po create mode 100755 ekeyconf/Makefile create mode 100755 ekeyconf/Shortcut_Button.cpp create mode 100755 ekeyconf/Shortcut_Button.h create mode 100755 ekeyconf/ekeyconf.cpp create mode 100755 ekeyconf/ekeyconf.fl create mode 100755 ekeyconf/ekeyconf.h create mode 100755 ekeyconf/ekeys.cpp create mode 100755 ekeyconf/ekeys.h create mode 100755 ekeyconf/locale/messages.pot create mode 100755 elauncher/Makefile create mode 100755 elauncher/elauncher.cpp create mode 100755 elauncher/elauncher.h create mode 100755 elauncher/icons/crash.xpm create mode 100755 elauncher/icons/error.xpm create mode 100755 elauncher/icons/run.xpm create mode 100755 elauncher/locale/Makefile create mode 100755 elauncher/locale/hu.po create mode 100755 elauncher/locale/id.po create mode 100755 elauncher/locale/messages.pot create mode 100755 elauncher/locale/ru.po create mode 100755 elauncher/locale/sk.po create mode 100755 elauncher/locale/sr.po create mode 100755 emenueditor/Makefile create mode 100755 emenueditor/emenueditor.cpp create mode 100755 emenueditor/emenueditor.h create mode 100755 emenueditor/icons/folder.xpm create mode 100755 emenueditor/icons/item.xpm create mode 100755 emenueditor/icons/up.xpm create mode 100755 emenueditor/locale/hu.po create mode 100755 emenueditor/locale/id.po create mode 100755 emenueditor/locale/messages.pot create mode 100755 emenueditor/locale/ru.po create mode 100755 emenueditor/locale/sk.po create mode 100755 emenueditor/locale/sr.po create mode 100755 epanelconf/Makefile create mode 100755 epanelconf/epanelconf.cpp create mode 100755 epanelconf/epanelconf.fl create mode 100755 epanelconf/epanelconf.fld create mode 100755 epanelconf/epanelconf.h create mode 100755 epanelconf/locale/hu.po create mode 100755 epanelconf/locale/id.po create mode 100755 epanelconf/locale/messages.pot create mode 100755 epanelconf/locale/ru.po create mode 100755 epanelconf/locale/sk.po create mode 100755 epanelconf/locale/sr.po create mode 100755 epanelconf/util.cpp create mode 100755 epanelconf/util.h create mode 100755 esvrconf/Makefile create mode 100755 esvrconf/ehacklist.h create mode 100755 esvrconf/escreensaver.cpp create mode 100755 esvrconf/escreensaver.h create mode 100755 esvrconf/escrsaverconf.cpp create mode 100755 esvrconf/escrsaverconf.fl create mode 100755 esvrconf/escrsaverconf.fld create mode 100755 esvrconf/escrsaverconf.h create mode 100755 esvrconf/icons/energy.xpm create mode 100755 esvrconf/locale/hu.po create mode 100755 esvrconf/locale/messages.pot create mode 100755 esvrconf/locale/ru.po create mode 100755 esvrconf/locale/sk.po create mode 100755 etimedate/Date_Time.h create mode 100755 etimedate/EDE_Calendar.cpp create mode 100755 etimedate/EDE_Calendar.h create mode 100755 etimedate/Fl_Date_Time.cpp create mode 100755 etimedate/Fl_Date_Time.h create mode 100755 etimedate/Makefile create mode 100755 etimedate/TODO create mode 100755 etimedate/TimeBox.cpp create mode 100755 etimedate/TimeBox.h create mode 100755 etimedate/etimedate.cpp create mode 100755 etimedate/etimedate.fld create mode 100755 etimedate/etimedate.h create mode 100755 etimedate/icons/world.xpm create mode 100755 etimedate/icons/world2.xpm create mode 100755 etimedate/locale/hu.po create mode 100755 etimedate/locale/id.po create mode 100755 etimedate/locale/messages.pot create mode 100755 etimedate/locale/ru.po create mode 100755 etimedate/locale/sk.po create mode 100755 etimedate/locale/sr.po create mode 100755 etip/Makefile create mode 100755 etip/etip.cpp create mode 100755 etip/etip.fld create mode 100755 etip/etip.h create mode 100755 etip/icons/hint.xpm create mode 100755 etip/locale/id.po create mode 100755 etip/locale/messages.pot create mode 100755 etip/locale/ru.po create mode 100755 etip/locale/sk.po create mode 100755 etip/locale/sr.po create mode 100755 evolume/Makefile create mode 100755 evolume/evolume.cpp create mode 100755 evolume/evolume.h create mode 100755 evolume/locale/hu.po create mode 100755 evolume/locale/id.po create mode 100755 evolume/locale/messages.pot create mode 100755 evolume/locale/ru.po create mode 100755 evolume/locale/sk.po create mode 100755 evolume/prefs.cpp create mode 100755 evolume/prefs.fld create mode 100755 evolume/prefs.h create mode 100755 ewmconf/Makefile create mode 100755 ewmconf/ewm.cpp create mode 100755 ewmconf/ewm.h create mode 100755 ewmconf/ewmconf.cpp create mode 100755 ewmconf/ewmconf.fl create mode 100755 ewmconf/ewmconf.fld create mode 100755 ewmconf/ewmconf.h create mode 100755 ewmconf/locale/hu.po create mode 100755 ewmconf/locale/id.po create mode 100755 ewmconf/locale/messages.pot create mode 100755 ewmconf/locale/ru.po create mode 100755 ewmconf/locale/sk.po create mode 100755 ewmconf/locale/sr.po create mode 100755 eworkpanel/EDE_Config.cpp create mode 100755 eworkpanel/EDE_Config.h create mode 100755 eworkpanel/Makefile create mode 100755 eworkpanel/NLS.h create mode 100755 eworkpanel/aboutdialog.cpp create mode 100755 eworkpanel/aboutdialog.fld create mode 100755 eworkpanel/aboutdialog.h create mode 100755 eworkpanel/cpumonitor.cpp create mode 100755 eworkpanel/cpumonitor.h create mode 100755 eworkpanel/dock.cpp create mode 100755 eworkpanel/dock.h create mode 100755 eworkpanel/icons/about.xpm create mode 100755 eworkpanel/icons/clean.xpm create mode 100755 eworkpanel/icons/desktop.xpm create mode 100755 eworkpanel/icons/ede-small.xpm create mode 100755 eworkpanel/icons/ede_small.xpm create mode 100755 eworkpanel/icons/favourites.xpm create mode 100755 eworkpanel/icons/file.xpm create mode 100755 eworkpanel/icons/find.xpm create mode 100755 eworkpanel/icons/help.xpm create mode 100755 eworkpanel/icons/keyboard.xpm create mode 100755 eworkpanel/icons/lock.xpm create mode 100755 eworkpanel/icons/logout.xpm create mode 100755 eworkpanel/icons/mini_penguin.xpm create mode 100755 eworkpanel/icons/panel.xpm create mode 100755 eworkpanel/icons/penguin.xpm create mode 100755 eworkpanel/icons/programs.xpm create mode 100755 eworkpanel/icons/programs_user.xpm create mode 100755 eworkpanel/icons/run.xpm create mode 100755 eworkpanel/icons/showdesktop.xpm create mode 100755 eworkpanel/icons/shutdown.xpm create mode 100755 eworkpanel/icons/sound.xpm create mode 100755 eworkpanel/icons/sound_penguin.xpm create mode 100755 eworkpanel/icons/tux.xpm create mode 100755 eworkpanel/item.cpp create mode 100755 eworkpanel/item.h create mode 100755 eworkpanel/keyboardchooser.cpp create mode 100755 eworkpanel/keyboardchooser.h create mode 100755 eworkpanel/locale/hu.po create mode 100755 eworkpanel/locale/id.po create mode 100755 eworkpanel/locale/messages.pot create mode 100755 eworkpanel/locale/ru.po create mode 100755 eworkpanel/locale/sk.po create mode 100755 eworkpanel/locale/sr.po create mode 100755 eworkpanel/logoutdialog.cpp create mode 100755 eworkpanel/logoutdialog.fld create mode 100755 eworkpanel/logoutdialog.h create mode 100755 eworkpanel/mainmenu.cpp create mode 100755 eworkpanel/mainmenu.h create mode 100755 eworkpanel/mainmenu_scan.cpp create mode 100755 eworkpanel/menu.h create mode 100755 eworkpanel/panelbutton.cpp create mode 100755 eworkpanel/panelbutton.h create mode 100755 eworkpanel/taskbutton.cpp create mode 100755 eworkpanel/taskbutton.h create mode 100755 eworkpanel/workpanel.cpp create mode 100755 eworkpanel/workpanel.h create mode 100755 exset/exset.h create mode 100755 install-sh create mode 100755 l10n-prepare.pl create mode 100755 l10n/.tar.gz create mode 100755 l10n/fi.tar.gz create mode 100755 l10n/fi/edewm.po create mode 100755 l10n/hu.tar.gz create mode 100755 l10n/hu/ecolorconf.po create mode 100755 l10n/hu/econtrol.po create mode 100755 l10n/hu/edewm.po create mode 100755 l10n/hu/edisplayconf.po create mode 100755 l10n/hu/efinder.po create mode 100755 l10n/hu/eiconman.po create mode 100755 l10n/hu/eiconsconf.po create mode 100755 l10n/hu/einstaller.po create mode 100755 l10n/hu/elauncher.po create mode 100755 l10n/hu/emenueditor.po create mode 100755 l10n/hu/epanelconf.po create mode 100755 l10n/hu/esvrconf.po create mode 100755 l10n/hu/etimedate.po create mode 100755 l10n/hu/evolume.po create mode 100755 l10n/hu/ewmconf.po create mode 100755 l10n/hu/eworkpanel.po create mode 100755 l10n/id.tar.gz create mode 100755 l10n/id/ecolorconf.po create mode 100755 l10n/id/econtrol.po create mode 100755 l10n/id/edewm.po create mode 100755 l10n/id/edisplayconf.po create mode 100755 l10n/id/efinder.po create mode 100755 l10n/id/eiconman.po create mode 100755 l10n/id/eiconsconf.po create mode 100755 l10n/id/elauncher.po create mode 100755 l10n/id/emenueditor.po create mode 100755 l10n/id/epanelconf.po create mode 100755 l10n/id/erun.po create mode 100755 l10n/id/etimedate.po create mode 100755 l10n/id/etip.po create mode 100755 l10n/id/evolume.po create mode 100755 l10n/id/ewmconf.po create mode 100755 l10n/id/eworkpanel.po create mode 100755 l10n/nontranslated.tar.gz create mode 100755 l10n/nontranslated/common.pot create mode 100755 l10n/nontranslated/ecolorconf.pot create mode 100755 l10n/nontranslated/econtrol.pot create mode 100755 l10n/nontranslated/edewm.pot create mode 100755 l10n/nontranslated/edisplayconf.pot create mode 100755 l10n/nontranslated/efinder.pot create mode 100755 l10n/nontranslated/eiconman.pot create mode 100755 l10n/nontranslated/eiconsconf.pot create mode 100755 l10n/nontranslated/einstaller.pot create mode 100755 l10n/nontranslated/ekeyconf.pot create mode 100755 l10n/nontranslated/elauncher.pot create mode 100755 l10n/nontranslated/emenueditor.pot create mode 100755 l10n/nontranslated/epanelconf.pot create mode 100755 l10n/nontranslated/erun.pot create mode 100755 l10n/nontranslated/esvrconf.pot create mode 100755 l10n/nontranslated/etimedate.pot create mode 100755 l10n/nontranslated/etip.pot create mode 100755 l10n/nontranslated/evolume.pot create mode 100755 l10n/nontranslated/ewmconf.pot create mode 100755 l10n/nontranslated/eworkpanel.pot create mode 100755 l10n/ru.tar.gz create mode 100755 l10n/ru/ecolorconf.po create mode 100755 l10n/ru/econtrol.po create mode 100755 l10n/ru/edewm.po create mode 100755 l10n/ru/edisplayconf.po create mode 100755 l10n/ru/efinder.po create mode 100755 l10n/ru/eiconman.po create mode 100755 l10n/ru/eiconsconf.po create mode 100755 l10n/ru/einstaller.po create mode 100755 l10n/ru/elauncher.po create mode 100755 l10n/ru/emenueditor.po create mode 100755 l10n/ru/epanelconf.po create mode 100755 l10n/ru/erun.po create mode 100755 l10n/ru/esvrconf.po create mode 100755 l10n/ru/etimedate.po create mode 100755 l10n/ru/etip.po create mode 100755 l10n/ru/evolume.po create mode 100755 l10n/ru/ewmconf.po create mode 100755 l10n/ru/eworkpanel.po create mode 100755 l10n/sk.tar.gz create mode 100755 l10n/sk/ecolorconf.po create mode 100755 l10n/sk/econtrol.po create mode 100755 l10n/sk/edewm.po create mode 100755 l10n/sk/edisplayconf.po create mode 100755 l10n/sk/efinder.po create mode 100755 l10n/sk/eiconman.po create mode 100755 l10n/sk/eiconsconf.po create mode 100755 l10n/sk/einstaller.po create mode 100755 l10n/sk/elauncher.po create mode 100755 l10n/sk/emenueditor.po create mode 100755 l10n/sk/epanelconf.po create mode 100755 l10n/sk/erun.po create mode 100755 l10n/sk/esvrconf.po create mode 100755 l10n/sk/etimedate.po create mode 100755 l10n/sk/etip.po create mode 100755 l10n/sk/evolume.po create mode 100755 l10n/sk/ewmconf.po create mode 100755 l10n/sk/eworkpanel.po create mode 100755 l10n/sr.tar.gz create mode 100755 l10n/sr/ecolorconf.po create mode 100755 l10n/sr/econtrol.po create mode 100755 l10n/sr/edewm.po create mode 100755 l10n/sr/edisplayconf.po create mode 100755 l10n/sr/eiconman.po create mode 100755 l10n/sr/eiconsconf.po create mode 100755 l10n/sr/elauncher.po create mode 100755 l10n/sr/emenueditor.po create mode 100755 l10n/sr/epanelconf.po create mode 100755 l10n/sr/erun.po create mode 100755 l10n/sr/etimedate.po create mode 100755 l10n/sr/etip.po create mode 100755 l10n/sr/ewmconf.po create mode 100755 l10n/sr/eworkpanel.po create mode 100755 makeinclude.in create mode 100755 mkinstalldirs create mode 100644 tempfile.tmp diff --git a/AUTHORS b/AUTHORS new file mode 100755 index 0000000..254ab50 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,28 @@ +EDE 1.0 team: +Martin Pekar (original author) +Mikko Lahtenaaki (efltk author) +Dejan Lekic (fixes and improvements) +Alexey Parshin (improvements to efltk) + +Current developers: +Sanel Zukan +Vedran Ljubovic + +Translations: +Otto Nemeth +Bambang Purnomosidi D. P. +Mihail Zaripov + +Patches in 1.x series by: +Michael Sheldon +Anthony Wesley +and others! Thank you guys! :) + +We would like to thank everyone that contributed to this excellent project and to +appologize if we left anyone out. + + +EDE is based on the Fast Light Toolkit (FLTK) by +Bill Spitzak and others. + +For questions, bugs, etc. please mail ONLY current developers. diff --git a/BUGS b/BUGS new file mode 100755 index 0000000..cc5649a --- /dev/null +++ b/BUGS @@ -0,0 +1,5 @@ +Curent bug list you can find at: +http://sourceforge.net/tracker/?atid=457858&group_id=49891&func=browse + +Wow, too long link! If you are lazy to copy-paste it, visit http://ede.sourceforge.net and there should be link +for bug form. diff --git a/COPYING b/COPYING new file mode 100755 index 0000000..a43ea21 --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100755 index 0000000..bd420c2 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,212 @@ +1.1 +* general +- Version number is now uniformly handled throught the docs, via configure +* eworkpanel +- Notification Area a.k.a System Tray support - patch by Elleo + fixes +for proper unloading and some KDE support +- Battery Status Monitor with support for ACPI and APM +- Quick Launch Bar (area with programmable icons) - "patch" by dzooli +- Time Format (12h vs. 24h) patch by Elleo +- Numerous layout and redraw issues with panel fixed +- Implemented maximize and restore in taskbar context menu +* edewm +- New code. Too much of things to be noted here. Maybe there should +be a separate changelog for it. +* ekeyconf +- Add support for custom shortcuts - now you can define any command you +want and assign a keyboard shortcut (patch to edewm by AW) +- Fix bug 1329447 - ekeyconf not properly grabbing keyboard (making it +impossible to use already defined shortcuts for something else) +- Some improvements to UI +* etip +- Completely new etip + + +1.0.4 +(NOTE: I would like to thank Google Summer of Code for funding my work on (among else) +EDE 1.0.4. Thanks guys! You rock :) Vedran ) +* general +- improved Russian translations +* econtrol +- re-add ekeyconf (left out by mistake) +* eiconman +- patch by Mike "elleo" - make transparent terminals work +- fix bug with icons getting on top of other windows +* einstaller +- fix bug 949024 "Install new program window smears" +- disable Install button a) when no package is selected b) after installation +* elauncher +- fix compilation on *BSD systems +* etimedate +- fix for systems with no stime() function (*BSD etc.) +* evolume +- disable compilation on systems without ALSA (e.g. non-Linux) +* eworkpanel +- show windows from all virtual desktops - to enable, edit ede.conf +and in section [Panel] add "AllDesktops=true" +- fix compilation on non-Linux systems +- CPU monitor: add support for FreeBSD (previously worked only on Linux and Solaris) +- layout fixes + + +1.0.3 +- fixed silent option for configure script +- fixed "make clean" issue +* locales: +- enable building translations +- fix several translation-related problems (by Nemeth Otto) +- add Hungarian (hu) language (by Nemeth Otto) +- fix for efinder locale installation +* eiconman: +- fix problem with dragging icons +* ecolorconf: +- fix crash and other problems with fonts +- reorganize colors +* edewm: +- disable killing eiconman/eworkpanel using hotkeys +- fixed border redraw when window itself change width or height +- fixed focus issue (again) +- fixed OpenOffice redraw problem +* emenueditor: +- disable editing subdirs +* ehelpbook: +- removed + + + +1.0.2 +* new build system +* netscape and opera replaced with mozilla everywhere +* startede: +- fix: xscreensaver wasn't started +* edewm: +- fixed artefacts on window's borders when window is resized +- dialog windows should now act as dialog windows (no resizing or + animation of resizing) +- dialogs have same titlebar height as other windows +- don't show minimize button in titlebar for dialogs +- better checks is window resizable +- several fixes into Set Size widget +- fix bug with titlebar buttons difficult to click +- configurable keyboard shortcuts +* eworkpanel: +- make applets and menu title configurable +- new panel applet - Show Desktop +- tooltips are showed without clicking on panel itself +- fixed crash with network monitor +- fix bug: panel doesn't autohide when a menu is open +- allow workspace names to be localized +- fix wrong icon filenames in main menu +- a better icon for submenus in the main menu +* taskbar applet: +- fix a bug where window will minimize instead of coming to front +- draw active taskbar button in lighter color +* eiconman: +- fix locale related problems in icon properties +* elauncher: +- new program and url launching framework +* evolume: +- add volume control applet to standard distribution +- replaced evolume icon in panel +* emenueditor: +- fix: invisible entries created with some locales +* keyboard chooser applet: +- get list of keymaps from X, instead of hardcoded +- display descriptive names +- don't show everything at once +- keep a list of recently used keyboards +* ewmconf: +- fix titlebar resizing to zero when changing theme +* ehelpbook: +- scrollbars are now visible +- removed (too much broken) +* etip: +- make etip modal +- don't always show the same tip + + +1.0.1.1 +* fixed desktop crashing when choosing wallpaper (sometimes will chrash due + bug in efltk library) +* fixed logout icon showing +* fixed einstaller icon showing +* complitelly fixed and revised control panel +* etip strings revised +* fixed desktop links in makefile + +1.0.1 +* many unstabile programs from EDE package are removed, + so now only ede-core (old name) is provide as standard distribution +* small fixes with workpanel and run-dialog on it +* compiling and installation scripts improved +* added in configure script debug options +* fixed EDE's X exit, but on some distributions not work well (SuSE 8.1) +* fixed icons showing on Control Panel, ehelpbook, etc. +* fixed screensaver showing in preview window +* small menu decorations :) +* added in main distribution EFinder, and that will become standard part +* now you can with double click start programs from run-dialog on workpanel +* and many, many stability fixes + +1.0beta +* nice EDE library complement what is in FLTK missing +* a lot of changes in ede-core (new icons and support for them thanks Edelib) +* fixed a lot of bugs +* new applications like epdfreader +* heavy changes in filemanager (basics works fine, archive viewing and extracting + works fine, archive creating ok, ftp works but still + a lot to do) +* locale support, still have to create some .po-s +* eprintconf, eprint utilities to manage printers (CUPS needed) +* huge amount of work + +0.6 +* erun separated - keybinding, cause alt+f12 use window manager +* efinder - works, basis implemented keybinding +* bugs fixes +* ede-exec script that support prefixes, see erun +* efstabedit works +* ecdplayer - cddb support(basic) +* window manager is based on icewm code +* new config utilities +* eiconmanager changes +* ehelpbook changes - it is useable with simple html, for help enought. +* configure scripts + +0.5 +* separated icon staff as eiconmanager +* new apps(still devel) - efilemanager, ehelpbook, efstabedit(init staff) +* design changes, icons - hopefully until 1.0 it will be stabilized ... +* font choosing... +* color changing somewhat buggy(not core dump of course) (It is bug in EDE or in latest fltk, something changed ... that is a question) + +0.4 +**************** +* Cd player rewrite +* I add better icons because my draw skills are not very well, still need something but what +* window manager - design changes +* eworkpanel - design changes +* all apps new use dynamic linking, so you can use also theme plugins + ~~~~~~~ +* you can use default X keyboard +* you can jpeg images on desktop (for now using xsetbg(xloadimage package)) +* dialogs changes +* programs name change + +0.3 +**************** +* panel shows tasks +* icons on desktop +* design changes +* begin from code reorganization +* color setting dialog - still todo +* icon on panel that run eqmixer, ... + +0.2 +*************** +* better color settings, still not perfect, some small things + +0.1 +*************** +* initial release + diff --git a/EDE b/EDE new file mode 100755 index 0000000..e69de29 diff --git a/INSTALL b/INSTALL new file mode 100755 index 0000000..5c0c792 --- /dev/null +++ b/INSTALL @@ -0,0 +1,228 @@ +NOTE: Please see README.prealpha + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for variables by setting +them in the environment. You can do that on the command line like this: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Environment Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it cannot guess the host type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the host +platform (i.e., that on which the generated programs will eventually be +run) with `--host=TYPE'. In this case, you should also specify the +build platform with `--build=TYPE', because, in this case, it may not +be possible to guess the build platform (it sometimes involves +compiling and running simple test programs, and this can't be done if +the compiler is a cross compiler). + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Environment Variables +===================== + + Variables not defined in a site shell script can be set in the +environment passed to configure. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..8a46b6c --- /dev/null +++ b/Makefile @@ -0,0 +1,103 @@ +# +# $Id: Makefile 1667 2006-06-14 16:28:31Z karijes $ +# +# Part of Equinox Desktop Environment (EDE). +# Copyright (c) 2000-2006 EDE Authors. +# +# This program is licenced under terms of the +# GNU General Public Licence version 2 or newer. +# See COPYING for details. + +# main file for making + +include makeinclude + +DIRS = common\ + ecolorconf\ + econtrol\ + efinder\ + eiconman\ + eiconsconf\ + einstaller\ + ekeyconf\ + elauncher\ + emenueditor\ + epanelconf\ + erun\ + esvrconf\ + etimedate\ + etip\ + ewmconf\ + eworkpanel\ + edisplayconf\ + edewm\ + datas\ + datas/programs-links\ + datas/desktop-links\ + datas/icons-16\ + datas/icons-48\ + datas/schemes\ + docs/ede $(EVOLUME) + +all: makeinclude + for dir in $(DIRS); do\ + echo "Going to $$dir...";\ + (cd $$dir; $(MAKE) $(MFLAGS)) || exit;\ + done + @@echo "Now please run 'make install' as root" + +# each submakefile should implement install and clean + +.PHONY: clean + +install: makeinclude + for dir in $(DIRS); do\ + echo "Installing from $$dir...";\ + (cd $$dir; $(MAKE) $(MFLAGS) install) || exit;\ + done + +uninstall: makeinclude + for dir in $(DIRS); do\ + echo "Uninstalling $$dir...";\ + (cd $$dir; $(MAKE) $(MFLAGS) uninstall) || exit;\ + done + +clean: makeinclude + for dir in $(DIRS); do\ + echo "Cleaning $$dir...";\ + (cd $$dir; $(MAKE) $(MFLAGS) clean) || exit;\ + done + +depend: makeinclude + for dir in $(DIRS); do\ + echo "Creating dependencies in $$dir...";\ + (cd $$dir; $(MAKEDEPEND) -- $(CXXFLAGS) *.cpp) || exit;\ + done + + +# for maintainers +define make-archive + NAME=`awk '/PACKAGE_TARNAME/ {print $$3}' $1 | sed -e 's/\"//g'`; \ + VERS=`awk '/PACKAGE_VERSION/ {print $$3}' $1 | sed -e 's/\"//g'`; \ + ARCH=$$NAME-$$VERS.tar.bz2; \ + if [ -e $$ARCH ]; then \ + echo "Removing previous package..."; \ + rm $$ARCH; \ + fi; \ + tar -cjpvf $$ARCH --exclude $$ARCH . +endef + +# cvs made some files executable +define fix-chmod + echo "Fixing permissions..."; \ + find . -name "*.*" -exec chmod -x {} \;; \ + chmod +x l10n-prepare.pl; \ + chmod -x AUTHORS BUGS COPYING ChangeLog INSTALL NEWS +endef + +archive: clean + rm -Rf `find . -name "CVS"` + autoconf + rm -Rf autom4te.cache + $(call fix-chmod) + $(call make-archive, edeconf.h) diff --git a/NEWS b/NEWS new file mode 100755 index 0000000..c7ab92a --- /dev/null +++ b/NEWS @@ -0,0 +1 @@ +See ChangeLog \ No newline at end of file diff --git a/README.in b/README.in new file mode 100644 index 0000000..797b57e --- /dev/null +++ b/README.in @@ -0,0 +1,14 @@ +Equinox Desktop Environment version: @EDE_VERSION@. + +To report bugs, proposals or anything else please visit: +http://ede.sourceforge.net + +or project page at: +http://sourceforge.net/project/ede + +For authors info, see AUTHORS. Licence and simular stuff is placed in COPYING. + +Thanks: +- FLTK project +- other projects that help create EDE (source code, icons, inspirations) +- people that sends patches and ideas diff --git a/README.patches b/README.patches new file mode 100644 index 0000000..8ff9305 --- /dev/null +++ b/README.patches @@ -0,0 +1,34 @@ +Quick and dirty document for patchers +------------------------------------- + +Before sending any type of code patches, make sure to +check a few things: + +Tabs +---- +Althought we currently does not require specific coding style (aren't we liberate :) +we are very sensitive on tabs. So _use_ them. This will enable not only to us, but +to others, easier switching between screen resolutions etc. (many modern editors allow +setting tab sizes). Also it is much easier to convert tabs to spaces, than otherwise +(if we change opinion to tabs and switch to spaces only). Boring know, but keep it in mind. + +eFLTK/FLTK knowledge +-------------------- +This is one of the most important things. Make sure you have at least basic understainding of +eFLTK/FLTK, especially for draw() and handle(int) functions. They are very sensitive which +means every move/resize/etc. will call these functions (aka. do not use heavy calculations +inside, reading/writing files etc.) + +Memory +------ +What you allocate, make sure to deallocate too. Some things should not be deallocated +explicitly like some eFLTK/FLTK widgets, but for this, check above. + + +After you read above, applied on code, and decided to send us, please test your code before +sending. Test on everything. Test on power loss, bad food, cold coffee... And, of course +test on speed. If it looks nice, but slow as hell, big as big's mamas house, recosider to +remove these glitches, or if that is not possible, note us like "I want that feature, +have a patch, but it is slooooowww". We will came up with something. + +End, for now... diff --git a/configure.in b/configure.in new file mode 100755 index 0000000..4bbf0ca --- /dev/null +++ b/configure.in @@ -0,0 +1,184 @@ +dnl +dnl $Id: configure.in 1719 2006-08-15 08:56:42Z karijes $ +dnl +dnl Part of Equinox Desktop Environment (EDE). +dnl Copyright (c) 2000-2006 EDE Authors. +dnl +dnl This program is licenced under terms of the +dnl GNU General Public Licence version 2 or newer. +dnl See COPYING for details. + +dnl If edeconf.h.in missing, parse this file with autoheader + +dnl Add kstat support ??? (Solaris) +dnl Should we add AC_HELP_STRING ??? +dnl It seems that RH 7.2 have old autoconf without this macro + +AC_PREREQ(2.16) +AC_INIT(EDE, 2.0.0 alpha, [karijes@users.sourceforge.net]) +AC_DEFINE(VERSION, 195, [Short version number]) +AC_CONFIG_HEADER(edeconf.h:edeconf.h.in) + +dnl $PACKAGE_VERSION is filled from AC_INIT +EDE_VERSION=$PACKAGE_VERSION + +AC_PROG_CXX +AC_PROG_CPP +AC_PATH_PROG(CXX, g++) +AC_PATH_PROG(RM, rm) +AC_PATH_PROG(MSGFMT, msgfmt) +AC_PATH_PROG(MAKEDEPEND, makedepend) + +dnl basic headers +AC_PROG_INSTALL +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_CHECK_HEADER(dirent.h, AC_DEFINE(HAVE_DIRENT_H)) +AC_CHECK_HEADER(ndir.h, AC_DEFINE(HAVE_NDIR_H)) +AC_CHECK_HEADER(sys/dir.h, AC_DEFINE(HAVE_SYS_DIR_H)) +AC_CHECK_HEADER(sys/ndir.h, AC_DEFINE(HAVE_SYS_NDIR_H)) +AC_CHECK_HEADER(linux/soundcard.h, AC_DEFINE(HAVE_ALSA)) + +AC_CHECK_HEADER(time.h, AC_DEFINE(HAVE_TIME_H)) +AC_CHECK_FUNCS(stime, AC_DEFINE(HAVE_STIME)) + +if test "$prefix" = NONE; then + INSTALL_DIR="/usr/local" +else + INSTALL_DIR="$prefix" +fi + +AC_DEFINE_UNQUOTED(PREFIX, "$INSTALL_DIR", [Default installation place. Overwrite if you like.]) + +dnl check X11 +AC_PATH_X +AC_PATH_XTRA + +dnl from old configure.in +AC_CHECK_LIB(X11, Xutf8TextPropertyToTextList, + AC_DEFINE(HAVE_X11_UTF_TEXT_PROP, 1, [Define 1 if XWindows has Xutf extension.]), ) + + +dnl all warnings on +CXXFLAGS="-Wall " + +dnl compile silent ? +SILENT=".SILENT:" + +dnl home directorty (for config.h) +HOME_DIR="`pwd`" +CURR_DIR=" -I. " +CXXFLAGS="$CXXFLAGS -I$HOME_DIR $CURR_DIR" + +AC_ARG_ENABLE(optimize, [ --enable-optimize compile with optimizations], + [if eval "test x$enable_optimize = xyes"; then + CXXFLAGS="$CXXFLAGS -O2" + fi]) + +AC_ARG_ENABLE(debug, [ --enable-debug compile with debug information], + [if eval "test x$enable_debug = xyes"; then + CXXFLAGS="$CXXFLAGS -g3 -D_DEBUG" + fi]) + +AC_ARG_ENABLE(sounds, [ --enable-sounds enable sounds in window manager], + [if eval "test x$enable_sounds = xyes"; then + + AC_CHECK_HEADER(ao/ao.h, [have_ao_h=yes], [have_ao_h=no]) + AC_CHECK_LIB(ao, ao_is_big_endian, [have_ao_lib=yes], [have_ao_lib=no]) + + AC_CHECK_HEADER(vorbis/codec.h, [have_codec_h=yes], [have_codec_h=no]) + AC_CHECK_LIB(vorbis, vorbis_info_init, [have_vorbis_lib=yes], [have_vorbis_lib=no]) + + AC_CHECK_HEADER(vorbis/vorbisfile.h, [have_vorbisfile_h=yes], [have_vorbisfile_h=no]) + AC_CHECK_LIB(vorbisfile, ov_clear, [have_vorbisfile_lib=yes], [have_vorbisfile_lib=no]) + + AC_MSG_CHECKING(sound support) + if eval "test x$have_ao_h = xyes" && \ + eval "test x$have_codec_h = xyes" && \ + eval "test x$have_vorbisfile_h = xyes"; then + AC_MSG_RESULT(ok) + CXXFLAGS="$CXXFLAGS -DSOUND" + LIBS="-lao -lvorbis -lvorbisfile" + else + AC_MSG_RESULT(disabled) + fi + fi]) + + +AC_ARG_ENABLE(silent, [ --disable-silent show compiler output], + [ + if eval "test x$enable_silent = xno"; then + SILENT="" + fi + ]) + + +dnl NLS enabled by default + +AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support],, + enable_nls=yes) + +if eval "test x$enable_nls = xyes"; then + AC_DEFINE(ENABLE_NLS, [], [Define 1 if you want native language support.]) +fi + + + +dnl Check for 'fltk2-config' + +AC_PATH_PROG(FLTK2_CONFIG, fltk2-config) +if test -n "$FLTK2_CONFIG"; then + CXXFLAGS="$CXXFLAGS `fltk2-config --cxxflags`" + LIBS="$LIBS `fltk2-config --use-images --ldflags`" +else + AC_MSG_ERROR([You don't have fltk2 installed. To compile Ede, you will need it.]) +fi + + +dnl Check efltk's version. +dnl Less than 2.0.4 is not supported +dnl [45] will match 2.0.4 and 2.0.5 version + +dnl AC_MSG_CHECKING(efltk version >= 2.0.4) + +dnl EFLTK_VERSION="`efltk-config --version`" +dnl case "$EFLTK_VERSION" in ["2.0."[45]]) +dnl dnl Display 'yes' for efltk version check +dnl AC_MSG_RESULT(yes) +dnl ;; +dnl *) +dnl AC_MSG_ERROR([It seems that you have older efltk version. Required is >= 2.0.4]) +dnl esac + +if test $ac_cv_header_linux_soundcard_h = yes; then + EVOLUME=evolume/ +else + echo + echo "***************************************" + echo "* ALSA WAS NOT FOUND *" + echo "* *" + echo "* Sadly, evolume is ALSA-only at this *" + echo "* moment. It will be disabled. *" + echo "***************************************" + EVOLUME= +fi + + +AC_SUBST(CXXFLAGS) +AC_SUBST(LIBS) +AC_SUBST(SILENT) +AC_SUBST(HOME_DIR) +AC_SUBST(EVOLUME) +AC_SUBST(EDE_VERSION) + +AC_OUTPUT([ + makeinclude + datas/startede + README + docs/ede/index.html + docs/ede/authors.html + docs/ede/changelog.html + docs/ede/copying.html + docs/ede/help.html + ede.spec + ]) diff --git a/datas/Makefile b/datas/Makefile new file mode 100755 index 0000000..123e8de --- /dev/null +++ b/datas/Makefile @@ -0,0 +1,19 @@ +include ../makeinclude + +Data = ede.conf wmanager.conf mime.conf efltk.conf mimetypes.conf +DIR = $(datadir)/ede/.ede + +install: + $(MKINSTALLDIRS) $(DIR) + $(INSTALL_DATA) ede.conf $(DIR) + $(INSTALL_DATA) wmanager.conf $(DIR) + $(INSTALL_DATA) mime.conf $(DIR) + $(INSTALL_DATA) efltk.conf $(DIR) + $(MKINSTALLDIRS) $(bindir) + $(INSTALL_PROGRAM) startede $(bindir) + +uninstall: + $(RM) -r $(DIR) + $(RM) $(bindir)/startede + +clean: diff --git a/datas/desktop-links/Internet.desktop b/datas/desktop-links/Internet.desktop new file mode 100755 index 0000000..0dd9b35 --- /dev/null +++ b/datas/desktop-links/Internet.desktop @@ -0,0 +1,10 @@ +# EFLTK Configuration - Version 2,003000 + +[Desktop Entry] + Icon=kppp.png + X=20 + Y=210 + Name=Connect to Internet + Exec=epppdialer + Name[sk]=Pripojenie do Internetu + diff --git a/datas/desktop-links/Makefile b/datas/desktop-links/Makefile new file mode 100755 index 0000000..be8b908 --- /dev/null +++ b/datas/desktop-links/Makefile @@ -0,0 +1,15 @@ +include ../../makeinclude + +desktopdir = $(datadir)/ede/.ede/desktop + +DESKTOPLINKS = \ + Terminal.desktop + +install: + $(MKINSTALLDIRS) $(desktopdir) + $(INSTALL_DATA) $(DESKTOPLINKS) $(desktopdir) + +uninstall: + $(RM) -r $(desktopdir) + +clean: diff --git a/datas/desktop-links/Terminal.desktop b/datas/desktop-links/Terminal.desktop new file mode 100755 index 0000000..1aee626 --- /dev/null +++ b/datas/desktop-links/Terminal.desktop @@ -0,0 +1,10 @@ +# EFLTK Configuration - Version 2,003000 + +[Desktop Entry] + Icon=konsole.png + X=20 + Y=130 + Name=Terminal + Exec=xterm + Name[sk]=Terminál + diff --git a/datas/ede.conf b/datas/ede.conf new file mode 100755 index 0000000..4858c16 --- /dev/null +++ b/datas/ede.conf @@ -0,0 +1,63 @@ +# EFLTK Configuration - Version 2,000300 + +[Keyboard] + Layout=en + Repeat=1 + ClickVolume=50 + RecentKeyboards=us + +[IconManager] + Label Fontsize=10 + Label Maxwidth=55 + Gridspacing=10 + Label Foreground=7 + Label Background=2037550592 + OneClickExec=0 + +[Panel] + Volume Control=evolume + Time and date=etimedate + AutoHide=0 + Workspaces=true + RunBrowser=true + CPUMonitor=true + SoundMixer=true + VariableWidthTaskbar=false + ShowUsernameOnMenu=true + ShowDesktop=true + +[Desktop] + Wallpaper= + Color=RGB(76,108,178) + Opacity=205 + Use=0 + +[Workspaces] + Count=4 + (null)=9@9 + +[Web] + Browser=mozilla + +[Terminal] + Terminal=xterm + +[System] + UseSudo=false + +[Mouse] + Accel=2 + Thresh=4 + +[Bell] + Volume=50 + Pitch=440 + Duration=200 + +[Screen] + Delay=15 + Pattern=2 + CheckBlank=1 + RadioBlank=1 + RadioPattern=0 + diff --git a/datas/efltk.conf b/datas/efltk.conf new file mode 100755 index 0000000..afb3faf --- /dev/null +++ b/datas/efltk.conf @@ -0,0 +1,23 @@ +# EFLTK Configuration - Version 2,000300 + + +[Images] + State Effects=1 + +[Menus] + Effects=0 + Delay=0 + Subwindow Effect=0 + Effect Type=0 + Speed=1 + +[Tooltips] + Effects=0 + Effect Type=0 + Enabled=1 + Delay=1 + +[MDI] + Animate=0 + Opaque=0 + diff --git a/datas/icons-16/3floppy_mount.png b/datas/icons-16/3floppy_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..e2ecbe6d8fa4a79b1c9eeb69c365248078d76365 GIT binary patch literal 754 zcmVu)cow($N%^Y0SF+1n%zPY{{Q>;AEzMz0fbZYy?gKeI|s*u zHN!AALjVE@tLBRrpZ$-EOGD8N!XSWd2tWWq2q*wa9zA*=tO%sx&ySxNhQM3`(*qDd za05Vsd-vY@zkmOo|3{7>4Eg>2`~Pd#UZUXBrys)&0SF)_nC6(6Vg`^|vu3q}4b080 zWr&VWVYqVR9m9{$pTS~GOpFXHEKCe(X@LytY5`z<00G1l6_xToG&Bz^Id^U+LuY3X z!_=uQ44j;-3|3aL3|(Dy45CsZ4DA1ZFbD{6GK7Y@F?e}ZGcW@U+OuaX13&;V0uBCu z;J_V*nKRoNT3fq;HZX#1D=#l$Fg1%}`2FiI!-Weg8TzJ9W^lAJW^k~tVBqHAU|6&$ zpCLbgo+dy5F~r5q=+S#HUcUS+oDFhfL&N6()ioRbi;7D8FDO{?KR0(NnBCO0 zMFV6JKmaj<0#Q!RfcNp^i=S@Xc*VfQ#maE>=sgB&Yb7wfY11?YQBh}x-@pGb2nz5r z%$}3UU})%?yKC3txj_Bj0Rjjdh(OJtP~y|j5M%fSbTUZu#*G)jUIF>@)2A;Ce0*GB z&8n)Vl|apJfKsLmOBwzH1Q6H-jEs!1SmgxbZ$NK=IeB^B3?3d043d(<4D;vbGQ58M zA`%||OBt3k+-6_^2q2V%1O;rMFai0~!@c!?c=%*6J0Kvd8z>$D#z33RE-C+KXkhpc z5J1=r00BObA?@uuz?y@D^CkfK;XoV+)7<_q3v2*D0HJ#U8E~_+^L>twubMS$R>cA! k|0z)OBe1iP06>5N05Opig-7@V)&Kwi07*qoM6N<$f+Wm9xBvhE literal 0 HcmV?d00001 diff --git a/datas/icons-16/3floppy_unmount.png b/datas/icons-16/3floppy_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..14d339d8561504b347ec20e89f1c026fe9551a32 GIT binary patch literal 728 zcmV;}0w?{6P)u)cow($N%^Y0SF+1n%zPY{{Q>;AEzMz0fbZYy?gKeI|s*u zHN!AALjVE@tLBRrpZ$-EOGD8N!XSWd2tWWq2q*wa9zA*=tO%sx&ySxNhQM3`(*qDd za05Vsd-vY@zkmOo|3{7>4Eg>2`~Pd#UZUXBrys)&0SF)_nC6(6Vg`^|vu3q}4b080 zWr&VWVYqVR9m9{$pTS~GOpFXHEKCe(X@LytY5`z<00G1l6_xToG&Bz^Id^U+LuY3X z!_=uQ44j;-3|3aL3|(Dy45CsZ4DA1ZFbD{6GK7Y@F?e}ZGcW@U+OuaX13&7hl zGQwh&6NtY7y#eOr<#{uBcr-9bN(wW~pP$R{`t^%Q22^klAb`*f00A~2{t5IagRxOA z1HS+t!@hm3KvxCzY}hdEEL6=OApQu%PXPi5B_$#OK2X56x9-Cl0Rjk@0U*H5&d&EQEv;h)kZl3PvOvrQOMEZ@5MTf;ClpoKHz1<`0000< KMNUMnLSTa6OEq%< literal 0 HcmV?d00001 diff --git a/datas/icons-16/Makefile b/datas/icons-16/Makefile new file mode 100755 index 0000000..5af6f92 --- /dev/null +++ b/datas/icons-16/Makefile @@ -0,0 +1,223 @@ +include ../../makeinclude + +iconsdir = $(datadir)/ede/icons + +icons16dir = $(iconsdir)/16x16 + +ICONS16 = \ + about.png \ + access.png \ + access2.png \ + applix.png \ + archos_mount.png \ + archos_unmount.png \ + back.png \ + back2.png \ + back3.png \ + binary.png \ + blockdevice.png \ + bookmark_add.png \ + bookmark_add2.png \ + bookmark_folder.png \ + bookmark_folder2.png \ + bookmark.png \ + bookmark_toolbar.png \ + bookmark_toolbar2.png \ + bookmark2.png \ + cancel.png \ + cd_mount.png \ + cd-record.png \ + cdrom_mount.png \ + cdrom_unmount.png \ + cdtrack.png \ + cd_unmount.png \ + colorset.png \ + configure.png \ + core.png \ + deb.png \ + decrypted.png \ + desktop.png \ + document.png \ + down.png \ + econtrol.png \ + editcopy.png \ + editcut.png \ + editdelete.png \ + editpaste.png \ + edit.png \ + editshred.png \ + edittrash.png \ + efinder.png \ + ehelpbook.png \ + emenueditor.png \ + empty_ascii.png \ + empty2.png \ + encrypted.png \ + exec.png \ + exit.png \ + file_broken.png \ + fileclose.png \ + filefind.png \ + file_locked.png \ + filenew.png \ + fileopen.png \ + fileprint.png \ + filesave.png \ + find.png \ + folder_green.png \ + folder_home.png \ + folder_image.png \ + folder_mail.png \ + folder_man.png \ + folder_new.png \ + folder_open.png \ + folder_orange.png \ + folder.png \ + folder_red.png \ + folder_sound.png \ + folder_tar.png \ + folder_video.png \ + folder_violet.png \ + folder_yellow.png \ + font_bitmap.png \ + font.png \ + font_truetype.png \ + font_type1.png \ + forward.png \ + forward2.png \ + forward3.png \ + frameprint.png \ + gimp.png \ + gimp2.png \ + gnome-apps.png \ + gohome.png \ + go.png \ + go2.png \ + history_clear.png \ + history.png \ + html.png \ + chardevice.png \ + ica.png \ + image.png \ + info.png \ + java_src.png \ + kcontrol.png \ + kde1.png \ + kde2.png \ + kde3.png \ + kde4.png \ + kde5.png \ + kde6.png \ + kdisknav.png \ + key_enter.png \ + kfm_home.png \ + khelpcenter.png \ + klipper.png \ + klpq.png \ + kmail.png \ + kmultiple.png \ + konqueror.png \ + konqueror2.png \ + konqueror3.png \ + konsole.png \ + konsole2.png \ + konsole3.png \ + kvirc.png \ + licq.png \ + lime.png \ + linuxconf.png \ + lockoverlay.png \ + lock.png \ + log.png \ + logout.png \ + mail_generic.png \ + make.png \ + midi.png \ + mime_empty.png \ + misc.png \ + moc_src.png \ + mozilla-mail.png \ + mozilla-m.png \ + mozilla.png \ + nedit.png \ + netscape.png \ + network.png \ + noatun.png \ + noatun2.png \ + no.png \ + openterm.png \ + opera.png \ + package_application.png \ + package_multimedia.png \ + pdf-document.png \ + quicktime.png \ + real_doc.png \ + reload.png \ + remove.png \ + resource.png \ + rpm.png \ + run.png \ + scanner.png \ + services.png \ + shell1.png \ + socket.png \ + soffice.png \ + sound.png \ + source.png \ + spreadsheet.png \ + stop.png \ + synaptic.png \ + tar.png \ + tex.png \ + tgz.png \ + trashcan_empty.png \ + trashcan_full.png \ + trash.png \ + tux.png \ + txt.png \ + unknown.png \ + unlock.png \ + up.png \ + video.png \ + view_bottom.png \ + view_detailed.png \ + view_choose.png \ + view_icon.png \ + view_left_right.png \ + viewmag.png \ + viewmag-.png \ + viewmag+.png \ + view_multicolumn.png \ + view_remove.png \ + view_right.png \ + view_sidetree.png \ + view_text.png \ + view_top_bottom.png \ + view_tree.png \ + vnc.png \ + widget_doc.png \ + window_fullscreen.png \ + window_list.png \ + window_new.png \ + window_nofullscreen.png \ + wizard.png \ + www.png \ + xmms_classic.png \ + xmms.png \ + zip_mount.png \ + zip.png \ + zip_unmount.png \ + 3floppy_mount.png \ + 3floppy_unmount.png + +install: + $(MKINSTALLDIRS) $(icons16dir);\ + for f in $(ICONS16); do\ + echo "Installing $(icons16dir)/$$f";\ + $(INSTALL_DATA) $$f $(icons16dir);\ + done + +uninstall: + $(RM) -r $(icons16dir) + +clean: diff --git a/datas/icons-16/about.png b/datas/icons-16/about.png new file mode 100755 index 0000000000000000000000000000000000000000..3a419c5d74cdebc563a6cc95afad29b62fd34ca1 GIT binary patch literal 797 zcmV+&1LFLNP)3$sV;iWI*iJ>|wgFVEgc6~IM_D0n+0Y~l3!(lKk;;y4kSM!W z*>xGIQb9tB)OgDR3mQn1h6)9v$O?*Guswdwc$^u3_T;jNC<;#Q>gt~RJUUn73|m=Q zkyfik5CjaA;;TD%wA1oNf~%{m5{*Wgn3!OHf1ggL!@-Fe%yDy46oz8Lm@Q@!01?@~JKm2B0CNHEIGj#|QzVFj&J6M)Qz1HBD&8Otoztzr^ z@}*aQN(ge!kotRH*aZVP#+tNl(`1m$?7z b*$eC+m)%psXFQ}K00000NkvXXu0mjf;mdy8 literal 0 HcmV?d00001 diff --git a/datas/icons-16/access.png b/datas/icons-16/access.png new file mode 100755 index 0000000000000000000000000000000000000000..93d1e61a46f057e4a9625f76eb0a300683cb0142 GIT binary patch literal 1113 zcmXX_eM}Q~7=HWVfwX)WP_Dpi9RtncMxmJ!HKS!xM?jsjL^Cp>rO?f3ijHJ%V0%F5 zgn`V=0d8O+amoTg7@}+gudE0R*dQZjehdpLhyg8H>0R5q`|Zs3$NTliljq5s=c#;e z&#vI0s2~6cPJegjetw3%tU!$KayQcPLu}OS)&N`{*}AIgF@MX7(he47nF@+N(;d$T zjlrbPSEL`+8T0q&>kOYC`#paLfM_v&r{?_=cVenEL4;a5_}5y^a&II;Bs*}mD@Y|y zO+C3~{Of&0Y9+hgo7H{Nywv>klXlgs+fxn+Km*s2_yxe`c?McnF@U-J04^`UQwqSt z?=O4^JYEh_UKV^_1~{J&Xo^P9AI)@R$5KZ$scOIQ)Uy@Jw)!&HJ#O)QQ#pGh6tmh$ z9KThn&9NZctm7JzrdYTL!5aQ*!~H|dA7O_2iO|5`j0w;+(f zZAu8!&jGfE033({sOClf_5^{LK_K*VzjO~9g7s|3M2n*Fio1k1B z_79C*KZI`|P`8(TdCBdJ1pOqBaj>%AY>r_6Ln)z{Z$6lTdrCWxNZQ*&82 z)5O`(#n5gfA90z8@0{km+!I5BE3$=}?_Dxn+#s`WC}wZwSPz&`5+gdyQLe3`?!Z{b z-+L!y^W#kp2vct+39Q8DmA8B4lWoTv)uzBiWha+sn9&>b$<#x+<7$=#KS**q+CLYm z{D8P9Y6_{YK~BMIrDgMzr%nspoHY+mo^vTfG>txcL>GUqqc zJI2B;Obm5Czi+hK8WE1m&_M7@AjxwYvG{8)CsLJQ+opvJRoN3rwF9iav0^8F_5w=8 zN0qAOY`2o}D+JQk1l|gLWzqbvGA(A78xG2BS+Xx|LoX8Exw0j^JWlyaU$OtIf$ZAK zme{kkE#`YCt#1tHB;JZXmeglnIbT{Kn-^*^0)#&kXKd%rXflY>*?}=q+Cy2Cc%@2t zHu)!IiQiY>VwwBU`e4`jBqiguE75cYw)^NIYpoESv;R^G3i!`%EcI;Z_EH2V$0fq$ zl>nH2fMDv57bJ)R+U*90W+3^kU_dnD^S}WfilDvgR}Y^}AIEVZJXP`R$#l4+YIKS# zjPC7DM7jC`aeQ40S?UeJo%Up-FF=ZiaiW2ZWQoo|duZt-F&q=qCF|#)GW{R7l|2i$2;2Y92aesjdT(BO*SU=k zUVQ)0%KDc9r~?cD0*C=*!2g>-%~ye%cQPn`-4ng(?}vx~{-c4v-yZ$HzNdYEsJ)cA zh^PXCvOEL>1Q5i4J3!5c7}Q=(HNNrp<;DO1zd!o_|L24M|9=4K@Av=z|8n*J|4(QC z|Nn5{|I5|hFCuJ&9Hpcb!3F>X5DVBDzZtmR9AKEmDlVbU^y@mq@8^sR-~Mqh@bfVP zo%WaE*Y|G>pFe(J5a#{HAST8kUgP$4ZrlxR^*@Fm|Nb#B00a=&0B#w!y^KH(7f``PU^p^xflLKr zc8DehRtW#?I|hcAZx|SOfnI(7h57A|UkvX70tjrt>VrI6{sV2+Qv)h^!NBnJHdHgn zgUnC^fb@ZbK(DAlTzK#*_o>g{n4ba!5ZHkF`Fw}&yyjZT2UO@`!N9O`IRnG7y}%&& z14*r~frieT4%7$?6DvDl%D>9~WX>kuC2Xw!-v9&b7n*C9mn)z}&uhK82 zyH6Mxb{u735C+B!k01lXlSd2;QX&itetrxL?;fyx$*vLYIe3<178l3==Kui&Hb6x| zk>TqPMg}{BKbqxXAEp=?e|2Ku`N!}Zn8AQ)g@Ka~=8b Y0G*X`#%W4kJOBUy07*qoM6N<$g2yr6%>V!Z literal 0 HcmV?d00001 diff --git a/datas/icons-16/applix.png b/datas/icons-16/applix.png new file mode 100755 index 0000000000000000000000000000000000000000..d102eeeabac4079638b7cc86ee9b910a6c28a90d GIT binary patch literal 836 zcmV-K1H1f*P)Hz|X372g@fBa_n`TaKoGcywyBP`Hj zm^N+wf0)Yw0tlx8FS~y*EGb^kz{tn|Hvr^?)2FY2*_M{ZU=siWhy|$cESFhd$D+LH3rdhLQX@eL*+WhCwpAhGN_|5R@ z-E#(pN6ZYjF5LmTf)VHnMux9nzcYOQ{u9iG0e}Dkxvd1KIS@#fefaR60pz!@$A2?C zeei;T=c@q2?F082{s9B^@8ACnzkmN_U}0efVuZs10tjTl1|UuZVm6Q@$oa2Nd}es| z=P8427prFsw%*nZ-+q2! zV7b5z49L$6?@oMT_-6+UVFpwe00a=s1^?Kd@$ufgdXM2T*F6T06e|XMdq;-5ckeLV z=ef_oc$<;o!|gBNK<41!L@@v$fEZzE8t5#h9XpQwRachrzVE{Df-_)t=81CG8&OizP2rvK{t`~&yA^6My O0000InN0^>VQNgS~0b-AZ7+8hE|FM zLs>geGN4W-K}3ou3Y1W4IZc!_z5o(+K1zd)38Z!$+jn;EeD+-zs7fgGouBv7E4{y; zi#N>GtG`8~(csUzZr-_jH+$;Lna}L)jQdRjNphxS*}K={aql;b^&&8|opHTx`SD|? zzfvit3x#!$5H7m9dL9VjI~t3OZs_`Ec*`gZJGFn$|0E_!EXG6}=*9WhM{fX&VI{Q2`IzkQB4z)Jsh z6hdrB+XVvy`x^7}nIB7~5&+F+lT_+@`9;Ek(F19W&QJJW4iOgr6=g+fFJ-eUpLTS- z6;;(=G*!L*ooUv_fY}2o@5lCW1&3JS4-&5}Q(xc5aYa$C6pK$Ut*$N%KR=zp1y1?H g__U|gpZ(6n-<&u~CSO4GdjJ3c07*qoM6N<$f+UiQcmMzZ literal 0 HcmV?d00001 diff --git a/datas/icons-16/archos_unmount.png b/datas/icons-16/archos_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..cac9b099a8f6d26839c29a4e2e441085515f6da0 GIT binary patch literal 816 zcmV-01JC@4P)UA-929z1!_ghUT| z^>NZ7K5XL`=DSzUwt(Ax^rR_{%rqj;sW!EVT0Ve z_dFVn2A>#)_4MV-^o2{8PB?2Bc_V=&xuc5W+vWAjdrWgN5A>~NJl`t6fA4meO8Mzr zZqX}*ht}4PH$pTVkHtKHeOK`Ao!jH}^83n)9$B#}h?WYQ>~?UaqHWVVH1zOAt>zRi zUOZM$dr@a*qKfIJySyR)iFh8LI7O7I&|9OVYsnTJ#X8q zK~=TTb(QW;g|gPhRDXnp(J))=9>Ps66wDb)<_Dfl#V>pM`UcO-vbY6^dcDTJeS0v? z7zg$Ss8_&Rf$`C0fbg<7uj|H1DV=`vljAtTaq2`OL3ZxkMN7ox z^{X6Jr_56M1JRhv);2%3SYUQxcuWm8{3wKUHkC@cLRB~CbGgM+#o|Z#+_|$zk`KS) zLy}-xE8_F3Y~8k*YQ02qvOgP--?}q4HZqdU&Q}0LCX<>|l+a|koNw#w?8*cJ{?-O1 zfa3QN2s(tC6lAZ%FEg_*aFM}?iXj&v{`j_Hru~_d&eywj@ZVwFnlKLP18c3|$fu_y)#>Z1}(`-0tSvCO6%Zu3?H+rxCi@3l%@F!4`)(U!h zc2}pSQoj}o1psQb8p-5u#m@@|27qCp1R%aPR@@s%d}dn)djnWmN`& u383<|&boAU9ggkae{{UPeQz%tJl#K($2So=9Cv2`0000|Ek}WJYW#PzlJX z{{>W>7=H0NGkiN&4b}$`Kv-P>^;L?l6vI@Yfl@%WGDuiV$BV(dWIF>Zw*Xu%Kmaje z(+t$qA}R2DwyYq?HDJ?z$XX{cSd?yMU}9lo`1kuaTs=Slu^?*(Ih}=xVX`>?pB!f9 ze+<_jGBAj%JE&V{t(-4u>htLz&|820F>nBt-T>kF03Zw%kQe_{Cg?JvWpFaH=!m01{=nHX7tTKIsN5g>rz zVX$xEEVdUfzBBy!%gFHa7X!ohpZ^(t{Ql4I?=R46e}I1b2Z<#nCa`ls0rL-}4W@F)-F(Qv$jk^%2n=j&|GqtX z_W$vcS|Il%KmdVVgO;3`*ySUpn-<>vU$*?`e=g0uQ$R60Al3k4bttU~#Gv%S2oONn z3;+XWF{f&|=&S$PGz!lGx!SmrGC%;~Gyv=^QP)alm7LQ+rVffY#Jda)4Gjzc0fg58 zpi&l~-$Blmg9RE0L zFmO*4Wca!M8^g~zUl{-bh=~CU_|NcP?%)4^`~Ls`X93iu1QcQiiL+|4Gw^qdFfa)K zwf%vp1qdJv1O74mH~z=)@4N}OiLx-W$e(}z|L}msIjp%D1p7pR3`U0kKY_+FLev8U z5DS`STSf-Pjk0WVg1`U%Vfgv?7tlHXnK>M}+4!r4|NQ#(i|Nnr-wgjafCe!A{|nUe z7a)M(1^}HL!p_LHT8dSQ;mpVL3{tF;4D!~3EFSxO=KbaP|L+&jus@8y8UC~XXZXVK zgYDY;tFwXHG5`XI1>}~$|Nq9bGO^ARXOUpI@aYo6$Dbb`xaG#J~i^KxYE!{|t=(7#V*5V+IBdBw7Iii0M?u z5uY1dU%dJF_cO!y-`^O%0bTI@*AJl0KtKQb!|)#zj=z8*544@}4NtDKjYuukeK?< z0Cqbo6DPwvU;qIf1rR`t$mxKQg+-1lNO}{GFNZ!OFdck4#qj&vjQi;f|Nfl@*~0)& zK5*~~Ab?O3(*Hky9(`T)(E0ag$rXHld@lbPKptlJ2E@04_$Rhx4-i1u^1|C++n@V? zSp9zM@4t*J3``&oW7rG_00G2|L;Ux@`(M`q)4U+V`=57#Q3!IuA8ZN%0*DX-Ss(_= eh`1C01Q-BANmfEv?FyOz0000wD*>^Xii!%4 zy@P|u&##|8zy0|2-=l{QzP@|+PJoe-QQ`03zc2s&`*#DV?jJ}KKmfrEUVPRp> zq@*NC6H`;EpP%2qx%7%t^Y?!xd-2aj1u`-+0!&Oy%-_C!Q~vq$C*S}7|4#$;`~?Ug zm;s7nVq&88_4S%sT3Vu)&!4=x@4_1q^Mt07HVIy`hb}M=z^c0K7A7Z z^5u&TP~Sy>00J4n2l8`5LV^@fx7f{V7awdp@km51tfya5jFb5(C(92-73uG+Tte(X zFEB8(Ffn}lCC&K$!xyRFzkfXf2mnC4D2M0%BfPHv- z@bVim-N?RPQ9(B5FJFH#eEI&5K}(87=<82;oA2NMfW!IU|Gx}B7zB<>N-$hwV&N1A z2mnCIDvRfm5R4+8`C_xk|&`~Lv>`TqdU>-PZl_Wc0!_5A?< z{sI6E{rLb55DWhi5(fnP{saaB2pouS-@g6w;>_94%-<~-&Fpm;{s1le{^LKxk6-_Q zfd&j}kmdgv!ST!h^fVV2CksD6FUyZ#3`_t406_r0{{sL302BrX2?z}a_uvZq>C@Ke z7)cTs6aoAF0RZsr^8oAW^8o7V^#Jhj_5k(u_yF?m@BlI*1kNxe4&(Uw{P+S0WB?Zn z3k$E5v>b<;Jns`xw$E3NUSqT85D;Qj7iVQSvH#2mb&;P}gxS8m6=wbVj`#o1SDv;K zm!(A5K7RZD^C3V0u>hmy4G=5+`0<0|_dixP4VnL!#l-H^%{~0LQ`k|R$wY(i){<8J zb_NDc8DPrh0Q%+cm(QPmzIpo*n68-a0|XGrTc3f6<0&wOaRO5q)AwHtT)GNO7Ym)< zRjt}^@z?t=e>lE>`NjR|(+?JqC11aOX9YT)_3z(5w}CEy1rR{Ypv1w)$M;@PP>>Ip z(u5@>B!087ak6VD@ITj(VtRb<`CmnUTcIOAfB$C%=7GPze*O9jH0U0XJ_xk2FtHcjulD_}|002ovPDHLkV1g6426+Gg literal 0 HcmV?d00001 diff --git a/datas/icons-16/binary.png b/datas/icons-16/binary.png new file mode 100755 index 0000000000000000000000000000000000000000..aa53b152cf89061fe51042fc2d0824a904a1836d GIT binary patch literal 572 zcmV-C0>k}@P)HehtFF0nVMf!5}2W&$w*adLS*tuyA1$SR5dLSdbN&nyNGW{rivM&!4{x zzkdA&(*GE~eEH76#KZ)Y)c_gtf77PPjB#zg1D2M?AQKotY=8j5Z~@5lzP>eJSAZ2TL6kgv_!_8D zmqA-w8AUxn0AU!=+q(wE8z6e-%uNi@(Jl;g=4=AGh!I6SKmakJ+g@B80(U-)28sXv z{TFN?3k#~R0RjlafbQ;94FCT9XXxo!1&oP5;8=)@b7xq(bQeQfnm+>v2OEk300D$z z94N2~3WC7~fi(a4@sj}*;4Cc6K+S$&gJEF<0{{Vp5e7_5jKDx#4NeDO8-SWYF)?r6 zHZTq1BLjc{VnWy4+q;?}E6X1k-y6ZUf$*$ZTcCl;h!NEQ0faRgkrN6CWMue(0~2N- zG5`o56azrX7-ajDDeD=svjf12LD4p2#wM`*tXZ2eTmTS2Ea77^r5MThlJG6x?f|kbs0000< KMNUMnLSTX*9O32w literal 0 HcmV?d00001 diff --git a/datas/icons-16/blockdevice.png b/datas/icons-16/blockdevice.png new file mode 100755 index 0000000000000000000000000000000000000000..b9c57ed0d73f9655edf3b002f7b6bcfd3d9957f9 GIT binary patch literal 863 zcmV-l1EBngP)r(b+$@|7rK+_IZ+^aGc=qertb_9|@$PN9k^l3CoU}I#f=V9e&U}a@vWd6^@!1#|r z^7YNH!3_TxqV)89orHwsq>+U-`DX@(f2<4)Th85Nxb^6&6i}NCKmfrF z__d3h;SVFrgHHGKzrG66%$JzAGc5UWh~b%V1jE+LTnzF&!0`F^pJCbCKb`s6WHq%YPW2Kl;XSK{P-<|W7!fB=FUARx>(gMo=J6%?FooV*Ob{xCCa-TZ^$ImcfHK{cS3XCJ_U%D@P8 z%Afsb85oZC0kypX2q3rt439cf890=g7)0F}egmWL?EXUxFCPD6c=&C_sfT|=-ifo? zxc~hi&dBg?@mYrNQyPIGb_}TN9Y6pf4EXWs^Us$D_`lvg#qjj$cZN659x?p*!|?aP zhg(~|9nD+$kX=oaomJP9;mgKdKqr7SzXfRn2q1(3-@fsGc=w&*)$7*`-@g0+a+&|1 z`uun9HwK1nK-s5Xf8M$U#0P+Ec9>=m00LMrZg)U@~5`@6q?{9^d>g@Iwkng6pN zeP@^jl)47QU!lrAg8Yq~5&;5;5tbVnfk}~ti9yN7k~Qt!r~h1sF8^5!6utt)-|^)} pfB<3u8Gt2AivTefG1(a)zyPe79pd~ym6HGf002ovPDHLkV1fgUn$iFO literal 0 HcmV?d00001 diff --git a/datas/icons-16/bookmark.png b/datas/icons-16/bookmark.png new file mode 100755 index 0000000000000000000000000000000000000000..5e761587198608815a4625f26923e4c2c59d5ed1 GIT binary patch literal 690 zcmV;j0!{siP)5r00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!L`g(JRCwBA zV88=DRWZzeU(PTepBjJwV#Fo!p^`y>iJ$%c@81jzzux>*l$^-$0h>C20Aj*r!2kaY z1+2RA0&IF(0)PK76yQ<^5I{H$U|?g4XLHbF;Br!C_{Yi=k4qUq0AV%YZ5cxXv#PWL zBj;lVM()Q99O?=RPntv<{{7o6fUXuGfEfREG0gw_k3r!t(64_v*&P0H^D}_h+!2-x z%pxzrivGNmV|YH}0K?zE3=H32d}Lr?=lJmP{-+B-uRQ<=AjZF)4D*8l(j07*qoM6N<$f~cq`1poj5 literal 0 HcmV?d00001 diff --git a/datas/icons-16/bookmark2.png b/datas/icons-16/bookmark2.png new file mode 100755 index 0000000000000000000000000000000000000000..95ed2c71a3bf7bc4c8d137a156a5b6e468e3105d GIT binary patch literal 997 zcmV5r00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#cS%G+RCw9| zK>)u00sF7500H*+0O=$o1PuiSA_o-{3gh16<@CqY>l_jWGXXU-sRkDpA`ANW0RZyw z0Po)7`|+@_v)1+aXBud9>;eEm0KWeO00992{Sgv+3@B_&I^pSz#<}C)MyZ0El z*}44z0*Hm>>J?T7S$PHqHa3VYte+v8e*R=&U;(;_0chCYKMV{XfEu4YVPLrbfPvxR zL!isvGq7>|Pyq-a7N!rMfHnjD$jk&(3&j8b1D*Pdfq|U^;*y_0XMYA7`sx(~fBC`y z0{?)Pd>0h@4-h~s-<~~Z;1&fs{r7K(Mvzn4Sb+vILkt5M@C_OUfBrzc162E$lY`;O zts55r0*K|UAU^{)D1<>y1p$yEkas}N|Njrd|M?r@B@q7cli@#*{tXQ5H&35m0|+3N ztD2fy1utLr=H*}qy6X=_11L6_pxy!72o(DcbjkN`41d3VVPFD^U;6u>;XNbcJ%9jW z+41pXv^X2vQ=?CxxfwWsUikS7VgM*SAfAO7@bf#vU!eDX1HHq@!^3d&`}Yqw9zQ+~ z5J1eUdM5n5`0mYzx1T=RO8#eHX8}6zKgc$qKN&%6U>N)d`u`6Q{{TfH&}B!tc^Gy+ zdp2?Ri|6YB0*DC|NRiW~P2ckIlk@KX|6l(ChCCxs@$a{98GZoqcVPH@`}mRJD=3_R z{(r&2$*}F~*W=5sU+Z7);`$9BfIxA_aHOW@zb6~pnG^5dd$0NW_0csU!GAxQfC(Gu z^dIj&GJFFX^!LXPhA;er4BNSQ-po9HEDh+n*UZ2a2@pU~k3xX;|No~mj~&xq{`z&v z%K!gf+>nxB_%ABVzyeGoKY^)q`rqF#+K(RgPs=ZQxys)8|NqZl82|zZ#Q+ePqoVqy z_1Liq6R%y@ny&T`x(zZe?Dh+@WAV^gL}aV4Isb(Ws8;# TMtJkq00000NkvXXu0mjfja1OS literal 0 HcmV?d00001 diff --git a/datas/icons-16/bookmark_add.png b/datas/icons-16/bookmark_add.png new file mode 100755 index 0000000000000000000000000000000000000000..bdb89110163d71b03b70b9f435b39c870314cefe GIT binary patch literal 670 zcmV;P0%84$P)5r00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!FiAu~RCwBA zV88=DRWZzeU(PTepBjJwV#Fo!p^`y>iJ$%c@81jzzux>*l$^-$0h>C20Aj*r!2kaY z1+2RA0&IF(0)PK76yQ<^5I{H$U|?g4XLHbF;Br!C_{Yi=k4qUq0AV%YZ5cxXv#PWL zBj;lVM()Q99O?=RPntv<{{7o6fUXuGfEfREG0gw_k3r!t(64_v*&P0H^D}_h+!2-x z%pxzrivGNmV|YH}0K?zE3=H32d}Lr?=lJmP{-+B-uRQ<=AjZF)4DcG{1q=rsE&v(; z5d{b!cpwUP0A;uZ3qS0A1559$S2p|@e5S3OHVEy`vf#Ks%h`>Lf z(+?}+jA;c2hW`Kogc6Ovo<6c?VFe|_UknTnelz^K{EK0Q^bLmlH!d>Nx1**d{|b39 z4G=&mN%?uJ=zn3(w+xJ57#W^F`N#0~?f(mZfKe(S#Ap!m;Xgyd1beVLkQX*~JOl?K zKmfrtgA&QZET;djG8z6~i(+_xDU=}rCU?|>A>pVS!+ZSzhX46H6wFaQ7m07*qoM6N<$ Ef>v)CC;$Ke literal 0 HcmV?d00001 diff --git a/datas/icons-16/bookmark_add2.png b/datas/icons-16/bookmark_add2.png new file mode 100755 index 0000000000000000000000000000000000000000..1c1a1ce8cc2960181957944783d9b1cbd28e30ea GIT binary patch literal 961 zcmV;y13vtTP)5r00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#Q%OWYRCw9| zK>)u00sF7500H*+0O=$o1PuiSA_o-{3gh16<@CqY>l_jWGXXU-sRkDpA`ANW0RZyw z0Po)7`|+@_v)1+aXBud9>;eEm0KWeO00992{Sgv+3@B_&I^pSz#<}C)MyZ0El z*}44z0*Hm>>J?T7S$PHqHa3VYte+v8e*R=&U;(;_0chCYKMV{XfEu4YVPLrbfPvxR zL!isvGq7>|Pyq-a7N!rMfHnjD$jk&(3&j8b1D*Pdfq|U^;*y_0XMYA7`sx(~fBC`y z0{?)Pd>0h@4-h~s-<~~Z;1&fs{r7K(Mvzn4Sb+vILkt5M0Q3r@avuYO3{Yr)2w3f3 zP7a1Aw{Bbj2q2cXg8U5Jpb!Q*6$JkLfp`b#d`7uWu+aZ&ISg>{<0k`Sz-|Vh`xxHz zsayjHAZAw&4^xSU57pQ?*g@`s;6J|^7}X~+Fl0#q*`FC0|DJ-dO?ep@Kb&P?Fa+uj zl49^?d1ws~K#aK&5&ZElUOY8oW#wi78Nvp{py&jK2cyk$pvG9BYJDKqf;!{r~^zh-1gJ^UTdtfx`NmG zX~*ZI4CkLQtXk>F2oOL_3}|4Eit3lvW5*^;ymn2uY_@*Kgr(MRF3ZZo<)3~2d~Vr1 jQ%1&Y1}0EK0|+nx%``KHmn{j900000NkvXXu0mjfSVE-W literal 0 HcmV?d00001 diff --git a/datas/icons-16/bookmark_folder.png b/datas/icons-16/bookmark_folder.png new file mode 100755 index 0000000000000000000000000000000000000000..327e478e4624008808e946216f5f534e5f86998b GIT binary patch literal 884 zcmV-)1B?8LP)=8TBaGoV8P#d~a~T;)F$f@lSYU=^JN{w#2Q=#cKL&<>AO=tj zXc#9@`Uf!v0R#{u%#dS`{xSUf%fRsW&wqwrK>Yjfe}?<7IZ+fV{=UF)pVa`Xs{sNC z>>`i@{{03T0`%Q)pdo*NhWz@;z!0JTli?4@;NSlln7+Sfh&b)QuuS79!v_{=hQB~d z_nWNv&u}IJ>}r4j0viPK&L5y@Aj#iA1Al?>KZdQB{xE#|_K)HF_rDC`Kl&NCw1gS> zPc<=2{MOCz?+-jk6@d5wKmdVb?Jv-vzkeZK0^?u*8Giow$MECZe}*4GLw@}D!{Exj zfq^?(i@`^B7X$mR_dqp&VFqacu>e2-K@9?G2Dt`kz;B>8e*FB$@Du2@A3#CYpYIu> zeswX(8GHw-e9gdND#8%^e*%Ls|23FF0zk|G5I~SH`Uf%O=P!th%6~*MXbN0l;1u}D z@LyPv;U7>HhrJe1b%W*9OXpy5lAmU0Kr}K{rh*YAt3zi+cz-%pOu;6|DQiV&A@>E zgOu|AFoF^t!}GtQa7O?H5DPGMDl#ryaUWYS_-H?6SRf6I&SyYZKK{?}`q>`_ei>#4 zK}ALePId+cho{L4w?Neb1P}{2FP(`9gr)}$WP<_>r5yf!{cr#5)GvnP4;XGtyUK9T zU;2-}qa1^U01pF$5kG^>mS+qfKxP005Xc}9;|5ZifCJ`-&pzDcXLvOC3d8a_*CA^5 zKVvvya+hIkkupQF8YhD|RPP6X0D@&Y4p_n>u^9RRb;u8Z00RJ6FlLmNl1DoL0000< KMNUMnLSTYxq=$=8TBaGoV8P#d~a~T;)F$f@lSYU=^JN{w#2Q=#cKL&<>AO=tj zXc#9@`Uf!v0R#{u%#dS`{xSUf%fRsW&wqwrK>Yjfe}?<7Iq_;nb~Qi%j>qH(01$+M z>Bx`8P@=`y5T^zne3H!0GDa;>P6)qqLV^%eK$apJ?98m#6{2^UJc9OlxH8sX0D%nx zdFKz%G?3(Ppu%5Z{EuPlr9TYczWrnP{{1h*j~{;+et!SQz|HWR!CK)L1J}=Q4ASgB z8J;pQC;*Lk01!Z6gZ};l*#hzs1K3-?e*I_o`STyck8l4OegF+o;Q7h$0qF0CAO11q znY?9ivlV7wfAx*Q^zKuJ-X{uHhaNuo01!Y>gMgYrt^peG8|aN6Ktp~4y~h3j8^b)U zOAHc1EDV2HIT${F{ly@xD#O6=^#cRL`&SHpTHFlkj9wk4ix(UK2p~up{eu|t^A|Lr zfrc3|JYY!qx{E>j#B&A)Q85N)1vv&`Nl6BVXD=8SzI|c%|K<$?P>W_D`U{K5J?-FrGTi!1eMaFgAeb<3|QYHlSso=zRa4f$`mY zU=00X`1#LV{00IbZ(08C9$Pf_z_U#)mto|_k_VQx5aqu96*6Y^{jO?Eo z{sRqU1i9|V4~9QL7k&YzyORw6?>zYZ`zJsEfl{UdgUO2fxKghg`+J7ze^)X%et!pa z)o*Zq0lA#{%V&mds%k$`~Oc~ z=;J5G|DQfFoD~-SGn12Z@uo``HvyHL00e*S#E<;9DGub7#i zF!1xsd}iZdn*aOvlJz%lYyryO0OA(_0R+o*AeRW>auFT?v-k%5r00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!W=TXrRCwBA zV88=DRWZzeU(PTepBjJwV#Fo!p^`y>iJ$%c@81jzzux>*l$^-$0h>C20Aj*r!2kaY z1+2RA0&IF(0)PK76yQ<^5I{H$U|?g4XLHbF;Br!C_{Yi=k4qUq0AV%YZ5cxXv#PWL zBj;lVM()Q99O?=RPntv<{{7o6fUXuGfEfREG0gw_k3r!t(64_v*&P0H^D}_h+!2-x z%pxzrivGNmV|YH}0K?zE3=H32d}Lr?=lJmP{-+B-uRQ<=AjZF)4D7dz@GvDQ0DwTqrJ?_SIMNOw zf(!Z&mWZ8VN)xe9E9l^maKh?xM0a-u5Ihh|7GM4P=-me{W)`+z?|}}mkQMlU`|UTd zOFsYl%OKCk#>mI|pY{IR&uomWoZmkD`1g5Nv55pgfB^un@#gdJhPNvK00005r00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!k4Z#9RCw9| zK>)u00sF7500H*+0O=$o1PuiSA_o-{3gh16<@CqY>l_jWGXXU-sRkDpA`ANW0RZyw z0Po)7`|+@_v)1+aXBud9>;eEm0KWeO00992{Sgv+3@B_&I^pSz#<}C)MyZ0El z*}44z0*Hm>>J?T7S$PHqHa3VYte+v8e*R=&U;(;_0chCYKMV{XfEu4YVPLrbfPvxR zL!isvGq7>|Pyq-a7N!rMfHnjD$jk&(3&j8b1D*Pdfq|U^;*y_0XMYA7`sx(~fBC`y z0{?)Pd>0h@4-h~s-<~~Z;1&fs{r7K(Mvzn4Sb+vILkt5M@C_OUfBrzc162E$lY`;O zts55r0*K|UAU^{)D1<>y1p$yEkas}N|Njrd|M?r@B@q7cli@#*{tXQ5H&35m0|+3N ztD2fy1utLr=H*}qy6X=_11L6_pxy!72o(DcbjkN`41d3VVPFD^U;6u>;XNbcJ%9jW z+41pXv^X2vQ=?CxxfwWsUikS7VgM*SAfAO7@bf#vU!eDX1HHq@!^3d&`}Yqw9zQ+~ z5I_tMcI*LKgbHex-~3Ok7(f8AfCC8#&fodS00YOLej-{7Ab^ vF+SM1m0|8TmH#j&!hoeT9|JLB009O7md_e literal 0 HcmV?d00001 diff --git a/datas/icons-16/cancel.png b/datas/icons-16/cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..1cabc6e95d8ef3bc72c9c4fee3d2e0ec13dc8aaa GIT binary patch literal 821 zcmV-51Iqk~P)*`Ev)d z7JvXkHh_tNlXD`2iAfFvJ39jygADlfi-F<$cLvT6A9&`vyRYhh{W^KirAw>-eEka6 z1Q0-sU@zRf$-r>`{yc`ypA#8Aeq>;H_l|*qjSXxw!|&e=Kye0!KYzd)uDyT%yW#QU z#MRrkF9q=d0*DDL>gYI$;mMOkutC?aGcZU=K@55OmVx2fGX@3$0R{$UW(J@d2CYw@ zSmR&3m@UJ=5CqZ+5I_(EWMp!|8ZKXEV33nzV2FufU~qM1V7Pmifq@0+%gjs$hLjWr z29UGgzhlsR`<_#afguN|Qy3tCAYt(C-4}*4XL!Ii9zDvyprOIQ;O-7_fw3{fkjax7 z7+$_)VEFWj;lsN(48K8P#=sy15P$b*Ok`SNWAD>)ORJ08vut`}&J0D^b{7|IMEK0pHN#tlfwTUjxH1C*1K zfx*lS5*9CBfCKd#BNII800Ic&0(SPV|2a89@$vt^nc4sUPoDh$|MBDh|E8w@|2H>7 zTry|Q|Nm@kU^SaLxc)maFdP8603d+CVeswOuisoS6G1Mya|e>BPM?Ng2?>a6K+y^W zAQBjbn z5I~GD1Jcqm?WCk+TD7!vj5Rf-Ii;n4F$nOyWccvmF2mDjw;68Ve9mz9{`=eC-ue>yW&l6{felDbinrC#kzeNNWh0}ZVGb1LVqo}pkAdOu4Iq6NNZ({&V0yrC>C6X) z^=p_u|9sC-+qUrdM34ah0mKAywzM>Ro2QqojD`vu1H=EyaI8RpDc^ZEGkPv1T=!iyF(o`A#Ggr2 zhe4EkKf`}!9)|x6j10f`Gq8aS00LJPbU%ybN+O-x)-Ne=sls z{msB63&b)EH|}sSeE!P)OIlW>3uFL505NUcclaF}Cqvnlr_5iTe`93e7GYvwWDx?U z2_XK%4z%?vko_GPLlO)(ZvSC8aq2UJyn^&3ZT+5oAOipb2%Z;KPP5E^|AV1ILW)&F zSy6;RT1K8hKv09>!)I}Zr!RPc`QSUl=g)6`$jh=$v2%znh2;f+0AfVWjmzd)DzS3% zG<^QVXY=MQhv=s-9Blmj!hglYWZy|jsa}?nmgv#ZG1!Zo8vz0c#Q<^uK!5=NEu~G6 TV1op100000NkvXXu0mjf902Zq literal 0 HcmV?d00001 diff --git a/datas/icons-16/cd_mount.png b/datas/icons-16/cd_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..c7ec935a05d11cd67058924608ec713d03098836 GIT binary patch literal 983 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 T1E&bn00000NkvXXu0mjfow9gr literal 0 HcmV?d00001 diff --git a/datas/icons-16/chardevice.png b/datas/icons-16/chardevice.png new file mode 100755 index 0000000000000000000000000000000000000000..8cc41412a2effc70f33bff094828093ac59d287e GIT binary patch literal 698 zcmV;r0!96aP)2p|*#*jbnuc3pYHaOvTDhL`U?GF-lSkKxO`8w?D$_A@ZNIL{y?D8vwa z^ghG)U;o*F%6UL~00Ial4F3NII+K}^;n}O#415ef7pd{5W%v;m7~43=HpqnqOT7TK)ya0Av6VKqvS ze}+A`elz_3{R8d}fB<4dPKlh7YBsXERuk{vxqa-3v&m>EDW1VtGK8s-FIW{@6$078jI zLqj8`|E%nPxmlQ4XF8kDPSTdC2Sp4J|3Jgv!SMv^ g2Vx<7mIDMB0894l=^|{9`Tzg`07*qoM6N<$g2V?YN&o-= literal 0 HcmV?d00001 diff --git a/datas/icons-16/colorset.png b/datas/icons-16/colorset.png new file mode 100755 index 0000000000000000000000000000000000000000..1c2b54f5468748b9917eab33fe91656046482672 GIT binary patch literal 929 zcmV;S177@zP)I|<=FJ=G;AQp5*rl#r)fB*ht`19v4 z!>?bzf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqj0c#fB<5`Wg8&cMjR3^oAd5|9^Qpgt)Q zr z89uQnF}!5^#qgBn55t9P9~pQBA2aaq3Nx?(z4Y%NB1`}Ri0QwW65F@GU;h36^MZkq z^(_PQyGIOfUW+oE`pwO7g84VY!C$`^PBL*aJb3Vs;qRYc44j+M6a037Wh~+mA zC&TamADMqK0z+F?gyHgc8HUZTRT=K`{9<_f_b0=huRj?6asFZW@#7m9^YZb5V+aNS z0*K|p*N+UJ|Ndck@%tykaiD^mf_A`2U}t#y;Wxu4V0!q?%D^B9)Bw`L$ixVa5hf;t z0RRESa^TflhG#&h-T3u`;SHl0gCHjpg8<`m1_4%nhWCH}Gko~GUCeP;L#4COyRJ}|HX(}E=zD}%Kp zAA_u%JTL}WfH8oYT>t`z=~mI+jX&T2_IUU9%U0IU{~4G+eq~_){E_YP#00000NkvXXu0mjf D{K&6e literal 0 HcmV?d00001 diff --git a/datas/icons-16/configure.png b/datas/icons-16/configure.png new file mode 100755 index 0000000000000000000000000000000000000000..0c95c52c3f454a4f137cd548b0fb5af797c69fec GIT binary patch literal 646 zcmV;10(t$3P)eUDTFPy*gKPsy7Ke~E=0AfNn zu%;$~(aXz?Au_T6=z>2Ce}FFd_4^OQ@4x@BdI2DS7@M2t|HtOfmX-zo85tQFe0^*g ze*Xa)^y@FfFCaa0<_Z+A00a=&1qB7+7=Z`Y>}$*L2Wa!3KM>8ofB(jC0YCu3y$~Dg z2{!~pgEasC4bk-L7mWUkVE{k?ferZo9~jy|n?ggKku*bXM$-K2C#DMk0*D1-00Y>c zAVWZY{sZzey5?WMv3da@fS5qGmz7Oq5ET&sI~nBX-@g%>A#9)_AcKI0N=r+^(*+0s z1P~)AF0HJh{s#tnGbASZ0^{~C&?WzY^nY+XzkmOk;p2y|3{RfEg1X`l!}aTT8D748 z1&$4X00J8Tin49nc7aUOV07*qoM6N<$f}6e$>i_@% literal 0 HcmV?d00001 diff --git a/datas/icons-16/core.png b/datas/icons-16/core.png new file mode 100755 index 0000000000000000000000000000000000000000..6d70f687a23bc9b6b94161a3b83aeb870b712ba0 GIT binary patch literal 980 zcmV;_11tQAP))u00bpQY01yxm04*&o01FEX00II60RH~|0RR900O{%J0L{(M0P5%70E>_Y04yoJ z0|ER1Ci&J9?)TUBEC($5E&_;!fgt$D@b51>!@+Zf419t-Y?1=oP2PU7_4@Vo)^D+I zH>Lvw5Q+gHo1s{nk&#jG@87?lf$U36O#l9Ku(OFje^zAp^3H$$e{VHy_>|ty{LA*> z0zd%44fylt4+A?pySs#hM3j(_Pyo;iJkOs$|NidXyPZ!SJ=$`7_qsSme`5z_@u07d zx$h+?86Dor_W%EPfB<4PG&E#jWo2bEHa70Gv$LBfCnu-R#>U3}>(?(vAZ7!)Li5t) z%l=m`Ur<=TX(t1hg!u(sTh|H(R>7Zt8KoHj0*Hm5pPx}#S-IBI(y|z+fdObE!^e*w z8D77B&G7W;Q*b~6y~A+(_8kUh7S?b5z1_99??(S(U=(HGX8Xhd5I`(EJUnKSl9E** z#UPE}zI|i(@Zkf)t5>fWUc7h##&_@D1$$FcQi54iRh4`5iWv+{%uK+TVqpLXAeI|9 zZiMpk@-l%GfDHKh^(&Zu`}Qrv`}gk|u3o*$@c8j#umR7WK4n*smCFzk5#9Ck=g+So zmjMJ2GZ3_&I(14C=oPRgkd45=V|euF5yO=$R~T;Iyb1OKFr2^v&BV;i!_LOK>Cf*! zuR-Df0mK3fB(dAKZ!^rEJ)1#FN(!v_%a<< z!_3Vi3X45}0Ac~AzNbK12IO2225Epg4HT_l8rcw57M7oX|NQ+6GXNlfnDq4Yc7PZl z1)Q9mU`9AGv`43xxy;RH_dyga;5|NZ^*8fE}M05Sdg@pF^7xcE2!+X}N8 zq#1<4ne6Z1!|&d_?Exn5M?eGqgA4!&AZ7tRJ_evGj>*c(vVZyd)eIQY%$!`DU>C4+ z0KLG$3DW%U`?qiVKfZh43=G6`K+V5lUH}LnMrC;ga0UVel$eCL_m7`HQ$K$Cqy|it z+^oQqCn_TH@c+MmyWhTfvm2N{ZUHs_K+b>w0R{jw&Zo13&<=U{hpjs?PBD?>~k=fBrK3`t=(~ z|6};_Le#00a;tvI{z#9nEZmqfYYe-No?h`!5D2MOg-+ z*f<6*1to^>zy2|RlsXg-Mbh#K7M3iS5{`=pD~AlTS=W^`}X4~t_27numOh{8D;)3u%139D)xgrCs)DR z(}_V;RE**4moE&D4j*PCPClEnZeM&kU^M%kwKDQfWb5*j6rhFJO<{MFBx7P-p}y$>vx9l-+uzV z!3cH%KmdUQ@hbyE^fCs9nZJJiJi^V*&G2T|PKNtCb~60d*JlvZ)n$;guwwY8s>bm7 z?K_6wzyC6@urM?H`vXDf0tjq?4FiKJkTL|Z|M2iJFrPfh@bb_Bh7a%F zGJH98oZ)FyIK!*3Fa~8+b*KSMa037W2LnAb`LITw-82ug}0>!N|zC^w_bh4C01H z4F6WFVt91@1_LV>H-o0AI0G-Q09eCcU~~f2fiVaG1Q6JO^}ry@VPIJESxG7H*RP-8 z0OH{jV$d+P0EWST22fi0_wOG#NuvXR00M`>jsO48Zed{PO8xXX`NfmFz^M8S)&NSR zAk7d1AWlZhdkg>p!~|pP`2T9c3f9RKs@&zpqQ)Cx&iStUUpp4a8Y z#qL)wUp@~r03d)E-oAMb#V@iSy?p(D<%W&_J-xjb1Ld@VSP-Pf-qA7Oz>y>WPn|vc zKQ1nA3Q&j{WB>>Q1Q1J8%S48MK)(wLupClVQMh*R;S|kJ%6=P`Zd3%|eP1u2jg;o0J&!6{M z7#KcHOE+ckZrsZ7;`#HS=N~>W+`Mw-|LxniF9P+k!Tb#nK#UJpF-owh>DzyMC-iIG z#;bqVZhy(h!otE_?8x)qn(y2HClc|TulUWTzI*gYaQEG(`{ys5*8tRa7U=x1AOipb zi1GGXjsw!p;r4$%2{UjoK4)P4|A~R&-DifMcb_qQy7!Xd;<>L3m+t;!c>95Y;Sn3p z*(F!LL;>~Pf(0T#0I@K#GMjPo16{<*!tn1K8^gcPYz&OQ7#NuTeP;On`v=2kmVXSN zc^DYp1N|h$_(uh(M*@iN0`Xsv0RRES^8YU*!~cJ;8263=F>+85p=(nV5ijxPh1nW&l6{vHbhT3}gb+!vF6;Ri7CCzkA5= z<;81;$4~w-+<6Ri_In0~55Ix&26O=<#MS?y7z_Xch=t)VQ0DJfhJT+vGW@*xoZ;h* z4-60PGca6x$iVOv=x<_M z3{PGIBN^!Iw?Lae{b6AE@(-9yfr|fuLLJ$9AOHv;rk5}I{xbjk%E0mW4+AqJBLg$g zcO0xB{{k_P&Bp{uj#5A$vV8}KJtNc{FaQW3Mk#(S_ZWMYZf2(M41YiT2M5P5V15JT zx!*t+`~`a9?{A>CziezX~_5d|s16d9b06_r0{{%E77-|t&H%=))aYq*p0|5H`001K$5C|I>000>m7yz)w z?Ev%m`T*_(Cjiyz2LQwO4FMJ*&;0)4)u00s!dxV@5+TN4wV!0Jh8Z z0Ppnw00I9100sj90Nvo@0N>fo00jW}0OH-!0Is&j0NxUC0(^#$bkx65%RVp#Spon- z0KWeNrMUE||LwjL_5l+h-1j&N&))L@_xb?OfuDa9!4-gXo3k?$h`T6$%{0t@l z{RkTX6Zyjc3-!PcxW@DR0*DbF1uOzaMs8_M<#|EgZ+@^ce0q7CL0nvhfkRk{;l(>v zhHF5BuU|Oy{^HRM7k@t3IRE#b|GHehtFF0nVMf!5}2W&$w*adLS*tuyA1$SR5dLSdbN&nyNGW{rivM&!4{x zzkdA&(*GE~eEH76#KZ)Y)c_gtf77PPjB#xA2Esa6m z1sehoKo|y`IDZSM@juXzzhDD?{rtnAt1i#r?ry>G>C;yr{>E_i>Rq^cfB?ek0*C?s zzy^H({tM`WKMWr}d1+pC$>X2CZi!~Mi0*DFS1t7r42*QjE zXRq94ID7dXTnrlk2p|^Z?24S;k-@VE&v0gQfB*vkRO?d6cR#P>00000NkvXXu0mjf Dh}8Ip literal 0 HcmV?d00001 diff --git a/datas/icons-16/down.png b/datas/icons-16/down.png new file mode 100755 index 0000000000000000000000000000000000000000..28729d78a1b663a6d0330a7c53e8ef2932a125f7 GIT binary patch literal 1097 zcmV-P1h)H$P)wD*>^%nu-Fe zgPpD5w{PEmzIpTJ+vCTNzrB0^QJj&5L-Ft5KQI3M`*#DV?jJ}KKmaj9H8TUTmawp} zXmV15n39pF)u+E)JkOs!`*8ctolif0eErSw@AHR0udZDC{_{7_&!0bEOG`_i=H%r3 z3lKms160Js#N_Jh>oxT?6*v|>G))(k6jfyh8p{I2&tCs$IK6A@d3(OC8Q=e~3VizX ziSx^sFAsnQTm%RpkQewseojb8kkZuD6uWlq?49TDMcydOiKw2x`VrY z2HUsqKyLyK`0?{U12;D}le9D!`=@XJKnDEd=jUht`0=AOKmdUZ;Bjzt5N7!E`OU5^ zYwikgGQMHpmU;+prkO3lW>>M0Y0zdEm|M>92uAAbX+(N>Pe}4T1 zYW@dw1<(K{R)(8Te=?jtdGp`eYUvIq6X7dBM{@$x!)Jg10vW&sa*BkMEQg+&z!N#H z_g7Bc<+0}#7H0kR>kq@fzYGlDzyD!)e&_bj^^Gbs-K->UfByQHI?@nxyL_# z{^k4k@9!U=<{!WWbqXMWKnDEc;^JZlMw7ItsOTR)ej#>kW&WpH;y!oy1Zw90`}glJpyt2dzkk09^ul$300J4nz{kh;UQkew513hmB_t$%GqZBC zYbpx7(3AOlE7+R%sGXt64WP5RfX@E=>({TpKYskU2c!=I4f_iaKwtxSczFH;H9lu$ zWn}{B|mLR^8|t(&&qyM6Ef|NlVt zC>RZa5fuW{zhC`sfC2kpBHmkJF%2$CxUY;(FAr*6C`vUnG6gZp&-`79q zDxLNBLh^}*we2DCZJ*8OJTZ|I&SiNnI!n3v;HiX9+;?wWO`96#rmEHDGj&<8bJ00_ dAHUjdw-~qUF@`*-DR=@3Sx;9#mvv4FO#oX1JqZ8+ literal 0 HcmV?d00001 diff --git a/datas/icons-16/econtrol.png b/datas/icons-16/econtrol.png new file mode 100755 index 0000000000000000000000000000000000000000..9d6316f460b7a461c2da74ba9180a900afea2f7f GIT binary patch literal 839 zcmV-N1GxN&P)&2}&8gurmnTm%7={LbVVFe1A*^VK)be`5rq0fF zjY7Un@Y0DfoKEwskl@9fP2qK!ic=u)%J>UK&K}&%;XRu;``ryCcVFpLiM1)F{(eqr zQ1ID-bBs>R;^@n;YGXwF3Jx~DR>Jo3w6!#{uX`g8(s?d@c~Hn05jx{7bnI#&x1-2k z`5zhUpJ&7RPY8(sDXZwRiVy+Ou+FKTc8nUqZ~fN+(1e8H{tWX&E}dfm?RAnJYj5%* zJC0=v!ls5PHG-<*)9ualY)vwJZ;ET@KNkR+H?LT^auu~LI+avC1UlV+W(Rib@-k~#c>&*@hQ7t7#c^nEu*oa zhJm3pKV9s7)1FpzJw{wXjiWJh*W;f`4$}~HwMGb;I%6{dam!%q8jHIb82I&#9Mh*#c3EL;D0=0A(QpL R?;!vH002ovPDHLkV1n4DiU0rr literal 0 HcmV?d00001 diff --git a/datas/icons-16/edit.png b/datas/icons-16/edit.png new file mode 100755 index 0000000000000000000000000000000000000000..98713acb9f8befd30956996053481c18f7827bd0 GIT binary patch literal 710 zcmV;%0y+JOP)O3LQODjbR2bN-n;MK+rmFHqf!SB+=w`NG_$>;l9r~unVN=RsSkLu8gwqW4_9iWGAv{yuGCD=J!ls2#0xWR^5vMrMlvM(5`!Sg!7~Avy4b>Lay`JiiM#E;z-DS{}a6wyU-*M(*!2;#<7OK~NL z%^%>OA?-#HK@?PIC<>|Ck|1VbJA}04qseqKxifd>&b{ZjD5EJh`0UQh;oje|MmJCPY*4o`0`}>F2 za_hdhdgYPYTj;Mj_C=8ofZt1T^cF+QLk5 z@0+i_%hp%h?)$Hozl@@&8by(gq6jGk?ZbX@E6XjuRv2HgxwX$<8`~%;Io+%=vQ7?1 ziKhcW^VICcD<6Gw{ZwsX4)EpM=U<8A!Envyk5?FHIRIhF08kDKqz;tU>^B5Q zPgLJ}=i=fups4`TH2XbC$K$E6pgY|d0IfWvlqgS9E|*D0eKMOe|9p!)cd*VG;6(`_ zr1<%u*WUv0qyQkdjy%f=w5Cz7V1;CNcaJQy6p9Av34po;xNz>w#-m<;LrRIS6(_4x zw3;)_x9Sv3KtCCAFc^~zhQ$3tw673CJPtZJhqG=)dGg%s$!WIty0kaDv^Tftc4Lf$ za^NAHBS{jZloJ8}2=3nB`Cv<}eP zV^V>C1?`=iSl-0aUix^kedpIdK4?DEke%HgN-3OkI19-j#TfJ71WT6}W8kOBd!|~W z-k70WE@5+rwHD_bd1jGPKGB7za(iVpU%TyzJhS5Hd=fnw3@zZq(K;U`ilPSaGB68> dr+jh1_TPn(90bZ?)G+`6002ovPDHLkV1l{7do%z5 literal 0 HcmV?d00001 diff --git a/datas/icons-16/editcut.png b/datas/icons-16/editcut.png new file mode 100755 index 0000000000000000000000000000000000000000..21c36739398057a6637d18cade4091dec01b5009 GIT binary patch literal 833 zcmV-H1HSx;P)!9XSih< z_Y~+en*fz?feZl%APfWk{Ac*_{~5zC3(udTPR6W(4D1ZQo8lQvyaO5MZkx^h^7mH; zo^r3h>w!vTfS3ayfEcg@BFpwk457dFFns<0i{bybNeutLo?-mIXA%1q1sTTZ%V!ym zeX3^wY48AIaex3~!V<23J@XiL-aM~!hhZfr!?(Bm46i@2FtD=z7d&+Af3=PfgXNE3 z44;AO_<)!lAb>EUrh4U5MoB)FxpUrq(u*=zWa$0*`fvI?^(PL2pXC3ZWsrJ(jp1YF za)t?@*aqTX00D$yfF$?#Mc$4IA(MB0XZXj+#PEfU`+xia(N#rPKJooyVPL%Qp5f)% z2Mm{iN*{n?9Uy?<2Gp;-#U{?fw8FzlA@JZsCWfc4{xGnzfMSZ7>G?N?mqiyCwgNey zq0#pdh+hKncYpwb8z8~QvckhbHt^U}W`@#9$1W?1{1;_qR+ixW|DEA46UT3;hQ~k* z3cx>5{2w5I;DN}-&*6FMISWJnr1Q64Pqm&U#`)vZ-+wUKe;`eNLCFK=caR`R1|Wdo zE_nLtFUQRFm#(~-f4|Ey6#;-eh@U} zVWb;?078z&Pf$OC0_@lB$DD889O|iKxV-Zokbeh=-(zzDK!5=N77`Om11sL<^ivMlG!bQOTw;#($?!z4!zl>jB2F@~+y4#%e^IZ>S|?i25zPY3=4LAWY}_*mqF>xHHII5{xfiL zvNJqn@L;Ikb)R9m@dAbnPG+wyTnr3A19k%Sz5^Km5I`&p|NnkxVED=T`}+?DS)5dYVA zhMzzg2NMAX7c(XXhVRdT(k~cZ-havP>FG;`pHIFqod2fC@J)b$fkT3Um*xHazki@! z00P@FAN4U3=F&+zZw4g z`OUz__=kbz?|%lH_~sl2i_&HWW>yw}0Ac~V;~&s?W+3zbe+GsRcNrKy-3L32k&Tn# zH_)wY%#1)o7#P@@7#YsL_|5SA#a{-=u&$ctFE3mG2q1_746Hy``~$l43B(obz%b$h z;yGDG-`K+Q}{ zV9notGBA7u#?`ye{~6wX`oq8q6zAmts{7Bt2oONfKm>-)XQ1Z4z(8bTh8O}08?ZqT zD}MX{N&^k!=452x1nT1W3UV3)13&;l4EXa2h~EOk0%*`*pvpf$>wvKWjvWSw86Yq4 zvID)r3<(p~pAdrq0*Hl&o0XH1lbeA-LJz3%3lRSRM(GcRe_!|+*ce1XZeaKfG!y83 zhQEJ-(m)0)BiMIf01!Yd0qLvD92NFg|Ni?Im@0okLJa7(zu$lVf3K{;?~l4CsKB>o3E} zzBYgWVua;Nka=iIU};_ml43zYh9U>b*KYs<3;>)ZC+|Q#8AJd8002ovPDHLkV1hns BtAhXl literal 0 HcmV?d00001 diff --git a/datas/icons-16/editshred.png b/datas/icons-16/editshred.png new file mode 100755 index 0000000000000000000000000000000000000000..8d65bf9fe028b0323418cc049ab210cc7d6d45d3 GIT binary patch literal 526 zcmV+p0`dKcP)0h>ug zK~#90eUd$I6G0G$pV_@Lf**h^{sjdTmOu~*A<{26h6F(LCSC94X|tSJa_LR4cGBAq1RoiQFy0l3u3F*8I2 zb%NTe-`0Hasr<%t7Wn?-CnCbZ;V~k@(eW=t1QBTm)Zd~BuFtK2>KE!}S}SO5ZT3N0 z&6|qqv3$gSQPM9;?%eJzObV}Fzn$lcc=PVV8bF%#?VY{l#*5vj(#)HHzjjK(0We5q Q82|tP07*qoM6N<$f|+^Z$^ZZW literal 0 HcmV?d00001 diff --git a/datas/icons-16/edittrash.png b/datas/icons-16/edittrash.png new file mode 100755 index 0000000000000000000000000000000000000000..32e3d1e308ad23dbab1d2b8ec51a92b513babc97 GIT binary patch literal 832 zcmV-G1Hb%004R=004l4008;_004mK004C`008P>0026d000+nm#LZ50008Z zNkl-Lcpy>DSUlw1!e02e0?$4h;9r^a{`}yC$e;;RMW&KrBQoNY~ z4FCiXBglX&*RJj4a+&kP^mzke+# zB%EDSQ@tA50Du5ux^(H%e+4-?x2MmZf;IpC{fFV#&tD9G{{Cb5|L-qQ$$y5w|A6fO z45Bx0USAm&7XBaE0Du5ux_0dv13NoA0}C??!(X7LzkmNS{QLJGr~ycWya!|hoe5@t z`}&RX&70RKUH}LnmS4Yr|2ui|1e1`U5QCDE63_*|8Q#Bt55ylBUcY|D@axwv2CjGS z7~Z{m&+z@n5A+~l00(gh?81CM?$MEORZw6q%F?|329q9KjK=1qn zYJLX{m(L78fCh+&h@uz(5I{_ciHUCK&YlGZ)=!{UI2c%2*%%lY8Gr@>!{WzJut6aF z=FJ-hE>13nRjXDqA{zh@KujP)RaKS2+1Z)F%E}Vx|9=e3%*^0$;pX9C;N#;58p;Y5 z`wI?KQ~(e_U;{v!K+XeUaJm4Y|Nnpi_YX|-@$oUpNXuYo1_6KoVgV5#O(182oDE`w zFeoPe0d4#Pj1^G8f-uNc=l~#qAO-;8=g*&!4EP5z1Q@L#3=;nVOi&;i9RLIn*Z@YL zlYaxF3mByg5CdW1^bd?7X#+wtGBSenz)b=OAQp(S|G-rE2^{ATFZ}~+`1co>3jh2C z+YE{&s0)IC_$?6M2jWKn0mK5elHu#uZwx-G`0*pd+qZB2zyI)|3#c3vmtTSSE)YKf z2q1871o{ivORPZ53&h+&%)!6_4-k<1zX37GpPzvkl&=2+1Q-CKnyiYk6ysw60000< KMNUMnLSTaPU~88E literal 0 HcmV?d00001 diff --git a/datas/icons-16/efinder.png b/datas/icons-16/efinder.png new file mode 100755 index 0000000000000000000000000000000000000000..f2b60daa7d94681ae7a9456c5b226d1c9278ad94 GIT binary patch literal 996 zcmVG|CEQHm;JmjKZne}fB%0nK*2wt^v^#Gj6Z(FXy7jpfB5$Q|MiET|37^5^M7th-9n%~4w!y`075a~E|LNN zfX)D65cv8FWWcBYZ$5ng{}aeBscv5m)XNRh4-h~sFoRfFSr}ND85w?l|G{we>O+QK zzyC0>bFeXpi10CpNQg0TbFnepdGwm$KLaC!Pe@|K$1lIQXHTq;0SF+t0nZ*jWBB`p zo8idACkz6z(hTx4;tU)>17Cmm%JAmxJq9UxSq33NL54?9Uo-sq|Bpe>*v5mEjl&rr zfZzrk-g!VwTw0Pt$=;4Z*;JZA04T!>6laqZW_W(@CBw5vPZ&4_gc*3aIf1TaXSn_U z57WPYf4Kny2yVcyAKz1c@X7G=NJ%q%{KUZUhaG4D6EFsVvG9dUgyHYYj|`%$Um3W# zxPS(*F|e|-fP)VpfZzuF`TN)4?ROrAw{I92n1PY>jT01y3=Cg^><{0V7&!iLGDtBq zFtD?;f(>9{W?}#(0Du5uf*J7j%eVJz|GqK^03(PO=yrZKU@!w|HlQlTKa33je|=+M zVq|1sV`F7tXJcVtW@2OjMjrz}0KpBoe&h72&krvDXZrJ*K~a{0L0*i3K}mvvK|z{< zL5TT11IOPl44nLe49v{TK+QlynIKvL0tjxvo%?6@Nr^JOKE7ci!=20b85qC)0OOap zA22*Vcbehbx8K01I>NyC`!fR*(BnY+!Cn9eAb1!=#%KMHjt}_%@x@Dq13Ql}Tsh9e zz`?=JAi&SdAR#Ki@b=j{L>buSSs1?F?PB=z%@F7emVW>N1oy(XZ(kW8 z4g-cXD>H+rAP<9>5Ela{Fdzj4co|e;S25f=^N!)q{c{XFN?Z(j42xNmh5zva1Q6T> zUq5~Pf9>PzpEqy)0_H$Qu>b!30|zu1GqQ3syb>;BxVmL z4G8r%|MKhCZ~vb^f9WwWGQz?L4!{CTY=0%V{_?+n_8^;GH%INtXWc&l0R{j?zG3ug S55Zvo0000#tZa-Ov!cK{K`$Y?{lRSk2n&J zyVNu`)ZgupXwV1y;kqpitNNFU>UHz<7hUAqc4L>#r0&zO*dhkdK@438&rLiE9(4S3 zzOz?3jpql{#s**xc3^!u0V`v@+tB@xZm*sL%GnhV+Z9;;0_Ouuo@f? zq{D9sjmGM#GBKB5N;J0qd2bVGG)O2Ux6%2@UPPT!b04r;+mjb+$P;v)$uJj~hi7U=`TZp^JY)qz@WQq0bvb2<1 zZCL!6UcqAR)U_9Aw1X@qB1ET(h$pwNyC#=N9y6h~?4Xb<=dp3QOR&7ts(O&4IQ0QR z%+2u{gHz19rL>ALp#8TJV`~ljB+xe%ei{N}V>7(Hxwg-QZ(64}V8qS}wg|Qj3`X#C zrm(ww?*0QTixqZFPC&!+p4l!l)%gEPbR6(rfm8eYZ-^)(#snjxz=G>x)Q>l)TGlH= z-JMtrufS-RXG(&DI{<-UFuA$_aq~;xyriHCb680X6fyu zLCBLx5|$CJdL%NbXVId6BxMoE58{(T+%w8s1n>5-iVO|f9&;`#4A-VhWL(`1t3@9+ zGc(90G^x+}^NL5FHf^-TcBP)zjdpTLDh>+}I`%6>X22@1(YPVliK!b>$@r`EEDm;b q3jIhDf54>e$PeliK2_OD@VmiSQE~SczL>Ccdx(yVjkteUa`|r&a`00C literal 0 HcmV?d00001 diff --git a/datas/icons-16/emenueditor.png b/datas/icons-16/emenueditor.png new file mode 100755 index 0000000000000000000000000000000000000000..b121605f7b39fbf9402f645d904f7dd011f75d37 GIT binary patch literal 679 zcmWksTS$`u6h3no*W7TSHPq6->x+v`357`AVqOO7OcXX$rfFL_E780xja}5KB;I<+ z2hpHJqHvTCwT7CR*^F9=k*29BSsJxcm+j(CzYpK}IOjWj-@`f08R^L!RwxSqIMNhJ zCdu4gFd1Zx*u(;o_LQb5$^ioQ?t-E#Qg)C-np&JD26)(7>p6Rq?1{pZ%rt;&#{l$o z04^kX4WL2@u$~WastbU3rBgYc1mJg2DiLQ@e>ykwoj*RfpqO>byDqGm=s`Y#a`=Ft zwWY-?II+`9F;V=Q3K}2JZ^h0PBkH(_%e4+%9MMhOc+UYQVT!!?RE_3r7wW>su+6`o z)GAkTsAfAu82=Gy+_B4rCX=#{KZ1fHFFN=uSpMTanonZ{y)JmAj3a_5epW%2HhA2* zgsFcKs|LNgA=y`)ej~u`5)7OmsPFRV&j~8{HGM%uw&#Jo-&f3YdvpPdsN`wUUZQb3 za=eUIG2^zCRWD|cu`_xXi#=)Iyc_OQMs6ZXZI~caAo^CL=I;^I_B`6yt|PMqn97ZB zIUDL>GCFx0(K4`uu0J+(e74X7B}KeZ;VaOCF-$1yuq`VZXA%9=5UuB3I9hoNHR@^X zjjM@S5Yd+ql#dhjX1r zu&TkD?~Hv!A$Qv7+?V_0|JdXygQ>si`=gU$fOrO}iG6mW@T!P>Dv&0oO9sy58~+3L CB{?tv literal 0 HcmV?d00001 diff --git a/datas/icons-16/empty2.png b/datas/icons-16/empty2.png new file mode 100755 index 0000000000000000000000000000000000000000..3634de2f18bc49869690a6ef09157ce64327dc5d GIT binary patch literal 573 zcmV-D0>b@?P)HehtFF0nVMf!5}2W&$w*adLS*tuyA1$SR5dLSdbN&nyNGW{rivM&!4{x zzkdA&(*GE~eEH76#KZ)Y)c_gtf77PPjB#0J#L@glf-T=|e%!~|QzkX-9apMZm1rjLg00M{!o9!^? z!|1<%|1Hz|X30*V9`G3KI2g9(yymsvZ&=n#m1^@&QMl67ALk>*j zKs7bBV0iWF1By660HGKFvmH4qK~V?;r%s(>;O6E)F#sTdFk%7X0tg$z{|}X80H#1Q zaBLt0fB?d90nE9ulnC<;h$|zb!f@x#GZX^=0*D1UyMi#O03g5s7+t^Wl>*7l00000 LNkvXXu0mjfg2CsP literal 0 HcmV?d00001 diff --git a/datas/icons-16/empty_ascii.png b/datas/icons-16/empty_ascii.png new file mode 100755 index 0000000000000000000000000000000000000000..4039a2e62865e15bff7c02871f48d8625d2d19ca GIT binary patch literal 515 zcmV+e0{s1nP)HehtFF0nVMf!La<53**K4E)1OF>I|<=F9wSP1P}|dB2!a!hQELRG5q=S zm*Lm1-$42w!zg1NBLfAn!7Q*Z={9VE`;lK&}8g5$ybb4DRk0 z44*!I1>$cESFhfMs|N@mCfv3|yaA$_nHd?re*Mny{rgWa8yNru5DPZjVa|uqfB*hx z`2G7Y0}Bf?!@qy1b^-(th5?{h`1kKW(BFUHvGD8H9|m@IR-il!SRNSw1Q3b=APpeR z5QF|R{QUWg0puu<%^(1hgM|$Y00a<5ATlvAf^7t)1F!r-#03yG zg#RBZhur{x0K#wqvU8C&GU9LuKmf5IXIJF(PAmWjFaSriwt)?I*I57n002ovPDHLk FV1mJ}$NK;P literal 0 HcmV?d00001 diff --git a/datas/icons-16/encrypted.png b/datas/icons-16/encrypted.png new file mode 100755 index 0000000000000000000000000000000000000000..03480e30c376193d1e4992096aca90de18fa4973 GIT binary patch literal 928 zcmV;R17G}!P)1RCwBA zymsRT0|@;8|6kGA9L@Bi;Tbm+gFynHgU0Wb^@KnyqU z-D9}_;_rE!H>C%632?>x3c+d?12p}e29v%j6 zE-r>|-@h}wfBhO1ASZzMk&!$r!>d=XF5SO(@9~>AZy11K!vyj&0~!DbAeQgHeljrs zXJz>MlZoNqKgQocvA02%oD7o!SQr-GFk_HV)MWU>{Ey*3BjYcS<>&?g1Q5&5eX`t) z8tKY^-e@qGDt}Zm5@QaXm?H50%cI{+31XMNT|d88;PGcp2Ib#B)Sodh{6#kaAb=Qe zujM!(?Hp|X?-LIL7t4DFh96%UzCC!y!0_xD!{Nd z=vO6jEC2)$6C*3L87Dt59E5op{n;~ literal 0 HcmV?d00001 diff --git a/datas/icons-16/exec.png b/datas/icons-16/exec.png new file mode 100755 index 0000000000000000000000000000000000000000..2206448e421a3936a4e0f120949a7e81c0bdd316 GIT binary patch literal 1059 zcmV+;1l;?HP)*fjCCYH@*v?~%7BvMkF#LT1QV$S7a0A%cg>;OJ zA{T%A_LoUWNJdXdNsNJ?p9id&laqsim6e%6Sy_zX?_XAi($eyM_wR4=25S2W5J1c@ z1GKdxck}Sb=}StAiid^SF}S!GFsQ0ZF>rBl0yX^u((DXOOpHM9fh^+`zH#Hs(VsuR z+y@9CW`xsqGL@7R#naN=g(jHeeBrW zo-bb>Z2+2o>D#x@daSIh3<3g>uz2?D1JE`97%VIzN&o_gMNQ2)T~w5ZL0(>*;r;vX z43{t8VmN$w#)NO*9c6N4fKz;o94QR**hHu}VoCIpVARr)TQd2Wyhqt$_ynp~3!=FEY8LnM>%5dSr zJ%*Df&wM#`YF-mS05Kgpw4k1Wfe9SizkdA%1`_WNc6MNLGLPu0s+zpT)zyTLk?}V$ zI@y8gfS=*hr*90mZe9O)`}UgFFJGQ+1qdJ(Wo2!30Rb*x)UW^ph?T+L--bm|v9HD1 z*eTMd+}z^ks;YVlAPwT;{6Lp50W~u*+`jz^=+}F|Sb5Cw?%gkjmoL8n+4mT(UcL1F z&6~@hKz`wIJlFw@rPo`48Xo`z5IipcbD1&+heUv^tRzQqabJs|ARjO>T?d8s*E@IC zHoty-Z#PicA87vh2E?Gu^cf(4&@&?&5Oax%=@kS8^?!DBtbNDDC0+^?(*&h dz%&2^7yt#1JdV9QTfqPT002ovPDHLkV1fslIWb2eLUZhL>* z?|Hg-$LMeloSV;=FXwy(;80sS7_)r1xvz(?R3ieC=j23)0rCh0LJpb;b7K?u#)hHY zlk*4VP+L0K)YUcI``i;;`T7`=ricORP=knIP6(=Ciu0a^%6iVc@FDr!jUoA<*~j}o zdX00hzC?0!1@VSCk2s}r&o)$ztD`4T^Qbd0L!GC5N0pQN-o)M1+s)rUeNWQbiWLhK z$}RNo-A~%HmH*fL>EoRL{5@8(MZ}DJVS#i*D=yYD;_?cTcnakfwjDSMKy7q{i4(_Z zXj(_dgF7kpZD*kSUQWIKG|O3yh!ATT8UgWwIZyxI{QzA0>;ON%{XCV;0~9MA{P6OV zOdfq7e2Lq3>_VJJMIlC1@*LDrYQL4VXDhYQ5yrp$0&$LV=Up^+_an}6apV}xU18mp z9f&DWl@J1&6H$ZW#wx%XEM_1A2x5kqG4tC90Oht0#CZq-B?cmbs@1Qhwg!OI+YE6D zq5^;~H6!X)1@eeFVe#4&0PO=0tpW}N5UInawDi_Lvp91ZuSOnn6aqn&g_&uXout&a zol4IDV#e~dX|7*5iVd@XYzB**+27j+gXiYK6!(rRHmhRCpgdbi3_Mt!8v?miDI>ji(h_9 zz6ADYOXK9#AJ0FsY3Bo2;;=#kK25+0wZ(s_-I&EYBbZ=LvBnaYzd6G1?;Iv+Dh~<3 z#~aIoD@#km>4sKfErS>dA;9Y7Az#}gfsiRlQ*r3Azh)2q2YikTFCmA3bN~PV07*qo IM6N<$g2%>}%K!iX literal 0 HcmV?d00001 diff --git a/datas/icons-16/file_broken.png b/datas/icons-16/file_broken.png new file mode 100755 index 0000000000000000000000000000000000000000..5ccf29a0772688b186401bb82cdd8c742001f1f4 GIT binary patch literal 766 zcmVTD)??eM{UTfh_>bCQ2b*TfJ;iZD_rV-P|BkR6w%t83fxy$6n7 zGKTSE078gbvk{p3pd|%TO46w$RmbJqkDn}Cv1;w6ZM)7wO??b7#vm}52D!GFgl&;+ zN+X1zSSnMgdQ6$xz8L5j1&~r=sBLd3N~IDwo~QDUpMD+uJsh>RG}AIZ%iyn{4v?TB z13)0+LEDxLm0fP%x%;lWySwnbkbiRK!j+TdayfnZ;<;P-hxe`mrBMI?OA0(c;6YFR z`?c#g`lQ6&ymkA!p}}9TdLQ-_o;`W=BM5_{>o|F!I0|6fQuaQ|zxn>{Yuo3~A3t?% z-?1_`d)CC^ii78Q>7jw*%Ol559K3)3-s`?X@A-JH@lZ<5|M=m3*xA{c%jI@04T1ZLQlVrL4JAcgB(;4%QezBMVB^lOSXaibGa+>EDV^uxtxyNo-q! z0HO7WJ2u!_W7!s#W&Iz}-(Rc@lm@a@$5jAI8?@GFtx?LLlp>i*CrhQ00%94WabG6W wG$T@aA&`bR(X}SxvxHVrq*U}4_@cGuFKehQ=}xATOaK4?07*qoM6N<$f{|EW>Hq)$ literal 0 HcmV?d00001 diff --git a/datas/icons-16/file_locked.png b/datas/icons-16/file_locked.png new file mode 100755 index 0000000000000000000000000000000000000000..c3b07a8988e9efc9d0373a5a46291e98fa1aae24 GIT binary patch literal 1004 zcmV>{{@2CExma6OQu5Q6UkqG)G7SHixfniwXJGj7je+6xeFg?j=AR5d8Q2*v z+smkT+%4{CjUd{J)Wr7-jYK=U;}; z@9#1^ditC}l7W+fomY&3o1K9{T8N2(j}zz;p!b;m|6v0NAaEGGefJg^+W*DRpS^VK z+fTMPqH@vca0D)Z~ z^r(c7Rlq~k*ZiZC0QV_Q#;a2q{y+G@@ayK*%=t$G5r5_kAd;?D~8{n-ZI>M&A@Q;D+9wjpnw1T{mJn8 z<3|QilKBV3;H1L{GKi4@Ab`L|{`H^A5dCL%UQ zkfwiNjlX~i3T_BE^)oU61Q6JOv$r_zvz>YS``x)8e;&Q!VEg!snHiMo1pohI;QYtN z@Q0C?;pgwa3>;8HKrZ;h2=N9$0D%oCnfGOp@xC7$wqIh9&8wL_*EPx0ObnRx{{96g zZHAvLTnt>?JPeFL)y!Z&1O3ko!mJDc0R%SS*Pp-t-+W^F2xNY|eDCF{|EKSYe*6C8 zCn&(c{sj{MfFTEB|Az+RKNcRI&o6Jj0tg^*QU--4D31R@GNu?1OEW+$`_F(IfIRUI aAiw~KxP16jd0p%P0000`)NJf8N}WNm3|cp^FR3q9Sgg*odvIVreUa zHd_jIc6Rm_`>;^35wWll1hEtw{RbAY5{m^9WEYd%cnVDf^WCUXjB7)W$Yc0+>j4>6NbB-Vg`2PN;R;!_Zett;P zlqiZY#&B?OK)>JT;^JZeytTDOk|aDlJm8!|DMgYbDDQnWu85$NVtIL)R;yKkx3{;M zot>?klsod?qw_omAPhsa*0kGgTCEn1MuVN59fBaBUa#~1{?6Uq9nLwl))-^RvJ92y zIo8?%jb~?PyuH0KH8oX%Z*Fd?(MxIGdsLdHD5d^eSP%r1uLLQj5D~&K#9I4HP!t7P z>&m`TbJ_XhaW*zK5D`R#IF1J;l$Mp-{&(!#+grNbE@NY3tgWpPh9OZDp|$>> zz*2#Q$p62uObAYJ4`!EcN>vmIp;dVqZj_*@vAOc~A;{Ku21j z(OgG0niWp!ATkq&o9QHr+@Q7~A(OUrYnw}bKmPCk`+4pTCgGqixDKx$7x#TBu4_m4 z$a9vfwiWWZbx9m0Q4&$|gXGNN?p@~xzZyVC7x_QEcHoz{ItM1xuYWDeL?{wykx)eb zjzkU)U6i%k_WT5P>wkt{=^lCV{r-vgf-jPaNScZGiO6gyGUbcRBqIHnv@Cge`zWyF z-p$WjH|8zd;f2-}1@D#xkZA}sgc-yc1gY@ntfAJi*!ak%J6YVc#ax@r%>yi5RQve) zmW7}pOd-}ndfml9xa@=i-yt_ zLtLui?70#xE7RQGS1)gLQS-iFzxmE5uP0;QdcA|^iKwG-@y+-Zo4~gz7BzjN!z`Tr zhy#0O)rQu4R#ZoZ*Zw%hF##Vyefon`wzQl4$6p*~-@&8khBneD#E3-}B;>|=Ck}0z zY;0^>j;!249e=TZ_wMia4)BbDY5S=c-+p6FqvhS!yo$S5w^0ZuXfQL}S{t!ysjzI# z6ZsDh^>up1^14N4T-CQc!2KQVP44t}>xahaa{!V|sAd++8=Kku^j4xcB22)w6~mLB zb+rF<@q@vhU5orJ_3b Y54QE9e?U7i+W-In07*qoM6N<$f+^vtZ2$lO literal 0 HcmV?d00001 diff --git a/datas/icons-16/filenew.png b/datas/icons-16/filenew.png new file mode 100755 index 0000000000000000000000000000000000000000..3434c3da871e5a66ff8ae1cc1516037600dc99ed GIT binary patch literal 605 zcmV-j0;2tiP)LdNbGdiUbKm!!Goq?wYh^XwzcEs^ zdd%AHqBI^{rf}>Oxk)cwxo{TiJl1)3x_k7jqutpi2m+u4^+)>b^K&^mvxJ!h5Rt*t z7$Go17zTs$*^B47edoT4_{j>gWkfK>V2r_gPpuvg&TcKv=|2JeY{UqnLM|{^>sea3 zMCxzwVnrj0j& zbHJJO{?|YQqAKs^n(TD<@PM@zYdv1!$=8T)eHg%AVv@&U;F^Ye-C>VM1a(1ApS+HK>z{70y3n)ixow% z@NoAVhEt`AK;|=I4Fd=uMvy^P8b27WJ^x0O%@?=qWdK^jj&1=!0I`6GUw{5G{QUhF zEb#yJZ@dPn8(A|j7#;hGEOv8-6+1uxK@Iu`Hi+%RKZd9PIfe)Ce&RG}D>FMohdDo- z-`Q~)MDYRy5ZItUKtq20`oqA+z{GIn;U|W_%*;3q`VW+P_yN<^009K|8qYT-20cRo zh7UhM5%>qELI0TkFg*SU37(_N?}5Cf4vJxb00JBI{X4>jXK%mb4WqvdKNwCu;6N67 z0CEdJ0D%p9`}`k+iY70^$vdA2#@gTi-x;3Vd(I&Kk_qG*M_B9u1P}{M!MoGMj^1u{$sAb>!bRv3saNi^y> svbR70Ab>yyu|W+Z1-wPiYXAWT0LS2wRe8YT>Hq)$07*qoM6N<$f_v%Fz5oCK literal 0 HcmV?d00001 diff --git a/datas/icons-16/fileprint.png b/datas/icons-16/fileprint.png new file mode 100755 index 0000000000000000000000000000000000000000..d01bc394f9368da189be6d4f4af92b02874405c0 GIT binary patch literal 1108 zcmV-a1grarP);nTEP>dOB$SWyvuiiGX48jcm|1WMr5|Nna%DD?^;fLK5_|NQyS)XR%Wwm4x^N!0K=Eh3=IGN01W{ewC~{QH+Rl$-U8Ho1!Oot002P% zzW)UJ`u{gNI1IZtH3BRs7h_SlyWvIQqz$#fOHU)u0 z0~Zw>2eiQ5Ni91b4?8y~0PFSx0HmX^0N2*}0Oa8104XgY04gXI05~@{06srE0P*q) z0J*;a0O#lc0L;gn&jJ8J0KWeN=nf_+ae-J%)s&M6T^a830q!#y}cD6002P%zW)RD z>B_0Is-wuc#o7ku_8cldH5mZ|0RRBz^#A~GjMxD9!^r;y_xu4iKP~|C^Z@|%>+%4v zoLjll;kJnY007Mbh!H6zvjWqbp0ZV5n~7VZ+kYmG|LeLuS{T1RJoNiN1GAl0QVAOVg}+y>-c1LA*BDM?VO2I7xE{23$w a5MThsE>-H<{nx?(0000u)cow($N%^Y0SF+1n%zPY{{Q>;AEzMz0fbZYy?gKeI|s*u zHN!AALjVE@tLBRrpZ$-EOGD8N!XSWd2tWWq2q*wa9zA*=tO%sx&ySxNhQM3`(*qDd za05Vsd-vY@zkmOo|3{7>4Eg>2`~Pd#UZUXBrys)&0SF)_nC6(6Vg`^|vu3q}4b080 zWr&VWVYqVR9m9{$pTS~GOpFXHEKCe(X@LytY5`z<00G1l6_xToG&Bz^Id^U+LuY3X z!_=uQ44j;-3|3aL3|(Dy45CsZ4DA1ZFbD{6GK7Y@F?e}ZGcW@U+OuaX13&7hl zGQwh&6NtY7y#eOr<#{uBcr-9bN(wW~pP$R{`t^%Q22^klAb`*f00A~2{t5IagRxOA z1HS+t!@hm3KvxCzY}hdEEL6=OApQu%PXPi5B_$#OK2X56x9-Cl0Rjk@0U*H5&d&EQEv;h)kZl3PvOvrQOMEZ@5MTf;ClpoKHz1<`0000< KMNUMnLSTa6OEq%< literal 0 HcmV?d00001 diff --git a/datas/icons-16/find.png b/datas/icons-16/find.png new file mode 100755 index 0000000000000000000000000000000000000000..92ae8f30453214f776c12b5f951a357cbfb34c9d GIT binary patch literal 1174 zcmV;H1Zn$;P))u00d}I)009610QmX*H39_zPYw(RZ~FQ80Qma&0P*zp`oyrCcG|$Nw*dY4<|QR8 z09RLP0P^zn{ovr@mO45%l>z`k0KWeNJ5g!?{{8+)A08CAF(?;8Og9<^NG})$L@^u& zKrbN)8!a|Y;{6dq=Fh;r?(XUC{rv*~6B8Wl1Ox)O{r&xe0*DD{vyQa1&>A00DNZjf zUIuYi2B3iq3}1dQF#P_*z~E{i%h1+PZYb=Mu@>l1ei0F2VI?I6pC3PdI$yqgtpXr` zn3!1@qBUgsxTU!m82$h?egop~K#f0v_}lOQ3=d!bW8h?AVz77f)@I<7^7#Gp$K*SA z?sB;^`BP7cX8ieE$3igxLWCh~?9_@4%p9-~n33@aG={e*!xH^_PDPAHP8iVqs!r zc>nP`0|PUYz{M-aJAVFSmu6?@+x7SFzrz3l#Paz!1J{F3K!5-I2aF9yhQB})-hKVg z@blMyAp1YVAE3!hK*N9i1O^Th2m9Z@e?DHne!yHpLXF}7|9=bs0mOX&{ylbOQ*T>g zJ}!oLpZ_s@`TmdL=a2skKY+G>0~+)dDE8+!2g95VOMkpPFl!0Judl~}8sC5Z{F>p* zmp2Rm0mStG%lnmk_U(W73m68h49pDQzx@OH`9H&_4?r)x1se8|gW=@0j|{2`zuCKs zU)i%VFfubB0e}Ev4$E$Pxw<9w%mXI5!0-RL*kuI87`}XFX887nnc>5SzYN)u00f(Z@2(*=S55>vHCIB2ON*z61 zVEp;{4F3ND|NQm%_59J4#j#rWQyecD0RJFw01E)-0Fi}-#f!TDRQ><}=mG#i0KWeN zGbJrW{{arq;^5Mm9uEoy;KZr0^w+we_1L_z_uas;`}Ov*zu5ZT2lM$v5dPo+4<$VS zIXW^P1?a;#%HROE0*Kk#+VktrpT90Xdw%b=k+JvY7cU;J|M}z7CZOvc0P#JbQ(u4h z!Ep5Y^Iu>KE5dQyC79fC_RaMQV zK79B{0vO50^768`U%q^^B_zZ>(B9s*UtCMiE-r3&Mn(pml`H!`OG$~J0BPdm;{zty&&V;y oz{AQAEy2&A`S=6lHGlvE0O-)|H?4R~7XSbN07*qoM6N<$f-3MnFaQ7m literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder.png b/datas/icons-16/folder.png new file mode 100755 index 0000000000000000000000000000000000000000..b7aa9668bf3bbfca5988c435b86cce571305a4c0 GIT binary patch literal 761 zcmV95!A2sr*P%}vK$9E9^$ME9^Nb?^s``3@Z41a$A1-lpuH~<2$ zIL9~ufItWY{r`*4^-NsUf|7yzAOOO{GNdFj6Bp|Rp@l$ipDKLh2q1_7e;FYD0~r9s zzkdTY|ArU<_CL^2kj-G*fi4C4^*_`EfB<3vg>sw;8xSKx`Olv}K!1M+VvzrTg4ut8 zwp_h>l|fKYkm1SwYYaI{;Qsu8-zkoJFG=2H<1 z8>|l?fS@k;4~(vFV4Fb(z}O&X-@SX6fti_^;o-xF3?d>T47YCG0=s~j8KM;+fEXDV zS;831)~#gt`;GV<#KOnGa3(y7;m_xt009KbOj=OP%K(oYya42FQ1-e3$~FK21TugV rhy{U|ok#;fdVqHCd?y?QGE(w;!=?VRTc*Tf$oRF|dpP_#TyvXl<)0PY zjyLp$Tjh&>Mo0(}2ogBRh74v8NJ##I#uc=}QP|4>1i>K~RZ8{L)Le~i?%M~Pa!QO4 zB;ZxiC^Tkg=)C>V4^Q^zGk|~))FYZw8BY*pFZSt5k1~3yP!nqdu0e7PGNZUrUoK|= zQ6o_VXFOg4ULB`eQ%S@Hk5mc9f+<0QAm~KRg^>h}R0O;zUPf@Of{zXtl%z74qCt#- zAQ3|Y$YAmcf>%$i5vP6}dz>i71677dB#1#I!I+4uA5Gy-ys6)k&8aSj5Gc!X%43YI zudlPPut5LE2CvfBlu!3>P0dJEsp}eRE!J92PEN4a;=QNS>5%6+-ENmwyG53ye!f z=imQd3;+Sd@DoT7(u~UxkjnuAh-l5Y3;_rrmNoPDg9GJd%~b|%Z6;V4F)U8vW7K;rxNjDJ~wGXMk-3mY&E zef@`9AujNjnTg>C13Lpi05LKA`^Uh=!b7qF%zu6}Z~`p{2p}egUq2WafnFdP0G-YV z3^ITKV*16!1>`Z3tp7jI`Tv0~00ulFPAoHbp#3`hH>Zu4VHt-}pOic&WyMdk+^3T{pWi&&8!hzI&F z3_%2SpkfE}<3v#Bftz|#bO=ra1(z+Yp^06)E=`+cX`1)rdEV#tpqZc^c;J2hyZGJr z#chcQ|7R?K#Lb!hgYQ%qR12IWT>I&>GZ&|xJTfr)8o6gq5Uu?^l<0=($!)0h6pZ|o@FE8`@v%fQw`GqLZs7Rxf z#wZOP`!2xs(E*6C&w2CpYfF($W;6{@c zV-ts2ojS#G+wj#@MP=>^-PbC7Q~Z)brA#YfINtX@`}gl7oldh*y2Rwix6uadVEcB~ z7b`UKWqOVsW%n&zIIDF=?(gN>%hNQk_>A=JWv$sDl}b@46!5YhuImC|`jv?v}Z5L?k!};#@JkK z&>GI-^(MGyWsuu*S+t1}6O+kgn4O(v&mA6)v(dn{EQ`di7w{fAgl#9VjpE)xkLL9z zyRy5OmooK69Yi?xh6U^dHw8aGHIC?(1q==i4dstNG|Y|%50drzSXx@4RGy<&t1&;n zNWHPjxwB`V>$tapHJ|_#E#M{~4RrCBU6^=byo3?J@ZJZfcmCspL!be){{%d1Z2oFs RQ40V7002ovPDHLkV1k76gQEZd literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_mail.png b/datas/icons-16/folder_mail.png new file mode 100755 index 0000000000000000000000000000000000000000..d97b6ca81b3db9ef1f8c448a50ecc7b8c5689ee4 GIT binary patch literal 597 zcmV-b0;>IqP)Ej&{iNHUQxb!Jm67y+G1?K{D8o0^6^35R;u9aI*J`@W(c_g?SpwD-^t0Yul~~PN7M;{+P7? zlIVDytlUChx-Irz)7{@e>xe72mMP6HO1M(uwr#Px<=sB`h|Q00000NkvXXu0mjfO|us( literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_man.png b/datas/icons-16/folder_man.png new file mode 100755 index 0000000000000000000000000000000000000000..97b3f4acf82594e88ba2bda60024cbf10255d54f GIT binary patch literal 793 zcmV+!1LpjRP)ECz!MQ5XOK0;Wks zK~#7Fl~P+vR8bWE&Si8wqs@2^i^&Ut)k{Kwmn=cwqzvgH67n$w=^=cu3z3fW8;X1? zBnYFZhoDR%$_k8xFhj+>q)sX6%;=mm=bXKFYoAfD=%oc~@4eRgzI9`3fsW1>yJKq= zq3rAru~^K-e~9LuJ$Ls+TT4T2rcuAN937+t_P_Yya5xkU2HPqAaXYTUb)b^f7wJ3R z-roL%K*8;xyvZ)At*Pm~*x506rnTkz&KQ))O>z3sfUqr7n5HRudU}S4kh?`}j`a4t zTU?l>_=dQ4rF(HFS%>4mQ}X)#espzpHFC}$ynQ|V=4$t)?jzL={;Yrj!8x-0zT(J@ z%QKc~x%cirZ1u>T5{RvohGC$kxv{D4Kvq-r(ZleOttuKAAu7U!T4m+_GRtA;pO_r> zX6Cls(Ka2>H5GZG0H7%3=HQ&sEs&9+!`zIg{kmSLgK;oYK|w)4K|t5F!O15R3c;X| zN^+)8^Kg{X6J4G(BV2ovwodbN7j7yEmwb`{E=Q7ZI=5Jyr@QpXj0|qa!G(`1yI{^H z-4Z~R$)-NNx3s0WEd7^M&9T8;1~a}2mWsnM*Wg$iUN^F`BujPdB+TTdM`n!1AW@6P zM(<3Uju?18gv8o1Qi)XvH|YiC4jkJ;^!pTEJ{v?TWg-yBp~`8pmY837nr)eTM#>LX z8FMpAS-yew^HM`nk*p`Id;k77_lKQ&a?9|EgZLxXZ zE|$_pG7GRGG$^W?-Zbq?RTZeZj+wFXKgnK#V|BM!QNacIw&s`ngFmCQ^8L4j!~5*t XNf}*nM6NW#00000NkvXXu0mjf(&~C_ literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_new.png b/datas/icons-16/folder_new.png new file mode 100755 index 0000000000000000000000000000000000000000..130e35e09da5b8d96dcb1c6634aa1e84c90bbd0c GIT binary patch literal 649 zcmV;40(Sk0P)9k~E@NOgRjLSNK0_E53uNj8 zu@+R-H6XqSG-NRYV>SaLKmdUaveNj$aP9dwyuQ02Yy@?|8Hm7f6R-AkmzcCECp=-r}aM3G>pk)sbUj#aJ@qeIU>;M4-HRvDMAhr+x7@`8? z7#_U)2{&Zkdu2$t9A6A{!D7rX0`mVeJo^a{Kwz(FNq=Ct^yCWz&o?FpJwpM8zs$@i zE?WCj9ZUza--NRptlu#-92Ekyfi4mO2q3uEV1|7735vi!Cc0mY$qJpTBL zLF4iCKW+Z25341 z1AqVm8)PQ@ilH-F51s@#*jO0Y*_aswc-R@(S(zbhZZ$`Fd={d0wr%@P&y^isN=}q0s(*k0vW^x jHH;MS7TGl*01#jRRNA=DQ8x5i00000NkvXXu0mjf!vFgq literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_open.png b/datas/icons-16/folder_open.png new file mode 100755 index 0000000000000000000000000000000000000000..c56ebb726cb80a984ae873304f15539ac4f96068 GIT binary patch literal 682 zcmV;b0#*HqP)=8T)eHg%AVze7>e)x(er-*)mIP8CfcOU?g8%{uY>@3l)PQPr zc+Bwc-#>=kXP$x#(*z1VAY>Ro05O6LNq6|o05b9apZ^SN&NDN-{mRVHZ1)hX0Av_0 zfb3#`00J8nVey;c{F8qSe}DZ08OOlN$ii^_B^yoylH|^U=^gtIFsz(Z0(LP#0I`4s zL^&B4Sb%O~WMpLc@tc9+-~T@ho+^JBzI^+~@af|(hF`z_GyDcx^7rq5hPUs&FeELx z%P_A>8D_2q$W;IV1UBgNcP0h_j^7L~e}KHl!0_$&e};oM|1o^|`j_F|yWb2yzyD+S z`QtCc@85rbmau{?L;?ap%mENU;OJj@mYG3YoSEUrkADo`fi`~wy5tYYWqgs)t= z!XPaz&EQsbk0I0oVGuw7F+oEe1^oW~8)(2cF#h@#VhD)7aNz>jkn`uyW4H()fItTQ z0J+L;62cIeMi7P>26BnKygb9%vu7F9)YKU2y{|K@IxY)02q1u1pfuQ3-@ku{djVts zjD6|SB?ehpS+F6hs;Xd@feb?i00D#?{1QxNtDeI+|4|r-gb!me0b}mpsjx~Q^9B%~ z00lx1mPG&ph>=P!TZ*A`%c%B&CI5X{Vi?wb*K-l_1&# zYYPddXL1KQIEfexfy>V9?)>;H_KXn=0}c#dF}%;b-}}ud5#fK90+^efYHz*1IHKXf zC%jzUdUfmm$Ax=$&hlvG0yL^WRb|TQD{tA^b)-`%*|&FBNAc7$ggwwHH?9q?Kiu4Y z+TARd{^_9na7m=KLioN4Iw3|+3?9u7rt~(b^lw$|ptG~S>Bhf*sU=q!wOj;mJszWFV%GIH&ir@p1IHHOuQHYZXKqX9{TV(p&;(o~9d#tsH zwK!|3tR;j%x7(%JY%&^r;+TH`IFf_Y5fRF=#2AAyhVgieF$U)xYiny{Sw^qdqch(j zP1A!d)Z(hDD2jqS&nb!mJGpsdV}mTq==b}y+ikw|dYo){fL{&-V+?toljk|cn0@hJ zFhFa~a5$vZYO%h)PG`P@*1CQHT66Qolk~YQ4*#iUjw^28^-H=G`P)t1AhHt`2YJ41H@MFIONNXyDIZ3=BViGW-Xr0m%U|!=JwlGdP9*0|XGn08mT- zo&6su2zCKb!~b7D8Gi2C%kclpR|x+04T!%pFns?GHXLLS2mk~S*nt0F&40kI0Ne88 z2N?hV`VFBONHf3;0jmA~_Yc?rfB=HH0Aw=|gPjVr`9DZAP~rdYKpNz9WX&LXkb0n{ zAOH|R@Gt-=X88F7>;kYCK=?bv$zcCOoed5nkY-T00Rcb&feqjc^Z{cS_y?5y3Door zXe%-e!dI?bVUU)VW;lQTJOgJ{D+53Pv7krIZ=fwO#b3XE1#A8bv=PJxX_l9l2WwVS zQ)74xR1Xk9OxQGo6vH&b_%O|9&z=QqzHs3JSPwt|!Cmkj=vSD{$W8{~OP4M&$jZus zHLI$sf;EE-c?;AB5J2Fh3`!8>WTcGm?-&6Bh>_Cl3=m)dnH^VRnGmyy00000NkvXX Hu0mjf-v{P^ literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_sound.png b/datas/icons-16/folder_sound.png new file mode 100755 index 0000000000000000000000000000000000000000..5f92b30f39c5738c15457853244db498865716bd GIT binary patch literal 823 zcmV-71IYY|P)nu~ zK~#90rISr)9Ay~Ce>3lFHi^k(r*0`YTa&eGu@*cjShS+GpacXzB2g+0*^^2sv=^%c z@uCzjg4koLq6dozA{0S{BJHVFj3z6)acR13YBfol+WnfD_nr6guq!AE9(?ZqAHV0z z5fT1RIRKek^5G-zt*z)5r~&x(+-ILJ9-n&Z_PwvL5(6 z-=Lt|>sLGgD_}KZT--C5{bbsj>BE065*CDJQTf699fdcpc8}E z2CEJ9x8DP#@XNOCe7FB4(wj|&x@|nqV|aL&3(L#s#A0-c(J9slsTHJ8@RSQPhaY47 z^*6bc9VPt!2b5Ceayfz^;9{e}slzSOG^J9h5Cj1$%Rh18<8eBG`_%`#a9@3c%f{li ze&_jnwo@*b3B!-7Vv$aYPCvXYXQ&mdIrwrOUS1uaYjdxp Bf7bv2 literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_tar.png b/datas/icons-16/folder_tar.png new file mode 100755 index 0000000000000000000000000000000000000000..534541fd36f6709253c75dc74db498740ede506c GIT binary patch literal 799 zcmV+)1K|9LP)4-?zSf4Xri*a|S>~O+#kg zm5~AAf@#C|Hy!tTuJ7L2w7!ky`!5hXzk@1f!_#AP5ndU~FzxiF_K|@jYb9O`CXipT zYsbaG3pe7iZ0kQAtZ&!)Xp7|O7ez{glp2{RMqQKPNgFfuCurJ1qwvau7J$;A1ZYDe zq$Y@9VXb2Gk_b1{h)5x%Ld2RRQB>L$yjXp6Ks?)8J4K*CD$Saqwi%g8xLZ1h?<;~p z5(WuzsE8s7+9ZlKK%J#EI4@4I1~_o=FkKHi*|NQr@$x6QcNT28G3L z{5-;gHlJ)ZOMQJk1BH(qyR`rxu%wJJ>?SHJ<})$)2+V4#jRJ39zQ=JKT-U=5L%O@W zsjI6am&?(-xDm^;07$7MB%H`n{u~fbEM&ASAQ{JVT^!HD^#Z~$BArf?&*#ZxGW6zp zky1=W5F%#yTag-}@PjezIR#udVA2opgAh0H@w|{ysYF9V1ATpcG%s$%G_C0^7}lQt zo{M*sk|^OLb;6rh&nXp0F{&hv=Thi*xm~(EQo2aFrQETA5!JbirQmklk=baXxg;OdPJi~hDB dAOd~>{!gJGce*H&5taY|002ovPDHLkV1n-3VJrXu literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_video.png b/datas/icons-16/folder_video.png new file mode 100755 index 0000000000000000000000000000000000000000..fc3f91bb8617f06fcd5e0b041cf5f9ccdb7da0b3 GIT binary patch literal 845 zcmV-T1G4;yP)HA0HcfvV4|Zua6=d{}i=726LyMKy7Uh zr2H^(5<#M)`BxV-}1;E#42zphtiH%z|)ZW+OfQDh*m7krX`LwNo79qH~u*k-J z!1^57FPWM?N~Kca_{rnMu_cZLaU5feA&MgM`8=!3w>kakQ#65KZm!0rejMv(`J-v* zNXN{~%#b7rl}ZIEC0c8uD59&Yi)yt>-_CA=AlQzuaJ#{84>awePj?|tHr>g&H`0u)I^ zK~#90rISBvR8bJcfA7ARKNi{SCJ}^Zc}3&Fc~h6*laK4H}3kB3Xp&?!E86xic0USB*si4jdS`%$ak~%w%T9f5%)g-#lDb>#eFC zt*O0SdHWvV;nl|+-cWk0f8%gnnJeZ2C<-QOotxheiu;1~VX}aY?&j?$&z`<$$JX|F z&9mN`8V`iQCna}am61d#j&r7uCZYJZC={^r@$zC%j=znb6>A-WC~gtg##ym8S!hP+ELt4sfL0p6GTCRkY^4n4WM2C zSTZabS^=eD(Qw|#f>H$`3xWiNN=TJ}jsG=0CdeZ=vyoJ9xYCfI9EE!gvqBLAoL=<90N{UK}Cc|YpX8DL9bI{nDg00^!iwNF(ypM>Fcppe9 z(Q56`Xf!zZvcv47D=<7WBr_w%NLiM6@9FpZ#266~TCEoKdYyK=&GOPBVI%-|wm5`9 zzu#vt7~s7p#z?2rp;oKW?RIH4n{?V8s`RG^7{lR^vMdQ9jPsNddwYB2dCva+J_`#A z?C$QeytGJ`k0fL{`Q3NCelx_Mx3%M#WrjQ4+a56ZkO9|EF#}xWG#zjPw1I90Tml-v h)CCDLpagyZ!=F%fRmwjwv!(z5002ovPDHLkV1jb68EgOm literal 0 HcmV?d00001 diff --git a/datas/icons-16/folder_yellow.png b/datas/icons-16/folder_yellow.png new file mode 100755 index 0000000000000000000000000000000000000000..7cf7fcbfa20f0e8d4d8ecefdd8541e78e7ce1a80 GIT binary patch literal 369 zcmV-%0gnEOP)H*jRf5mwhY&n{5K(0b=GQ z!;)Q#b(dW>34#30d(6x?Gt4k1j$?Mw-cB^oDn65FlvN%6*`wJy!6X`Gr{|Y7$Cn*t z+axg`Zx;=?&|>kl5l;8tO>3R=caZ>B%x1ba!Sm}dTbUq-q0I}&hq=v3N_*J_;QPmw zv5hTM;Z>@_P}#yd*h!k(mfZ$i>tIvmqV-j30d!7o>6E5B(lkX?an5n@|EelSzA_$< z@jQ<(41usYgCt3C&f%OxM3_#es460YwYG%&{eE)>Ns^SoTB)p>SN46MAP5)?23TwB zGnmikhzKH5c2K}k6ybRuK@iaE^|02K9hf+dxqlee?qFNpTz?v~>pA}cglV(RA2KK8 P00000NkvXXu0mjf1ty~8 literal 0 HcmV?d00001 diff --git a/datas/icons-16/font.png b/datas/icons-16/font.png new file mode 100755 index 0000000000000000000000000000000000000000..835750681b5c64e7cbee99ed8a43d9225cebcbdf GIT binary patch literal 586 zcmV-Q0=4~#P)~k=fBrK3`t=(~|6};_I~mjEk!U>jMZNCS0~LGBScSF*8Fj z449f~F-)7b{y)s+00G1Tv;F@Tc}5WZdjq;b3}6F5E&+J~1}rU&K_)N)1P}{0+hL}I zTmg0_&?WK;q72!fa5#I5;nSyY3|Ft-12#T%fP7%)q^nfq{RiA;VMuV+{ZP{bOKcuwl6CegNz$W*}x_LKpxL zKp24tlYAL`5^NK4Oh5va5k);f0O3qX$VnVIP>~G<0e}F)FaYFC^c0B?00a;VHk)4r zonVkyX8{*`=zSO%7XKNrIEn!vfLL(30AvVA6DSZt$r$DZbVC3Fhy^{nBBys^06>5N Y050gW9k>+9+yDRo07*qoM6N<$f^6C4ssI20 literal 0 HcmV?d00001 diff --git a/datas/icons-16/font_bitmap.png b/datas/icons-16/font_bitmap.png new file mode 100755 index 0000000000000000000000000000000000000000..1d8a9e3e8a3562c52cf211f31b1a9138b535b032 GIT binary patch literal 3383 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 literal 0 HcmV?d00001 diff --git a/datas/icons-16/font_type1.png b/datas/icons-16/font_type1.png new file mode 100755 index 0000000000000000000000000000000000000000..d859d99a4a6395f9f0a2713e1d738f0bfa93da54 GIT binary patch literal 856 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 literal 0 HcmV?d00001 diff --git a/datas/icons-16/go.png b/datas/icons-16/go.png new file mode 100755 index 0000000000000000000000000000000000000000..08bb18038da8035b7152985b55650454e0ed22a0 GIT binary patch literal 1180 zcmXYudrVUY6vofJeU}1_fVRjKjrhPJkDA~nSc?UP027>U0$fg7ZO<_?4QN~1N zI;S#J+)S2PBy2 zpb!AO6E`W-nJNCS_*|whw9#42VCN}P6aY<+qdCXkGP`tN{I-2t3Uc?UvkFz9*jbRR z3Qo+=%2TDQvUZm2eWHqCG^-MoiqDH*W#1>9au$D2p)BJ1m(6GNqvq|Ru-17|_wn8z zt%R2Dv&g0R}5@uN%45NzAcyPha7~R z2>e(c>7UY8oO1iKF;@kk?US}&a2e?-&>hGvMnuz1nUsvcdmhi!pQR%m7t5>fp%ZL$C|)Hq68^GiVxj3R*CDkYCbt1JM;DscVYuA%?Kzgiz9X%O^zxRi4Lc&KP##760aW+`?37O xSyz%9xYb=Jw8yR0nNblp*5st|x;sRGaKW(cX6z7WxP*xt65~^qjd42;{|kQlC4>L~ literal 0 HcmV?d00001 diff --git a/datas/icons-16/go2.png b/datas/icons-16/go2.png new file mode 100755 index 0000000000000000000000000000000000000000..62dafa6b3fa267c297ee39d3dc6cfc354618b1e4 GIT binary patch literal 1189 zcmXX^drVVz6#jbq0@^~w>dH%qsAK9zCsQ^>3#cITfgp>U5fQ^9%OW`E#1|Gs5w87@Zp1YmhR(6A33wmW)`QubF?%q>1x%9uWz#>ndN5+C&?Cnb^Jo*Ml);5k|iZ2 z?fg>Jrpe5Fdi6LVisA!*w3|65ygYuoFxQZ^;P@e@eTa{pRc_nNYPE-N3bWaQ`~Axy zk}MgZX@jyh?pbMPLms32Wrjq1`czOsTy~Dr92Vtb^ktW7wY^y%9n+PM|D`l!y{l_B zur-4g_j0>_7TxFdBmp;wL=XsMa>0wO zmx%(y0D|#Or~BddYIq!=Dk{s$zDe7<_3{ZjTUc5ZAEFoX^7av4-_l4Et(F|Az1zCW zst9Q5y|PYOSn?}5XgyVTt1_*(``&!KoF*&5e?+L6GyK;EYc=sM#s;&EgUQ6gV>QF$ zArL$O!^_b#c*4Q7Ts}T5>>U_tUL1W0g@{m}vD0Kgy_qr@&(_4Dk-FIl=Dkqjq zDdITzPV})DdCtS;B2f6rA(KhKItdsvfyp95)Egq~P2vH&4P@Mj&c{4L>PlY7zh4` z>Fs^;Q$&~=$@3-fRjF{cLyAd8fXL>7!fAoRVTH<93=1Pd%v>?v*SP@)4V&o&-0skr zDHzepm5JdE_4Rk}JXZuA{9TT**B&g@a){OfvlVtsQ&4bvq$sN%g0XW9sjDdjDkor_ zXu5u}zV6r*jF_frOXQqL-!4gPV(TLgi&a*y2Q0325!^CLaru@5zg-!|2T^YDu;BKU zL2q1xuZ=x*m3BMZO!?FX%xOLP$+EniwffIStH`+(geQcU$oK|>@L<5<)R(!hk(#~u zLZ)smCPRibJ;Tup7Y3dWy+A!wsN;9dX?<|t*qy$)hf07)Du7XSbN literal 0 HcmV?d00001 diff --git a/datas/icons-16/gohome.png b/datas/icons-16/gohome.png new file mode 100755 index 0000000000000000000000000000000000000000..d04204d91eba58294b24ef9c868123b706682073 GIT binary patch literal 617 zcmV-v0+#)WP)!f z=imQd3;+Sd@DoT7(u~UxkjnuAh-l5Y3;_rrmNoPDg9GJd%~b|%Z6;V4F)U8vW7K;rxNjDJ~wGXMk-3mY&E zef@`9AujNjnTg>C13Lpi05LKA`^Uh=!b7qF%zu6}Z~`p{2p}egUq2WafnFdP0G-YV z3^ITKV*16!1>`Z3tp7jI`Tv0~00ApVD-XZtcRqN@c6AQog!!vTi>e}D>GoEWfzh&BKI|M~NW zVNC=Z+#rAeVuZN>q`AQXp*VjB!sefU7#QXUKxhz-S@Dr!Ya&0`5P$$;02xrf|34g* z?)v{fZ#$6jwC(@@7gPTKe>MOA|F^6E2QUBm-+%Gf|Ia@D|9|(*|Nl3T1|FZy|=?zkh@E z00a;dD8OKT200g^nHQ`XjKQk7fS41EL1FOi7tqU|G7P4jxBmkK5Yz8}2tQBM>p<1a z%mX!m6KV(t!=A)n425eSFnk6Y0x}FBfS6#h2nsNSW*#tRZ1zNQ0SD9|cChom{Dc?) z5I`(H{~|jdVl!h~2x|O+G&6!Q8yJH$e*VD#HV7bqSbjqd07VbX_W$(+YGUGdJLa`LRpd=>RDB{Wlv!zZVyS`*I~Pe{a%n zsIx&fvoYwl+yUDdY;6Q~{@=e4zXJpiJSlt6|Mi!;=Yi;G_%?K#a(_(RupI{~!%zE;0;Xfr>#<1)@Rz1+kayI|?=o zrWphP0*Db?b_S&|knJ!Rz}OFZtT3`OK!5=NfuTEL8G?x100000NkvXXu0mjf%k?S) literal 0 HcmV?d00001 diff --git a/datas/icons-16/history_clear.png b/datas/icons-16/history_clear.png new file mode 100755 index 0000000000000000000000000000000000000000..fb8fddaeb3d598278f0cb73f9be1b7ef689a1c3c GIT binary patch literal 778 zcmV+l1NHogP)ApVD-XZtcRqN@c6AQog!!vTi>e}D>GoEWfzh&BKI|M~NW zVNC=Z+#rAeVuZN>q`AQXp*VjB!sefU7#QXUKxhz-S@Dr!Ya&0`5P$$;02xrf|34g* z?)v{fZ#$6jwC(@@7gPTKe>MOA|F^6E2QUBm-+%Gf|Ia@D|9|(*|Nl3T1|FZy|=?zkh@E z00a;dD8OKT200g^nHQ`XjKQk7fS41EL1FOi7tqU|G7P4jxBmkK5Yz8}2tQBM>p<1a z%mX!m6KV(t!=A)n425eSFnk6Y0x}FBfS6#h2nsNSW*#tRZ1zNQ0SD9|cChom{Dc?) z5I`(H{~|jdVl!h~2x|O+G&6!Q8yJH$e*VD#HV7bqSbjqd07VbX_W$(g31$QFOn?9a8vsfq&p-YDfA8)8|8BG1KoSW|^B$>s1ZY_Fnk5ZGbpM+^k*Q=fAuUwY=tAkLp~`6y;nD90hOl#aXLT% zF=ETkpcDqO9p(ZMeRiS?1OJcDXMxhLK%3t)Ffz^r83GVs0B5~*>WHPs0ssI207*qo IM6N<$f~yl+@c;k- literal 0 HcmV?d00001 diff --git a/datas/icons-16/html.png b/datas/icons-16/html.png new file mode 100755 index 0000000000000000000000000000000000000000..d4f54288eb35c020be900e8ef064a4648c4f4e64 GIT binary patch literal 1001 zcmVw&Zo13&<=U{hpjs?PBD?>~k=fBrK3`t=(~ z|6};_Le#00a=&0MXQy>OT|}qW?27vq#IZFl_twgn{|j zFNQzgzB91>`pMvJAk84k&B6e4tcr>_!-^GqfsX&r2oOMwBB?92ICYeBw56Erz199| zNk|JaFfp?-{Nom3c>UxR!}-0J82J9PFnH)IFsO=)Fl^a!1n8=-42p^h3{RiFW&j8v zrtiwii4p?898HzZYkgyT#_*7XkKsO-5W|B{?-<^{KENQRdXM4yyGIO*4qpM=?(S~E zU}U7lATBNp<^u!}(|;x=wjZAtsa$_?i{SyECc_;jQHDDVJPda~d}O%y>?*_K-&_m~ zatsV-p5A1*`urlp*RS6hZrr#6bb$oe0Du5uVf_2|`xOCMmiG)|3@XgB44mH>82*3x z$?*T~eujT->WfPd@0Q!CN0k(EiKFN{{0uQ0RRES!UzoF|3F)w z{NiDFb>{&Cr+@|n`?s$Q3^#T&{CInc;m42f48MS`;bkym_|2fsz|PLf@aWNf26J;G zumJ!8#KQdjI}-!97X!nUIAGvBXZWRB%)lU>$iN`q&A`C8gn{AVat4M!pMh*~2A1Ef z3@j|nKo^KJ@bYqj4FCurCgv|+IGJAqS^s1h7(PB?V7T7O!0_fF0|ToXFn$Yx8f6)n zf2c7q{o!NaU}OLr0F-2S`}Pyq0Du5uV)^jl7tg&H9~u5z0d3-AU=Yk>VE6?Lpw}N6 z7~Z~NVED$%Ak65=pen@2V5%s>z{tqRaP8U!pesbc1^@&Q3)7Du^SQo#vSxVq$MOra z8^hm!9t;dGfKLAPnSuG^7Y1dPAO>?i0frb`O$J#ZZeR-i3rwjN46j~&02=@hKuph9 zre0%XWv*xc$-0l{v;JG&>vtG7OgDW7Em=W$Qa^R-6azOm z2bc{IK;WeOV4~-41_saFYyqLhCC+wdq+~=G{{8sKpd&BApdrD>0LpNnya58BK0mOnWyMi#W03g5s XJ1jOL(Xjvk0?A24 zK~#90g_B)qTvZUqf9LMqCb8WlHf(4u6m2b8sD(uzDhY@n8WAd5B(OfI(9*n@LQq8d zA^0HF*OnB;heZ*sSTG_8f(1VwDk8;@P?J)dY;L=0lD%K&Yx;0^^Xf2g=D_*SZ_Y5I zX0F+KrH?7PCIW?n7o>L=0TILr(ptV*eQY zL#!dukQyQCz`a;_bngLL3xCubjmDQ@mxLE^9<+mw7B(~3%%GDCnSs<;uFiglw3pbm z{}BBH)jhz@pqIe*#JRAZP|!NUdJ1dpO+Gp?P8jxa^zDlbRu2PG0(JyYkc}(K-g|wH z?Dk#SiLjBwR-E$byT>^4!duiQPvCS;xhxd&%(9K{Pg)*9knRn zun$!lU~>8sqQ&0149f}Mu?XG#_1FV3J5|GXt!>& zt9p>N6e`vIAY~3dGs)GDPf?qAjpyE&VeYf{7#gfn8QF(58j1ue1W2`IEm}l|YaBb% zoxwYYcc!cF_8?6Y!g4?V-u#8{X3z2TE2kJ8o4{l- z-r26u;+#dC#XHxVd_oZjt55OU_umjj_n0_&2~-J_b@1NdokP6GdxtnzoZc170xn#d zzcIRUXNb~ho$78)XCuPq3E~{iYMjxC`0Z^{DnOM>xXfEXhw=LAg^kr)^D2#M%In=A z3J7|iEV?C1p#%_62BqYYeDzx(-hR|*G`8davu3j?z4#%vHk~Mc`tRca0000!iDev literal 0 HcmV?d00001 diff --git a/datas/icons-16/image.png b/datas/icons-16/image.png new file mode 100755 index 0000000000000000000000000000000000000000..0ff15f1a6ef0d8ef9676be3703cdf1926f7a920c GIT binary patch literal 842 zcmV-Q1GW5#P)I|<=FJ=G;AQp5*rl#r)fB*ht`19v4 z!>?bzf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqj0c#fB<5`Wg8Kr9E{J*9YLB({CKcU$w9M+C#f ze{2j#Km2D17yHkkE%}jQ-=iZ8qHmNKEcGlH+}$l0K7INM#NQaMUcC!82q1u%-iruM z)y@dlH}WxM`@DM#1CJm-12-EB!?fi`7~XvP$-pPX!7yv}K8AwgK8CMfzcYOQ{uAgT zMz~7=0*FaSS<3#;@$C#R4xMIr|Cg2F)VrSy5AVHTV0-zN;o*nt42Pc_W%wccfPt0y z3&Zc!7U36E(Wme%*@PS8U_FYh~+Q00K+de69$3LtPFh8QVb@KKQR1N z;$l#f<7fDO_bY=XBM*ZxA1}kJr?0>oL1~1E2@wVW0mSn6>qiEjukRT+U7Q#gc=;LR zct0@knkX>*{P~MPMM{=|pOu5*^Vcs7|Ng_$1|!fAM1lnfAeKk>A2KjJe8M2FW6Z$u z)%|t^VeB~ z-hSud=jCR2|Lz0BtJkl=nn0T0z6H9FQvhp10|+2S^vtBIs|bwm9}FPjfB*h5faF2` z{s;5}D1X5Cd-tAZ$j%O81PCCEya1AfC1IFTVRj(791Z{ihy^{nBBys^06>5N08eol U5Z2sUjQ{`u07*qoM6N<$g2xzi761SM literal 0 HcmV?d00001 diff --git a/datas/icons-16/info.png b/datas/icons-16/info.png new file mode 100755 index 0000000000000000000000000000000000000000..ac9ee8eba8795e788e21bdcf7ad8d517ee858a77 GIT binary patch literal 865 zcmV-n1D^beP)?bz zf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqi_a*0Aj*t8zUnlSQ9fd1S2faVwgI0-G4^L ze+&Qt#0c|3U|fwV!_VIlzqzEFu6^WW5M=tz;A7Yw_O++%Q2mtY9=Py~DF_wPRp zpFVvB;%^LBuij+<2q5Mk48O&N<*l|!OG%2pdjE}qgN>O%Qizk`HIV)G!*>Q|b{2-I z+paUHi19HfN%Js#{P>mO+qWM;?=djEeEE(6Ab?n&e&I=fedoK#(+`gse*XH$AR)xX zz{1SP@b&v|hKqOJGJO8_i{T&8m8*_DV6fE}1-jrb0}Bf?(3Oxd0SF+L8*c@ZUO#@w zpeWA6z|YIhFnjYAhGm?r3?DxKWB|G7$?Go+jQ{^K+UnFAQJ5eFYlA!=R_Y&A|BY4^aF!!~Z|O7$o^wz)=Y@ z1V)1ZKmalQ=X%%6%=r2D-yc61c-a3kF#h?$@ZrM;hF{-4Gw`whVfgp!8^hmUpBSuk zrNC(dk~SFO(FhPgAQq!+OiA01=lm6nz<6e00;eFbv;Tu!0K``MN(@aI?hO3g>_ET& z1$zM$27C9OW&j8vCSW@F|Lg0+dIpiVMgQ17USMYY!tnRUTcEQ)G02LtF+_M9F*Iko zF$nW>Voj|80mO(cGwJFoGJO5|g8?M?bz zf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqi_a*0Aj*t8zUnlSQ9fd1jB%eia5ja<$L}! zGX7%#2q3%$APi!F8vydcwQKhnI62uF>XRb>0|XF;7hnouVFPjnGcya&B_RF}26uN0 zhNn-TGqAC70_oQb009Ix;On>FyjQP1Ojy5RtKW~W9~tJ)|H8n|!NH)cti)jFV9OvY zCBv|F%S8qcPYs3-AHFl(xN(KS-`^MP8h`)-8*u8>{iV&7t-fzx-eq88`UAA}Cj%n` z3&UY19){J6cQVXbJb^(;Sp*oc{~3P&{>vaOEz9u!{THwc0RjkYz_W+%T!sGrU=Wv= zWBAMZm*LO99}Gz?qBt;m$efz<{&d$p4=+S)!b8{oG0RRC6 zHbBQf^*cvtEr)~ z4FCurumR`KKU(k~WE0SdJlyOI{QR6i1As1JWM=pa4749Vf1#uaQ&S6uSFb*R`2Ya~ z_QLa5UtazH`-S2Ax8DrREG$6G#PH|$KcME{KreAHh)VJ>2nuimlQbl4oH})i!P3$k z%mxS`umNlw%*%uY#f6R?zV7n#=MO6uR%UQQl9v->P*sy)5EbEI`1kKWG=VVyHJgEB z0|Wp9h!I>u(|Nen96iDsgzkk7Epv<;+?`Z~r0Aj(GT|t;w01#jR XA%+BJG=09o00000NkvXXu0mjfu+ez- literal 0 HcmV?d00001 diff --git a/datas/icons-16/kcontrol.png b/datas/icons-16/kcontrol.png new file mode 100755 index 0000000000000000000000000000000000000000..57b820f7d1aa944982f12be7ee56bb86b71fb0c7 GIT binary patch literal 1205 zcmXYwYfMuI6vxkfaC!6srKq%EC=Ms$Ho@VXEJeHq!`Ku7fuJ!!d9=$CA2Uv6n-bV? z)y*L@3WN#9j4(%)huZ`DS)Ql_dQM+-M#3*=BxwT_sR|&lI|}A zs$g$kVOY{`sk|_)P+Cy**_}d(dnPd{fl5ED1`2L)h-7~_7{;f-_$LeBo-Bp*?Wtg% zwTPzeo@WH4w}Zf8nBmZA9Ovvf!dVcGHM0n+?Ycc=DBZV*MipfU&c>8l92qqt$*x^O zVQl^VnK)L|#>^ifGBZ~+3oi4^m?J6B51FdJAb@W{BxKJz54kN5swivcj zYhZBL2;G-Xt5AiuHD;lufUVyjN3`7WU*c90UQ-)C>2?V?e z6bKvzhUFlAqZkrngW>MLgmb99_B@JvK7B3YuyGI?8V3Aj7}!Gs0T>Kchv1;oJq9bi z0DKY$!UKgcArCU*LcnMR==lB89jo!#9~h3?QN?lNz&1j3*-j3KG%*q9(HxY|U#!htzt7|tZu~N+UoMjsb$4|10)OKcb1|FOW<6a| zGT|B6)p$iE3_V)x_gh89&4lXjO3t0E);?-fk);wPc{W%=%FWnrO*^B$dT3j6bW1af zZ;sjsEq^&J$4VIPy<>Id3Bqh^vGf!h(KR~}Ws8qIE6*8QT6EZdR9dhvGe38pt}K(< zEON3*tUPkBv(ND&9>d`kCpg16kp+f^dA$pKc_dh0IGCe~o2~R{cYn+S&H9v``IH|o zf~UMi1J9ENd|`TqVZef7i2F4-aHAR^>`2?yNq+CzLdHL4qrc*;wua^9#u|m8Im>$) zRhy%#W4^HMC>z;QT}CCOoYnSt6n{N7+_2O7E>A4aljVU|m@FyV7*rm=VT~Ytl7H&Q zMY*|LPyert6`w8@2;RDIv7xKsXJzNbu)e<8a$|h7Bulvd!RYeZ4L9l+CI=rbRw_-Z z*PviNR=+`3?b-TFZ}PGbvk}wmjHh!fcvdK0>*YcSu-h4!w4q?2ad zccYFM-GE|quRy^90|Nj7#0*BStF~dL$2>9Xoa`CApw&Hp&J(@!rf;A>q0x;&+vR%Q zwW^{9eNW?Y)G=3&V8pchFf6J_-H}~__^}9PhzcJmHmFP-%evlJSwFM#d_gtsplf@? qbx%k7I`0;Vgh#~GD(Ox@N%-iK+D!vL#hr6&K+@*qgv*<9OaB9`Kq0;W literal 0 HcmV?d00001 diff --git a/datas/icons-16/kde1.png b/datas/icons-16/kde1.png new file mode 100755 index 0000000000000000000000000000000000000000..90516eef522d1edcd04d4196e65d60f6cfe32c92 GIT binary patch literal 635 zcmV->0)+jEP)ff`tDwN}9(JbOAsBF}h6s|3Ay&55xX@ z{}`BnzWMX#Kf|BD{}|qWVP<&siH(7oiGiW=10zGbz<(4M>`Y()yB;8bSU|)-pxnRT zK(8?VXZQ^?;QLPo1_l0q3|^`~8D#czFt}O+6&+<{IH~c8;V;l|b~aW9F2_UvzwP&6 z1PCCA0snwD15E+yXZQ{DM(hJFh*eh^AetTjGq{2*Jjw@m#m`^cz%)Prv4A4s?>~^U z|AP(s^#|fquto-mW(JUEm?1#0`zRs|00M{!M1TzV^#|yRUqJfTKZGnyGc3X!k)j;R z1PCCo7ykYQIsHGwU!d)&FL~h325Z_6u@NGMaLEn^FR&>90mR@o?LQpsY6d2WeGE_@ zIC+4@u3x_nk^2wB|H0}&VgLbzV!*$D|1b@KDujrkY6b}a1Q6T+kmeshe*FLN;R9Be zpljx`T?du~2p}d{h5I~F|Qy48a14Hl| zTymFx1e^^IP@rby=yR?44>k=TfEdu+h=F0=f%zF30|6&M01-3*ZV0AkaB>9*FaW-> Vl>h-VIC%g7002ovPDHLkV1g-G28RFu literal 0 HcmV?d00001 diff --git a/datas/icons-16/kde2.png b/datas/icons-16/kde2.png new file mode 100755 index 0000000000000000000000000000000000000000..7fa154d8f237f73af42563d79d1761c866f7566b GIT binary patch literal 948 zcmV;l155mgP)ff`tDwN}9)kHP~!pWIE#Y{~tCN00a=D z%hdn>vmE{~?7#PqfeGlFKY#u+{Q3Kj;q4b@hF7217+C**XApU@hC%qje1_}R``|9v znZN*cJwO1lfQWxUjsJcFy~6mP;WyBLe@{;_DE@uU;3y@@@bS)m26LWP20qh&4C`L@ zF|g|-GqAI ziSro#e!ItTp{|Kx`?0MIi~@=b!hdyuIz1Qw0*D0^34i~Aoc$kc&@Z41{=R+B;O54_ zpk!mnz#!Alz`)zaz|33C5D|5V!R*#PhGWMW7#_XN1bYV{fS5o8$besefUfxUpMm9c zCxeyPB?bY-SOx~wMGOqw#XuFi7#J9X8F;LhGU!6s7v%K+ z48prS8M2ic8Pbar7=&Cx85meB8NMAp%h2Qtl;8UXXowdBgZyy@D+>k&P3FB|0{{Yu z!EM@qI5@R+#{c78z+~}#6Od>39~g1}8+{r6U%z(ke}gAb{4XfUIQ;+rW9|RrJq-V= z-5JsV0*DDYPE9=17+!J}GF+JD$H4GqAuw8u7^({x7?zjlGZf^*+*`uH@cJGD2Rm3x z3P1qCUGVSUzyCje{P_Ri*2VvQVL+QMbN&DS>kUwb|No!gK>i;MprVWaKOW5dzcQES zzl~K8NE-t{06|^wpW)lLZwz0*er33GelG(nFgag8{f*(v5r3f69tLI>b6^NBXJELM z&G6~&bcSg znOPX5*x4AKHg5gDADH1d0Ro7TP0000&$cE2 literal 0 HcmV?d00001 diff --git a/datas/icons-16/kde3.png b/datas/icons-16/kde3.png new file mode 100755 index 0000000000000000000000000000000000000000..fd120ad7971b70818bf9066894db284e914c8b94 GIT binary patch literal 998 zcmVff`tDwN}9)kHCS(DWIXDP-KhWp#ON~h z|Nkt9KMect{bOJPD*5y0Kf|BjKN&uJ{K4?@3l9SmGYbRzk0%VmPnI+M`p3@jTB8K) zf}IHrVAlf#5DSR-2h{lQH_$7L{~3OR40wH)LFxHw22)-xhCgiL3_R~vG8oGqWjOuP zlHmb)6R0Ro5xp(&42#>2OISJ!xILEhsPMS z6}cGPB6S%U%T9`2uzgx_3{KkHU!|c|;z-JHy2q3TvKnDE!!@$6G zaUz5AkG%|rI^P+LZK4?d%lk4gvQGhO-Uw8+l7UBI2#=vs!>fIkf1_q+%CwU~ifX(of1 zAOpjj-(n1%d;Y%z2p|TxY5(Ei-HZGG*EgE{|9GY7|Nnp4K+N#JHIU)|wQE=ZH+cbF z{2P>Ha{hn3mh-|FMVRf1Nki z|5uy9=?#cy{{R1H_5Z8W8UB~MFmwR~5DP3pfMh>^e9Q3d;|qotAlE()VPH}^!NBgU z&rogsnSqVjf#Lt(N`@~Njxk(6HJ@SAQ4OH38-D--hzY8l;oG-w3|~HfV)*#x3B%`K zLJUXOePZ~0wgD)&jDd|KoPmL*nt}1rB!;Uyr!(w4%E&PPQ659b?*CN)0mKNhnbBhN ze}=!`7?>FTG6*uiWDx#$he7P;HHM1FrwpFORSZAw-C{VqZZX5Fw@(<}ykTbOx>m?= z_f$7HB?1HxBd**Sug}P1s>`s#-h#pX(oNP&SFinE28=9jPA&%FKff6kwe0wR7MS5U z0Ro5xS2kUE@&A`%2gW@ww=&#iX8yhK_kV`#K&x1O|7PG|V`2CV)XW7`_6;Dw04J@C Uh-BYKa{vGU07*qoM6N<$f{xzbmH+?% literal 0 HcmV?d00001 diff --git a/datas/icons-16/kde4.png b/datas/icons-16/kde4.png new file mode 100755 index 0000000000000000000000000000000000000000..1d33b5db1d518f6e7ea8804a8ca254f9fa33c56e GIT binary patch literal 997 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 literal 0 HcmV?d00001 diff --git a/datas/icons-16/kfm_home.png b/datas/icons-16/kfm_home.png new file mode 100755 index 0000000000000000000000000000000000000000..d04204d91eba58294b24ef9c868123b706682073 GIT binary patch literal 617 zcmV-v0+#)WP)!f z=imQd3;+Sd@DoT7(u~UxkjnuAh-l5Y3;_rrmNoPDg9GJd%~b|%Z6;V4F)U8vW7K;rxNjDJ~wGXMk-3mY&E zef@`9AujNjnTg>C13Lpi05LKA`^Uh=!b7qF%zu6}Z~`p{2p}egUq2WafnFdP0G-YV z3^ITKV*16!1>`Z3tp7jI`Tv0~00vdCI)6h1qK^iRR#}MMh0dkKJm{y;;MYR54=CD{N}NOsXeFOH_rF}|NZ^Nvi&T> zo(FFjuH1dea1o>zAOHYC0KWeL1_S^HKq&xE4F~`q7Z({24=!Q>S6X089w8bn{l2{c z0&#Hw==uQl#RdSyuKMt>5+3di@bmu%%H9C6?ehTB0suh(zW)O*9RN8R5CAaZ`zynC zk+oD{TUKKj77`Z;1qA^L0s{aE=;#0yC?y6h3=ShT^7=f*^%%C>_wCUt8U9M!=>W|F z06_r0{{vDs0Acp|4)KHm9%48-GfMy?A^_jt-|?oatG=qApTEVxz|->i`TQdw9~u-u zKL{{wYeU=Z_0a?F(-H6X0Qdrkp+1sna;cnR^M4JE|Ns5{|L^PWzN)CI>J9WB4+9i1 zGB60FX=zoxym8~#e<0YnW#=tREx}}SC59q^0AjXL=Cus|AQ~p6tRQm#*|U!!ix+3# zfBSX|P~R^G1o(0G&6~rVA|m{@Ha1owqGG~7-`$bEaPHCtfB<4*f6u_F!0=0%fsv76 z)1ybn?*0G2p8*^A|DR#SvSsrgzj*OWP?(=VRLMZ}%{PVz00G3b`4a1%|4xo9|BQ_p z?(*cdiapx)9sgUp1fx`4iG>riq>i}42|{wnZzU+ zSw4SeX6WySYhY(*XAlq&V0iiRC793i>lZs)Z!Zhe*|QA4*R1`{!otV|5I{_p@^8&v zzyAid)xgkD7w8pUTrSXJWi=A#=jZn{VR@PBS~Sq6820Al*_=I)gUC_F&m576I#{`>*66@-LD3k3xm#Z*+7?tT3H{Wj0H+dM4)g#ZEoK>)u0 z1pNB_0;{H*uR}^qI2{ND41oCfe;Nk|7PSBWpzHzy;t~=P2PrBlF?DZmdp+glGy~-2 z0Ia&bzS#il*#Z9m{sI6&0KWeLN-qFl5DNeo1SDnhh$$nG8ROyx@YU4-;@R2y=_e=m z1Al)4AtE9T8X6h^1O){EsB(DDi>H%`H7WK(p~3)=0suh(zW)RB_yF_`2>>kJ*Ur<} z-RI8=4Hg_5E-n`xA|nGLKtBi_Q&a~G4G;k0J!7GXKxrzurV|6tBEr> xaI!LRGqEuIKXad9*T4S^FM#3u9;6Q-zyL~wdE~ju`}Y6<002ovPDHLkV1iFH`+xud literal 0 HcmV?d00001 diff --git a/datas/icons-16/klipper.png b/datas/icons-16/klipper.png new file mode 100755 index 0000000000000000000000000000000000000000..e3f1ea0e0247a2c89cbd648f2ff836975ce1a06e GIT binary patch literal 622 zcmV-!0+IcRP)vfJ_aSe+&!!8l!U z8Z0>#bP=J1No?c=fDWL`9pwctX|&tCE}~rB8G@Fysn)X3I&Npzx5Uy8J%By$($0BCjKu=TI%F^NvJwX?_U ze1R#~M20;`)cp_8*-W18Qjx=k9|RaF3q$KO zB^Yj_QIO+U+*`RrJxt?y9%0laF;pdhq(26vgu$+FlU+N{KHwa$NqPco+1C-8@fXxi zEyMSHc2i5I*awyN(irp0y_6?|EpGTqMRJmFL_#;w+}>dO4Yo|#y)DYU(*OVf07*qo IM6N<$f-RgLK>z>% literal 0 HcmV?d00001 diff --git a/datas/icons-16/klpq.png b/datas/icons-16/klpq.png new file mode 100755 index 0000000000000000000000000000000000000000..bf65a632c6a35f768421c484628efb343e333a33 GIT binary patch literal 1068 zcmV+{1k?M8P)Hq&+A{`*r|%gUcAfk2f9s0L z3xQU?0|+1#1OEU2$MEyVcLqaacLqKoX@>ap(ndippypQ$47Xn}F#P-t#Qzu=maf@z z^T*?Tn}Aw=00a;VstXv|I5=3HB&FmnDw;QlTU+S6JObMI;u8adAU6X8FVL{N&wl^g zyJ5ykpz=E)Jpcg&H$YrMUb&^Edabyal>YKH2N^iHg&5YYKFRQtk(oh5OMyXBLXd%# zjg{fZ-u+J*o*&)^)bbmo4y?&)Tv|L(&N20blyhTC`UGi+LWp5fk| zM-1#-+zhgE(hQuuoD41w<`U;G++4qD%l-ok7fhc45I~F|1DIKOgjTM*_T0imnvIK_ zi9wJL;;PqgzcOsza*E;Dky8v8uRdnr;o)FdyRwDh?jt6Kdk_9FY~Qx*C_nPasA z5?Z|c>OCGI^ZCm!21X`kh7TW^8P;yT&+z>l z1H+B$yH5fH5X1}r|1-S#@Q;aI_#cC)3{4hu9g^surMbB z2L~_^?|x$V`t=WksfjAXhj(JE009J!#@~Pbe0%cl&PyxB&kW&QR~ZUY1R3;=_W%F?;Q#;jwEx)X!2i9^_q>0^f5VLk zLjVE@L-YRQfB%C3hz-L3_9=id7~EL_#^?PR;4T9QAe;uk0J1^Y3;_rr6wM$oZ^jK2 z13(5k1#Cif2^4?~0SF)_T!DDt#6K{0uz)C8S^fYb0St@(3mCx|1ONgE#deqrki7x3 z{eJ_)|K+9(VCVmv&j7|C7XSnh3pU$fwxUFC^i5Bh!JFa zV1Nn3{foEZiWAe-!L)PWW`;d^c_;=k%5}im7m6bo00M{wW}}0JI*Oms0VoW@I~5?V zIUE5O2M8dhNuB15`4y)yG=OYJ1`*y!0f__v0*HkH57@ijmyw~-??1@@xWWJ+fUqVa zP{@Px0t^FV0G^%00IcF3*eysKO<00G2=Vj3d|GcqtUF@bFdX$FDmbC%$AB|reNpc=pk#!Ns1ygi&5-n{+5 z@cGMEhHKYv;Pe7O0D%qo_wPU40464g0U+?_&mRVMb~Z5k(WB>ZSKPRHn_=U+m5dUS zQVakA1XlU~|9^%*K)?U_^A{WzAX~qE|G~h)!Op+|H9$l}fPtT%2h7&gP-E~93jhBX zXaPU~fn5L!IFKPA`p3^-U^XZmSXh{WVyNK~~}Uig!s#QMj{Veuu>th(3Se3Ijj@G2ycj-Ec-M zIRYSn@EQQK84*5U28tSh0Aj(V8I)jd+$0<>009O7X0Y36JzOCC00000NkvXXu0mjf Dc1z!v literal 0 HcmV?d00001 diff --git a/datas/icons-16/konqueror.png b/datas/icons-16/konqueror.png new file mode 100755 index 0000000000000000000000000000000000000000..dd5add25f5ed495f85f03641dc29f732cd5fdeb6 GIT binary patch literal 833 zcmV-H1HSx;P)a+uGU(O3C=`PL0*Ddj0+8luhHqc}UA(;Ss|RUL}U_j}9^{S||%Q1R#LmUf6r2Q9_T0pMi}_gn?Dkl!5sVQ0gDh3x8P| z{yx9V@cYL{hM&)`FnnhgKnVkY0Ad2!E+hZ`&#`Np8J=-UF}yIXW_Zq_%JB3X1H%&_ ze)^Sx;o0kJ49}T_8D5A5FueNB&hW=@8-rx{Y_Q(}0toDaCl_Y3FoeEf*mTgBK}Ru@ zL5zckfeC0k*adeMGyMDfisA2vT?}7-tYx_I>^8%7`(tP00FnqiNG#x1VXc+^;P6-BvFF?b;19ix?Gcd?cfXMv>`b(e)ZU8_4F@aK; z;MFrg%|HVr>LAYh1;m`@3=F_PWcUTt_4PZ@Aa(|ZA0R$2gTzxlhHo6d!2SRTAaEFf zUGelSFf7!83PA!u#ZuFN8i6MK1bX@p(AKY?fpS2a#Tsn$$A#HUAQ~Wm;3*LlEiaU0 z85kaiFfb@hVPN0~y5JvB!#|LVfQEbrTL1n5gT%Y9C@B#jfEbZ86D)3DNXY|p5j!X& zfO7-G&)*CZuOEQbAZrEzfB<5|mK$LPAp>-cFaQuhSPdWr00bBSIh`SK>L-WK00000 LNkvXXu0mjf*VkTR literal 0 HcmV?d00001 diff --git a/datas/icons-16/konqueror2.png b/datas/icons-16/konqueror2.png new file mode 100755 index 0000000000000000000000000000000000000000..331487c94a4763a823a4c40b736b2f8804f83ce8 GIT binary patch literal 1028 zcmV+f1pE7mP)yx3-@kth00G1T(g;+<@b~XuUKtsg4u60DEF~pH24-fk6a!RV>g(69*2j+@ z&)&UjSKi-0f46}2fB--M!3^M#kdT<->+2f_w3*@k`%h4f3_x4{1My$5Z3YGgia^oj zA3uJIyLRQudXO4`0Ac|G1|A-sIH0X@EG(=HPoBI23WL1F#K6SF!0_h}$aQ}he*O9l zbQJ@GkdQEswT<TZDIu4`j3H?l@)B*uU~(_w!eG#h2i$?hYYs1nhe^yS}q(M9HIaL#PaX& zUk!eKeuk${KQP?A`w|=ze0a2G$erD zmjVbN7N9A-EUfGdKYsjS;N|6H`1tWN*qNZP5ftPFYySH6JJ3KT1`ZB327Z2SV6-za zu(NTn0i&NAAb?na&iu#4#RawjN+2gKTAGWnu8~v0+e9Y0T zzkh!Y5J1eF?Ck&U-o1On#nr{f!NHvW#fvu#w{ATGJ00X~kRc#fefjc(!QbD3At1n! zVaejfJEu>b*2l)i_5vV)7?tG}fPVkRU}kRa+SAuNMMYIr?arMi4Cl|^0Q(sPBqW3x zOiZ+aw9vmLix%x_tZ!%mX0TJhsQwKQKwtwv;Kz?24ARol`YCCt1K zS%D$_|M%}--);k)wPf*l6vofJxBXM)QZdR)Wwb>EbRb9>BEeA0u*k%QF%`@bOKWLAs33}eKAdxMKAb1d`JJ4W zVp&1h{3Y`NAgpjheo3%~zY7iuX2CS02o{z`vPlAPWhje%>`k!e)vPb8`J_r+Q>WNl z0TNY}vO-w6TcN2asZgj6R$D9924|8A^Cg=PJOv5#Fc`3l00MsCE{uY-j7*q%JBHD- zV|i=VuG}K}K$Mr3mKyfx;nQJ&9x84!b{LN6PI?5ym2WOPMl>Du2lK_7W3%H{y>PuKttZJ{CLPTK{9hLY zuo3|n27n-Tt;k$?DMy+e6SFJ^Cqh|3(LQ)RF#~`QOt@y@ZduVym4ksyS?2Q zPI&&8;idu}GH=6zC_%@2D-zjJ39;by`+*h82Dd)|64S zZa2Ls2Vf6jC79?l}D*LIJ;?vrml6 z$&?0TG+)fvoE||Au_!5&m`;mC($$G5ajJnV!kNtAab``bhpO7@>Rc{=JJL${da=pK zV;yMcebN7fr>&o}IO!2NlBGrp)r2(mz8a~^+cVOA*i|N=Q4t(rWMr-ctxlDpNmg%p{jnPxNjJ5N9+kh}&XtCdFYakDIlccXZg*3?hDr&HwBnhOKn*t(Wg#;7#6;+=;uE~rrnR&JIk1B0cE*TS&kubOvWk~ zb}2l6-zr8!5sNh}CI4&#=@9$N*SOks_E%Y_)<1ZT7hrhvwiDw~M_9unIm!#nXpj2L zo);j+HpFKX$H&Ltx0+cAAzfRdqxX-GW~5)xS_YhB_7U4?>g4dDLt0N(BPfrKC2Z}S zi2mxt&5|u2-ac1Rv*{>x>xS;G2C|Py3Qp_n(~ld--(=5x)petE>*Lb8R>nuW!j><< zS>bm;D?E$uRW)|$kLp{0Y1e&!tm`sY5R(%+ZKzA@$?ZPip0)XR8vJt}|Jq{PMxhpc ciQyz%Y+jf7`wEpc_~%f#UY7quUismF0Q(d5+yDRo literal 0 HcmV?d00001 diff --git a/datas/icons-16/konsole.png b/datas/icons-16/konsole.png new file mode 100755 index 0000000000000000000000000000000000000000..9216eed038d9d2eac49311633e1fe8debc50f89f GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qN7l0AZa z85pWm85kOx85n;42huMX7)lKo7+xhXFj!4zU=YurzH;Uj1_s9Yo-U3d6?2mQ{Qtk7 znVFSAp&`P-?~@nrh%9`@A>h!n^>qF}|MFnP)8ATtK9^u%>R>%KF;n%PU_195 z$+~@&%xTOl0^FNgmha(UW@l$V+%Io0ac_V9`48XTMjO<9|E0=&_%k;T&v`u~gFU-X z9|-s$zm8p@Va5brhRnF>%lMW>Mn+1`m^o8&#*7B98Ih6_5;G+wW+(y`U&Crq7LCO+GOiA6wp=}k$60}KZ1mUV5I SwNC*Utqh*7elF{r5}E);G0)!s literal 0 HcmV?d00001 diff --git a/datas/icons-16/konsole2.png b/datas/icons-16/konsole2.png new file mode 100755 index 0000000000000000000000000000000000000000..1954bc1d7f0470c3466a9fda667baab7ab5f7762 GIT binary patch literal 1161 zcmV;41a|w0P)P2Sbwx7lRl(JM$|hCZ-Pzj0}HRnHl~tGBW&P_|Nd;@4x?F zA3b>RrYzoX=a)|({s06J3p)z~!{7f53{red3@^VhM&5e-B7e%RyA1riYz%S|ObjfH z|G*Y7GW};@0-9i?t->HFqsU+xm|neeerp>*0I>i~W&jayzB1T;{`$9P$JHAQJI$9f z2<*;c_;rbu;qRZ%42=IiG5r7ifkA-tC&MIlWd4Y%kpbvL zo*#didhb7e&U5x9BLlnP6$Tdliwpu>VhntI{0!V&{0vMiJPZ*YW(<1jVhl&mz5IE0 z>+H2mjQ_s@1OPz*zW)U9`Tqd?{Q`3a`0+KW)zSd+LcRbG)k**f<}m>O2>Ag1`v3s? z{`~+W91Z|aJRbnw?f?L|u%yHJ=g_zY2@UrGh>3%V(U_0@U%}?ncNw0)S7%T?+Q`8F zz=na5_X7h9Gc(Zdj10V7Yz&1VS`1<$oD5rcTzPhL-=YPqY@AO(VFM6AOs~GPEEnba zBXHxRFasaAG{`#)eD5_Fc!7qou>WQF`;U>q#YmLFMpu~O{6hwY6YD1}XZZN^AR{x& z50C)>0mQUt*P(OIKQsTy@ljx~PyvQB(?15Lznly#z>xY6j6)eQ4u*Ia35GY{85p*2 z+H>vojlG*#IJjOiKmkAiF~7LHf9>%L4{q`cORIQWN{h>hu`|B?@`vH|=f4c!fBj{M zvgTtjRN-dWa{4pF?m5--{(ZQ!mXU@18_WQJ0Ad#6=VSQz`0~{gyVkBacJBUNd09zC zKU;ZmZcbJP1z|>pXd51eqqqMvY(8|I;p3GVOBsItKg!6&1k=v|5J1e_92^WkfBt0P zxqCVD&k~g0JWjJv49|ITjqd$+2EnCR^kL5bhXK(-z zKrA+H-V8Dd$_xe;jtuYrFeuzSv!lpJSx)oSr<<>CKGOL1{udvYyFMGk|39isH`im&EC!4%E(V5wz~ue&$A4fr{AalN z@;Afn*X#_po2i$FCWV?mzMP#Fhz%zC5_Po|%#L3@{AJN|^#2Mo8~Yoe%HIq~ b03g5sszr6`LiO0400000NkvXXu0mjfEA|%~ literal 0 HcmV?d00001 diff --git a/datas/icons-16/konsole3.png b/datas/icons-16/konsole3.png new file mode 100755 index 0000000000000000000000000000000000000000..5cb16490dfd3d751bc9e4f602474d9bb0ee31ce1 GIT binary patch literal 1144 zcmV-;1c&>HP)P$Nwf_?*C#OtgNqC7@0o&XJq)p%FOVGk&ywU@W-G3|Gz$Z z@Ze2Zyx-0*pFaEn2p|@A76yjD{}~vh_?Q@8eP)il{AOQ%-HBEP5q4fC~mj4_K z%s|ZakBfl?h|Sc@8Kk5Y87u?St9QT!xaXG zFSi(Wz1YLR@Qs6k;VVA_!)E~o!T-_>M#?4(Ow0@npBO}485x;o0t65XD>Ea=2RuK1 zGWK42zlrD2w=)b3d{PWdKmG!}#l*nO40HhlAH(nOoD8uxfeiY}$_(31y!?4~>+H2m zjQ_s@1Q5%IpZ^*D{$VZt|L>0Jw7b(77=#2F7=Hr|1zE$y1P+{Ee}6M5OQ=G~dVaFg{F0|Ofu1JFvKzkq?m0t`Lo zzYJVl91JC{$qeHB!VFt>UU_zN-=YPqY@AO(P6r4erZ?YMmhr ze>zNi7;J>Cfd()#{AU723o|prU#8y-;sVkP83u6-Z-C0TZ{Bn5^^LuoSU9*|GC%=9 z05QL~vVZM~^Y?Ema9gURYDS972}vW-H+G6gz<|ZRVALmUetkM)9KF)yXRET z`}g6_T1FQ3Z!iM@0*G0NpO4|gx9Jux92wsK zVNkevW=D~+vaIIIkJnz^dZhO4{VyIacYQX7|9@1OZm!qRdwlWac0NAg?~IHPQvd>p zaVyYtPHq-Zlw1A!%dlQqj6qBU7?b~i;rR2%e}?bB{xjTs`J3VPYj%cP&z~@?YY50= zdG~ZO3mXU60Du5uS-s~4Fus@=zJ0u-psOLw#$}_;@bL>!_usz^|AExYFN_Q?zp*pC zc>jXo;l(RoI9RyF{xdW20QG(W82}JKj4CR+;Hdli;}ZiDC#QzKZ+eSIK#HHXGB+zI zlihjzn&IgF6OT`9nQ-XKgRASA8ClN&(*V#`hMyn<00M|nNmd5p7ht;o_wO&mpWnY& zgp_SuO}&x|nV8;+oZLR`*xOr=H?lDOzrxJM{syS>Hv}+G!#iGmr0000< KMNUMnLSTa5)FDOy literal 0 HcmV?d00001 diff --git a/datas/icons-16/kvirc.png b/datas/icons-16/kvirc.png new file mode 100755 index 0000000000000000000000000000000000000000..a710376f21f6d00a376a8d25aab9a029e3fb2aaf GIT binary patch literal 836 zcmV-K1H1f*P)C z004q3Vv_&>010qNS#tmY3labT3lag+-G2N4000McNliru(gzF>0W?ot5~u(G0?|oC zK~#90rIXETTxAr8pZnfBnU7>9)0lKxs+87JZNN=MgNuk8MHc}V7Z>72yAKG0?xj1G zYAFT%2Lx|rA_^{wv_^%NC^eBu4NaPiy)id4nckVX-yiSm!nD+{l?Q$tIEQoi!Fdk+ z&(Qu}@O^*6Uy9#S39l4J^+}bZ{B{rxSG}wDCHw6cR-fDY&uzmU?~TBYyx2)q?4&B* z-B%}3aVJr|C0Bm`+O-e=)j_x0eX-CfH$`F;HBEb77ZWr^tPUF=kVK>DAaBugiY91#7;u8mk<^F_f6B(1W-TNIXvJ0Jk|zF z6Ugu`LfkB1H8PZ+sGU|;!2^0nJsIH7!v>ox=IhXzq0&)kV zagEqXC`|qYxkIoCJ6|T;I=4ZdWGIyj;2{AVQA%bR38CY&dA1J2PbeRHkKUDCN>d+$ zZ?W-#!}fwh8pLEGBR3>K)c|z2)*~bQ^BPO12-_9P5C2T{^m!^rzCeaL?S-dFjDWBd z5S2q>f)vmMuoaa<&8>7-G6E8O?B??T9Gkxg!1k3H_B4rmu+O03;ZMbMCObR8KmZ#+ zXYrZKBQbuM;IrAB1wb#R0JOe+3ipu9pyA;)Vq~1E^%EPP0Uf>7YDLr2)5EA7zM2~G z)!JbE=pZfV^;4Tjr7`Fp;Bs@0u$GaIN{SAw9$j7z#{73J%d(Aq5I+T8T041juG`p) zkMEq+FMV`IWMxTSl&Feg#MKC*K0iLzx|NQk7l4(&plq6E33vy19jI2KvFf;27fMMo z(!4jZ*OR)u0bB&Wwk#|D$2aa%`8Y5OJOPXY68Ifh2Cf6QEz6SkX8r*Cihf=TguMCy O0000NF))1I$iVPr9|HqR4g=30E`|e)91KeTmoU^Z++&!|Aja^Q!566T zG7z5vYheHgAQlk82+_~*?>7Vgzh4YLfXttNzA%*fN81|zH~hn}N$U6{h75+|3_J{? z%$&>?fB*hH3RJTjqz52?7(g!Iu47>2EN4h#>u31DTFr2kL53lRzk%!Vp?~ZCTmIMn z&v2dLKSKz^Bk#?&f5IL+{byLp@R31^Ar7P;Ab`LIFs3r_G1W1>oBw&j|DHd^{~5{| z{yXe3{D1!cp8qWW8UHgpVEAu#K>h!^{}cX8{OAAAa0h6h6vIrQei?uOVgeiTnBhAc zHyg7Vk14}F=En>S=?n~SINvky1ECIs3IiJhD?_;1V|d8$jNu$m zD;q!nfnC6q#^A@0!tg_UALoD8*Fe)j@Fc_klxq?H4PF`i7d|8OKk1v-e};`faYLYc z7#OmFSRZ5nKmdVV@K2s$O@3P#yRCvP!|$s=f$Izm%zuHdxVx3X?&f6%`CIQ9_MW}S zpz>6nfx(?YltF<3$Y21e`~?s|U>7j>Gi(XFY;$;Q`d|C7>VJl2hX20noc|yGx8}dbPv!qWx&LJkQvXN(cZS8zUj}uCDL`wK zfmjqEfFK4iGl&4AdlrKt!xjc>hPz81O#UDB-~B(sQJ@BIhW}POjQ(H!zx%)8e|3l< ze!vK2VBiKh9w2}q20#E85X*6yb1ta(ANQZ*2g`qk3ZPF#85T15FdU3N?DaqDzUO}+ z?>~by!vdgMF_0#J075nZ444&}J;bJQeq<;GYF1&`3KR+k1r~z@LlJ`|FapJZMldi$ z0I>i_JwO04g7X3_J0gG$)Q=y4_$DM+fgWW5<^To;U`R8(0piD?Gzbu20Br10>JtGJ QS^xk507*qoM6N<$f~(=jQ2+n{ literal 0 HcmV?d00001 diff --git a/datas/icons-16/lime.png b/datas/icons-16/lime.png new file mode 100755 index 0000000000000000000000000000000000000000..f1d2f057b5fc58813f8b3397d0797381705252be GIT binary patch literal 923 zcmV;M17!S(P)cgJRi^AK=%W?|gf=w~zndrLj?9q>-kWnQBJxKRofV zIeoS^`)aj3d{M>vDMJX~w%qz!WBtmn3x8bM`hw(Pzc?1dmk}?Vo4q_$dHj73v*5df zY`0c15O{7SuliHsZlnI&ovnpSH{RM^KF&#i>N|*wGt-~FIQi1MVX$Fn)fKiWu`MGn z*`7eBV!OGBEwa(E>XWasQkzxdeFS?YVhBvrajdotZ`^2TKFkmO;sOaV;D2gtAkm z;*HV_HYs}p>Qd^<^A)K<9|mAyqxI)xS?SX^>|U1Di1F5QGhO50^>8Bmx}s!8g61;@5>5_G(h= zKqRr|Fx$aEpwt4HN{Mtr81--p6-*<bHTO1k%86R-QRO^L&)-2~(ITozRW;5xGT@ zCIsOgVH~1!nI}3GE2{@4M6G*fcKY0SrZmm&GUO%51W^(ZL~Tsz zqH`e{ohbO~y&vcMEp;8(mq(NCZPX8MwoALU(_`aPB1dEySZ0whX%XuL*B)hYWqW7- zgIn|MRrNh^7f{CqWD&vU&)sWV;e+);u{dm7zMtie8KorMrn7PLhx+wzKdFBn?eX1F xIR4KYAA$rdpll7ufh5q7kpi6~Dj+{L{{w*ge6V3}O8x)<002ovPDHLkV1h1CsgeKy literal 0 HcmV?d00001 diff --git a/datas/icons-16/linuxconf.png b/datas/icons-16/linuxconf.png new file mode 100755 index 0000000000000000000000000000000000000000..a923eae3b945858f7883d42ce004f0cb8ad0cd0c GIT binary patch literal 1114 zcmV-g1f~0lP)`6pHRCwBA z{Qv(y10?_;fEZQl(;Gf`2G7g12;D}!`H80!3F>X5R0pfV#|L4CI%^PUWPw^7#O(4Wf<-=ykKBsU}P{5 zH?Y@D{&PTxSCIL|%NG~L#KgK@ym)aH+0_66#BAX$Txcw%&LJSLz;Nd56NdZCe=u-9 z5n~YkEyv)c8qO#sDJl8)-(Lx!CjDQ(entHF@#8-e6VtJ8-@btj00DP}>3@ohw8NPk~#h_s!&tM;_%OET!${--j&+s1@77riZV|f4m1JK_b z43?Ib3_(FbApcj3i;F9O3;+lKK>)u011m-$d;AFb2I0^501Dw50L;MF0R8y?02UV* z0RH~`01FJL03{#G02BH60OIcy0GgVb0NB{r3l$X=^zZNQzXFKq{_}5N{`_EKc+38Z zVehqr3|G$FVmN#5EW@Km4;WZjxERF69T+r$q5hZ6nBn`+pA65RKVtv|A}}^g7#SHE z00M}CL6|8#pvUNc#yXe(lBWEi;QeoFYx^H)`u~6b{{8>+`|tnv&+q?#`0(j}U<~}< zxN+lu6&02LA|fL1fNG-v0*HxKTlC%c|34W{@4LzH^X)GNRu&cpUtd24km+AOe`fgo z=Qjfjp9BL32Mfc84<8tWg@qZct*sfDnVDIE1_S^E5EGLWFZ2Ije;Gtnco{r`T^LlA zRT&Hn^udaM0Taznpx=Lf|H=T0wvQh_GQ55JmO)llmVu9tZ$Hq0B!B>7`TK)`fr*)c z;qil)3_ouPGf0_J7u2Hy;`9 z+|<&A7ytkO07*qoM6N<$g4a9^IsgCw literal 0 HcmV?d00001 diff --git a/datas/icons-16/lock.png b/datas/icons-16/lock.png new file mode 100755 index 0000000000000000000000000000000000000000..d46a7aa2811e140ace81668b5475e425536e153d GIT binary patch literal 825 zcmV-91IGM`P)(1i;Zoe>uzbfZvlSHX=0qy!Ri<4U?$7Zst6pz+_vG!!CHL#0jA7)?x^nfLB> z@m%=lTc7XaoZoi@fc{*c6z8Y!>oOddL?ER|35+YDN)-txW5lU)XLARFA22sq5c+fd zBfZZ28#AZ5_{~ogW(cqk+>?ZkLQ9m)5+26^CmihrUSC}1&rvxL&Rt6Hz3>$0E`JRN z0yqN^9_)5_yxXR5!s;(ul*18)37Io;5l$U$apB5$*uzs@7FKRTD?rFV;MKDaF*|dN zf9m{)ORU}com?Sv!p<-f+BsU5CA(w538Y^v!!2?ZwzhZ4y%NN+w6e~pQxgo!F}XNQOPuB)U?tE?!XGO1+6~@)_E8LY{^ZmA zSEr9ma`A)D$U}xG5W&V(UDdB9JT^6f0bkwRWn+5}FW^*h3McQM zsiGxH;e=cTfKR?%W97%&1SbS9v|4(5f184VOtg*sKdL>kUmzrDrU zcKJWE2<%p{y0K4YM$s@Jfe3bIbBF0O1;6c$8IMZdzI>IYdQ405kP)oD*-UAeaj@__ za;U@XwN)UZ1V4Cf@q11kZqaMz9Lh3^AmkxORKeB2Hj}cEgrRy~yt>MlUtEVq7}V5W zp6@d%=R-SZG_F4kse2|?P}Ligsv3kOXoLZm`U`&nx@_X;o-W>Q00000NkvXXu0mjf D_oZcQ literal 0 HcmV?d00001 diff --git a/datas/icons-16/lockoverlay.png b/datas/icons-16/lockoverlay.png new file mode 100755 index 0000000000000000000000000000000000000000..8a0fca6a9dc9f54a4700f776522c45f965100f11 GIT binary patch literal 941 zcmV;e15*5nP)#Q5&*+n<{^Zk+k|&!0C8NC2cB zAb=Rr4Pa(sVh|M;j^g9tnSbu`WwxKcelZy6=rCM9fBtr6dV0c}*RPKu8vqbMU;>2q z96QFa>&Ov?b62mHKYjiBPgZ5+CvG93CO%=|SW_#jnoBot{+~2``ZZQoR!w9B00IbZ zz|O;m8MYlb!13zcyZfuQZ22K9A<+y}!v|9w6(2wI@tZgQLn0zp0J-ci0{{Yu38vuh ze?|rt7FLd*e}2mxJ#gU3+ZQiZ0);<;camACHi+;O|eb|NVIX{_EebU;q96@Rs4{(?<*sZoFiC`i_zB_M3124&3~(=fs15 z@qhpSe*q9ca2Nb%WK$Is(-UOl{SFMGk4y|aA9)$xzXQrVV)*p@4#Tq_Um0FKWnlRD zgMmqumq7(6ApyiM00Iy>2Ppu;FaQLX{{NN1fsmm!|#u;7(U;8$nf&UCx!9U%xRhd7g9(<4U4H?RMLo&EkN#OZ&4?q&oz63Bl237kSf0m%Rm zK=5=>=*`G5VH<-mCmT4KGBbj*2*_(NFM_=ZW-$K#%kTrpyam+z6(GO>h*OV$fLJ#a P00000NkvXXu0mjf2#~DK literal 0 HcmV?d00001 diff --git a/datas/icons-16/log.png b/datas/icons-16/log.png new file mode 100755 index 0000000000000000000000000000000000000000..36d3117e985b867ac19cf7f214b87171ab6a51bd GIT binary patch literal 855 zcmV-d1E~CoP)?bz zf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqi_a*0Aj*t8zUnlSQ9fd1S2faVwgI0-G4^L ze+&Qt#0c`j(~mEny!rNy_tE=j43Azt=6n3+5yOM04;fxQf6nmk-8+VluirB8G7B+m z>D|JxWy=v1O8^20?1lHgJ`244_JRBDm$wXWzPx6*|MC@sH1{h8J&C6bedoS0{QdQb z;m`knU=8l>77U+0eFfrg3|Ft-WdH~uumLZ=z5V;*+Z%@GK>Xsz2ZoQozA!`?zGvWg z|BZo-;RnO>zyBFH*cpM|U}X64;XA|k??1t85C8}uumP`ryk&R{G5|>5e*1~RRp$-E zkB9FW-v0W*pf2)@!Bp}m!`)kdfdTuU;rH*q3@j|n4FCQ?!UQ0Izy{p=`i|k}uU8C@ zzIX(WG2<-;f3dp^JqtfE+~i?nxciNXK|}sG!?c-y8CD)+1ltV4%*+rP1ONgE z?1Dhv;|!D5erB*T`ogez>pO;PygUqoqKphzUokN(`NYC-^wA#%9yu0xRDx`0VuFML zKmdUa=-$H2aGF(u;p!JQhG!i277=n8-Ue7XIe)O`6Fu6%zCDHag})S(6m z!JH6P!4&5`Yw8<0`|77Wc78_WP}QdgKYN=$-g=$FO?AW@<~-t*`u#gmHU6DAiJC{9 zff?#NmAe|8-2WbKLvxs`KmSOfzaK00(O0Q4w(kJNksbWMZk##JpI?26mQ2;sm&AAW#S?>tX8>yQvqCqok; zUNGkw+jjtfOGgg!%LlJe-#SjIKFCjRJj>;ypMWoO$L>9d^Qb7Kgh~jYj`F~56i0T@ znP@Tf!`Fy&REF-RIy{Cr$Hmq$SiHjeZMzXuk}5GqG>}k((k%^uRj` zEdVMv4`zh0ByjcTpc1N6hHX&vO03ImDF4_D5jtMzX)ppuR}x zec)oCXAa}^N3U_;{`a}_$(LwMon_`+3sGU)6E9!`!$8K=iEqI<%xQi=3yK2b97_wc zoO<(Vw(fZjKh)&bq2{WQ;>=%6e)k34kWnbDBdjcgf?J%tMBm^hvTHZ;x3dnv9e$TW zxk9b61)S&l^aa!x!8!ceGNs1tT>R#9!g4Q6hqr7>_rCZzq210Ekz8kS9#NMQrVeu+ zSK7eU)(Oskc!a0slgMhEYd#e>_mesqq(qDndJ|$;-4l_RDSNNwasCf3CjkYO;cWT< O0000PbXFRCwBA z{Qv(y10?_;fS4F41ONdk-9M6m$?0mRa_=_%QPP(5=F13&<=fEaw-EDXsG;tZV3 zn2P=Y@$bJ348K4a$ocjAKf}{^KN$93eFv5Y2q3T*3}ks3<{o&-@cl2UW)Sz!KcE4B zAo$mx{|wKenssG)z-j;j2yB3j8W-GGs3)TGg2g6>FW;tF4Q9d@XI)DIz z2O`K2eHmVc`9MS7e+Oy?hRh$J=0ATy^nZqD?|y&f#li1D(5y#fLN0fZ6@w(49A z+A=&0OOL)}c=ho=!|#6(oA15(&anH+TLyi3UIsCKc3^n?2V)Qb2q27TG?3?JU}9us zSaNW`~;f%6KLqqKacg!kzw1pH((bSD)2IV28QsNyB`>|rFj^bm>7XB_y^Vl5I`)*nin5}Xtvc90NV7Q zK?mrapTH0V*(k{U4{Ym|r(YNpM7V&igy;hZAg}=+e?m0NB54NM{OcdYufKrN0SYt; z0d}zX{a4?BVF8H+fB*s;u=pTUvz7o@;ZKkTkjCHtz!+rU@4tV+1_^SrGW-CFz4-78 mYydz2F*0~HP?Vnm0t^6jJm{mL6W_Q10000I|<=FJ=G;AQp5*rl#r)fB*ht`19v4 z!>?bzf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqj0c#fB<5`Wg8iK0OS&o7hs@1DH7yeMt}eU z8<2Y9kK&;_47E>~L>Ydbdd=6Txlq$n4Z#D)+{{IZp>>wBXV{mu3VEFXuD-eHU zxO(+2*dTxa0vqt@KU2f4e@t<#51ugS9q(fJ@Sc<5{C4P*%)F? zxf#knd}jDz%*fDomzQDg!S@X8?5qr&oa_u79Bgm{00M~V_8(5px9e65F<#ijaD|PN zVexfFpbh^SK0t~ zz@YS%f$i%{29b~N8N{TS7^KAou%=jm0D`B)98-a($B#c_;NxUrh&SeC_|Q3pA>Pe~ zK~qzOfs_3;gSr3{IDeo6fB*s+0CEpJ7lJZUkOT*VYfBshH!#Zn{rd+_#-LaMx%@v` pegz017G%w!w2qwKi2(os1^@yh0~^Pd(Ut%J002ovPDHLkV1h_-c7p%_ literal 0 HcmV?d00001 diff --git a/datas/icons-16/midi.png b/datas/icons-16/midi.png new file mode 100755 index 0000000000000000000000000000000000000000..b0f11f5e273b8e311b125abc52ee878f22318b05 GIT binary patch literal 493 zcmV3Jv-rSMn(p(0e}Ad1A74m>XRb>0|XG*fOTtDVi@q@!v_>T#QFai+}$l0 zK7INM#NQaMUcJiz5I|r9fX z@cZ{)1{M}(hJXK3p?h0iM00000NkvXXu0mjfGKs%k literal 0 HcmV?d00001 diff --git a/datas/icons-16/mime_empty.png b/datas/icons-16/mime_empty.png new file mode 100755 index 0000000000000000000000000000000000000000..4039a2e62865e15bff7c02871f48d8625d2d19ca GIT binary patch literal 515 zcmV+e0{s1nP)HehtFF0nVMf!La<53**K4E)1OF>I|<=F9wSP1P}|dB2!a!hQELRG5q=S zm*Lm1-$42w!zg1NBLfAn!7Q*Z={9VE`;lK&}8g5$ybb4DRk0 z44*!I1>$cESFhfMs|N@mCfv3|yaA$_nHd?re*Mny{rgWa8yNru5DPZjVa|uqfB*hx z`2G7Y0}Bf?!@qy1b^-(th5?{h`1kKW(BFUHvGD8H9|m@IR-il!SRNSw1Q3b=APpeR z5QF|R{QUWg0puu<%^(1hgM|$Y00a<5ATlvAf^7t)1F!r-#03yG zg#RBZhur{x0K#wqvU8C&GU9LuKmf5IXIJF(PAmWjFaSriwt)?I*I57n002ovPDHLk FV1mJ}$NK;P literal 0 HcmV?d00001 diff --git a/datas/icons-16/misc.png b/datas/icons-16/misc.png new file mode 100755 index 0000000000000000000000000000000000000000..2206448e421a3936a4e0f120949a7e81c0bdd316 GIT binary patch literal 1059 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 literal 0 HcmV?d00001 diff --git a/datas/icons-16/mozilla.png b/datas/icons-16/mozilla.png new file mode 100755 index 0000000000000000000000000000000000000000..f1201658c10c4da736ca004e1370194548f9000e GIT binary patch literal 841 zcmV-P1GfB$P)I97snBIH7PJdDLM!be6xxbNYq0@8n`mrIGm~T{cXDTvxgYPn_qez-Dn4-FEY5Sz zdCqf`h@>f(C)l|&jR@mC%M%O?d`kHk z)Ewfh$L5fO_hbVyO^n6{y)$ikrU5sHnz}#<7Y+M?pG`(b)4cH}?AuESK$W~+An&gL zHVf@dtQR#sulK_T=Kz;w02l=-CL&O85ChWq1Eqz%H5FsD&0V?}e+f<->Nxr8W>Tzi$_zI8@&YqX|rpq_>3v_%I3CCpT)m7tHgHwT`>lX79{(KFTMoZ|=wNY6?IBhCvX-LBEY>R~eqI zGn%RKRo&y6`%P{vJG|28a_HL%+jn&uToZUsx?5o2`x1u^*{H##HN}zH65q{h9`!pM z&ba*gM}?OKmMaP2=m8Uy(UlMz_`akTTrk>v{MIT*3Ulmusm_OcV$|0$yOw_E)EJzv zLw3ku{OvS6kgfz}5(JXJ?Xo_h*_sQPJYj$ZjPy|0SmNr%4UUe(;R1Y8jg!IC5kM+& zL2I$T_h8M(NeKN9Rb0G+XoI&wQ7RxNb3xnhaet_Z( zeFgXezy~6b{R#6P|H71JGgie6{Puvtp-0eri}ndPb{TftovJ>lt-});I6DZh)qn^E zgsc^d#|7j^kOdG2L_jQ%cat?m#*uwlU*G4s^QL#tnYOV>{$TTNVnWPcL{PESMj`t{TQHm0BG!);uASzl z7lFF9?t)Q735{q4x%7{V{hW8VNg4LrQ%26f9^-q6tSbxBD{`(4A( zTbds$ocXi($xlB0;`u`VwgsX1E_ZcxwJa?ywY|{VIyyBqrQcKCbPxyx+(Sb{dlQNI z?sTTA&F?Sjd;R38)A?TCch%KZS~wiuTTxL_;Pd$&-D>+D9NV@Xc}r&B0G0#ID+cVCJc)eb_&qTN~JO)@BQWmNcqw~!ahxX65Za7eC#wPw&OmnpmpuDtz#(Il^ z{t$I_^*ndvI6~L}NIQjN{fuq@#!uJC5{*P$*C#GF?%L_U`eOS*nayTp`>{u4c1e{d zUn!F#!F*C<3=?b0K_- z;h`w;_^)W1ww|?=+?dYr{zXQCLFH^uj~)yL`&M#0hLcGlrIgqfunG_4S@fSy@^1KL z(&_a2vqI9*tz>d0CpKd|+tahWyu940sQF7m2$H(OTCNCIq2{5xv>eD0dg~~rX_C@G z^Vfa@{Pmw6%+1Z2hGFDpW@fm3N3OJmgq2*~jmW~`!)_Y)O%sjwk~2Lk`)X_d*zC@h z9$8Y#(#gq5D^OWEpYN^yG5p?*l0CJ%wA#816{U;3*73Wsu&_8=URL&1JRYA15d06( zNF)y^0CI+5JU%iq(pwdn-JjC2C$Do57~fI~{sCl(QL^jW0kZ%A002ovPDHLkV1hdF B!=3;D literal 0 HcmV?d00001 diff --git a/datas/icons-16/netscape.png b/datas/icons-16/netscape.png new file mode 100755 index 0000000000000000000000000000000000000000..bb04724af85de1809387ba3b70e2efba7632664b GIT binary patch literal 928 zcmV;R17G}!P)1RCwBA z{Qv(y10?_;fLQ7}`;4l}i`M-6|4-=q9|nfcUl|y_d<|NPCs@Bt|I z6KKJsj|>c#9xyor9j*>^zy*K+Vqs)tU!zxc)Q7i1Dh6VT}(01!Y-zn}pJ^8bgg5I-+I z!oa`@^h%^P1H;KjK#lMJGB7gyXJGvUl>7z6fB(Q^0U&^wKz;`W+WRjMLqOo(D+Y#c zpkH-m7#LaufdatjdGz)_1Ixd^3=DsOn*Rf728as)0*D1<nUB4Ck-D zV|cbFs#}1fZ-#<50DauZ=XIgeESScRje<8fpw38fm;w5-w+o71Q5%W7mSQR zFETI#<8Joy#|#r1_A+q3ImYnw>oZUo12NFqpeSbsvYD750r(4;9NGVY4FCurmS5lh zFfqLS$?*5d1%^)#4>2&jz0C0C-#bvyLqi%A>dX*-gQAb|50J^q4vPkW0Ak^NePGM4 zm){)!e|o^j@cS*$X~5La+uGU(O3C=`PL0*Ddj0+8luhHqc}UA(;Ss|RUL}U_j}9^{S||%Q1R#LmUf6r2Q9_T0pMi}_gn?Dkl!5sVQ0gDh3x8P| z{yx9V@cYL{hM&)`FnnhgKnVkY0Ad2!E+hZ`&#`Np8J=-UF}yIXW_Zq_%JB3X1H%&_ ze)^Sx;o0kJ49}T_8D5A5FueNB&hW=@8-rx{Y_Q(}0toDaCl_Y3FoeEf*mTgBK}Ru@ zL5zckfeC0k*adeMGyMDfisA2vT?}7-tYx_I>^8%7`(tP00FnqiNG#x1VXc+^;P6-BvFF?b;19ix?Gcd?cfXMv>`b(e)ZU8_4F@aK; z;MFrg%|HVr>LAYh1;m`@3=F_PWcUTt_4PZ@Aa(|ZA0R$2gTzxlhHo6d!2SRTAaEFf zUGelSFf7!83PA!u#ZuFN8i6MK1bX@p(AKY?fpS2a#Tsn$$A#HUAQ~Wm;3*LlEiaU0 z85kaiFfb@hVPN0~y5JvB!#|LVfQEbrTL1n5gT%Y9C@B#jfEbZ86D)3DNXY|p5j!X& zfO7-G&)*CZuOEQbAZrEzfB<5|mK$LPAp>-cFaQuhSPdWr00bBSIh`SK>L-WK00000 LNkvXXu0mjf*VkTR literal 0 HcmV?d00001 diff --git a/datas/icons-16/no.png b/datas/icons-16/no.png new file mode 100755 index 0000000000000000000000000000000000000000..1cabc6e95d8ef3bc72c9c4fee3d2e0ec13dc8aaa GIT binary patch literal 821 zcmV-51Iqk~P)*`Ev)d z7JvXkHh_tNlXD`2iAfFvJ39jygADlfi-F<$cLvT6A9&`vyRYhh{W^KirAw>-eEka6 z1Q0-sU@zRf$-r>`{yc`ypA#8Aeq>;H_l|*qjSXxw!|&e=Kye0!KYzd)uDyT%yW#QU z#MRrkF9q=d0*DDL>gYI$;mMOkutC?aGcZU=K@55OmVx2fGX@3$0R{$UW(J@d2CYw@ zSmR&3m@UJ=5CqZ+5I_(EWMp!|8ZKXEV33nzV2FufU~qM1V7Pmifq@0+%gjs$hLjWr z29UGgzhlsR`<_#afguN|Qy3tCAYt(C-4}*4XL!Ii9zDvyprOIQ;O-7_fw3{fkjax7 z7+$_)VEFWj;lsN(48K8P#=sy15P$b*Ok`SNWAD>)ORJ08vut`}&J0D^b{7|IMEK0pHN#tlfwTUjxH1C*1K zfx*lS5*9CBfCKd#BNII800Ic&0(SPV|2a89@$vt^nc4sUPoDh$|MBDh|E8w@|2H>7 zTry|Q|Nm@kU^SaLxc)maFdP8603d+CVeswOuisoS6G1Mya|e>BPM?Ng2?>a6K+y^W zAQBj1ljwEP)fyD4_!F3b;@>z z-yc3PAOU~?VgMPyZC1&^qF=z|ld~}4(D|3QzW@4<0=@zH7w`Z6U(~(zpn$ZF1+spC z0Ak<;8o*{$#**2xrRmFeh=wm;e*ORUo;HiU$}Vp|Lwca|G)k4>;Fffrq>_;|9}4O|Nj^7 z|Np=J^8f#&rhQMC+4)u00~01i9g}%lpCla%5&i!F0PpYh0M*mn0OsZF z0Pyhf009C800;{T0RH~~0P^(!0NCUJ01y-(4$#)t4DsdDv;v65P+P^_L|atx??0e% zj0_ClzyD&mb?YHe^JfNDHf9Dc?yC&y+8PXs>Us>1KC&^qc*nrN&&$MMVD4f6=+shq zfB<4qmJ_kyWMg3X^@o9hiJ5`n>$jf__a8iAc>DG}0}~S?!=FEY7|x!)z`(?@ok2$5 zok3a0jN$VS1_nN1S#h9^3IGAb!pg=Z3i8XZ-wX`@fv$M=>J!7+v&Vs6dCS1c$_8}N zSB7`*9y9#>{)vHq*GdMvpi%})uQ;H=j7&fScmM*3<0Z$<`T5ePmP{d{tJ@2cO=PtE{pxd_C+0Ro5-C8$~XH5H6}%B>x|>_o+7B!2&6VS4xR z*S}}ao_xG~X2*?pH+QXL`0;u-P~{yU2Kkx+Ab?N}KmZkB9Lobkg@=LRA0sHVK>-Hx gGZ249RtOMa04kEDu#_^WM*si-07*qoM6N<$f(Mud`~Uy| literal 0 HcmV?d00001 diff --git a/datas/icons-16/noatun2.png b/datas/icons-16/noatun2.png new file mode 100755 index 0000000000000000000000000000000000000000..1d06341465d6f717eb337ccd621c41810c5edbb9 GIT binary patch literal 848 zcmV-W1F!svP)k7RCwBA zoU!@+LnTR8eg+_5WMl+U4FCWCXFvx3;RFK%GbPXGbLqAtrO z?4ZxZ4N>`v;qRY6Ktm3=9idnKgly=mL310Ro8S_n-fNV2YnT zf6MUt^(zKmUO@&CQ3(ci4mO5AK#jkFD*pb181Rpof#KKhzs!sbj9ef+00G2;?9`8+ zJ~3Rsah-vMg@u8SPl!QYQH?=DQig#EsOk4#h#~L40og!Xfxi6*(gP4cCK`C5UK(1J}}(9dzS$emVbfP z{Q-u@$>YZu)~sH^U~J{fAa4-Nz|O_a@E;T?&;SPrAQS`cKYYxvckez1c6K(f3%-5( z#_$Q~t)D->GaT5ri@_oAB||`5ANR z00beXeQCSR@&cO_fY@!U$-!m|L`TCvV%a>0KtZeL1OCTly1P}`> zG(bXsfljx!^JK`%uVzrvFlG4qhn3+aFxozR{mbzA%V&nKU%xSM{bxc+>Hq=6!otSQ z2}%)PelsvcC1f%9ho>-b@p3VI{sDB+CkAk8VFrc^2Rl0h4=*nR2PY3OWLa5ZP5=lX zmKn2_?p?^vq6Un1HbzD!pzHpF1L^ml-$42=&|4t(A5iK81~M=SF)}l}eRAm)&`_{5 z00M|nT3mu37_B-$^SBrx7BWC`CYS`%peSR63j&Q`X8F&=#B}@4gZqyF0*Dbk>yiop a0t^6c?+;nCwVR&+0000?~@nrh%9`@A>h!n^>qF}|MFnP)8ATtK9^u%>R>%KF;n%PU_195 z$+~@&%xTOl0^FNgmha(UW@l$V+%Io0ac_V9`48XTMjO<9|E0=&_%k;T&v`u~gFU-X z9|-s$zm8p@Va5brhRnF>%lMW>Mn+1`m^o8&#*7B98Ih6_5;G+wW+(y`U&Crq7LCO+GOiA6wp=}k$60}KZ1mUV5I SwNC*Utqh*7elF{r5}E);G0)!s literal 0 HcmV?d00001 diff --git a/datas/icons-16/opera.png b/datas/icons-16/opera.png new file mode 100755 index 0000000000000000000000000000000000000000..4694c2bcad20c85f296131a31f3d7e60cec9ff66 GIT binary patch literal 904 zcmV;319$w1P)M9KoA6)!_GbJK5|?y z-L>?V;lg`Jvt!%sw8PfGvXMbZ+d-z;L@N!F{kmjnh&A9!xh{|C>*?-B5U zavWzGfDM2HI3R?yE}IiB34SgJ!Vi{VEX{`@-bxbwj-ogSf^7ib5<-qX2yh%{b$WXG z$MxH{mF#eccbbM|7(!+Yzf&4-J$~#l#=ang9Q+U9IL^Yv#KbS(tgoldMkCQRjHsUJydKcper~snmD#^YhY`W|NQVb$E>R27^KG?Ch-9 z?e~Y$%a>9vlL@lfY(`bp?*SA5Km-8Wwr>=R#Yz~4ed+Kp_C1fqib5qxI*}ylBxI}; zxUQg6Iw%whUa3@?0kG^ij+k&9M=(wEt3shL(sliy_wb>qluG{C*jO`;V+H_HBH{b4 zd#z6?{cLsh-%h9V38nN#r_*^N0+21snwXuPZ7(k`H{L#dn(RG){?4}T*OQZzjj5@r zh8hIT*7i0u-;b)*>T#t~IUXM$Hvp&!0J5&@if!B6vMlu<0HPpBxm-@ZIB=w@3OGkH zotE?Yya51;qHq9G0)Wu(_eYwhWd%Xtay}o#QKSMWUI19PYXX2eGm`{RR1_uCYPEU* zmx1fJ);a$WaL z9LIU<&K(vWAIss%$vA*4fb8(_Fr}5tBcoc?;yBLl?CiJzngD!}5E29Ut5&Q1JRA-M z({bdhi;IjtdXxcRFyA*$pFPt)zIQL;oTn(I-qzOE9)Mj!2$KL{Zf^tr7efCc~; eK>K`c0Kj{4mueb|mr8s90000gS=#p$bD;y&x= zJ)S&%#H4^ur{b@^DbHm%+UO9PYvKeOQ#RFi;p! zJWK%%(6edP;b#4w@bnj~6B=((S&aX+pk}l7^%zm@N(@_#px+(s;BEY8ziUf6A?Tm<`ZML1<2X-8HwS z%+Vy+u#T`elhC9MMKvhEW3qKEC9a7(@o^7QFqL+Uv{unA3M%a?>nQqqxx{|DsPB;j zs?u`&VBr7m8WmeXQPG002ovPDHLkV1kl_|Lp(( literal 0 HcmV?d00001 diff --git a/datas/icons-16/package_multimedia.png b/datas/icons-16/package_multimedia.png new file mode 100755 index 0000000000000000000000000000000000000000..a4c8486c99e4ba45cdf73647ea7226575339d2ce GIT binary patch literal 1210 zcmV;r1V#IaP)3k zK~#90byQnylVt!s-+$}h>)&?m)^=CfR>lBDq8kEckwi8m7)`*yn+ZDK(4fAMX!Oxn zH4{w?iD+=qn4s}SBm+@a3GU*ujkfD;Tep_p*7pC~{{3%05TZPAlJj6Hv9)@)^Lf+7&=e+R&~7R>M`~@)C@u3@e&o)hwb>0r7Y^uQXrE z96xb#FUtmlOW4tfewX2cl&!frzwUzWwZIYCkIs=dfJPhZq#sW z%m;rPk1ijFLN1HzH)B{^jbUWu8So|(2nEc{gw^jaU%W&Ez^*P~v(3}qldm-P&MZ~2 z6fI-)DGRKuf_kk9hNCb%6oAD}Ve;Esn7;WtM#qjqQ4CzT@J;y78()1y1HgP_)fn3C zpX=`3cf2aqh2`)%_6(ZPJK#l2pam`d7T8@5JpPyu)1f%l(iKciU4^E%N|Tf4KP(oK zSLyqso1P6Q41bM2jfA_Y9g~hH*lk=2=l_3@@xcK!QJNRCwBA z{Qv(y12Q;%{2HnN8aQ|E219ms5F?Ba5I{`W6zTqb&Y-@ukwHnCk3mC2mO({Dnn6NB zh(St9gu%#2gJJ5_b#O}n0tnN9pWhi6R?cMjcj_R+mz!4@{xdQ$Ff&6i449f~!3_Zj zAQlV*SXdbtL?jrPe*I$j%LLN&pMeqRV2}ZS{`>=b0R}*Z00a=G3z&gs`bIMR;TK|H z6_;XQVS*@Og3|8p77Uh_x(wRd%3wY~0AURSCRt?$*55xF{yn%2vLCFO5$FtNW=4ju zU%xYa|Naxq1_6Ko!fL?p*UuUL0OeVhPheE-Gp<;!=5Z{L0}u(Pu=aB{LUaB#4J)dB<%Mj-zE z@r~ifxf2Ww;aLpq{QL~RE0P&r%WE-kDQPk=gMyTW9q28Hmp}j@fG`bs`;y@+Cl3QJ z8w0fb_}i>+&f{+&9?!20ST z!?&$#7~V6pG5qojW#BS*WMJI1nBnuc?+icw{$t<=Y6gV|2mk~S+<=#T4Gm1Ywj}=q z#`UknEQbGDrVQMCLJUG&+zbr={xSSe*JpV7<}Cwb#p1uJPhbK=1^@xX!Z@vK@9T?~ zrT&PDFuXJ|W8krJW8eZt(bu0p7(n?9l-WQSWDv+!7GOd{&VT>`#KiXP>mvas#vi|Q z48O6}cF*AB<^lTeA3W}1PKD`VWJC>gfB<4d&(6p>jTitBU;uN3+{?0H>xuvX002ov JPDHLkV1hp^QZN7j literal 0 HcmV?d00001 diff --git a/datas/icons-16/quicktime.png b/datas/icons-16/quicktime.png new file mode 100755 index 0000000000000000000000000000000000000000..76b379a072e26513c37b664f2cccf8bdad81e85e GIT binary patch literal 930 zcmV;T16}-yP)5r00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru(gp<$7ac|6X$k-U120KL zK~#90U6W006m>@nX~% z^x_RoFh&oUnAHd|VAM#A-ZUCD1vbShV854cKVZAk&C4b6 z)?azo2xuy}FkdJ!m)m4xeG`_lxox?%7pFcQxwzF6TPC)1==A3q-c>w?5fABP?_{ZF z7BI_elwBLe^l@moH{AR{_qo`Kub=wgf-nD=-~I7zCHZ)3&@-FepgT9q;hlaA!;27t z+-8;UmK2UZ7~^a*Pcl_pN?)7mn@&7i5CE@T$-SUynkQ}5>Cew_bZ?Ysw2@dWMpIKW z7(qe}AwK-|7Kse(?{90Rqva(4vE!9*^wpYkET&7+sRa%WG!hC0i9{oWLt&OJhu>Eu z!`o~|`b;(|RWh!^K)mS)fLc|RL7y&7%XaDVR%!4@FijJwYJ4`f$aqe0tP5HKUR+1g z9mug(b7%|dd*68d15=n@5p`XcmCXvSP|$T9uh)z1xQwmZbolDDm>x7K2?T<8bq!s5 z2piJAoz6=&ZjzcVRaq_7Sho~}A`n8LtAbO5jnpe8q*Q5WXuz^vrYsog_F}D+(uwo$ ztch2j>=>&TtqI3=n6`cVFjv5F927+%Z2AZWO#FU7Qqy?v#yTc~{)kR?A@etY7lbrnIE(b#=6UuLq z`!BS%M-LmCN_w+GZ%{DU;-lukFPRF(s-WGY5D+ljWbkux=KFYM{uvLz{OGqtwjcO0 zhvy;9@9XJn^dp4ijs?ZK%0Sp;xW!M_sKm#Q*>R literal 0 HcmV?d00001 diff --git a/datas/icons-16/real_doc.png b/datas/icons-16/real_doc.png new file mode 100755 index 0000000000000000000000000000000000000000..7e0be8eab4b26f0e19ec6dfe069b39e6f556c1f1 GIT binary patch literal 895 zcmV-_1AzRAP)?bz zf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqi_a*0Aj*t8zUnlSQ9fd1S2faVwgI0-G4^L ze+&Qt#K^!cI-6a|E|?KyI?(aFygY);ENl!6OpHMOe<1qD@c+**24__+hW3UAhAmr; zpjZMBK#UxQ5&u~dmoofgU}RuqV`TXM?JEPr*S8D|-#;@ju&^=!Enr~c6=e9cAd%t5 zs!oRAzyC0N`t%iuzcF0BdY1tpfLIt=xqtlSWa9Yw=?lZZ9lZ<;cMdTyytv80@Z%%U z70e6_qUsC`GDZySZ|?%V!N~C8!*_=7-+zMHAOH|REI^Mk{C)q5foDk)gD%%ghFdSL zF^EY@GhDs-ltD#Np5gV&3k;gVpBcV!0M-5d4|Ks_1{M}(hJXJcVFD09EDY@248P9p zUr)WDpk@V`y({WBB&%2Ln4hD==JGz_A1Z z00G3r@c%CZgMbW!iJcomPFe!Pom)46n)n#h)zulo!Xg-KY^)jhdAS)*9zPDY8HAac zAv6d81P~*qdD8d4akDr?U!P}qyD*i3{nK*>UdHbXuit!PkWo@(`1|Vz0|Prh!}HHS z7_J>Z2DTZ5K?!i*zB3E}0R&D+Krm-vJjScI(^7>ukL7@xgi_`~#@fyp74 zfrS^S?B;f8;({bF5C#E&0Al&|VRHZg002ovPDHLkV1lfKg%1D# literal 0 HcmV?d00001 diff --git a/datas/icons-16/reload.png b/datas/icons-16/reload.png new file mode 100755 index 0000000000000000000000000000000000000000..7c632f004ae7ac958c913883f55fe6eeba448f39 GIT binary patch literal 982 zcmV;{11bE8P)@mT;P^KT|NqPI2a13H`u#s_LUs$g zmS`Tj0RRES!p_8cOqyMola+xPXcPqeheHO2zl{HY_`j5~lm^4mT9^LYt-G22TzNAA zW&l6{06_r0{{e8;m;Qh#UIF9!>;U@!{s8s=`2g|$^#Jqz^#Jwz_yF5c#Z00062K>)u01O@>F_1ygE47B&n0Q&*{0Pg+t0PX(s z0P*hb1FaSgk z;|lCQjcaK96u(SU47Grr;NGo$4%&1yD(V$YhD8}MQgw!eOB##E%GW9T#j~9U_iF*j zzW`!k0s8*){~rvm{(fS(dh;s7t7}gf{(Sk#@CT^)&#&JMf4}`^U<9fZ)0Sa)|M)G# z>&;iMGn{<62q<(9h`#~^06_r0{{$Wq8UXPB^#I@R;NA_B@G8YEl%2tyvP6m0QmxlDU#2c;qKeV48kv%8MM_k z8E*f14s;mjS4J`J`;3B|HyJotpMHP$h2iV-R}8{RA`Cy+*knHac&!eOECvQffB<4V z`0mo@P1g_b@X81=?EQF=LF73LgNURU!$+p?;23!S{yoE&2X7fzIQ}!dd-<8++r9S; z-yXeq{$taFNT2~n0Ro6=^2wFlJTig|``%q(_zev0zY?qrZ-0GYc>nG#!?fB-@jW@A!k;ARa1vP2k&1ONdB0F5M_g1z(*Z~y=R07*qoM6N<$ Ef`tpwQvd(} literal 0 HcmV?d00001 diff --git a/datas/icons-16/remove.png b/datas/icons-16/remove.png new file mode 100755 index 0000000000000000000000000000000000000000..e1888861b728596b306d0dd27434da4c3bcdd346 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BSE>%y{W;-5;PJdx@v7EBi%uUSVF1)9tG&fkN9nT^vIy z=JW<_6g;B96Z~%zGq0%fg$+*EPMbJ5ALcSyGeNLmqW&CZne)XfCgr9?mgiiH(s^vr zCwpMmGeHK6^Tq$JSRSwberwmd?4wVDB?Sd13N%SwDN@i_>Y>T#q3Nv|Ygu-}(m32p zbLoudbB^=n%ni!Y_tPv@-@7pSzUSuh3sKvX*M8O6V%S#MV|eVu9f{B8B^-X-~0XT4(<5H;&Hz|X3EcpYrrWn4GVI@fi~;02W@aWZ zMp&T5Fm2lU|1g&W1P~*PF=NI&Atfcvw@gg`frk8Nc>DGf13NnlgPolr&_xVjmu%T` z1jVxK>>x&f0AgljWaMFBV2$SG73%x?^|uTc7av#y7Z(S^)2Htk9zA-*pr|Or0J29> zQHnuKOpt+}pO@kF>-P+1W}1xv0mS6!=z3UDQE|GyzOIG1xH!Z2?>`xom8F2L_{$(H z%*XKJ#TSO{J3u!7WBB^@J6N8XnGx;^fB<58@#2jE4-YT<*RMYqI5|0h3VtwLzy6Tn z{rgW0hYz0y^1m|Ny7`1*{o36OKY#vaU}0efVno;j1Q5&9r>~ap+_^u(%*=%G`}gla zL)aN!zWl(jVZ&CSL6;eL`S=+0baWU#y#L7X^Vc^9cMoRMe#lckTlXW@Xs9 zb1lQ;$JZD>efkJD03d+iDFoz_;9y^1^f3Yh?-h>7ws zq$VdZ2nq_p4FCurl%&kY#?H{tP{2@9(#&w^&_RY*uU-JX^MOH1N|eFbC4|A=&YD3% zK?#_^IDx7kfb{?b5Jp~LV`F2et1Dutt!)Da<_89EZ+8ZFcQ;_#PyuTMrCd;6fdPO3 z!Y}|N$;rvd(B0hxObhS9Vq9FjP>p|4q7VcC0*D1YyMiz&03g5sRQgLl1)KXO00000 LNkvXXu0mjfDx{U7 literal 0 HcmV?d00001 diff --git a/datas/icons-16/rpm.png b/datas/icons-16/rpm.png new file mode 100755 index 0000000000000000000000000000000000000000..becf8326fc4c33fbd09830702a03e8192690fea0 GIT binary patch literal 870 zcmV-s1DX7ZP)I|<=FJ=G;AQp5*rl#r)fB*ht`19v4 z!>?bzf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqj0c#fB<5`Wg8KyU+qwy{M=Coz2b^qN6jT!KMB zKmg*EzkeB?K7P#L%gW4PHoHSfB(528vnRMLI0GJtN;K1 z{{RAr`7(`gv z7`SfTU=TU87ifP713&C5K~pojzrAP{=W%*=eAg@vUdARzQVFaZDC+1dYh zb94WH<;t!9y1IJ*jf_nGM@Pr~=NAzCUs_TBUrt`}zqPF!*b4vw1d3oOpvkX*bklgU}0fqU}Iwk(yZXb#mLCSz{<)B*fjCCYH@*v?~%7BvMkF#LT1QV$S7a0A%cg>;OJ zA{T%A_LoUWNJdXdNsNJ?p9id&laqsim6e%6Sy_zX?_XAi($eyM_wR4=25S2W5J1c@ z1GKdxck}Sb=}StAiid^SF}S!GFsQ0ZF>rBl0yX^u((DXOOpHM9fh^+`zH#Hs(VsuR z+y@9CW`xsqGL@7R#naN=g(jHeeBrW zo-bb>Z2+2o>D#x@daSIh3<3g>uz2?D1JE`97%VIzN&o_gMNQ2)T~w5ZL0(>*;r;vX z43{t8VmN$w#)NO*9c6N4fKz;o94QR**hHu}VoCIpVARr)TQd2Wyhqt$_ynp~3!=FEY8LnM>%5dSr zJ%*Df&wM#`YF-mS05Kgpw4k1Wfe9SizkdA%1`_WNc6MNLGLPu0s+zpT)zyTLk?}V$ zI@y8gfS=*hr*90mZe9O)`}UgFFJGQ+1qdJ(Wo2!30Rb*x)UW^ph?T+L--bm|v9HD1 z*eTMd+}z^ks;YVlAPwT;{6Lp50W~u*+`jz^=+}F|Sb5Cw?%gkjmoL8n+4mT(UcL1F z&6~@hKz`wIJlFw@rPo`48Xo`z5IipcbD1&+heUv^tRzQqabJs|ARjO>T?d8s*E@IC zHoty-Z#PicA87vh2E?Gu^cf(4&@&?&5Oax%=@kS8^?!DBtbNDDC0+^?(*&h dz%&2^7yt#1JdV9QTfqPT002ovPDHLkV1fsl`hzZRLKZ3);7-mkH!tnXyM}}`e7l81WuU{Fye*4A{o0^K^5|AMP0mOvt z|N5pThN~}MGF-L{V3;#)8UqV3kU-w}0@VB&gn{hP#6%QB00M{!S##^Wc?^41ofuxf z;%3;!Va_nMzn?*bmzUwk@84kj6NLZ#VF-+mhZ_PAK#VZWEBEdNYi4}*o`DN!Gv~j* z49{-eWKg`jlOZ`Rjp6#^#|*4&YzzlCZUo!BdGlt5Teog80R#|BcuESxFQBP+9zJ9c zmHWdWD9O*j2aFqDhW`wPQl<<~W%wE9&YA@er_-lTGrV~50;D+s6runD#1!N2&v5DP zJ%%h`;A!01!yv`Y${@$f&Y;N0$)G08&7h^H&G3eqnZdx(k-;q}2&Op?Xx2GUN&*NV zaMY=(sr|37Z}@-f@#FvHlPCY*|MvI)3!nb~-~0Oa|CY6z{_j40`v0~QC;o%f0oCUM zu@1=lAk6>)1do4^h6K)8IM$;UJt{EVJFbrv$GVTAt3m3qecLFu9+PxcD zvnaY|fB?d3NJUrA|EYU9jw{k-@gN@83O d6VeP2U;u(2PPfdYJ=6dI002ovPDHLkV1l-ZLahJ* literal 0 HcmV?d00001 diff --git a/datas/icons-16/services.png b/datas/icons-16/services.png new file mode 100755 index 0000000000000000000000000000000000000000..2206448e421a3936a4e0f120949a7e81c0bdd316 GIT binary patch literal 1059 zcmV+;1l;?HP)*fjCCYH@*v?~%7BvMkF#LT1QV$S7a0A%cg>;OJ zA{T%A_LoUWNJdXdNsNJ?p9id&laqsim6e%6Sy_zX?_XAi($eyM_wR4=25S2W5J1c@ z1GKdxck}Sb=}StAiid^SF}S!GFsQ0ZF>rBl0yX^u((DXOOpHM9fh^+`zH#Hs(VsuR z+y@9CW`xsqGL@7R#naN=g(jHeeBrW zo-bb>Z2+2o>D#x@daSIh3<3g>uz2?D1JE`97%VIzN&o_gMNQ2)T~w5ZL0(>*;r;vX z43{t8VmN$w#)NO*9c6N4fKz;o94QR**hHu}VoCIpVARr)TQd2Wyhqt$_ynp~3!=FEY8LnM>%5dSr zJ%*Df&wM#`YF-mS05Kgpw4k1Wfe9SizkdA%1`_WNc6MNLGLPu0s+zpT)zyTLk?}V$ zI@y8gfS=*hr*90mZe9O)`}UgFFJGQ+1qdJ(Wo2!30Rb*x)UW^ph?T+L--bm|v9HD1 z*eTMd+}z^ks;YVlAPwT;{6Lp50W~u*+`jz^=+}F|Sb5Cw?%gkjmoL8n+4mT(UcL1F z&6~@hKz`wIJlFw@rPo`48Xo`z5IipcbD1&+heUv^tRzQqabJs|ARjO>T?d8s*E@IC zHoty-Z#PicA87vh2E?Gu^cf(4&@&?&5Oax%=@kS8^?!DBtbNDDC0+^?(*&h dz%&2^7yt#1JdV9QTfqPT002ovPDHLkV1fslI|<=FJ=G;AQp5*rl#r)fB*ht`19v4 z!>?bzf%HFyFJHbhFflO!Wi^1N?D>D>(J4kzqj0c#fB<5`Wg8K#ZU;s9SOCKOuvXEd>~U|Ng`9 z>C;yr{>E_i>RpEH>>x&f0Ac}Yt_)TMN-{9~0OH?&|105)1$Y5ZHh}Ko`7x`4Z^2PYjl?VDKT!27EX+XXGlOFY1^@yG zY{0KSj0{ijUI)7I6-4vXOF&n=LKpyb0Z20_Mwplo1^@&Q*npqFK)Sr3i{bmv|6u3- z{0(vTA5efo0~V1s7=d0uL>fQ;-@Tf+VCq7i%CX z+|@O8lY)Xc!%tv5{{R1v0hC5SS>@lqe?W}gV1NJu8vs;z3}`BsiHQY+wzfROH(=z$ zG=dBPh5EmL|G`m+ocTZiAb{Wz3Y7T9!NCEHCJqKpPEH0cE)eDdvpG08!8DS~;Q%0j jSkSX8a(X8Q00bBS1)2OKw^P!#00000NkvXXu0mjf)*&az literal 0 HcmV?d00001 diff --git a/datas/icons-16/socket.png b/datas/icons-16/socket.png new file mode 100755 index 0000000000000000000000000000000000000000..7ad8e6606f8e1949074f12318ce0ff2be8bf5467 GIT binary patch literal 1108 zcmXApYfMuI6vt0{%LVF{7KZND$H1ZDA{#|q2y>$pp}ZNg4UG;ekG6>qUc>3)M(G$x zN2SEbMu*C_EQ=2!1c;DhJ4{2!mr?|eDR^tAYm z>@92n*qE3Qo8fluf8&L^HNZ~ixQ!(frV0UC^bsE4K6iIsY21<0j|!!wXLCv{c9&XGwnBsuwC6yKA)4}i=i#tJ_^H*lF$L(%luyQoMcLdzjnagrj`ib_r7y@7|# z<9&Z6CB&p$QC!v3GiJ1w=!%O|Jw9C}F4d$aDBfgoFZ9Ug>7g8$Tdfw004*pmmmJzV z{W%hGK!i%Ot7P&rKA&3u!>U$R7)M(Sn9fOsCH#GzeWQ)MLaq^onqv`#nIv+Q%>^N7 zX(TEt3O4!ph8T9c8s~Po*g>9tU_#hn^Y8&H69o%lh9&z1%&(Zhw7Lklt&hNaBR8D4 z>M=a=WO9;Oop>a=P8cnGXAU=H8H2?E`zCUp%DRZAMx!|t^`fXsqq&p72yL0m9=fK zk-6z*Wfv93S!va<%7WvpXFQzu632CMd~&U$Qem9-MF$P1FqOEJhd;4HmVSVx^4MGs z|Fdk_hKo3x_xk`w!NJfVI5^Y_cPG^VZ%{ycN`WRLf#Ku;V`UT=HcwbLTEuK;ufF3?zGK3`aZM?n6FrvdcFQ`Utiw@+sgyAL%lHg;2(e&LSW4M17mg;7;|&( zYy-wZ7?3l8;7uTKGChRuYHw?E5DpWwn%D5Nwym{w&-EL7jy)8&*Bi&|Qy4aa{(jjz zB~PpkBjvQhNH=mY`Wh*F3ZmIxGB~J`{;>AUnUz#nJdbjtM}EBQAS~jl^Ms{+-Q_Yi zUg+*@fTo>xi&}s;MD-viTmyl};DMw=KDz2ugDmBXOI}yw*7sx4>Yt7Jfcxh=VK=G$%C<06j&J0z% U7Gs#5?zaGmacQx)V~&6QFHBtpJpcdz literal 0 HcmV?d00001 diff --git a/datas/icons-16/soffice.png b/datas/icons-16/soffice.png new file mode 100755 index 0000000000000000000000000000000000000000..284f3af552e553b5ab74e032a21d77969c7b3a29 GIT binary patch literal 1072 zcmV-01kd}4P)EICU|&6{+9lIBW%4Qp1|~s9W)22)01!aTK7M`- z|9ChVcz}}sxp`gLMaARTxR@PO#r`$BXz}TAure{I>ln*F{wQR4_ri|NK;wTR8vqbM z%)Y*U4FCE0_?RVmTR7yzr!X=6bYv0Wb@(s(L+ruZhYW0gSQz+NI2iiX98E${M#&G=g1qOkC zatuGd@G_|B*%~~3^+W2_{bRdeh5!T*vvh(()M55>H9UO!4DY$s8QwE+FuZwlmErY= zn+zX+|7SS*<{87e2bURiIcym|eP?2jQ!_EV|KJJF=a-jvf(!r%06_r0{{!q{L#NmS z7#8{vNC5o)2mtZ*`T+0iw*c(*<^bF9>j2&8%mD4{_y95mIRFL+4FK@+^#B?mFg54q z;{WyS+rk2f<>4=5MFyrP4Cn7{WVj^|&A&pOPQJ?U^$Re(KJqZIfAVDbFZ`B) zOF)u=k%^IkiG`inEvmC=+k(&E00M}K?W@gShEHFBnmQT2KA+0)_Wf^$w|`3*zW%mj zVEFcff#Hi91Jfr_22PgW3|zoi2ElJ{8Th%F8F+wP4mK8sx6f~UIJ~a5_S5qVGXVmK zsnCF{iuWV`FNRnA3=AJ4fG%NYV0iwBf#D_4RWE^tyi{kf5MyAFk`Q6w;R2fb_ST<0 ztDC#Nyt*_C7>3^g0*Fapmgh>0GG`U%3uOj|2SAngA22XH1R8K(fPvw$C4-$LD?_k_ z0)w=)6vM5XxBkqZSknLL=}E9=P%Hoh5X+C>e;AAv#CvbuGP-~3-rc%if4Q`N|N8Y` zUxtUx#(<5%Qd^cmQ^$be*tuJOTWa(BU)t5a6euV$$ z2OTzMc6J%%fb?(=Cx01fX@=t$pEK0g)h~U1W5)z!%^&~}KrHZl1cX2T{D1X^nP(rn zxGclfPr`flT^C#=`RH~;ZEfq)J7-qa0F^yM&rART#Dch{(E literal 0 HcmV?d00001 diff --git a/datas/icons-16/sound.png b/datas/icons-16/sound.png new file mode 100755 index 0000000000000000000000000000000000000000..d59ddc52a1cfd2c11d38ae18a5d9ed6c4838be68 GIT binary patch literal 776 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 literal 0 HcmV?d00001 diff --git a/datas/icons-16/tex.png b/datas/icons-16/tex.png new file mode 100755 index 0000000000000000000000000000000000000000..3c9c9a39e5ea28f55ce89c3f8b23fe393e7a01e7 GIT binary patch literal 576 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 KMNUMnLSTaPU~88E literal 0 HcmV?d00001 diff --git a/datas/icons-16/trashcan_full.png b/datas/icons-16/trashcan_full.png new file mode 100755 index 0000000000000000000000000000000000000000..285e113d24ff521fee1c2c964c992b488547f3b9 GIT binary patch literal 1050 zcmV+#1m*jQP)Hz-S-TwmA*6Fbk6||T7`sLo|=IH7G z0RsT%=jZ_a{rvzZCMEzOA|U|z`S<|+{r&&~h{Y{{Q|ih6Z}JMtO#FQO{}}!<|774( zWQ}|E)+GAHTlr@^zb-6z|Ln$ephKVk`}dClgpmP20I|IP__FX1!%xxQzjzrK8U8ac zvHxW-)8=LP^WT8^(u3c!7x*-4Z$F-CAT0PV==b0Me}sgEQ49eHAf~^6{z`Cgura)S z`b&u@m8AAT|X{>$LFanojI9v&VBF)>kwzyJQi4FCur zmM2f1{9$L~U=S1(VtDrYEyK6Z{}`S=;AQym`47YCvu7AS-a5(f|(#m#;G$NP6}K=uZZ0RRESEG#T!8WI{}Cm|sLbTt#hmoHx#{{8>Q z@aOLzpjZAe{092x&mRc>`RgYWFE6h&2M0&QuV24`LGkYpKmf7m=;;1oWnlqoW&~^c z2MlhIUqOJAlaqm+osHq%y?YGbfG&|@muC3%=@Y~EAKw{7MMUe~zkh!kAb^*@%>u{K0ZDMZZ2+ySFc{N0QJTI z1P}`-as2r41MC8j#{WPFi|?P`zcKt{6J?M$w`REi@(;tiZ>JdEynMa3@b$|( zV3_=707k$^fB<3vDgOHHE7nbux zegV1w82e9Ne`C0E;UvS|GpEm9x^nF*Kmai_GqVUwOG&!}qlX>j9Z(bkQzye8pkZ%c zJYd+dV<*G2_kTW^8EbKT1-fGK%&wbzR!`i1@4=%@z;OBx5I~F|P2v*bCbl+q;R*`! zD!|y_{q^e?D1m)@{P^+L+qZ7qdiD16)yT{mFD-37@y5K+=|KO#0|gxrKLrRd02X-K UAJ?DOasU7T07*qoM6N<$f?6c`G5`Po literal 0 HcmV?d00001 diff --git a/datas/icons-16/tux.png b/datas/icons-16/tux.png new file mode 100755 index 0000000000000000000000000000000000000000..4b7d9712a6dc26b59ad521716a28dd4e86d24403 GIT binary patch literal 1115 zcmV-h1f=_kP)Zr!qd_3BmqyLazQ{{H>T@cY-VTc=N*ZhP|R(Z*lD ze*Fijg#my7VghkMn2CvrfrW*I;qv9nP0Y;9J9Tt)oMmNY`2_?7_`m=7VamzPwVsQI zXEirBH`o9F|KSDz1Q5&j@87`;Ha0ef9XobZ0yWo0L_{#Kva&LWh=?$3-MW<_C@6>l zq-ny$3BivaJpBIi=g-)`fBt}+%>WQUOdtb(|NhPJ`0-=;y?gf-X=!PJHUIhZm*MBn zKMbOx5)8V!`V4kq#%G;QO?jrlij+z@&3;swL& z*KZhJy?Vs3dGk_+$4{;^T)c1?7&c!R-n@Ow@b>Ln=D+{`6?1ZNv4UI$5I`)zzykaI z#EBDTz(8ZzuwerO7ncBoy!?BHvhuqO>h~?$8=hdP@!p)3~ zO#Afp^-X{Y1)i{&n0|v}2ozHw&7kmN=ip$Fm6LtX`2SzzuOC0J0|XEY&>z3WB_w|H z2=Jc;rUjGFpFe}c0USlZ#04@Cr1|5=k6`>07;8X$=l8GQxBvb7_Y)w1SU!FF$#C<= z0|p*G&gq<-oY7yte&GQ{56BxJ0CF-&)u01Gu?p05~}u0zN-KME?KkBN`XrH4_Ku2>kQ<0Q2|-0QL6t00so@039C@ z0303p{}cz&$ruF&_T1(7;r{>s{sI6&0KWeL?AllW{{a6C5eWs|0|*Kh0NvmK`p)kF z+vXJevja2K`2YR z|Nj9qC=@>_4*^a1j@9x6@{{iF*8v1q}b@1P0F5 h?d+`p008j<3;^~E-mu~cl#l=b002ovPDHLkV1gE&8w&sc literal 0 HcmV?d00001 diff --git a/datas/icons-16/txt.png b/datas/icons-16/txt.png new file mode 100755 index 0000000000000000000000000000000000000000..5bd83b78e79cb79f0096c9277bd850967cac785f GIT binary patch literal 965 zcmV;$13LVPP)wUa1zgx}5$+5=P!mofBrFi`t+57iHR9%%J%<99-U$o zH40|{2p}c~4h{x}Pj?v@4%IP88F(=m^4ws!ad-(>9U~(n12Z!d7_+c2!(CxxqtDRO zv+_S9<39#~0AjpW%<)BCiIJP>_YVdJE+qyAvrL8;w=Xk%5qD*fGmiwi;y1(JzyBD% ze*FPt|6^FSY7dH+00M|vOMtnRgYiFus4xoyLe+C9|Nmd5NpYIs{JiX7r zsh`ilA;8JN^p}m{KPNvpJQx`MGrWKQ8R(ktVD__TZx{dqi23rHzsH2xS!9|2GU##v zT_PgF%JB2^Plo?Ih7260aSY5K9x(i27h?DWbj8n~e}RGd4eWF#CMJd_PhK$q1P~}> ztggKIdzhPrS%QO^QH|vn2Ll&_7{k|}{}{N0MH!gHWEuXvearCnCo{wM@4tW=8G!-H z0t{GYhWq!QF#rS*$N(Ln>$$JK`FoD_KdbaRRzCR~KUf%k|NFzh4|FDvtR~PKUl_jq zh9!dhUt-@*9-B>(Rp zC=vYy=Lr@TRt8p9Rxo?ZmLm)R0fZ6;K*j%#9=!&10XNVvh}7S|5CcHT7-ZPrzkk3f n69xbRhy`1A1z}HehtFF0nVMf!La<53**K4E)1OF>I|<=F9wSP1P}|dB2!a!hQELRG5q=S zm*Lm1-$42w!zg1NBLfAn!7Q*Z={9VE`;lK&}8g5$ybb4DRk0 z44*!I1>$cESFhfMs|N@mCfv3|yaA$_nHd?re*Mny{rgWa8yNru5DPZjVa|uqfB*hx z`2G7Y0}Bf?!@qy1b^-(th5?{h`1kKW(BFUHvGD8H9|m@IR-il!SRNSw1Q3b=APpeR z5QF|R{QUWg0puu<%^(1hgM|$Y00a<5ATlvAf^7t)1F!r-#03yG zg#RBZhur{x0K#wqvU8C&GU9LuKmf5IXIJF(PAmWjFaSriwt)?I*I57n002ovPDHLk FV1mJ}$NK;P literal 0 HcmV?d00001 diff --git a/datas/icons-16/unlock.png b/datas/icons-16/unlock.png new file mode 100755 index 0000000000000000000000000000000000000000..a52d79005158247107dd45f426066893985c4a7e GIT binary patch literal 1009 zcmV9c3f9RKs@&zpqQ)Cx&iStUUpp4a8Y z#qL)wUp@~r03d)E-oAMb#V@iSy?p(D<%W&_J-xjb1Ld@VSP-Pf-qA7Oz>y>WPn|vc zKQ1nA3Q&j{WB>>Q1Q1J8%S48MK)(wLupClVQMh*R;S|kJ%6=P`Zd3%|eP1u2jg;o0J&!6{M z7#KcHOE+ckZrsZ7;`#HS=N~>W+`Mw-|LxniF9P+k!Tb#nK#UJpF-owh>DzyMC-iIG z#;bqVZhy(h!otE_?8x)qn(y2HClc|TulUWTzI*gYaQEG(`{ys5*8tRa7U=x1AOipb zi1GGXjsw!p;r4$%2{UjoK4)P4|A~R&-DifMcb_qQy7!Xd;<>L3m+t;!c>95Y;Sn3p z*(F!LL;>~Pf(0T#0I@K#GMjPo16{<*!tn1K8^gcPYz&OQ7#NuTeP;On`v=2kmVXSN zc^DYp1N|h$_(uh(M*@iN0`Xsv0RRES^8YU*!~cJ;8263=F>+85p=(nV5ijxPh1nW&l6{vHbhT3}gb+!vF6;Ri7CCzkA5= z<;81;$4~w-+<6Ri_In0~55Ix&26O=<#MS?y7z_Xch=t)VQ0DJfhJT+vGW@*xoZ;h* z4-60PGca6x$iVOv=x<_M z3{PGIBN^!Iw?Lae{b6AE@(-9yfr|fuLLJ$9AOHv;rk5}I{xbjk%E0mW4+AqJBLg$g zcO0xB{{k_P&Bp{uj#5A$vV8}KJtNc{FaQW3Mk#(S_ZWMYZf2(M41YiT2M5P5V15JT zx!*t+`~`a9?{A>CziezpGGyr} zG0fIiVrBUMkDcKcQ1jPsKm&mE+gBeMB-ws4IGV{YNV`sMVH9<(1iBR*0RRES2ulaH zSxeS3GB8N}19HXH?bYq{#05{?`Nr_?F9XB7SDzVdjlYV;L&(wdTc0=QU>B5mg&pp|Iv$d{`UO~!@ocO8Gig>W%&8-=EL8&CY1o? z--0X#;;$eYAb?oV!tgdoj$Kgf)3TN?vF0KsDcB#4$rbby$T0UQcojUf6y5I=*Y zScpD=00J|xWNDBFW~f2P7;H;JLj%L#zkfmc7y$wd0P~OA&XA3CumAu607*qoM6N<$ Ef{yD%*8l(j literal 0 HcmV?d00001 diff --git a/datas/icons-16/video.png b/datas/icons-16/video.png new file mode 100755 index 0000000000000000000000000000000000000000..c743e2a692eb8315a043725993c6a12d0bfcb436 GIT binary patch literal 548 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 DW2Ia$ literal 0 HcmV?d00001 diff --git a/datas/icons-16/view_icon.png b/datas/icons-16/view_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..fe65dae2cce5070ad3f50291b05f36032414ade4 GIT binary patch literal 882 zcmV-&1C9KNP)Yh31H(TcW?*E119oO6hPywR81~IBn#yoyMFT(p zv2b&;iz+F~ay|RZ!0_-R1H;|-3=H>x^aCLN_ywrr7pehZHapN3rhl41mIOcmv9K}y z|E0kDlS`C?fk9Q2oxuty_wCzXhHpS;fL!wjOUhB(67H47&k{SFfKA<`1SA*!xttdhA+RF7(N3r z%Z^kAp2g-2e{XGM_{hk}@bx#sPXGbL0y5?=2m=|c9DEE+Tzm}wm{=iB{|6CgVCQ9E z;^biX%ft>A|BnWr$ME$#JA?9XRtCZU5CcH?@i$(EPhXfAqy*U+xc;NM z03d+CE&zq!|Nnm(EPt+MVEX=y;p5*_hOhs1!M20sOn+@+VE=xT;q{*wh9CbeQCt8J zK=3g5_xBG2%jsSQ*4J+s7=$eu{)p=WqYWa*dwCiI=cAhpAGuT+KFb3QKym><0DAU5^fv=D z!*R}VhVMWq&8)=01NA>h{uD<5!#6Hx24NNj29bZzK!nC5Kmf6D0Mj-bGtjR6fsJ_Dk*f|&(9-qC;@a*b*fB=G}Ng0w1fP?@zmjDD90441zMbmG#{r~^~07*qo IM6N<$f@Q{p>i_@% literal 0 HcmV?d00001 diff --git a/datas/icons-16/view_left_right.png b/datas/icons-16/view_left_right.png new file mode 100755 index 0000000000000000000000000000000000000000..b6ff729b471552f382ce374f50dfded94f81b463 GIT binary patch literal 683 zcmV;c0#yBpP)Yh31H(TcW?*E119oO6hPywR81~IBn#yoyMFT(p zv2b&;iz+F~ay|RZ!0_-R1H;|-3=H=^Lf9X^0(JaEH2}Hk0-|NjGB0#ps6Iart&&c6A@uy89Q3&<#d z0Ak^0XJjytWo7sUbn<_wO{_qvr*D2ToV@v#!O=*ZfsK`!;WyCIfB!)`7#aSa`_8cN zAILa{{{R8R0&x}-!#_rdEq{T+e}RfW{$gZ!^YtIYmtRZ_Yz#~czn}*E{0DL!!cPDJ z#PT1e2`KRw$_5(-q?s5Q!F*6){`m*7fayQTTL=IUKoA2MAd(hLz8<>DNftZm2p^<|Hl$e;|E&vE1mZPs3 z1m2wa0*vSXaN8J}7#Ti&{l)O@D>t7hY{(`vY9|J`5Yh31H(TcW?*E119oO6hPywR81~IBn#yoyMFT(p zv2b&;iz+F~ay|RZ!0_-R1H;|-3=H>x^aCLN_ywrr7pehZHapN3rhl41mIOcmv9K}y z|E0kDlS`DFok3Ncfx+qr1H-rPKN-ILhPdVrBRj)iCZJLv`~RPx3>+*>3}@f`VpzD9 zkp*NFKmf6DvokUn$g(p0etVbU|Bp8e3_?;2|9Pbu{)3zk)X4bpA;Z5fFBtxCiZT4= zl?Qr(k>T&T?+gq7{r?X%;6FeBfy`$3&j_TB)-o{7vj9p?WBA3y1je6$;{Q(dF>o!g zU|>An#_$|A z;XhcMm*M958w_6_-(>hJY!7rA*lq@Z00JBE4@msB?PB<8R>$y{Lx@4{D=_TDB^mw! z!{ei2Im3I+42HjK{0w5h*ce2G_!+K01!@NSfPn!ZfLIuS^j{$U!!642mj{S}&f#YV z8p^=W@DmsVAOnAM3W3ErIe?+Y%EQ0_iZTX>0RRC6@xnidA%CIle}ABSkiiU~n1Cq% z3*<2VhqxF900IbN04Pj8y#~7b3&Vdl0fs+pf)E3M;*8(kF|hvp$ncwmkKqr8FvA~^ z0Z7RLAb`Lj@rN1cydz}{A`4U)I4?|KVBi9#6E>iEz?c?1-@%~1T!lgGOdZewpg23+ z^IqP)Yh31H(TcW?*E119oO6hPywR81~IBn#yoyMFT(p zv2b&;iz+F~ay|RZ!0_-R1H;|-3=H>x^aCLN_ywrr7pehZHapN3rhl41mIOcmv9K}y z|E0kDlS`DHfk91xfx%jef#K_K28M6HA+GrYbix1sK$kE;Xbu)8hO=*eF)ZB5$O1A7 zAb?o7*%=uOWLX)00iFCG$tIv$hJTC@FZ}%v!TJ6s<5ZA!~Kmb7uV1P*e z`;Te>G7U2T<`NhH2p|>)s3go5WLNw}llzaw1pomAalt=?ZU3OohT9DF8cdFv5!D3% z0fg`ZvMZ2XgXE(Buy8?g0YCtOW8p70%^)!}?|?Ki!{QhU00M~VKa%rMFf`%(hw}e3 zpav`~bpiws3kNW5voRwj7^E-(y8@_?`9H#&94w&3#0+-=R5ng_kQhJ!F)|oOv;eJC1IeNK4i8}GU}SiF_AtMdT@2$m*g jNHPEt0wA^T00ImEJ=Hk5Fbc_l00000NkvXXu0mjfIqdJl literal 0 HcmV?d00001 diff --git a/datas/icons-16/view_right.png b/datas/icons-16/view_right.png new file mode 100755 index 0000000000000000000000000000000000000000..c190958724f66a99fcb6a63e58b254b77b05aa33 GIT binary patch literal 851 zcmV-Z1FZasP)qB4Htj_0viC*`1e1=AP^0*0OS%z zDF4rY2n{meFItcQ1P}`Y)CFM8P**TAAZ!7P0r4LOhylNmC4m4SfLK5_ft>dTsu`r1 z@gKx1AeBI0F#H0B{2!nRf)6$_{QAlS3`j1JEGUlt00a;u43L};!c6}lUSMEmXZZW` zHv{*hBMjg9G#C`#)iOvkvM})dNaC1*lo( zW){Qm&vO`F-3noNAR`4#Tz?trRn`e5<#G2gJ?F6l2p|@?KmQ{z1K11y8UC@bGJIgR zVi4dx%OIi5%D^a@1rDKP<+ThipT7C}_0p?d00G1VOQZjhF%!i9%#6Pno@pmCynPhL zaOUVf1|BXeAhu*Uf8h+n%*wk9RVrUj1qdLPpA77rPl3r6lo$R%UBC=<*VjL+46NLo z4D1gsGYAPCWiZtB20H8s*gka=I|inN|86qkPmKWrh*2PA?l~4_Cb9nv|CtdH#K-{j zDg!q#WVV}6{4%cacFM1>85fdnrz=kG;w6F?Zm dhKU0N7yzNeHLRvqgT(*<002ovPDHLkV1mJaWvu`J literal 0 HcmV?d00001 diff --git a/datas/icons-16/view_sidetree.png b/datas/icons-16/view_sidetree.png new file mode 100755 index 0000000000000000000000000000000000000000..2e3727fdbd7fd36fed687a43ff44730b217dee63 GIT binary patch literal 887 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 literal 0 HcmV?d00001 diff --git a/datas/icons-16/viewmag-.png b/datas/icons-16/viewmag-.png new file mode 100755 index 0000000000000000000000000000000000000000..83c8a564df876d56f74763818f2fabbfe6c0700a GIT binary patch literal 1054 zcmV+(1mXLMP)mAi7RbikH(^iI+i$je&uYiGktkPX>k^<|?x% z%+NW1W?pR=P~{y4Gyo7lOhB7;q@{({_*hDDdTH@8h_f;<{QJwm@Z|>s!|y)~46X*U z3~i0&hQclxYk}&8+1S|`nV6X11^@&Q6Eh1#w1zAnw=@?6!yll=Z$SJVsPQKdfBXHP z;o<9l44f=X4EAo`+6;nn;kU1xXaD-;6WjoR0Admm;HUzWitS`UU8BFAru0MXR`z`?vFdc>5Y|06+k-eERks7*q^AK+72Z{Da_6K9=o!sx2-TA7sI>H{}{e}|Htt2 z$A5+&K-<3o4f+Zc`}3QFVa|r7KVBY~wV2`8*Hb`!?_mZ21Q65zFYj0G*|-1QFJKt3 zGB7iI|Mm~)=l=|!J^;P&7HHT<4u+H0J~F5({ATYier3-Jj$i};2q5P0oVJ&%J2Edn zV376u{-29oMo^65%V%bWZ(o=hK79Dgu>Im`2Hw}R80NRVX0*{Tl>K_)w8@G44BLRd z`T{ZlAb^-PExj4899n(n@rg|bPhURs|Mc_EiU-de_;dW)@n2^yAA0|4U-8af4)=fA$la(!{<{_&83U)7$$+)P`J>+NwXfB<4P@JM?7`SZs{ zb`iO19!ZsIadq?Cw=NyM^!v-ZzYO5y#qba0v@gFHj$eQJ>!TF=M>i3scZ}~oe_#;) z|56qpfLKo7xVaFRw%JeJxXJM2%U1>lPTqSAsvZms&!?d08-}N!8755H_Z^s3E>7g* z;bFLN@5=>%0Ac}ZE&*i@7G`D!1{P4}1UmZP9|m0D`Dcbn9os&?mEixZ`S=6lHGlvE Y07`0*u~Nux(EtDd07*qoM6N<$f>OQ004R=004l4008;_004mK004C`008P>0026d000+nm#LZ5000Al zNkl+u?}NAu00G1TBL4pU=b@+|x=vAwm(y5@mqCb)fq{{Uf#K^< z28JExDzhid&^do*UTqjqrG?h`SW0nvY4I|MvobLJ`^&)a`I-t_HFUZH?uI!Y&zWf$D|X*x4DGn3&)O00a;dGYdnshAbbqG#3NIAE3r>K>Qu3 z@h1>}`~9Ec;p=}4oGeTX_HN$V41#jux38RM|N7+<+yH<8ViFPHtguk!1-cHX@i$Q8 z-~SB1q4>kM{|v9b{Ac+31?YD#4`v2MtGJWo%NYLr zgWyj<=fD2)kKyAth(Rn&j12ETeg|6e3*>fDAbtrm03d)^KL2LmdH{6Mzn}krvBAjj z7ihw}um2f-{`wDO|7Z9EG?@u#_^+S9z+qwq65vRK1AqWxzJLE7yRxabtuP-K!@JM_ z7`}Y}$MEyVe}*4G+rI$~`U({L^P7WV&W5EwULKgWnBmvgQ$T(1VFmyM5YzuJ?^o{G zxBuNQU>LA6Ff)Ar_7CXi{|ui#0KM=QXxK*%hLhJmGN>y2X74V3WzPzZU<3dNAm;F# zwwJ3rGA}=1koEiipNm~aP>kWrXJ&?PUziy_eE7?-{o-i`-q*7j=C{3Ow9zn>{d(cF z$%*?6+kn3M0x|#~fS5Hcy&0|?T7Bp7iA@JjUq18y^z+Y(2hSY%bNt%zUuP~KdjD!) z@y=f3lUhu#o-w@t=gVMcZz#+B^svS8dk{ka0*E2KYcqqseGn{U_<-01h`oW>2Z+6Z z?$uEcU?^_&=J|V|+2H@9W0U?r-CzB`!kytT8#99hKmalOr?)W}JBKkyDrhq3Sa|;Y z`u^pM53ip+0BXJq#P@)TegnoO2QZc&F)$pNfz50%;9+Hm kmf&a5eEfm&8bE*n0F=FU9QDh_xc~qF07*qoM6N<$f~$4#>i_@% literal 0 HcmV?d00001 diff --git a/datas/icons-16/vnc.png b/datas/icons-16/vnc.png new file mode 100755 index 0000000000000000000000000000000000000000..4c4e7e42930683fdde7ebdd8d3d54b8c318f837a GIT binary patch literal 786 zcmV+t1MU2YP)0-s4l zK~#90m6A_rly?w@pN-#cy6d{hCNU?Y)iflMAc`V|7F!TSqErMgD)!J`dZ?h#9ux#Y z5EK>BgA}12?7@Q`3RXn%APNSgSPMlH|FB|gLbj=GcK7@D`^}7pMUCJ=-`g-V54S%6ljrVS`SaqpCmuho#6e$A>u`56 zy#VLIrI_=OIy7Iv^(@5hk0F0g;^Pz-B}9o5*P=3T1^6SNIz5M}CuHIn!jMcO#NrtG z`>_Q*WJhjOcyJ%;4Y+%csZYPe`@S5I2WXMbPRHt%m?|VGIEQT6j9;}1HK=XhiR zY9YVxJI2JGy{IU!)M9F8*({XH5XX?F*i0QY5HVUR6|$2PJX^DYM(+S-pf(GjW@ZL9 zuLw~DQH)jpLBtR>^4G4Cl*){Mz5z4C%ut;L5N+1d)(&CRgp5DOc_TAAM(d+7D$71Y z4a`84w=H;4@nX1AI~FGpM*RC=j7FF+_qR*TxD3yF2l?;CG^&Ogc<)~W0xwAF6|99{ zAC9v7{4Wf4b@SKZgWR1nmowYG;pc5%P$(2xv}7p<4xL6s-T+dkk~+f-e4)tDyf&`q z%X~FC#iivdIC}OtXD^IUYU|?Gjmy;PHAH2W1x1onsYjlAY;;alVe}z65vuDp5oB|u zN!t917lI)7))9k7B*}#Hq~7?yy&J6Ah!!p(EtdHH$0O|jVFy7r$Kp?hSUAomBBK QvH$=807*qoM6N<$g73UwWB>pF literal 0 HcmV?d00001 diff --git a/datas/icons-16/widget_doc.png b/datas/icons-16/widget_doc.png new file mode 100755 index 0000000000000000000000000000000000000000..878a6aaa0b88acb34a14dfb1c5b210c6cf83417c GIT binary patch literal 500 zcmV{Ey+wm+uTr zOiVx#4Tdy^lmFu$onjO<3TFTaASMO^0HlYRnF)+xz|>TWVbP-9{}~zoF#rS*BQ`G} zyMTd_k>Stp{|w*0{RF#Y%a$W3>Hz|Xg@H%_asEFBcXtbhPoKU5@i&I6SMM?a1Q32N z0Br}`!paC_G6KE9$nf>+cZToZe}dT{01!a<4S;&@-{1dWv;G3<-@pGdu&^)#F~soz z0YuOXApigQ1&M`Uzy2_=v$F!tWdR!Y4=fK5Kwty5ZrzF!k`EtV!fWW+vu7FN;J8C5I`tim_2(oK?Bs()KK^U0fZ3-b#--k4Op>a1vG*n zu>cT2EXYm+nGRDxEC2`~7FeK=3jhKLYf{$Il4bbu;}0Ya{QD2Y|G>!@r1tOMzhE&? qH16GdngJkySg>VR5GED?1Q-CdiJLud7jk(30000Yh31H(TcW?*E119oO6hPywR81~IBn#yoyMFT(p zv2b&;iz+G0ay|RX!0_-R1H;|73=H>x^aCLN_ywrr7Z5W6F*A}u%s^Y1{%HbP5&!|j z!p8jnmje4YF42F#8B`hmFj#RjFnm+xVfgk7;+jAI85sWm{>$+H^Jj*C92^WBtjr8& zKQS^a+{(xTau7fO06_r0{{WoK^6&Ycp#Sb3B>(X=Isf#ou>bb|{r~m*{r~g){r~a* z{r~Ul?Emy%V*mImEC2sYP5+O=>;C{VTCe~B03rg2g@GC9wl7~8{y)0I@Q@b~luhCi$j=YueNWjzD?ls<;f*+mRLP0bko|M&q9RDb|t`Ty|)14CR40}~$~ z!(UG?hJU+vGyG9jWB>*U#CBi+{%~|=_ye@)V|z2h_fOv#{@w&R?=RQ@fB<3vG5!hi zGyDOGx!N=Qbpv8x0RH_A^}cJm2D$=hHkc1e6HFi)kt`Sh0*L896EnlVw;vh)G6H3G9b{lFtzr20}i1SfZaHFAIc#K06*%K(l&AOHv;7EpYEyumT4i{X!o4#US4%Nc$c z8vqjy16ceY(9)MJjbP29(|Z{hHT4+&#&W>D01!Y->_C^W3kou@DQhxt2n#WAKYhx; z4s<>n&}cTGC9J^cNi}K#UCkPJ9O240ZtnC@BNo33T>9pv~++&6mEiGcd5QvV#l&2p~oVqwp4>v>F2w zGf3b+IH>>qWk3O-0Aq&bCZMs*EQ}0~&t7JDc6B~L0KxK?3^-%J9Yzp9O=5Tl5MTg9 WB~eOyo)75&0000e7;#gCj4*cX0I@dQmX^M5?_Hfg&iQhFd?(+R@8ops z+q*kCaeX2HB$vHWav+Xr&x?!3yKt4(#ero|?@>iyZ?iN`Co! zbLEGwJ&YO(w|=8hHu`2f#}tB@q9OsmuXm)jx0f%V$neC-_~6?LqZod9LE{^_xN?xi}N_WV=5|cvruFo3&;GFK5T1ZC+!% z)x4VSpzRpl*E@;=3)C=7BXWfr@(N2J!b=7gFAK7AM77d&*qbk*2xKz=mV5yi@&?&% z;j8%xg*%U?zg)116Iy%fn|XkKcx=Fq+1fH}6s7Ohy0qLLUFD72fe!rs+%&dA$xbwWQT0)4R>dHj`@a?z6Ja#4 zIMAG{C<0!AEa}%fQSkUlAp8;Vtwn%{TT0_1F!%3c$WW(1ab6ZIEU&=BN3$``gWJO| zEV05AV9#QZ>LzI*NH#oMjlzmA2;Mk-bu|D45r9Yn6P8>H;F-c9M zW8X8|OS><4ZB{1Y*qvTssWxt8N(9_af#R6{q!&*`B$&X+ z%r(WL6GUK4V-aeGWn@d>tl90ybGwxGc{+6~h}w>{b#yXnP((5~YH5uIta!kn-5E}m z68VzuHr+U}Fs8KFRGEFk;v17jm;XEL-UWnP*LNeFmpnP<~`?59Ns)%w|uN+apOM5{c)OB z)ln(_L}yrIr>jHM>PAV=P-NU6oUF6Z^!pNt%;A>wvP-y(O1-YCroAJM03I literal 0 HcmV?d00001 diff --git a/datas/icons-16/window_new.png b/datas/icons-16/window_new.png new file mode 100755 index 0000000000000000000000000000000000000000..06cf3d18a9cc79ae50068257992c80e29ab7112d GIT binary patch literal 784 zcmV+r1MmEaP)3)NQu0R%SSFU&S5{Rheh(SMOJ$bi3SK>`p!EDTT={9{0}8Rilg28#b-gc$If z5j9`|0*K{5)QNx4oDFsnRO4@8aQy)Ws^Ei-48OiI0Rxf?WCSRV{s06JBn*(8kBt8? z0cl{O;C^<5;XAJegTlL725CkX2EHFj92QEP_J3LaUjYapumOJ<5CH`bIFNzAfYEz1 zi{bCrxeR}9hA=#kkpd>JzYO&%>x7c>xOcAS85*!BE#57*0>X z_NklLF)$_kcasr+Y77uSi~=ch&#^EwiT!8z&x{;F|Nk>FaQyrIZ@bw^0h8ygs00Ic)SOI9p;D9CvWbj*FfI%+TMbKg4p7$3{ZqSr>0R{jL(nX@XDA}w4 O0000Yh31H(TcW?*E119oO6hPywR81~IBn#yoyMFT(p zv2b&;iz+F~ay|RT!0_-L1H)Y)zW0%V;QVtO3~Iux4AwxouRj?WzJ2=*cFiA%l`fbVqmO*3-hKOkqTsWUL&xWT}378n~JKZ0%j^B-ae>-B34 z+(7Zaz?k?UEea1n5C8}umjB#53{3kEGjPVoG5nR6XZY>p3{1yAz+U^7+BPl8JHa%8GdHvGW^m3rqGYy892T} z{m#tH@UgiYXtNLlD=*Mrdio5k9Bj}u&ASA(E zgWZh_09^z2KN~wE!{f7;8J=C84-i1Gd?o|R7;twH28>X(?*IY}01Ws)Ofp>XbpQYW M07*qoM6N<$f^Y(yOaK4? literal 0 HcmV?d00001 diff --git a/datas/icons-16/wizard.png b/datas/icons-16/wizard.png new file mode 100755 index 0000000000000000000000000000000000000000..3107990dde9b872d3f5d882310e515dc3e63218b GIT binary patch literal 313 zcmV-90mlA`P)Pmx$P5=oPZjsY|7(OU3ZK`Wj|PLQC5; z4#bo7p8eDJEE`p2jCC{gf-NQ3Qo^60uFJ=D(>IzeC9p_f|LhD zmJ+BuE>m+A`Va|^06DCIPar+&x9O%mi`P9v4asf8BN3n zmhd(SFgMZ2FQ`T46Igx0ih!z%LZBJ#6k*9A1i(P}H&Q1W0Ri|1yzY$4#@`0k00000 LNkvXXu0mjfur!9u literal 0 HcmV?d00001 diff --git a/datas/icons-16/www.png b/datas/icons-16/www.png new file mode 100755 index 0000000000000000000000000000000000000000..602a58f4f7f85cf0f722ac5879c55ea143f835a6 GIT binary patch literal 1103 zcmV-V1hD&wP)~}x^W_bDNErSrZAOq8@eLw>? zFuZ;LhvDxtA%>?cVhj&NKLW!>m_d-6fq~@@0|P4y^M8N<0vo{0#K_G33m6kGH#2;B zm(TEpuYrN#Zx92+m#++r@3%8BywYW0V&`W7ML8cA0|PrV(DuJTeauV@00G1VGT`sO z@1J!UzJ6wSF2}&|{vFVun+y!^gn?``28I_33=B^=802{WGVt@VGjOmnFmSRlFmM5B zCSdvj2q3Tl+I$8dWZoXxXwCxk+ieiX>c&;Ndk>N@&%~*KLdjU(8Je% zGWaQep&21Xlg2F9-t0{{XD>;>k(KqJ(ELCeX(@c+VZhCe`qetrWc zCZHL={(|WL3`}e+4F6ueXZZW%4NwC->o5QW5ZDD54sPDW`1?OM)33h_AB2R|G+mSx ze{lje9)Hd7pNWy-zd9qspP%0u?rC!{a7EcO{QC_w7#NU@OiYXb0R%SS;<+usoIsCk zV>rq1*w3$_z|*Ym<(uD(|Na6s0@MFLpiBPz14bh&7sKD{uNeLUUG)>_jK9CWGXMk- zBPebcGbS>eV7SjPo#7xbK-iU-nK{G${`=1d^x|IzWB^nP&i-HyBg_B4Kd%A=7yv@v VSY9*Sz4rhB002ovPDHLkV1hA<_+Y~abt2C|DRsKPC-BwlAW!ps+ zq;9&6x=fKm)I}r;k!a#72y6pNz!)1CduAAW?#$dSoY2yQv$}e9^+@;J_Z(3wl{isC zsAR4OO+dTVLMbIqx*Grgz?HhPL>4WdqmYMOLMJW2HchHN%H3^oDzaVz9s{k^^J=Hl zLo%z=p8`98R00$r<2s>)de}#~mR4`~*6B&gBcS%;P~0(9c|S*}bS{j*R38k-q1A@E zgfuXs!&JYZ6B*oJD`0uLItFTbx+*nHnqC6Sh8XaA4*C<23m~u|1LSoGB{VFs+yoCw z0~`ZY_Hx)AoiGHi4GU}F`5*)gW?(1{g6?c#6&x3W5UR}-OB=oF2(-SRrQ6-BWA_z#xv-)3^= zI(yrzJiJrp`)|Ky_U9k)eV-3Ly23Z#{lwY#Zqe9Up;DZq@ANq5FI@%FXluJYw7fW( z{1E2A7^USor0;XcAbYOC=;$bxWwG?vI!#w#WCux`Lo~LFjGp_D-q*&v9z`L@j>2;s z-g@U6AAkNM_CXb0xuj^2$z+(Fon_|y7@_Y_esqt@qu)7Im}F(?4#D#ch>sUq%r9CT z+7=_@?<4(?;jxQ+`Po^vpO%@Po(8})O|IYgip}-~+*X5Bw!oQ*PYJ^3At;qf+`c!W z>~AYx*;`R^W03_BPxiS(hz05b!-7F4RR z@HfmY!p08N4xldwr}H5Fh=OTzY04HyPXlPQ;_BD=0xd6rk?I;4Mc}r(9;B1q1w|>^ zZAB*GaO3hG17>s_1W<3r)o%~_*sL2wN<$z}h;C|?La7J{I5XgIb*9BYZ*&w|@v1($ z`=_BEu4WLiBwk0yNQS6L5``Y`jvsR6qI{`FUJ3fI%3Db_Hq<$>&|c^tLT-XawdRTu P00000NkvXXu0mjf1EHDQ literal 0 HcmV?d00001 diff --git a/datas/icons-16/xmms_classic.png b/datas/icons-16/xmms_classic.png new file mode 100755 index 0000000000000000000000000000000000000000..148d2fadfa8fb6b0a83cb9e546679ff6aac04ba7 GIT binary patch literal 883 zcmV-(1C0EMP)`S-%K7;VtTp%m z%gs#|Zmw~9(&PB>Z?bI2QRkSSe|^UNkH2QVUPD``mL{OcI&eOwxwgT|>L%U?WRY{& z-l2EAM{W5{8f$NGdUD32U)rp1eMxn3lR|-1P^hUQ3kDET%wl~Fr7Z`oCrFvoX+L59 z{3YE^i&whA)+e7)nO#Mi2yH+cAWT6HlnYo3)(hrpcUW3Z=^pNoXJZC~KB2tI?Tz;s z$$1JRt{~b#EUrKSr5(maSQju(P@P=@BBWBtB4>EkqR$G|`hAQ`CJ;MuFNxjsMuEZv zv<0OD=|zwI-Jcj25#_npP}ky3GSx=&~C zDWlBMc>MuBt})I*>pv)ld$b>aMf2_##Ig=-x&-p7^edc zb{{bs8>%bs!`wZzjT!Yjv>ty$zxNC&1yVYcvDbejjUe1;FnfE3c)^hr24&0SI$*Y-;-NUBX%ZmhC62O$J98ORFw;i=`_w;O!0{V8b% zr8w~LH^aTn2&n}-EqT3Kng@niAW2|hHli{kh(yFnJz{ZIu>Dp-DUR5<6LD)P;-jrH zAHFk#br7b1RK8%1!*qOHt^k#iU(UIav4oP z#=%7fY3?!BGCwQGrRQWINHgg5Jw1*&9R3T|Lic2{iV*P6(WIZNcmPDZ-RA#@{{S7^7R($==vDv#002ov JPDHLkV1nl_k+A>( literal 0 HcmV?d00001 diff --git a/datas/icons-16/zip.png b/datas/icons-16/zip.png new file mode 100755 index 0000000000000000000000000000000000000000..d67f3d4834bee809343a97e3445746e1163c2029 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>3^>lFzskoK&z#!n@^Mpml!}z&<+(Yp-I`WK69j!8F pV|r>1oxgeWp6!p~CPsw=4AP>uCsdbBiU)d}!PC{xWt~$(69B-3e}@17 literal 0 HcmV?d00001 diff --git a/datas/icons-16/zip_mount.png b/datas/icons-16/zip_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..bb23c8565b09c60c673b1231fb6ae99ffe31693d GIT binary patch literal 738 zcmV<80v-K{P)u)coc1=l}Q&0SF+xn%}*9_kZ8MegFUc`;XHQfB-@;kN`;W zt5>i7&zm>z|E^u{!3O;O3o#@zGLi*ZEkFQa7ywfA;K76c)2B~|Yh1hb4VXqUgd3(F zAb^~Re1;g>@;S7rwEd+}P1PC+Cm~kDeUAZS%G^Dci*ZqeEP4$aQEC?pz9_w zL`Nqw{QLWtp{OVu>;QlO0=s~bkr5O)43QDR3@cZzV)*|3JJ1#X7(i|Wxn}aDUIu-A zJ%-?*NT8Pg42_M|AkCnF{00y}jIbC08S?DeD~204Z!)Y~yN==0=TBfKYiMXO%$+-p zAs{desOmpMPj@>=InX4AS3rCeAb^l#fl*3Ij6p|7o8jxX?+jl*e+FxwJ$nj+tD7go zx38a(HG_Z{!%~JH00D#&jUYqBM1{Z%6H^Ods83|DwRK?l{_QKnv}u!(H8TP=FK4*T zzyJ_H$X-B6UtwVp3@ps7z%cmBuwvyhWX*qpnpc_WDl?o~cb5SmfUqWIm>~xa9QhCS zI0Hiv5IX^}CQ$Q#vrEeV+y7<#XJ}yf4-i1OTmUx&h$VseD;O^Y+I|~V0YHEO02+6o Ukyq(nQvd(}07*qoM6N<$f};jPuK)l5 literal 0 HcmV?d00001 diff --git a/datas/icons-16/zip_unmount.png b/datas/icons-16/zip_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..1f059f4de5e4d6de6f32a77e704a23acc4f46f78 GIT binary patch literal 717 zcmV;;0y6!HP)u)coc1=l}Q&0SF+xn%}*9_kZ8MegFUc`;XHQfB-@;kN`;W zt5>i7&zm>z|E^u{!3O;O3o#@zGLi*ZEkFQa7ywfA;K76c)2B~|Yh1hb4VXqUgd3(F zAb^~Re1;g>@;S7rwEd+}P1PC+Cm~kDeUAZS%G^Dci*ZqeEP4$aQEC?pz9_w zL`Nqw{QLWtp{OVu>;QlO0=s~bkr5O)43QDR3@cZzV)*|3JJ1#X7(i|Wxn}aDUIu-A zJ%-?*NT8Pg42_M|AkCnF{00y}jIbC08S?DeD~204Z!)Y~yN==0=TBfKYiMXO%$+-p zAs{desOmpMPj@>=InX4AS3rCeAb^l#fl*3Ij6p|7o8jxX?+jl*e+FxwJ$nj+tD7go zx38a(HG_Z{5E}sm5K1(H3=tC*0y9iZEr6juk-^s1f#LhNuME?sO-9zt2=W~e3jqWW zvKLU&S6EmC0}C@NFbw`OtXR1WS@T~Y{tCn|f%q{%0AWqaFhdR;IPxFtaR!DUAa(*` zO&}HoVpgat7ytqYp8*U|%@RP&i=Jv>03g5s6&8~snaDd%00000NkvXXu0mjf0}n7{ literal 0 HcmV?d00001 diff --git a/datas/icons-48/3floppy_mount.png b/datas/icons-48/3floppy_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..651d2ad038814f517bc604bb461159a55cb15883 GIT binary patch literal 4490 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 Mm!k*j_meXJ2h6%qd;kCd literal 0 HcmV?d00001 diff --git a/datas/icons-48/3floppy_unmount.png b/datas/icons-48/3floppy_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..52050e6086aba8d73e071ac7d9e505d95b014bb8 GIT binary patch literal 4296 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/Makefile b/datas/icons-48/Makefile new file mode 100755 index 0000000..b2f48eb --- /dev/null +++ b/datas/icons-48/Makefile @@ -0,0 +1,209 @@ +include ../../makeinclude + +iconsdir = $(datadir)/ede/icons + +icons48dir = $(iconsdir)/48x48 + +ICONS48 = \ + access.png \ + access2.png \ + applix.png \ + archos_mount.png \ + archos_unmount.png \ + ascii.png \ + binary.png \ + blockdevice.png \ + cd_audio.png \ + cd.png \ + cdrom_mount.png \ + cdrom_unmount.png \ + cdr.png \ + cdtrack.png \ + cd_video.png \ + cdwriter_mount.png \ + cdwriter_unmount.png \ + colorscm.png \ + core.png \ + core2.png \ + deb.png \ + desktop.png \ + document.png \ + document2.png \ + dvd_mount.png \ + dvd_unmount.png \ + encrypted.png \ + exec.png \ + file_broken.png \ + file_locked.png \ + folder_cool.png \ + folder_gray.png \ + folder_green.png \ + folder_gz.png \ + folder_home.png \ + folder_home1.png \ + folder_html.png \ + folder_image.png \ + folder_locked.png \ + folder_mail.png \ + folder_man.png \ + folder_orange.png \ + folder.png \ + folder_red.png \ + folder_rpm.png \ + folder_sound.png \ + folder_tar.png \ + folder_video.png \ + folder_violet.png \ + folder_yelow.png \ + folder2_html.png \ + folder2_html2.png \ + folder2_sound.png \ + folder2_video.png \ + font.png \ + fonts_bitmap.png \ + font_truetype.png \ + font_type1.png \ + freeBSD_hdd_mount.png \ + freeBSD_hdd_unmount.png \ + ftp.png \ + gimp.png \ + gimp2.png \ + gnome-apps.png \ + go.png \ + go2.png \ + handheld.png \ + hdd_mount.png \ + hdd_unmount.png \ + html.png \ + html2.png \ + chardevice.png \ + ica.png \ + image.png \ + info.png \ + kcalc.png \ + kcontrol.png \ + kdevelop1.png \ + kdisknav.png \ + kfm_home.png \ + khelpcenter.png \ + klpq.png \ + kmail.png \ + kmenu.png \ + kmultiple.png \ + knode.png \ + konqueror.png \ + konqueror2a.png \ + konqueror2.png \ + konsole.png \ + konsole2.png \ + konsole3.png \ + kppp.png \ + kvirc.png \ + licq.png \ + lime.png \ + link.png \ + linux-classic_hdd_mount.png \ + linux-classic_hdd_unmount.png \ + linuxconf.png \ + linux_hdd_mount.png \ + linux_hdd_unmount.png \ + lockoverlay.png \ + log.png \ + mac_hdd_mount.png \ + mac_hdd_unmount.png \ + make.png \ + make2.png \ + message.png \ + midi.png \ + mime_html.png \ + mime.png \ + mime_soffice.png \ + mime_sound.png \ + mime_track.png \ + mime_txt.png \ + misc_doc.png \ + mouse.png \ + mozilla-mail.png \ + mozilla-m.png \ + mozilla.png \ + mshdd_mount.png \ + mshdd_unmount.png \ + nedit.png \ + netscape_doc.png \ + netscape.png \ + network_local.png \ + network.png \ + noatun.png \ + noatun2.png \ + opera.png \ + package_multimedia.png \ + pdf.png \ + php.png \ + postscript.png \ + postscript2.png \ + printer.png \ + quicktime.png \ + real_doc.png \ + recycled.png \ + resource.png \ + rpm.png \ + scanner.png \ + shellscript.png \ + socket.png \ + soffice.png \ + sound.png \ + source_c.png \ + source_cpp.png \ + source_f.png \ + source_h.png \ + source_java.png \ + source_l.png \ + source_moc.png \ + source_o.png \ + source_pl.png \ + source.png \ + source_p.png \ + source_s.png \ + source_y.png \ + spreadsheet.png \ + synaptic.png \ + tar.png \ + template_source.png \ + tex.png \ + tgz.png \ + trashcan_empty.png \ + trashcan_full.png \ + tux.png \ + txt.png \ + unknown.png \ + unknown2.png \ + vcalendar.png \ + vcard.png \ + video.png \ + vmware.png \ + vnc.png \ + widget_doc.png \ + window_list.png \ + wmaker_apps.png \ + wordprocessing.png \ + www.png \ + xmms_classic.png \ + xmms2.png \ + zip_mount.png \ + zip.png \ + zip_unmount.png \ + 3floppy_mount.png \ + 3floppy_unmount.png + + +install: + $(MKINSTALLDIRS) $(icons48dir);\ + for f in $(ICONS48); do\ + echo "Installing $(icons48dir)/$$f";\ + $(INSTALL_DATA) $$f $(icons48dir);\ + done + +uninstall: + $(RM) -r $(icons48dir) + +clean: diff --git a/datas/icons-48/access.png b/datas/icons-48/access.png new file mode 100755 index 0000000000000000000000000000000000000000..a5ded2c63454ce11449458ce2ec74db57dd89ed9 GIT binary patch literal 4560 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/access2.png b/datas/icons-48/access2.png new file mode 100755 index 0000000000000000000000000000000000000000..439c2a7ffa273c0e2ca5cb98a6fec6c54526ed66 GIT binary patch literal 4226 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/applix.png b/datas/icons-48/applix.png new file mode 100755 index 0000000000000000000000000000000000000000..3b3d670710ffac9263c8e9b73193ab6654896b10 GIT binary patch literal 3507 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 J`rVVk`ybm|6@LH# literal 0 HcmV?d00001 diff --git a/datas/icons-48/archos_mount.png b/datas/icons-48/archos_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..4d8651770ce054434cc0c7893a8ae76318c534c1 GIT binary patch literal 3872 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/ascii.png b/datas/icons-48/ascii.png new file mode 100755 index 0000000000000000000000000000000000000000..5d06c678f5eadec543df3d5c51d0bc83a76cbcb0 GIT binary patch literal 2487 zcmWkwc~nzJ7k|kMNr1p31SMgSCqY0FAqfh~_5zVjpe$CA+8QDOS}P)=23jEtLIlJR zwIF&RSg=SDS=?JofCym`0#Ze4YZSzlkHw8O?~8xT+%xCQ+&lOFes?($6&Y+|WMu>Z zfJtZwCq^&bzbqnNzwgA(=j#P7nH|9ffU9axgM!!kGc99lTt@7Hq>Q5p>3o2lc!0-; zL-!{n^JDl4iJ1qx`91((7#hl9Zx@X6mQd8cBMJ{-R4R8B1_8n@PvQ_buSSt(3KRR& zdcBUfnvPd`d#NYw+dn2)EbSbXYh+ie=l7{M_uiSTh$$Sam!_p1d@1;iwhHn*O6+pJ zGc$MeO;AG}C-7L)y3VRD=2x~?*4gg}o8NwN8^Dm4=L%PG&$T2j9yoN2_U9X2AVYHu z8E{8@099-Da>5*VWN8n)480N%7iU^NBU4Pkm+VZe{tGiR<+8KEEW-u?N-pSiB(2%% zOQ*L7E2uyh6lW$yS?#`fY}o8Y(lYDeT>>*xRJOw6pWHqI5l){4D0Dj6H25=)PWK9B zFqonjW#_1E&-?nqxg@O3yLu8cCIJ5GPfRA(B5uo;ErR_Z5tjP`;g#Vk2k(p(;o)Yd zgzl6xV7eEDqKbu;{hjT~w$2`SLl5*pwcv^Tp=5{#C;)~NX^zbl*HVReAC1V&j={Dy zF*@dsZ#k!|05O|(B;g~u&y@GN`{8wcy&CUhlh$$R?Jo?4fPD*<@30mUGAJH2(PolX zM##gD#Bw*OK_yi?&Xr_|PqI1E(kiI@f^ea6;>(K%AR0RB=zNdCM0jHIT8hZ0LyhaU zmQjTc^i;)I=B*K$;Pzutg;w+v_M313XLf%tuz9(|)}%+RktOFky2zZ)DVu}|LJ$FTgS;izs^P$= z8GU5{5ndVZZ8fgQf%92`@}X8#Is%j;DD~NV;{2rtWhIMt@qEPiRQZj}1Mzioj__io zXwDJ=nq<*MOj*oNXmB!Oi(41Ax|j!)a?0!E%J^NRC-uPJ8au!2M8VwjT1j4>QODbx zd)j!4g6X-L({L=ZYR-5TK!Cw|>ehZ&w2DTnNK~{f*;&DgvN=Mk_j3M2lWX$9(oyLr;dv0mQ?gRF(v=2cG0guz+A9K@H!-KDb}y}Ja4Pqk(TX7S;CQGoSxK~Q5w*XJpg zPo_!<(_NtN3zi7SeQGCFx$;~+v6A*zwUT5F4z=6nQUCf~CXwCR4?4=ob==JyrR&!r zj|-mo1N`UjUq&)&dyFOT4Jfz9I*5!hG)KV165%?hs+^R^xC;}aAEON4PcFKJNF_ap zVy{kI(BG=4?jUV&Y-4 zrsiWOlZOp+Cm>OiDIxC<)8==1C`m^;cY3h~hVOY#@0_SAN? zy*AiwjS{>`+usOT8$3R+i*qwRpbTf{b*zy%DiAHy(16@$qKAl6 z7(fKAXxK7E6$|5Px z!pd4J%e~=3eYU!Ad>397Wemo&mY*S%8s~}yV$8!*;N}Zm z-~+!zmFevd*g>oEcv3_0#B_D1O8R&i_a$_{Q}3N6AlF@QorLOAw3FA+Y0(fm9eoeg zn&q8c*7g{Vm$pvp=pFapKB6}4L7{gg-?yE&Qez13i3q?bv0NBAHVxU7qY76(Cy$?N zLT6U(2zb?Jv4`_yrlU#Wb0jSLSa*@md>+(svTDsB< z9$>bItxREx|7nx<1>=ZWd?Pa?@zaT>YP3~jY6M<9V&Jr8i8;Or`|AQaQ|A-~-Z?AyqMukVSn&T>9y-kIMe_gP1z=HKF=y@U_o0bj1?v z&CvEO+6~R-{(WO)2u#1%E9DL6+?w;Ro^c*;TC2x4tdc4(LVq1DM+e6i{S)QTV*C9pkbtz+IxD zzl_&Y(ELnN3sK)o3(lLPGM2l?UCD1d(dEFN%p&Qv;!T`+%lKe--esp%t#jC$#zQ;W z`#`;GNr$WwfRrmkd_6$nNV~Qu?g2wb~itD-yzx8(tds)QtSoTPlU$HEZ`tFt4v73*NOe z#^!o&ntcEdEkUFB9JOupU?9cU;W8sZT#X+W$o}<5Z1fa%f|l?RQ;5mWr+P_0GemAD pp3PEYCJc`II0Nk1a1wyQ1Kq!GR4)sP8}*YH5V|#z(-6QF{~vlCGMWGY literal 0 HcmV?d00001 diff --git a/datas/icons-48/binary.png b/datas/icons-48/binary.png new file mode 100755 index 0000000000000000000000000000000000000000..6ee4696879a9c41fdce41b85f9ead3cb5403bde6 GIT binary patch literal 2663 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 E4?}KYO8@`> literal 0 HcmV?d00001 diff --git a/datas/icons-48/blockdevice.png b/datas/icons-48/blockdevice.png new file mode 100755 index 0000000000000000000000000000000000000000..33a3cda85037d4023ca74d88f6ed58b99d9aad07 GIT binary patch literal 2812 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/cd.png b/datas/icons-48/cd.png new file mode 100755 index 0000000000000000000000000000000000000000..d18e64040c12ba4cf331fac4bd4c0e5f7a20689b GIT binary patch literal 3960 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/cd_audio.png b/datas/icons-48/cd_audio.png new file mode 100755 index 0000000000000000000000000000000000000000..6929f2e4a0601891b57b257bd7bae82e26d5f336 GIT binary patch literal 5062 zcmW+)c|4Tu_kL!#JPg@pvW*nlm>HD_GlSlc&^}5$_Ex5%5N5_8La1a(jJMu5Zwp$K zL>`T0WUZ)_Fv!+oELq3QZ@#}j?)!Z1f9}t@&wZ}zoa>}`y6;j^TCD^CfQpN=(>}Q+ z|8FT^<@;ge;$^u(hcNaq0H920g}E{=KNG`uGQ;k`+NG@mmLW1@M z`2|LuZ4R;p01c*#6XQVS7k`ONMnhFFKHU9rl@=G{7wjLnZ9z6!Hc%^L6Ki8vSPDYf z{9HG0CN<>W8qAmFjMWzqXf@-lww*RBg+`rrDQO@$M=$M@v1J4);v4R7t^wU2Maf(l z?U*#JWy`it4}EQF`|yhQ5%EW|=943UaLU5jjM}=Rt4e_3n1O7iU%@2P5O(K>+V>~D!WUUemX}9oUcJcpq2s>00CQu>{d5|DR&z1PEg!xO z_xIPXCg$bN)FnZ)sX}1{Oxry8?MN6l%QG+U7C@8ALw32f* zB!JtvYKvOsXL(FsO9bUnpVmV@i?DdQ=hxeVsY?GM|EV2x-6wan6Qz+;V-*+(^;y(+ z)K3PrwZYBJLbyI*9EvH7l&TWmu#L{i_=}tjU4Q#czU5D-Wam_1zozH6+h0L&Il~({ zlD-Sf_+8Y}UtJYvir=4picMXc*t z3iXYfBftUP{6Ij9HJQA0ua545RPL=*_0vS<5`{VuXFK4uIun8nQ+4`}= zb#zxK(F=<`WqAf`#4rj~In#9F$_DL|biWJXR!Fp(JKoJ}@t@?pl%9@;g4u?3op z^iKH+H&IdjeuC}PyrGkRs|Fu{g1F_3;Il|OK}X`v(qc;S9l_fHDCjNR++ZAfQfn_p zQycpiQu)adxq}nj@gH%DWa{It6C0nBlNG2ueY~qcSjbto&Y=)Mln)gb0*Ur+`evkr zsJ)H`-!zt%yg?gy%Q~}7x~C`e$CWilFww~0q5prC9EaLx%PCX3C6DFc!9;A=_JH4S zG4g-|IEvS#e&_gUp!+qj(ymTe+T@E*qR-R9}6ncM@N1ds{>l;tOxI&koS z&D&OxCMCz~tDY14>J32#ej{^Xh`Eo(L@BDq*!KN+$P|p)u;K3zQPBom@txmV4u- zEhy9kJ1~$r9gXDL}`wz1Z2l@qF|Fk#QKT@XeH*(zyPl%K%kPBFq_~(Qhp;_ZcNO99E z2!R9N)D$UloWg-8z!dO0%`I?jg_greXBd7C2fB^i20BAR9Jhl%6`5z!x;FW7v>%fr ze!|ED2fgw|!(Pz%-O2BZ(~FOOz=5+w635e@lb5$H^R`y5-e*Exn=f;0x6*oYr8Anp z)>LzKa?o}y!bJCK!tV{eAtjMVn_$^7j)?jRgSAo(Nb+JY6JMit^U8eLR93l^w?oys zUR1ID$Q6e}rY4PVNgI%Et`6_9baR@SB?_$;z3N=1W-zocjoP{h2|n9SDUY3K^o;@k zSrY*+6FbObwjXdgI%nel0keBg!2UB9f_ok`f>gSAdDR=)JN@?Li4;S4Sc3ih_ln|y zwI-Vy;kM0pl{fI|>L@k(rsD>lY9k?m3rc5}sA?y(?gYKIpc$DXwrX@?G>NLL0zc=P zYr=A$Q;LGseGT9y`sG>n?RK$f=pvTEFxN!E#}r6YID!I=n}`#t@EwL{E;^yq5*QS? zu^j^jV-cR9oUpIpa=n-liHkDJYN=9l%s^G4@T!4X^NLjET~k9tJ!@$KpLBh+pE|~V z6c`zs$`d(@^^&x_Q@PURj?Vcg8^J|reVyXNBu33vPX*ZmX513?*Zeua&UBOE4}gx} z>IBLsF!{^`-9qcf(^NW8+ytP^@TAMq(ON^o^B5+~nj2*#S-2U(E)F-3aqHp*g>~00 zIE>6az#z9jGZPu~{*s5x(!2Uks;Ir<+tF?2k3JuV)bIH(+5J5hKCARGd(&>h0b)48 zzyCX#HB(-^b~p1s%=(VKD76vAT%1%QRlMS$D#ySP4S@qBn^6JPKY_&dYI`BSv8;pC z{4XpXAH^kAu(ioI&Y4ihBx-?X3;9CvKocrb$X%Uwu@JcA*HK#JOEtdK^Wbn<>F+OH zmL9+PdsCNUcCqje6Kmo{6aC8K!R$Q6ikIBp3l5fc^^v=Nd35k`&n=Oz0phy^I-JV({xL>9WyIj4IOD}tdKq~YZx45^2 zLP4XYxQLlt?!Qz-1m_x$UxMa6e@)>P78~(^5{=XY+bkVYn&7pX(>9r+Yh4)ZHyIY3 ziF+8Z{ng=I(f65KGd?qqVU@@H4+Cla8BD(fd9FDZ8>o13w#`>9h6y2RCQN{ zjz2+I>RO?6Os#muc|=}u%KGv{fxAwWQ|K)-^` zAem!%x>u-XZ<$G*rvyme-@J&fFCwF$7E_;AmIo|t@2V>qjb#zuaa(Saz7siI#$4ukmL-~80H zbOHuOM|m&i{T>fCi#k}caa2+batBeB`ZMtOwarjDMcuEndlf?a(P{cqDaSFZNSDcp zk)m2rIAR>?)Tr8Hg~-!`DE_|ReZLNa9!0dE?Uf-mB}EbfiIZFJ)G){}k}S@IROd4a zBPC-L!JW%^?(2RbOWI1r-k9RZ_;X6ef-UbB!TgXv#8QfPpqcE5P(0OQnB-B!wv;UW z!M}foH92Vzs+xq(Mq{zix$TlEpfUg@kIZU24|rN&2whzgPoV_&GAs;```dLq4N&q% zg+HW4KcR0uJjHzx)-G zHaHR-pr$#1-VhL&seS+=F9gA2(L63`BOGi)DO^}oVcOQls(`Il9(2deB)puvG|awP zQYcwlo+(^O|N0`-(l%Pm5p_)kusmW=Nu3^0Vq=q$u(Qq9&hv0p|G<=BCZyP40i#BDE8~pkXJ=~(vZ`aM!8LGb zL3ug($jb(WMt*DD%9n_w5Dx>(f*r9+-dV9rs_WO&3t1Y&JAPbC69pjZ(bMW?*vd+E zM^tZb@4$Q9u;OO@%}M3SWbEcMn_1(iHw6U+kVJ=hy05YpIS!KjQg|I7{!^>Pv>6V|HfW5th@w9Ke6jfAmY_=tq6%u@G-Q$#}HW za~jBYweYEiA{PdX$O%Oh+iF=R17yZv(HLO)U!<5hFgzHzF!xJWkYnLX@UgE1-R;>j z<1b4-FjYz=U-t)hB9F1g77^GT_BgBo#8cbGvyxwrc4bc4W@#u^Ol<@-}12B)i2MXLeaU6Wjb{N_y zf+6Eyfcw!jFt-r+_yFAHVILg1G-xgO{#5r<^`+%u8&u^SU~0&^f>t20P90!6Z3i@; zkZ=>aW0u0^7K&U}s(4%Sy12)MN*?vnz>J3_dADOJ^ z%K0FrFX_uh2Jzcm;$)7`WZeI*iCSNJfTP^?Bi*S-bJ`1- z6(}eJdVm(`5y(Oby}QXms9}BFZH> zIXSqTeS9UgpNPNsyEvu5RvI(zH7fc5@@M4(wmCIncfI2V%e&f79&(WP3E?GER%C1( zuzx=9X%XRqp{?q}2;Ump%2N}z(12}1^nmVk0*($)7**F=ar9!G>$c^&pQs&gTfU|; zoSDg79uK8gMS59QR2zS4@SaCu{4K5WHQA}xl?&47Tb%V#ohUwqp8+4yP7vH!m3+$s zc&W-9EU?3!lei?|4Si~Qt4fPU+kWigr!6Za(>SgM!>g3!+{~wR3hO}^CH|_QrkncE z<)-=uvT(hSA{L7|0SHYL|GnaYH8s(TO1bZtq^p;+o$0Mg6Cmdrs(d7BR)lb@{TNd@ zq!2ZzMZRQUD@pU4Fa7`;a*b-w9EVTj^W>Z z)7XeLr}7-)2~JKs33HQQJ6O`6QO+h96LlXSAFT3jW!4Gw13VNZqIGWV=boT@Gjh1R zRD7RGpwq;vzcY%ZXp=nC3>jI^=4`fT>gi#ytngUvv#_T6D2t;0SI7v-`OYz==P#*p z36SUSdUcOIeppwsw4z*~NzdzU6QnZ^?$OFMXOnwhUBVaWpwSpO3g{7$x0wa-{P%j- zWpXiHVGsmQD5?S0l5e+YpiY^+UuE1VMKB*$#O|$pa;b%T`@=TmOh4-Qlc@BTDUuvH zW(Ll?oizZHe^%(137idEGw-~PSwgCw(7mL~%Ewu&djF(Q{Qtl$Iu^uS=5~TpP=FH%k_g5M1Onb94c51aIzTX@%Ys#A@PeROup zy+W>SKf1i`P3y%%U>DCHxFMbFd#P+b|4aWTG4Oj(ohoJ=wbc?*#RW-pI(#{)?>lIT z#5jovcY)DkbV4upp*?%0LA==Fk@RA+mRcRTf*2d?hexJHGdhZV>@Q8VHrBi-Gkk^Z zT2?yJUdwHFldkKcViiaQPj56tH7L<9e@E#b2d@4uqFDevimn@6k@-jRLD#pgP*eP@ zY-v%s*Tf&8ZKqTEI`aH?#JrVzD8hQSVpad^>exm3gvrW~X3GwrZ!CVA({bh%_92_z z7LV`zqLomqW?82qFG5c5-D3BKW&xcV2>MTa>lgx7%4E16QPNw2M}$KUK9#x`+J()T zcLJ-!7jCJX86Glxwic0oD2BH!rI!A6uHWVC_W!90G$Y)#aDxQ?sW2 macsW9A|_%>&+ae)2?BFmh21UD=OX2UIKXA6yHlwH6#suNE+`=Y literal 0 HcmV?d00001 diff --git a/datas/icons-48/cd_video.png b/datas/icons-48/cd_video.png new file mode 100755 index 0000000000000000000000000000000000000000..e2f348d5a5ff400fbdea459f8332787e11f8003f GIT binary patch literal 5425 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

`o z8w0ep6B-f{f@_n=gi+a1Yo_N7nCK1PVEKVBVf1i&lN#~EzQE`8HrSw^!c`IZyS>tP*GeLE^5Kck4Mt1#}YinOUrRe{bOU~ z1`B4qbw5+gW2|RK-qyk~5SPpD-fad=#Fsg9n7hJaCm0r8F2%uOs7>qZMnItm9MMi- zhLs61O|)cFgb&XEw0r^p8;!OY?HuXMg4`}cfA(5gOvRD9u({HiZ(QS_I`kV5m|A5| w3%QmdZff%X0a@xgBme*a literal 0 HcmV?d00001 diff --git a/datas/icons-48/cdr.png b/datas/icons-48/cdr.png new file mode 100755 index 0000000000000000000000000000000000000000..3a0210dc73d3f00a5152e17d764618bb89107688 GIT binary patch literal 3369 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/cdrom_unmount.png b/datas/icons-48/cdrom_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..d86a85f52c0fac27df1fdac92bf02816d038819d GIT binary patch literal 4426 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/cdtrack.png b/datas/icons-48/cdtrack.png new file mode 100755 index 0000000000000000000000000000000000000000..ed1a458c7f98259cc36c925351faac29e18b9296 GIT binary patch literal 3847 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/cdwriter_unmount.png b/datas/icons-48/cdwriter_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..d5dfe468a67314ed5f4e54a09dd657047f8bd732 GIT binary patch literal 5076 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/chardevice.png b/datas/icons-48/chardevice.png new file mode 100755 index 0000000000000000000000000000000000000000..342d33503f93a2d6ad2b1359c0e3ed8766101cd9 GIT binary patch literal 1675 zcmZ{lYgAKL7RS%c4Y?sCBw&F=9=U=Nm^u@Jv@#{(-T?Air~$2wd}xyZimz&wO2f1y zF&YDiCDm0BS(+4dQAdSTtcA|3Bqa`XNgKdO9cQKx%lM!S#3F{rC3nJ_&-3A&z0X?v z!~g#~XYW%d+m^>-tYrWISOxhxC4rc-y6CjP{tjjFbRbaoO1DY@=o;J{RR271=2dNx zSM4~wr>a_cv;s)W534HBfxP_5j^3d>f98piG23qF3#Ylc&nmm@9Pbc(V z$Kw=&-RJ^yT&IUDc8(04r~$$GSk!@1d?${r~7ulaO>!bqx?_Zf+oP{ zXbg$#_8hDU6r{27Yz~!paEd42y_;7{`hW1QELR)4-m|IhYBFs~#lp)II#2%&`pVLq z$8YIqv$o%mm>v0GvT|2a<83FEj(%1@qLDEv=zxpSM7dv7RFuTsx!;ijC%74jd#KUx z0Nq?vLV=aW!Pl#S3OdPREcUQm_Dc&$(KmzK-t!!ImUKzE5HeJ)(PZBr$Kr>0^WISpzeACRR&;Thav=Us2;lL2N^G1dn*B5RC0p$%NB$M>Sfh*Nb z2yXHJ`jfC5!L5)=FLrpBGpKqow1-3w`ms?JK(+Z@h+m|b2ZIiDpkM5LDj0TPw$v2j zgsLTv?(|~en?yJ;&FDxvTU*FGa)Y@w7d@@_x@PS)PnYv(20lvgJi(m5!T$J&a3@6z z;zwZ8b2p|B!S}_ry^^kDA0_To<4dp;P9bL5Ve`y=nE{cbVsOZ(m;>qkenVokY)~IV z&P$vLC^5IGc%J#C2ypNYHE_=?B6ZLaR>-v$e|AHmJU3{=8o5zl=1HKQle;(}0jQH# zseieKyb&@{=iA)TNmWxmA2Uh3B>%;ebMiA3D(CNNt!J8XZS#{sUO7xh!zFh5ACd=e zpNUkjnlH*C9kDIZcSD&!T_*HZS$+|oku#onk= z#tJe(9TJfa5!?_f*H2^D?^8Y`G@YiY@Lg40sHw1R1g`^Bs!b{0!BLbAE}*WEL=hp$0Yj#UJ%YAqyt?a~vx zo^O;EFNGV&rN3`Kej7hh9vUE&oNM}!)aAaYuB3l*RfiZU0Lm%3%;o-O9vT8?>TXq9 zUVf_728N7PcF(;1kA5%r@x`x9(NkYyX&bNDR~df~o0~{>V{qBCPG0Bvk3y@6HScB~ zGK}?Z;=W%?I?%c2(b*ZWeq#xZ*uvVbIQBXYM8)eSFMDevC>cM?Pc}R5yxm~=Pc6OQ zm;9Cat!&Cv@td;r;dol$_B*(sv6xZ@T}i!=Of>3zGeX1IF#+%3gS)(!{EwA`wezjg znE|$J<2P9cMx)$G`>nkZsMgrZ$0^gpVP!D-HKZz&Jt7Y)yjZLL7xMU_Me@&y7YR~> zO=2lDd~Jg6VdPssx}=TkPo9M+MmJacV9;EE#K}{ymn+i86W2L7a~@a@)-IjG6FY^$ zg@x7TH>Ni49|#aJO+mSpHMCQSg3)Ip;qaPfMZNhfvZ477PEd`r*#}sFoGL6`0P3MZ2q8Td^=!Io_~H?tHc{tL*J#~uIx literal 0 HcmV?d00001 diff --git a/datas/icons-48/colorscm.png b/datas/icons-48/colorscm.png new file mode 100755 index 0000000000000000000000000000000000000000..cf97d8c9f3e8a600bb2d97775835b5ca2c418f1e GIT binary patch literal 4290 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 TvJdKiB;e|}duN3M=iL7Q>UO7R literal 0 HcmV?d00001 diff --git a/datas/icons-48/core2.png b/datas/icons-48/core2.png new file mode 100755 index 0000000000000000000000000000000000000000..137d407f57715a59e1265b1946edbf3d66a4d54d GIT binary patch literal 3736 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

m?4i(~t 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/document2.png b/datas/icons-48/document2.png new file mode 100755 index 0000000000000000000000000000000000000000..39f64281b105a9f4495c9c6f7b6fe447f48d028e GIT binary patch literal 2345 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/dvd_unmount.png b/datas/icons-48/dvd_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..56a7489701f43676025e09dd8a82bbf35a02db00 GIT binary patch literal 4802 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/encrypted.png b/datas/icons-48/encrypted.png new file mode 100755 index 0000000000000000000000000000000000000000..cdf085b78d28c16ea9dd428bbda12fc454526262 GIT binary patch literal 3661 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 AEC2ui literal 0 HcmV?d00001 diff --git a/datas/icons-48/exec.png b/datas/icons-48/exec.png new file mode 100755 index 0000000000000000000000000000000000000000..0dce612f79dcb7434110c00a2cd8e77cf76e67c8 GIT binary patch literal 4900 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 Ef`qveBme*a literal 0 HcmV?d00001 diff --git a/datas/icons-48/file_locked.png b/datas/icons-48/file_locked.png new file mode 100755 index 0000000000000000000000000000000000000000..ee2b703dc4f804e8b6f653a1760a1e6ff1015c9e GIT binary patch literal 3668 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 PM+M;RvCF;Em6QB`)*HDk literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder2_html.png b/datas/icons-48/folder2_html.png new file mode 100755 index 0000000000000000000000000000000000000000..f260b3aa276ada20eba1ad5247e6d33ad3f3f6e1 GIT binary patch literal 5492 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder2_sound.png b/datas/icons-48/folder2_sound.png new file mode 100755 index 0000000000000000000000000000000000000000..a96c1b150418d2ca66ffcf42f2eced768e7b4b6b GIT binary patch literal 5227 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 L13R8?rzihE=m-FC literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_cool.png b/datas/icons-48/folder_cool.png new file mode 100755 index 0000000000000000000000000000000000000000..a2771d4835d6f45f2626ac9606dd91a6084190fd GIT binary patch literal 5380 zcmW+)dpy(M|KH8F?9E(~jj~C(L^hi*`M7MOTuND2Q)2Gbr?N_gu+11sNEFp4Q@UTQ zyFOuKuEi$#M4v9K2oZCi+ulE)-yi3^9_Np9Ua#|dz0P?(pRX+DHXj{r6Kx0tqT}bg zamSJ*|2NRcr8y8bo3SJiF^sJY2&BBpS?lcJ(i$JPi50gqHahNf*zqU`BQiETis*MF zEGBA4R9IxfvF0c@2xR#szm1Gt@&AS|fFMoAL_(l-b>uoI9dh9}|L40;NpJV1$07fP zL!cX9qU0%(BT<^gxxTyqBZ0QDdhb63lUg10%pho@_wjN1#|!C6gpl~8Y|8R5wR&m- zeDo@Xl3GU+n-qa_Gc$94Ndrp;`=C5XxVevEZe3WA2!)H^fXA_lEASs$W^vb3)N(0j zqSi03vfXm~ndm*j`B(0twA(LG5Ljj}PW73>&+7N-4L!3q1Zls=TUahJpPO|l!lhLd z;Zqjp8pR9kC~;R!_ueP4;b2rb(*1U^&wo4Jh!2vOCL1S?iOETtv0P<$C{iflYABU+ z<5!hG9}obN1dPh07)1J#^~1z5RWDg!cd^fShB_&)RXq5*<#zY!)+;9e-7?=zukxh9 zhxrFov*rm0hot!_W4mbr8caP7(F5V$4R;7!+|lZV8qSYCXCXN`MQmcf;;2y({^NT+St$ zhWB!j-l98lk45MT3HZG#JKs9ydUg>VpV|GrNx^&uTF73ymdi+Y?mt}J`CpjMqKf#N zeiF7dl!J#m))ZI6yiA7GAcz-@Xq`bsehc+xw}-RC+3>lZ+93s~SqKlyHxd>+ZKY>O z7MrCI|75^Ty1J~t$wvsE>9)M?zhf^w=f41S?a2H+*FW(E0CoUKZ3F*qF5mOI{xFC6 z3+iIhTMTB?O$OqH+!m2_SjD0eCHv3`76-54QVLwoQj@gqCt$MkXiO{@l33QHeXZr^ zki2q2dHnCU$Q|wwJ$hXo#1(z#af)VasC$O{<)l%NNAkQ(%3Jx1tp)M>1uXeBc_Az^e%WN#RDU;q z*V-=JuKL%w6mU)8E!?+ z;or;Wn-*nR#zX;O1)*cr1ouHQaP7~YJeFED$%62 z?Oc3OF`loKx2VP@2*Q2kTnC&j$3bxSd3aCZ5f9TJovL* z1G`E9fOctF?;}zRXXYzO_&d-8dhurra=#5bJCj324DzYdn}4{Rrj=~n{w+trhd>cI zP;YPVhxv4ut?Yr&oxR{#KHe6QiT z!6F5oglpURSquGK>v>XBEXYe@>x`efz|Sf!W(afB89*k1tFGq^);P1X#x65LvIRA) zO?k=}USm;&=s8*iB9jq6%eAT>I>z~A#+cGh%;vQg2^p6kq&^pv5p z*B}`pE4vN^?r0L?cy)3Z`e{MbhG~_BEX!)tUANw5WaIQw;+IB#Cp~ca-hI9Qip9?o zY3;goy2~qc;;77JR6VK#!(B!A4&}hnz5GzUxz0c&`+j)O_P8kWw|&i0yQy^LZO&>Y zhDv@7oq}$8ObX>XB*CUlLnL!@)yP+8A%U(TiAFV${W_=I?mmY#6r`=A$qKiG;ysRy zQE<&qC`s_WQ4e79F4q+K>!IV6O$nry)}`E>kt!^buIFCXT&<6dR@BEsq=-n*`zfI3N)X#+rpDIMBvAJ;e9@OK9BWet&e47kWud(6dCZ7KW zy-NJ4%?=n2yUtbgv2GZ287|p1EtQ-Dc9c)6>=&jqHl}wf^vEa)qJhdp*;;kMB|Lmi zp;1vn5YAj5vQDVsUoqt3G#bsaY~H9;Xe#!Z?#EP=%4*@1S%N?=I3@g%n}#1rz8n!h zGliA)kBWLHv3uK7^OuvyHH)Zz{k#kfEP1t6ZH;RBbF7dyd{}zp>UloAORmN|x=%l1 zMctHXrIAd_&5chzFC_fY3&=Z!A(>x-CSw`4B5jDK*R<|^wX9R@PWpOJBQ z$yDD=Pj^U;mS{_H3N`r6#5rZnvr!4yFpxf>^(Kk^I7aM`u};GYzLstHAB*O(U)kK^`z%h4UluFC4YT zPS-Ky=`;JGu*^Piw|BatGwmh|!L!lA^+-Ifh4-k}HA(B_C_A4Z+_%c8m<^}+#SETd zFVxa^2oq^y(dN_;3IxW2(G{F|D?wGmX{5)H3L&~~@kh75!1iroO-Wa^=0cDjOXsdFeo zdjyFlUg|C}iqND~D;n0JCyC7A(ay^Nt=lZTr+@;R%Pdq*orxA=0*mo+y+t^?Y`pm+ z635h}!vcQFVifAm>9Z1_nZ@7^NqZ-MFKdIx;#srA^bYRN0KhE#Gw$e@ozZGpEoORt zl$)7{>KAbHw3+*bsIL4)t!+-K_tnTEnx{nk(EBBS@-u6kpl6CLto;mo}6HLU}9 zs<9s2bZ3hcXhPVsYUg z>`_Ju9uZIy9bbM!$A9ff`c+&A!%GiX!hvH`YlPrKDFAHtBqnNf*$p3{(FW85g<62h zd6fT2%et{)*(2?|y=I}MP||92^K;SWWSO_fgUw&ghTC1}X8iJ$myy|eo2g{$A#&!Q z&9K(6=q0v5iud&{$}Oy61g0qs+Tb_nxxoq3=ahr8836Rq@DBZC>s6jGI@}%8`RPxb z2WN62h=X*?MC#G)T83Ldd@)F&JoVaK+E2$s@f;eOpnfnr`l7+vJP6A5n$|~sA^Yfd zB64keN#5VOUv4E~fRjvsL$9Ns+!da=S~e9b1guC4?D&LfdwBWZYs7V75o*lg&DL<& zg~pt3Q5BfU$x%a^`6>QITTET`C=K`R-F?BoIO*{W^WK}I2sV{p1MT%(qBh~m9~!7G zGupRZspO|^@U^gTeeTnOxaDHroW?iW{LJf9Hq)c6M#BH6u~CtSgAYa^0>#6?HBdrz z%*djyygt;_V|WkM5-7oYxN%!meR2!rh4NVZ(UouHs(C}^4`b%DUToR#MU*dye8Lrc zwTd4EWS8@rv8 zDDMOAMlfEidI%rG44AVedsQ`Cg$k#gu?zd>ZmBwj)R?gKTb5ifC$r}ij?q^89e4m; z1@ZTOHNsd0{FzppkF_<3X51+C8)`T5o$w3N-@6;~sa%4A)U){aQnQq{;yRav>2)&M zmVVsk;0oM|lP=VO*?kTiYc$+Yjm?xX9_`Ds;x%JfEe>dp6sf8?yx})@DC8vgX5zbf z1uQi>a!LE&i@ojsmZI|_0DWlHT^lmF3GNlEFh8)pDb)$RYyzEV2XUV_V@X$e$faz+ z4w1(5Lw6lP_Sbyv@4~aXy6_`ksuY~*UKcjSC_FE4cMRKjd3aCMd?UN`9meh~myzE> zJMeUN7ULM+LR632$YQF3V!%h-j_J{<4BNIH1EyswW7tb{NpK zv~LwXzF9*gHYijB@7;x1(shR~e}nm9@8yjEmrxl6an7WdVmCY01_P-?&K=KQQz_HqS=l}`W4?LQlB(b(;b>~Y9+V#b@dy;n;~f&Fw97e;84Y&Oc&Us zwU!fWuzij!O6)ZiTkn6dk~Ij~868K43k>dd!1~PDsIZ1V4hm7DjySvFRk%o_IK|6fjbA8LAIH!hp@xQ{dOcXV`%!C{e9W zCS&&)sptpe)Dm)}iWyT1>C4^}mRR_rr=;_#=m5%zkK472`1|Gg&v@JjJi-ey08I(u zG-5{71bRjZtyL=Kc)(@9_W^)IDFEC?wryKUE)0nmHIh#X0Kr+IeH-Z^K=_s%sdq6i zTJN$xDv{1pV#FPv66e;-W`DmjFU20dE`EEKtm4krs{G=9wM*U{l_Q+4FVWopnR=Mt zN{-*O^s9*N*S>k9lkw^K>alu?Ken%!S7>mKyk^<8*U0QFce)`Dzb`~LlVAD{Wk(Ky zM=W@dZ%SadeRV`Ji&Z@Ha>)II^cSYg5rLN1He2h8I{fp=Y@Gk2!%O%=iVO_QK^3dA9Cj%x6{<;c+st7*;4tL|@I{hBNm_n|+~2L77nwI$wK;-Ddkq)8Mh%yI zcD#fo{pak5lZjayC3cO;2bmGs#aN2dj8T!ZJ^Xh?BI>~R6Kn`KqhMlOnsc?9E%~>i0=udFb(~TQ_3crROFN}UvIDF(t z^w07hlPi9Zy;fxNLhlyweMG?};>QKlDPGRkJaD*Vc3|qvHhZXkA*}Q?As!zIoW~vd z0#eXW*C8(d#ZYKlg}%6Ba6g!%eEaV+;QM&K)NUeIX|W|nCOM}#<@I6S^}x2dbMMB8 zOC5uOn+8NHs35gwjeD@&ZO1+TdR^)_C%gksvvbK$Ep|s{XFiuy*k|phsWpdRk z&Zn$?xNKqG(olov8yd;C2GQ`D*k~b1 zn*aR=_%WZ`8L|p_MGfq2U!cn$RxELiFjHfgO8_F1pCzbi`g-N_ALbptp*u$&h!6@3 zU1$#XaQ0G7@>q}ZfFQX@9_l}rYH1d zEC1d#20W8-BDlTn{UMetRsYa?(t+0#D}Sl4wvErB9F=?n5$-1BvcbiyH0O)jCG+6B z^o2?SvFbiH_CbV3qCSqlS2mj-(%!SwIZ8Wyc=<0@$bqM@le4p>WKJ+6&%-5FaUpAgwF1>1t%y?F`2C)PuSXic;skRPcPZ>{* lnwktqs$XLc(PKkk$M^mD$}IIrp4<&iUNW&7tn~&`>u}2LM3B z%hSzYsfoWt4X#`dLzlCZO64fUj{*SItvgk7CzN~anLPn#_Qyt@NeqpT1Sk=)VUc*R zlc7f={Ubvol23~xod5v+(94Z-AgMoWO`&iRQsDqZBqE9+WFY@LbFBSCYTJ?XXW;!X z0OD4QFd0}g`u!(&S@Iz8iF|7;`tAE*>rNZA3802|kC%|&UOQe{bD3UmOCp8SB0|IK z;^&+KQZtfXFIUs))kEu27fS#9Wvdsz{j}|nja(7JrUVCNAqlCJ? zB&|)=H3vJ&^CuLtkLA_4_y6-A4~ndRMA@Zx%RRijawrE56pnoBuArT^va*7oI(3Sd zwYSV3q8BszFjtrM%_(WexJ{=M6iwdL!r=Aoc;-@l7Aq2oF!gDxa6Oo6W6Nb6c6Zu} zh~L%KMT?AV;x{%nQt4GEZD2$j3nR_hG}?UV`VR1VdHacq(h@&wz2nArdVVFr-)wKt zfbc<5`}j2mhiHF0G!GH#?(R;M$yO8DN4v{yoYGbb1p@;{S4K>rJ)gW(x7W;K8@}aN zXb%v5d!2W6EKT)V!;OuN;pj^y39UDg5;e7kzZP;wzWh@RZfWxd#d|k`Ax!Ty3)>7=Tv2E~$y$xREIB_SE-(lE{r$m}m6hR(UCqtS_-)%dXUE@~vae^w z+VXNONZGCTZL@RKiM%Ha(~J@AH`>SbhD!n-?O6VACgw$SOwIy81~l75ugD#*&vd62 z6c-Q1*4Eat@1~8Sv#vUE(ZvM?u)Ap-4~1N|zM1P}N+76Ng;7kBWh*;i+ST?f&MP|> zH&X|Oa5NQK(~|ibCoWp%rhe{KO^t0I1@FMg zdNZ$j5hVc#hsZWf9Ub7JT9rM#sadxFCC1*~9+RoFfT{PsZ>usv@izbBkmyq3_xoU8 zH&Zzc)O=d{0P5a^ccT`)by5`!_;d%=6{l0frRr#Eh7N!E0&_Icdxv*G<4W0~oHXL; z5)ZPf@Z4?b{=$R4OfLVH_zGFC<{W zL0pt)LHd)XGmG0|gHNfb;a{2b@uH{B(|u1U92^|@Sj|idGV3iK^xj=;9Rh!TfxJOI z!Lmk}zf5eoRUF2>eP({lFOErzh!6qMmVAp7T#Of4x2k#1C`SchhcyAq*m8gVTQ|#CwUV;O+}hf@Pjfg36BNQXLP_wxE>*hg zx4b29_jJx?M<#Kw*REX~{=C!}q6t5m99P~aelcF(a?`%)M(YpdvCB-PR?C8N+1>3z zAz}$DYI0*7Kd6T3FPq(tY`e&A?m%>OYuP)>rM450jIV;Nj{&Bc+{fE%>T!O|u%9(;80YhvZz7^ z9uIr&ZmTGjVo&_v9sbR`M*_RzhTF8+vaIKFg<{p*l<-OTS9k;c3DX(yhH{-C@kGKt z!j>%=AGlZ4N0*iD!CL0NaqrgVx#P3p3ncQ6UD~9ru)Bo@Fa+EI1R=0HnAE1Y|-A z#S{}&2jpk~HD67Fu4;ipxp~O=)9MLCPq3(hCPwsR0m&=X90OM6eiasgL)6VJ>5u0% zP?t_aSh6+YW$>;^L!zn@*DP;#FD>94S$B%IRK8UWTRWd5a`np)RK8%2biD2bNiVNs zYEOQIBLmIMqPV8=$^&6gD0KLuMy}1M0k-%HB^gopR)7r@a3}%5c#_)|7{aVdCW45f z-f`{z9zLZk##!KURfor+z-Nk$PL>zxipn;bYzY^Je-oy?Src9`QGm@GN)_j~s+2i>ETD!NN_AA%VfmK1f@Pm2AbARpDg2LV zK?cUhxLcPRLnvN^J` zDh+`sthaJXZRaJesIXZnwXA{;dev8u{H&4RA9Td$0@JuJSPJXd$t`hB8pD;Kyff_V z?7*F;257XyXQSSnU5unfhO1=RRh>&-ns5|eS&!S`CHaOD@4uI8O+LW@Tyr4E(_e8e z=l9TI#@)F;l027X`eIWwB7GI|)TpE$j9_$L$}?jppmH%$3$?_uUH{^OR~SDVQsKD1ZmHfY;FS#iXMN1xZzic>eaTCPu&IU${$T6T z4>xlD-N*R^qRDY6QA^8{wKZ9>prtWawO%+A+A2`}dS z0q*=WH7dX<#z0uKuvLIeQSB(fr$t9c4_8Wd+V6)MD-Z`zYj8WC+sw3_7EsHe2>gqm zdQRGQgstmQPD*{1z+}$6i-re2o&mG&)aSw;rnCW_MR+Bi&TbktC?aqPcO`=ZA1-ZZ zY*H(EU&^Pf%`eg60rIScN=`WBjt6{^;Q5gbKh)d+c92aUIVn1LsXu(##@7$Ae9V8h zSr@myC?`iVcrC;B3Ba>Kv`urn-gsblvfo=XjaiNejMSwply-Ctxk#+K2Z8pM$sdMF z`ETcs3b3#>sSHAxJJ<; zKaWneprdc8o}1{#5ibMA-D-2Fx^UQ*J#w;lp$lEXaE40WxEu>oXgtX2W30QTI$rt> zM<+h`<8k4L=;j~82FvrsvEU=CF7UeD$uKnQP@eC_R%8~B@)+>W?S(Zs(_Rrct1&_> z_4+u93~VTN#X}3_$&7$ZuRq$JZg_cC{2qbA%1H^fneJ?2-S}1_<9<_Y1LJ#gT>grF zP%gt2Hy(gixO9-n%MA*?bSNa--V?QzSl{=d1XG?W74VLK^=H5A?SdN1vPR|#j`G0{ zWEZM~8|8pz86h7$5o}P52tC*_MMJS`A6M^5hHmI{N9U0}8xd;wGbjeJs^>FfG3$J( z@7F&J!lzctcc+SGvvRI)z;7=R>^Yn}f+7Z{$=7+C@oCZ}#3Yl>F_`amId(!ho_@I8 zu2N~jRGGX;lfi{3nytToVK`c+I3nQ50$Mota9(gnx7C7cwvI3=SkOYDgokOe`2YLa z`(1IpJaH{W2HCEIG>DO@h#DYJwIlnXMP=m8I_7AW0dAwE-K1b4^y}4boO6^E`SZw$ zLKl_=&vtcXerKIZhP_rHf+0m^qr}>Zo16P$x$UvR4dU5_`9xZdsgU2<-N|oi7vr0S z&2b}L;p}ynt}5BVD|Y5C)7z&JllRgTi&sakEml0CC+;qhC_eSZyzw7*Mzh?nDj+K8 zM^>AC8Q5zN>L}Y_?x)UKn8A{V*t2a~91l001K1PW{4hP6lQ8L!@GpkEmUTa@Y=!J=Fb-j z*pYvsWD?yr_~6>vpEE^&8P}Rw3S6c)5a(Ne3>;&2nNv zf7^J_TT%(`ET_{-`l(32-DDJSQX8=QKv@v(SjN3noOAgDz6V5(*5?*a&J;%0X+!4Q?!7%jeL+8%&mAPpVWH zXE}MoZ~nV(b9)+`$*vzGPMGnBVn|xUT~aaWz_cx=}QhvErDu*s(Ro zRJ!V$X>)1|J(2<5lmC{eMEm?n$j>za{Jtakdl1z;&&%gs?j9dYf~Ql*=b`6Ipiycg zNZDOG95$=X(@p+1b~5hqKlkr7^E;b5;^yT(?DGCy>>-y1QnpVnjyYwc;6oyqT4;es zN9ff>YcCfkiBE4sbPHTKq^(v;py-(eYS#p+ow&-2sYVjtUH(=^L5=BAu@5)7F*4hcK`Cfs0^mqxZhF} zn&K8jE)aY6Umn3}zi(hYH1!)$IJ#(-;$wO0m{_8BE%3Bn zL8g+8z3qp!nlN|x^xYIs;kMtBiw^(K91fhFsI1qDu{BiwZUA0;_PRZCrDgm-3vB_9 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_green.png b/datas/icons-48/folder_green.png new file mode 100755 index 0000000000000000000000000000000000000000..ff085c5f51d58c0102d5d3dc8868b9714dbc502e GIT binary patch literal 4650 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_gz.png b/datas/icons-48/folder_gz.png new file mode 100755 index 0000000000000000000000000000000000000000..e0f5f2f265f54bd20943f2d8826174ca17dfe868 GIT binary patch literal 5130 zcmW+)d03KZ_kQ6;a6!Qqg*3s;w9yo?)l|SW%hH-uDvQ^>=GT-hmYNB#C@yJIZkVOC zPE&moS@Wf%DT(`%PFYzwAuegzf;%Yi{+#cR=Q-E;w50{+}Ftt-sNv>xWW(s z0ONpdK6@4|?cbx1UA)84>dZxhiDT_#0l=e+DGR#`7JX{ewmmxmAlViGczgg*Ba3zn z01_4hzd!)sRssO#$4h=M?FE3PMFBpny@^*NH3-6x1!DnJCC|nuSW9k-@VWPmDf56 z=<~chySAq*M!UKAua2GgAUUF`o_S+;Mri5bfhICnpOYT@vd)iuLdTumUW-(-$>e&S zU~F_0iX;w3#;Rt<<;X~hC(naP$OkaQeJ+6EdCoePV2;D(=Rzt3ah6eN7hw3pwNh4E zNd}ykT^jMcbQ3i5WLlpITq?{y7~2nFwj3%inQ3{-;XaQrDUnN_4}BC6Dr zI9XnaoYXL_K5-?a4zUTLGZq7fVGr^OX#dW%f}yt+Ts%U8N%{y91*wcqYZ=0`yraRl zbn^@Oitl9=&`hiC@>T`4f3P)ZdC+2!YXh>#V?sthf;_8yNhB^9;*SX5a1quCDUf3* z;6g3@NX+oMHQ0@Qeu4|#NS#Xiqa^(S4c8}(70cvk?F@LgI5PvjKHBOp*yW#ESwLa} zrWW8)CjJauzNEfyjw6-m2!RXI(_k94h3`I9VLC=$BXky#Nje(6KUK?DwAK7r^;bB9 z{GMm>@C@Ll!v%j~G|DJEtF@Ik9M=HoEE0j2<9D(5b$31OJTfE9=bMVcc^9KGTM!25 zj%HmqnOxR0(e0^?*sPu23Od^v@t>M7I&fxIg0(m~Eu1@9rug8THHicV@!bm}cGcM} z<_unf_M?OLc63xhx5HAh6V~dCpMb%&HbDqCU=sukbP^M}>Td+u%&45a*S3$ex2c+x zil9T!9u34-YL4PdD$YkGPRv>eyBfq!&zq<=4F(SwBogzsk^&`3Wo=U0IOcPk0hOnp z#52#TW_{sVC4Tz7twX6@;0WpmP7@3fE_0)eEDTDk(|s|oa_TAm6bYf`N4NG&)FUuW zayTY3T1bRq1|p-d=Z4>n|G+nd=i=Wp^S50%=^Bq7B8h$?SHan*|33249YtiOyHin( zmdqCUThmyr)4I+VYNJ9OnPn0esnT=Q9Iu-Y(Em2Y z%tP&&51-mI8l_s8a|R_)1aUYzasZ5dGnLP9RT?R267W2bQzU1$==9uln|h+Co~Zq)VsPq;Wp1@RYMomwy{z2eaVUPMF2~1 zB=V#CVEd6Y%ZKe9D!&88{up)}z4fFvhNzjlqR^JL;Pb6KVj$Dk(GW2dN<=c3vvcX- z4wBek=VggljHwt>AKetA(6~{Ip0$&F(#>7C1ZS6)vIO}VEPNJ)t7?k>{CpFXJyF6s zl*@n4_7y5N(*%EA#VC{i?Y78EY=-9F(7(`H=HE@~^sS@mYq@%Xh6stxPNi4X;Aj#q zw?V0WZ-p)XEsm7VPIaZZ>iAFA^56y)We~DA58nfy>ZS-SU1bEQH#}+PnquG|XM8>H zKTE<^reYKHQUx8|T-VNbGd%d)TW3M#d5Ut4DGz9{059F=Xx^$PG`DM|TThT(PGC5ZKbZY3kLV{SZbhe z7y5Otba-Yd$(73tz+Zi!bI|}{smSvt=eyBZ^^)F;d(5Jvs%#;L*V3I|X*ONByOQlH+ zPq}94YhsDZUq&aYhPTS{$_|jL5(~-f^u5-*^?y1E&$C5j*6nqhBe~!>pCdn>%{rEEpVTMoX$GbJw3IB?^SkLROQs9^-{_lgpXMHVPm zCs;1F*W0_}M_z^rg2HR@ekUK`<-GFB5LBo?`(Fs!2aG9XTW1)l8p+Uzg07yM+eB%V za*w#t6XuORpJZ6S+D40uNoA`R{5Ku#lrk#Pg4;=l)Z z2K;C`PocZOzz5Z5xoAw+$5u_JXDhmDD0mLt!C*sra#?98>iBIxAy)y%7$-AOHQhSi%jisk~c9?10$oc149akxKt5AG+mBavocg* zvFSVA@~?)*_{mHo$=V6r*zRrT#whl^EZ=pTDZrEg?YKR92URa%m!O7IO3DpMA_XSg zmL{}P4(D|d9ysj!$3JlqSizTj9#S|}Y{WBGwXlN+mxka;S89XF!P|A{U2DXv!6$}& ze+|V6h0Ee-E*m2U6nX+TbGy~kNl83WKD?a0(p8HX2hPdKgQ6s#wPJ9JIs*@I`jQbu~~;d^wFhoG;`E|2Y5{Y zOP3B+a2e%~HClB#ob7uRF5QV4Gi5=arG`i6fU<7xNAUmNPzF{_%>9t#-Q4a$g!m~5 zU4nXLy0r!XZSL;Z&15Ks7VPld6(6G$)zgNu*A8K%x|COts>LY5{>e+Q$@6adJR#5x z;Z>LAmu16b(cfGE3<%08V6l0iBLNg&HjH+cG{n&gVsZZxEsgGCL-VGCO9$&Y$H}Qk zicFaq!htysz<0BW*I)M{3+DkໍZH(J9@YhC=fJO`5jNk^v7&(9 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_home1.png b/datas/icons-48/folder_home1.png new file mode 100755 index 0000000000000000000000000000000000000000..0c9411e72bb0291f986e63d8df90069ada964490 GIT binary patch literal 4350 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_html.png b/datas/icons-48/folder_html.png new file mode 100755 index 0000000000000000000000000000000000000000..37565e0947729d971b99fcc55f0444119ba7cfc7 GIT binary patch literal 5196 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_image.png b/datas/icons-48/folder_image.png new file mode 100755 index 0000000000000000000000000000000000000000..f0d8b5623ab1ec2425b74092603579879d49a062 GIT binary patch literal 5802 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 UvO1t+W%>i`-F496ksU4mf47mEJOBUy literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_red.png b/datas/icons-48/folder_red.png new file mode 100755 index 0000000000000000000000000000000000000000..b66ae318828864b3e1cc5338355456e8eaf7ec8c GIT binary patch literal 4502 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 HP}2VZ&`ku5 literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_rpm.png b/datas/icons-48/folder_rpm.png new file mode 100755 index 0000000000000000000000000000000000000000..b1b041ef311a8df26fd5b161c979989d9c48b97d GIT binary patch literal 4738 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 D{HKqA literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_sound.png b/datas/icons-48/folder_sound.png new file mode 100755 index 0000000000000000000000000000000000000000..13422f8da9de0c10a28ef1579d35840a140501fa GIT binary patch literal 5829 zcmX9?dpy(o|Nm^WP5EG@*eF{im#B>?oUn}~sYpVHY;#SAa;OunQwzaQ_{>-m1ZpYLau?*UKUmBuRp0MPZ? zv&&C268>x22u&XdUCz)9TG5pK6ac7hbAV@m*UT}eJc3RgIvI893_T$dphTPui^O@w z(W4{%BIyyyzqdy^1At+m*Di{G(#J4`T1^uAA^=EpGocwm2J)xaqn#g8I)c+rAwI$Y z$gZczZU#RtQl*rAyS*K+wmyk^-4}v?Ws5Qev~jx=X36jK(^IgaNhvvYYv@wx!kqf= zXAHZvW_*otsam$QB)cjIto;5B!UDoJcpBt3(~t0w=p;uBI;gA`)7Q0(u3$*J1@UuD zUU~Iz%nzQ63gF70xllcECEnqjdn!iD|>{Nh}<~f@oP04#z^S!R?rs&M8%f|nmvcMTte|mMF z{2tM?ea_Z4MZREUvxwDJrzHR=HEj3GTUaLgM1!I+e)yXMmypV+G2Ui)Vr?nred6?Z z%$Ak+C4?f^Fv3EBebxW1R?yoVUFBwxTU>wo@V9X3j2tVZa+x4*O09x~vms&KOq@yB z2otfJcdOe~2{GiWzrM&Ru#B$ADJ5evMPJ)`d>^Sd37_t)7UFN+y}z;lzcOVbOW7Wy z*aI)C)v<5Q${L{V#*tdo;R^3`VoXK%EvywWu~ z(Oo|$PWZP2;pYON$j!~bPVHL{7^;~G(Gv6X>9t2(Q{_SdYuyi;G*{e1+H>iwY(`%= ztk1_3c?4n1l0INU8M1aI#Evu4pzOtD8=bvn`LobJ^q7W>sVZxk3EM{>q)g<{B zj~KYsfBAMZ1zJ#Qk(yZ=-rtZKvr*V05O%jo#_;ydYBx89KB11FphqOFm>*ae6Jh)} z51{>9>d*|etVhuOvKiOe^D=(p@2K=!)1hm_D1)L=JQK|?vC|JMMqXQ`s z11aAk+n$6xdD46qz_GNGSw@+4x%DC|*SP9NxX=Dj?zA9m7VkJnOmkP_30A3a^YMvl z273Y;7qbmv$YVCZ)~n@MZJ754^WBIQkO0KC9Z@x&6)#lXxUQBqp6-0+V@n5^1>qw5 zP66Abbid(MRa?z)w@KxNI~~DUGXNP_HOtaMB?83h)HwQX1crVh-UGgJfv+w@Ga!fF zyb2^WZn$IF(Jj!qZ=wSFnx~mLL%vG*yns(4`>^a5nZBp&?Dnjv0bDw|;>V`&Tx)%j ztv28ixAOj)&02M6N0uq@J{`2iGa?+7lc~~%WAL;p1I@M_%_-GP67nU~fK#uH?>)%G zl$K%G;_fcV%p8^*T+OsaTgTf<66`qM*F`)n-3KVNU|tvlZ;7yH zUt{jiSGSTPO$~28s}8kOC>ILZWyKt}dr+FVJ$0jXJ`b+ z4SVGvJ4-Rfw3Or9PO4ccG~L+?`RuH+G72|0odRZJnbMZ{?~M+$teFx@Xbz__$Rkhe zNZ>AhW(+58I|`3ZfNJCFO{KF-g;7mut^H;d>uJ3Km*~BR^23K#c0 zYWyd;swAR?n0?^_@rrYDw)jXfuM95)`jH_NOkx64TYh{F+2q+{s%1Tk5EHIBxMKp z(@BQym3n0s#WSspP0cK%t6x0(dFxQonQPBi;aKr!$)TZ?eSWQ@kzQc{jL!mucZ;nt z6)xux;0qB*VyeROii#pEw{E3NWf`1n^e-`p(EaNXMh3|U*Gp6|!)P!XwK_i>^(;DE zx?-O>ll5U~nn`nojAmnpN~J={l$=S+TFel)_K0Y*{#^dh4P=fPg2J<~d8>s!k)oB* zkV@D7rzp~KQL;&xWijod*JAZ^*B=&SfF9Rn3x(+54;4R4|HbjK!+mOxWMRSq!C*je zqtU1}YiLQ!vvBv|U=z+2M}1E29h~sl&Sw}sY6=+Jr3|kDQPGa4r5l9L=L91&OAdrS zyELL2&kHBLP&G@&Uj}o7$0`Y*UFDhLpLG^s?gQuWq?9?hu1I`F5U;wLhZFZ9v$7P_&FHt6%{q=th4DT zx0>2Os7KsP*1#?P4aC8iXQj7`6E-~gfe7L&U7`s7Yw3=1=~|)4!3~UNt@!oAG#;ie z^5k|t_dqvvevV9wW{Ew%)vLau+}04rO}Cs(#*#S`k4i{)Z{Ld}TB zfQFE!a`?VGDRCA=kN8#3$EH6&U$iJJ)`w`JoDp4JU9m@kf-bdnbX;9yP_pOn!2o)a zN&$zNSX&cDKCr!5n9L)rV%?qg=0RvjCnwg!xpMLN>+7H`yBnMog#s>;E8@9#Mqsd> zGacnG?U0O!sfZ2cbncnT259*Zzws3+k0YpBg;GNT6L3C24DbA1dk0}SZBWqqs+qUZ zLMvv*4FkYr0foS6lkF{lFW@mQ2>FYPriuC7sqHF8w1lRNv z%=QqmSgf!$7mIOas=!6S%p8rWt#!ma2z}9k!eH7ZLqDy#j|2rAw(dYoctn)+w{1GqQg$wIoeU);Mgl7HiXdV@By|`4V9tyCroL9rbC$TkK;R*JZ)e0b>=&aurunD@3 zmW&39{dvD)gT%yAFV4r(wC50LX8U_zYDVFO-~N4gCkuzH*~Vw8T{$_A?Qa~_x7qro zK3V4v$2Qp6vu8o5V0Bi0{))*JsL`RJh@>UG(wEeFTFoQhNSXpUFA!meM(4j3=3=C~ zTYC=eDJX@?o7`)(}33DIU7hc_YrqNWk zIAuLxaE07zj4`%jIj`L7$Ls29Z(nio&#|6LBHGxBNce~Iu}#E!3ccV-doBGsc!;K2 zZp5{{gvGv40p&W!16YOKq+@R&vqxAP@SB<&B_m2a;vj9>`Zed1TjJ+N zw<7Y^S$aXd1Gv@XTuW;!TT4qz!smum6HN}K@Yqn+7RUYDPjjzmAK@O=k3^pcfknwm z_$(R4YRW*E>ktc4U76uSs1e9ZD6zI)jRcpOg3D{JU=fB%RO(`|Gcbpqt<gEq?Y`z}#j=iXXb~kxsV{uI%L-xm z`(f^-g&y>Sbqy^vb5%Ztdhjy+gE$WK`!@uP6+G<`iSigNRGP`Ke$DZKRb#YT)z_Vz z9X0&8zqSbCr5(ZCwVoBk&u67&6v=!HcWKK<@P5i^JF){m?Nk*`Bcp=Im>Eqj!F_^L zN@c5lO?VkA($12ohU|7|6XQJ7!YKa!ITSZH=#>z1ySCqBJJvUH1*CY7h*kXVc`g-` zvqoiS;~f|^5dE?5^3y&@8aCZt!KvbSuDzXR;!p<0E` zz|7kWeJty{l<3GMW6)-cNOT%*M;DBTQtH~E7%J#f`3DtL4yYS3Ma9b`_x*Wh!pdWD z+`0@taneb3QM~jlSFmN#fRlOOO!zb00gYyD4dtHf{k5zZv-*VkS}|au!x^d~f>bwi z60Oei^TGwOt0hc@)W(_n*6D4@pj7qbVnr;E^@I@?MyDuW?Y^J2`MQNqgszIJ%dWIUfLc&z-kvt|Z)pTUR076<#O;1$7Q%x|~NgfI2n z5rLjZ5U1Cga?AU%wghbn=i?Wio>q;vsuP$d1Ld}$fbnFAQw~?~!QxHu+y{rF4?hfS=7U#kK!s(LxpYYi^iOJb`Ho#6TGCH|ovJo`w0 z{2`JzV~0~|-*up0M7C&tZnm&Q~C8S9l&Z(tfyM-yn90?xCM1Eb59 z_VjMP`e3%PGpk(iiR-qzm! z$Qu@XvrBMFW%R4H@Hiqb8qM~&ddhg9P2P&rKILpuqpfUv*C(Hr z3b*^Va_lApZx28GYol&kyN!~bJZLNo2zvZ4C;2Hyg+eyQ1X;LCtHF? zc)(*2D`++ZC{b3@L&6xwF*+na6z&KwTBvkRjTd@e>gF=XDo&(Fy?5ACrQ3bYK$9Wp zFQa(-KxUduim?;|!Pkj;rp~9v=D!ocY8FO+#MigKU~SN;1Xy_~&lQHvW6Vlta=i-8 zuP&>U@>E{K1UY3v^runz6Tb9Ccm#@G+w)F7qa2$C<2psQA+iowEKa5M^gG}7^Ky5) zMEW)rVYT9*#`qYLO8HMlL@m*uu5Ius8m9dBvePt7$YJ*GgJ!2s3(RL*f}fpO_$lI7 zXIv;O{M6iBN;wc}8swhH*}2TSEMJ)DXGZmuCC-?mfCbi;(sQ^@6XW;kQy({n9s5ll z@7>?r-ilu9v9I*h`Pir~Bg1f7RP=3|H<6BsYlHrQbQa>*?E|qSha0MM^Qv{e(}~Bt z<_zj?G-~WE?TK2{F@N~m5+IDW`_iB9-@e`V?BTjvyb{& zz_FJu$HqxkmZg@A=?6c}X%mSPm$w`8ju=sT?J=A189-sy4OrnX{0Vhux}qM7BbH&m z1hgucGvDm|yykRX{Qr(6NOE%VTKig^=D!4nw<=gH9T9>V5dZ(6BY31M7 z+P@{oESBAhw!C%AbMS3vAfxiC%co<;$M#~5k5C6fVAmhB5QX`Vu|kshO(yc>ewq5) z*wGsWqYhRVks7D9$;qx&`-jvmDw>?SrFSR?RWy1&O2zC&ozpRX3h{W6pFc&~zdx|C z%6o#m8EN#`Ne;VQfw>lz);pl&+*q=H5LSTFIA`_Y*EQbIx(>vXJmlU-?(64_+JC2B zn`HKu4ySRY_}dDf8_unI+vl+UJw7QdW*Yz$4dA3dhYn4>>(=4b0%gf5SB}%#a4*5XibZY8}!Ckvj%{Y3=2->`#ry z{fkB*H$266a3x0%>9li0cYdM3j>k-1bswO#yO`J@^vHfECVbxIrgBK3iJUCj!Z4L; zY7&0%j7v+Yqm)|}!gDh-bJw6fqHjY;J|f)K-#oi6Y_AwkNOU6-LW(Mg-EFgkQm(24 zikqz6lvDNEe#hCU-9q&Zfzj&3|#E@R<@5}uA$ zH8)W#|8kE6P$cl7bedUY0M#_CJo@F+5Li~^Kar;53kf{%GV784Uf(9{|9H@r;x)T2yFxqbKk()a(-l!-3{ zH+~^)ZzzLf-YhSwMy=0I=mE)z|@8O~Y%XzfR?wNEB_HL44Rt_V`n1?uXqsgG8 z?aTL$s!92Y=PkIMUI-JPx;li1-tC86-S~Ie46pChqP^b9YAM8DJi=CG%R3nX`Df&p#0OhV-0-laZUEzq9X62EH(;t(q zlh$oKf?fF^-o7@7dJ|X%^9m#0S0^7?Dy@g49Zkw%%9=XZ*H>dqt)yzgA`|t0_Dl`S zh{1L}gy8y00vDd^ggP4P$gQ0XakIUyLd#|8Ea^T66x-$qeUoVMonO>P)C0przw5$djxGhwufWjvzZXf9>>$Mc>%4Dql z*Y9Oq@H^`05oer*m{*Nn0;@@S=qmq6>nZ5G#bP340f)}r%&wd~IrNBAI2C-@kXlL)#Z`DmCQju;jjw-IYFC4q|w zT;#8>+xIYPZ2xj->3|IHTk8v`8y=$w z9gP_-dI+zh2KN`*VJZo3d>h2ORKStKjdatFCabCsV^eOL&!=svCh>%HI0 zbf{ty0KA57e11S_i<|jK5svNgM&^Bq#vNSA&PtD?W4?j(>CJ=g2@KJ;9iJ|Cf(Rt$ zBGS*#@BSqp_igO2tY1IFc+pR^!Uf7%yOkW(jIS zHs;9PsKV(!?%+x1gV^X3C_Qr3FXIIg5%kZ~8&vZTA`0-EQz!8pixi%ieB7(NCAmRt zU)Q805K@jYv{7s<4rSQQ!`ZWU7&z|-IVR?x*$$Qg8g#*)ES}Gaw*D4n%RL2vS8&5r zQ^jD-t~3$zASjYgOv-?hr@h#0_0;*Ajk_Yxe;eKZsiIHM#3#`!=c!KpOGan5E}dQ# zoug8xgOl(coM~tj&dvoXd{(fQrs13}VrC9eq~nfd1n*=Ry**TXPKr70_)iM@B;Q7` z`xOj>Z>UJa2NFO64rD=q4u5CZro6{X)$dUrt7`23!x0icTwYracTj}cifX#ss`E!( zuAO{uRBVkz=^e8P`mCw#cbF^Qs8m?vb{tPb)2T@=Xh8|_bKK!%WcVY5mkM994@R61VcX-+%r$n(pi5)M z(lQdSW|P9UOY|&pFTv>zhHx278c;u@0HqV+$LGRU4F9RNNgG(0u=Ir~nNOX7p1-A6 z*4G`nAL8Eoy&4{TWNMzzHbLDwew@8>a-<$DOfzQD3ink|HSlDnT$?rn9P@tU;g?6><&yo@Fl-&0{n4ogy@bxYFO*kCSG8SWAt` zux0rU)v$t5KFF+}WQlDec5!jLPe%y@4^#nuC+-7QtIPmsE=R7smOany%Tw+}e^yz3 z3FRYD^$25!O3GDP`)Ygpqbrv?l{VJahC{1vknhhVoh>+n)b_F=*12Rw1OMIlEA)@EnuA9(OL%5n2Xwq4?n<^&wFR03?K^>;-l;$u<@ z9r;^sd$mm}Di?1FMx8~G`2?PJuJ`fT;k%P5DNFz8>*MT>8C}e(tG8PNYq>Sb8P~2? zP;F_h{_8Ii?%*ownppxzYtGOAh}wOf1rBK_aryn?pX1`Y~K?rhhtfx?ut!*xlB}eR`@56ImB@9 z)NkkNtCj|^PVA(+{><`zllhpLmv!b%o|(r7dDkbsH)f6Dt*7P!{#+^ga36F76Xv$r zW;`NWyi=M!k4HwW_4_+Ce4n)`Z_{!Q9gJm{1&%7R+xH+IRV7XOHrBS75(J}(k0%+4 zf1HYx(S##cEpVrHx#PUO*>rw!F?b>M3MdktX9neDg9T|9n0!$lb3Zek8TgSOrg*p> z82-dVzQaTNu9}9(k==$jUaO5`>r+OmVIPtf{Uz3$eFA$WlEGhevvlDKK{)~+V)Mg* zY#sa^?a0B=kK~-iCZI9oO5lVE4s@6k{BwDw{kFI9gVi1dXV3-qHXZaNWEuN;+47|> zZzxVZ+xfF_r?oaot(wZ-SA@L#?}V+9A^mcJPl%yru<*L+2K-I)8&4`iJKUBS-^su{ zT$D}-d1T^yA=KsQDru6>SZ83A#RczeAqieDY-6r=WL?e=|94anjO(vRSl*j1Ok5Xp zAb*!P@9&)rOB9+3HAmFk05JXAWi1cEuJTkX$)`%VJ@yf>9d=uHJ}gb8I2 z>7Jap0{OK2YTU;4t8uaH2ijqVq1!g;V&l!;{mb=!R%DsrrMYKWgf~N=jfosRygHWM zT}-^3!AOoSJfT_EBNuUXIi6SUs!(+}J+eiR>$%)iqdVzE^3JkhsCITWx;v1Ii#ojn z7q!-weOHdpl%zEn+~L4dNQ#bu5#8>14-dDNq9Twfoe;@~1l_<)EDM#t&Y1A2DjEB8 zp*6Z`6z;U4_eBhZ2T_Nj`}>F3DnqAr%p#kT5`L0iaD2-agxUyNU}8y4c4(cT2N<9n zH?X@zXO$UY!yk{a(|8eKIc^qqvu5tc(HN5(OVR5xQ}^=0-1XPwo$u2C9=9r7r5!Y) zu2j;?<1(3^6UIHa)Uf^ta(nsUUj7kMaBDU1WUhSri8&yWc}1&~v#W!$hz^a|_t(2{jcg}Gv8i|~a0@iDTXcMZ@H?fNei*I(V1E|{q?J`23OWAS zUHTwRM8pJ&q7uvgY=>I*tU$+)IR?DdL(bRnX^1Db6|ZS-Sy>CA;up8F*tgVkh!8_> z{JTO0F{G!5*i*5HzhsL(+dByp-?s&~JJv=>DJw%P;ik(c)s_HD!o}?IYio0YP8;3X zjkR|Vvd3CTg`ds~ehdN!=f9;-6flxGiKzYPSioaOOFzn#tU(NT!Lo?ZBP<*o#noziQ znL|0@;aDr@CaAVi3boo90&gb)8F=M=XW21gk2~0$DK|v7iu{3uPD(`Lv=T>+j&7+9ZzdCCoQS zW-ZVH_|f$Q;t$mKR@n-!@49x#vjzbGaU!MKSUB@|1oBO@4EaGl$N71UykOxe#G~Pl*rR#?XI99ET3NqC;QdjRPl_y_X zx4!ZD3c$nID?+6mTjr2JOK;jt8}&Xd0GWGn!SeOL9b&&kZFgV;%iZ=8FqCUyDl^(F zvUQ{UAq$vcCaD=dh)4W?vt$wu;*3S%Er}QEH%t`UA~deag%0ELOC{h@OIzIW4r4&l z3!_@)5}>bSF_byxDt%Ta;~PCv0Q2%LOoh9f%e=Cv%QMJq&amxg8}#LuJ2GIiJyd&D zKHuO2nm#AsVD3&}Z|DG^{Z4Z6e6Groe>o+7iGreP0}n51Z$pvRAl|bN^Z_Zxu{6%p zqBDcC*OV*pk3M(9-#5)aC_{5|!-{!r`^`@Jj6xw)B-s%v5{C$d73T=049i38q=p9N zP_Z+*@r4=~-TaJyQPZlNH80OV{xj-Yp07i8FmmLn3%32KOPpt?ml_`y|ZX6cRt4@V2Xd5ByNd^nXYZ`3CApFu6~xo9~MX2Q|%<$3j4 zAK>>dM|3lD()HrDVct5CpXO$o`|6sb@@w$^>c`-piC>L_n zK3Slmd!sN=;f?Z|Loa?!PSax7jaYUa@1F+r1bMbp3!MhH;yS~plkcgrzBB#rR57$O z4P5{D}g_t0NbOD4tlXAzL-Ma zLgJ54)%9dsrzRy>lo$5u;S9hdRi&Q(p!3;xbSG3@Ut9o)f}?D-FGl=G)L5!rX<0bP+&d+MS%3xtRKxUue1Tl5UI9Ugtz@!BC^rf!oh6y~JYv8a zFsn@q8^)Gs@y~|gl)SD$wmxQ}junJJuD4l8<)kbHGFP<#Rhm9v=0{(c%3#zZpt;E< zeM=^-BuSes*JNxFchDZo(!@Bwt2(sO?qU0 z2%%C%}OWwsY=#7pi^3;>?2YAVO<+Vh`^FZ;Lfg`O$)#hn31NTIn%j0sgAc@1+P4GG9T zmdV(s(QcSe=p|Fx@(&dDbzn3{l=H>;uqP(?G2b4`ZyxJ-kPR6u2;u8J670|8F8zpC10B^fNtMprFXJ`>7l7`TTNq}fEe1J zK%Y+|Z{bzyunbg-Z5vhuHS$t#tQPXVjz!M1OaHjN7@#;K^44}OU~Xcc#D<7CpGUrF6IA0- zcLrrX^ik61Apif2H7Dnmmc-dFhEE*dmwM%y4Ms*sM1-fD!IhZ8==D~?)pVU2|HFfa zTTA>@mDH{r_!h{POs}X|IETKU%t+Sg$J}v2{5~WCIzx4^wx3u|(rhXG<|tSw?YKPx z_+>5zHfPeHhqsnj#KB426TA!^)4pvX@=TC@3g0f4v`jb6Zfp#wg2FjF#{sD$af< zmJ`RZ4u&z9$8fYsUU*pl=jh19xe>+fv}{w{WT=-M!~#~0k*7m zcKCub`eI*Sc{?**Z!RFcoLi9FZ}w)lJQrn|p9S>W&lEqS5T{2OQl;jVF?(-E2UIgD zl7Gr$DOi%(_Mek0@bqQo-|zVcGAQ$kWc*MN!sWyxecF-qV){3|N}c3aGIE3$Z1Ig+ z;tpSww@jP|SZ*OiZ*FXWcIK-|@%=$Bq@!C+=T z)?rdUIU2G4?ZUOYEq>Xw!yWVAQr367j|8 z4fONIZ_Lx|_XIUhSX}*d+#>JXJbm&d*Zdxrps)Ue@o6@^>cm~2XYg3c8;rv=p`s4Q r@P9sLzSZ(?%`k49TSr6aQ4s~RT3Oz!nM3owHDc4o?HeBYvQz#C5eE#- literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_video.png b/datas/icons-48/folder_video.png new file mode 100755 index 0000000000000000000000000000000000000000..d9af2740b5988bba4ae7e0afc370c220f8ed8206 GIT binary patch literal 5620 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 a0l@c|ORpYg$13MDfZJY=J$H67&ioIv!BJQM literal 0 HcmV?d00001 diff --git a/datas/icons-48/folder_yelow.png b/datas/icons-48/folder_yelow.png new file mode 100755 index 0000000000000000000000000000000000000000..15b0cdde86896d71b885d39ced2d48a74cd66797 GIT binary patch literal 4430 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/font.png b/datas/icons-48/font.png new file mode 100755 index 0000000000000000000000000000000000000000..b54d089f91d0515e0acf054e7b3f3e29cae80774 GIT binary patch literal 3598 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⁢N9XV|P<=~omlJD1h6 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 DhZ9{R literal 0 HcmV?d00001 diff --git a/datas/icons-48/font_type1.png b/datas/icons-48/font_type1.png new file mode 100755 index 0000000000000000000000000000000000000000..d542f490c28e0e8506c9eb02c856a8b14a6e0c86 GIT binary patch literal 3569 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 JzO{~<^M6a^9&!Kx literal 0 HcmV?d00001 diff --git a/datas/icons-48/fonts_bitmap.png b/datas/icons-48/fonts_bitmap.png new file mode 100755 index 0000000000000000000000000000000000000000..5da71da6c89850b9cd006cfc256769bc91e70dea GIT binary patch literal 2744 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 P>j^}LZV353SeW`h(+-&g literal 0 HcmV?d00001 diff --git a/datas/icons-48/freeBSD_hdd_mount.png b/datas/icons-48/freeBSD_hdd_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..23310e4a761f3874e0ff0d4fa42b7bbb44ed5bc7 GIT binary patch literal 4532 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 a0KTaY2ChxSa`gWKAaHB2-@VP8%>M%+o{FUa literal 0 HcmV?d00001 diff --git a/datas/icons-48/gimp.png b/datas/icons-48/gimp.png new file mode 100755 index 0000000000000000000000000000000000000000..a9316c6b6088de7b60090e5131c20e9748f9888d GIT binary patch literal 3240 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/gimp2.png b/datas/icons-48/gimp2.png new file mode 100755 index 0000000000000000000000000000000000000000..06ff08744d972f6db0abe6ae81eb24010cca4ad5 GIT binary patch literal 4743 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 V#O(v~+MguAe{+EE9dAzN{{dAUmg4{b literal 0 HcmV?d00001 diff --git a/datas/icons-48/gnome-apps.png b/datas/icons-48/gnome-apps.png new file mode 100755 index 0000000000000000000000000000000000000000..3f717d0b5e4e827a835e902ae69c138d1dff8751 GIT binary patch literal 5471 zcmWkycUV))(?02xV1l&JBuEhjB>@$bk^~gN23QaqN$4mFidW%+Bq175QHn@WO1SD3 zuP7*XksJt3YJN6ixl&cQAOtB1Avx#E_s8x$`#k&XyEC&h`_5bl+POtf$4mzR0KEYJ zO}jLb^8Z5%tC{y97cw;h9mCkc0DziyH_XK`&D!+T=Fn5S6QWO@VV{fw7?BC#QRIMQ z?3k!sQS8W+6K|qC0l;uNU=w3c^5^hKA+b8_b*oCfcxHO)+v~ctnfd!)7tc&3d#5SD z-@|PLKQfE;b3h^PZka2qU=A43L<4rmmo@AyT2ua|K5gNx75x`nSsV`#>DePk4m~;* zH$A*1XV>xmhMTI1PrC~PE4-;ls#reNZ_2$Aqga$Xi(wcxEiNfB4Gj$?Nk4rul}e?i z&r_a5D_5=(?G4)X>Gz_%;>x$l`9=CLgq)_G{E8sbZBtmCg{$KezSWl`4mP!%yWy6Q z*zo7v#li2LMR-sWqnQ6?&hF$=n_600z&CH+fQ^lfWcxJ>eO+BcB#O?in4J|WplXEh z-eyyq4js_{&bxo`*`u=yzwMx*mP?24>?~WFJU?NIqRjHHKuutGM;FVf2OMBE_pqXR zluX7L;bv~TGj@Fs2QLy)sA7pOgpH#axu zXZ-ax!O?v2{E919_cxyXt=M9lLqr3JX8%o9owRgS^8X$jel;=KFX~NPoIfVuh(xYc zmmay=zIsS)z6G&}67?Gp#OOU^(p3f*Vc%oG|3o~6Bhf30C4G{2iT(K_2fv~mid0M& zX&2YKlZuOrNfQ=_%D4IZ+gnOSi;90eo{4;}8h?`lT4a^ADC*w9goG(q0wD)>adCk^ z6`MjgR{e&UVNP>XutDO|%mEr*Wtk;HPMeS+baMhvv4KcK52e!6ZVbYr8+4^H8usjx zahP^6=gi(oxIP{a^QhBS#evY#BV(%Vo$Ysb2k$jNZRA;ImB?P`lexvy=hDDm2cH#L z&`xYW1w(2)hxVG?e%b^Q#WwEqaB#ab>Yl)&_2|UehqB(k2 zj&sLQ9ge_}GB>!Jtl(D+4!usmTXEDe$%{YM&0I2Z{#ADPt9$?J)TGJbOoB-EU6%`l zw+<%vrOGE)d!?(MgD?LWH?{o)yL8<*f{Ql%@-VnmMGM+&L1bcva&m2v+p_67X=yEB z;we{@_~ubOJ_DqT5PfdN`c-XA{0I5xgqy_1iQa2w4n-ywd}q5SEtrUBrttU*?{pU0 z*x0^j&1ChngnrMN#l9Na^NWYLKoec_G7HOGqB<@~i={9)G$krWx4|>pnqdfbMsHtp z7Pe+>AnF2C8=|ZD>f53mJiP5MYh#4(4^A*i47&+$&7-m^kkdBg2Hoa9-lV8q2Fq6p z;C=!{1;0d9opBVy=3a;3vZ#S2>YB>CGmiG&w@K|-V*`AtG~a*@u$#Fz?u{3|yR-A? z{ll*c8HMJd!8?pqH743lJ4q+Gk8acJ4YP(DU(9`F7zEirU1WPep!v6D`jP^?=2TAfs?m!Fu5PIi; zTaOks@)jKBzg^WW$tS#B-6$Jf;^F>;;+tgE{&cm6DJjeg>GHgCfv=qxLnyR#T@LG)SS(8q^0sl!Ur}s*0c9IiBfnt1oe6ZM&(CVV>t)hh zM@Ee3g)?+MDjq`zcwV(^G4}6+&yL?dBucl89kddBw&ig=%_=I719q=(($g?mDZEhQ ziIr181omSE49*#~zx{HCLv0^-a5?9mm|-wVsKQOmnUYS;2^+$FbX@HB;FI*)U4@|o z15gVwV!nbAoQtYfY5aWA%7~`1D2H*Ra(!iK@B@cV^`mxV}lDh_$~AO;Y8el179Y(gzV+rtO$7#BY41- zZ`&6r7zxD+zOKSzt>a?#)FyZHfZH(4iyop8*VW?HCIxr*b6o0Shu?75JLl|vjw+I} z)!NV*QOs$NG745lFVB$Y9?25_zK1Y7(!WEJ@=m2um^V4Q|^ zo)cx8KRDsynGBZ=Hl0txT9lS%fW}h?{l(`7-RJ=I{-GCdNuk55c%R)>6Ha(<##G6` z6UTq@@HCMcli9V8e7NA%xxuy?93I)kF;!q-Dy0qrLbfNE76#Tg5!p$ZjLazP7jRz;bVP zx@tt5{{)HS3zadOeDN4nG-Z8MWNsc$F(LhxfERg}A|9=wsus>(Wq){o8Go|$sOeui zym!?=j)E!Qs)Y zpPVU#>%WRs#9{F|l ziT(hA(loGfGF<#F6!Em#w80zaVq1BPUUidEqJU{=y(9%E^q5}r@(CJ=QAQ5BGuA!c zS08kbZl~|4@gyR3_gAJU9dmHGo%))-g;Es!WtPJY_xg^4 zx%6eMg}HH)(EQ9PbDNjL48;nH7cE^3>{!I(&yRuWQ_tM+*Xvc8 z=g-5-TadNQ-;J?Px!fIOW>Qwf=~A?PW{$7}bKp`qqBaX{WKvE)8y5hRk~ctN^HZ!g zSTM3~~U}sC)E?C)V2Y-bPLbkXe|*SB!zF!06au#9XuUrfW60_~4!}5TtO{ zH%HWiCkI-5yUHD_1iL?of^^5>3?g@c6uwX&ua!}DDVV340cJhbhMz9g&{l7CQal91O>^ABq-LmUyI--rS5fa zj`atesRzcr<5=aCeZC_R#kd~C(XU%fz_PVizo26}r&x#9*QS0( z7!GZDpGSW37Hsas%y#$I5Hn%5_QRQeffes^z_Xi=3z28ztM$5eg22KYYA7)%i|+$DKUSz(9l8>KjN$xzeNor| z?F;a}ny?L53aVfLO?+3MGSjef<;vs8C+pHtozNP;vh7W@}lF$e3q;v}vx&(h{~4EQ&kdh4k&feRq*#4xzt?^0G)J8k{x(}J>R z{jOmit7iy?b1>@)tW8xB3ZO;3>)yP$!+`W@0KxazO`fzGwvJLnu;`_@>(iqqZ>7Zd zVl3Eoyrv73{V=j+(SPvsyO^S1SsxI6|XZCE&OT2A9EnQa!8ffpxMyq{(fG|Ed+ zuF+k|@yCy+j~9OGo`d8@J}_qEsB_Q+AqyMbl#$Hx zxS*T=EYGV6-CZ5uUKScVS_jx&;y!G{ubpaht16Lblq#c%N=OeLRzV_pnRY4k;ll?S z;#GYS1Yz!?&qUK_t++tOIy3~S<<7w&A@c+WN;TN*+mbV z8ZNmOqr^&whyTT9pMU0meuD!R(kL9y8i!kSO&YKmOhDMH)7^?r`4oO%Im9|$s1L1h zP@SKqRo5s@4t%%St0tR`1RG&kKP{yvHl~_{W~Xn?W?T2^*FLCqsXexC!%~v6!uk); z$^nZpc3^Vzdjx0lv*qb0C}~LJihqtAAq19fe1Rt!OjX{*CkQcf8efO|9joi7#YP`5 zmyQ0DC9|IfBDjWUh5d}uI|-F36(zY!E!&luw+`R zx}+ELxOO7WR+EYz=@CD`CRa8=sVKihgMTs3rh zk+`u*hTWCLj~H^M1C_~ubUzdm$3B4_edoYhk-6~kUSM`bLl*STATna)2eAGL>~pEF z-+!H50bwha$)j2$Ci>q>o&(DXdILi7KFb?F1+|tC0AbnhO0l!#GJt&Xn~sV%G=XCw3#EYFWDy{DK37Ez-f`AEiCVHiq;(7xMUXH*E`j(*WZxZrW#f6 zYcP+e=Q)IV^3>&7brw^ut6Z$ds^8HXbHzus-hSyr~VWNoTefV?Kpb zb{4HEJM~9Wsx#=!QjJbW^aS>ETr4=U!Ug3D@75aF2u_61A9I=B6rM%1!ekc;&TK`a zcCBpDvNXh93-9NZr@+24c%A)g&JEf&%H*H3*T!Zz#sVu*x(lW5kt$?Y$hVhA`ySi| zTfc0%#cp(y1b?p>J?x+Tk#_yfx5D&m^9R|)rAv|P{$LEd!5iG&=~qt+AFO&VQqS}SwlZnyE*Tr` zL>wr3fE9x>&f%DPr>WY7mA4o4t2j8y7t6EC*_BTGbZ()1D%WS(c($FUTjd)527OGA z>sP4Y+VL~$>oc@XOkxxt?(LgP=x^xOp=Rar`1~?n*=5VG2~k*MXVA70Z0hO&u@e+3 z@{)aSOarWF1RGlxnA^6Euaxj#9sm0L#Ppl1D-yVN-EOvRqRh9(Op^Zy@$E2 zS_H$SMuAf36&?Nf6EO0znRaVlMX+t-Y(6rqT7Ej;oXlJH#eSSW_KhAkQ&f`4JXoWF%F%gLJW@k*+@WPsOYK!lwKcYfU#RbNMAeg~X zK_L{c$iT1=pOC=dgp(~HZV1FuPp{3)z41LkY5?eHMhaJ04nv&z*U^jyE;I8Gu@u;fKz%g6K>h(|P*jvBqO|8p^bV0)Uq^arMrSEta4G0lbbX4>}nW7D_E#oEX%D|rgE z^-Rel?oZyYS^T$Rf!&(H10e=MM?=`vRabeuLwUT*zh_?#u+9EHJ79k1^R_T8c>4{k z;HS@g1(w1s9pniZ5;fc;B^ysO0=V6HhA67N zo0QZ#zI}&CMI`zba(PoXczuKWG7C|<40Jrv*VmnMwI)_!Kwu#3es{n!S}?|C^b&pC zATm9G@klK6MXbt$Aiy2#M+Kdsgl?5Heocde_%i&|l}0?id^dVlt!1OY*^T08?=@PM zHRU-(;%46SaYg+&0X}k~dyxTSuS_Tr;{itRU8rp4$B!TwZqZr=r^t zpC|?n&oW6g8i#{FWlj4~$hGO_{z$@jM^j?I@Vs^$$>s%qE&Co-7_ioNda~(x6au-q z1AX9!-KkvONCCBe?Z)v7oJss&OFGlVD8u3;ZA4T2@yIcS(!Y0s&y21=Sn^rh8ri) z?8~mH7mJyDywCIclnMMkM#f`Qtd(mnXU=djWuy|1w~~JYvzpck8RYN%1=;2qg+yiQ zAi~#e6XHw_Lv4u;t7D-o5nG{xyxXGix@oEr*{SK6#r7>Yus_c*`|p z<5qr_7Ih(P))hqPkSiGo zTxuu##8zz=c=bY;z<6BD(gh6kZFf4&xLN5RV^7mTXjY@j+zWVxLl<3)M(M}i=l*Tt zPM-Xlv^?>Zk~~TWN589vzvl3tvG?&kLF)7}mkqq2U%2&_j3Ob{LsCmqPhEJl&o75J zEHmQY7khXV-^N^-i*gHN8yF!*z}$tto`21$Fnyv(r_9|Q`837mi8J3rkHW23dPl&~ zyqwNCugvM*hW#Y&@JSmtLDNc5rx9;rx9V8zGu;33pa9s}YmlwUN%Ez}25O<7&awsp z%<#O0G(~r0YplZt8DgpYq%36B^#V zW32P27%?@R)Q)@Gn!@;g=*$n0JTNmw@Ge_czfdO}<~NrHrlaYKCnpdl2PyO9yV95_ z7t@y3HxjF`2BFk+D85mUtE-on#IV?ai#TJA9vwx0oqz-5qi3dztu%+&g-dUoVpu43 zj;ABE4C;J_+Q)Z>#d6g1D!pGr^jvRk{Ud=VST(`yf~t|u&#L>*5kH*lByLrFViT0P zzFS18N^$YV=f1^fF`bq+0-L!<(dN>Db3f zuycR0@|3Fg*5CK@O&(xK&5iG-miWrlVOY~Q_(jRA_*9z}p_bbbQoTye`b!fw#s@+M zgE9B65#-D*r1~is-}1nCG>^lUueUHpZ9dg5a8Rk^3<;1XQ9)XZ{gX!K%)<6?$> z*gWApl66_3MI6?>SCf)dzj(TgF%_53Q|gpnN?qb}+`L9v%qyHFR6LjF_s#c+0t)C4 zedi~eu32>$KgvQM$^4_>?;{NjC0Yt+gUjZoils z{+#bDKjBZONsQMA`!lC-`$id!WC00il(?3mx2!!}^LErRmsESYbxIv_G%ug=o!}2b z6jIXO_nI(;&T%O(=;F;OTT#`UsuHh(O&_Kzyj3ROFCvg>pV0w;7K~hRfw0$udqs3{ zbdR9;OXo|3>9xt+&Vjh!L;g6!ww(cSeB2M{-1Uv#xo`D!9ax~(p`&k-yE{QXOBcnl z*UC-&b^`3+ynvy!5@zjeJN(D5#_>|(J!;%KwJKR=wEh>wQ0Ws96t48yId@1iIfV(= zp;mC~66G@Sft(XX$%&d?qwvhy)W&)Ot69y?SIY-ihy+!PraDBcJ2r7tzvFBb_fie2 zjI)leY>%Gqz35yn28t<-Rl^iN5tRmDRKhe_)Foj!SH{w$HwrJift2Bq zBj)DU0~}XF{!eFUg%*!O9bMsxc0v0A(z_aHv(0J}0+ku^-8{W~w&Z7PIb&NA zYNM=8A^_sr1et|tkGMo(^5i38(g&q#5Zr-qzk(E2_y1{roBtV}Jf5&fRNfvXEF827zS|2x)z1YHJ2NhaEaT7O zKFGEH9-w!uL}vN0yigHaVU0{;wcb-x?{q^-_@s;RgGULK{eU^9Ws0}CRFVjBx`(<| zld?B|@PlVeN_*)p+dSX+RakMijEThf`hPpipbbyH6QRliySg3+bKfqc!`nT%Te9(x zAZvk;yE4ex5m`Bui>p~*G^18e`sQ#c%%5Y2mkC)ReGJpw`3tv_gkIV=PBIHghwBlZ z{U+U0VEJ;jiLtAch#m%Wqdh;fAOR;y4RH2%k@`&5LtNNOwhMCSm8u+=CMA|eYr;;K zDM3u9VI!H4oThNT$@B5Z}CMK44 z|H)OIg=R4XD=|8oSlg4}HtB!^Eqvd;G-BajHGuAA8>UcBtfDQ4QP*BBR6gd!=ZW4Z zLHCt9ILIEJ%|AHbP7bv|+954DhD@i``x4Hu9;~*(mF0CO_B@f_=+&+|HivkZP}h`znG$Y@ zvw2S}erOw-m-z)Q<{dG?h$W( zGB9*pV~rISniiNa(3=4*NdH@cDpoMQvFm34xX@c>vP_Sktv!uso&p>Xhe1L*pz^Rg zb|B7xC1LYT_t*`q1J~-!YUxcY z41#|l3nq9cQmo8bSNq5-scLwZ{O6=aPmOw3erDS3UQU%hO|8b9b}O~i=$~<^NWxa~ z0@dhdpns||msp`^h8`KBEiiW%q>Xs`2x1&Xed5Je-FFS@5(J3LlQfuPb3HYq(+;*_ z!H9wC%jr17LZUAfAU7(g)!}NwZYMrbp)&J%=b#pSkHD?^8=|@{CPB5yI%nLhSETOv zEqV=CLBY=msqDl-EyuA9JaeDVYq*FY55gjr2tQI10M*qg=f-FI_p@83C97y0m(80C zHXF~3JzrE~#4lo}E{f(|F(}Q%etgzjt9{&3J&&{4^=oim&--16pW&ekJ}2*x@67+s zHo7f$?!TYt|Up7pU^3s^+ zkfo=OvCCh*vkAHV?!l(jgpDk{-8=Z58RrTw5C4p@#IC*!;alwi>C^}AqBU?7evSBt zy<3g8ccIvBlkne))-n3ch9>~>ogrZyuB*>}t-L)odJWC@LPifgMs1>KHvsNMag&_8 zYHz2oTp-hP8Q2>6cM(f59p4RW2IuPE}!r9nUL=6=wtAp##ea zpNcV#H@iJ@?DVEqZ<`4o`joD>$X@tqdudqxR|wXe(rkF}a+VZAKfi*s;}9{P_9A5U;;OYL;E{th&X zYki&v)}ZfP(G^io^26weNEkJi8WFzPzTe~tQ@Mn~jZPE>j({||m?S}&znz&R-~9`9 z;1Yd#8-^u0!W^TD-nh1t+|~VVvVkw6En-4?xdKe-n}z?vtoOmSuBh-c`DXA-Zp>bM zaaPq{@>2<@H&NABP+`8T_c|jVlQN!(iZ`(pKF05ay<@M16>+%r0z1z(<)yU$sAoT+ z`dugsHFt0iLUwzIJVaaGoMgbd7Q~L9o1=?lVbCj!J_$Pg{Y|kj6lX-Mfa=r>ruH=3 zC!tv(>sNsV6_0cxcf)ql9WAvJe`)ArEM3jW(UVBjqDepN3bca8c0l;(5Qy>M8NSA9s~$d^kXz> zPU8TrWw7-={B;j@P*Myh@4XTfl#6p(cfu`w?{hy!lelK~THm|DSg2q_aZy-Otz^E~ zBz-AJSdswC-khgtXI0uopIp8S;5OdVk8!hJ!n3(^fXe$a;n*=>1(Ci0L1?eLKn?CI zt%#&Q`$25!3z`%TN{yex-NlA#bw&t-7TP&`XTcxKHtv`r_n06*+bjUpQRjU6x&fn4 zx;=LvHXj2>BE?N;Gpc^{8Bf)}t*oDkYo8X#=P&WPC@Y$%p+B@-v1hh?1aGh000+;d z9XwK|gkGZjV4aPP`Y|p9T7^II!uxFmft|hJC9!_wkEFCk|E#D=L87z|;AtM4a5i;m{MWxZ@9hr@_e;CD81M-1rGLhr+()k!dYJa)ckCMR!Bvo*+WoX)cTvIKSJKhe$nexDj1Rs(F@8<2FV{PeH#Tq%s~-`r z+4Ny|JhY6$^^Lx`8?BMzOnX2{-5@uy*UYE%70!=00_>A&=T&kQz5RJGtmk>-uHaR{ zWy8I{B_p1VFuInqlZ#6fwv|U2YZsS>!Hkc|T&J&s6^jP=c+3Bs|NCLUO08pF)r&VU zamv%qgD*xHJlUs`i|H$U`Xr~DrSC0#QB literal 0 HcmV?d00001 diff --git a/datas/icons-48/go2.png b/datas/icons-48/go2.png new file mode 100755 index 0000000000000000000000000000000000000000..96ed0fd6f369b8eca90b86c9744c0548386b145a GIT binary patch literal 6439 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/handheld.png b/datas/icons-48/handheld.png new file mode 100755 index 0000000000000000000000000000000000000000..10cc239328a66e6dc9ff557b736215303f838b3d GIT binary patch literal 4069 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/hdd_mount.png b/datas/icons-48/hdd_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..283dc345d65888010d9796e50e610d7165df9721 GIT binary patch literal 3974 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/hdd_unmount.png b/datas/icons-48/hdd_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..f9e199089c65cdf34d26cf4277cd78d62874a089 GIT binary patch literal 3759 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/html.png b/datas/icons-48/html.png new file mode 100755 index 0000000000000000000000000000000000000000..286455355b80642bcd9c60f0672e1db4d8319c19 GIT binary patch literal 6419 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 R$Bw-xU}&iReyu}fJ=M+pD`Wp_81 z0}4v}cj2*$-3PUpt{~`8<~}9>JQCSq&QB=L+HpI5;|@lJ#Km)Bg8^nxR6sD*{WvEy z_&_ix=uAvYFkK-m&)tRT#qA4Nk;@qkEGz&v+P`%GRAJ*^VK=von8mR?dG#}~c1_}P zi*$N`fz45)o`kntC42q&G0mu0s)ZdhR;LG2Xv^fB)#V>iLa{$>^;3s_ntyGwjhSe- zZBX-$lc*;vVEC^;zUu8)f$-E=I)a)M z`X!AsIrPsofA7&82cg&`hztX{!=Q<)t7{1z2o*ShYMhV&ls1CYlS&JDTZrnawt~@W zd$E?6MkDhE*SXvjKxJ5wRr97~M%yXngmK@T1||ipth>QU<6=k5RVC;IV1#hkoKxcP zpBWK!W#+Yva?k7vg&h#gU+^L>OzfQUofI|N(dCNCIJt323lj;EN*(@=}>^q`L zrU4EJHVbs5s9-_IO{xD0eeSi*ZG)PXCi@I{9mlQ&ce_sIyZ~m=c;f6yTem&(UqUnNCire1QP^N@d-i|MK1r%U*1!QmKfrq@*5cYWYnhf|nR( znzGHppfKM|gkJZOa4AqAV$R_$Ep5f>NP-i(Y{a%xU6O#J@-iNZcJJPeKEvfIb$554 zBq=LnMn^}r?YD2QyuT_Pgc=k%p-o{Vw^2<^n}x*>l&vfd^C{><$8uujJ=3-Dwz6$l z?-1nt)ckE6$=bixpk!>dxzkG*{EqH~Y8BxyBLjMmOwG-=zkmJuwU?)7c5Xqz+I|gS zJNn&Oo|jjS#d$)JO>Oe(tLT}booUkpwYFD}_}WCzNg>NkZVyPu4j{*ZXv@}*z0+oy zQ$5p;f{1WdFz)^nIoLk%G)lkWuiL-tz!#399HbzXhc_vnosA7NH@|mEp)K~+I~w1%~lX`oWd%`1ORAN4|0A%K@9L_+L+z+R%7j2%$?7VNQ@L2 z=(C)2|EAjQvx{>5KK3$^ki=S$EzA(hKG{Kbc4oJ#Hor)bUmk3F(n{(}XhQb3V0*~1 z~ygak=HTX!1eJXSs*uBvQN=$N!b%;aAojg2XhqK?)EaA$OVQ{7(y7Ysx4 z&ws&nR^67}ac|ZtN|S1)t?&hd^#022U-gn3pLcPNQYi3 zDqw*;Wp?7k=`fu%HY*m~DuTC&AYo4W2*&L|f?Q@PzBN#@8c?0QxgPmE8eL>06bA*Mcjy$A^7aZX*jBXF^ij}WQN`sH;PN&{xb<7I zY^7Bysrwb1EVCm;MwWNRshBUpSbm9CB%Ww&%yh?^kY7R6MFlV-*IKQQCZfk~>BG(P zfQ5OP1M9}`gFhI;PsuCTD~{B;Lg6W>>~U%{3W8ol!#@BR;Beuc%-op1@r&qaMq#Fk5pwH=d} z5Gn4ewRrn8elaOVqbvqz;l$iPE}MhQd#Ua?4I??c)vgE!pzuGFXjN5J?|D`VpNxDZ zZ|*)K`8@3B&}b~k`&*TD&>eTFG#Toa1yrB>MCh0HJYs-( z-F8@;m`y@cM_cJiXb2nkZcH*XH_ZrJvqU~I$_qEahGhbIU5qwkv??s7BaJU#ZotHf z6s&`(R8Klrsu2cOw6wNk=JA##rwAK8I4zjcAItHqq!~Rkx&9O(NIKcQ3mdLYNF(dl zf)~6fE+T%BvM@kn#Mjl0%F|W8Q^+jNo&XhDr~^etMhbm_D~2K<-^0HqQQ6~~pPw#r z2aU5|#N(wr<>a|B$o{QC!3WRi&6h4~Vp>-PCIr=mg_)o1Q&zy!W6awcwq_q7J@P|H zX2Y|DbPVhj~}YzP&$qyOkONWyoH1J(X@BzM?xplN{uAs*tt%EqvOxIb|7Zq6ky#joKS7bZWrWbgBN;vs%oThMOg$qu7wQQKWHY zn3c(&Otto};mkv@_HsjdhnWrTekP*Ae>3))&{F# zE^dG*N0 z%VapJ1#59{y1D`+mv9lDvY1}5Owhrp1P3XvbuXuXW?_YMY z|B{flKaSvoVk4(sl&7CnKssH?B{(^jyOz8;?;&H_K*>L*#1mrHhxF=EXdGqn1k zlf^f{UOwgDfT=<8lz!Z^Nz)3(a%Ih(zgBzSgswxObPcQ}_3nwf`iTD#UcKDhqTKHx)#;Kxox>GQdoe*M5vOGc(gR@h1M# zu=?(Z^^( zTBP&6d)Q@jHh4V27O$iPzCX}U66)w{#>*@7LxfisE_kO4A%!13_vFOi!??>sFNsZ4 znQiy#iVg0f1gTCBj>m0uaCm?eu61x>ukE?(c~k3a|34kkBVq^k+@QWdn4>BlOszL$ zXIE5KId?f0-O9C{Wf-O~X@tjDVB5KFa z=SD~Wl#vTY1gcPZQk6eohne*|u+VIqC%bIrlSG2~X=%7Qo0I}Kn9AXcFXYn4ZRj}N zvX0iKCKV40A*r>Y0ops~Cpmx{T98LKt3wq}1TdgzmsBG8bg<|VDgm9ZB?o>kZL1Gh zL)wfymJK(P(*}e`*Hye<9RB3b&4QkMIeb`*w4l8{3KIN;91Rm+BbD&ygwW$zUim}U zt||W35?nl=vPhh7%=S-_B@Tj`0%4^g>!9{oMvA;u`h#3Lr~L41-9b0Fd2?0jwf2e_ zW7jaE`m-SBJ~=6)?m>#&rm<4-0T_nI>1eEXa&k(6iwRSwom|b~iM(&t{Q*`7lQP;? z_229lcWpJVasoh?S?P}0Kh|_PVJ_~b6?1`in6t_&LssEA3)MwLZl1QPqPTl00DnNP zg)~rU&4E>v`{bM6c45NA z2Gs$@)bqhXVU{Ttd2ooDOddVi)e8+2pBD5Z3V0gf0$!C#X@3qJEXo!EDZ(t=-yjtM Zwl+K0=wI0aDP}mpeW!=ZLnn6X{{gv6EtCKN literal 0 HcmV?d00001 diff --git a/datas/icons-48/ica.png b/datas/icons-48/ica.png new file mode 100755 index 0000000000000000000000000000000000000000..300b73f1a17488e47a640db77e9ca3983e5028be GIT binary patch literal 3601 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 F`ae3nd>Q}% literal 0 HcmV?d00001 diff --git a/datas/icons-48/info.png b/datas/icons-48/info.png new file mode 100755 index 0000000000000000000000000000000000000000..faad79e00c8f67f861e2cddcef24fa3bb2a15b95 GIT binary patch literal 3985 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 HC|mGWdLerbuJ(=HXvz@;j|==^1pojJ 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 FV1mrQWv~DM literal 0 HcmV?d00001 diff --git a/datas/icons-48/kdisknav.png b/datas/icons-48/kdisknav.png new file mode 100755 index 0000000000000000000000000000000000000000..fbc259e953ebda52ea3cde83a45dbdb31e024aa0 GIT binary patch literal 3482 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 BF5v(G literal 0 HcmV?d00001 diff --git a/datas/icons-48/klpq.png b/datas/icons-48/klpq.png new file mode 100755 index 0000000000000000000000000000000000000000..6e87288174755fff3434191b373f2bc0c67d020b GIT binary patch literal 4307 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/kmail.png b/datas/icons-48/kmail.png new file mode 100755 index 0000000000000000000000000000000000000000..deee685e47f7b07d347f669100d23e0032ed1c0f GIT binary patch literal 4799 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/kmenu.png b/datas/icons-48/kmenu.png new file mode 100755 index 0000000000000000000000000000000000000000..36f8ce04e1ec3ce03eb63050fc0e5d785a6f0a92 GIT binary patch literal 5809 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/kmultiple.png b/datas/icons-48/kmultiple.png new file mode 100755 index 0000000000000000000000000000000000000000..24627c649dad5a304e9a14584d889bacbd19859c GIT binary patch literal 2024 zcmW+%c~sNK7M`pmm_WiJtKkxnR936yZ8IIEIe;PzAu6edJktK2Y_3KC``#Dy!OhC%gFuW@b28>B1snD>^dyY zg7^nTd$I&sqFpC*2D6v|IGo~hIcX<;7SG%5tlm^CKAB4z}-`@GX0KL38kK?R!+a}Le#9#kK`f#1MMQ+j zuAt1yr3VfIA#zl7h+|QTkrQMmr?uGCtB+{{ z*Lmh1-P|azYv(4W05r+<)3St=bSOco-cC6gpO}8gd*nrlKHX=Xo%AU@J{65B{c(z5HplqSSPow2OOP;x zmis#bY-GNwSYBOyVZ2-E!A@bKPMI;iSJ$V=W~G`vJHo6pGrYi+Ki<^bS$YDK8Qxu0 zQIU9*H#zIPIxs*#&^0hXycxu%+TYJah5Dd7&MY{ct2n-${Y_}oJ%C5NwZ-mTN>1?K z0Xi?@OaOgye!=EPL1`N2{t9V~FC2Z?InG~pfLxB9=G2Ec3XpyI^>tJqIPhhCd&}_x z~^1Z$rQ8<36qb~Rmc2C*iLT?NZ>Su-WAS-~7M8VT=k=-aY68Pln|b6gkO#6Y$< zRoj+wpZX!;(Gw_X0iAL)CEMWPiRIyBL!L9ws{-0(S^O1}hFAI+ZPMUvzlxa;Z zs*F*Ub0b#?>*SkHKv7-Uk{a5pB}Fw;WC3JVuc(S0{xV;vevd!KG{hR>=)riXh~DGc z{@Q)IhGzJvz0+PE>U64D(}p9*WGQ;EEA9yp3Y2@Wf(NzVU>psn`iZuzAM~BP6*o0=30Fzx%!pr!J zoZbUfzl9P>6tRBWtbbJJW1IVEb{R}%09T+0- zN>PvaB4BZze#SFo>sjq_+Tl1$Z*c#ZQPziT{%6T81~M@oT3=C1Yi>3Q2{-&?Vh!5^ zh@&CP66lz=(BK8?de4eM>H+R6j@l)Ouyw^93(kMG7)JOd#$>?vH3LM!2nza2GhO#| z5g9$;`irmpldUViv8Ougy2LJAnaSOi4RqxrPX2kM67p@vw4K!$@4%qk)yf#YcafN} zr`d=e92{x8i8cMixeYXC&pYJKv$6?x#6MoK;-%>R_>g^%YiSTzN{6?!)q9H#7XFiQ z?F8aMLOFY9%>BHiVFl_gLjgX5DPKFxy7&QXIoB1ld<$ObTLMYhPWHKFCSQ4*KvY)L zn8(!-Z_wDio7-DpiRym4-=!6CB^Ml921I3OywbG3d6#@m!jYf+AS2;cQF$#b6n=Ug z6MWnM>EQ6I*A2K6W4c9%xs6(e*mq|(^$r2#~CW#w2(nm|1v+Z>}cyXd#1O~?oQcTb(e@8?D(^zff`50iR^M3W8FI0LGQKMmy@?j z(P)6gJwrjySn|JJNB@_}o0Dm^hWwnIoDSw zAl)tYRGNL$Yd2ozrDER~VQ{26P331=rnP!ID&<R z6eJNM(XIQ+Ae0O=Ty|)B=G%>d`$Zu|vr&p(vDD|6U)Baou^=ivlF zcFrIjZWX+RLo}Ml^&xUh7OJ)3Us(Nl*zGKK@S53zLx6DGdepA1dO!H?vkvq_Wh7Cw g0dh($ literal 0 HcmV?d00001 diff --git a/datas/icons-48/knode.png b/datas/icons-48/knode.png new file mode 100755 index 0000000000000000000000000000000000000000..7748b7e5ae60cf5fdade9096f15df9a982fc838f GIT binary patch literal 3911 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/konqueror.png b/datas/icons-48/konqueror.png new file mode 100755 index 0000000000000000000000000000000000000000..4e9cd53da5450ffa786cc285d9b261661bc31390 GIT binary patch literal 5240 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 Lee<1-)b#%WvW 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/konqueror3 b/datas/icons-48/konqueror3 new file mode 100755 index 0000000000000000000000000000000000000000..bcaa9f8d2e3ba2b506dc268ac510d02ed7ce22b7 GIT binary patch literal 4084 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/konsole.png b/datas/icons-48/konsole.png new file mode 100755 index 0000000000000000000000000000000000000000..25a3c9629d6e335676ea768e4f82f511b3e9bba4 GIT binary patch literal 5100 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 KT~Bv1;{OMuQ>ozq literal 0 HcmV?d00001 diff --git a/datas/icons-48/konsole2.png b/datas/icons-48/konsole2.png new file mode 100755 index 0000000000000000000000000000000000000000..2c587effb8c53b077589265673c4510a377ffcd8 GIT binary patch literal 5210 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 Y~k66rwdEl;WqbLiwy5+%RQVLAvMltbB+p48*X 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 B_NxE@ literal 0 HcmV?d00001 diff --git a/datas/icons-48/kvirc.png b/datas/icons-48/kvirc.png new file mode 100755 index 0000000000000000000000000000000000000000..7823680f1a7613a623dbf3c7c44d0db1425945b8 GIT binary patch literal 3747 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 akOs literal 0 HcmV?d00001 diff --git a/datas/icons-48/lime.png b/datas/icons-48/lime.png new file mode 100755 index 0000000000000000000000000000000000000000..a491a5283bbb1cd05767a770c081712be1af97f4 GIT binary patch literal 5187 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 AF8}}l literal 0 HcmV?d00001 diff --git a/datas/icons-48/linuxconf.png b/datas/icons-48/linuxconf.png new file mode 100755 index 0000000000000000000000000000000000000000..0fe67692dbaa852c741e843d706d9aba1367b905 GIT binary patch literal 4487 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 B5>NmD literal 0 HcmV?d00001 diff --git a/datas/icons-48/lockoverlay.png b/datas/icons-48/lockoverlay.png new file mode 100755 index 0000000000000000000000000000000000000000..982e3cef19b430ff0fec17f346dd2f439943a131 GIT binary patch literal 2728 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 P$N<~7?qc2df>Qqn0meN7 literal 0 HcmV?d00001 diff --git a/datas/icons-48/mac_hdd_mount.png b/datas/icons-48/mac_hdd_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..0ffde84b1ba20c298eff580845763f57c454c7da GIT binary patch literal 5210 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/mac_hdd_unmount.png b/datas/icons-48/mac_hdd_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..ea1b6beb2c3401ecc0a776c1c47641ea745ecc52 GIT binary patch literal 5021 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 MkGtbjds_Pc0I(DrApigX literal 0 HcmV?d00001 diff --git a/datas/icons-48/make.png b/datas/icons-48/make.png new file mode 100755 index 0000000000000000000000000000000000000000..c6831e15cf61eec278e24390d1a4dfccd196c505 GIT binary patch literal 4452 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 V;E>pM#Saz2ecyq-51iqY{{i;1l^y^9 literal 0 HcmV?d00001 diff --git a/datas/icons-48/message.png b/datas/icons-48/message.png new file mode 100755 index 0000000000000000000000000000000000000000..7134452c0fc655fdd42b2ea90f10bb890ac25328 GIT binary patch literal 3076 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/midi.png b/datas/icons-48/midi.png new file mode 100755 index 0000000000000000000000000000000000000000..3f38c72e90218e13f1a92a202f81e7998274f966 GIT binary patch literal 3019 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 F{tr<9rQ!ep literal 0 HcmV?d00001 diff --git a/datas/icons-48/mime_sound.png b/datas/icons-48/mime_sound.png new file mode 100755 index 0000000000000000000000000000000000000000..01d9b1082ef06f579d64335519747fc8b709c780 GIT binary patch literal 3321 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 nge5=_xY(a-i@B8mK?gdv0N5_%3~2 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/mime_txt.png b/datas/icons-48/mime_txt.png new file mode 100755 index 0000000000000000000000000000000000000000..26b26243fdc821da0ab06ef6d410fff3096c1730 GIT binary patch literal 2684 zcmW-jeLR!vAIIaa2rtO1sz<07!y=NS8c2=DJYhK*IOSBHv(J&172RL5OsAb|T%aCnlu!d)+WpZiVB7qQeo8+IQMR2_F-rZYc$Q@W{az*)soGlz!(! zL!7*QfO||&_rR|ZD^$NJT5{g)}5K;`l$fq}%8LViG1O*I=h8tM~}T;Qza2E>JyOE8mdC9o2Vsb}k%UYHRyI$f$>p z77GgDkvRcD=FrI<%8C=NuPcT}dU(QyyL%*2Z%_kuryh}E8j&suKXKT0MSN#XO>I-l zdbxo0e$q-P96k%mrp*Zi(;$M(j6>0$*NUd zrGH#C2%f2u;YO?n0{HYxOn%e3QW)T4l>)=f2DXZOTXJVTESwrSGLd{*Y_dJ;H}iI9)~Y{w$4 zq0`(ma8FY;5HzF({4JTn$#43q>CHn$flAV}DGz`?NB&=rl$_i!9wU5ZM2HO!sn)-J z!HA#QfPd8K3JG2|h>33PRYmXjQH^atF5o!g=W!cB(S|tT++8dA=o|PlnU!BWD`_!d zfwjOmyn{kZEV+8>X+C%WU`XV&_qZ&Lx)J$Wc?Qn2mZxNA;6;WZ{`&HK_%fxJ!a+%n z^{0DnZWIy-BredmhQJ-}QE(tZLq?Q(X5I=MLZcDUf&r--s@zrl7o0w9&U$^si4}3L zd&2QQ*!r~rQdJ`m@9e|{%HCoK9sbM^hGu@!EMg06K^eC($ch&UsTk91LmV)(1^lSR z;FZaeBMW2>ua-gRp;5Y)b3dT)HEgo6f;BfkXJ+?9U}aujGpa?wjZ^P#DWD-`w%#|G zo~6-X#ssPz2dC6tq`Q5zCm}q?L$7ZeEar_`Vsc5kIsAaa7-3W!c%xGBRmzT4=P_SQqm{ zw5EqRjeA#jX4oA7mrpc!+T9377UcePZsha%hme3|%9d=sXuE@c)1{)S8c*zSzp4CE% zU%pcRUE&3?JUojjV`+w|hix{J84_YEqRd7SCdI#paS1sKTWAzUHz~^ql+0EX8nlje zVi|15^jlP2na8IZFHeU>Bb<$@TZ%!5Gc|8yL|g+VP@4M|hkWNO@D4T;KGYE{$&vIb z$5QV)OD;z~m^Tw9;e>peybFr5`6DV;-HFVKIjkqw!4gsuGf?)q^p!E+K;hOt@uY6i zMQb7t#&u|{-Lru04nSAMz@l~UMM?~o7#IBs<;1graIE!)80j*H_%!4+d4YA<***6w z#X^&5ARJS9Tl>YsBm?xzLdnN)zA^#gH_oY|0>`mg^WV>myr@fp6r4tKSL*qI8 zb#q>HoR0DbZ#iLCZ{a42y!=-C{7JR}Z3d&Mq=Hm=76-fUie%@7etr2gd_&|d#C)X> ze2*~}t7|gJs`0k9kUdgB+}fD=U86rxplv}qI!F!{`5qchcy5k`;i8!g3iOe~;7I^c zW07?DLkZ^0@zBBf%?1t(#iV!zYvEzw26)FA1r731ECVJz%(o9WWP4p!&VrKVAVSM4sXG_k zjA8D^<%in%9RpU}S=SHmnkNe1gGc?nBW0A&9LM@JQsLd-@Jx8tM-LMbU zRYnIY_HqwF0!gg$!M1By95wy83;$X(PM?>ik9+0hk2#%dayLh-`IaQJr3f4~ac{-y z{pf0y19|gfOpMoZuIQjq0%v(%J?7O_sRacKV7yX_7Py2VbhQDi->-w6F+X>Dq-*>% zviPh5{?f#hIqaJ)#Tvg)UslL8+65&k=T^KE{PBC{1-rUymdZ(*RxE5W}5UBKGX_2si_YollN_4UKOrY0s*TVBMC zEgm|^RybE;AI*(Dv6GdoOJcibX$pAHuAYR?AEgflNQ(7HVt03ULP|uc| fNj(VxSP1CZ{t3T%?W!=HeFS_r1$o`{5FY#=OtptI literal 0 HcmV?d00001 diff --git a/datas/icons-48/misc_doc.png b/datas/icons-48/misc_doc.png new file mode 100755 index 0000000000000000000000000000000000000000..3bdeda19bc70b8f022babcc427ab81892886c039 GIT binary patch literal 3879 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 Gv;GHOJ=3oM literal 0 HcmV?d00001 diff --git a/datas/icons-48/mouse.png b/datas/icons-48/mouse.png new file mode 100755 index 0000000000000000000000000000000000000000..45d900d529f1b2b4a52135e53ec912a73943f941 GIT binary patch literal 3082 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 Qx?vs&@D1|$-HV&?KV-9UfdBvi literal 0 HcmV?d00001 diff --git a/datas/icons-48/mozilla-m.png b/datas/icons-48/mozilla-m.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a2f5759013465d93a586c839572470523734d4 GIT binary patch literal 2692 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/mozilla.png b/datas/icons-48/mozilla.png new file mode 100755 index 0000000000000000000000000000000000000000..63d6c8d4428c2660191e3811aa0a56f37c2c1657 GIT binary patch literal 4227 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 Z@W1=dj~>Z=6ovo*002ovPDHLkV1mS(0u}%O literal 0 HcmV?d00001 diff --git a/datas/icons-48/mshdd_mount.png b/datas/icons-48/mshdd_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..4d81fad8a2b91c320557bdf7b836049d20963f9e GIT binary patch literal 5660 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/mshdd_unmount.png b/datas/icons-48/mshdd_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..861e43c92de23ff5a64980e673517ac8abcd148e GIT binary patch literal 5472 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 D)i(w> literal 0 HcmV?d00001 diff --git a/datas/icons-48/nedit.png b/datas/icons-48/nedit.png new file mode 100755 index 0000000000000000000000000000000000000000..a6175419408c9182006ed86eb3a46a8d2954ed90 GIT binary patch literal 4859 zcmV5T2PPSv(!T`r2dsDK6(5P`6T9l{a_TQFolIp@6ZdEfWBf1DFcNCMRUW`2`1 z=e&8I-}m|LzvorCc~Su_`B`4)IjwYLVR|57%C`21bAvTSa$V7l>Gt=AbTbbMAO$D^ zvVoJprLwZJ*s`Td0p!ZcO0P@!yXTZI^83v>sj2=e;c)DkH{afNmc9X-Kpv0@L;*MX zoCmZe`9=qTdK1E@0W*LVz#?FX5W>jF$cT*@J=#=N)tEhNmQz(#MNwh)%u%I9zjGY- zc3o2^WoM_(NJ|fXe)@Dn<2CDQz$D-iU@>qja7U770Qo?3lCP)j8v-zZ+f-HkNlHpe zvET1Egb=r=s(L#xVEC|Mxq(0+RS411aOre*+1NpU)^&aS+wX4GYfoMbgF}G|gfm#Ar>^ZuR+m!Saa{cR%*n zV^&pFmDituHv*solXP9b@3z}+EBMimepFaoTpT=m_N=eHy*=0T`JC*mtY)9jSKr=t z_CK<+Qt#ir=cKmcky4gFynq7-_Hm}Z!@T4pC3GT?wn6i6lL<{$%k@tb313xnicC0gx1%W-KfjSRMRxQ z2@@tTdGchXv$NCx+H0>3tgfye*wN8peeuQR;yY&y|6XnF1@p&G+|T00_o5qvSg>Fg z@4Q#d%E~{5?wnCJyJW<`)uE7Y)kjtP6u?MLP3@dBXAWb>jztK8l#);=#JY9sq;1G=xfdxn004lLQUQdfX^b2>k`*gfsPpE{^E-|+Vc)*J^G20s|E0OPGiAk! zg*^Ds!vq4^=$b`p>M)iqUB;eW?~s?5BQ7>Hk1oj1dVXZd!0!nmFiq191Ok|*iD4L+ zritJ0M@lIaMe%EzRsa+L{{CdU5daA|s;b6yU6+cYplKSVrKK!cvV@^Shlc!q|GY~V zTZ$bw&OP&HW9WAB&=RZ&oBaG7e)HSkaND$@RPQ=s=H#SL_4|zikeSzRD1^W;3{O!M zmoGziztQq$G$1_B6Q1{_2?hcIrca;F;>C;gP$(3vJ$X@^G-)hSUIA%=>tb59|Jf)MJBWV{go0jN?+&2`IMHZSv2DA@kA`6|cI;Rl ze)wTVj40*kv5Tx-yPbwhm+`z9-OVTg#3t@UiAJIz1%_evJ~1g#6h#q2C`sXiB(nBb z2GA;mu*2c7(wDvZd_KmF8^_XRk5E`Rge{*P=l@>aME%(dcy0vfGNTw$Mu}TdVzC$q zi4Y1>_EfA80wGXMQ%O}+Hw_5=D*z;k8bz}#OL1Md&xZ`d;P%^Zr{cZ^ghH9T^KLa& z8~4)E($dX@Y^1b_SyAFn9Hhkayj}o2&%?4T5w~r>6}d3pb*^Lv1FH2^0RY4mMTz=+ zK2KHqPuzKVc~n$XFni8DTxy8$_Pe{-v$yt3e~>n=V-bm1IF17XgaAe9DT1o1`2Bt? zD=s=C?FB8(XBM@$9a-GpzBkIm076QsJC1YRXEjY@=+L1&^2j69pRHr-)=fP3*Nx=m zh8Q)f5M4KkSR?B&34)d$GU^|52;PIdga3B#h%*zbS(KM$6-v~>JBEiHKB zH&3m(TBY7p9uNXu2=r^!eJ!b~%HY9+S+w{Yl$4C(z`+LIeQ!6HE;i!2QDV^;mSqDT z(vwKfqkDdVggN?51D`LQl|L+_vtutOPo1ZuBf3b_wHKRP!r$sH_ssxM6h&k^j-y<= znPpjo!(rm__|@-pU1#dlsZ`vzkYF%__dh(yr(2HD*4jZdYA2ud5DF-Y=%s}&GmS=L zj2!g<&-`&36UQB)YSTU=60yp4O-EB<}XqzU7P{b$UI z<2vyk>W)Mry#N0Dyzq|~dH(r7aP;U=EGrQ#gb)lEFo5~<=QC~EbS_?svF7!C964G~ z+_pe?SDm=8DC9T}aXXHbU0K{_&fH(}Uyqh>?))hZ9Xg|=r3Q*e3@=FS7r@Vd@=(6t zZ&bFmcNW`L3`LPWHcN&(EX!uko*Mq~k7qe?;sjlxR?{?w4I9Qo-(1G1QR6vq@G=`d zs^RkGCOpr<^ITll?Gu3Oy11T;>)KcADox8|^ytY98=6PWfjVmTpS}_d`s{uqOC(}_ zx3RH(PR;(4T2_{ZxCW|}2|zxdiK=?3?G1LC~U0ykoD`=($>~?^<;y=AXBDH zVcxv?sG5)6`|3D!_zbS=_KHA|$P0#{V;UNo+62z)$oLv|Y(K*1JK8yV>>T6AkKg$H z?|=U^^g37g!Q%@unwr~xwy)+?o@rd+TMwrL9^N$@DvClV6e2A($e7W2Oq@_iOG`7a zz4{W{w{IsBiCjI=tgI~N&YjDQ8F$gzYO$}T4%?2S^x*?tn)SREq`exPw>Wlm9k0J* zQMK_1Sy{Pf=H7kxDH8p9&qVf}6?cbR$Ng1HOZc|qwYB`|_XP|YtYOZ;(I{D27T1<1 zp66lPo!C|fPTb;hV>W9yjOX38yU>l`<%)an-4O@`E&>ri_RxUeXDo>r`s;Z0` zGloTrmN0zyNaAr9A^J8UO;gczLCiAPv~?KUwl~uewxSa!PCT5Kmv;y_479JTtdu=8 zAQbU~!$<1#($gF&f0#l>n$1}pgs>5UK5KVHbqNJdQdH22VWiR4W^(>KY})t{gNlkN zC@3I3Jsn7Na?_?wW8uOjG&eU=QZkUt%wAn(S4GO%^Tll5rt#Uf!<3YioS0Nz{+Xs} z+km>2m6h@CCZq`=zVrOw)|VNY!V{0DlbKeZs6{1!4=HF%sQOuq_o0OCkgb?K9Bp&bS15!%j@i_6gM?9WLN``JRu%LyCxeik%1!!uz%quTHOHEA;UA=^&C}d`4 zGG)pXMvNGN&*$p}z_Q}Bv}t_0wVo?Yo#AQIrft?VZ5MDH=;&c`Ppw)d?yIQqva++! z2_fvmM=!E@TPt<-B}f@U(;(ni@cVr|!l>)Ibar;q5w?g#!SfOzOvB-pvNj&5kd&4f z?A}w&nl&#`TU$%_o?6qiUSYXQv!*YAZ41twYjVeq8FQ?B;>6EM%w$`;&0)D}LgU7b z)5nb)xBsoT-`;xg;K3>HzPB$$FhQw5KZUfEBgCCnbf@Q>RZ$d7)5K?L_ zwk&|Okj-7wBUH@w;rCf=too3TKmM4OmX=i<>lqaGcz(;fEN0hR4Xeh zD^{mh5+dAQvTRvX+zys??j2O9p|G~4dS6@F&bBiDr>zT+r&m$I#5sNukF_3QZ z7`((^MZ$oL828SJGh>>cSge)Rt6yNpjvZV(O6g9CJYb{ix}BY!-R^l_8_-HW;}r!U zshVbBH?S@@H+Su_rAyZ=T)60cA&iEOuq{n9(4(C8JdbEJN+c2|76BPgo>3ROpi0Te z!Rak7nNuJ!>S$-ziurXHf*4|xw*e`+Veb5O3&-Me(Kk0 z`V0q2w2hZ8UD|u1wsuE69*=O14SJqOXJ;qPtu9|&3E|n@PTuMHSr;Ay(mI)QhmWsK z&&G|n@ywr|;)NIf&V>sXdhDGnr)3u~afA72zdx+3tdtu*`Y3wx)TxWE>$V$);dYPP zilPt*1c*djst*p}LTeGy)%(?gsl*tR9bx9w6mFlCMRU_dUSIPHn>KB_+R1gTYZ!)9 zRkdrs>)zvCx1~IN`m~HhBChMYuH!gfcbhc~gTlf>gizVAse#wlmvE+O0-hV}6ND;V zQhl8a9jJ2m%zVa=%cAbg8D4tnCF<(xt~zyBIZbjZem(ha2p~zSlv0n!EV3IyyS&=;)xewUy@PW^CJ*`T6+`n&vzA z!McOqPk()sS3eoa#c&ypoBAaP7fjtECEr8Q)7Z1Gg-FE3w(Zy(Z@kgDcI{dk8yoTa z{iLO(xl&3Ii^UArb*~HHMwfgFkgI9h1FEWKIgXT0%b-OA3LJ85oea&iU? zIRCY~?mFBN?(8^TdnRk&fmXdal1XqtF@w@Agd0YBz(60KQNo8CT6y-bhY>=wWn^T0 z(%9ITasK>y3JVL(l#~>!+=_U9JQ;4U8X=)qB_FX!^_;n2}tyXO4kRdM?7Z*Q$>eML_4u?x?YHCDnZEf`E z(W9chz1=A+DylCkEIeo!#tERKF90{1je0*Oh^?+^|PB0LV z`T6;sLxv1#)ilip+R7(RjHjihMn2uVdFY|Tr^o*8>9GIsv7wZW9*^VsdFkc-)Srux zmz%q5)acPKWM^j|{^Zk7-;741Idye)cbqwMMsZy?q^fFLG#cF=kH-&?$i#ip%?x)V zz}ta9U{hIHS?Z|L(o(}Tvwc3F67c&o4a3M#RaF4zfipnn@ZrNtb8>R*oz>Oh&p!KX z+KaF3_Z8%&5O-b9o^6$WzrS_*9d|rAdD5gqBqmn}fal`z_Vd7_e^r`db|c hme$%=bMjT_{{dgwo({n}c%lFR002ovPDHLkV1g7ke-{7% literal 0 HcmV?d00001 diff --git a/datas/icons-48/netscape.png b/datas/icons-48/netscape.png new file mode 100755 index 0000000000000000000000000000000000000000..da8e89197fe21ef2d98a9b66bd867e6da01d6187 GIT binary patch literal 3354 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 B;>Z91 literal 0 HcmV?d00001 diff --git a/datas/icons-48/netscape_doc.png b/datas/icons-48/netscape_doc.png new file mode 100755 index 0000000000000000000000000000000000000000..fa66e3511e70631394f95d376b3a408f50fde6b5 GIT binary patch literal 3749 zcmW+(dstFg*FSLJfPmmFgS>#3(y~Sr^EN7=W>}_-HE&k)Dc;bmCR1xN%fltFnNilH zP8pQVbg{D0=`uMAVTq>3`(|ZjriG0)n)lQM&PVgd-s{=Vv-kR~z4qGcw^j*1daXHO z2>}2A^GIHJtVuGz4m@O2l^Oaha}-M|Ha8yY`s=?BxAma`@R&QFP1sQ@=+ zcTy@Na#vznYHVs^O75Qa)F1#L`$dLxH|>9!q(>08nhyb})>dXKiUZt~UE%V0#e3%8 zS0H!p_R^XUF0_x2y{dYQR2$jrzp7 znST~bC3QYw`|4P3{6}=zt)IsFEl>FX=;Gr&u9#_ns0CYIU;BRI3K&2i7RtlK-+UoX zSZF{tY(NEm@vJnOUxW=tb>@P~1B#G87uQ%|G7L~_OUVR=101h799Kf1SqQ@g7NRzr zV)G$sGPGn{;74!L#>HcYC@GVY5!3@;r#us!J%#Dz?QJ!L^0yl?E5@^|tu+8-D`a$G zYPVF1Drqa*9;hD5&ojuAt#(PlC<{(XuBb9)mfk)g*uZI%*pnym#pa($tX38yMhv)V zK}L*botgEhnFw&cYUAt+RmvR&p_3SQ9hVIKSK#Zjj3YXGv;eiqe>^Lj$txjR4Vku{ z-|qE=zML*XS6MCr8E?e);wR6!JPxtfp>!fi-C8}!zP{gFX77nnpY^>x?i?G?oM~Vk6uoO^~huV ziZiet-ND}fU~cABLgD(|h?gF1dyGL^*-gt2ebJI1Hq2&*oHQ5~OOPo)Ykshu`t%Jp zRlmvT?QW*WosO2*b#{}leA~-E;bE;+Gh%=vah7szn%r$*%}NfS=mA#{O3QY9(;t7i zt<9d0gHy-wkD{~uHE-D#ZHE@XEPzicZV7vkkN!aC`xZk1)J}wWe8B|Q0uI4pPbHmm z=;@xv$8OLL^yPd1&}@)6J$sB95y;NIf%R!~s7;tFE7@Q$;XFMkzYCbc)YSlZMh=BZ zZ_54qSEgOXq^FDk6+d{B&$VBea&xV1;f7896H}a=&q+qQ5&#QDEjUT zPGg)S#;`k9|=*W}&5!H$wX$gBA?8Zbp@)(H~e)mSmFzVxU2vH;15Tn-lQ2P!e z&jRoNa8bi_K9U#2HmmW%JoGtvOJx&!quW>bnhO|8L;noX1Wu?k*AD{QDVv^`c%5>m zz9I@F4IfrZ@ZG@<+a91eD7$BqW?%g(IX^!J7q3YWmnWfwE4<{=7ut-?LV5D7cB_md$UjD8PhKUds!~Ok;Wnj*@_Pb`y+Xdd!8f-G(L%f%01O$MUGQFme9e3#ido85Ciu5DnYq4 z;Im!523-{5!SbIM1)(#Byrmu?!nizArzvR44ge>2HX8~BnUDdSC@odp+wDZNg@R7f zs5TYfgCA-`? z+Df{9nH!1MS>n&p-lO&>nGi@6y(rMO40iE$t!qUU_`09u`nWNT&eK#X<}Rbk;MUlS zS$%=t3@)o$kX3?i0kU$K10vibbuIibs?$ZXdru2$RZ2ughB9NjFx?u{GcJ9P^8Z(} zvb345O`7!RVaX@y;n^sMLnB_Gy8NES%z0(diFBybrA~H&fN=yI;6=l8Y_@nqYFxu7 zwokTb#Syl48Y(rH`(G+Uu#MDBwJfe(o?M4Hf@PYgUdRI&qWS}XPIgWki$7`8to|rT z(8i%luQg+$oas&ngTI3cnIKOTf+&@l^N#KXdTh}g0?TfN__rdV$piGpVf25?q6Tuv z-Lg(u)FZ+^rghV0^WA#Xi(yBT>7A~aYiqdWI5$Ot?04fM3hz5J@Ud9Ymn{+xVtY0= zE6LR@PN4c)8Ycz;hBjvUk%r^bNupu4b}PBeDR+SFQ&^ce>MD%;JyFsIXJVjudDAy`p zdOvx9UH7CUU8nkjt8aYVS*A)cFv)-k|gXOhlm|WJVaxW&!sJDZ^D)HRvcV3Ry|>@=9`b`qx1B zuKc3^tgA266W29x|Jjx4MO<;w7#8cz8@=b&LS15O5cV2@^UH9RiVA0c6$)8glfzLU zI4h#yu^u~>=&(d*QCOl%!o0Vfj{Ex1QF=Z(|r%6bdVx_qxc@G?ME!_!Ls`6OMSYeThGbzeQM1y<>t#YRI5L6 zCNMR~7VSGIU2QAY-&XGHb`gw?_J_%n5wyc#N9XwG*P9DlVnlyX{rC&7cPTr7N+}FH z>Ot7biOJEop@j~)9<+U;K({i^#{HtIP*U9g!TIE!H6Ov5NZ{1XFw;kAx{3>H++6p={hLiE_@l~)eflde~vAq|l&R=;*!Ns7JiOsZIB=G}Av6O}<{ zbM`hkWkF3>2^rtib54-0?G76psN2}0@8@^R+g?--o}xA7Eu2Grw8Z0{^(di#eU~SS zoS(^)&kvM;ih+dD|0(3KY@tPhhTNyCc*}5q9PLL{RB!&(PW^20X`18csPwa^kx?)V zyPsRMJ=12>XI5B{*`#K(pi}=&WzS3wCyjE~ZQ;Gg4&kP$UxSOfAGcykyvl~Z`@Ltq z^MTo8iX9K#cq|}gI86|c`;!~ z|8NcFRRZ2r6Q}1=vhXe#^%TUa4FP7bMkK84f;aR2lOXWr05dC!0e<~fN;W^n?1vfS zVIMIp`E#36o1a}H9(-yhr?5Hp1cEKU8hU_Mvm2{W5qRUVlVr|E?p_rv!^JUz^D{T- zam)LS7bsHc-!|hYle#mCdE?oFK~L*eFhTsF|CdJ=Z7@tWn}9hK;}?9SS{^|I8-)d% zca;@?v9#%scM^YW^a`yYTen&xoHZ-!(}e?}4l!#wG)OTOi~CwR>C+D8PQ8F5BDNIH zDpMwDy{vgCXKrjvwhnLe5?1^{)3_jP)kAmLikTK(4d=?Rszy-wUdonH=ZNbfFL2YLUFZJ&o5jzgTyCtZe1T$j&GR zMU2B$%C;`m>=fdmi`hD-45*jCy8bz~j?(nk2BpK^2=~^2)Pjq)km=T;vr6{$tJfCW zP^q!vA7z*%l-zEMY=@noT2~w$Syg*=1?u@UuJ3h0?e{!}p(w^p_0d(+W95uN!YX{- z{QN*1&JAP{iS+@h!+~cE=f?X?ZGs|iz%xfOx~gsu!Q7N-!aJ5TT<^>(bi(P4YJ1B1=W;FN^&%jEwts$3Tr&U&w=TQ0M5mK@dYEX!mm(^Rc*6<4Uw-}l z8wBpNiuERymJ-Ij|9*80b}wI`WGmtDN@VS$lT4hqR|B)Yp@CH|O%hjC>9&~iZs?xA zv$$F0s=K?fu>4!2va>{9J6Tkez^~*+k*q-ZufER{MjS<54lYR;C(8OHMA?NGrqdoD z{tm~Oy4lrbqJju7!X&0~r(U|_yxmFR-8*-cPqB9I*qOxPHwfZxtNbhAn4+xjrSFf;@zbJre>y07C`#U!@L> Tn8gW9eI^jOCOZ6js6g`nHjH|< literal 0 HcmV?d00001 diff --git a/datas/icons-48/network.png b/datas/icons-48/network.png new file mode 100755 index 0000000000000000000000000000000000000000..47aff2a5fba9c0ed550626c20f1e3d0cd555c13e GIT binary patch literal 5877 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/noatun2.png b/datas/icons-48/noatun2.png new file mode 100755 index 0000000000000000000000000000000000000000..819b2d9170e40d2065209184218c7da30d962f47 GIT binary patch literal 3062 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 IIh<4QU%|XYPXGV_ literal 0 HcmV?d00001 diff --git a/datas/icons-48/opera.png b/datas/icons-48/opera.png new file mode 100755 index 0000000000000000000000000000000000000000..f092f4ec27c6c21dcd8282d4dac6ff5be4858aca GIT binary patch literal 4032 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 r6xJk5Cgyr92B}yz0=B`yS#t%Ut literal 0 HcmV?d00001 diff --git a/datas/icons-48/php.png b/datas/icons-48/php.png new file mode 100755 index 0000000000000000000000000000000000000000..58ebaaba507d5fc783395b7387f4f7f9eef88480 GIT binary patch literal 3475 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/postscript.png b/datas/icons-48/postscript.png new file mode 100755 index 0000000000000000000000000000000000000000..4d0e1d0b653fdea8d8e3b22ad1adc12905991eaa GIT binary patch literal 4770 zcmW+)d0diN7k=SoQ(gtN6x={FwQ>@{$z@DHt;|YoGb<;+y~fH`Em1&>$fYPtF-vK2 zro|>|n#Lvz6xUq8w8^H%eQ9ye3Kw`kX8ySM{O&*ZoO91}&-2`SCOmYViLtdY001WI zgM+phEbZTc!x-ir$l22dgGyj;Vgtba1}}8>2g90tbWP;Ztq0?ertl8O0qod=(Q(xE z`*{g*TjF@JCk{2n`2m2r=lUS_w$#6)7hssF3C944ni^USf(1N~-C+j@OApNs=ff3G zy2#J@^No`eJxolvQ)aYzka(7LOaSY_yD)xG+y(1(*xz8_jYT#&NNO@9 zj=@;(_WekQwpvZ36Jn<`M-jEF9MTN#YzZ_EI^BE-;cYW&B*if-EE)ieWjwV7b#td& zC?~ts*H+aju2W5?Yiy!dBZ#cn6GD0HH%j9acN42V)7EqvCpGyBF=`mpFcIL=4pPG! zLX0fNjD$e6gUiT3wrIDzp3%&#ZlJ!<6|ygWV}dJaM~BvsNsr1D4s9r-6XAd`k*Ecy zQJzK*etSR@8e_xP7Mfe3(vWhOAmNr$QHlDpiy_iem)HD#Zv-YMy&{oQyNbwi;T!Fz zFpOja0cN}dPv+*^T^uHpXJScYt&hVs!eQ6u7^=Fe)ws=qYCX6)paj5C@0{q>--RJ} zrUxBWOs7pA5xpc@RLq>v6^Z&jxnm@yDl)0$8Qi9vm=kdIz|SYv#$$Hs1yHn~fb1>j z*#kp%t1yw~r`CA-hXE+!c0XYG%2J@^XlHD6FUGeY+x`HC1G2aHhu%6ZWQEGlR|SjE zZu$isQ}W@hijjCm5R=>~@wUEr>CGGVF|19<;W%WS`O5#c+Si}L(Tj8JcJjEFF%f|( zp}qEtmHEdW(KUDoOB5skF1LGFhr)$0dO2UKT`ESl{Uqs8XF~;J?2_L8SXA^XOvav2 znk7mi%q(~PE7yd`T2v3XKECfi+oo`CM4dI_KC79;ZtI4{7t5%-SxK_f`UP>#Un3Nl zWI1-Ch1xO&Mcz(E)KatOtwtRZIX_Nhdu^&U>y-oj8~_pY0J|q0S+GidC+{5Iyk7;g z?M$5f5rMk-FsX*^0XDyZlGN1aUq)Rt_txDfBRw-bk`JFjcKBn(w@Z-9hyui_6?!4V z>y{)#H_oUiz{Dkn-_sFDyXL=+fjjZjYK{zRsIenK=xDcSZn^nJD3{fGj-%LR+GPry z9PHbTkq|fzWV69UQ-zD@6r>Rh!;sZDKbFYNXrek)w@_VOac;goq7oQ?+d^2@!BL3W zrr1lNZrdPEl&w=I z#V6lu0hd2wK|;Xs2MlY?;M+E}@j4tSK)@<8zmPQk9Erixk}A5W*G#8@hAD+?4s5oa zcdv|*4WzdzsEr_$?tn2hHBHt{7MewVWdsDw+R#SCfs|Y1i+q+naKgBs9UqwnH5*WT z-H&!?I6d4LVR=aHR^LKs)x9oVK)hNDIabP!>M2p4bXw&sF3DVY0nc#yAhaXAXx^yU z@}8nO-*lg}rA5HN;iUBB&&gomCG?f&?6dQT=AcrQ9=H>SI=!l5Z)*(@8X$n_0e;{V zP`L~svfQ+`CfQGV1o|TnAJ7|N-M7Mt9u*TlY&`rMA8u`)9Q}ub0k>NwFGGc_Iw*{* zzL6q}MJBZh1MR!}wFEO2AI6JGuXkWh99oIV@Xz4BJ#En)KW99;n~#?GF)D5&re_4n zE73kBW>FzvjOYW?jiCOw%l0m_-!AeEM9mgm@_ePuXJ0*Mlk%K4iN8&I_hdeYed)6W zZBR=p;m7h)zZ4bqX;Q+|u%wTQSny_%+-%c6*;S5c%}B{__euQUne@reO|;4BDMUVQ zg~o-8MtmfRLMY*Jb*TNL2#{iihh*_y(!6nm5U8G1KRQ8>iyZD%H8uHe-+8`%52yGX zg46-c6W;Ms=ZCGt@+@0TecJ>nbo^;!vVM^}_*8)t%cL~rLmqf12DCgg+8dsgWsMU0 z9UGla!;}cx)YsY?YeBbNIz^lU{JhWczoOO*l%Qbuwqd1i+Y~3gAfRqQfC#VJc*RU>#RS87+|!|T-do`1KtBQ`++|C zHci;49?w&ogOQoI9OT^-5nMWv*V}J~eEsul_tnwb*&`Itow-7so9iULcx90|I~%1r z=)6brbjLWY#!Bm%kG|W&dxc)y0Iv-00e_K{CM%&?+%yy)*ScL=&)^M|BTcYWdiIY z(ae8i@J|ZFeT@vRt6;89{h|)*wlkINkG$Jk{F;NzX&Hdr)YhDBAtHyR{xWu(3>#IH zjvg*Nea?qe;y>S-JpWe$#%O&6hR2IY+=Z>hERn2ZC1Daz&D|5s)lTYHYtF9TK{BQIv`)?qxk!HU zq5!M4fLtQFG}JQzF`qw+m1Y~o-E#Ye{9(LmKmaAU^JBHzDGQL`Zlx)7PlBx6{o|Am z&C!3?A_zR$F4||xO(~`p=(0!zsKQ=*Aa4<0H}|2Z_z#uvtk!4{#zah&Lypyo2!~t8 zaOL`nox-AvX5A4ZBWNC5GUK$HhOz8ZH)rJZwcfh{y*}u{uzmM5uj*x85pQnLGg&-t zp}h4h^^1klGYv8Bo1y=DsjqP$0ph6MCA4>Pqlt_2fjZ)fibsgod?>e~4zIhf0ds>qW(VV{c2<;d712V{^N?`x_h88cm%VJIbG&1k$3Sav>z& z4Z3n=WAF8Rqn9oTy_lcMm2i$kB1NRh=>T4=s`7VqsomH<^is74u6X_ z*F~|~B8y%Kci&QXB3p%FB|7BCgaob8OiNzzInfscK`at2*ECtZ7GBn8=KPpEQfl-v ziz~D&Q*;4VWgF!u{wtA|aEHbM!_?;eV0-oMlx{{6^DD6{{(N*r+5{NBU@Df&X<{jk zsWhv@9(AQfRLly;1ji*Q6m|iOJPCF648{M43e$Cn z-!&XKAr(GX?BE)d&t8*T)K|6SkYXvF*fjBsS1}KxX|qZXsnnQ03FccaS%McUWKQkT zD<$73qOn;{56N4o1O2&fnbYT$M4PT9-zb&5iu8FS@%8IY;$MGtY}Yia`QN~(kF@GL ztChRSWIg*WH8=Q1v~(~F01&8e>JfL2aI5O^o zU?&7J(-b%U*QdIjHoTp&J!ioFq}%bIjTOT~783W<1iDf;5=;E!QJk#PJg$Am5GbKj zG*?|+vFp}|sBRSZ^8Ys<$PO8HT zWxePhY%lJ}02p&0I!1)(svoHwa@jAaDO{HLo;J%s00Flfk}UoVOp1NJ98P^+%4>P1 zf_`PH82r)EctTF(r~147+@d3x?Lnqe}+QSS zZKoUJOCGzCbdh3e=if9r{EE#zd?A5YDB}`=;|IFlyyhw<@nkQDx zP)YYbD8=7{QT`T|vU8`Fh%Y#KDYu-gP1e<=b5F0q$)mE=4upO8bqi>tO|o^NCEoRu zUteWlmIN-w>?MZ}gxN+WeWugEj>Y9Kqggh#YtI_R{;P|QebUF3`7Rv%UxEL3>X|e$ zEn_RWV&)jBYfTO*2<64#TWVh<58hctTXDyu^J55o0aNhczNoh3_8Cu2x?;fnpY#`0 z&EY)up3h$5$Jfm?MIBaT)A3@H(NEb3n`6`JkPT9Hco3%R)>hE!lS|muIPJ_=K)JAk zC%aI9kvw+_|IWRFlRKUqzEOSoRRv&>Obfbt&!PGIuzHuZykKXPsJoI-e#+E?w&E`G z%^Qf%Vu<&5k-Cv-ZW~LxX*8ol9t}7+I(2HEsi_?MMrvMak9ez1f<{?b2G~(qUXD^W z!$`NH3`W$Glj1%*#%Y_a6XF9e!YdfQ`RF5_%fJFAGjB_x}@F$yVXraCOP>YPdr zTSyS*^chIIW_on^{QDmTujqeVy%dpO7;cgBa=~a+rs5KZz!ruZs-STfRDC5H3b^tT zQi;~*29G&* zB7^&sBVh+`TlC(0WwLJ^+|;PXA0;J@e;R2kW!Zg2g;%L^SHsmO!o`_X2z_!sR~~J6F-bFRf0@9@V2;qM+rEk!#{PtiZbai zbY^)`5qu`QkS5K^5!(?;^0Fdm4QHz(Y#m*!Dq>)>!mQ+1Xaia@$;Q3c`b()$Co20Y zp`GW~?#i^G87YM?Qro50xCQO{X53dnCO_))0eG`t-faw37>SF_HD@TCOrc{3j&nuwN5{9nusS{u&DNK~9x{H-Lx`&gf4qvaMG z!#VjdzNiZbVsGLK_TB@&PiI#URjB^7iSB1lu|(EjZYV4+*fnvDAL^Ud`$OjenGMO1 ww=H2o5;{R+nM7av4XbC_5srf_Ap%$p?mijkz5SHolL=VACN${R0B+|00k=wzGynhq literal 0 HcmV?d00001 diff --git a/datas/icons-48/postscript2.png b/datas/icons-48/postscript2.png new file mode 100755 index 0000000000000000000000000000000000000000..8d29e43eb7c2215791563b1399878bcb7eded5f0 GIT binary patch literal 3768 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/printer.png b/datas/icons-48/printer.png new file mode 100755 index 0000000000000000000000000000000000000000..6e87288174755fff3434191b373f2bc0c67d020b GIT binary patch literal 4307 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/quicktime.png b/datas/icons-48/quicktime.png new file mode 100755 index 0000000000000000000000000000000000000000..8e2f94a046a1738558eac6b46e00c3e1c3de1214 GIT binary patch literal 4946 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 QtN;K207*qoM6N<$g0~QlcK`qY literal 0 HcmV?d00001 diff --git a/datas/icons-48/real_doc.png b/datas/icons-48/real_doc.png new file mode 100755 index 0000000000000000000000000000000000000000..581077d7aa1dc7d5e28483e80cf4938d2058cfa2 GIT binary patch literal 3372 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/rpm.png b/datas/icons-48/rpm.png new file mode 100755 index 0000000000000000000000000000000000000000..70620f0b27cfb5b24787b12cb487dcd72cce380d GIT binary patch literal 3832 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 @`E!=_N?rGiHbgbfJaL&3N;FsC?DT;j z?OI)x^ZtINy*RzsGIB%kC^$64sY|{?9Hak6)~=?OUWe!JMZ<`);u?H00ewjAf|Q^p zkHGw`OqYT&-Hhsuc357gJ$*mh6SX%=LqZ$zBTPBP{B^}|B)*l2LZSGt=6KC2I&?g^ zul(rjLXE2f?7dXn6YBnzlT+(YGx(rzZXwo5TUD6uY#5n`q35*uFzk4}Z{ZY1$*_BgVOa^r@+Xs=hK}hDo`#zEjgggber6$ixZ4W(^5TEFKziTz z`(7D)yOOe*jNPCDF17XjYG`f=6l&ITs=)7Y(o(Z=YbjgIn%e7 z=gwbhp4u6Xt^eRw$ftBrG-}PaJr`KwlgG1NcJ+p5i#A{yMzs@S$3lWA+6V5XB_#T4 z=~}pQ($DeT)KUb;3=u=q@iW`XboR&+jn$ z*P?(e=84Kocvr8?$ve(|NK3q5QGwUKQC?G2Oev5YU(YWINN1nL6v{MZQ0@a^@OXLi zj`CYW&dwzsZ~GP$W+;r~oDDgq;9ZWTw^iO$3-b0LabR72J?-+%2C%yxY2PKiGK~*z zii_O@1!Jn__Wb;Otm2n7F(7C3i~{urdnl#T()y*8Bm~K?bBvGqxgb&vA9%?$!%+0@-aKw>ZOf_S_$dm6t z=hAG7)K6a|?(-@tkXzP%Hpf#{$z+>4IlaW@ZU3Qjh>32tor_ K2b2lLs{a8su45hm literal 0 HcmV?d00001 diff --git a/datas/icons-48/socket.png b/datas/icons-48/socket.png new file mode 100755 index 0000000000000000000000000000000000000000..1507aabf4c5e5b4d5c1626a459f44e59e8182f39 GIT binary patch literal 4424 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/soffice.png b/datas/icons-48/soffice.png new file mode 100755 index 0000000000000000000000000000000000000000..1f9eeb5629fb5d8c2ff660a29146221c1e5b2b5d GIT binary patch literal 4881 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 N1pK(k=gLOD`2S8zdW!%6 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source.png b/datas/icons-48/source.png new file mode 100755 index 0000000000000000000000000000000000000000..ef1fe742c66e36e7543ceb67a32b75b802b61250 GIT binary patch literal 2735 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_c.png b/datas/icons-48/source_c.png new file mode 100755 index 0000000000000000000000000000000000000000..ad8947b5440ab88bff830f10fc2c2aa1b0cd3a58 GIT binary patch literal 2951 zcmXX|dstH07C(oBfC}O(gERrP>|qL;nWcG9GfhkMT3OQ+7@9qttZ_=KnFC^ouSCm2 zv!Ze)vu09jy4I~krL@AL?EM%YS!oZI(tHH$d%EBKW3RpU_pSYX>$lc#{npMCEMG#i znqmb(5G^V)JRaY<-xr01+f{_|Tzn&L(>)teH{a{DjQsNk#xdS_C8r)@r$07=`MTHT)$@a<>mW zm`sfZNN4X}WPPze4=aBG`J zN9^VCQ&UnDSuP*FsJ`*p)N372uESY`>Rh$w|DVbG0l;z|i3}92A3HZ}4!Mr+nv~s8 zA}gXPRx>@q$ECcw0h-=>ouKf;`}aM=L=-AnVI?Y%%H`xKN^;~*wy{}*Tj(T1?TvyFyg|YMwwY@oa93YtJ!<U%y<*Lz1x6^ zxtMwH{BOqbFX=mf{M7^+(TM=%{9nHs!L|@H0LD*)VDvalukOzUV2P&1Fu1y@<0yv4kO4l1zM#?mxSIi zV%%8N1qg!t1uDzrk7)-Ra&dQV9ZJFr-$9z$X zW!~O4jkk^zvOH3fpP32S@47XAsdW_+X{5rwFCi_xFrjQx{wz%~(f1YN4;-h~?Uc^;~H%RPVI*Jy$vg_^x9FEeofkj)5)B#gw}ZAa09Tc^Q-P49L^l7J-$M7!zLTGIb&pSV>E~&*N82J%^46 zkK;Va;z@qDu#TShR0}wp#z$Ez3DOtMwo?)oB8xH8MC%akeWsJzli!{`{SP1vW`D&5 zR4(t-#gi~Wv2V?d8BJdI6hp)Y*Kdermf$3O3j^jO-L2lu`Qx~#g|4%jh`sn)^m|8^aGky*0Q!29!Km4?nORe_MYF$g z=ZL+mGJC<(ruJpasCaeqYrgH;#%-Hf6IS5{&^lt?>_jWceFzTkSj4L~l1ElZ2E@v; z5@aVI@QlRi4t92N>Lu*tYgcOQ=cX{2RaI4*6V!ZB@KpbFIa!pF61i3K&0aqv$HEPT z?&}bC?&&H*G)FiN3@r;uu8TOeug!4BFME@$T2=_#E^y7lv5~_?@F6$93%(53myJ!D zRzq?32Op>OJj8n`lkEzXMbxfwaYFEjR!+ZpxTM5+3OiYS$+p^Y{L8zLmQ}(vL zs)GZnf}rmh%JQi{{6Jy!QOnBwsUrfz*~31*sj2g z;D$eu-s+kyenwOA+GEn5?vRWGO&Ww^gR1!R=c`crgLcBP42S0X^%-1b&@=Y^+m!MnZtuV=S~^uJTmm}gYZB#5Y9tN zPcgcVI_d=rbsa$HI#KX(b$FNXY&b3-Cv9j!B;g^jIL9s0#^dW?h#Tp_0%M$RbHRF| z;b|ur%CluS+kI9}r-+;33xPOP@qTOmGeLpby_KMYF;2OC&rIQ+i#H~p+Zb=2BD?~S zy8$b#Uo)mOzjZ5phz%|w$_M!Q^RU6FwFx!ECtTv|bV3vpnb}a+h_hRhOU`W!*NjD7C+F={!)a0>yk~KR_OQ@uliC!)p zAGXh2=kI;*)Kcb5x1)UkpxYsf+ahAx1P=>0D>rTJSkmIH|b}OOP1kY z$Hr}{I>TORAe{Y~T>-Y3yuK5miTT?+yRClN%E`amTDH36q0~uclw5|{8Yq>t`(qrf SPmcejp{T{n!~Y5uX8#x44=5V| literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_cpp.png b/datas/icons-48/source_cpp.png new file mode 100755 index 0000000000000000000000000000000000000000..2031b46d29b8fdbebed3ff14f110c624ea2e37a6 GIT binary patch literal 2859 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_f.png b/datas/icons-48/source_f.png new file mode 100755 index 0000000000000000000000000000000000000000..e52fc80d2e20e877136ec673a34d1385f3679b53 GIT binary patch literal 2962 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 sdBG3!N9=*eMg=$&KOD$;1K`=f>&wR{vQM;~ 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_java.png b/datas/icons-48/source_java.png new file mode 100755 index 0000000000000000000000000000000000000000..150890f2063b00976961059f348e4762be038c57 GIT binary patch literal 4156 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_l.png b/datas/icons-48/source_l.png new file mode 100755 index 0000000000000000000000000000000000000000..ef5cf8c795a608581b8e32b4f083964e62f907bf GIT binary patch literal 2894 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 O81QoUb-V4#P5(d6RPn_C literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_moc.png b/datas/icons-48/source_moc.png new file mode 100755 index 0000000000000000000000000000000000000000..9a941b9e468289f1e6d5c72fa43b851940fc945a GIT binary patch literal 4053 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 GFZn+z0}6ov literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_o.png b/datas/icons-48/source_o.png new file mode 100755 index 0000000000000000000000000000000000000000..4610fd4910c9a0cf17097a0d9904337e1532f027 GIT binary patch literal 2939 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_pl.png b/datas/icons-48/source_pl.png new file mode 100755 index 0000000000000000000000000000000000000000..50d219fedabc8175a232d0a7e8c27db36c67150e GIT binary patch literal 2901 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/source_s.png b/datas/icons-48/source_s.png new file mode 100755 index 0000000000000000000000000000000000000000..1c3594dee232788bd1302337d514939fb2c9e6b7 GIT binary patch literal 2771 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 RTTRn25W03f|5~6Z`+q(Q&}{$! literal 0 HcmV?d00001 diff --git a/datas/icons-48/spreadsheet.png b/datas/icons-48/spreadsheet.png new file mode 100755 index 0000000000000000000000000000000000000000..3ad874e6f981cb2dbb8352717d6b8d449f5a1e97 GIT binary patch literal 3559 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 I@#W?IAA&vm-~a#s literal 0 HcmV?d00001 diff --git a/datas/icons-48/synaptic.png b/datas/icons-48/synaptic.png new file mode 100755 index 0000000000000000000000000000000000000000..c3c52a120c1b16c9a934b3f4ed026e8751f73674 GIT binary patch literal 4383 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 UFWu-b`{4jw9NipV+fx(%51s)uDF6Tf literal 0 HcmV?d00001 diff --git a/datas/icons-48/tar.png b/datas/icons-48/tar.png new file mode 100755 index 0000000000000000000000000000000000000000..847ddf09382253db0c36e4b533a60650f339b5be GIT binary patch literal 5093 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/tex.png b/datas/icons-48/tex.png new file mode 100755 index 0000000000000000000000000000000000000000..fc1f6369cff38e6ba8f2fe3494e62ee8eea40d9d GIT binary patch literal 3688 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/trashcan_full.png b/datas/icons-48/trashcan_full.png new file mode 100755 index 0000000000000000000000000000000000000000..ae0d45a3227b7a3c28193ecd165f9d33a6b49e34 GIT binary patch literal 5149 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/tux.png b/datas/icons-48/tux.png new file mode 100755 index 0000000000000000000000000000000000000000..e80acb6f8a16e5d1627c0c6ed5ada268dd83a820 GIT binary patch literal 3997 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 OfS*r*_y0Z?r2QYU)hNUO literal 0 HcmV?d00001 diff --git a/datas/icons-48/vcalendar.png b/datas/icons-48/vcalendar.png new file mode 100755 index 0000000000000000000000000000000000000000..437d79eb009474acb9ed7269d8f478c087fd35ed GIT binary patch literal 3918 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/vcard.png b/datas/icons-48/vcard.png new file mode 100755 index 0000000000000000000000000000000000000000..3ae1d26f060272d01541a8e72aedab2710607b05 GIT binary patch literal 3941 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/vmware.png b/datas/icons-48/vmware.png new file mode 100755 index 0000000000000000000000000000000000000000..0b599c047328d51674bf4fda98eda8a8916e7bcb GIT binary patch literal 35702 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/vnc.png b/datas/icons-48/vnc.png new file mode 100755 index 0000000000000000000000000000000000000000..67dc984bbedbe7e98245e276eb289dc3255af92d GIT binary patch literal 2457 zcmV;K31;?*P)h5?-}8x#U70ptYqHkU(+b6e)_GblQreWu{Q-IJQt*6-9?p zr`D?d$2wEA)uB^|S{bLUN^8N+(DIU@55$81*auJ>2uTPeNJ&Tn_i=WA{&Du~*}eCs z_og#WtK)BG@7c3w&z|4+_ug#aznl^PYai{A_nVPYR99EWVCv=+1oT7%M{wMGdj6^&^E70m;sg|mYJEi)(b z^DR(QQv+}@Fa(?d1_2A8DrQP5VjduoC;&7(RIew9H&+VZ70BgvXf24=Xcac4 zG@=Eq1bw)J1`+h-D~zxb5NZIRr;umwCed~TlnR+q3IYW|VETb=38lSz`#c|zz3a{* zjnr-aQ#>!9H~oS&qOncS0&w>0E6_23i9o%PewDj+d^0%YGp|%E`9f_B)1}~dGmbqI;e*iHb5=yqbDPmu zT^WbZNV>67$jzHirg=U}3uCuEPyH(|76W-{FGs%fL%LS1vSD~kZlop@(dg0e(aVs3 zy+h*683%-prEbQguFfzTn?`gW=7sR84X$9yMFplLu;*p=Z-13cW7>jTWjwyK4lH4$wG7vEcK9LrXghCx;~sJm^92AZpyo#L|t*JhAxFGt(La6TSptiH!lYURjB2W6RueiRW^avA~KR32V88g-op>9(u zEQ_@`C6d^U%!f8T<;_1w4V^PS5zdPQT}t{QX45kg9}uz44Q+bbG~W*j{9)9=gI>st zggy4JuTb50#;dE^7B0bNhoaEyL@pwQmj_T%1FlSTeSOGmVL|6Ov-F=u#*eqmYZ2=9 zzT{Q3{THMdm_0Z46Dzc0=|knEgr5hBfC!{gu?bla;^l?sHavyxa_MWQ&WJ-P00E{w9U1aVUm#+&~ z(F*V$0EkoaJN~K#a+A~XhTNfV&zZ}b*>k8p*3QS9=kwTSZnDod5s*!#>0YstKm2aJ zW&Ya5OZd?Pza`n2Mt~VJujb(m&(qMDwjiE)>JeK?RP4l2YzC|++gvbiLhO(Zt(iF| zM7?b%(tItgPdwp0KfdA)L}2%h&30_*tzRqHy$Q+G6rOnQHE;ZMgpX@GL++!>nbC`6(eq6qou}VvcSOY3-$|NEsV*Y+9C=J=Bsqn&% zvJ3jmhKcIRnOEDfJv%nr@px-2PS_4Rq4q~$LP`rNiarq-5dtmr4dm&qOTv-%kpVCa zE?m6Cjy?V4`Xc6gd%9_DNpgKllIuU&z`@rK*z#h;03r})2J)O425&**5>gMHl+fe!DYX`Xh`(NQyPZ;mteEk4xR<_!AuK3tIF28E-$g5GM!pZ$Z zp`B-Q+AtBrnK z211GFIiFRW&nVxdOk_GctNC3Q>%4Vk5rPPOGBt%?Y%dR!|dW^eTNH(Uq^PBgxYW4j_1L5;) z7A*nCvE9g(C_Ic94nUE^n=iY7PJQ+U_-^TiI+x$!MUukmwh+vMPk+wa3q*6p*(+2+ z&VHcuTZO}K{PdBc*p5KY;v0u$+)Rn%zu;-9ka?kmK+6GGIA;>)vteJ`kH`HW&;&}O zZ(oX%1XWelXsJR-pfuE*DmHKa5}6N7-)yIIK|B_{TN57Yo`+_;fkE?3rJ zhNE)PqSC{|QdBM**8q%aTQ_M`c#t-W@H+85fAK#<{e;J?Ilw~{`9NSM^qBj4K3Ej- zHbls)r3gTd@DTZkndqIxegG&(e9)b9A4C8Y;R$%oj17PA@&1s;`B#JYnV0|5{}%ll X=C?C~(4d#L00000NkvXXu0mjf{(hx& literal 0 HcmV?d00001 diff --git a/datas/icons-48/widget_doc.png b/datas/icons-48/widget_doc.png new file mode 100755 index 0000000000000000000000000000000000000000..5b46d55ff004e22292f7623a580ac1b7b64b8e54 GIT binary patch literal 2489 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/window_list.png b/datas/icons-48/window_list.png new file mode 100755 index 0000000000000000000000000000000000000000..99dbb958a762f4c665d349c1850a97482f4a80e2 GIT binary patch literal 4004 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/www.png b/datas/icons-48/www.png new file mode 100755 index 0000000000000000000000000000000000000000..73b276e7216dfd5603d44c04942ba76acf876161 GIT binary patch literal 3154 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 IM6N<$g1rm6)&Kwi literal 0 HcmV?d00001 diff --git a/datas/icons-48/xmms_classic.png b/datas/icons-48/xmms_classic.png new file mode 100755 index 0000000000000000000000000000000000000000..69e20d4b813261086c111290109457501b9ca6e7 GIT binary patch literal 4112 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 M)78&qol`;+0I}=vDgXcg literal 0 HcmV?d00001 diff --git a/datas/icons-48/zip_mount.png b/datas/icons-48/zip_mount.png new file mode 100755 index 0000000000000000000000000000000000000000..d994ad00b1648f5dcc8ca05415ce3644a4d5687c GIT binary patch literal 4580 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 literal 0 HcmV?d00001 diff --git a/datas/icons-48/zip_unmount.png b/datas/icons-48/zip_unmount.png new file mode 100755 index 0000000000000000000000000000000000000000..180c858c2c72186f283be10ce0255418a161afbb GIT binary patch literal 4386 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 t1N-6kD_ra62MgurK^?gcLFXa>&rGkx&Q7~A /dev/null` +XSETROOT=`which xsetroot 2> /dev/null` + +userresources=$HOME/.Xdefaults +sysresources=/usr/X11R6/lib/X11/xinit/.Xresources + +if [ -f $sysresources ]; then + xrdb -merge $sysresources +fi + +if [ -f $userresources ]; then + xrdb -merge $userresources +fi + +PATH=$PATH:$PREFIX:$PREFIX/bin +export PATH + +if [ -x $HOME/.ede ]; then + echo "EDE home dir exists, ok." +else + echo "Default EDE home dir for user $HOME does not exist. Creating one..." + cp -R $PREFIX/share/ede/.ede $HOME +fi + +# If we have xsetroot than script shoult run it +if [ "$XSETROOT" ]; then + $XSETROOT -solid black +fi + +# Test if XScreenSaver is somewhere in PATH, if not - don't start it +if [ "$XSSAVER" ]; then + xscreensaver -nosplash & +fi + + exec edewm & + exec eiconman & + etip & + exec eworkpanel diff --git a/datas/wmanager.conf b/datas/wmanager.conf new file mode 100755 index 0000000..829da06 --- /dev/null +++ b/datas/wmanager.conf @@ -0,0 +1,32 @@ +# EFLTK Configuration - Version 2,000300 + +[TitleBar] + Active color=RGB(0,0,128) + Active color text=RGB(255,255,255) + Normal color=RGB(0,0,117) + Normal color text=RGB(192,192,192) + Draw gradient=1 + +[Resize] + Opaque resize=0 + Animate=1 + Animate Speed=20 + + + [Hotkeys] + NextWindow=Alt+Tab + PreviousWindow=Alt+Shift+Tab + Desktop1=Alt+F1 + Desktop2=Alt+F2 + Desktop3=Alt+F3 + Desktop4=Alt+F4 + Desktop5=Alt+F5 + Desktop6=Alt+F6 + Desktop7=Alt+F7 + Desktop8=Alt+F8 + NextDesktop=Alt+Ctrl+Right + PreviousDesktop=Alt+Ctrl+Left + FindFile=Ctrl+F3 + FastRun=Ctrl+F12 + CloseWindow=Ctrl+F4 + diff --git a/docs/ede/Makefile b/docs/ede/Makefile new file mode 100755 index 0000000..1c63a5b --- /dev/null +++ b/docs/ede/Makefile @@ -0,0 +1,26 @@ +include ../../makeinclude + +Data = ede-small.gif\ + index.html\ + authors.html\ + changelog.html\ + copying.html\ + help.html\ + logoinvert100.png\ + getede.png\ + ede.png\ + style.css + +DIR = $(datadir)/ede/doc + +install: + echo "Installing docs"; + $(MKINSTALLDIRS) $(DIR) + for f in $(Data); do\ + $(INSTALL_DATA) $$f $(DIR);\ + done + +uninstall: + $(RM) -r $(DIR) + +clean: diff --git a/docs/ede/authors.html b/docs/ede/authors.html new file mode 100755 index 0000000..b2161a5 --- /dev/null +++ b/docs/ede/authors.html @@ -0,0 +1,70 @@ + + + + + + Equinox Desktop Environment 1.0.2 Help + + + +

+ + + + +
Equinox Desktop Environment
+ v1.0.2 +
+ + + + + + + +
+
+ Contents:
+
  • Welcome to EDE
  • +
  • What's new
  • +
  • Credits
  • +
  • Copyright
  • +
  • Help wanted!
  • +
    +
      +

     

    + +

    EDE Authors

    + + + +EDE 1.0 team:
    +Martin Pekar (original author)
    +Mikko Lahtenaaki (efltk author)
    +Dejan Leki (fixes and improvements)
    +Alexey Parshin (improvements to efltk)
    +
    +Current developers:
    +Sanel Zukan
    +Vedran Ljubovi
    +
    +Translations:
    +Bambang Purnomosidi D. P.
    +Mihail Zaripov
    +
    +EDE is based on the Fast Light Toolkit (FLTK) by +Bill Spitzak and others.
    +
    +For questions, bugs, etc. please mail ONLY current developers.
    +
    +We would like to thank everyone that contributed to this excellent project and to appologize if we left anyone out.
    + +

    +

     

    +

    Copyright (c) 2000-2005. EDE Authors

    +
    + +
     
    + + + diff --git a/docs/ede/changelog.html b/docs/ede/changelog.html new file mode 100755 index 0000000..17a0e15 --- /dev/null +++ b/docs/ede/changelog.html @@ -0,0 +1,197 @@ + + + + + + Equinox Desktop Environment 1.0.2 Help + + + +
    + + + + +
    Equinox Desktop Environment
    + v1.0.2 +
    + + + + + + + +
    +
    + Contents:
    +
  • Welcome to EDE
  • +
  • What's new
  • +
  • Credits
  • +
  • Copyright
  • +
  • Help wanted!
  • +
    +
      +

     

    + +

    Changes between EDE versions

    + (Note: There weren't much more changes in 1.0.2 when compared to + earlier versions, it's just that more stuff is being reported.)


    + + +1.0.2
    +* new build system
    +* netscape and opera replaced with mozilla everywhere
    +* startede:
    +- fix: xscreensaver wasn't started
    +* edewm:
    +- fixed artefacts on window's borders when window is resized
    +- dialog windows should now act as dialog windows (no resizing or + animation of resizing)
    +- dialogs have same titlebar height as other windows
    +- don't show minimize button in titlebar for dialogs
    +- better checks is window resizable
    +- several fixes into Set Size widget
    +- fix bug with titlebar buttons difficult to click
    +- configurable keyboard shortcuts
    +* eworkpanel:
    +- make applets and menu title configurable
    +- new panel applet - Show Desktop
    +- tooltips are showed without clicking on panel itself
    +- fixed crash with network monitor
    +- fix bug: panel doesn't autohide when a menu is open
    +- much improvements to logout applet
    +- allow workspace names to be localized
    +- fix wrong icon filenames in main menu
    +- a better icon for submenus in the main menu
    +* taskbar applet:
    +- fix a bug where window will minimize instead of coming to front
    +- draw active taskbar button in lighter color
    +* eiconman:
    +- fix locale related problems in icon properties
    +* elauncher:
    +- new program and url launching framework
    +* evolume:
    +- add volume control applet to standard distribution
    +- replaced evolume icon in panel
    +* emenueditor:
    +- fix: invisible entries created with some locales
    +* keyboard chooser applet:
    +- get list of keymaps from X, instead of hardcoded
    +- display descriptive names
    +- don't show everything at once
    +- keep a list of recently used keyboards
    +* ewmconf:
    +- fix titlebar resizing to zero when changing theme
    +* ehelpbook:
    +- scrollbars are now visible
    +- removed (too much broken)
    +* etip:
    +- make etip modal
    +- don't always show the same tip
    +
    +
    +1.0.1.1
    +* fixed desktop crashing when choosing wallpaper (sometimes will chrash due + bug in efltk library)
    +* fixed logout icon showing
    +* fixed einstaller icon showing
    +* complitelly fixed and revised control panel
    +* etip strings revised
    +* fixed desktop links in makefile
    +
    +
    +1.0.1
    +* many unstabile programs from EDE package are removed, + so now only ede-core (old name) is provide as standard distribution
    +* small fixes with workpanel and run-dialog on it
    +* compiling and installation scripts improved
    +* added in configure script debug options
    +* fixed EDE's X exit, but on some distributions not work well (SuSE 8.1)
    +* fixed icons showing on Control Panel, ehelpbook, etc.
    +* fixed screensaver showing in preview window
    +* small menu decorations :)
    +* added in main distribution EFinder, and that will become standard part
    +* now you can with double click start programs from run-dialog on workpanel
    +* and many, many stability fixes
    +
    +
    +1.0beta
    +* nice EDE library complement what is in FLTK missing
    +* a lot of changes in ede-core (new icons and support for them thanks Edelib)
    +* fixed a lot of bugs
    +* new applications like epdfreader
    +* heavy changes in filemanager (basics works fine, archive viewing and extracting + works fine, archive creating ok, ftp works but still + a lot to do)
    +* locale support, still have to create some .po-s
    +* eprintconf, eprint utilities to manage printers (CUPS needed)
    +* huge amount of work
    +
    +
    +0.6
    +* erun separated - <Ctrl+F12> keybinding, cause alt+f12 use window manager
    +* efinder - works, basis implemented <Ctrl+F3> keybinding
    +* bugs fixes
    +* ede-exec script that support prefixes, see erun
    +* efstabedit works
    +* ecdplayer - cddb support(basic)
    +* window manager is based on icewm code
    +* new config utilities
    +* eiconmanager changes
    +* ehelpbook changes - it is useable with simple html, for help enought.
    +* configure scripts
    +
    +
    +0.5
    +* separated icon staff as eiconmanager
    +* new apps(still devel) - efilemanager, ehelpbook, efstabedit(init staff)
    +* design changes, icons - hopefully until 1.0 it will be stabilized ...
    +* font choosing...
    +* color changing somewhat buggy(not core dump of course) (It is bug in EDE or in latest fltk, something changed ... that is a question)
    +
    +
    +0.4
    +****************
    +* Cd player rewrite
    +* I add better icons because my draw skills are not very well, still need something but what
    +* window manager - design changes
    +* eworkpanel - design changes
    +* all apps new use dynamic linking, so you can use also theme plugins
    + ~~~~~~~
    +* you can use default X keyboard
    +* you can jpeg images on desktop (for now using xsetbg(xloadimage package))
    +* dialogs changes
    +* programs name change
    +
    +
    +0.3
    +****************
    +* panel shows tasks
    +* icons on desktop
    +* design changes
    +* begin from code reorganization
    +* color setting dialog - still todo
    +* icon on panel that run eqmixer, ...
    +
    +
    +0.2
    +***************
    +* better color settings, still not perfect, some small things
    +
    +
    +0.1
    +***************
    +* initial release
    +
    + + +

    +

     

    +

    Copyright (c) 2000-2005. EDE Authors

    +
    + +
     
    + + + diff --git a/docs/ede/copying.html b/docs/ede/copying.html new file mode 100755 index 0000000..e4e767f --- /dev/null +++ b/docs/ede/copying.html @@ -0,0 +1,200 @@ + + + + + + Equinox Desktop Environment 1.0.2 Help + + + +
    + + + + +
    Equinox Desktop Environment
    + v1.0.2 +
    + + + + + + + +
    +
    + Contents:
    +
  • Welcome to EDE
  • +
  • What's new
  • +
  • Credits
  • +
  • Copyright
  • +
  • Help wanted!
  • +
    +
      +

     

    + +

    Copying

    + +For your information, this page holds a copy of the GNU General Public License v2, +as copied from the site of the Free +Software Foundation (FSF). EDE is licensed under terms of GNU GPL version 2 or +newer, while eFLTK is licensed under GNU Lesser General Public License.
    +
    +Let it be emphasized that this copy is for your reference only. In case of +dispute, the text of license from FSF site is to be considered applicable. Should +the FSF decide to make modifications to GNU GPL, those modifications will apply to +EDE.
    + +

     

    +

    + + +GNU GENERAL PUBLIC LICENSE
    +
    +
    +
    +Version 2, June 1991
    +
    +Copyright (C) 1989, 1991 Free Software Foundation, Inc.
    +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    +
    +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed.
    +
    +
    +
    +Preamble
    +
    +
    +
    +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
    +
    +
    +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
    +
    +
    +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
    +
    +
    +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
    +
    +
    +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
    +
    +
    +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
    +
    +
    +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
    +
    +
    +The precise terms and conditions for copying, distribution and modification follow.
    +
    +
    +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +
    +
    +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
    +
    +
    +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
    +
    +
    +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
    +
    +
    +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
    +
    +
    +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
    +
    +
    +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
    +
    +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
    +
    +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
    +
    +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
    +
    +
    +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
    +
    +
    +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
    +
    +
    +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
    +
    +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    +
    +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    +
    +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
    +
    +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
    +
    +
    +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
    +
    +
    +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
    +
    +
    +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
    +
    +
    +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
    +
    +
    +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
    +
    +
    +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
    +
    +
    +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
    +
    +
    +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
    +
    +
    +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
    +
    +
    +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
    +
    +
    +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
    +
    +
    +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
    +
    +
    +NO WARRANTY
    +
    +
    +
    +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    +
    +
    +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    +
    +
    +
    +END OF TERMS AND CONDITIONS +
    + + + +

    +

     

    +

    Copyright (c) 2000-2005. EDE Authors

    +
    + +
     
    + + + diff --git a/docs/ede/ede-small.gif b/docs/ede/ede-small.gif new file mode 100755 index 0000000000000000000000000000000000000000..7b13336ad61c1eb2528895cea97396b582fa968d GIT binary patch literal 1806 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 Vz~lz84zB + + + + + Equinox Desktop Environment 1.0.2 Help + + + +
    + + + + +
    Equinox Desktop Environment
    + v1.0.2 +
    + + + + + + + +
    +
    + Contents:
    +
  • Welcome to EDE
  • +
  • What's new
  • +
  • Credits
  • +
  • Copyright
  • +
  • Help wanted!
  • +
    +
      +

     

    + +

    Help us make EDE better!

    + +If you like EDE, but there is this one thing that isn't just the way it should be +- why don't you go ahead and fix it? Apart from learning new things, this will give you an opportunity to buy yourself some public goodwill and also have a good feeling knowing that you helped both yourself and countless others.
    +
    +Here are some ways you can help EDE:
    +
    +1. Send patches
    +Of course, we will appreciate it the most if you get down into code and fix actual problems. EDE presently lacks developers, and we would like to delegate some work to others. Take a look at the present list of bugs, also the requested features.
    +
    +2. Write documentation
    +As you can see, this Help is woefully incomplete. We would like to have at least a separate help page for each of EDE components, describing its functions in a reader friendly way. Existing stuff could use some proofreading, as none of us is a native English speaker. Also, the internals of EDE (functions etc.) are poorly documented.
    +
    +3. Translate EDE
    +EDE is using GNU/gettext as its l10n framework. This means that you can use popular programs such as KBabel or PoEdit to translate EDE and thus make it easier to use to speakers of your language. There is also an EDE program named ETranslate for this purpose. Just contact us and we will send you the untranslated files.
    +
    +4. Design graphics for EDE
    +If you are a skilled designer, there are many aspects of EDE that could use redesign, such as EDE Homepage or this help. Also send us ideas for: icons, themes, window decorations, program designs, wallpapers.
    +
    +5. Talk to your friends
    +It is unusal how few people knows about EDE! The fact that there was a hiatus in development after release of 1.0 did no good to our reputation. Also, 1.0 wasn't exactly "release quality". A few people knows that EDE is themable, which leads them to believe that EDE is a Windows-clone, etc. All those myths can be dispelled by pointing out the facts in a friendly and relaxed way :) EDE has many advantages, such as speed, simplicity, and not trying to reinvent the wheel when it comes to the interface (something that geeks dislike, but plain users appreciate very much).
    +
    +
    +If you have anything to show to us, just drop us a mail. We like to chat with EDE users! + +

    +

     

    +

    Copyright (c) 2000-2005. EDE Authors

    +
    + +
     
    + + + diff --git a/docs/ede/index.html b/docs/ede/index.html new file mode 100755 index 0000000..a3af180 --- /dev/null +++ b/docs/ede/index.html @@ -0,0 +1,100 @@ + + + + + + Equinox Desktop Environment 1.0.3 Help + + + +
    + + + + +
    Equinox Desktop Environment
    + v1.0.3 +
    + + + + + + + +
    +
    + Contents:
    +
  • Welcome to EDE
  • +     - Getting help
    +     - Get EDE!
    +
  • What's new
  • +
  • Credits
  • +
  • Copyright
  • +
  • Help wanted!
  • +
    +
      +

     

    +
    + Welcome to
    + +
    + +Equinox Desktop Environment is a small and powerfull graphical environment for X Window System. It is built on eFLTK (extended FLTK), heavily +modified FLTK 2.0 library. Comparing to other desktop environments, Equinox is very fast (even on slow machines) +and has a low memory footprint. EDE is not just a window manager! It provides things like multiple desktops, nice workpanel, wallpapers, theming support, icons, front end for your usual tasks. Also +there is Xft (font anti-aliasing) support and various GUI effects.
    +
    +Components of the EDE package are:
    +- edewm: a ICCCM-compliant window manager
    +- eiconman: the "desktop"
    +- eworkpanel: containing taskbar, main menu, clock and many other applets
    +- econtrol: a desktop control panel with several useful applets
    +- einstaller: program (package) installer
    +- efinder: file search program
    +- emenueditor, etimedate etc.
    +Other programs for EDE are under development, such as file manager, multimedia, internet tools, games etc.

    +Tune in to EDE, because it is becoming better every day.
    +
    + +

    Getting help

    +If you require further assistance, we advise you to visit:
    +-
    The EDE Homepage
    +- EDE project page at SourceForge.net
    +
    +The latter web site also contains forums, bug report tool and mailing lists. + +
    + +

    Get EDE!

    + EDE is improved daily! So if you have problems, it is very possible that they are already fixed. To get the latest EDE version,
    visit our homepage.
    +
    +You can get EDE from:
    +- distribution-agnostic binary packages (RPM) - it should be possible to install these packages on any distribution produced since January 1st, 2001.; on non-RPM distributions you can install the rpm software or use a tool called "alien"
    +- distribution-specific binary packages - contain optimizations for a specific Linux distribution
    +- source code packages (tar.gz) - you should be able to compile them on any *nix system, including FreeBSD and Solaris; just unpack and use commands ./configure; make; make install
    +- anonymous CVS access - use the following commands to download the latest development version of EDE from our CVS server:
    +
      cvs -z3 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/ede login
      +Password: <just press enter>
      +cvs -z3 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/ede co efltk
      +cvs -z3 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/ede co ede
    +After these commands compile first efltk then ede. Use "autoconf" to produce the configure script, then proceed as usual.
    +
    +When you are updating EDE be sure to use the matching version of eFLTK! eFLTK is developing together with EDE, also many bugs are really caused by eFLTK problems, so it is critical that you update eFLTK together with EDE or you might have errors and other problems.

    + + +
      Find out more about:
    + + +

    +

     

    +

    Copyright (c) 2000-2005. EDE Authors

    +
    + +
     
    + + + diff --git a/docs/ede/logoinvert100.png b/docs/ede/logoinvert100.png new file mode 100755 index 0000000000000000000000000000000000000000..4325992c579b3e0f3e0e8e7238c803461ce476cc GIT binary patch literal 2294 zcmV);fR8=hOL|KA)Mr+I#J_7xVu9^{n?@zH2?t`@GNdt}PWGA8&4M4gm>LLqmhK znVA`#P6sRm3PBJOpnzTg7Jvm{0aySQfCU6#0ayT*#3e1zVrqsP5}!ZkLHKN6Wp1b~ zDl86{mzq^Q=V8&;{8b<<;D#V(0aySQfCXRy0a%zOrDBqtEM?UeE7ceXLmqA3fsXLEQJ^<6ooEjeY+ z-VU<p7*Mr|6KYsue`NyV0_NPTBJEI zEqbeyjlPKEI9lsDTI(^6z(tkqvH!YX-PAp&0z8#M_Sv?oAv;)fQvZ9rWRmMT!^$iE zr@wQjsVUA8Sc^30<)`dTi{3hao;>y*K_(sg!iIS>c%P>wMVd6bVR_JvpXG))TIq@P z?zL#j7h<+Qz8YYn|H*8HwSLvojJTbO@>F~txP|e;$JYYI{b0lbOJ7GlkKwH#N5wOm z$jef0|F{Rk$cP85g$q=28Q!?PQy=ik{c+Fn07ogQ*^oNW<|~$6^wrllC@t;Z&1R?aB6~50-f~4N-*g=Qr07pW*p*Bs~ciU=$Y~n19wAED=(1(tzKkVAJ z;ZywF@Z=#UB?TFYW9sN0I?5=yUf6`j4Jp#3uf1$T_u6ToBa02JmCOI~rJID$T28aM zS8^M|lMBWtX3*H%uU?uM>S|`Fg=>H(k))yy*h`ZoSsJ_lq~qIDg|#g`C{x+^!<%-y zm`Z)*!ifPa6Map$bw-lHG(0vPopLWFvx*O+TK@cZT1ENMH8qrkmex2l^3hYS))%GN?R?bufR#X{C&`-fON4qvT6 zw@Jbt*3=BQqkG6eS3`(vIb8m?rwUJ9sYGL}tF89K;f>p!OhhbE2u%u`nAQAipAfKa z6g7t=VY@5^@b-ElvY1S(|_4$Ymgl7 zx=fcwge3?ASdW-!WBfFmn{er2?790KE?=Orj+W{XU;F)ASCYin2*e-Oi`PS}N%kLi zD_|HYt?uwU{`1Q>BLW8`lSx6lts{KxHB=QKA_)Un1H+SyYgOO*tp7cOcS93@KX&uZ zgH|-7S()l2hPqgr>JV^iflX4HoL=d_(`ug5hl$S&n|C&|DkimT3`NI9O+`K?Xv2XW zYe*z<`CVgMujFA3j!rVJ{SxW-e?O*C)%a>(RCYUxf&rC6c3Wq}II{VpPEZP=2eqAq zs5+d^_$6SM^>3^D$oTYEad)zcn`YQNfft%C(~1w-gu{WM-?AJ+z#1HxJeye+;bWhg zReh9Eg62H7oD3yCWRtgtB|fKaMp-k2aKrbJ>taq_SI;mS<1G%$lfqpWYpLQEo}V;# zqj}SDf;BQeJu*Hm(9CcNEjHNMgKmsx`h+0R>5NB&SPfB1L5}LTWA%x^4LF|*gdnKq zX?I~|`>cWGYG)W5>?BG8f8uIkIKG+JFkkm&Ym|~0L{v~kM;bC3p z+C8ZUPTXQmV)id}_6)lRUiJt|Z|i&~zB`vp`+jPMdoJtArJOpKwT7M!#x83O)l`IO zbMbg^L1kM`*|UG=HSl3r+_x>svkn|CKc}oEr>uoaAv@XVf9|}((OM7Xm%LStuX0LT z&flsX#cR=k2y!rl!{y(3(0b=VtD-zrUXH3wQ#M>eQ&W-u;PZ#_Cof4H02Y7+U;znE9mph-g^~802Z83KoM2c= z3Nm$BhrnwE+z`M5umCIo3%~*bumCIo3%~-f=I}label(fltk::Font::current_name()); + id_box->redraw(); + fltk::setcolor(fltk::BLACK); + char buffer[32]; + for (int Y = 1; Y < 8; Y++) { + for (int X = 0; X < 32; X++) buffer[X] = (32*Y+X); + fltk::drawtext(buffer, 32, 3, 3+(size+leading())*Y); + } + fltk::set_encoding(saved_encoding); + fltk::pop_clip(); +} + + + +// other variables + +static FontDisplay *textobj; + +static fltk::Browser *fontobj, *sizeobj, *encobj; + +static fltk::Font** all_fonts; // list returned by fltk +static int numfonts=0; + +static fltk::Group *button_group; +static fltk::CheckButton* bold_button, *italic_button; +static fltk::Button *ok_button, *cancel_button; + +bool return_value = false; + + + +// callback functions + + +// callback for list of fonts + +void font_cb(fltk::Widget *, long) +{ + int fn = fontobj->value(); +//DEBUG +//printf("font: %d name: %s bigname: %s\n", fn, fonts[fn]->name(), fonts[fn]->system_name()); + fltk::Font* f = all_fonts[fn]; + + // are bold and italic available? + if (f->bold() == f) + bold_button->deactivate(); + else + bold_button->activate(); + if (f->italic() == f) + italic_button->deactivate(); + else + italic_button->activate(); + if (bold_button->value()) f = f->bold(); + if (italic_button->value()) f = f->italic(); + + textobj->font = f; + + // Populate the encobj (browser for font encodings) + char saved[30]; + if (textobj->encoding) + strncpy(saved, textobj->encoding, 29); + else + saved[0] = 0; + encobj->clear(); + + const char** encodings; + int ne = f->encodings(encodings); + int picked = -1; + int iso8859 = 0; + + // On XFT encoding is always Unicode, so encodings() will return 0 + if (ne==0) + { + encobj->add("Unicode"); + encobj->deselect(); + encobj->deactivate(); + textobj->encoding=0; + } + else + { + encobj->activate(); + for (int i = 0; i < ne; i++) { + encobj->add(encodings[i]); + if (!strcmp(encodings[i], saved)) picked = i; + if (!strcmp(encodings[i], fltk::get_encoding())) iso8859 = i; + } + if (picked < 0) picked = iso8859; + textobj->encoding = encodings[picked]; + encobj->value(picked); + } + + // Populate the sizeobj (browser for font sizes) + int pickedsize; + if (sizeobj->value() > 0) { + pickedsize = atoi(sizeobj->child(sizeobj->value())->label()); + } else { + pickedsize = 14; + } + sizeobj->clear(); + + int *s; + int n = f->sizes(s); + if(!n) { + // no sizes (this only happens on X) + for (int i = 1; iadd(buf); + } + sizeobj->value((int)fltk::getsize()-1); //pickedsize + textobj->size = (int)fltk::getsize(); + + // fl_font(f, pickedsize); lets fix this... + } else if (s[0] == 0) { + // many sizes; + int j = 1; + for (int i = 1; iadd(buf); + if (j < n && i==s[j]) { + w->labelfont(w->labelfont()->bold()); + w->labelcolor(fltk::RED); + j++; + } + //if (j < n && i==s[j]) {sprintf(buf,"@b;%d",i); j++;} + } + sizeobj->value(pickedsize-1); + textobj->size = pickedsize; + } else { + // some sizes -- when is this used? + int w = 0; + for (int i = 0; i < n; i++) { + if (s[i]<=pickedsize) w = i; + char buf[20]; + sprintf(buf,"%d",s[i]); + fltk::Widget *w = sizeobj->add(buf); + w->labelfont(w->labelfont()->bold()); + //sprintf(buf,"@b;%d",s[i]); + } + sizeobj->value(w); + textobj->size = s[w]; + } + + encobj->redraw(); + sizeobj->redraw(); + textobj->redraw(); +// encobj->relayout(); +// sizeobj->relayout(); +// textobj->relayout(); + +// id_box->label(textobj->font->system_name()); +// id_box->redraw(); + button_group->redraw(); // needed? +} + +void encoding_cb(fltk::Widget *, long) { + if (encobj->children() < 2) return; // XFT + int i = encobj->value(); +// textobj->encoding = encobj->text(i); + textobj->encoding = encobj->child(i)->label(); + textobj->redraw(); + id_box->redraw(); +} + +void size_cb(fltk::Widget *, long) { + int i = sizeobj->value(); + //const char *c = sizeobj->text(i); + const char *c = sizeobj->child(i)->label(); + while (*c < '0' || *c > '9') c++; + textobj->size = atoi(c); + textobj->redraw(); +// id_box->redraw(); +} + +void return_cb(fltk::Widget *, long ret) { + return_value = ret; + form->hide(); +} + + +// TODO: rewrite this in fluid... +void create_the_forms() +{ + if(form) return; + form = new fltk::Window(550, 420, _("Select font...")); + form->set_double_buffer(); + form->begin(); + + textobj = new FontDisplay(fltk::ENGRAVED_BOX,10,10,530,160); + textobj->clear_flag(fltk::ALIGN_MASK); + textobj->set_flag(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP); + id_box = new fltk::Widget(10, 172, 530, 15); + id_box->box(fltk::ENGRAVED_BOX); + id_box->labelsize(10); + id_box->set_flag(fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP); + button_group = new fltk::Group(10, 190, 140, 20); + button_group->begin(); + bold_button = new fltk::CheckButton(0, 0, 70, 20, "Bold"); + bold_button->labelfont(bold_button->labelfont()->bold()); + bold_button->callback(font_cb, 1); + italic_button = new fltk::CheckButton(70, 0, 70, 20, "Italic"); + italic_button->labelfont(italic_button->labelfont()->italic()); + italic_button->callback(font_cb, 1); + button_group->end(); + fontobj = new fltk::Browser(10, 210, 280, 170); + fontobj->when(fltk::WHEN_CHANGED); + fontobj->callback(font_cb); + form->resizable(fontobj); + encobj = new fltk::Browser(300, 210, 100, 170); + encobj->when(fltk::WHEN_CHANGED); + encobj->callback(encoding_cb, 1); + sizeobj = new fltk::Browser(410, 210, 130, 170); + sizeobj->when(fltk::WHEN_CHANGED); + sizeobj->callback(size_cb); + + ok_button = new fltk::Button(380, 390, 80, 25, _("&OK")); + ok_button->callback(return_cb, 1); + + cancel_button = new fltk::Button(465, 390, 80, 25, _("&Cancel")); + cancel_button->callback(return_cb, 0); + + form->end(); +} + + +// search for largest <= selected size: +int find_best_size(fltk::Font* font, int selected) +{ + int *allsizes; + int numsizes = font->sizes(allsizes); + +// This is a bug in efltk + if (numsizes <= 1) return selected; + + for (int i=1; i selected) + return allsizes[i-1]; + } + + return allsizes[numsizes-1]; +} + + +EDEFont font_chooser(EDEFont current_font) +{ + EDEFont return_font; + create_the_forms(); + if(!numfonts) numfonts = fltk::list_fonts(all_fonts); + + // populate list of fonts + fontobj->clear(); + for(int i = 0; i < numfonts; i++) { + fontobj->add(all_fonts[i]->name()); + if (current_font.font && (strcasecmp(current_font.font->name(),all_fonts[i]->name())==0)) + // it's a substring + fontobj->value(i); + } + /*char* currentname = strdup(current_font.font->name()); + fsor(int i = 0; i < numfonts; i++) { + char* fontname = strdup(all_fonts[i]->name()); + fontobj->add(fontname); + if (currentname.lower_case().pos(fontname.lower_case())==0) // it's a substring + fontobj->value(i); + }*/ + + // set bold, italic + /*if (currentname.pos(" bold italic") == currentname.length()-12) { + bold_button->value(true); + italic_button->value(true); + } else if (currentname.pos(" italic") == currentname.length()-7) { + italic_button->value(true); + } else if (currentname.pos(" bold") == currentname.length()-5) { + bold_button->value(true); + }*/ + + // populate other lists + textobj->encoding = current_font.encoding; // TODO: what if we're using XFT? + font_cb(fontobj,0); + for (int i=0; i < sizeobj->children(); i++) { + if (atoi(sizeobj->child(i)->label()) == current_font.size) { + sizeobj->value(i); + size_cb(sizeobj,0); + } + } + + // + form->show(); + form->exec(); + + // we have to construct a proper EDEFont to return + return_font.defined = false; + if (return_value) + { + return_font.font = fltk::font(fontobj->child(fontobj->value())->label()); //Style.h + if (bold_button->value()) return_font.font = return_font.font->bold(); + if (italic_button->value()) return_font.font = return_font.font->italic(); + + int size = atoi(sizeobj->child(sizeobj->value())->label()); + return_font.size = find_best_size(return_font.font, size); + + // on XFT encoding is always Unicode, so this field can be blank + if (encobj->children() > 1) + return_font.encoding = strdup(encobj->child(encobj->value())->label()); + else + return_font.encoding = 0; + + return_font.defined = true; + } + return return_font; +} + +// +// End of "$Id: efontdialog.cpp,v 1.3 2005/03/20 15:53:58 vljubovic Exp $". +// diff --git a/ecolorconf/EDE_FontChooser.h b/ecolorconf/EDE_FontChooser.h new file mode 100644 index 0000000..5e95019 --- /dev/null +++ b/ecolorconf/EDE_FontChooser.h @@ -0,0 +1,51 @@ +/* + * $Id$ + * + * Font chooser widget + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * Based on: + * Font demo program for the Fast Light Tool Kit (FLTK). + * Copyright 1998-2006 by Bill Spitzak and others. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef _EDE_FONTCHOOSER_H_ +#define _EDE_FONTCHOOSER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include */ + +#include "ecolorutils.h" + +EDEFont font_chooser(EDEFont); + + +#endif diff --git a/ecolorconf/Makefile b/ecolorconf/Makefile new file mode 100755 index 0000000..4415b4d --- /dev/null +++ b/ecolorconf/Makefile @@ -0,0 +1,21 @@ + +CPPFILES = ecolorconf.cpp ecolorutils.cpp EDE_FontChooser.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp ../edelib2/Run.cpp ../edelib2/process.cpp ../edelib2/pty.cpp +TARGET = ecolorconf + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o diff --git a/ecolorconf/ecolorconf.cpp b/ecolorconf/ecolorconf.cpp new file mode 100755 index 0000000..45abe24 --- /dev/null +++ b/ecolorconf/ecolorconf.cpp @@ -0,0 +1,308 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#include "ecolorconf.h" +/* + * $Id$ + * + * Colors and fonts settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include "../edeconf.h" +#include +#include "ecolorutils.h" + +fltk::Window *windowColorSettings=(fltk::Window *)0; + +static void cb_windowColorSettings(fltk::Window*, void*) { + exit(0); +} + +fltk::Button *colorBox=(fltk::Button *)0; + +fltk::Button *labelColorBox=(fltk::Button *)0; + +fltk::Button *selectionColorBox=(fltk::Button *)0; + +fltk::Button *selectionTextColorBox=(fltk::Button *)0; + +fltk::Button *highlightColorBox=(fltk::Button *)0; + +fltk::Button *highlightLabelColorBox=(fltk::Button *)0; + +fltk::Button *textColorBox=(fltk::Button *)0; + +fltk::Button *backgroundBox=(fltk::Button *)0; + +fltk::Button *textBackgroundBox=(fltk::Button *)0; + +fltk::Button *tooltipBox=(fltk::Button *)0; + +fltk::Button *tooltipTextColorButton=(fltk::Button *)0; + +fltk::CheckButton *tooltipsEnableEffects=(fltk::CheckButton *)0; + +fltk::CheckButton *tooltipsEnable=(fltk::CheckButton *)0; + +fltk::Choice *tooltipsEffectType=(fltk::Choice *)0; + +fltk::ValueInput *tooltipsDelay=(fltk::ValueInput *)0; + +fltk::Button *setLabelFont=(fltk::Button *)0; + +static void cb_setLabelFont(fltk::Button*, void*) { + labelfont_cb(); +} + +fltk::Button *setTextFont=(fltk::Button *)0; + +static void cb_setTextFont(fltk::Button*, void*) { + textfont_cb(); +} + +fltk::InvisibleBox *labelFontInput=(fltk::InvisibleBox *)0; + +fltk::InvisibleBox *textFontInput=(fltk::InvisibleBox *)0; + +fltk::CheckButton *menusEnableEffects=(fltk::CheckButton *)0; + +fltk::CheckButton *menusEnableSubwindowEffects=(fltk::CheckButton *)0; + +fltk::Choice *menusEffectType=(fltk::Choice *)0; + +fltk::ValueInput *menusSpeed=(fltk::ValueInput *)0; + +fltk::ValueInput *menusDelay=(fltk::ValueInput *)0; + +fltk::CheckButton *mdiAnimation=(fltk::CheckButton *)0; + +fltk::CheckButton *mdiOpaqueAnimation=(fltk::CheckButton *)0; + +fltk::CheckButton *imagesStateEffect=(fltk::CheckButton *)0; + +static void cb_Save(fltk::Button*, void*) { + saveSchemeAs(); +} + +fltk::CheckButton *allApplyRadioButton=(fltk::CheckButton *)0; + +fltk::InputBrowser *schemeListBox=(fltk::InputBrowser *)0; + +static void cb_schemeListBox(fltk::InputBrowser*, void*) { + getSchemeColors(); +} + +static void cb_OK(fltk::Button*, void*) { + //windowColorSettings->hide(); + saveActiveScheme(); + applyColors(); + saveEfltkConfig(); + exit(0); +} + +static void cb_Apply(fltk::Button*, void*) { + saveActiveScheme(); + applyColors(); + saveEfltkConfig(); +} + +static void cb_Cancel(fltk::Button*, void*) { + exit(0); +} + +#include + +int main (int argc, char **argv) { + + fltk::Window* w; + //fl_init_locale_support("ecolorconf", PREFIX"/share/locale"); + {fltk::Window* o = windowColorSettings = new fltk::Window(330, 360, "Colors and fonts settings"); + w = o; + o->set_vertical(); + o->callback((fltk::Callback*)cb_windowColorSettings); + o->begin(); + {fltk::TabGroup* o = new fltk::TabGroup(5, 5, 318, 200); + o->color((fltk::Color)0xfffffffe); + o->begin(); + {fltk::Group* o = new fltk::Group(0, 25, 318, 175, "Default colors"); + o->begin(); + {fltk::Button* o = colorBox = new fltk::Button(90, 30, 65, 20, "Widgets"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = labelColorBox = new fltk::Button(15, 75, 65, 20, "Label"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = selectionColorBox = new fltk::Button(240, 120, 65, 20, "Sel. back."); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = selectionTextColorBox = new fltk::Button(165, 120, 65, 20, "Selection"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = highlightColorBox = new fltk::Button(165, 30, 65, 20, "Highlight"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = highlightLabelColorBox = new fltk::Button(165, 75, 65, 20, "Highlight"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = textColorBox = new fltk::Button(15, 120, 65, 20, "Text"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = backgroundBox = new fltk::Button(15, 30, 65, 20, "Background"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Button* o = textBackgroundBox = new fltk::Button(90, 120, 65, 20, "Background"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + o->end(); + } + {fltk::Group* o = new fltk::Group(0, 26, 318, 169, "Tooltips"); + o->hide(); + o->begin(); + {fltk::Button* o = tooltipBox = new fltk::Button(156, 44, 65, 20, "Tooltip color"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + {fltk::Button* o = tooltipTextColorButton = new fltk::Button(236, 44, 65, 20, "Tooltip text color"); + o->buttonbox(fltk::DOWN_BOX); + o->callback((fltk::Callback*)ChangeBoxColor); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + tooltipsEnableEffects = new fltk::CheckButton(10, 39, 145, 25, "Enable effects"); + tooltipsEnable = new fltk::CheckButton(10, 14, 145, 25, "Enabled"); + {fltk::Choice* o = tooltipsEffectType = new fltk::Choice(75, 80, 115, 23, "Effect type:"); + o->align(fltk::ALIGN_CENTER); + o->begin(); + new fltk::Item("None"); + new fltk::Item("Animation"); + new fltk::Item("Fading"); + o->end(); + } + tooltipsDelay = new fltk::ValueInput(75, 119, 50, 25, "Delay:"); + o->end(); + } + {fltk::Group* o = new fltk::Group(0, 26, 318, 169, "Fonts"); + o->hide(); + o->begin(); + {fltk::Button* o = setLabelFont = new fltk::Button(275, 14, 30, 25, "..."); + o->callback((fltk::Callback*)cb_setLabelFont); + } + {fltk::Button* o = setTextFont = new fltk::Button(275, 49, 30, 25, "..."); + o->callback((fltk::Callback*)cb_setTextFont); + } + {fltk::InvisibleBox* o = labelFontInput = new fltk::InvisibleBox(75, 14, 190, 25, "label"); + o->box(fltk::DOWN_BOX); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE); + } + {fltk::InvisibleBox* o = textFontInput = new fltk::InvisibleBox(75, 50, 190, 24, "label"); + o->box(fltk::DOWN_BOX); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(15, 14, 65, 25, "Label font:"); + o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(15, 49, 65, 25, "Text font:"); + o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE); + } + o->end(); + o->label(_(o->label())); + } + {fltk::Group* o = new fltk::Group(0, 26, 318, 174, "Menus"); + o->hide(); + o->begin(); + menusEnableEffects = new fltk::CheckButton(10, 14, 305, 25, "Enable effects"); + menusEnableSubwindowEffects = new fltk::CheckButton(10, 39, 305, 25, "Enable subwindow effects"); + {fltk::Choice* o = menusEffectType = new fltk::Choice(75, 80, 115, 23, "Effect type:"); + o->align(fltk::ALIGN_CENTER); + o->begin(); + new fltk::Item("None"); + new fltk::Item("Animation"); + new fltk::Item("Fading"); + o->end(); + } + menusSpeed = new fltk::ValueInput(75, 119, 45, 25, "Speed:"); + menusDelay = new fltk::ValueInput(211, 119, 50, 25, "Delay:"); + o->end(); + } + {fltk::Group* o = new fltk::Group(0, 26, 318, 174, "Others"); + o->hide(); + o->begin(); + mdiAnimation = new fltk::CheckButton(11, 14, 300, 25, "Enable MDI animation"); + mdiOpaqueAnimation = new fltk::CheckButton(11, 44, 300, 25, "MDI opaque animation"); + imagesStateEffect = new fltk::CheckButton(11, 74, 300, 25, "Enable images state effect"); + o->end(); + } + o->end(); + } + {fltk::Group* o = new fltk::Group(3, 210, 320, 110); + o->box(fltk::DOWN_BOX); + o->begin(); + {fltk::Button* o = new fltk::Button(194, 25, 80, 25, "&Save as..."); + o->callback((fltk::Callback*)cb_Save); + } + {fltk::CheckButton* o = allApplyRadioButton = new fltk::CheckButton(6, 65, 299, 25, "Ap&ply colors to all programs"); + o->when(fltk::WHEN_CHANGED); + } + {fltk::InputBrowser* o = schemeListBox = new fltk::InputBrowser(9, 27, 175, 23, "Schemes:"); + o->callback((fltk::Callback*)cb_schemeListBox); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->when(fltk::WHEN_CHANGED); + o->type(1); + o->begin(); + fillItems(); + o->end(); + } + o->end(); + } + {fltk::Button* o = new fltk::Button(75, 328, 80, 25, "&OK"); + o->callback((fltk::Callback*)cb_OK); + } + {fltk::Button* o = new fltk::Button(160, 328, 80, 25, "&Apply"); + o->callback((fltk::Callback*)cb_Apply); + } + {fltk::Button* o = new fltk::Button(245, 328, 80, 25, "&Cancel"); + o->callback((fltk::Callback*)cb_Cancel); + } + o->end(); + o->resizable(o); + } + //updateFontAll(); + loadEfltkConfig(); + w->show(argc, argv); + return fltk::run(); +} + +void ChangeBoxColor(fltk::Button *box, void *) { + //Fl_Button *colorBox = box; + fltk::Color oldColor = box->color(); + fltk::Color defColor = oldColor; + fltk::color_chooser(_("Choose color"), defColor); + if (defColor != oldColor) + { + box->color(defColor); + box->highlight_color(defColor); + box->redraw(); + } +} diff --git a/ecolorconf/ecolorconf.fl b/ecolorconf/ecolorconf.fl new file mode 100755 index 0000000..60550bb --- /dev/null +++ b/ecolorconf/ecolorconf.fl @@ -0,0 +1,276 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {/* + * $Id$ + * + * Colors and fonts settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {} + +decl {\#include "../edeconf.h"} {} + +decl {\#include } {} + +decl {\#include "ecolorutils.h"} {} + +Function {} {open +} { + code {//fl_init_locale_support("ecolorconf", PREFIX"/share/locale");} {} + {fltk::Window} windowColorSettings { + label {Colors and fonts settings} + callback {exit(0);} open + xywh {507 139 330 360} resizable visible + } { + {fltk::TabGroup} {} {open + private xywh {5 5 318 200} color 0xfffffffe + } { + {fltk::Group} {} { + label {Default colors} open + xywh {0 25 318 175} + } { + {fltk::Button} colorBox { + label Widgets + callback ChangeBoxColor + xywh {90 30 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} labelColorBox { + label Label + callback ChangeBoxColor + xywh {15 75 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} selectionColorBox { + label {Sel. back.} + callback ChangeBoxColor + xywh {240 120 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} selectionTextColorBox { + label Selection + callback ChangeBoxColor + xywh {165 120 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} highlightColorBox { + label Highlight + callback ChangeBoxColor + xywh {165 30 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} highlightLabelColorBox { + label Highlight + callback ChangeBoxColor + xywh {165 75 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} textColorBox { + label Text + callback ChangeBoxColor + xywh {15 120 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} backgroundBox { + label Background + callback ChangeBoxColor + xywh {15 30 65 20} align 5 buttonbox DOWN_BOX + } + {fltk::Button} textBackgroundBox { + label Background + callback ChangeBoxColor + xywh {90 120 65 20} align 5 buttonbox DOWN_BOX + } + } + {fltk::Group} {} { + label Tooltips open + xywh {0 26 318 169} hide + } { + {fltk::Button} tooltipBox { + label {Tooltip color} + callback ChangeBoxColor + xywh {156 44 65 20} align 133 buttonbox DOWN_BOX + } + {fltk::Button} tooltipTextColorButton { + label {Tooltip text color} + callback ChangeBoxColor + xywh {236 44 65 20} align 133 buttonbox DOWN_BOX + } + {fltk::CheckButton} tooltipsEnableEffects { + label {Enable effects} + xywh {10 39 145 25} + } + {fltk::CheckButton} tooltipsEnable { + label Enabled + xywh {10 14 145 25} + } + {fltk::Choice} tooltipsEffectType { + label {Effect type:} open + xywh {75 80 115 23} align 0 + } { + {fltk::Item} {} { + label None + } + {fltk::Item} {} { + label Animation + } + {fltk::Item} {} { + label Fading + } + } + {fltk::ValueInput} tooltipsDelay { + label {Delay:} + xywh {75 119 50 25} + } + } + {fltk::Group} {} { + label Fonts open + xywh {0 26 318 169} hide + extra_code {o->label(_(o->label()));} + } { + {fltk::Button} setLabelFont { + label {...} + callback {labelfont_cb();} + xywh {275 14 30 25} + } + {fltk::Button} setTextFont { + label {...} + callback {textfont_cb();} + xywh {275 49 30 25} + } + {fltk::InvisibleBox} labelFontInput { + label label + xywh {75 14 190 25} align 36 box DOWN_BOX + } + {fltk::InvisibleBox} textFontInput { + label label + xywh {75 50 190 24} align 36 box DOWN_BOX + } + {fltk::InvisibleBox} {} { + label {Label font:} + xywh {15 14 65 25} align 40 + } + {fltk::InvisibleBox} {} { + label {Text font:} + xywh {15 49 65 25} align 40 + } + } + {fltk::Group} {} { + label Menus open + xywh {0 26 318 174} hide + } { + {fltk::CheckButton} menusEnableEffects { + label {Enable effects} + xywh {10 14 305 25} + } + {fltk::CheckButton} menusEnableSubwindowEffects { + label {Enable subwindow effects} + xywh {10 39 305 25} + } + {fltk::Choice} menusEffectType { + label {Effect type:} + xywh {75 80 115 23} align 0 + } { + {fltk::Item} {} { + label None + } + {fltk::Item} {} { + label Animation + } + {fltk::Item} {} { + label Fading + } + } + {fltk::ValueInput} menusSpeed { + label {Speed:} + xywh {75 119 45 25} + } + {fltk::ValueInput} menusDelay { + label {Delay:} + xywh {211 119 50 25} + } + } + {fltk::Group} {} { + label Others open + xywh {0 26 318 174} hide + } { + {fltk::CheckButton} mdiAnimation { + label {Enable MDI animation} + xywh {11 14 300 25} + } + {fltk::CheckButton} mdiOpaqueAnimation { + label {MDI opaque animation} + xywh {11 44 300 25} + } + {fltk::CheckButton} imagesStateEffect { + label {Enable images state effect} + xywh {11 74 300 25} + } + } + } + {fltk::Group} {} {open + xywh {3 210 320 110} box DOWN_BOX + } { + {fltk::Button} {} { + label {&Save as...} + callback {saveSchemeAs();} + private xywh {194 25 80 25} + } + {fltk::CheckButton} allApplyRadioButton { + label {Ap&ply colors to all programs} + xywh {6 65 299 25} when CHANGED + } + {fltk::Choice} schemeListBox { + label {Schemes:} + callback {getSchemeColors();} open selected + xywh {9 27 175 23} align 5 when CHANGED + extra_code {\#include +o->type(1); +o->begin(); +fillItems(); +o->end();} + class {fltk::InputBrowser} + } {} + } + {fltk::Button} {} { + label {&OK} + callback {//windowColorSettings->hide(); +saveActiveScheme(); +applyColors(); +saveEfltkConfig(); +exit(0);} + private xywh {75 328 80 25} + } + {fltk::Button} {} { + label {&Apply} + callback {saveActiveScheme(); +applyColors(); +saveEfltkConfig();} + private xywh {160 328 80 25} + } + {fltk::Button} {} { + label {&Cancel} + callback {exit(0);} + private xywh {245 328 80 25} + } + } + code {//updateFontAll(); +loadEfltkConfig();} {} +} + +Function {ChangeBoxColor(fltk::Button *box, void *)} {open return_type void +} { + code {//Fl_Button *colorBox = box; +fltk::Color oldColor = box->color(); +fltk::Color defColor = oldColor; +fltk::color_chooser(_("Choose color"), defColor); +if (defColor != oldColor) +{ + box->color(defColor); + box->highlight_color(defColor); + box->redraw(); +}} {} +} diff --git a/ecolorconf/ecolorconf.fld b/ecolorconf/ecolorconf.fld new file mode 100755 index 0000000..69ebf2d --- /dev/null +++ b/ecolorconf/ecolorconf.fld @@ -0,0 +1,275 @@ +# data file for the eFLTK User Interface Designer (eFLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// EControl applet for colors and fonts} {} + +decl {// Copyright (c) 2000. - 2005. EDE Authors} {} + +decl {// This program is licenced under terms of the} {} + +decl {// GNU General Public Licence version 2 or newer.} {} + +decl {// See COPYING for details} {} + +decl {//} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "ecolorutils.h"} {} + +Function {} {open +} { + code {fl_init_locale_support("ecolorconf", PREFIX"/share/locale");} {} + Fl_Window windowColorSettings { + label {Colors and fonts settings} + callback {exit(0);} open + xywh {507 139 330 360} resizable visible + } { + Fl_Tabs {} {open + private xywh {3 5 320 195} color 0xfffffffe + } { + Fl_Group {} { + label {Default colors} open + xywh {1 24 318 170} align FL_ALIGN_TOP|FL_ALIGN_LEFT hide + } { + Fl_Button colorBox { + label Widgets + callback ChangeBoxColor + xywh {91 31 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button labelColorBox { + label Label + callback ChangeBoxColor + xywh {16 76 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button selectionColorBox { + label {Sel. back.} + callback ChangeBoxColor + xywh {241 121 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button selectionTextColorBox { + label Selection + callback ChangeBoxColor + xywh {166 121 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button highlightColorBox { + label Highlight + callback ChangeBoxColor + xywh {166 31 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button highlightLabelColorBox { + label Highlight + callback ChangeBoxColor + xywh {166 76 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button textColorBox { + label Text + callback ChangeBoxColor + xywh {16 121 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button backgroundBox { + label Background + callback ChangeBoxColor + xywh {16 31 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button textBackgroundBox { + label Background + callback ChangeBoxColor + xywh {91 121 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + } + Fl_Group {} { + label Tooltips open + xywh {1 24 318 170} align FL_ALIGN_TOP|FL_ALIGN_LEFT hide + } { + Fl_Button tooltipBox { + label {Tooltip color} + callback ChangeBoxColor + xywh {157 45 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Button tooltipTextColorButton { + label {Tooltip text color} + callback ChangeBoxColor + xywh {237 45 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Check_Button tooltipsEnableEffects { + label {Enable effects} + xywh {7 45 145 25} + } + Fl_Check_Button tooltipsEnable { + label Enabled + xywh {7 15 145 25} + } + Fl_Choice tooltipsEffectType { + label {Effect type:} + xywh {77 82 115 23} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + } { + Fl_Item {} { + label None + } + Fl_Item {} { + label Animation + } + Fl_Item {} { + label Fading + } + } + Fl_Value_Input tooltipsDelay { + label {Delay:} + xywh {77 120 50 25} + } + } + Fl_Group {} { + label Fonts open + xywh {1 24 318 170} align FL_ALIGN_TOP|FL_ALIGN_LEFT + extra_code {o->label(_(o->label()));} + } { + Fl_Button setLabelFont { + label {...} + callback {labelfont_cb();} + xywh {276 16 30 25} + } + Fl_Button setTextFont { + label {...} + callback {textfont_cb();} + xywh {276 51 30 25} + } + Fl_Box labelFontInput { + label label + xywh {76 16 190 25} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Box textFontInput { + label label + xywh {76 52 190 24} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP box DOWN_BOX + } + Fl_Box {} { + label {Label font:} + xywh {11 16 65 25} align FL_ALIGN_RIGHT|FL_ALIGN_INSIDE + } + Fl_Box {} { + label {Text font:} + xywh {11 51 65 25} align FL_ALIGN_RIGHT|FL_ALIGN_INSIDE + } + } + Fl_Group {} { + label Menus open + xywh {1 24 318 170} hide + } { + Fl_Check_Button menusEnableEffects { + label {Enable effects} + xywh {7 5 305 25} + } + Fl_Check_Button menusEnableSubwindowEffects { + label {Enable subwindow effects} + xywh {7 30 305 25} + } + Fl_Choice menusEffectType { + label {Effect type:} open + xywh {77 60 115 23} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + } { + Fl_Item {} { + label None + } + Fl_Item {} { + label Animation + } + Fl_Item {} { + label Fading + } + } + Fl_Value_Input menusSpeed { + label {Speed:} + xywh {77 95 45 25} + } + Fl_Value_Input menusDelay { + label {Delay:} + xywh {212 95 50 25} + } + } + Fl_Group {} { + label Others open + xywh {1 24 318 170} hide + } { + Fl_Check_Button mdiAnimation { + label {Enable MDI animation} + xywh {12 10 300 25} + } + Fl_Check_Button mdiOpaqueAnimation { + label {MDI opaque animation} + xywh {12 40 300 25} + } + Fl_Check_Button imagesStateEffect { + label {Enable images state effect} + xywh {12 70 300 25} + } + } + } + Fl_Group {} {open + xywh {3 210 320 100} box DOWN_BOX + } { + Fl_Button {} { + label {&Save as...} + callback {saveSchemeAs();} + private xywh {197 20 80 25} + } + Fl_Check_Button allApplyRadioButton { + label {Ap&ply colors to all programs} + xywh {9 60 299 25} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP when CHANGED + } + Fl_Choice schemeListBox { + label {Schemes:} + callback {getSchemeColors();} open + xywh {12 22 175 23} align FL_ALIGN_TOP|FL_ALIGN_LEFT when CHANGED + extra_code {\#include +o->type(1); +fillItems();} + class Fl_Input_Browser + } {} + } + Fl_Button {} { + label {&OK} + callback {//windowColorSettings->hide(); +saveActiveScheme(); +applyColors(); +saveEfltkConfig(); +exit(0);} + private xywh {75 328 80 25} + } + Fl_Button {} { + label {&Apply} + callback {saveActiveScheme(); +applyColors(); +saveEfltkConfig();} + private xywh {160 328 80 25} + } + Fl_Button {} { + label {&Cancel} + callback {exit(0);} + private xywh {245 328 80 25} + } + } + code {//updateFontAll(); +loadEfltkConfig();} {} +} + +Function {ChangeBoxColor(Fl_Button *box, void *)} {open return_type void +} { + code {Fl_Button *colorBox = box; +Fl_Color oldColor = colorBox->color(); +Fl_Color defColor = oldColor; +fl_color_chooser(_("Choose color"), defColor); +if (defColor != oldColor) +{ + colorBox->color(defColor); + colorBox->highlight_color(defColor); + colorBox->redraw(); +}} {} +} diff --git a/ecolorconf/ecolorconf.h b/ecolorconf/ecolorconf.h new file mode 100755 index 0000000..5677534 --- /dev/null +++ b/ecolorconf/ecolorconf.h @@ -0,0 +1,47 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#ifndef ecolorconf_h +#define ecolorconf_h +#include +extern fltk::Window* windowColorSettings; +#include +#include +#include +extern void ChangeBoxColor(fltk::Button*, void*); +extern fltk::Button* colorBox; +extern fltk::Button* labelColorBox; +extern fltk::Button* selectionColorBox; +extern fltk::Button* selectionTextColorBox; +extern fltk::Button* highlightColorBox; +extern fltk::Button* highlightLabelColorBox; +extern fltk::Button* textColorBox; +extern fltk::Button* backgroundBox; +extern fltk::Button* textBackgroundBox; +extern fltk::Button* tooltipBox; +extern fltk::Button* tooltipTextColorButton; +#include +extern fltk::CheckButton* tooltipsEnableEffects; +extern fltk::CheckButton* tooltipsEnable; +#include +extern fltk::Choice* tooltipsEffectType; +#include +#include +extern fltk::ValueInput* tooltipsDelay; +extern fltk::Button* setLabelFont; +extern fltk::Button* setTextFont; +#include +extern fltk::InvisibleBox* labelFontInput; +extern fltk::InvisibleBox* textFontInput; +extern fltk::CheckButton* menusEnableEffects; +extern fltk::CheckButton* menusEnableSubwindowEffects; +extern fltk::Choice* menusEffectType; +extern fltk::ValueInput* menusSpeed; +extern fltk::ValueInput* menusDelay; +extern fltk::CheckButton* mdiAnimation; +extern fltk::CheckButton* mdiOpaqueAnimation; +extern fltk::CheckButton* imagesStateEffect; +extern fltk::CheckButton* allApplyRadioButton; +#include +extern fltk::InputBrowser* schemeListBox; +void ChangeBoxColor(fltk::Button *box, void *); +#endif diff --git a/ecolorconf/ecolorutils.cpp b/ecolorconf/ecolorutils.cpp new file mode 100755 index 0000000..f5fdf23 --- /dev/null +++ b/ecolorconf/ecolorutils.cpp @@ -0,0 +1,701 @@ +/* + * $Id$ + * + * Colors and fonts settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include +#include + +//#include +#include //#include +#include "../edelib2/Run.h" //#include +//#include + +#include "ecolorutils.h" +#include "ecolorconf.h" +#include "EDE_FontChooser.h" + + + +using namespace fltk; +using namespace edelib; + +//////////////////////// +// Useful functions from efltk +//////////////////////// + +char *my_get_homedir() { + char *path = new char[PATH_MAX]; + const char *str1; + + str1=getenv("HOME"); + if (str1) { + memcpy(path, str1, strlen(str1)+1); + return path; + } + + return 0; +} + + +//////////////////////// + + + +//////////////////////// +// Useful functions that should be in fltk +//////////////////////// + +char *filename_noext(char *buf) +{ + char *p=buf, *q=0; + while (*p++) + { + if (*p == '/') q = 0; +#if defined(_WIN32) || defined(__EMX__) + else if (*p == '\\') q = 0; +#endif + else if (*p == '.') q = p; + } + if (q) *q='\0'; + return buf; +} + + +//////////////////////// + + + +EDEFont labelfont, textfont; + +static void sendClientMessage(Window w, Atom a, long x) +{ +// no worky +/* XEvent ev; + long mask; + + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = w; + ev.xclient.message_type = a; + ev.xclient.format = 32; + ev.xclient.data.l[0] = x; + ev.xclient.data.l[1] = CurrentTime; + mask = 0L; + if (w == RootWindow(fl_display, fl_screen)) + mask = SubstructureRedirectMask; + XSendEvent(fl_display, w, False, mask, &ev);*/ +} + +void sendUpdateInfo(Atom what) +{ +// no worky +/* unsigned int i, nrootwins; + Window dw1, dw2, *rootwins = 0; + int screen_count = ScreenCount(fl_display); + for (int s = 0; s < screen_count; s++) { + Window root = RootWindow(fl_display, s); + XQueryTree(fl_display, root, &dw1, &dw2, &rootwins, &nrootwins); + for (i = 0; i < nrootwins; i++) { + if (rootwins[i]!=RootWindow(fl_display, fl_screen)) { + sendClientMessage(rootwins[i], what, 0); + } + } + }*/ +} + +// Comment from before +/* +void updateSizes(Fl_Input_Browser *font_sizes) +{ + int *sizes; + int cnt = fl_font()->sizes(sizes); + + font_sizes->clear(); + font_sizes->begin(); + + char tmp[8]; + for(int n=0; ncopy_label(tmp); + } + font_sizes->end(); +} + +void updateEncodings(Fl_Input_Browser *font_combo) +{ + int encs; + const char **array; + encs = fl_font()->encodings(array); + + fontEncoding->clear(); + fontEncoding->begin(); + for(int n=0; nend(); +} + +void updateFontChange(Fl_Input_Browser *font_combo, Fl_Input_Browser *font_sizes) +{ + //Fl_Font f = fl_find_font(font_combo->value()); + Fl_Font f = fl_create_font(font_combo->value()); + int s = (int)atoi(font_sizes->value()); + + if(!f) return; + + fl_font(f,s); + + updateSizes(font_sizes); + updateEncodings(font_combo); +} + +void updateFontAll() +{ + updateFontChange(labelFontInput, labelSize); + updateFontChange(textFontInput, textSize); +}*/ + + +void apply_colors_apps(Color fg, Color bg, Color text, const char* font) +{ + uchar r, g, b, r1, g1, b1, r2, g2, b2; + split_color(bg, r, g, b); + split_color(fg, r1, g1, b1); + split_color(text, r2, g2, b2); + + char filePath[PATH_MAX]; + snprintf(filePath,PATH_MAX,"%s/.Xdefaults",my_get_homedir()); + + char *backgroundTypes[34] = + { + "*XmList.background" , "*XmLGrid.background", + "Netscape*XmList.background" , "Netscape*XmLGrid.background", + "*text*background", "*list*background", + "*Text*background", "*List*background", + "*textBackground", "*XmTextField.background", + "*XmText.background", "Netscape*XmTextField.background", + "Netscape*XmText.background", "*background", + "*Background", "nscal*Background", + "*Menu*background", "OpenWindows*WindowColor", + "Window.Color.Background", "netscape*background", + "Netscape*background", ".netscape*background", + "Ddd*background", "Emacs*Background", + "Emacs*backgroundToolBarColor",//25 + "*XmList.selectBackground" , "*XmLGrid.selectBackground", + "Netscape*XmList.selectBackground" , "Netscape*XmLGrid.selectBackground", + "*XmTextField.selectBackground", "*XmText.selectBackground", + "Netscape*XmTextField.selectBackground", "Netscape*XmText.selectBackground", + "*selectBackground" //34 + + }; + + FILE *colorFile = fopen(filePath, "w"); + for (int i = 0 ; i < 34; i++) + { + fprintf(colorFile, "%s: #%02X%02X%02X\n", backgroundTypes[i],(short int) r, (short int) g, (short int) b); + } + fprintf(colorFile, "foreground: #%02X%02X%02X\n", r1, g1, b1); + fprintf(colorFile, "xterm*background: #FFFFFF\n"); //especialy for Xterm + fclose(colorFile); + + char runString[PATH_MAX]; + snprintf(runString,PATH_MAX,"xrdb -merge -all %s/.Xdefaults",my_get_homedir()); + +// if (fl_start_child_process(runString)==-1) + if (run_program(runString)>255) + alert("Error executing xrdb program."); +} + + +void apply_colors_gtk(Color fg, + Color bg, + Color selection, + Color selection_text, + Color tooltip, + Color tooltip_text, + + Color text, + const char* font) +{ + uchar r, g, b; + uchar text_r, text_g, text_b; + //, b1, r2, g2, b2; + + uchar selection_r, selection_g, selection_b; + uchar selection_text_r, selection_text_g, selection_text_b; + uchar tooltip_r, tooltip_g, tooltip_b; + uchar tooltip_text_r, tooltip_text_g, tooltip_text_b; + + split_color(bg, r, g, b); + split_color(fg, text_r, text_g, text_b); + + split_color(selection, selection_r, selection_g, selection_b); + split_color(selection_text, selection_text_r, selection_text_g, selection_text_b); + split_color(tooltip, tooltip_r, tooltip_g, tooltip_b); + split_color(tooltip_text, tooltip_text_r, tooltip_text_g, tooltip_text_b); + +// fl_get_color(text, r2, g2, b2); + + char filePath[PATH_MAX]; + snprintf(filePath,PATH_MAX,"%s/.gtkrc",my_get_homedir()); + + FILE *gtkFile = fopen(filePath, "w"); + + fprintf(gtkFile, "style \"default\" \n"); + fprintf(gtkFile, "{\n"); + fprintf(gtkFile, "fontset = \"%s\" \n", font); + fprintf(gtkFile, "bg[NORMAL] = \"#%02X%02X%02X\"\n", r, g, b); + fprintf(gtkFile, "fg[NORMAL] = \"#%02X%02X%02X\"\n", text_r, text_g, text_b); + fprintf(gtkFile, "bg[PRELIGHT] = \"#%02X%02X%02X\"\n", r, g, b); + fprintf(gtkFile, "fg[PRELIGHT] = \"#%02X%02X%02X\"\n", text_r, text_g, text_b); + fprintf(gtkFile, "bg[ACTIVE] = \"#%02X%02X%02X\"\n", r, g, b); + fprintf(gtkFile, "fg[ACTIVE] = \"#%02X%02X%02X\"\n", text_r, text_g, text_b); + fprintf(gtkFile, "bg[SELECTED] = \"#%02X%02X%02X\"\n", selection_r, selection_g, selection_b); + fprintf(gtkFile, "fg[SELECTED] = \"#%02X%02X%02X\"\n", selection_text_r, selection_text_g, selection_text_b); + fprintf(gtkFile, "}\n"); + + fprintf(gtkFile, "style \"menu\" \n"); + fprintf(gtkFile, "{\n"); + fprintf(gtkFile, "bg[PRELIGHT] = \"#%02X%02X%02X\"\n", selection_r, selection_g, selection_b); + fprintf(gtkFile, "fg[PRELIGHT] = \"#%02X%02X%02X\"\n", selection_text_r, selection_text_g, selection_text_b); + fprintf(gtkFile, "}\n"); + + fprintf(gtkFile, "style \"tooltip\" \n"); + fprintf(gtkFile, "{\n"); + fprintf(gtkFile, "bg[NORMAL] = \"#%02X%02X%02X\"\n", tooltip_r, tooltip_g, tooltip_b); + fprintf(gtkFile, "fg[NORMAL] = \"#%02X%02X%02X\"\n", tooltip_text_r, tooltip_text_g, tooltip_text_b); + fprintf(gtkFile, "}\n"); + + fprintf(gtkFile, "class \"*\" style \"default\"\n"); + fprintf(gtkFile, "widget_class \"*Menu*\" style \"menu\" \n"); + fprintf(gtkFile, "widget \"gtk-tooltips\" style \"tooltip\" \n"); + + + fclose(gtkFile); +} + + +void apply_colors_qt(Color fg, Color bg, Color text, const char* font) +{ + uchar r, g, b, r1, g1, b1, r2, g2, b2; + split_color(bg, r, g, b); + split_color(fg, r1, g1, b1); + split_color(text, r2, g2, b2); + + char filePath[PATH_MAX]; + snprintf(filePath,PATH_MAX,"%s/.qt/qtrc",my_get_homedir()); + + FILE *qtfile = fopen(filePath, "w"); + + fprintf(qtfile, "[General]\n"); + fprintf(qtfile, "GUIEffects=none^e\n"); + fprintf(qtfile, "style=Windows\n\n"); + fprintf(qtfile, "[Palette]\n"); + fprintf(qtfile, "active=#000000^e#%02x%02x%02x^e#ffffff^e#%02x%02x%02x^e#000000^e" + "#%02x%02x%02x^e#000000^e#ffffff^e#000000^e#ffffff^e#%02x%02x%02x^e#000000^e" + "#7783bd^e#ffffff^e#0000ff^e#ff00ff^e\n", + r,g,b, r,g,b, r,g,b, r,g,b); + fprintf(qtfile, "disabled=#808080^e#%02x%02x%02x^e#ffffff^e#f2f2f2^e#%02x%02x%02x^e" + "#b7b7b7^e#b7b7b7^e#ffffff^e#000000^e#ffffff^e#dcdcdc^e#000000^e" + "#000080^e#ffffff^e#0000ff^e#ff00ff^e\n", + r,g,b, r,g,b); + fprintf(qtfile, "inactive=#000000^e#%02x%02x%02x^e#ffffff^e#f2f2f2^e#%02x%02x%02x^e" + "#b7b7b7^e#000000^e#ffffff^e#000000^e#ffffff^e#dcdcdc^e" + "#000000^e#7783bd^e#ffffff^e#0000ff^e#ff00ff^e\n", + r,g,b, r,g,b); + + fclose(qtfile); +} + + +void apply_colors_kde(Color fg, Color bg, Color text, const char* font) +{ + uchar r, g, b, r1, g1, b1, r2, g2, b2; + split_color(bg, r, g, b); + split_color(fg, r1, g1, b1); + split_color(text, r2, g2, b2); + + char filePath[PATH_MAX]; + snprintf (filePath,PATH_MAX,"%s/.kderc",my_get_homedir()); + + FILE *kdefile = fopen(filePath, "w"); + + fprintf(kdefile, "[General]\n"); + fprintf(kdefile, "background=%d,%d,%d\n", r, g, b); + fprintf(kdefile, "foreground=%d,%d,%d\n", r1, g1, b1); + + fclose(kdefile); +} + +void saveScheme(char *scheme) +{ + char *keys[] = + { + "color", "label color", "selection color", + "selection text color", "highlight color", "text color", + "highlight label color", + }; + Button *colorBoxes[7] = + { + colorBox, labelColorBox, selectionColorBox, selectionTextColorBox, + highlightColorBox, textColorBox, highlightLabelColorBox + }; + +// We can save new scheme even if there is no existing +// if (schemeListBox->size() > 1) +// { + if (colorBox->color() == labelColorBox->color()) + { alert(_("Color and label color are the same. Edit colors first.")); + } + else + { + Config colorConfig(scheme); //save to "active".scheme + + colorConfig.set_section("widgets/default"); + for (int boxIndex=0; boxIndex<7; boxIndex++) { + colorConfig.write(keys[boxIndex], (int)colorBoxes[boxIndex]->color()); + } + + colorConfig.write("text background", (int)textBackgroundBox->color()); + + // we don't want to lose leading space... + char tr[128]; + strncpy (tr, labelfont.font->system_name(), 128); + if (tr[0] == ' ') tr[0] = '_'; + colorConfig.write("label font", tr); + strncpy (tr, textfont.font->system_name(), 128); + if (tr[0] == ' ') tr[0] = '_'; + colorConfig.write("text font", tr); + + colorConfig.write("label size", labelfont.size); + colorConfig.write("text size", textfont.size); + colorConfig.write("font encoding", textfont.encoding); + + colorConfig.set_section("widgets/tooltip"); + colorConfig.write("color", (int)tooltipBox->color()); + colorConfig.write("label color", (int)tooltipTextColorButton->color()); + + colorConfig.set_section("global colors"); + colorConfig.write("background", (int)backgroundBox->color()); + } +// } +} + +void saveActiveScheme() +{ + char pathActive[PATH_MAX]; + snprintf(pathActive,PATH_MAX,"%s/.ede/schemes/Active.scheme",my_get_homedir()); + + saveScheme(pathActive); +} + +void saveSchemeAs() +{ + const char *schemeName = input(_("Save scheme as:"), _("New scheme")); + if (schemeName) + { + char pathScheme[PATH_MAX]; + //pathScheme.printf("%s/.ede/schemes/%s.scheme", fl_homedir().c_str(), schemeName); + snprintf(pathScheme, PATH_MAX, "%s/.ede/schemes/%s.scheme", my_get_homedir(), schemeName); + saveScheme(pathScheme); + schemeListBox->add(filename_noext(filename_name(pathScheme))); + } +} + +void applyColors() +{ +// sendUpdateInfo(FLTKChangeScheme); + + if (allApplyRadioButton->value()==1) + { + apply_colors_apps(labelColorBox->color(), backgroundBox->color(), + textBackgroundBox->color(), labelFontInput->label()); + apply_colors_gtk(labelColorBox->color(), backgroundBox->color(), + selectionColorBox->color(), selectionTextColorBox->color(), + tooltipBox->color(), tooltipTextColorButton->color(), + textBackgroundBox->color(), labelFontInput->label() + ); + apply_colors_qt(labelColorBox->color(), backgroundBox->color(), + textBackgroundBox->color(), labelFontInput->label()); + apply_colors_kde(labelColorBox->color(), backgroundBox->color(), + textBackgroundBox->color(), labelFontInput->label()); + } +} + +void fillItems() +{ + char *file; + + char path[PATH_MAX]; + snprintf(path,PATH_MAX,"%s/.ede/schemes",my_get_homedir()); + + if (access(path,0)) { mkdir( path, 0777 ); } + + dirent **files; + int count = filename_list(path, &files); + +// We should always have an "active" scheme, even if directory is empty +// if (count > 0) +// { + new Item("Active"); + schemeListBox->text("Active"); + + + for(int n=0; nd_name; + if( strcmp(file, ".")!=0 && strcmp(file, "..")!=0) + { + char filename[PATH_MAX]; + snprintf(filename,PATH_MAX,"%s/%s", path, file); + if (!filename_isdir(filename) && + filename_match(file, "*.scheme") && strcmp(file, "Active.scheme")!=0) + { + new Item(strdup(filename_noext(filename_name(filename)))); + } + } + free(files[n]); + } + free(files); + getSchemeColors(); //we apply first scheme - active.scheme +// } + +} + +void getSchemeColors() +{ +// Hardcoded defaults are below, inside read() calls + + char tr[128]; + int ir = 0; + char *keys[] = + { + "color", "label color", "selection color", + "selection text color", "highlight color", "text color", + "highlight label color", + }; + long keys_defaults[] = + { + 7, 32, 796173568, 7, 49, 32, 32 + }; + Button *colorBoxes[7] = + { + colorBox, labelColorBox, selectionColorBox, selectionTextColorBox, + highlightColorBox, textColorBox, highlightLabelColorBox + }; +// We always have at least "Active" on the list +// if (schemeListBox->size() > 1) +// { + Config *colorConfig; + + const char *ai = schemeListBox->text(); + if (strcmp(ai, "Active")==0) + { + char pathActive[PATH_MAX]; + snprintf(pathActive, sizeof(pathActive)-1, "%s/.ede/schemes/Active.scheme", my_get_homedir()); + colorConfig = new Config(pathActive); + } else { + char pathScheme[PATH_MAX]; + snprintf(pathScheme, sizeof(pathScheme)-1, "%s/.ede/schemes/%s.scheme", my_get_homedir(), ai); + // However, sometimes a bogus entry is selected: + if (!filename_exist(pathScheme)) return; + colorConfig = new Config(pathScheme); + } + + for(int boxIndex = 0; boxIndex < 7; boxIndex++) + { + colorConfig->set_section("widgets/default"); + colorConfig->read(keys[boxIndex], ir, keys_defaults[boxIndex]); + colorBoxes[boxIndex]->color((Color)ir); + colorBoxes[boxIndex]->highlight_color((Color)ir); + } + + colorConfig->set_section("widgets/tooltip"); + colorConfig->read("color", ir, -16784896); + tooltipBox->color((Color)ir); + tooltipBox->highlight_color((Color)ir); + + colorConfig->read("label color",ir, 32); + tooltipTextColorButton->color((Color)ir); + tooltipTextColorButton->highlight_color((Color)ir); + + colorConfig->set_section("widgets/default"); + colorConfig->read("text background", ir, 7); + textBackgroundBox->color((Color)ir); + textBackgroundBox->highlight_color((Color)ir); + + char tmpencoding[PATH_MAX]; + colorConfig->read("font encoding", tr, "iso8859-2", sizeof(tr)); strncpy(tmpencoding,tr,PATH_MAX); + + colorConfig->read("label font", tr, fltk::HELVETICA->name(), sizeof(tr)); + { + if (tr[0] == '_') tr[0] = ' '; // converted leading space + fltk::Font* thefont = font(tr); //Style.h + labelfont.font = thefont; + if (labelfont.encoding) free(labelfont.encoding); + labelfont.encoding = strdup(tmpencoding); + labelfont.defined = true; + + colorConfig->read("label size", ir, 12); + labelfont.size = ir; + } + + colorConfig->read("text font", tr, fltk::HELVETICA->name(), sizeof(tr)); + { + if (tr[0] == '_') tr[0] = ' '; + fltk::Font* thefont = font(tr); + textfont.font = thefont; + if (textfont.encoding) free(textfont.encoding); + textfont.encoding = strdup(tmpencoding); + textfont.defined = true; + + colorConfig->read("text size", ir, 12); + textfont.size = ir; + } + + labelFontInput->label(font_nice_name(labelfont)); + textFontInput->label(font_nice_name(textfont)); + + colorConfig->set_section("global colors"); + colorConfig->read("background", ir, -673724416); + backgroundBox->color((Color)ir); + + colorBox->parent()->parent()->redraw(); + + delete colorConfig; +// } +} + +void loadEfltkConfig() +{ + char *file = 0; + file = Config::find_file("efltk.conf", false, Config::USER); + if(!file) file = Config::find_file("efltk.conf", false, Config::SYSTEM); + + Config cfg(file, true, false); + if(!cfg.error()) + { + bool b_val; + float f_val; + int i_val; + + // Read Fl_Image defaults: + cfg.get("Images", "State Effects", b_val, true); + imagesStateEffect->value(b_val); + + // Read Fl_Menu_Window defaults: + cfg.get("Menus", "Effects", b_val, true); + menusEnableEffects->value(b_val); + cfg.get("Menus", "Subwindow Effect", b_val, true); + menusEnableSubwindowEffects->value(b_val); + cfg.get("Menus", "Effect Type", i_val, 1); + menusEffectType->value(i_val); + cfg.get("Menus", "Speed", f_val, 1.5f); + menusSpeed->value(f_val); + cfg.get("Menus", "Delay", f_val, 0.2f); + menusDelay->value(f_val); + + + // Read Fl_Tooltip defaults: + cfg.get("Tooltips", "Effects", b_val, true); + tooltipsEnableEffects->value(b_val); + cfg.get("Tooltips", "Effect Type", i_val, 2); + tooltipsEffectType->value(i_val); + cfg.get("Tooltips", "Enabled", b_val, true); + tooltipsEnable->value(b_val); + cfg.get("Tooltips", "Delay", f_val, 1.0f); + tooltipsDelay->value(f_val); + + // Read Fl_MDI_Window defaults: + cfg.get("MDI", "Animate", b_val, true); + mdiAnimation->value(b_val); + cfg.get("MDI", "Opaque", b_val, false); + mdiOpaqueAnimation->value(b_val); + } +} + +void saveEfltkConfig() +{ + char *file = 0; + file = Config::find_file("efltk.conf", false, Config::USER); + if(!file) file = Config::find_file("efltk.conf", false, Config::SYSTEM); + + Config cfg(file, true, true); + if(!cfg.error()) + { + cfg.set("Images", "State Effects", imagesStateEffect->value()); + + cfg.set("Menus", "Effects", menusEnableEffects->value()); + cfg.set("Menus", "Subwindow Effect", menusEnableSubwindowEffects->value()); + cfg.set("Menus", "Effect Type", menusEffectType->value()); + cfg.set("Menus", "Speed", (float)menusSpeed->value()); + cfg.set("Menus", "Delay", (float)menusDelay->value()); + + cfg.set("Tooltips", "Effects", tooltipsEnableEffects->value()); + cfg.set("Tooltips", "Effect Type", tooltipsEffectType->value()); + cfg.set("Tooltips", "Enabled", tooltipsEnable->value()); + cfg.set("Tooltips", "Delay", (float)tooltipsDelay->value()); + + cfg.set("MDI", "Animate", mdiAnimation->value()); + cfg.set("MDI", "Opaque", mdiOpaqueAnimation->value()); + + // sendUpdateInfo(FLTKChangeSettings); + } +} + + +// FONT STUFF: +// returns nice name for a font +const char* font_nice_name(EDEFont font) { + if (!font.defined) + return "Unknown"; + + char nicename[PATH_MAX]; + snprintf (nicename, PATH_MAX, "%s (%d)", font.font->name(), font.size); + + // capitalize bold, italic +// nicename.sub_replace("bold","Bold"); +// nicename.sub_replace("italic","Italic"); + +// nicename = nicename + " ("; +// nicename = nicename + Fl_String(font.size); +// nicename = nicename + ")"; + + const char* n = strdup(nicename); + return n; +} + + +// callback for button to set label font +void labelfont_cb() { + EDEFont ret = font_chooser(labelfont); + + if (ret.defined) { + labelfont = ret; + labelFontInput->label(font_nice_name(labelfont)); + labelFontInput->redraw(); + } +} + + +// callback for button to set label font +void textfont_cb() { + EDEFont ret = font_chooser(textfont); + + if (ret.defined) { + textfont = ret; + textFontInput->label(font_nice_name(textfont)); + textFontInput->redraw(); + } +} diff --git a/ecolorconf/ecolorutils.h b/ecolorconf/ecolorutils.h new file mode 100755 index 0000000..7dbe286 --- /dev/null +++ b/ecolorconf/ecolorutils.h @@ -0,0 +1,71 @@ +// Colors settings for EDE +// Copyright (C) 2000-2002 Martin Pekar +// +// 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; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +#ifndef ecolorutils_h +#define ecolorutils_h + +/*#include +#include +#include +#include +#include */ +#include //#include +#include //#include +/*#include +#include +#include +#include +#include +#include +#include +#include +#include */ +#include //#include +//#include +//#include +#include //#include +//#include +#include //#include +//#include +#include "../edelib2/Config.h" //#include +#include "../edelib2/NLS.h" //#include + +// this struct can hold slightly more information than Fl_Font +extern typedef struct { + fltk::Font* font; + char* encoding; + int size; + bool defined; +} EDEFont; + + + +extern void updateFontAll(); +extern void getSchemeColors(); +extern void saveActiveScheme(); +extern void saveSchemeAs(); +extern void applyColors(); +extern void fillItems(); +extern void loadEfltkConfig(); +extern void saveEfltkConfig(); + +// font stuff +const char* font_nice_name(EDEFont); +extern void labelfont_cb(); +extern void textfont_cb(); + +#endif diff --git a/ecolorconf/edetheme.cpp b/ecolorconf/edetheme.cpp new file mode 100755 index 0000000..e514170 --- /dev/null +++ b/ecolorconf/edetheme.cpp @@ -0,0 +1,315 @@ +// +// "$Id: edetheme.cpp,v 1.1.1.1 2005/03/04 15:45:45 karijes Exp $" +// +// Startup, scheme and theme handling code for the Fast Light +// Tool Kit (FLTK). +// +// Copyright 1998-1999 by Bill Spitzak and others. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library 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 +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// + +// The "scheme" theme. This reads an earlier design for configuring fltk, +// a text-based "scheme" file, which described exactly what to put into +// the style structures for each widget class. We rejected this design +// because it was apparent that all interesting themes were completely +// defined by plugin code and thus the only part that was being used was +// the "themes" line from the file. + +// The scheme argument (set by Fl_Style::scheme() or by the -scheme +// switch when Fl::arg() is used) is used to choose the scheme file to +// read, by adding ".scheme" to the end. If not specified or null, +// "default" is used. There are some sample scheme files provided for +// your amusement, such as OldMotif.scheme. +// +// Modified for use with EDE by Martin Pekar 07/02/2002 + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifndef _WIN32 +#include +#else +#include +#define access(a,b) _access(a,b) +#define R_OK 04 +#endif + +#ifndef PATH_MAX +#define PATH_MAX 128 +#endif + +static Fl_Color grok_color(FLE_Config* cf, const char *colstr) +{ + char *val=0; + const char *p = colstr; + val = cf->read_string("aliases", colstr); + if(val) p = val; + char* q; + long l = strtoul(p, &q, 0); + if(!*q) return (Fl_Color)l; + //if(val) delete []val; //LEAK!! + return fl_rgb(p); +} + +static Fl_Font grok_font(FLE_Config *cf, const char* fontstr) +{ + char *val; + const char *p = fontstr; + val = cf->read_string("aliases", fontstr); + if(val) p = val; + char* q; + long l = strtoul(p, &q, 0); + if(!*q) return fl_fonts+l; + //if(val) delete []val; //LEAK!! + return fl_find_font(p); +} + +//////////////////////////////////////////////////////////////// + +extern "C" +bool fltk_theme() +{ + char temp[PATH_MAX]; + /* const char* scheme = Fl_Style::scheme(); + if (!scheme || !*scheme) scheme = "default"; + + char temp[PATH_MAX]; + snprintf(temp, PATH_MAX, "%s.scheme", scheme); + char sfile_buf[PATH_MAX];*/ + const char* sfile = fle_find_config_file("schemes/Active.scheme", 0); + if (!sfile) { + fprintf(stderr, "Cannot find default scheme \"%s\"\n", sfile); + return false; + } + + static bool recurse=false; + if (recurse) { + fprintf(stderr, "%s recusively loaded scheme.theme\n", sfile); + return false; + } + + //conf_clear_cache(); + FLE_Config conf(sfile); + + //if (!::getconf(sfile, "general/themes", temp, sizeof(temp))) + char *themefile = conf.read_string("general", "themes"); + if(themefile && !conf.error()) + { + recurse = true; + Fl_Theme f = Fl_Style::load_theme(themefile); + if(f) f(); + else fprintf(stderr,"Unable to load %s theme\n", themefile); + recurse = false; + delete []themefile; + } + + char *valstr; + Fl_Color col; + + //if(!::getconf(sfile, "global colors/background", valstr, sizeof(valstr))) { + valstr = conf.read_string("global colors", "background"); + if(valstr && !conf.error()) { + col = grok_color(&conf, valstr); + fl_background(fl_get_color(col)); + delete []valstr; + } + + static struct { const char* key; Fl_Color col; } colors[] = { + { "DARK1", FL_DARK1 }, + { "DARK2", FL_DARK2 }, + { "DARK3", FL_DARK3 }, + { "LIGHT1", FL_LIGHT1 }, + { "LIGHT2", FL_LIGHT2 }, + { "LIGHT3", FL_LIGHT3 }, + { 0, 0 } + }; + + for (int i = 0; colors[i].key; i++) { + snprintf(temp, sizeof(temp)-1, "%s", colors[i].key); + //int res = ::getconf(sfile, temp, valstr, sizeof(valstr)); + valstr = conf.read_string("global colors", temp); + int res = conf.error(); + if(!res && valstr) { + col = grok_color(&conf, valstr); + fl_set_color(colors[i].col, col); + delete []valstr; + } + } + + //conf_list section_list = 0, key_list = 0; + //conf_entry* cent; + SectionList *section_list; + Section *cent=0; + + Fl_Font font; + Fl_Labeltype labeltype; + Fl_Boxtype boxtype; + + //if(!getconf_sections(sfile, "widgets", §ion_list)) + section_list = conf.section_list("widgets"); + if(section_list) + { + //for (cent = section_list; cent; cent = cent->next) + for(cent = section_list->first(); cent; cent=section_list->next()) + { + //Fl_Style* style = Fl_Style::find(cent->key); + Fl_Style* style = Fl_Style::find(cent->name); + if(!style) continue; + + conf.set_section(cent); + + // box around widget + //if(!getconf_list(key_list, "box", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("box")) ) { + if ( (boxtype = Fl_Boxtype_::find(valstr)) ) style->box = boxtype; + delete []valstr; + } + + // box around buttons within widget + //if (!getconf_list(key_list, "button box", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("button box")) ) { + if ( (boxtype = Fl_Boxtype_::find(valstr)) ) style->button_box = boxtype; + delete []valstr; + } + + // color of widget background + //if (!getconf_list(key_list, "color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("color")) ) { + style->color = grok_color(&conf, valstr); + delete []valstr; + } + + // color of widget's label + //if (!getconf_list(key_list, "label color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("label color")) ) { + style->label_color = grok_color(&conf, valstr); + delete []valstr; + } + + // color of widget's background when widget is selected + //if (!getconf_list(key_list, "selection color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("selection color" )) ) { + style->selection_color = grok_color(&conf, valstr); + delete []valstr; + } + + // color of widget's text when text selected + // color of widget's label when widget selected + // color of widget's glyph when widget selected and no glyph box + //if (!getconf_list(key_list, "selection text color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("selection text color")) ) { + style->selection_text_color = grok_color(&conf, valstr); + delete []valstr; + } + + // color of widget's background when widget is highlighted + //if (!getconf_list(key_list, "highlight color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("highlight color" ))) { + style->highlight_color = grok_color(&conf, valstr); + delete []valstr; + } + + // color of widget's label when widget highlighted + // color of widget's glyph/text when widget highlighted and no text/glyph box + //if (!getconf_list(key_list, "highlight label color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("highlight label color" ))) { + style->highlight_label_color = grok_color(&conf, valstr); + delete []valstr; + } + + // color of text/glyph within widget + //if (!getconf_list(key_list, "text color", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("text color")) ) { + style->text_color = grok_color(&conf, valstr); + delete []valstr; + } + + // font used for widget's label + //if (!getconf_list(key_list, "label font", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("label font")) ) { + if ( (font = grok_font(&conf, valstr)) ) style->label_font = font; + delete []valstr; + } + + // font used for text within widget + //if (!getconf_list(key_list, "text font", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("text font" )) ) { + if ( (font = grok_font(&conf, valstr)) ) style->text_font = font; + delete []valstr; + } + + // type of widget's label + //if (!getconf_list(key_list, "label type", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("label type" )) ) { + if ( (labeltype = Fl_Labeltype_::find(valstr)) ) style->label_type = labeltype; + delete []valstr; + } + + // font size of widget's label + //if (!getconf_list(key_list, "label size", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("label size")) ) { + style->label_size = (int)strtol(valstr,0,0); + delete []valstr; + } + + // font size of text within widget + //if (!getconf_list(key_list, "text size", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("text size")) ) { + style->text_size = (int)strtol(valstr,0,0); + delete []valstr; + } + + // leading + //if (!getconf_list(key_list, "leading", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("leading")) ) { + style->leading = (int)strtol(valstr,0,0); + delete []valstr; + } + + // font encoding + //if (!getconf_list(key_list, "font encoding", valstr, sizeof(valstr))) + if( (valstr=conf.read_string("font encoding")) ) { + fl_encoding(valstr); + //delete []valstr; //LEAK?? + } + + //conf_list_free(&key_list); + } + //conf_list_free(§ion_list); + } + + return true; +} + +// +// End of "$Id: edetheme.cpp,v 1.1.1.1 2005/03/04 15:45:45 karijes Exp $". +// diff --git a/ecolorconf/locale/hu.po b/ecolorconf/locale/hu.po new file mode 100755 index 0000000..23367f1 --- /dev/null +++ b/ecolorconf/locale/hu.po @@ -0,0 +1,208 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Szín és font beállítások" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Színek" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Háttér szín" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Felirat szín" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Kiválasztás háttere" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Kiválasztott szöveg" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Off szín" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Kiemelés háttere" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Kiemelt szöveg" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Szöveg szín" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Háttér" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Szöveg háttér" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Buborékok" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Buborékok színe" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Buborék szövegszín" + +#: ecolorconf.cpp:203 +#: ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Effektek" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Engedélyez" + +#: ecolorconf.cpp:205 +#: ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Effekt típus:" + +#: ecolorconf.cpp:207 +#: ecolorconf.cpp:256 +msgid "None" +msgstr "Egyik sem" + +#: ecolorconf.cpp:208 +#: ecolorconf.cpp:257 +msgid "Animation" +msgstr "Animáció" + +#: ecolorconf.cpp:209 +#: ecolorconf.cpp:258 +msgid "Fading" +msgstr "Fokozatos" + +#: ecolorconf.cpp:212 +#: ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Késleltetés:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Betűtípusok" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Felirat font:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Szöveg font:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Felirat méret:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Szöveg méret:" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Kódolás:" + +#: ecolorconf.cpp:241 +#: ecolorconf.cpp:244 +msgid "..." +msgstr "..." + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Menük" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Almenü effektek" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Sebesség:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Egyéb" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "MDI animáció engedélyezése" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "MDI opaque animation" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Képállapot váltás" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "Menté&s..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "Színbeállítások &alkalmazása az összes programra" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Témák:" + +#: ecolorconf.cpp:293 +#: efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: ecolorconf.cpp:299 +#: efontdialog.cpp:229 +msgid "&Cancel" +msgstr "Mégs&em" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Szín kiválasztása" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "A szín és felirat szín ugyanaz. Szerkeszd először a színeket." + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Téma mentése:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Új téma" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "Betűtípus kiválasztása..." + diff --git a/ecolorconf/locale/id.po b/ecolorconf/locale/id.po new file mode 100755 index 0000000..bd53597 --- /dev/null +++ b/ecolorconf/locale/id.po @@ -0,0 +1,203 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ecolorconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 202-11-29 13:31+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Seting warna dan font" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Warna default" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Warna" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Warna label" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Warna pilihan" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Warna teks pilihan" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Warna off" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Warna sorot" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Warna label sorot" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Warna teks" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Latar belakang" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Teks latar belakang" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Tooltip" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Warna tooltip" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Warna teks tooltip" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Aktifkan efek" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Aktifkan" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Tipe efek:" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "Tidak ada" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "Animasi" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "Fading" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Tunda:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Font" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Font label:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Font teks:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Ukuran label:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Ukuran teks:" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Pengkodean:" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Menu" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Aktifkan efek subwindow" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Kecepatan:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Lainnya" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "Aktifkan animasi MDI" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "Animasi opaque MDI" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Aktifkan efek keadaan citra" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "&Simpan sebagai..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "Berlakukan warna ke semua &program" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Skema:" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "Berl&akukan" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "&Batal" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Pilih warna" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "Warna dan warna label sama. Edit warna lebih dulu." + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Simpan skema sebagai:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Skema baru" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/ecolorconf/locale/messages.pot b/ecolorconf/locale/messages.pot new file mode 100755 index 0000000..e2a9176 --- /dev/null +++ b/ecolorconf/locale/messages.pot @@ -0,0 +1,205 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "" + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "" + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/ecolorconf/locale/ru.po b/ecolorconf/locale/ru.po new file mode 100755 index 0000000..15c12e9 --- /dev/null +++ b/ecolorconf/locale/ru.po @@ -0,0 +1,204 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr " " + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr " " + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr " " + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr " " + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr " " + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr " " + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr " " + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr " " + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr " " + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr " " + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr " " + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr " " + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr " :" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr " :" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr " :" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr " :" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr ":" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr " -" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr ":" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr " -" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr " -" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr " " + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr " " + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr ":" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr " " + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr " , " + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr " :" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr " " + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/ecolorconf/locale/sk.po b/ecolorconf/locale/sk.po new file mode 100755 index 0000000..15d8d83 --- /dev/null +++ b/ecolorconf/locale/sk.po @@ -0,0 +1,212 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ecolorconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Nastavenie farieb a písiem" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Základné farby" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Farba" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Farba menovky" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Farby výberu" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Farba textu vo výbere" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Farba vypnutia" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Farba zvýraznenia" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Farba textu vo zvýraznení" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Farba textu" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Pozadie" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Farba pozadia textu" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Bublinky" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Farba bublinky" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Farba textu v bublinke" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Povoliť efekty" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Povolené" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Typ efektu:" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "Žiadny" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "Animácia" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "Blednutie" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Oneskorenie:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Písma" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Písmo menovky:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Písmo textu:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Veľkosť menovky:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Veľkosť textu" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Kódovanie:" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Ponuky" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Použiť efekty na podokná" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Rýchlosť:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Ostatné" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "Povoliť MDI animáciu" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "Obrysová animácia MDI" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Použiť stavový efekt obrázkov" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "&Uložiť ako..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "Pou&žiť farby pre všetky programy" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Schémy:" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "&Použiť" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Zvoľte farbu" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "" + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Uložiť schému ako:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Nová schéma" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" + +#~ msgid "Saves active scheme under new name." +#~ msgstr "Uloží aktívnu schému pod novým menom." + +#~ msgid "Colors will be applied for all programs." +#~ msgstr "Farby budú aplikované na všetky programy." + +#~ msgid "These schemes are available." +#~ msgstr "Tieto schémy sú dostupné." diff --git a/ecolorconf/locale/sr.po b/ecolorconf/locale/sr.po new file mode 100755 index 0000000..3d22aa6 --- /dev/null +++ b/ecolorconf/locale/sr.po @@ -0,0 +1,203 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ECOLORCONF 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 2002-11-27 04:15+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Подешавање боја и фонтова" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Дифолт боје" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Боја" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Боја наслова" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Боја селекције" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Боја селектованог текста" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Без боје" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Боја означења" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Боја означеног текста" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Боја текста" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Позадина" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Позадина текста" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Тултипси" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Боја тултипса" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Боја текста тултипса" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Укључи ефекте" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Омогућен" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Тип ефекта:" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "Никакав" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "Анимација" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "Фејдинг" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Пауза:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Фонтови" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Фонт наслова:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Фонт текста:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Величина наслова:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Величина текста:" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Енкодинг:" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Менији" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Укључи сабвиндов ефекте" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Брзина:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Остали" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "Укључи МДИ анимације" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "МДИ провидна анимација" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Укључи ефекат статичне слике" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "&Сними као..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "П&римени боје на све програме" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Шеме:" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&ОК" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "&Примени" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "&Одустани" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Изабери боју" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "Боја и боја наслова су исте. Прво измените боје." + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Сними шему као:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Нова шема" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/econtrol/Makefile b/econtrol/Makefile new file mode 100755 index 0000000..11d65f1 --- /dev/null +++ b/econtrol/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = econtrol.cpp ../edelib2/Util.cpp ../edelib2/Icon.cpp ../edelib2/Config.cpp ../edelib2/Run.cpp ../edelib2/process.cpp ../edelib2/pty.cpp ../edelib2/about_dialog.cpp +TARGET = econtrol + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/econtrol/econtrol.cpp b/econtrol/econtrol.cpp new file mode 100755 index 0000000..abcc9d8 --- /dev/null +++ b/econtrol/econtrol.cpp @@ -0,0 +1,371 @@ +/* + * $Id$ + * + * The EDE control center + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include +#include + +#include "econtrol.h" + +#include "../edelib2/Run.h" +#include "../edelib2/about_dialog.h" +#include "../edelib2/NLS.h" +#include "../edelib2/Icon.h" + +#include "../edeconf.h" + +using namespace fltk; +using namespace edelib; + + + +// Widgets + +Window *configPanelWindow=(Window *)0; +MenuBar *main_menubar=(MenuBar *)0; +StatusBarGroup *status_bar=(StatusBarGroup *)0; +ScrollGroup *scroll=(ScrollGroup *)0; +Group *main_view=(Group *)0; +InvisibleBox *help_window=(InvisibleBox *)0; + + +// Callbacks + +static void cb_Quit(Item*, void*) +{ + exit(0); +} + +static void cb_About(Item*, void*) +{ + about_dialog("Control panel", "1.99"); +} + + +static void cb_Icons(Button*, void*) +{ + help_window->label(_("Change behaviour of your desktop icons.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("eiconsconf &"); +} + + +static void cb_Colors(Button*, void*) +{ + help_window->label(_("Configure global colors and fonts used by EDE applications.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("ecolorconf &"); +} + +static void cb_Screen(Button*, void*) +{ + help_window->label(_("Configure the screensaver.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("esvrconf &"); +} + +static void cb_Window(Button*, void*) +{ + help_window->label(_("Setup window decorations and other options.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("ewmconf &"); +} + +static void cb_Display(Button*, void*) +{ + help_window->label(_("Set various options for the X windowing system.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("edisplayconf &"); +} + +static void cb_Install(Button*, void*) +{ + help_window->label(_("This utility helps you to install new software.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("einstaller",false); +} + +static void cb_Time(Button*, void*) +{ + help_window->label(_("Show and set computer time and date.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("etimedate",false); +} + +static void cb_Panel(Button*, void*) +{ + help_window->label(_("Change panel behaviour and choose applets.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("epanelconf",false); +} + +static void cb_Keyboard(Button*, void*) +{ + help_window->label(_("Configure keyboard shortcuts and other options.")); + help_window->redraw(); + //if (Fl::event_clicks()) + run_program("ekeyconf",false); +} + +static void cb_Color(Item* i, void*) +{ + const char* label = i->label(); + if (strcmp(label,"White")==0) { scroll->color(WHITE); } + if (strcmp(label,"Gray")==0) { scroll->color(GRAY75); } + if (strcmp(label,"Black")==0) { scroll->color(BLACK); } + if (strcmp(label,"Red")==0) { scroll->color(RED); } + if (strcmp(label,"Blue")==0) { scroll->color(BLUE); } + scroll->redraw(); +} + + +// Main program + +int main (int argc, char **argv) { + +//fl_init_locale_support("econtrol", PREFIX"/share/locale"); +{Window* configPanelWindow = new Window(450, 310, _("Control panel")); +configPanelWindow->begin(); +{main_menubar = new MenuBar(0, 0, 450, 26); + main_menubar->begin(); + {ItemGroup* o = new ItemGroup(_("&File")); + o->begin(); + {Item* o = new Item(_("&Quit")); + o->shortcut(0x40071); + o->callback((Callback*)cb_Quit); + //o->x_offset(18); + } + o->end(); + } + {ItemGroup* o = new ItemGroup(_("&Color")); + o->align(ALIGN_CENTER); + o->begin(); + {Item* o = new Item("White"); + o->callback((Callback*)cb_Color); + o->type(Item::RADIO); + o->set(); + } + {Item* o = new Item("Gray"); + o->callback((Callback*)cb_Color); + o->type(Item::RADIO); + } + {Item* o = new Item("Black"); + o->callback((Callback*)cb_Color); + o->type(Item::RADIO); + } + {Item* o = new Item("Red"); + o->callback((Callback*)cb_Color); + o->type(Item::RADIO); + } + {Item* o = new Item("Blue"); + o->callback((Callback*)cb_Color); + o->type(Item::RADIO); + } + o->end(); + } + {ItemGroup* o = new ItemGroup(_("&Help")); + o->align(ALIGN_CENTER); + o->begin(); + {Item* o = new Item(_("&About")); + o->shortcut(0x40061); + o->callback((Callback*)cb_About); + //o->x_offset(18); + } + o->end(); + } + main_menubar->end(); +} +{main_view = new Group(0, 26, 450, 280); + main_view->begin(); + {InvisibleBox* o = new InvisibleBox(0, 0, 450, 41, _("Control panel")); + o->box(FLAT_BOX); + o->labeltype(SHADOW_LABEL); + o->color((Color)0xd089d00); + o->buttoncolor((Color)0xe6e7e600); + o->labelcolor((Color)0xffffff00); + o->highlight_color((Color)0xe6e7e600); + o->labelsize(20); + o->textsize(29); + o->align(ALIGN_INSIDE); + } + {TiledGroup* o = new TiledGroup(0, 40, 450, 215); + o->box(FLAT_BOX); + o->color((Color)0xd93b4300); + o->begin(); + {help_window = new InvisibleBox(0, 0, 110, 195, _("Welcome to the control panel. Here you can setup most things on your computer.")); + o->set_vertical(); + o->box(DOWN_BOX); + o->color((Color)0xfff9e400); + o->labelcolor((Color)32); + o->align(ALIGN_WRAP); + //o->set_value(); + } + {scroll = new ScrollGroup(110, 0, 340, 195); + o->box(DOWN_BOX); + o->color(WHITE); + o->align(ALIGN_CENTER); + o->begin(); + {Button* o = new Button(10, 15, 60, 75, _("Icons")); + o->set_vertical(); + // o->image(SharedImage::get("icons/behaviour.xpm")); + // o->image(EDE_Icon::get("desktop-mdk",EDE_Icon::SMALL)); + // o->image(EDE_Icon::get("kappfinder",EDE_Icon::SMALL)); + o->image(Icon::get("desktop",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->buttonbox(NO_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Icons); + o->align(ALIGN_WRAP); + o->tooltip(_("Icons settings")); + } + {Button* o = new Button(75, 15, 60, 75, _("Colors and Fonts")); + o->set_vertical(); + // o->image(SharedImage::get("icons/themes.xpm")); + o->image(Icon::get("fonts",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Colors); + o->align(ALIGN_WRAP); + o->tooltip(_("Colors settings")); + } + {Button* o = new Button(140, 15, 60, 75, _("Screen Saver")); + o->set_vertical(); + // o->image(SharedImage::get("icons/screensaver.xpm")); + o->image(Icon::get("terminal",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Screen); + o->align(ALIGN_WRAP); + o->tooltip(_("Screensaver configuration")); + } + {Button* o = new Button(10, 95, 60, 75, _("Window Manager")); + o->set_vertical(); + // o->image(SharedImage::get("icons/windowmanager.xpm")); + // o->image(EDE_Icon::get("kcmkwm",EDE_Icon::SMALL)); + // o->image(EDE_Icon::get("kpersonalizer",EDE_Icon::SMALL)); + o->image(Icon::get("window_list",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Window); + o->align(ALIGN_WRAP); + o->tooltip(_("Window manager settings")); + } + {Button* o = new Button(75, 95, 60, 75, _("Display")); + o->set_vertical(); + // o->image(SharedImage::get("icons/display.xpm")); + // o->image(EDE_Icon::get("kcmx",EDE_Icon::SMALL)); + // o->image(EDE_Icon::get("randr",EDE_Icon::SMALL)); + o->image(Icon::get("looknfeel",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Display); + o->tooltip(_("Display settings")); + } + {Button* o = new Button(140, 95, 60, 75, _("Install New Software")); + o->set_vertical(); + // o->image(SharedImage::get("icons/newsoft.xpm")); + // o->image(EDE_Icon::get("ark",EDE_Icon::SMALL)); + o->image(Icon::get("package",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Install); + o->align(ALIGN_WRAP); + o->tooltip(_("Software installation.")); + } + {Button* o = new Button(205, 95, 60, 75, _("Time and Date")); + o->set_vertical(); + // o->image(SharedImage::get("icons/timedate.xpm")); + o->image(Icon::get("date",Icon::SMALL)); + // o->image(EDE_Icon::get("karm",EDE_Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Time); + o->align(ALIGN_WRAP); + o->tooltip(_("Time and date settings.")); + } + {Button* o = new Button(205, 15, 60, 75, _("Panel")); + o->set_vertical(); + // o->image(SharedImage::get("icons/panel.xpm")); + o->image(Icon::get("kcmkicker",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Panel); + o->tooltip(_("Panel configuration.")); + } + {Button* o = new Button(265, 15, 60, 75, _("Keyboard")); + o->set_vertical(); + // o->image(SharedImage::get("icons/keyboard.xpm")); + // o->image(EDE_Icon::get("kxkb",EDE_Icon::SMALL)); + o->image(Icon::get("keyboard",Icon::SMALL)); + o->box(HIGHLIGHT_DOWN_BOX); + o->buttonbox(NO_BOX); + o->color((Color)7); + o->highlight_color((Color)7); + o->highlight_textcolor((Color)32); + o->labelsize(10); + o->callback((Callback*)cb_Keyboard); + o->tooltip(_("Keyboard settings")); + } + scroll->end(); + //o->edge_offset(10); + } + o->end(); + o->parent()->resizable(o); + Group::current()->resizable(o); + } + main_view->end(); + Group::current()->resizable(main_view); +} +{status_bar = new StatusBarGroup(0, 281, 450, 24, _("Ready")); + status_bar->box(DOWN_BOX); +} + +configPanelWindow->end(); +configPanelWindow->size_range(configPanelWindow->w(), configPanelWindow->h()); +} + + // configPanelWindow->menu(main_menubar); + // configPanelWindow->view(main_view); + // configPanelWindow->status(status_bar); + configPanelWindow->show(argc, argv); + return run(); +} diff --git a/econtrol/econtrol.fld b/econtrol/econtrol.fld new file mode 100755 index 0000000..6afb16a --- /dev/null +++ b/econtrol/econtrol.fld @@ -0,0 +1,193 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// The EDE control center.} {} + +decl {// Copyright (c) 2000. - 2005. EDE Authors} {} + +decl {// This program is licenced under terms of the} {} + +decl {// GNU General Public Licence version 2 or newer.} {} + +decl {// See COPYING for details} {} + +decl {//} {} + +decl {\#include } {} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {\#include "EDE_Run.h"} {} + +decl {\#include "../common/aboutdialog.h"} {} + +Function {} {open +} { + code {fl_init_locale_support("econtrol", PREFIX"/share/locale");} {} + {fltk::Window} configPanelWindow { + label {Control panel} open + xywh {467 224 450 310} resizable + extra_code {\#include +o->size_range(o->w(), o->h());} visible + } { + {fltk::MenuBar} main_menubar { + xywh {0 0 450 26} + } { + {fltk::ItemGroup} {} { + label {&File} open + } { + {fltk::Item} {} { + label {&Quit} + callback {exit(0);} + shortcut 0x40071 + extra_code {o->x_offset(18);} + } + } + {fltk::ItemGroup} {} { + label {&Help} open + align 0 + } { + {fltk::Item} {} { + label {&About} + callback {AboutDialog("Control panel", "1.0");} + shortcut 0x40061 + extra_code {o->x_offset(18);} + } + } + } + {fltk::Group} main_view {open + xywh {0 0 450 280} resizable + } { + {fltk::InvisibleBox} {} { + label {Control panel} + xywh {0 24 450 41} align 32 box FLAT_BOX labeltype SHADOW_LABEL color 0xd089d00 buttoncolor 0xe6e7e600 labelcolor 0xffffff00 highlight_color 0xe6e7e600 labelsize 20 textsize 29 + } + {fltk::TiledGroup} {} {open + xywh {0 65 450 215} resizable box FLAT_BOX color 0xd93b4300 + extra_code {o->parent()->resizable(o);} + } { + {fltk::InvisibleBox} help_window { + label {Welcome to the control panel. Here you can setup most things on your computer.} + xywh {0 0 110 195} align 128 box DOWN_BOX color 0xfff9e400 labelcolor 32 + extra_code {o->set_value();} + } + {fltk::Group} {} {open + private xywh {110 0 340 195} align 0 box DOWN_BOX color 7 + extra_code {\#include +o->edge_offset(10);} + class {fltk::ScrollGroup} + } { + {fltk::Button} {} { + label Icons + callback {help_window->label(_("Change behaviour of your desktop icons.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("eiconsconf &");} + tooltip {Icons settings.} + private xywh {10 15 60 75} align 128 box HIGHLIGHT_DOWN_BOX buttonbox NO_BOX + image {icons/behaviour.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label {Colors and Fonts} + callback {help_window->label(_("Configure global colors and fonts used by EDE applications.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("ecolorconf &");} + tooltip {Colors settings.} + private xywh {75 15 60 75} align 128 box HIGHLIGHT_DOWN_BOX + image {icons/themes.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label {Screen Saver} + callback {help_window->label(_("Configure the screensaver.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("esvrconf &");} + tooltip {Screensaver configuration.} + private xywh {140 15 60 75} align 128 box HIGHLIGHT_DOWN_BOX + image {icons/screensaver.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label {Window Manager} + callback {help_window->label(_("Setup window decorations and other options.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("ewmconf &");} + tooltip {Window manager settings.} + private xywh {10 95 60 75} align 128 box HIGHLIGHT_DOWN_BOX + image {icons/windowmanager.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label Display + callback {help_window->label(_("Set various options for the X windowing system.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("edisplayconf &");} + tooltip {Display settings. } + private xywh {75 95 60 75} box HIGHLIGHT_DOWN_BOX + image {icons/display.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label {Install New Software} + callback {help_window->label(_("This utility helps you to install new software.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("einstaller",false);} selected + tooltip {Software installation.} + private xywh {140 95 60 75} align 128 box HIGHLIGHT_DOWN_BOX + image {icons/newsoft.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label {Time and Date} + callback {help_window->label(_("Show and set computer time and date.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("etimedate",false);} + tooltip {Time and date settings.} + private xywh {205 95 60 75} align 128 box HIGHLIGHT_DOWN_BOX + image {icons/timedate.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label Panel + callback {help_window->label(_("Change panel behaviour and choose applets.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("epanelconf",false);} + tooltip {Panel configuration.} + private xywh {205 15 60 75} box HIGHLIGHT_DOWN_BOX + image {icons/panel.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + {fltk::Button} {} { + label Keyboard + callback {help_window->label(_("Configure keyboard shortcuts and other options.")); +help_window->redraw(); +//if (Fl::event_clicks()) + run_program("ekeyconf",false);} + tooltip {Keyboard settings} + private xywh {265 15 60 75} box HIGHLIGHT_DOWN_BOX buttonbox NO_BOX + image {icons/keyboard.xpm} color 7 highlight_color 7 highlight_textcolor 32 labelsize 10 + } + } + } + } + {fltk::InvisibleBox} status_bar { + label Ready + private xywh {0 281 450 24} box DOWN_BOX + class {fltk::StatusBarGroup} + } + } + code {configPanelWindow->menu(main_menubar); +configPanelWindow->view(main_view); +configPanelWindow->status(status_bar);} {} +} + +decl {\#include "NLS.h"} {} diff --git a/econtrol/econtrol.h b/econtrol/econtrol.h new file mode 100755 index 0000000..6bb9a19 --- /dev/null +++ b/econtrol/econtrol.h @@ -0,0 +1,25 @@ +/* + * $Id$ + * + * The EDE control center + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef econtrol_h +#define econtrol_h +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/econtrol/icons/behaviour.xpm b/econtrol/icons/behaviour.xpm new file mode 100755 index 0000000..c7802ae --- /dev/null +++ b/econtrol/icons/behaviour.xpm @@ -0,0 +1,441 @@ +/* XPM */ +static char * behaviour_xpm[] = { +"32 32 406 2", +" c None", +". c #FFD303", +"+ c #FFDB7C", +"@ c #FFBF49", +"# c #FFE013", +"$ c #FFE793", +"% c #FFF0DC", +"& c #FFA345", +"* c #7CACFA", +"= c #70A2F5", +"- c #FBD208", +"; c #FFE427", +"> c #FFC419", +", c #FFBE46", +"' c #FF8E2B", +") c #CCCCCC", +"! c #C9CBCE", +"~ c #85B1FB", +"{ c #A3C6FF", +"] c #B8D6FF", +"^ c #CCE6FF", +"/ c #B3BFA4", +"( c #FFE526", +"_ c #FFCF28", +": c #FFC61F", +"< c #FF9E2B", +"[ c #FF6E00", +"} c #B4C0D2", +"| c #A8B8D2", +"1 c #CCCED1", +"2 c #D6D6D6", +"3 c #C9D7E9", +"4 c #D3EAFF", +"5 c #C5E5FF", +"6 c #BEE2FF", +"7 c #B4DEFF", +"8 c #F2D731", +"9 c #FFE23A", +"0 c #FFCA2C", +"a c #FFB834", +"b c #FF8012", +"c c #9ABFFB", +"d c #9EBAE5", +"e c #A6B8D4", +"f c #D7D7D7", +"g c #D2D2D2", +"h c #D2D4D6", +"i c #C6E2F9", +"j c #C2E4FF", +"k c #CCD79F", +"l c #FFE839", +"m c #FFD23B", +"n c #FFC934", +"o c #FF9F35", +"p c #A5C5F9", +"q c #ABCAFD", +"r c #BFD8FF", +"s c #D2E5FF", +"t c #D5E3EF", +"u c #BBC9D5", +"v c #CBCED1", +"w c #D4D4D4", +"x c #D1D1D1", +"y c #CAD4DC", +"z c #C2E1EF", +"A c #F9DB2C", +"B c #FFE14D", +"C c #FFCF40", +"D c #FFBD47", +"E c #FD790C", +"F c #AFCBFA", +"G c #B9D3FD", +"H c #CEE1FF", +"I c #E1EEFF", +"J c #F0F8FF", +"K c #E6F4FF", +"L c #DAE9F6", +"M c #BECEDA", +"N c #C5CCD1", +"O c #D9D9D9", +"P c #D8D8D8", +"Q c #D3D3D3", +"R c #D0D0D0", +"S c #C5DCEF", +"T c #DBD77F", +"U c #FFEC54", +"V c #FFD54E", +"W c #FFCD48", +"X c #FF9B37", +"Y c #B9D4FE", +"Z c #DEEBFF", +"` c #F1F7FF", +" . c #F6FBFF", +".. c #F1F9FF", +"+. c #EDF7FF", +"@. c #EAF6FF", +"#. c #E3F1FC", +"$. c #C9D7E3", +"%. c #C6CFD6", +"&. c #DDDDDD", +"*. c #DADADA", +"=. c #D5D5D5", +"-. c #D8D4BA", +";. c #FADE39", +">. c #FFE561", +",. c #FFD453", +"'. c #FFBE53", +"). c #EA710E", +"!. c #CBDFFE", +"~. c #FFFFFF", +"{. c #FCFEFF", +"]. c #F8FCFF", +"^. c #F5FAFF", +"/. c #D3E0EA", +"(. c #C6CFD8", +"_. c #E2E2E2", +":. c #DFDFDF", +"<. c #DCDCDC", +"[. c #EFD558", +"}. c #FFEF6D", +"|. c #FFD961", +"1. c #FFD05D", +"2. c #FF9733", +"3. c #7A5D5B", +"4. c #B1CCF7", +"5. c #DFEAF3", +"6. c #C6CFD7", +"7. c #D3D4D4", +"8. c #E9E9E9", +"9. c #E4E4E4", +"0. c #E1E1E1", +"a. c #DEDEDE", +"b. c #DBDBDB", +"c. c #D9D3B9", +"d. c #FFE242", +"e. c #FFE574", +"f. c #FFDA66", +"g. c #FFC264", +"h. c #D99767", +"i. c #4875C1", +"j. c #ECF3FF", +"k. c #E9F3FB", +"l. c #C8D2D9", +"m. c #D2D4D5", +"n. c #ECECEC", +"o. c #E6E6E6", +"p. c #E3E3E3", +"q. c #E0E0E0", +"r. c #F4D647", +"s. c #FFEE7E", +"t. c #FFDE74", +"u. c #FFD570", +"v. c #F99B42", +"w. c #AFC7DF", +"x. c #4E82DC", +"y. c #D9E7FF", +"z. c #D1DAE1", +"A. c #D1D4D6", +"B. c #EEEEEE", +"C. c #EBEBEB", +"D. c #E8E8E8", +"E. c #E5E5E5", +"F. c #E3D7A3", +"G. c #FFE85F", +"H. c #FFE785", +"I. c #FFE079", +"J. c #FFC26D", +"K. c #DD9D6D", +"L. c #93CCFF", +"M. c #73A7F9", +"N. c #C4DBFF", +"O. c #DCE3E9", +"P. c #CED1D4", +"Q. c #E7E7E7", +"R. c #F3F3F3", +"S. c #F0F0F0", +"T. c #EDEDED", +"U. c #EAEAEA", +"V. c #F6D74C", +"W. c #FFF39C", +"X. c #FFE387", +"Y. c #FFDB82", +"Z. c #FC993E", +"`. c #D9CFC9", +" + c #A1CAEF", +".+ c #82B6FF", +"++ c #A8C6F6", +"@+ c #FDFEFF", +"#+ c #EBF0F5", +"$+ c #CFD3D7", +"%+ c #F8F8F8", +"&+ c #F5F5F5", +"*+ c #F2F2F2", +"=+ c #EFEFEF", +"-+ c #ECDB8C", +";+ c #FFEE83", +">+ c #FFE997", +",+ c #FFE48D", +"'+ c #FFBC69", +")+ c #E5A675", +"!+ c #B8CBDC", +"~+ c #89BEFF", +"{+ c #3A63A8", +"]+ c #A1BEEE", +"^+ c #E9F2FF", +"/+ c #F3F7FA", +"(+ c #D5D8DB", +"_+ c #FDFDFD", +":+ c #FAFAFA", +"<+ c #F7F7F7", +"[+ c #F4F4F4", +"}+ c #F1F1F1", +"|+ c #FBDD4C", +"1+ c #FFF4AE", +"2+ c #FFE99A", +"3+ c #FFDF94", +"4+ c #FA9640", +"5+ c #CECECE", +"6+ c #98C9F5", +"7+ c #96CBFF", +"8+ c #4479D4", +"9+ c #D4E4FF", +"0+ c #F2F6F9", +"a+ c #D6D8D9", +"b+ c #FBFBFB", +"c+ c #FCFCFC", +"d+ c #F9F9F9", +"e+ c #F6F6F6", +"f+ c #F3DC73", +"g+ c #FFF19E", +"h+ c #FFEEAA", +"i+ c #FFEAA0", +"j+ c #FFBB6A", +"k+ c #E7B087", +"l+ c #B1CAE1", +"m+ c #8AC7FF", +"n+ c #8FC8FC", +"o+ c #6096EC", +"p+ c #BDD6FF", +"q+ c #FAFDFF", +"r+ c #E0E4E9", +"s+ c #D7DEE2", +"t+ c #FEFEFE", +"u+ c #F9E06E", +"v+ c #FFF6C0", +"w+ c #FFEEAD", +"x+ c #FFE5A5", +"y+ c #F69A4C", +"z+ c #C2C8CF", +"A+ c #8DC0F1", +"B+ c #7FB7EC", +"C+ c #7BB5ED", +"D+ c #6596E3", +"E+ c #9EC0F6", +"F+ c #F6FAFF", +"G+ c #D2D9DE", +"H+ c #D7DBDF", +"I+ c #FCDA70", +"J+ c #FFF1CE", +"K+ c #FFEFB4", +"L+ c #FFB25F", +"M+ c #D2AD92", +"N+ c #BEBEBE", +"O+ c #8BABCA", +"P+ c #7BADDD", +"Q+ c #72A5D6", +"R+ c #71A7DB", +"S+ c #6C9CDB", +"T+ c #294577", +"U+ c #97B9EE", +"V+ c #E0ECFF", +"W+ c #EBF3F9", +"X+ c #CED6DE", +"Y+ c #D4D6D8", +"Z+ c #F0D390", +"`+ c #FFB160", +" @ c #D5A175", +".@ c #B3B3B3", +"+@ c #9CA6B1", +"@@ c #77A6D1", +"#@ c #74A5D3", +"$@ c #71A5D6", +"%@ c #6EA4D8", +"&@ c #71A3DB", +"*@ c #2C569D", +"=@ c #C9DDFF", +"-@ c #F5FBFF", +";@ c #DFE9F0", +">@ c #CCD6DE", +",@ c #BEBDC7", +"'@ c #C4A383", +")@ c #C8B098", +"!@ c #B8B8B8", +"~@ c #AAAAAA", +"{@ c #7FA6CA", +"]@ c #76A6D1", +"^@ c #73A5D3", +"/@ c #70A4D6", +"(@ c #6CA3D8", +"_@ c #77ACDC", +":@ c #3B6CC2", +"<@ c #AFCEFF", +"[@ c #F7FCFF", +"}@ c #CAD9E6", +"|@ c #C9D3DB", +"1@ c #C7C7C7", +"2@ c #A2A2AA", +"3@ c #B5B5B8", +"4@ c #BCBCBC", +"5@ c #B2B2B2", +"6@ c #8FA4B7", +"7@ c #78A6CF", +"8@ c #78A9D7", +"9@ c #72A4D3", +"0@ c #76AEE4", +"a@ c #6FA9DF", +"b@ c #77B5F1", +"c@ c #5992EF", +"d@ c #96BAF6", +"e@ c #F4F9FF", +"f@ c #EBF6FF", +"g@ c #DAEDFC", +"h@ c #BDD1E1", +"i@ c #CED2D6", +"j@ c #A9AEB2", +"k@ c #8BB7E0", +"l@ c #82B4E2", +"m@ c #84BBEF", +"n@ c #81BBF1", +"o@ c #8AC3F9", +"p@ c #91C5FD", +"q@ c #6DA7FD", +"r@ c #4682EA", +"s@ c #8FB2EE", +"t@ c #DDEAFF", +"u@ c #E8F4FF", +"v@ c #DBEFFF", +"w@ c #CFE5F8", +"x@ c #B9CCDC", +"y@ c #A5CAEC", +"z@ c #94C8F9", +"A@ c #92CAFF", +"B@ c #9FD0FD", +"C@ c #8DBFFF", +"D@ c #639EFF", +"E@ c #396FCE", +"F@ c #25447B", +"G@ c #C3DAFF", +"H@ c #F2F9FF", +"I@ c #E5F3FF", +"J@ c #D9EEFF", +"K@ c #D2EBFF", +"L@ c #BFDAEF", +"M@ c #BFCCD8", +"N@ c #BCCAD8", +"O@ c #A1D2FF", +"P@ c #A9D5FF", +"Q@ c #8ABBFF", +"R@ c #5C96F9", +"S@ c #3867B8", +"T@ c #A8C9FF", +"U@ c #E2F2FF", +"V@ c #D8EDFF", +"W@ c #D1EAFF", +"X@ c #C9E6FE", +"Y@ c #B2CFE7", +"Z@ c #CBCFD3", +"`@ c #AED1F9", +" # c #80B2FF", +".# c #4A82E1", +"+# c #375D9E", +"@# c #8CB4F6", +"## c #F2F8FF", +"$# c #E1F1FF", +"%# c #D6ECFF", +"&# c #CFE9FF", +"*# c #C8E6FF", +"=# c #BFDFFA", +"-# c #B1C9DE", +";# c #A0B9DF", +"># c #4A7BCE", +",# c #87B0F1", +"'# c #DAE8FF", +")# c #DFF1FF", +"!# c #D4EBFF", +"~# c #CDE8FF", +"{# c #C7E5FF", +"]# c #B9D7F5", +"^# c #AFBFD6", +"/# c #C3C7CC", +"(# c #BED7FF", +"_# c #E0F1FF", +":# c #BFDCFF", +"<# c #96C0FF", +"[# c #5F90E0", +"}# c #607497", +"|# c #C4C4C4", +"1# c #7B7B7B", +"2# c #A0C4FF", +"3# c #E8F3FF", +"4# c #BAD7FF", +"5# c #80AFF9", +"6# c #5E88CF", +"7# c #84B0F8", +"8# c #84AEF4", +"9# c #5576AC", +" . + @ ", +" # $ % & ", +" * = - ; > , ' ", +" ) ) ! ~ { ] ^ / ( _ : < [ ", +" } | 1 2 3 4 5 6 7 8 9 0 a b ", +" c d e 1 f g h i j 6 k l m n o ", +" p q r s t u v f w x x y j z A B C D E ", +" F G H I J K L M N O P 2 Q R R S T U V W X ", +" Y H Z ` ...+.@.#.$.%.&.&.*.P =.g g -.;.>.,.'.). ", +" !.~.{.].^...+.@./.(.O _.:.<.O f w x [.}.|.1.2.3. ", +" 4.~.{.].^...+.5.6.7.8.9.0.a.b.P 2 c.d.e.f.g.h.i. ", +" j.{.].^...k.l.m.n.8.o.p.q.&.*.P r.s.t.u.v.w.x. ", +" y.{.].^...z.A.n.B.C.D.E._.:.<.F.G.H.I.J.K.L.M. ", +" N.{.].^.O.P.Q.R.S.T.U.Q.9.0.a.V.W.X.Y.Z.`. +.+ ", +" ++@+].#+$+9.%+&+*+=+n.8.o.p.-+;+>+,+'+)+g !+~+{+ ", +" ]+^+/+(+<._+:+<+[+}+B.C.D.E.|+1+2+3+4+Q 5+6+7+8+ ", +" 9+0+$+a+b+c+d+e+R.S.T.U.f+g+h+i+j+k+Q l+m+n+o+ ", +" p+q+r+s+<.t+b+%+&+*+=+n.u+v+w+x+y+=.z+A+B+C+D+ ", +" E+F+^.G+H+=+_+:+<+[+}+B.I+J+K+L+M+N+O+P+Q+R+S+T+ ", +" U+V+^.W+X+Y+b+c+d+e+R.=+Z+% `+ @.@+@@@#@$@%@&@*@ ", +" =@-@..;@>@<.t+b+%+*+9.,@'@)@!@~@{@]@^@/@(@_@:@ ", +" <@[@..+.}@|@=+_+:+B.1@2@3@4@5@6@7@8@9@0@a@b@c@ ", +" d@e@..f@g@h@i@b+c+%+b.*.:.5+j@k@l@m@n@o@p@q@r@ ", +" s@t@..u@v@w@x@<.t+b+%+R.*+a.y@z@A@B@C@D@E@F@ ", +" G@H@I@J@K@L@M@=+_+:+<+=+N@O@P@Q@R@S@ ", +" T@ .U@V@W@X@Y@Z@b+c+d+Y+`@ #.#+# ", +" @###$#%#&#*#=#-#_.t+n.;#># ", +" ,#'#)#!#~#{#*#]#^#=+/# ", +" (#_#!#%#:#<#[#}#|#1# ", +" 2#3#4#5#6# ", +" 7#8#9# ", +" "}; diff --git a/econtrol/icons/display.xpm b/econtrol/icons/display.xpm new file mode 100755 index 0000000..dcbc073 --- /dev/null +++ b/econtrol/icons/display.xpm @@ -0,0 +1,570 @@ +/* XPM */ +static char * display_xpm[] = { +"32 32 535 2", +" c None", +". c #ACD1F8", +"+ c #C6E0FA", +"@ c #D0E5FB", +"# c #CBE2FA", +"$ c #CAE2FA", +"% c #C9E0FA", +"& c #C7DFFA", +"* c #C6DFFA", +"= c #C7E1FA", +"- c #CBE3F9", +"; c #CCE3F9", +"> c #CDE4FA", +", c #CFE4FA", +"' c #CFE4F9", +") c #CFE5F9", +"! c #D2E5F8", +"~ c #D7E9F9", +"{ c #BAD9F9", +"] c #B5D6F8", +"^ c #91CEA8", +"/ c #379C4A", +"( c #46A25B", +"_ c #54AB6A", +": c #6FBA88", +"< c #8BC7AA", +"[ c #93CAB2", +"} c #9CCDBE", +"| c #AAD3CE", +"1 c #B6DADD", +"2 c #B9DCE5", +"3 c #BCDCEB", +"4 c #C3DFF5", +"5 c #C5E0FA", +"6 c #C4E0FA", +"7 c #C1E0FA", +"8 c #C5E1FA", +"9 c #A9CDF5", +"0 c #A0CBF5", +"a c #CDE9EB", +"b c #27963B", +"c c #017907", +"d c #01790B", +"e c #02770C", +"f c #03730E", +"g c #027010", +"h c #036E13", +"i c #046C17", +"j c #086D1C", +"k c #0B7023", +"l c #0D7029", +"m c #127131", +"n c #1B763A", +"o c #207842", +"p c #419067", +"q c #CCE3FA", +"r c #B7D8F8", +"s c #A2C8F2", +"t c #A9CEF7", +"u c #CAE4FB", +"v c #7AC495", +"w c #108D1E", +"x c #01A21F", +"y c #01A125", +"z c #029D23", +"A c #039923", +"B c #049226", +"C c #058D27", +"D c #06862B", +"E c #088030", +"F c #097938", +"G c #0C7341", +"H c #0E6B4A", +"I c #106453", +"J c #135C5F", +"K c #2C7D63", +"L c #C9E1FB", +"M c #C4E0F9", +"N c #8BBDFA", +"O c #C0DCF9", +"P c #B2D4F9", +"Q c #D4ECE8", +"R c #29963D", +"S c #059B18", +"T c #01A82A", +"U c #02A42A", +"V c #02A12A", +"W c #039C2B", +"X c #04972D", +"Y c #05922F", +"Z c #078B36", +"` c #08873C", +" . c #0A8144", +".. c #0D7A4C", +"+. c #0F7456", +"@. c #126C63", +"#. c #1E716F", +"$. c #ADD0E3", +"%. c #C9E3FA", +"&. c #C9E2FA", +"*. c #AFD3FB", +"=. c #578AC8", +"-. c #A2CBF6", +";. c #E1F3FD", +">. c #72BE8C", +",. c #0B9019", +"'. c #01AA28", +"). c #01A92E", +"!. c #02A62C", +"~. c #02A12B", +"{. c #039C2D", +"]. c #04982F", +"^. c #059331", +"/. c #078C36", +"(. c #09863E", +"_. c #0B8045", +":. c #0D794D", +"<. c #107358", +"[. c #136C65", +"}. c #61A39E", +"|. c #C9E3FB", +"1. c #CAE3FB", +"2. c #C2DFFA", +"3. c #78AEF6", +"4. c #2D5172", +"5. c #B2D3F8", +"6. c #C8E1FA", +"7. c #CCE9DD", +"8. c #239536", +"9. c #04A21E", +"0. c #01AE30", +"a. c #01AA31", +"b. c #02A52E", +"c. c #02A22E", +"d. c #039E30", +"e. c #049830", +"f. c #059334", +"g. c #078E39", +"h. c #09873E", +"i. c #0B8147", +"j. c #0D7A50", +"k. c #11715D", +"l. c #2A8270", +"m. c #B8DAEB", +"n. c #A1CCFF", +"o. c #4D80B9", +"p. c #C4DFF9", +"q. c #B0D1F7", +"r. c #EFF7FD", +"s. c #61B47B", +"t. c #0A951B", +"u. c #01AF30", +"v. c #01AF2E", +"w. c #01AC30", +"x. c #02A82F", +"y. c #02A430", +"z. c #03A030", +"A. c #049B32", +"B. c #059534", +"C. c #078F3B", +"D. c #098940", +"E. c #0E7A51", +"F. c #13765C", +"G. c #78B6AE", +"H. c #CCE4FB", +"I. c #CBE3FB", +"J. c #BEDDFE", +"K. c #6EA4E9", +"L. c #334F68", +"M. c #A6CEF7", +"N. c #DDEEFC", +"O. c #BBDDCC", +"P. c #1B942F", +"Q. c #01A824", +"R. c #00B435", +"S. c #01B031", +"T. c #01AC31", +"U. c #02AA32", +"V. c #02A532", +"W. c #03A230", +"X. c #049B33", +"Y. c #059734", +"Z. c #07903A", +"`. c #098A3E", +" + c #0B8346", +".+ c #0E7953", +"++ c #399475", +"@+ c #C7E2F6", +"#+ c #CDE5FB", +"$+ c #98C4FB", +"%+ c #4D7DA6", +"&+ c #B4D5F8", +"*+ c #C2DEF9", +"=+ c #EDF7F9", +"-+ c #59AF71", +";+ c #059C1B", +">+ c #00B73C", +",+ c #01B232", +"'+ c #01AB32", +")+ c #02A634", +"!+ c #03A431", +"~+ c #049E35", +"{+ c #059936", +"]+ c #079339", +"^+ c #088C3D", +"/+ c #0B8347", +"(+ c #178355", +"_+ c #93C9C4", +":+ c #CCE5FB", +"<+ c #CBE5FB", +"[+ c #B7D8FB", +"}+ c #679EEC", +"|+ c #30464A", +"1+ c #C6DFF9", +"2+ c #AAD1F7", +"3+ c #EEF8FE", +"4+ c #B6D9CB", +"5+ c #14962A", +"6+ c #00B232", +"7+ c #00B93D", +"8+ c #00B637", +"9+ c #01B333", +"0+ c #01B032", +"a+ c #01AC32", +"b+ c #02A834", +"c+ c #03A435", +"d+ c #04A034", +"e+ c #059B38", +"f+ c #06953A", +"g+ c #088E3F", +"h+ c #0B8447", +"i+ c #4FA882", +"j+ c #CDE6FB", +"k+ c #C7E1FB", +"l+ c #8EBEF5", +"m+ c #4773BE", +"n+ c #ACD0F7", +"o+ c #EBF4F4", +"p+ c #379E48", +"q+ c #03A623", +"r+ c #00BD44", +"s+ c #00BB42", +"t+ c #01B83A", +"u+ c #01B538", +"v+ c #01B235", +"w+ c #01AF32", +"x+ c #02AB33", +"y+ c #03A736", +"z+ c #04A238", +"A+ c #059D38", +"B+ c #06973A", +"C+ c #088E40", +"D+ c #19924F", +"E+ c #AAD7D6", +"F+ c #CEE6FB", +"G+ c #B3D6F9", +"H+ c #6198E6", +"I+ c #25365A", +"J+ c #8BBCF3", +"K+ c #C5DFFA", +"L+ c #F5FCFE", +"M+ c #A4DDC5", +"N+ c #12A938", +"O+ c #00BD42", +"P+ c #00BF46", +"Q+ c #00BC45", +"R+ c #00BA3F", +"S+ c #01B73C", +"T+ c #01B43A", +"U+ c #01B035", +"V+ c #02AC33", +"W+ c #02A835", +"X+ c #03A237", +"Y+ c #049F39", +"Z+ c #06983A", +"`+ c #088F40", +" @ c #67BB92", +".@ c #D2E6FB", +"+@ c #C2E1FA", +"@@ c #80B3F1", +"#@ c #426BB0", +"$@ c #6DA6EF", +"%@ c #FDFFFE", +"&@ c #E3F7F2", +"*@ c #6AD0B1", +"=@ c #17C468", +"-@ c #00C147", +";@ c #00BE45", +">@ c #00BB43", +",@ c #01B840", +"'@ c #01B53B", +")@ c #01B238", +"!@ c #02AE34", +"~@ c #02AA35", +"{@ c #03A637", +"]@ c #04A039", +"^@ c #069A3D", +"/@ c #24A356", +"(@ c #C0E0E6", +"_@ c #D2E7FB", +":@ c #A3CBF6", +"<@ c #5D98EE", +"[@ c #6DA2EB", +"}@ c #78AAEE", +"|@ c #A3C9F6", +"1@ c #E8F4FC", +"2@ c #FBFFFF", +"3@ c #B6E4E2", +"4@ c #40C58D", +"5@ c #06C04B", +"6@ c #00B941", +"7@ c #01B73F", +"8@ c #01B339", +"9@ c #02B037", +"0@ c #02AC37", +"a@ c #03A737", +"b@ c #04A13B", +"c@ c #059C3B", +"d@ c #7FCBA9", +"e@ c #D5E8FB", +"f@ c #B4D7F7", +"g@ c #76B0FC", +"h@ c #384F7A", +"i@ c #6C9AD9", +"j@ c #7AABEE", +"k@ c #B6D4F7", +"l@ c #F2FAFF", +"m@ c #EEF9FB", +"n@ c #83D2C2", +"o@ c #20C068", +"p@ c #01BB45", +"q@ c #01BA43", +"r@ c #01B63E", +"s@ c #01B139", +"t@ c #02AE38", +"u@ c #03A938", +"v@ c #04A43A", +"w@ c #2EB15F", +"x@ c #D1E9F6", +"y@ c #D2E8FB", +"z@ c #B8D9F9", +"A@ c #97C4F8", +"B@ c #588AD9", +"C@ c #6191D2", +"D@ c #80B0EF", +"E@ c #C3DDF9", +"F@ c #F4FDFF", +"G@ c #C9EBEB", +"H@ c #50C499", +"I@ c #10BD53", +"J@ c #01B740", +"K@ c #01B33F", +"L@ c #02B03D", +"M@ c #03AC3B", +"N@ c #05A73B", +"O@ c #98D8C0", +"P@ c #D7EBFB", +"Q@ c #C0DDF9", +"R@ c #A5CFF7", +"S@ c #5C97ED", +"T@ c #4466A8", +"U@ c #6598DE", +"V@ c #89B7F2", +"W@ c #EEF9FE", +"X@ c #99D6D2", +"Y@ c #33BE7D", +"Z@ c #01B53E", +"`@ c #02B140", +" # c #02AD3D", +".# c #49C279", +"+# c #D4EAF8", +"@# c #A8D0F7", +"## c #81B5F9", +"$# c #3573BB", +"%# c #2E4942", +"&# c #436CA9", +"*# c #6699E2", +"=# c #96C1F7", +"-# c #DAEDFF", +";# c #DCEFFA", +"># c #6BC8B4", +",# c #12B753", +"'# c #0FB448", +")# c #ABE0D0", +"!# c #B4D6F8", +"~# c #8FC0F4", +"{# c #5190F6", +"]# c #3571A3", +"^# c #2E4726", +"/# c #4D78BE", +"(# c #699EEA", +"_# c #A4CAFA", +":# c #E0F3FF", +"<# c #B5DFE5", +"[# c #8CD5BF", +"}# c #E3F1FD", +"|# c #C6E1FB", +"1# c #96C4F5", +"2# c #68A0ED", +"3# c #4687F5", +"4# c #4982A1", +"5# c #263E20", +"6# c #4066A2", +"7# c #6CA0E7", +"8# c #B1D7FF", +"9# c #DEEDFB", +"0# c #DAEDFC", +"a# c #9EC9F6", +"b# c #70A8F0", +"c# c #4886E7", +"d# c #70AAFE", +"e# c #558993", +"f# c #1B2C19", +"g# c #4870A9", +"h# c #79B1F5", +"i# c #76ACF0", +"j# c #4A8BEA", +"k# c #3B7DE7", +"l# c #669EEB", +"m# c #99CAFF", +"n# c #598798", +"o# c #8DA7A4", +"p# c #C7D9D8", +"q# c #D6D7D8", +"r# c #C8CFD0", +"s# c #BEC6C2", +"t# c #BCC8D1", +"u# c #B5D7FB", +"v# c #8EBCF3", +"w# c #8EBBF3", +"x# c #A4C9F6", +"y# c #D4ECFE", +"z# c #ABC9EE", +"A# c #586574", +"B# c #B2CDE1", +"C# c #98C3E3", +"D# c #DCF6FF", +"E# c #F9FFFF", +"F# c #F8FFFF", +"G# c #F6FFFF", +"H# c #ECFAFF", +"I# c #DEEEFC", +"J# c #DEEFFC", +"K# c #EAF6FD", +"L# c #E8F5FE", +"M# c #D1E7FC", +"N# c #ACD4FD", +"O# c #8AC1F2", +"P# c #597E74", +"Q# c #D0E6FA", +"R# c #A4CEFD", +"S# c #C7E3FF", +"T# c #CFE7FB", +"U# c #D6EAFC", +"V# c #E7F3FD", +"W# c #E7F4FD", +"X# c #E3F3FD", +"Y# c #E6F4FD", +"Z# c #EBF6FD", +"`# c #DCEEFC", +" $ c #BDDCFA", +".$ c #8CBEF3", +"+$ c #7AB1F1", +"@$ c #75ADF8", +"#$ c #69ABE6", +"$$ c #3D5662", +"%$ c #98C5FF", +"&$ c #B8DAFB", +"*$ c #D3E8FB", +"=$ c #CBE4FB", +"-$ c #D4E8FC", +";$ c #DFEFFC", +">$ c #CEE6FA", +",$ c #A4CDF7", +"'$ c #98C4F5", +")$ c #8BBDF3", +"!$ c #80B5F2", +"~$ c #78B0F7", +"{$ c #6CADFF", +"]$ c #376DAD", +"^$ c #4D7BAA", +"/$ c #74A9EF", +"($ c #B2D8FF", +"_$ c #D0E7FF", +":$ c #CCE4FA", +"<$ c #C8E2FA", +"[$ c #CAE3FA", +"}$ c #D7EAFB", +"|$ c #CBE4FA", +"1$ c #B8D9F8", +"2$ c #ACD1F7", +"3$ c #A3CCF6", +"4$ c #99C5F4", +"5$ c #93C4F7", +"6$ c #84BDFF", +"7$ c #5D9CDC", +"8$ c #3B66A3", +"9$ c #182A2A", +"0$ c #5484B6", +"a$ c #86B7F1", +"b$ c #BCDDFD", +"c$ c #CAE4FA", +"d$ c #C4E1FA", +"e$ c #C6E2FA", +"f$ c #BBD9F9", +"g$ c #B1D5F8", +"h$ c #ABD1F8", +"i$ c #ABD2F9", +"j$ c #9DCEFF", +"k$ c #74ADF0", +"l$ c #426D75", +"m$ c #1C2E36", +"n$ c #3B6468", +"o$ c #6095EB", +"p$ c #97C3F5", +"q$ c #BDDFFB", +"r$ c #C9E5FB", +"s$ c #B8DBFF", +"t$ c #B0DAFF", +"u$ c #85BBF4", +"v$ c #497796", +"w$ c #1F2F4A", +"x$ c #181616", +"y$ c #5482CC", +"z$ c #70ABFA", +"A$ c #A9CEF8", +"B$ c #C8E5FD", +"C$ c #BCE0FF", +"D$ c #91C2D3", +"E$ c #4F778E", +"F$ c #1E2D2F", +"G$ c #5E91DA", +"H$ c #6FA0E7", +"I$ c #527CAA", +"J$ c #1B2C20", +" ", +" . + @ # $ % & * = - ; > , ' ' ) ! ~ ", +" { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 ", +" 0 a b c d e f g h i j k l m n o p $ q r s ", +" t u v w x y z A B C D E F G H I J K L # M N ", +" O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=. ", +" -.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4. ", +" 5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.1.%.n.o. ", +" p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.i.E.F.G.H.I.J.K.L. ", +" M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+|.$+%+ ", +" &+*+=+-+;+>+R.,+u.'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+ ", +" 1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+#+k+l+m+ ", +" n+N.o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+u G+H+I+ ", +" J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@H.+@@@#@ ", +" $@q %@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@8 :@<@ ", +" [@}@|@1@2@3@4@5@Q+6@7@8@9@0@a@b@c@d@e@1.f@g@h@ ", +" i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@ ", +" C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@ ", +" U@V@y@W@X@Y@Z@`@ #.#+#F+@###$#%# ", +" &#*#=#-#;#>#,#'#)#P@!#~#{#]#^# ", +" /#(#_#:#<#[#}#|#1#2#3#4#5# ", +" 6#7#8#9#0#a#b#c#d#e#f# ", +" g#h#i#j#k#l#m#n# ", +" o#p#q#r#s#t#u#v#w#x#6 y#z#A# ", +" B#C#D#E#2@F#G#H#I#J#K#L#M#r N#O#P# ", +" Q#R#S#T#U#}#V#W#X#Y#Z#`# $-..$+$@$#$$$ ", +" %$&$*$<+=$H.#+:+-$;$>$G+,$'$)$!$~${$]$ ", +" ^$/$($_$:$|.<$[$}$|$1$2$3$4$5$6$7$8$9$ ", +" 0$a$b$c$d$e$:+f$g$h$i$j$k$l$m$ ", +" n$o$p$q$r$d$z@s$t$u$v$w$x$ ", +" y$z$A$B$C$D$E$F$ ", +" G$H$I$J$ "}; diff --git a/econtrol/icons/hwinfo.xpm b/econtrol/icons/hwinfo.xpm new file mode 100755 index 0000000..2e8ea75 --- /dev/null +++ b/econtrol/icons/hwinfo.xpm @@ -0,0 +1,688 @@ +/* XPM */ +static char * hwinfo_xpm[] = { +"32 32 653 2", +" c None", +". c #BECEC6", +"+ c #CAD5C9", +"@ c #C7D6D0", +"# c #B9D4E6", +"$ c #CFE0EB", +"% c #CCDEE8", +"& c #CDDEE5", +"* c #CBDDE3", +"= c #CCDCE1", +"- c #CBDBDE", +"; c #CEDEDD", +"> c #D0DFDD", +", c #D2E0DB", +"' c #D3E0DA", +") c #D5E0DA", +"! c #D5E1D8", +"~ c #D6E1D6", +"{ c #D8E1D6", +"] c #DBE4D9", +"^ c #A7CBEE", +"/ c #C0D9F5", +"( c #6F99C8", +"_ c #7198C5", +": c #7CA1D1", +"< c #90B2E0", +"[ c #9EC1E9", +"} c #A2C4EC", +"| c #ABCAEF", +"1 c #B9D6F5", +"2 c #BED9F7", +"3 c #C0DCF9", +"4 c #C4DEFA", +"5 c #C3DFF9", +"6 c #C1DFF8", +"7 c #C5E2F8", +"8 c #B1C9D5", +"9 c #B5CED8", +"0 c #C2DEFA", +"a c #82AADE", +"b c #537DAB", +"c c #547DA8", +"d c #4874A4", +"e c #3C6B9E", +"f c #336499", +"g c #2C5E95", +"h c #275A93", +"i c #265C97", +"j c #255E9A", +"k c #285E9C", +"l c #2E63A3", +"m c #366AA6", +"n c #4A79B4", +"o c #CAE2FA", +"p c #CCE2FA", +"q c #B6D6F8", +"r c #ACC5CD", +"s c #356D19", +"t c #3F7828", +"u c #1E5902", +"v c #CAD6CF", +"w c #ACD1F5", +"x c #C5DCF6", +"y c #5684BC", +"z c #6A9BD7", +"A c #5A95E5", +"B c #4C8ADE", +"C c #4080D8", +"D c #3577CE", +"E c #2D6FC7", +"F c #286ABC", +"G c #2264B3", +"H c #205FA9", +"I c #1D5BA0", +"J c #1C5796", +"K c #1B538B", +"L c #28609B", +"M c #C9E1FB", +"N c #C4DFFA", +"O c #89B9F4", +"P c #307413", +"Q c #55BF40", +"R c #4DB038", +"S c #3C8D25", +"T c #2A6A0E", +"U c #214811", +"V c #A9CAE6", +"W c #D9ECFC", +"X c #7EA5D5", +"Y c #5A8BC2", +"Z c #6CA3ED", +"` c #5996ED", +" . c #498AE9", +".. c #3C80E5", +"+. c #3479E0", +"@. c #2A70DA", +"#. c #2269D4", +"$. c #1D64CC", +"%. c #1A60C4", +"&. c #175BBA", +"*. c #1759B0", +"=. c #1C5CA7", +"-. c #8CB5E1", +";. c #C9E3FA", +">. c #ABD1FE", +",. c #5D7E94", +"'. c #2B7210", +"). c #60C447", +"!. c #66D24F", +"~. c #5FD74C", +"{. c #53C540", +"]. c #459E30", +"^. c #305F21", +"/. c #43684A", +"(. c #A7BDC1", +"_. c #BBD7F0", +":. c #C3D7EC", +"<. c #497CB8", +"[. c #699FE0", +"}. c #6DA3F1", +"|. c #5995EE", +"1. c #4B8BE9", +"2. c #3F82E5", +"3. c #337AE0", +"4. c #2A71DA", +"5. c #236AD3", +"6. c #1D64CB", +"7. c #1B60C2", +"8. c #1658AB", +"9. c #4B82C6", +"0. c #C8E2FA", +"a. c #CBE3FB", +"b. c #C2DFFC", +"c. c #70A3E4", +"d. c #4B5249", +"e. c #256F0B", +"f. c #8FC968", +"g. c #AAD57D", +"h. c #9CD473", +"i. c #89D669", +"j. c #63D84F", +"k. c #5ED94A", +"l. c #5BC348", +"m. c #55AC41", +"n. c #5E9278", +"o. c #618AB9", +"p. c #417BBC", +"q. c #6AA1EC", +"r. c #70A5F1", +"s. c #5B97EE", +"t. c #4D8DEB", +"u. c #4084E6", +"v. c #367CE0", +"w. c #2D73DB", +"x. c #246CD4", +"y. c #1E65CB", +"z. c #195CB7", +"A. c #2665B7", +"B. c #A3C7EC", +"C. c #C9E3FB", +"D. c #CCE4FB", +"E. c #9BC6FE", +"F. c #5A798B", +"G. c #296F0E", +"H. c #85C65F", +"I. c #5FC746", +"J. c #89CF61", +"K. c #97D06D", +"L. c #98D472", +"M. c #7DD963", +"N. c #69DA55", +"O. c #6BE854", +"P. c #48A34B", +"Q. c #2D5D8B", +"R. c #3C7AC8", +"S. c #6299E6", +"T. c #74A7EE", +"U. c #609CEF", +"V. c #5090EA", +"W. c #4285E6", +"X. c #387DE1", +"Y. c #2E75DB", +"Z. c #266DD5", +"`. c #1F67CC", +" + c #1C62C3", +".+ c #1A5EB7", +"++ c #6597D6", +"@+ c #BBDBFF", +"#+ c #6899CE", +"$+ c #46493D", +"%+ c #276F0D", +"&+ c #85C660", +"*+ c #5CBB44", +"=+ c #6A7A65", +"-+ c #7FC272", +";+ c #5FCD4A", +">+ c #A3BE6A", +",+ c #ADCD7A", +"'+ c #9BD874", +")+ c #88CB5D", +"!+ c #487965", +"~+ c #2D6ABA", +"{+ c #4C88D6", +"]+ c #74A5E8", +"^+ c #669FED", +"/+ c #5693EB", +"(+ c #478AE7", +"_+ c #3B80E3", +":+ c #3078DC", +"<+ c #2870D5", +"[+ c #2068CD", +"}+ c #1D62C1", +"|+ c #3574C7", +"1+ c #B8D6F5", +"2+ c #CDE6FB", +"3+ c #CAE3FB", +"4+ c #90BFFA", +"5+ c #5E7365", +"6+ c #276E0C", +"7+ c #82C35F", +"8+ c #5ABC3A", +"9+ c #272C29", +"0+ c #848A77", +"a+ c #85D764", +"b+ c #987531", +"c+ c #889436", +"d+ c #54D74E", +"e+ c #ADC45B", +"f+ c #D9D156", +"g+ c #386C73", +"h+ c #3573C5", +"i+ c #6799DC", +"j+ c #6DA1E9", +"k+ c #5B97EC", +"l+ c #4C8EE8", +"m+ c #4084E3", +"n+ c #347ADE", +"o+ c #2A73D7", +"p+ c #236ACD", +"q+ c #2367C4", +"r+ c #82ADE3", +"s+ c #CDE5FC", +"t+ c #B5D8F9", +"u+ c #6591D1", +"v+ c #3D3E2E", +"w+ c #246C0B", +"x+ c #88C857", +"y+ c #579870", +"z+ c #40993A", +"A+ c #6AA14B", +"B+ c #94D36C", +"C+ c #61C549", +"D+ c #98CD6E", +"E+ c #74CF5C", +"F+ c #A8C55C", +"G+ c #DAD55B", +"H+ c #396860", +"I+ c #2C66B4", +"J+ c #467FCD", +"K+ c #6D9FE4", +"L+ c #639BEA", +"M+ c #5291EA", +"N+ c #4588E5", +"O+ c #387EE0", +"P+ c #2E75D8", +"Q+ c #286DCD", +"R+ c #4B86D6", +"S+ c #C7E1F9", +"T+ c #CAE5FB", +"U+ c #84B6F1", +"V+ c #5E6E86", +"W+ c #226B09", +"X+ c #8AC655", +"Y+ c #4F8292", +"Z+ c #83B375", +"`+ c #9CD46D", +" @ c #91CC6B", +".@ c #94D06E", +"+@ c #8ED069", +"@@ c #8CCE6A", +"#@ c #A5C458", +"$@ c #D8D45B", +"%@ c #37655E", +"&@ c #2B62A9", +"*@ c #2F6DC0", +"=@ c #518BDB", +"-@ c #689EE8", +";@ c #5A97EC", +">@ c #4B8CE7", +",@ c #3E82E1", +"'@ c #3478D9", +")@ c #3376D3", +"!@ c #9FC2EF", +"~@ c #D1E6FB", +"{@ c #CCE6FB", +"]@ c #AAD1F8", +"^@ c #658EC0", +"/@ c #236A08", +"(@ c #7AC65D", +"_@ c #998638", +":@ c #68A93B", +"<@ c #8ACA66", +"[@ c #4ABA34", +"}@ c #7FCA5C", +"|@ c #94CE6D", +"1@ c #8CCD6A", +"2@ c #A4C257", +"3@ c #D7D355", +"4@ c #38655B", +"5@ c #2B5FA3", +"6@ c #2D69B9", +"7@ c #3175D4", +"8@ c #4D8DE5", +"9@ c #5E99EC", +"0@ c #5090E7", +"a@ c #4085E2", +"b@ c #367CDA", +"c@ c #659BE4", +"d@ c #D4E7FB", +"e@ c #CEE5FB", +"f@ c #BDDDF8", +"g@ c #75AEF8", +"h@ c #65707D", +"i@ c #226906", +"j@ c #7EC25E", +"k@ c #9D8531", +"l@ c #94AD54", +"m@ c #96CF70", +"n@ c #46AF33", +"o@ c #92BC6A", +"p@ c #89CC64", +"q@ c #88CB66", +"r@ c #A7C25B", +"s@ c #2C5EA1", +"t@ c #2F6AB9", +"u@ c #3275D2", +"v@ c #327DE3", +"w@ c #4088E9", +"x@ c #4D8FE8", +"y@ c #4789E3", +"z@ c #4889E0", +"A@ c #B5D2F5", +"B@ c #D2E8FB", +"C@ c #C4E0F9", +"D@ c #9CCCFC", +"E@ c #5D7B9D", +"F@ c #1F6707", +"G@ c #85C24D", +"H@ c #4B7E8B", +"I@ c #4DA24C", +"J@ c #ACD97A", +"K@ c #6C884B", +"L@ c #736879", +"M@ c #95C078", +"N@ c #87CA61", +"O@ c #A3C257", +"P@ c #D9D55D", +"Q@ c #416B5D", +"R@ c #3264A2", +"S@ c #326DBA", +"T@ c #357AD4", +"U@ c #3480E4", +"V@ c #317FE8", +"W@ c #337EE6", +"X@ c #3C82E2", +"Y@ c #7BADEC", +"Z@ c #D5EBFB", +"`@ c #C7E2FA", +" # c #AFD4F9", +".# c #71A7EC", +"+# c #3C3F42", +"@# c #246909", +"## c #4EA829", +"$# c #468A60", +"%# c #83B169", +"&# c #97CF6A", +"*# c #379120", +"=# c #30402B", +"-# c #5D9E4F", +";# c #5BC141", +"># c #A2BF54", +",# c #D3D055", +"'# c #6B845F", +")# c #6E88A7", +"!# c #487BBA", +"~# c #387BD5", +"{# c #3882E6", +"]# c #3482E9", +"^# c #317EE5", +"/# c #3F86E5", +"(# c #C6E0F9", +"_# c #D1E8FB", +":# c #B3D7F8", +"<# c #85B8F6", +"[# c #4A6FAC", +"}# c #27680A", +"|# c #35991D", +"1# c #38A418", +"2# c #4AAA2C", +"3# c #84C05D", +"4# c #4BA438", +"5# c #4CB435", +"6# c #46B02F", +"7# c #56B93F", +"8# c #A5C056", +"9# c #D4D258", +"0# c #5E7C5D", +"a# c #95A0A9", +"b# c #A9B6C3", +"c# c #71A1D9", +"d# c #448BE7", +"e# c #3684EA", +"f# c #337FE7", +"g# c #90BCF3", +"h# c #D7EBFB", +"i# c #BDDCF9", +"j# c #96C5F7", +"k# c #5390EC", +"l# c #3C5743", +"m# c #266809", +"n# c #38981D", +"o# c #389D1E", +"p# c #44A62A", +"q# c #9AC368", +"r# c #575250", +"s# c #809C7F", +"t# c #5EBA3F", +"u# c #A0CB76", +"v# c #9CBC56", +"w# c #DBDB64", +"x# c #446341", +"y# c #526D8D", +"z# c #809FC5", +"A# c #CAD7E3", +"B# c #B3D1F1", +"C# c #609FEF", +"D# c #66A2EF", +"E# c #D7EAFC", +"F# c #CCE4FA", +"G# c #9EC9F6", +"H# c #69A3F3", +"I# c #397BE3", +"J# c #495F30", +"K# c #256708", +"L# c #35941A", +"M# c #34981A", +"N# c #47A32B", +"O# c #80C058", +"P# c #2E561D", +"Q# c #4B6940", +"R# c #62BA43", +"S# c #7EC659", +"T# c #2E7B1B", +"U# c #324D22", +"V# c #182010", +"W# c #1C191A", +"X# c #485158", +"Y# c #668AB7", +"Z# c #AFD3F7", +"`# c #D6ECFF", +" $ c #DDEDFC", +".$ c #E1F0FD", +"+$ c #ACD2F8", +"@$ c #78AEF0", +"#$ c #4C8BF0", +"$$ c #5995E3", +"%$ c #4D5F31", +"&$ c #256607", +"*$ c #339117", +"=$ c #309415", +"-$ c #3E9E23", +";$ c #91C062", +">$ c #6C845C", +",$ c #73A763", +"'$ c #5BB23C", +")$ c #7CC556", +"!$ c #296519", +"~$ c #465465", +"{$ c #709DD5", +"]$ c #B1D2F8", +"^$ c #A4CBF6", +"/$ c #629EED", +"($ c #4383E7", +"_$ c #66A0F6", +":$ c #74AFDD", +"<$ c #3B4426", +"[$ c #1D6301", +"}$ c #3A921C", +"|$ c #81B757", +"1$ c #459E27", +"2$ c #469F24", +"3$ c #31372A", +"4$ c #667769", +"5$ c #5FB53E", +"6$ c #7CC356", +"7$ c #276517", +"8$ c #282721", +"9$ c #545C50", +"0$ c #6E6E6E", +"a$ c #6A6A68", +"b$ c #636261", +"c$ c #77858D", +"d$ c #89BDF9", +"e$ c #67A1EE", +"f$ c #5D99ED", +"g$ c #7AABEF", +"h$ c #B7D8FB", +"i$ c #AED5F3", +"j$ c #4D5356", +"k$ c #206306", +"l$ c #2D8C0F", +"m$ c #499D29", +"n$ c #89BB5E", +"o$ c #7EBA56", +"p$ c #63973F", +"q$ c #437E2C", +"r$ c #52AB33", +"s$ c #79BE52", +"t$ c #327126", +"u$ c #5A625A", +"v$ c #758D8D", +"w$ c #CCD7D7", +"x$ c #EBEBEB", +"y$ c #F8F8F8", +"z$ c #FBFDFD", +"A$ c #F2FCFF", +"B$ c #DAECFB", +"C$ c #CDE5F9", +"D$ c #DEEEFC", +"E$ c #E5F3FE", +"F$ c #D4EAFB", +"G$ c #CAE4FC", +"H$ c #9FC2DD", +"I$ c #506350", +"J$ c #13130D", +"K$ c #266D0F", +"L$ c #208006", +"M$ c #2E8F12", +"N$ c #4EA02E", +"O$ c #A3CC72", +"P$ c #84C059", +"Q$ c #63AD41", +"R$ c #74B94C", +"S$ c #488241", +"T$ c #728DA8", +"U$ c #A5B6C4", +"V$ c #C1D0DF", +"W$ c #DBE8F2", +"X$ c #E7F3FB", +"Y$ c #E8F4FD", +"Z$ c #E3F2FD", +"`$ c #E5F2FD", +" % c #EDF7FE", +".% c #E0F0FD", +"+% c #BFDCF9", +"@% c #A0C9F5", +"#% c #88BAF3", +"$% c #7DB5F8", +"%% c #73B7EB", +"&% c #3A5047", +"*% c #283521", +"=% c #286F0E", +"-% c #2D9010", +";% c #39991C", +">% c #5EA83B", +",% c #A2C773", +"'% c #79BA50", +")% c #448249", +"!% c #8D9CAB", +"~% c #A2B3C2", +"{% c #B6CCE0", +"]% c #C8DEF2", +"^% c #D1E7FB", +"/% c #D0E7FB", +"(% c #D6EAFC", +"_% c #E2F1FD", +":% c #D0E6FB", +"<% c #B3D6F8", +"[% c #A0CAF6", +"}% c #91C0F4", +"|% c #83B8F2", +"1% c #7AB1F5", +"2% c #7AB8FF", +"3% c #4486D2", +"4% c #21201D", +"5% c #1B360B", +"6% c #1A6B01", +"7% c #218906", +"8% c #49A029", +"9% c #4BA429", +"0% c #38733B", +"a% c #6B8AAC", +"b% c #9FB3C6", +"c% c #BACEE0", +"d% c #C4DCF2", +"e% c #C7E1FA", +"f% c #D6E9FB", +"g% c #CBE4FA", +"h% c #B6D8F8", +"i% c #A9CFF7", +"j% c #9EC8F6", +"k% c #98C4F5", +"l% c #90C6FF", +"m% c #75B2F1", +"n% c #4A7DBB", +"o% c #31434A", +"p% c #1E1C18", +"q% c #335721", +"r% c #287C0B", +"s% c #329F15", +"t% c #2A681A", +"u% c #3B4442", +"v% c #577B9A", +"w% c #98BDE3", +"x% c #C6E0F4", +"y% c #C7E3FA", +"z% c #C6E2FA", +"A% c #CCE5FA", +"B% c #BAD8F9", +"C% c #B0D3F8", +"D% c #AFD3FB", +"E% c #ACD8FF", +"F% c #8EC5FF", +"G% c #5B8BA8", +"H% c #394841", +"I% c #26251D", +"J% c #1C2B12", +"K% c #20520B", +"L% c #294B19", +"M% c #404230", +"N% c #566F87", +"O% c #76A7E8", +"P% c #B1D7FA", +"Q% c #CBE7FC", +"R% c #C4E1FA", +"S% c #B9DAFA", +"T% c #BBDFFF", +"U% c #9ED0F4", +"V% c #6694AF", +"W% c #3F4B52", +"X% c #231F21", +"Y% c #68747F", +"Z% c #6891C6", +"`% c #8FBBF2", +" & c #C3E7FF", +".& c #ADD7FF", +"+& c #709B93", +"@& c #3F4941", +"#& c #1E1C19", +"$& c #778895", +"%& c #546884", +"&& c #454D4D", +"*& c #201915", +" ", +" . + ", +" @ # $ % & * = - ; > , ' ) ! ~ { ] ", +" ^ / ( _ : < [ } | 1 2 3 4 5 5 6 7 8 ", +" 9 0 a b c d e f g h i j k l m n o p q r ", +" s t u v w x y z A B C D E F G H I J K L M o N O ", +" P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.o >.,. ", +" '.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.&.8.9.0.a.b.c.d. ", +" e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.7.z.A.B.C.D.E.F. ", +" G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++D.D.@+#+$+ ", +" %+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+ ", +" 6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+2+s+t+u+v+ ", +" w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+2+T+U+V+ ", +" W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@ ", +" /@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@ ", +" i@j@k@l@m@n@o@p@q@r@$@4@s@t@u@v@w@x@y@z@A@B@C@D@E@ ", +" F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+# ", +" @###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[# ", +" }#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l# ", +" m#n#o#p#q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#J# ", +" K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$ ", +" &$*$=$-$;$>$,$'$)$!$ ~${$]$^$/$($_$:$<$ ", +" [$}$|$1$2$3$4$5$6$7$ 8$9$0$a$b$c$d$e$f$g$h$i$j$ ", +" k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$ ", +" K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&% ", +" *%=%-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4% ", +" 5%6%7%8%9%0%a%b%c%d%e%;.f%g%h%i%j%k%l%m%n%o%p% ", +" q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I% ", +" J%K%L% M%N%O%P%Q%R%S%T%U%V%W%X% ", +" Y%Z%`% &.&+&@&#& ", +" $&%&&&*& ", +" "}; diff --git a/econtrol/icons/keyboard.xpm b/econtrol/icons/keyboard.xpm new file mode 100755 index 0000000..8e2a882 --- /dev/null +++ b/econtrol/icons/keyboard.xpm @@ -0,0 +1,163 @@ +/* XPM */ +static char * keyboard_xpm[] = { +"32 32 128 2", +" c None", +". c #B9B9B9", +"+ c #BBBBBB", +"@ c #B6B6B6", +"# c #B5B5B5", +"$ c #B7B7B7", +"% c #9F9F9F", +"& c #999999", +"* c #EFEFEF", +"= c #F8F8F8", +"- c #F7F7F7", +"; c #F5F5F5", +"> c #F4F4F4", +", c #F3F3F3", +"' c #EDEDED", +") c #929292", +"! c #ACACAC", +"~ c #E8E8E8", +"{ c #F2F2F2", +"] c #F0F0F0", +"^ c #EEEEEE", +"/ c #ECECEC", +"( c #EAEAEA", +"_ c #E9E9E9", +": c #E5E5E5", +"< c #D5D5D5", +"[ c #AAAAAA", +"} c #F1F1F1", +"| c #E7E7E7", +"1 c #E6E6E6", +"2 c #E3E3E3", +"3 c #E2E2E2", +"4 c #E1E1E1", +"5 c #D4D4D4", +"6 c #EBEBEB", +"7 c #DFDFDF", +"8 c #DDDDDD", +"9 c #DBDBDB", +"0 c #E0E0E0", +"a c #D6D6D6", +"b c #DADADA", +"c c #E4E4E4", +"d c #DCDCDC", +"e c #D8D8D8", +"f c #AFAFAF", +"g c #BEBEBE", +"h c #474747", +"i c #D2D2D2", +"j c #DEDEDE", +"k c #FBFBFB", +"l c #B4B4B4", +"m c #646464", +"n c #D3D3D3", +"o c #F9F9F9", +"p c #C6C6C6", +"q c #F6F6F6", +"r c #FDFDFD", +"s c #FCFCFC", +"t c #CDCDCD", +"u c #FEFEFE", +"v c #FFFFFF", +"w c #606060", +"x c #BFBFBF", +"y c #C4C4C4", +"z c #C8C8C8", +"A c #CACACA", +"B c #CCCCCC", +"C c #D0D0D0", +"D c #818181", +"E c #BDBDBD", +"F c #D1D1D1", +"G c #565656", +"H c #A7A7A7", +"I c #4B4B4B", +"J c #A5A5A5", +"K c #898989", +"L c #CBCBCB", +"M c #9B9B9B", +"N c #494949", +"O c #A8A8A8", +"P c #8B8B8B", +"Q c #C2C2C2", +"R c #ABABAB", +"S c #A3A3A3", +"T c #D7D7D7", +"U c #8A8A8A", +"V c #BABABA", +"W c #8E8E8E", +"X c #C0C0C0", +"Y c #B8B8B8", +"Z c #9C9C9C", +"` c #939393", +" . c #757575", +".. c #9D9D9D", +"+. c #686868", +"@. c #737373", +"#. c #808080", +"$. c #CFCFCF", +"%. c #909090", +"&. c #949494", +"*. c #8C8C8C", +"=. c #777777", +"-. c #4F4F4F", +";. c #7E7E7E", +">. c #7A7A7A", +",. c #696969", +"'. c #7F7F7F", +"). c #9E9E9E", +"!. c #D9D9D9", +"~. c #ADADAD", +"{. c #979797", +"]. c #959595", +"^. c #969696", +"/. c #C1C1C1", +"(. c #515151", +"_. c #AEAEAE", +":. c #C5C5C5", +"<. c #CECECE", +"[. c #555555", +"}. c #FAFAFA", +"|. c #585858", +"1. c #5E5E5E", +"2. c #525252", +"3. c #C9C9C9", +"4. c #C7C7C7", +"5. c #919191", +"6. c #A6A6A6", +"7. c #C3C3C3", +" ", +" ", +" ", +" . + . @ # # @ @ @ $ $ + % ", +" & * = = - ; > , , , , , ; ' ) ", +" ! ~ { { ] ^ / ( ~ ~ ~ ~ _ : < ", +" [ _ ' } ^ ' ( | 1 2 3 4 3 3 5 ", +" [ ( ( ' { ' 6 | : 2 7 8 9 0 a ", +" [ 6 ' 7 b ~ 6 ~ 1 c 0 d e 7 e ", +" f ^ - g h i 6 | 1 c 4 d < j 9 ", +" @ } k l m e ( c 2 4 j b n 0 j ", +" g , o * | ( 6 ~ 1 3 0 8 e 1 0 ", +" p q r s s o q q > , { } * q 2 ", +" t 8 ~ 6 ' ] } } > - k u v v 1 ", +" w x y z A B t j * , ~ j 4 c 1 C ", +" D c 4 4 7 0 0 7 7 j j 7 9 E : b z c c 2 4 7 0 c j d d j F G ", +" . > = - q > , } ] } } { * 8 H ) z o - ; > > 2 t 6 , { > ( 5 ", +"I @ ] ] { * ' 6 _ | 1 1 1 2 | J K L ; } ] * * x M y / 1 | 7 | ", +"N @ ] ( ] ^ / ( 1 c 4 7 7 8 | O P L } / * ' ^ Q R S 1 0 0 d 1 ", +"N @ } ~ ' } ' ' | 2 0 d b T ~ [ U L , | ' ] T V j W X 4 b e ~ ", +"N Y ; ^ 3 a ~ C : : 0 d e n ( R P t q ~ | ] Z 5 q ` .3 T a 6 ", +"I x = ..D +.@.#.8 c 0 d a $.' ! %.n o ' * t &.[ ' *.=.F a < ^ ", +"-.z = ;.>.,.'.).d c 4 j !.5 { ~.{.e k } q . A ].=.^.l /.9 9 } ", +"(.t s * c 1 _ ( _ | c 4 j d - _.).d u ; > / $.:.<.g C c 8 3 , ", +"[.n o r r s }.o - - q ; > > r _.J j s }.}.}.s r k s = ; > - - ", +"|.< e 7 3 : ~ / * } ; = }.u v f f i 9 0 2 | ( ' * , ; o s v o ", +"1.c 4 : ~ 6 * { ; = s v v v v l + j 2 1 _ ' ] , - }.r v v v v ", +"2.3.y :.4.3.A t <.C i < T T e 5.6.:.7.:.4.3.L t $.F n < T e F ", +" ", +" ", +" ", +" "}; diff --git a/econtrol/icons/mimetypes.xpm b/econtrol/icons/mimetypes.xpm new file mode 100755 index 0000000..d38ac94 --- /dev/null +++ b/econtrol/icons/mimetypes.xpm @@ -0,0 +1,597 @@ +/* XPM */ +static char * mimetypes_xpm[] = { +"48 52 542 2", +" c None", +". c #FFFDFF", +"+ c #000000", +"@ c #FDFDFF", +"# c #E0DBF6", +"$ c #FEFEFF", +"% c #E9E2FD", +"& c #FEFDFE", +"* c #D5CFEC", +"= c #CFC7FC", +"- c #FFFFFF", +"; c #FDFCFF", +"> c #F1EEFC", +", c #BFB8DC", +"' c #D0C8FB", +") c #F4F2FE", +"! c #D6CFEC", +"~ c #F6F3FE", +"{ c #D0CBE9", +"] c #CDC5E3", +"^ c #D2CAF9", +"/ c #EAE7FD", +"( c #D8D1EF", +"_ c #D5CDEB", +": c #D0CCEA", +"< c #E5E1F5", +"[ c #C9C4E1", +"} c #C5C0DD", +"| c #FFFEFF", +"1 c #E4DDFB", +"2 c #FBFAFE", +"3 c #E8E4FB", +"4 c #CDC6EB", +"5 c #BDB5E1", +"6 c #C7C3E5", +"7 c #CFC9E8", +"8 c #CDC7E5", +"9 c #DFDAED", +"0 c #C5BFDB", +"a c #C2BCDA", +"b c #DDD8F6", +"c c #FCFBFF", +"d c #DCD7F3", +"e c #D5CEEC", +"f c #C4BBE4", +"g c #B1A7D7", +"h c #B8B0DA", +"i c #D1CBE9", +"j c #CAC4E3", +"k c #C6BFDF", +"l c #CFC9E2", +"m c #C0BAD8", +"n c #BEB8D6", +"o c #DBD5F2", +"p c #E6E2F5", +"q c #D2CBE9", +"r c #D3CCE9", +"s c #B6ABD8", +"t c #D0CAE7", +"u c #D0CBE7", +"v c #CCC5E2", +"w c #A6A0C3", +"x c #B3AECE", +"y c #C9C6DE", +"z c #BCB6D5", +"A c #928CB0", +"B c #DAD2F1", +"C c #F4F1FC", +"D c #E9E5F5", +"E c #CEC9E5", +"F c #BAB4DB", +"G c #A7A1CF", +"H c #B1AAD5", +"I c #CDC8E5", +"J c #CCC4E2", +"K c #C9C2E0", +"L c #C7C1DF", +"M c #9B92BB", +"N c #968FB5", +"O c #958FB4", +"P c #9B94B9", +"Q c #948DB1", +"R c #9B95B8", +"S c #D8D1F0", +"T c #F5F3FE", +"U c #D5D0EA", +"V c #C9C4E2", +"W c #C9C4E3", +"X c #AAA3CB", +"Y c #ABA3CD", +"Z c #A7A0CD", +"` c #A098C3", +" . c #B0A9CE", +".. c #C4BFDC", +"+. c #C4BDDC", +"@. c #ADA6C9", +"#. c #9690B8", +"$. c #8F89B0", +"%. c #9892B6", +"&. c #9993B6", +"*. c #948DB3", +"=. c #918AAF", +"-. c #D5D0EF", +";. c #F2EFFC", +">. c #D5CFE8", +",. c #C8C2E0", +"'. c #A59DC7", +"). c #A69DC7", +"!. c #A39BC2", +"~. c #9D96C0", +"{. c #9B95BC", +"]. c #BFB9D8", +"^. c #BEB8D8", +"/. c #BEB7D6", +"(. c #9790B5", +"_. c #9A92B7", +":. c #9992B7", +"<. c #9992B5", +"[. c #9992B6", +"}. c #FFFCFF", +"|. c #D5CEED", +"1. c #F1EDFB", +"2. c #DFDAEF", +"3. c #C6BFDE", +"4. c #C5BFDD", +"5. c #C3BCDD", +"6. c #A199C1", +"7. c #9D96BE", +"8. c #B5AECF", +"9. c #BEB5D5", +"0. c #938CB2", +"a. c #9A93B6", +"b. c #9B93B8", +"c. c #9A92B9", +"d. c #9991B5", +"e. c #9C94B8", +"f. c #9792B5", +"g. c #9F98BC", +"h. c #9E96BC", +"i. c #B6AECF", +"j. c #FEFBFF", +"k. c #D4CEED", +"l. c #F0EDFB", +"m. c #D1CDE5", +"n. c #C4BEDD", +"o. c #C3BCDC", +"p. c #C1BAD9", +"q. c #ABA3C9", +"r. c #9B92B9", +"s. c #9891B4", +"t. c #B6B0CF", +"u. c #A19ABB", +"v. c #8E84AB", +"w. c #8D86AB", +"x. c #928AAF", +"y. c #9790B4", +"z. c #9891B5", +"A. c #9991B8", +"B. c #A098BE", +"C. c #AAA1C6", +"D. c #BFB8D7", +"E. c #C0B9D8", +"F. c #FDFAFD", +"G. c #D2CDEB", +"H. c #E7E4F4", +"I. c #C3BBDB", +"J. c #C2BAD9", +"K. c #C0B8D8", +"L. c #BFB8D6", +"M. c #9991B7", +"N. c #958EB1", +"O. c #8A83AC", +"P. c #867EA4", +"Q. c #8780A5", +"R. c #B1A9CB", +"S. c #958DB1", +"T. c #8B82A8", +"U. c #938CB0", +"V. c #968EB3", +"W. c #9A92B8", +"X. c #A29ABF", +"Y. c #B2A9CD", +"Z. c #BFB8D8", +"`. c #BDB7D7", +" + c #BCB6D6", +".+ c #BBB3D5", +"++ c #FCF6FC", +"@+ c #CFC7EA", +"#+ c #EAE7F6", +"$+ c #D0CBE4", +"%+ c #C3BCDB", +"&+ c #BFB6D6", +"*+ c #BDB5D5", +"=+ c #9F9ABD", +"-+ c #9790B3", +";+ c #9089AF", +">+ c #A59DBD", +",+ c #A59EBF", +"'+ c #9E96B8", +")+ c #ABA4C3", +"!+ c #A8A1C0", +"~+ c #8D85A8", +"{+ c #918AAC", +"]+ c #948CB0", +"^+ c #9B94B8", +"/+ c #A29AC1", +"(+ c #C2BADB", +"_+ c #C1B9DA", +":+ c #BCB4D6", +"<+ c #BBB3D6", +"[+ c #BAB3D2", +"}+ c #B7B0D0", +"|+ c #F1E9F2", +"1+ c #C9C1E3", +"2+ c #E7E3F3", +"3+ c #CDC6E1", +"4+ c #C0B9D9", +"5+ c #BBB3D4", +"6+ c #AAA2C6", +"7+ c #9189AF", +"8+ c #857EA3", +"9+ c #AAA3C2", +"0+ c #8D85A9", +"a+ c #827B9E", +"b+ c #807A9D", +"c+ c #8E86AA", +"d+ c #938BB1", +"e+ c #9C94BD", +"f+ c #A49DC4", +"g+ c #B9B2D4", +"h+ c #BEB7D7", +"i+ c #B8B1D1", +"j+ c #B8B1D0", +"k+ c #B4B0CE", +"l+ c #B3ACCD", +"m+ c #E8E1EB", +"n+ c #BCB5D5", +"o+ c #C9C6DB", +"p+ c #BFB9D4", +"q+ c #B3ADCD", +"r+ c #B6B0D1", +"s+ c #BAB3D4", +"t+ c #B8B2D1", +"u+ c #A7A0C2", +"v+ c #9189AE", +"w+ c #847DA3", +"x+ c #7D7699", +"y+ c #7D7799", +"z+ c #857DA2", +"A+ c #7F789C", +"B+ c #0F0E12", +"C+ c #242424", +"D+ c #282828", +"E+ c #48484B", +"F+ c #E5DDE7", +"G+ c #B4AECE", +"H+ c #B9B3CD", +"I+ c #B7B2CD", +"J+ c #AAA4C3", +"K+ c #ACA5C4", +"L+ c #ABA5C5", +"M+ c #ACA6C6", +"N+ c #B0A9C9", +"O+ c #9791B1", +"P+ c #8E86AB", +"Q+ c #8B84A9", +"R+ c #867FA3", +"S+ c #A59EC0", +"T+ c #948DAF", +"U+ c #837CA1", +"V+ c #A49DBF", +"W+ c #A49DC0", +"X+ c #2A2A2A", +"Y+ c #E0E0E0", +"Z+ c #C1C1C1", +"`+ c #BCB2C8", +" @ c #ACA5C8", +".@ c #A8A1BF", +"+@ c #A59FBD", +"@@ c #A49DB9", +"#@ c #A49EBE", +"$@ c #A49EBD", +"%@ c #9C96B5", +"&@ c #8983A5", +"*@ c #827B9D", +"=@ c #837C9E", +"-@ c #837D9E", +";@ c #7E779C", +">@ c #7D769D", +",@ c #ACA5C5", +"'@ c #ADA6C8", +")@ c #AFA8C8", +"!@ c #B1AAC9", +"~@ c #B1AAC8", +"{@ c #F4F4F4", +"]@ c #FDFDFD", +"^@ c #FBFBFB", +"/@ c #C3C3C3", +"(@ c #A8A8A8", +"_@ c #8A82A5", +":@ c #787295", +"<@ c #787091", +"[@ c #776F91", +"}@ c #766E8E", +"|@ c #766E8F", +"1@ c #797192", +"2@ c #797392", +"3@ c #756E8E", +"4@ c #746E8B", +"5@ c #867F9D", +"6@ c #797393", +"7@ c #797194", +"8@ c #A39ABD", +"9@ c #AEA6C8", +"0@ c #141317", +"a@ c #525252", +"b@ c #6F6F6E", +"c@ c #EAEAEA", +"d@ c #ADADAD", +"e@ c #767676", +"f@ c #5D5D5D", +"g@ c #404040", +"h@ c #6C6681", +"i@ c #756F8E", +"j@ c #726B8A", +"k@ c #716B87", +"l@ c #6E6985", +"m@ c #6F6986", +"n@ c #716A8A", +"o@ c #6C6585", +"p@ c #71698B", +"q@ c #9D97B4", +"r@ c #9F98B7", +"s@ c #8B83A5", +"t@ c #928CAC", +"u@ c #A59FBF", +"v@ c #4D4D4D", +"w@ c #D0D0D0", +"x@ c #848484", +"y@ c #4B4B49", +"z@ c #161616", +"A@ c #5A546E", +"B@ c #78708E", +"C@ c #686280", +"D@ c #5E5876", +"E@ c #716A87", +"F@ c #978FAE", +"G@ c #726D8C", +"H@ c #6B6684", +"I@ c #9B95B2", +"J@ c #9E97B6", +"K@ c #9E97B7", +"L@ c #9F98B5", +"M@ c #4E4E4E", +"N@ c #DCDCDC", +"O@ c #D5D5D5", +"P@ c #5B5670", +"Q@ c #827C9B", +"R@ c #5D5874", +"S@ c #7B7694", +"T@ c #8E89A7", +"U@ c #938CAB", +"V@ c #746E8C", +"W@ c #958DAD", +"X@ c #978EAD", +"Y@ c #121114", +"Z@ c #777777", +"`@ c #73708A", +" # c #6A6481", +".# c #857F9E", +"+# c #8B85A3", +"@# c #8B85A4", +"## c #8D88A6", +"$# c #8E88A7", +"%# c #908AAA", +"&# c #414141", +"*# c #D1D1CF", +"=# c #BFBFBF", +"-# c #716B86", +";# c #88809F", +"># c #8880A0", +",# c #8D86A4", +"'# c #8D88A4", +")# c #3D3D3D", +"!# c #C6C6C4", +"~# c #BABABA", +"{# c #867E9D", +"]# c #887F9E", +"^# c #887F9F", +"/# c #8984A1", +"(# c #F6F6F6", +"_# c #FBFBFA", +":# c #FAFAFA", +"<# c #3D3D3C", +"[# c #C2C2C0", +"}# c #6A6680", +"|# c #847D9C", +"1# c #847D9D", +"2# c #857E9D", +"3# c #F8F8F8", +"4# c #F3F3F3", +"5# c #F8F8F6", +"6# c #E2E2E2", +"7# c #858585", +"8# c #3C3C3B", +"9# c #C7C7C6", +"0# c #BDBDBC", +"a# c #6A667F", +"b# c #827D9B", +"c# c #817C9B", +"d# c #F2F2F2", +"e# c #F0F0F0", +"f# c #EFEFEF", +"g# c #3B3B3A", +"h# c #C4C4C2", +"i# c #BCBCBC", +"j# c #69657F", +"k# c #807A98", +"l# c #7F7A98", +"m# c #F9F9F9", +"n# c #F6F6F3", +"o# c #F3F3F0", +"p# c #EDEDED", +"q# c #EDEDEA", +"r# c #EAEAE7", +"s# c #E5E5E5", +"t# c #DFDFDF", +"u# c #EBEBEB", +"v# c #3A3A3A", +"w# c #B8B8B7", +"x# c #B4B4B4", +"y# c #68627E", +"z# c #7E7A97", +"A# c #F6F6F4", +"B# c #EBEBE9", +"C# c #E9E9E7", +"D# c #E0E0DE", +"E# c #3A3A39", +"F# c #BFBFBD", +"G# c #BABAB8", +"H# c #66617C", +"I# c #F0F0ED", +"J# c #E7E7E5", +"K# c #E5E5E2", +"L# c #E2E2DF", +"M# c #DFDFDC", +"N# c #DCDCD9", +"O# c #D9D9D9", +"P# c #D9D9D6", +"Q# c #D6D6D4", +"R# c #E5E5E4", +"S# c #D7D7D5", +"T# c #393938", +"U# c #665F7A", +"V# c #E9E9E9", +"W# c #E4E4E2", +"X# c #E2E2E0", +"Y# c #D3D3D1", +"Z# c #383838", +"`# c #B6B6B6", +" $ c #EEEEEC", +".$ c #D4D4D1", +"+$ c #DEDEDC", +"@$ c #DEDEDB", +"#$ c #D9D9D7", +"$$ c #383837", +"%$ c #B5B5B1", +"&$ c #E7E7E7", +"*$ c #EFEFED", +"=$ c #DBDBD9", +"-$ c #D5D5D3", +";$ c #BDBDBA", +">$ c #B8B8B8", +",$ c #E3E3E3", +"'$ c #CFCFC9", +")$ c #CBCBC7", +"!$ c #C9C9C7", +"~$ c #DBDBD7", +"{$ c #C8C8C7", +"]$ c #373736", +"^$ c #BCBCB8", +"/$ c #B8B8B6", +"($ c #E4E4E4", +"_$ c #D9D9D5", +":$ c #D7D7D3", +"<$ c #D5D5D1", +"[$ c #D0D0CE", +"}$ c #B1B1AE", +"|$ c #B3B3B3", +"1$ c #DDDDDB", +"2$ c #CFCFCB", +"3$ c #CBCBC9", +"4$ c #C9C9C4", +"5$ c #C7C7C4", +"6$ c #C4C4C1", +"7$ c #C4C4BF", +"8$ c #C1C1BC", +"9$ c #D3D3D0", +"0$ c #D1D1D0", +"a$ c #B7B7B3", +"b$ c #DCDCDB", +"c$ c #E0E0DC", +"d$ c #D1D1CE", +"e$ c #D0D0CC", +"f$ c #CACAC8", +"g$ c #30302F", +"h$ c #A7A7A5", +"i$ c #929290", +"j$ c #D4D4D0", +"k$ c #C7C7C1", +"l$ c #BFBFBC", +"m$ c #BCBCB9", +"n$ c #B9B9B8", +"o$ c #B8B8B4", +"p$ c #B8B8B2", +"q$ c #B4B4B2", +"r$ c #C5C5C1", +"s$ c #282826", +"t$ c #CECECC", +"u$ c #CECECA", +"v$ c #262626", +"w$ c #CECEC9", +"x$ c #BFBFB9", +"y$ c #B9B9B4", +"z$ c #B4B4AF", +"A$ c #B2B2AF", +"B$ c #B2B2AD", +"C$ c #CCCCC8", +"D$ c #CCCCCA", +"E$ c #CACAC7", +"F$ c #C1C1BD", +"G$ c #C8C8C5", +"H$ c #C7C7C3", +"I$ c #050505", +"J$ c #B1B1AF", +"K$ c #B4B4B3", +"L$ c #B4B4B1", +"M$ c #B3B3B1", +"N$ c #B3B3AF", +"O$ c #B1B1AD", +"P$ c #AFAFAD", +"Q$ c #B6B6B4", +" ", +" ", +" . + ", +" @ + # + ", +" $ + % & * + ", +" $ + = - ; > , + ", +" $ + ' - ) ! ~ { ] + ", +" $ + ^ $ / ( _ : < [ } + ", +" | + 1 2 3 4 5 6 7 8 9 0 a + ", +" | + b c d e f g h i j k l m n + ", +" | + o ; p q r s t u 8 v w x y z A + ", +" | + B C D E F G H I J K L M N O P Q R + ", +" | + S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.+ ", +" $ + -.;.>.,.,.,.'.).!.~.{.].^./.(._.:.<.[.:.(.+ ", +" }.+ |.1.2.3.3.4.5.6.7.8.9.0.a.b.c.d.b.e.f.[.g.h.i.+ ", +" j.+ k.l.m.n.+.o.p.q.r.*.s.t.u.v.w.x.y.z._.A.B.C.D.E.D.+ ", +" F.+ G.H.m.+.I.J.K.L.M.N.O.P.Q.R.S.T.U.S.V.W.X.Y.Z.].`. +.++ ", +" +++ @+#+$+%+I.p.&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+q.(+_+:+<+.+[+}++ ", +" |++ 1+2+3+4+].K.&+5+6+Q 7+8+9+u.0+a+b+c+d+M.e+f+g+Z.D.h+[+i+j+k+l++ ", +" m++ n+o+p+q+r+s+[+t+u+v+c+w+x+y+z+A+B+C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+E++ ", +" F++ G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+- - - - - - - - - - - - - - - Y+Z++ ", +" `++ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@X+- {@- - - - - ]@]@]@]@]@]@]@^@/@^@(@+ ", +" _@+ :@<@[@}@|@1@2@3@4@5@6@7@8@9@0@C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+a@b@c@d@e@f@g@+ ", +" h@+ i@j@k@l@m@n@o@p@q@r@s@t@u@X+- - - - - - - - - - - - - - ]@Y+Z+v@w@x@y@z@+ ", +" A@+ B@C@D@E@F@G@H@I@I@J@K@L@X+- {@- - - - - ]@]@]@]@]@]@]@^@/@^@(@M@N@O@d@+ ", +" P@+ Q@R@S@T@U@V@W@X@Y@C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+a@b@c@d@e@f@g@Z@N@Z++ ", +" `@+ #.#+#@###$#%#X+- - - - - - - - - - - - - - - Y+Z+v@w@x@y@z@&#*#=#+ ", +" -#+ ;#>#;#>#,#'#X+- {@- - - - - ]@]@]@]@]@]@]@^@/@^@(@M@N@O@d@)#!#~#+ ", +" h@+ {#{#]#^#/#X+- (#- - - ]@]@]@]@]@]@^@^@_#:#d@e@f@g@Z@N@Z+<#[#~#+ ", +" }#+ |#1#2#|#X+- (#- ^@^@^@^@3#3#3#(#(#(#4#5#6#7#y@z@&#*#=#8#9#0#+ ", +" a#+ b#Q@c#X+- {@]@]@^@^@_#:#:#:#3#5#(#{@d#e#f#O@d@)#!#~#g#h#i#+ ", +" j#+ k#l#X+- d#m#(#(#n#4#4#o#e#p#q#r#s#6#t#u#6#Z+<#[#~#v#w#x#+ ", +" y#+ z#X+- e#3#3#3#5#(#A#{@d#e#f#p#u#B#C#C#D#=#8#9#0#E#F#G#+ ", +" H#+ X+- f#4#e#I#p#q#r#J#K#L#M#N#O#P#Q#R#S#~#g#h#i#T#F#G#+ ", +" U#X+- p#{@{@d#e#f#p#u#V#C#J#R#R#W#D#X#Y#~#v#w#x#Z#G#`#+ ", +" X+- u# $J#s#L#M#N#O#P#Q#.$X#D#+$@$+$#$0#E#F#G#$$%$x#+ ", +" D+- &$*$u#B#C#J#R#R#W#X#D#+$@$N#=$=$-$i#T#F#G#$$;$>$+ ", +" D+- s#,$O#P#Q#.$*#*#'$)$!$N#~$#$S##${$x#Z#G#`#]$^$/$+ ", +" D+- X#R#($W#X#D#+$@$N#=$~$_$:$-$<$:$[$G#$$%$x#]$}$|$+ ", +" D+- +$1$*#2$3$!$4$5$6$7$8$<$<$9$0$9$[$G#$$;$>$]$a$x#+ ", +" D+- b$c$+$b$N#~$#$S#-$<$<$9$d$d$e$0$f$`#]$^$/$g$h$i$+ ", +" D+- =$j$5$k$7$8$l$m$m$^$n$o$p$p$q$d$r$x#]$}$|$+ + + + ", +" s$- O@#$#$:$<$Y#9$9$d$e$e$t$u$u$u$e$u$>$]$a$x#+ ", +" v$- Y#w$x$m$^$^$y$p$p$z$z$z$A$A$B$u$C$/$g$h$i$+ ", +" v$- -$9$9$0$[$e$t$u$u$D$C$C$C$E$E$C$F$|$+ + + + ", +" v$- 0$d$[$t$u$u$u$u$C$C$C$E$E$G$G$C$H$x#+ ", +" I$- J$K$L$L$L$M$M$N$N$N$J$O$O$P$P$N$Q$i$+ ", +" + + + + + + + + + + + + + + + + + + + + + ", +" ", +" ", +" ", +" "}; diff --git a/econtrol/icons/newsoft.xpm b/econtrol/icons/newsoft.xpm new file mode 100755 index 0000000..2e61ff4 --- /dev/null +++ b/econtrol/icons/newsoft.xpm @@ -0,0 +1,479 @@ +/* XPM */ +static char * newsoft_xpm[] = { +"31 32 444 2", +" c None", +". c #E6D8EB", +"+ c #E5DDEE", +"@ c #F1EFFA", +"# c #E3DCEC", +"$ c #D6C1D4", +"% c #D9CDE5", +"& c #CFB8CD", +"* c #E5D7E7", +"= c #ECE7F5", +"- c #FBFCFF", +"; c #FFFFFF", +"> c #F9F9FF", +", c #DBD2E7", +"' c #DFDCF4", +") c #F2F4FF", +"! c #E1DEF6", +"~ c #CDBCD6", +"{ c #E0D5EA", +"] c #F2F1FB", +"^ c #FEFFFF", +"/ c #FDFDFE", +"( c #FBFBFE", +"_ c #FCFCFE", +": c #F4F5FF", +"< c #D5CBE1", +"[ c #DBD4ED", +"} c #F3F2FE", +"| c #EEEFFF", +"1 c #E2E4FC", +"2 c #D2CAE7", +"3 c #C3ABC4", +"4 c #E4DEF1", +"5 c #F6F6FE", +"6 c #F8F8FE", +"7 c #F7F7FE", +"8 c #EFF1FE", +"9 c #D1C6DC", +"0 c #D7CEE7", +"a c #EFF0FF", +"b c #F1F1FF", +"c c #EEEEFE", +"d c #ECECFE", +"e c #EAEAFE", +"f c #E2E4FD", +"g c #D6D4F2", +"h c #C5B5D4", +"i c #D8CBDF", +"j c #EAE8F8", +"k c #F7F9FF", +"l c #EFEFFD", +"m c #EBEBFD", +"n c #F1F1FE", +"o c #FAFBFF", +"p c #E4E4FA", +"q c #C0B9E1", +"r c #EBECFD", +"s c #F6F6FF", +"t c #E9E9FD", +"u c #E7E7FC", +"v c #E4E4FB", +"w c #E3E3FB", +"x c #E0E0FA", +"y c #D6D8F7", +"z c #CBC4E7", +"A c #C0A9C2", +"B c #DAD2E8", +"C c #F1F1FC", +"D c #F2F2FE", +"E c #E5E5FB", +"F c #E0E0F9", +"G c #E2E2FA", +"H c #EAEAFD", +"I c #EDEDFE", +"J c #EEEEFF", +"K c #D3D3F1", +"L c #7372C2", +"M c #7576C8", +"N c #ADADE3", +"O c #DEDEF7", +"P c #E7E7FD", +"Q c #E1E1F9", +"R c #DFDFF8", +"S c #DCDCF7", +"T c #DADAF7", +"U c #CCCBF0", +"V c #C1B3D5", +"W c #DBD9F1", +"X c #F4F6FF", +"Y c #E8E8FB", +"Z c #DBDBF7", +"` c #D7D7F6", +" . c #DEDEF8", +".. c #E6E6FC", +"+. c #B0B0E2", +"@. c #5E5DB7", +"#. c #4343A8", +"$. c #7D7DCA", +"%. c #8E8ED5", +"&. c #9292D6", +"*. c #C0C0EA", +"=. c #D6D6F5", +"-. c #D4D4F5", +";. c #D3D4F4", +">. c #CCCDF2", +",. c #C1BEE6", +"'. c #B7A0BA", +"). c #D5CDEB", +"!. c #F5F7FF", +"~. c #E0E1F9", +"{. c #D5D5F5", +"]. c #D3D3F4", +"^. c #D0D0F3", +"/. c #D2D2F4", +"(. c #D8D8F6", +"_. c #8F8ED2", +":. c #5454B3", +"<. c #5050B0", +"[. c #4F4FAF", +"}. c #8080CC", +"|. c #9696D9", +"1. c #8F8FD5", +"2. c #8989D2", +"3. c #A1A1DD", +"4. c #D3D2F2", +"5. c #D9D9F7", +"6. c #D4D4F4", +"7. c #D2D2F3", +"8. c #D1D1F3", +"9. c #CECEF2", +"0. c #CFD0F4", +"a. c #AFB0E4", +"b. c #9980AF", +"c. c #AF8C9F", +"d. c #D4CBEA", +"e. c #EBEDFE", +"f. c #CDCDF1", +"g. c #CCCCF2", +"h. c #B3B3E5", +"i. c #7575C6", +"j. c #5555B4", +"k. c #5959B7", +"l. c #5959B6", +"m. c #5353B1", +"n. c #8484CE", +"o. c #9999DA", +"p. c #9191D6", +"q. c #8D8DD4", +"r. c #8585D0", +"s. c #8988D2", +"t. c #B0B0E3", +"u. c #D9D9F5", +"v. c #CFCFF2", +"w. c #CCCCF1", +"x. c #B1B1E5", +"y. c #9680B9", +"z. c #A88294", +"A. c #C6BCE2", +"B. c #CFCFF3", +"C. c #CDCDF2", +"D. c #C6C6EF", +"E. c #9999D8", +"F. c #6463BC", +"G. c #5B5BB7", +"H. c #5D5DB8", +"I. c #5C5CB8", +"J. c #5C5CB7", +"K. c #5858B5", +"L. c #8787D0", +"M. c #9898D9", +"N. c #8888D1", +"O. c #8181CE", +"P. c #7979C9", +"Q. c #8C8CD3", +"R. c #BFBFEA", +"S. c #B2B3E6", +"T. c #9082BE", +"U. c #B694A6", +"V. c #CBC3E5", +"W. c #DBDCF6", +"X. c #B0B0E4", +"Y. c #7B7BC9", +"Z. c #5F5EB9", +"`. c #6161BA", +" + c #6262BB", +".+ c #6060BA", +"++ c #5E5EB9", +"@+ c #8787D1", +"#+ c #9797D9", +"$+ c #8A8AD2", +"%+ c #8484CF", +"&+ c #7F7FCC", +"*+ c #7272C6", +"=+ c #7272C5", +"-+ c #9B9BD9", +";+ c #B6B7E8", +">+ c #8E83BF", +",+ c #E0C8D5", +"'+ c #D7D2E7", +")+ c #FCFCF9", +"!+ c #F6F7F5", +"~+ c #EEEBEE", +"{+ c #E9E6EF", +"]+ c #D9D7F2", +"^+ c #7A79C9", +"/+ c #5555B5", +"(+ c #6161BB", +"_+ c #6363BB", +":+ c #5E5EB8", +"<+ c #9292D7", +"[+ c #8383CE", +"}+ c #7E7ECB", +"|+ c #7575C7", +"1+ c #7171C4", +"2+ c #6969C0", +"3+ c #6767BF", +"4+ c #9091D4", +"5+ c #B4A2BE", +"6+ c #9B99A7", +"7+ c #9284C1", +"8+ c #B9B7E5", +"9+ c #F7F8FF", +"0+ c #F4F4FF", +"a+ c #E5E6FD", +"b+ c #C7C6EE", +"c+ c #5A5AB6", +"d+ c #5F5FB9", +"e+ c #7F7FCD", +"f+ c #8282CE", +"g+ c #7A7ACA", +"h+ c #6E6EC3", +"i+ c #6767BE", +"j+ c #7070C4", +"k+ c #A5A5DE", +"l+ c #DCDCF8", +"m+ c #E8EAFF", +"n+ c #DBDCF7", +"o+ c #8987CD", +"p+ c #7F70A6", +"q+ c #9D9BD7", +"r+ c #E3E4F8", +"s+ c #F3F3FF", +"t+ c #E1E1FA", +"u+ c #DDDEF9", +"v+ c #D1D1F4", +"w+ c #9696D6", +"x+ c #5D5DB9", +"y+ c #5757B4", +"z+ c #7777C7", +"A+ c #6C6CC2", +"B+ c #6666BF", +"C+ c #6161BC", +"D+ c #8383CD", +"E+ c #B8B8E8", +"F+ c #CACAF0", +"G+ c #B8BAE8", +"H+ c #7170C1", +"I+ c #635688", +"J+ c #796A93", +"K+ c #918ACA", +"L+ c #CACAEE", +"M+ c #F2F2FF", +"N+ c #DDDDF8", +"O+ c #A9A9E1", +"P+ c #6565BC", +"Q+ c #5454B2", +"R+ c #4D4DAE", +"S+ c #4E4EAD", +"T+ c #6363BC", +"U+ c #6A6AC1", +"V+ c #6565BD", +"W+ c #6969BF", +"X+ c #9B9BDA", +"Y+ c #C4C4EE", +"Z+ c #C7C7EF", +"`+ c #C8C8F0", +" @ c #8E90D4", +".@ c #6962B1", +"+@ c #6A5B7D", +"@@ c #8679B3", +"#@ c #A6A7DE", +"$@ c #E8E8FD", +"%@ c #D8D8F5", +"&@ c #B9B9E9", +"*@ c #7474C4", +"=@ c #4747AB", +"-@ c #4343A6", +";@ c #3D3DA1", +">@ c #4141A4", +",@ c #4949AA", +"'@ c #7C7CC9", +")@ c #B5B5E6", +"!@ c #B6B6E8", +"~@ c #6566BC", +"{@ c #6156A5", +"]@ c #4A4AAD", +"^@ c #8C8CD2", +"/@ c #DBDBF8", +"(@ c #C7C7EE", +"_@ c #C3C3EE", +":@ c #BABAEA", +"<@ c #8787CE", +"[@ c #4040A4", +"}@ c #38389F", +"|@ c #3B3BA0", +"1@ c #3939A0", +"2@ c #5959B4", +"3@ c #BDBDEB", +"4@ c #BFBFEB", +"5@ c #C5C5EF", +"6@ c #9898D8", +"7@ c #383AA3", +"8@ c #7B698F", +"9@ c #5353B2", +"0@ c #7070C3", +"a@ c #BCBCE9", +"b@ c #C5C5EE", +"c@ c #B4B4E6", +"d@ c #6767BC", +"e@ c #5252AF", +"f@ c #9898D7", +"g@ c #D3D3F5", +"h@ c #8080CB", +"i@ c #5656B4", +"j@ c #5050AF", +"k@ c #4143A8", +"l@ c #766586", +"m@ c #7B7BCB", +"n@ c #6B6BC1", +"o@ c #6363BD", +"p@ c #A0A0DB", +"q@ c #C4C4ED", +"r@ c #AEAEE3", +"s@ c #9F9FDA", +"t@ c #9D9DD9", +"u@ c #9C9CD8", +"v@ c #9B9BD8", +"w@ c #9D9DDA", +"x@ c #7777C6", +"y@ c #6666BE", +"z@ c #6868BF", +"A@ c #4E4FB1", +"B@ c #6F5F7E", +"C@ c #A3A3DF", +"D@ c #7A7AC9", +"E@ c #6A6AC0", +"F@ c #7474C5", +"G@ c #7474C6", +"H@ c #6D6DC3", +"I@ c #ABABE2", +"J@ c #B3B3E6", +"K@ c #9393D7", +"L@ c #8F8FD4", +"M@ c #8686D0", +"N@ c #595BB7", +"O@ c #685773", +"P@ c #8C8DD3", +"Q@ c #C7C7F0", +"R@ c #7E7ECC", +"S@ c #8888D2", +"T@ c #A7A7E1", +"U@ c #C3C3EC", +"V@ c #A8A8E1", +"W@ c #A4A4DF", +"X@ c #9F9FDD", +"Y@ c #9C9CDB", +"Z@ c #9494D7", +"`@ c #9595D7", +" # c #8788D2", +".# c #5355B6", +"+# c #8B85CC", +"@# c #BCBEEC", +"## c #BEBDEB", +"$# c #9E9EDC", +"%# c #C0C0EB", +"&# c #D1D1F2", +"*# c #B0B0E5", +"=# c #AFAFE4", +"-# c #A7A7E0", +";# c #A5A5E0", +"># c #8587D1", +",# c #6263BA", +"'# c #917FAB", +")# c #9D7BA4", +"!# c #9389C9", +"~# c #B1B4E6", +"{# c #CDCEF2", +"]# c #ACACE3", +"^# c #B2B2E5", +"/# c #C3C3ED", +"(# c #CACAF1", +"_# c #B7B7E8", +":# c #B5B5E7", +"<# c #B0B0E6", +"[# c #AEAEE5", +"}# c #7E80CD", +"|# c #6F68BA", +"1# c #877592", +"2# c #9984BC", +"3# c #A3A3DC", +"4# c #C7C9F0", +"5# c #CBCBF1", +"6# c #C8C8EF", +"7# c #BCBCEA", +"8# c #BBBBE9", +"9# c #B9B9E8", +"0# c #BEBDEA", +"a# c #ACADE4", +"b# c #7374C6", +"c# c #756CAD", +"d# c #9576A4", +"e# c #9892D2", +"f# c #BBBCEA", +"g# c #CECFF3", +"h# c #C9C9F0", +"i# c #C6C6EE", +"j# c #D6D6F6", +"k# c #BDBDEC", +"l# c #A1A3DE", +"m# c #6F6DC0", +"n# c #8874A2", +"o# c #927193", +"p# c #988AC6", +"q# c #ADADE1", +"r# c #C9CAF1", +"s# c #C2C3EE", +"t# c #9294D6", +"u# c #6C67B6", +"v# c #725C73", +"w# c #9880B5", +"x# c #9F9CD8", +"y# c #BFC0EC", +"z# c #D6D7F6", +"A# c #BBBCEB", +"B# c #7D7ECB", +"C# c #7E6BA9", +"D# c #9477A2", +"E# c #9B8FCE", +"F# c #B6B9E8", +"G# c #7471C1", +"H# c #776090", +"I# c #A18CBF", +"J# c #7C70AB", +"K# c #6B5576", +" ", +" . ", +" + @ # $ % & ", +" * = - ; > , ' ) ! ~ ", +" { ] ^ / ( _ : < [ : } | 1 2 3 ", +" 4 5 - 6 5 7 7 > 8 9 0 a b c d e f g h ", +" i j k l m n n n n n o p q r s d t u v w x y z A ", +" B C D E F G H I d J s K L M N O b P w Q R S T y U V ", +" W X Y Z T T ` ...e e +.@.#.$.%.&.*.P u S T ` =.-.;.>.,.'.", +" ).!.~.{.-.].^./.w (._.:.<.[.}.|.1.2.3.4.w 5.6.7.8.9.0.a.b.", +" c.d.e.5.^.f.g.9.h.i.j.k.l.m.n.o.p.q.r.s.t.u.5.v.w.9.x.y. ", +" z.A.1 B.C.D.E.F.G.H.I.J.K.L.M.p.q.N.O.P.Q.R.=.v.S.T. ", +" U.V.W.X.Y.Z.`. +.+++H.G.@+#+1.$+%+&+P.*+=+-+;+>+ ", +",+'+)+!+~+{+]+^+/+H.++(+_+ +.+:+n.<+2.[+}+P.|+1+2+3+4+5+6+ ", +" 7+8+9+0+a+w b+}+c+G.H.d+_+ +d+e+$+f+g+|+1+h+i+j+k+l+m+J n+o+", +" p+q+r+s+t+u+v+w+x+y+K.G.H.J.|+e+z+=+A+B+C+D+E+F+9.P G+H+I+", +" J+K+L+M+N+8.v+O+P+[.m.Q+R+S+T+U+V+G.W+X+Y+Z+w.`+ @.@+@ ", +" @@#@$@%@w.C.&@*@=@-@;@;@>@,@l.'@)@Y+Y+w.!@~@{@ ", +" ]@^@6./@(@_@:@<@[@}@|@1@2@X+3@4@_@5@6@++7@8@ ", +" 9@(+0@a@T b@_@w.c@d@e@f@`+g@^.g@3@h@i@j@k@l@ ", +" 2+m@n@o@p@v.q@r@s@D+%+t@u@v@v@w@x@T+y@z@A@B@ ", +" L.C@r.D@E@F@G@U+H@I@J@K@L@Q.M@O.}+}.}.f+N@O@ ", +" P@Q@x.p.%+R@[+S@T@8.U@I@V@W@X@Y@#+Z@`@ #.# ", +" +#@#9.##$#%.1.r@%#&#Z+*#=#N O+-#W@;#>#,#'# ", +" )#!#~#{#`+]#^#Z+/#{.(#_#:#:#J@<#[#}#|#1# ", +" 2#3#4#C.5#6#b@=.f.7#8#9#0#a#b#c# ", +" d#e#f#g#h#i#j#f.k#4@_@l#m#n# ", +" o#p#q#r#Z+{.f._@s#t#u#v# ", +" w#x#y#z#/.A#B#C# ", +" D#E#(@F#G#H# ", +" I#J#K# ", +" "}; diff --git a/econtrol/icons/panel.xpm b/econtrol/icons/panel.xpm new file mode 100755 index 0000000..3cbada7 --- /dev/null +++ b/econtrol/icons/panel.xpm @@ -0,0 +1,353 @@ +/* XPM */ +static char * panel_xpm[] = { +"32 32 318 2", +" c None", +". c #BAC6DB", +"+ c #93A0B7", +"@ c #F1F6FF", +"# c #FFFFFF", +"$ c #FEFFFF", +"% c #F9FDFF", +"& c #F4F7FE", +"* c #EBF0F9", +"= c #E3E9F4", +"- c #DAE1EF", +"; c #CED7E8", +"> c #B8C6DF", +", c #A2ADC0", +"' c #F2F7FF", +") c #F5F9FF", +"! c #EEF3FC", +"~ c #E8EDF7", +"{ c #E0E7F3", +"] c #D7DFED", +"^ c #CBD5E6", +"/ c #B5C2D9", +"( c #E1EAF9", +"_ c #9CA8BC", +": c #FBFEFF", +"< c #F6FAFF", +"[ c #F1F5FE", +"} c #E3EAF4", +"| c #DCE3F0", +"1 c #CFD8E8", +"2 c #B8C4DB", +"3 c #E6ECF7", +"4 c #D2DDEF", +"5 c #9CA8BE", +"6 c #FCFFFF", +"7 c #F8FBFF", +"8 c #F4F8FE", +"9 c #EEF2FB", +"0 c #E7EDF7", +"a c #DFE5F2", +"b c #D2DBEA", +"c c #BAC6DC", +"d c #F5F8FF", +"e c #DEE4F1", +"f c #D1DBEF", +"g c #9DA9BF", +"h c #FDFFFF", +"i c #F9FCFF", +"j c #F0F4FD", +"k c #E9EFF8", +"l c #E1E7F3", +"m c #D5DDEC", +"n c #BCC7DB", +"o c #F3F7FE", +"p c #E2E8F3", +"q c #D4DFF1", +"r c #9FABC0", +"s c #FAFDFF", +"t c #F7FAFF", +"u c #F2F5FD", +"v c #EBEFF9", +"w c #D9E1EF", +"x c #B4C1D7", +"y c #E9EBF1", +"z c #E2E8EF", +"A c #DAE1ED", +"B c #CED7E6", +"C c #C6D2E7", +"D c #97A4BB", +"E c #F5E4E4", +"F c #F7F0F0", +"G c #F7FBFF", +"H c #F2F6FD", +"I c #EDF1FB", +"J c #E6ECF6", +"K c #DEE5F2", +"L c #BECADD", +"M c #8E9FBB", +"N c #E9C1C1", +"O c #F0DDDE", +"P c #F3F7FF", +"Q c #E7ECF7", +"R c #E1E7F4", +"S c #DBE3F0", +"T c #CDD6E7", +"U c #B7C4DA", +"V c #ACBAD3", +"W c #AAB9D2", +"X c #A4B4D1", +"Y c #7A8BA7", +"Z c #D99191", +"` c #E9C4C4", +" . c #F5F8FE", +".. c #E2E9F4", +"+. c #C2CCE0", +"@. c #B4C0D8", +"#. c #B1BFD6", +"$. c #AFBCD5", +"%. c #ABBBD6", +"&. c #CB6666", +"*. c #E3B3B3", +"=. c #F0F5FD", +"-. c #E9EFF9", +";. c #E5EBF6", +">. c #DDE4F1", +",. c #CBD5E5", +"'. c #BDC9DE", +"). c #BBC7DC", +"!. c #B8C5DB", +"~. c #B7C3DA", +"{. c #B3C1DB", +"]. c #E6B6B6", +"^. c #EBC3C3", +"/. c #B83030", +"(. c #CF7575", +"_. c #E5BDBE", +":. c #EBF0FA", +"<. c #DFE6F2", +"[. c #D0D8E8", +"}. c #C6D0E3", +"|. c #C2CDE0", +"1. c #BFCADF", +"2. c #BDC8DD", +"3. c #BCC8DC", +"4. c #B9C6DE", +"5. c #D17777", +"6. c #A80000", +"7. c #B52929", +"8. c #E0E6F3", +"9. c #D2DBEB", +"0. c #CCD6E7", +"a. c #C9D3E4", +"b. c #C6D1E3", +"c. c #C4CFE2", +"d. c #C1CDE0", +"e. c #BECBE2", +"f. c #E4B3B3", +"g. c #AC0B0B", +"h. c #B73031", +"i. c #ECE3EA", +"j. c #E9EEF8", +"k. c #D5DEEC", +"l. c #D1DAE9", +"m. c #D0D9E9", +"n. c #C8D2E5", +"o. c #C4D0E6", +"p. c #EAEFF8", +"q. c #DAE2EF", +"r. c #D3DBEA", +"s. c #CFD8E9", +"t. c #CDD7E8", +"u. c #CAD4E6", +"v. c #CAD3E5", +"w. c #C8D4E8", +"x. c #F3F7FD", +"y. c #D8E0EE", +"z. c #D4DCEB", +"A. c #CED7E7", +"B. c #CBD6EA", +"C. c #A5A5A5", +"D. c #A8A8A8", +"E. c #ACACAC", +"F. c #B1B4BA", +"G. c #D0D9E6", +"H. c #D0DAE9", +"I. c #CFD9EC", +"J. c #ECECEC", +"K. c #F5F5F5", +"L. c #F4F4F4", +"M. c #FEFEFE", +"N. c #FDFDFD", +"O. c #FBFBFB", +"P. c #FCFCFC", +"Q. c #F6F6F6", +"R. c #E0E0E0", +"S. c #73757A", +"T. c #C7CEDD", +"U. c #D2DAE9", +"V. c #D3DCEA", +"W. c #D1DBED", +"X. c #9C9C9C", +"Y. c #A4A4A4", +"Z. c #B7B7B7", +"`. c #B5B5B5", +" + c #B2B2B2", +".+ c #939393", +"++ c #C0C0C0", +"@+ c #5C5E62", +"#+ c #BAC0CC", +"$+ c #D2D9E7", +"%+ c #D2DCEE", +"&+ c #A1A1A1", +"*+ c #F3F3F3", +"=+ c #F9F9F9", +"-+ c #C7C7C7", +";+ c #DFDFDF", +">+ c #DEDEDE", +",+ c #DDDDDD", +"'+ c #EDEDED", +")+ c #F1F1F1", +"!+ c #626262", +"~+ c #000000", +"{+ c #3F3F3F", +"]+ c #E5E5E5", +"^+ c #EFEFEF", +"/+ c #BBBBBB", +"(+ c #585A5D", +"_+ c #B4BAC6", +":+ c #D1D9E7", +"<+ c #D6DEEC", +"[+ c #D4DEF0", +"}+ c #9E9E9E", +"|+ c #F0F0F0", +"1+ c #B0B0B0", +"2+ c #898989", +"3+ c #929292", +"4+ c #8B8B8B", +"5+ c #D1D1D1", +"6+ c #B6B6B6", +"7+ c #57595C", +"8+ c #B5BCC8", +"9+ c #D5DDED", +"0+ c #D5DFF0", +"a+ c #9D9D9D", +"b+ c #AEAEAE", +"c+ c #EAEAEA", +"d+ c #E3E3E3", +"e+ c #BEBEBE", +"f+ c #C8C8C8", +"g+ c #C1C1C1", +"h+ c #DCDCDC", +"i+ c #E6E6E6", +"j+ c #B4B4B4", +"k+ c #58595D", +"l+ c #B5BCC7", +"m+ c #D3DBE8", +"n+ c #D7DFEE", +"o+ c #9A9A9A", +"p+ c #EBEBEB", +"q+ c #ABABAB", +"r+ c #E7E7E7", +"s+ c #E1E1E1", +"t+ c #3A3A3A", +"u+ c #202020", +"v+ c #CFCFCF", +"w+ c #B6BDC8", +"x+ c #D2DAE7", +"y+ c #D6DFF1", +"z+ c #979797", +"A+ c #B1B1B1", +"B+ c #DADADA", +"C+ c #585858", +"D+ c #C5C5C5", +"E+ c #D7D7D7", +"F+ c #ADADAD", +"G+ c #56575B", +"H+ c #B5BBC8", +"I+ c #989898", +"J+ c #B3B3B3", +"K+ c #BABABA", +"L+ c #BCBCBC", +"M+ c #A9A9A9", +"N+ c #545558", +"O+ c #B5BBC7", +"P+ c #838383", +"Q+ c #4F4F4F", +"R+ c #3C3C3C", +"S+ c #47484A", +"T+ c #4C4D4D", +"U+ c #4D4D4D", +"V+ c #4C4C4D", +"W+ c #4B4C4D", +"X+ c #4B4B4C", +"Y+ c #4A4B4C", +"Z+ c #5E6064", +"`+ c #B7BEC9", +" @ c #8A93A2", +".@ c #B3B7BD", +"+@ c #BDBDBD", +"@@ c #B8B9BC", +"#@ c #B1B5BB", +"$@ c #B0B4BA", +"%@ c #B0B3BA", +"&@ c #ADB1B9", +"*@ c #ACB0B8", +"=@ c #ABB0B7", +"-@ c #AAAFB6", +";@ c #A8ADB5", +">@ c #A6ABB4", +",@ c #A5AAB3", +"'@ c #A3A8B2", +")@ c #ACB2BC", +"!@ c #C1C8D5", +"~@ c #D5DCEA", +"{@ c #D7DEED", +"]@ c #D6E0F2", +"^@ c #ABB6CA", +"/@ c #DFE4EB", +"(@ c #E5E6EA", +"_@ c #DCE1E8", +":@ c #DBE0E7", +"<@ c #DADFE7", +"[@ c #D8DCE5", +"}@ c #D6DBE5", +"|@ c #D5DAE4", +"1@ c #D4D9E3", +"2@ c #D1D7E1", +"3@ c #CED5E0", +"4@ c #CED4DF", +"5@ c #CBD1DD", +"6@ c #CCD4E0", +"7@ c #EAF3FF", +"8@ c #F8FAFE", +"9@ c #EFF4FC", +"0@ c #EEF3FB", +"a@ c #EDF2FB", +"b@ c #EAEFF9", +"c@ c #E8EEF8", +" . . . . . . . . . . . . . . . + ", +" . @ # # # # # # $ % & * = - ; > , ", +" . ' # # # # # $ % ) ! ~ { ] ^ / ( _ ", +" . ' # # # # # $ : < [ * } | 1 2 3 4 5 ", +" . ' # # # # # # 6 7 8 9 0 a b c d e f g ", +" . ' # # # # # # h i d j k l m n # o p q r ", +" . ' # # # # # # h s t u v = w x y z A B C D ", +" . ' # # # # # # E F G H I J K L M M M M M M M ", +" . ' # # # # # # N O 7 P 9 Q R S ] T U V W X Y ", +" . ' # # # # # # Z ` s .! k ..S m +.@.#.$.%.Y ", +" . ' # # # # # # &.*.i d =.-.;.>.,.'.).!.~.{.Y ", +" . ' # # # # ].^./.(._.t o :.<.[.}.|.1.2.3.4.Y ", +" . ' # # # # 5.6.6.6.7.o * 8.9.0.a.b.c.|.d.e.Y ", +" . ' # # # # # f.g.h.i.j.a k.l.m.T ^ n.b.b.o.Y ", +" . ' # # # # h : i ) p.<.q.] m r.l.s.t.u.v.w.Y ", +" . ' # # # $ h 6 x.J l K | S y.] z.r.l.; A.B.Y ", +"C.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.E.F.G.b H.I.Y ", +"D.J.K.L.M.N.O.O.O.O.O.O.O.O.P.Q.L.L.L.# Q.K.K.R.S.T.U.V.W.Y ", +"C.K.O.# X.Y.Z.`.`.`.`.`.`.`. +J.P.P.# .+L.# K.++@+#+$+m %+Y ", +"&+*+L.=+&+-+;+>+>+>+>+>+>+>+,+'+L.)+!+~+{+]+^+/+(+_+:+<+[+Y ", +"}+)+|+)+1+R.# # # # # # # # # |+'+R.2+3+4+5+J.6+7+8+:+9+0+Y ", +"a+)+'+^+b+>+# # # # # # # # # '+c+d+e+f+g+h+i+j+k+l+m+n+0+Y ", +"o+)+c+p+q+R.# # # # # # # # # p+r+s+t+~+u+v+]+1+7+w+x+y.y+Y ", +"z+'+R.;+A+h+Q.Q.Q.Q.Q.Q.Q.Q.Q.s+B+s+>+C+D+i+E+F+G+H+x+y.y+Y ", +"I+d+J+Z.K+Z.6+6+6+6+6+6+6+6+6+Z.Z.Z.K+++L+Z.K+M+N+O+m+y.0+Y ", +"P+Q+t+R+R+R+R+S+T+U+U+T+V+V+V+V+V+W+W+W+X+X+Y+Y+Z+`+m+] y+Y ", +" @.@+@@@#@#@$@%@&@&@*@=@-@;@>@,@'@)@!@~@{@]@Y ", +" ^@/@p+(@_@_@:@<@[@[@}@|@1@2@3@4@5@6@:+] {@]@Y ", +" . 7@# 8@9@9@0@a@b@b@c@0 J = { <.| q.y.y.{@]@Y ", +" . Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ", +" ", +" "}; diff --git a/econtrol/icons/printer.xpm b/econtrol/icons/printer.xpm new file mode 100755 index 0000000..1c9a7ba --- /dev/null +++ b/econtrol/icons/printer.xpm @@ -0,0 +1,506 @@ +/* XPM */ +static char * printer_xpm[] = { +"32 32 471 2", +" c None", +". c #75A7FE", +"+ c #6EA3FB", +"@ c #75A6FB", +"# c #CADDFC", +"$ c #E6EFFE", +"% c #D2E2FF", +"& c #ADCBFE", +"* c #86B1FC", +"= c #7AAAFD", +"- c #72A6FE", +"; c #92B7F7", +"> c #FFFFFF", +", c #FEFEFF", +"' c #F6F9FF", +") c #EAF1FE", +"! c #E4EEFF", +"~ c #D3E3FE", +"{ c #B1CDFD", +"] c #9EC2FE", +"^ c #8DB7FE", +"/ c #87B0F6", +"( c #F5F7FA", +"_ c #F9FBFF", +": c #F3F7FF", +"< c #F1F6FF", +"[ c #F2F7FF", +"} c #F2F6FF", +"| c #F0F5FF", +"1 c #EFF5FF", +"2 c #E2EDFF", +"3 c #4983E7", +"4 c #CDDBF3", +"5 c #FAFCFF", +"6 c #F0F4FF", +"7 c #EDF3FF", +"8 c #EBF1FF", +"9 c #E7EFFF", +"0 c #E6EEFF", +"a c #E3EDFF", +"b c #E0EAFF", +"c c #DFEAFF", +"d c #BCD1F6", +"e c #205CC3", +"f c #77A6F8", +"g c #F9FAFE", +"h c #F5F8FF", +"i c #EEF4FF", +"j c #EBF2FF", +"k c #E9F0FF", +"l c #DDE8FF", +"m c #D6E4FF", +"n c #D0E1FF", +"o c #CEDFFF", +"p c #CDDFFF", +"q c #DAE8FF", +"r c #5385DC", +"s c #73A5FB", +"t c #D8E2F2", +"u c #F8FAFF", +"v c #ECF3FF", +"w c #EAF1FF", +"x c #BBD4FF", +"y c #B3CEFF", +"z c #B7D1FF", +"A c #BFD5FF", +"B c #C6DAFF", +"C c #D3E3FF", +"D c #A3BFF1", +"E c #205ABF", +"F c #8BB3F6", +"G c #F4F7FB", +"H c #DCE8FF", +"I c #ADCAFF", +"J c #A9C8FF", +"K c #B5CFFF", +"L c #BED5FF", +"M c #C3D9FF", +"N c #C8DCFF", +"O c #5384DA", +"P c #143D86", +"Q c #D1DCF2", +"R c #E5EEFF", +"S c #A7C7FF", +"T c #B4CFFF", +"U c #BDD4FF", +"V c #C1D7FF", +"W c #C5D9FF", +"X c #CCDEFF", +"Y c #A3C0F2", +"Z c #1E59BF", +"` c #7EAAF5", +" . c #F4F7FF", +".. c #E3ECFF", +"+. c #AAC9FF", +"@. c #B4CEFF", +"#. c #BBD3FF", +"$. c #C0D6FF", +"%. c #C3D8FF", +"&. c #D4E4FF", +"*. c #4E82DC", +"=. c #0E3373", +"-. c #959CDC", +";. c #949CDE", +">. c #99A1E3", +",. c #9CA4E5", +"'. c #919FCD", +"). c #E6EAF0", +"!. c #DDE9FF", +"~. c #C2D7FF", +"{. c #AECAFF", +"]. c #CBDDFF", +"^. c #B7CFFA", +"/. c #326CCD", +"(. c #9997C1", +"_. c #9093C8", +":. c #CDCFEB", +"<. c #B7BFFF", +"[. c #A4ACEE", +"}. c #9DA5E6", +"|. c #8292C3", +"1. c #E4ECF9", +"2. c #B7D3FF", +"3. c #B5D2FF", +"4. c #B9D3FF", +"5. c #BCD4FF", +"6. c #BFD6FF", +"7. c #C4D9FF", +"8. c #CCDFFF", +"9. c #77A1E8", +"0. c #124396", +"a. c #8C91CA", +"b. c #9CA3DD", +"c. c #E7E9F7", +"d. c #8991D3", +"e. c #474F91", +"f. c #3D4587", +"g. c #7880C2", +"h. c #6B73B5", +"i. c #6770AE", +"j. c #7480BA", +"k. c #8E9DD3", +"l. c #A2B4E2", +"m. c #B4C9F3", +"n. c #C7DDFF", +"o. c #C9DFFF", +"p. c #C6DBFF", +"q. c #BCD0FD", +"r. c #3964BD", +"s. c #8B8CBC", +"t. c #CFD3EE", +"u. c #FBFBFF", +"v. c #6C74B6", +"w. c #2D3577", +"x. c #121A5C", +"y. c #0B1355", +"z. c #3E4688", +"A. c #51599B", +"B. c #434B8D", +"C. c #343C7D", +"D. c #3E4583", +"E. c #576095", +"F. c #7B85AF", +"G. c #A3B2DA", +"H. c #BFD1F7", +"I. c #D2E4FF", +"J. c #6679BB", +"K. c #9199DA", +"L. c #9194CA", +"M. c #9396C9", +"N. c #B3936E", +"O. c #9F8E93", +"P. c #A8AEE4", +"Q. c #E5E9FE", +"R. c #DBDFFF", +"S. c #ECEEFF", +"T. c #F9FAFF", +"U. c #E7EAFF", +"V. c #98A0E2", +"W. c #6169AB", +"X. c #394183", +"Y. c #192163", +"Z. c #000633", +"`. c #081052", +" + c #151D5F", +".+ c #252D6F", +"++ c #353D7F", +"@+ c #2C3476", +"#+ c #20286A", +"$+ c #252C64", +"%+ c #2C3360", +"&+ c #293171", +"*+ c #F1F3FF", +"=+ c #F0F2FF", +"-+ c #F0F2FE", +";+ c #D6DBF8", +">+ c #B9B5CD", +",+ c #AF9172", +"'+ c #9199DB", +")+ c #EFF0FF", +"!+ c #F3F5FF", +"~+ c #E6E9FF", +"{+ c #E8EBFF", +"]+ c #F7F8FF", +"^+ c #D1D6FF", +"/+ c #A2AAEC", +"(+ c #6971B3", +"_+ c #1F2769", +":+ c #091153", +"<+ c #020A4C", +"[+ c #050D4F", +"}+ c #1A2264", +"|+ c #161E60", +"1+ c #DADEFF", +"2+ c #F2F4FF", +"3+ c #C4CAFF", +"4+ c #929ADC", +"5+ c #A0A8EA", +"6+ c #ACB4F6", +"7+ c #6D75C8", +"8+ c #A4ABE9", +"9+ c #BBC1F0", +"0+ c #CFD3F7", +"a+ c #DCDFFC", +"b+ c #E2E6FF", +"c+ c #DEE1FF", +"d+ c #EBEDFF", +"e+ c #F6F7FF", +"f+ c #485092", +"g+ c #11195B", +"h+ c #030B4D", +"i+ c #AEB6F8", +"j+ c #DFE2FF", +"k+ c #9098DA", +"l+ c #969EE0", +"m+ c #99A1E8", +"n+ c #8991D4", +"o+ c #CCD1FA", +"p+ c #BCC1F3", +"q+ c #B2B8EF", +"r+ c #B6BCEF", +"s+ c #BCC1EF", +"t+ c #CACEF3", +"u+ c #D6DAFA", +"v+ c #D6DAFE", +"w+ c #FDFDFF", +"x+ c #EAECFF", +"y+ c #EDEFFF", +"z+ c #F0F1FF", +"A+ c #B2BAFC", +"B+ c #8E96D8", +"C+ c #979FE1", +"D+ c #7179C4", +"E+ c #7C84CF", +"F+ c #8890D2", +"G+ c #CBD1FF", +"H+ c #D0D5FF", +"I+ c #7D85C7", +"J+ c #777FC2", +"K+ c #A6AEE9", +"L+ c #BCC2F4", +"M+ c #B1B8EE", +"N+ c #B3B9ED", +"O+ c #BEC3F0", +"P+ c #C3C9F3", +"Q+ c #CFD4F8", +"R+ c #E2E6FE", +"S+ c #E1E4FF", +"T+ c #F8F9FF", +"U+ c #D5DAFF", +"V+ c #9098DC", +"W+ c #6870BE", +"X+ c #8189D4", +"Y+ c #868ED0", +"Z+ c #BDC4FF", +"`+ c #C2C8FF", +" @ c #7A83B8", +".@ c #7C83BC", +"+@ c #646CAE", +"@@ c #A2AAED", +"#@ c #B4BCF8", +"$@ c #B7BEF3", +"%@ c #B8BEF0", +"&@ c #BEC3EE", +"*@ c #CACEF4", +"=@ c #C9CEF9", +"-@ c #CED3FD", +";@ c #FCFCFF", +">@ c #8B93DA", +",@ c #676FBE", +"'@ c #939BE2", +")@ c #B0B8FA", +"!@ c #B3BBFD", +"~@ c #858DCF", +"{@ c #BDC0ED", +"]@ c #CBD5FA", +"^@ c #F0EDA9", +"/@ c #C0C7FC", +"(@ c #828ACC", +"_@ c #757DBF", +":@ c #848CCE", +"<@ c #949CDF", +"[@ c #ADB5FA", +"}@ c #BFC5F3", +"|@ c #B9BEEF", +"1@ c #BBC0EE", +"2@ c #B7BDEF", +"3@ c #C3C8F3", +"4@ c #D8DCFA", +"5@ c #E4E7FD", +"6@ c #9199E0", +"7@ c #6E76C6", +"8@ c #A3ABF0", +"9@ c #B4BCFE", +"0@ c #B9C1FF", +"a@ c #BAC2FF", +"b@ c #7B76A7", +"c@ c #A5A6D4", +"d@ c #CFD9FF", +"e@ c #FFFEF4", +"f@ c #FDEFE2", +"g@ c #FAE3E2", +"h@ c #EBE9FB", +"i@ c #CED3FF", +"j@ c #878FD1", +"k@ c #838BCD", +"l@ c #878FCF", +"m@ c #A3ABED", +"n@ c #D8DCFD", +"o@ c #D1D5FA", +"p@ c #C5C9F5", +"q@ c #B5BBF0", +"r@ c #B1B7EC", +"s@ c #959EE7", +"t@ c #AFB8FB", +"u@ c #BEC5FF", +"v@ c #C0C7FF", +"w@ c #98B3E4", +"x@ c #BFCEE8", +"y@ c #E3E8D6", +"z@ c #F5CECD", +"A@ c #E54F48", +"B@ c #E1534D", +"C@ c #F9D2A8", +"D@ c #FBFDDC", +"E@ c #EFF7FB", +"F@ c #C3C9FF", +"G@ c #ADB5F7", +"H@ c #8188C7", +"I@ c #5B669F", +"J@ c #8189CB", +"K@ c #D4D9FF", +"L@ c #D6DBFF", +"M@ c #D7DCFF", +"N@ c #D9DDFF", +"O@ c #BCC3FF", +"P@ c #8D95D7", +"Q@ c #8B6C61", +"R@ c #9FC2FD", +"S@ c #BFCBE0", +"T@ c #C1C0BE", +"U@ c #8D8C8A", +"V@ c #BBA8AA", +"W@ c #BB4D5A", +"X@ c #EB9739", +"Y@ c #E8ED28", +"Z@ c #7BC492", +"`@ c #48AFD7", +" # c #C3DEF3", +".# c #FAF9FC", +"+# c #7282BD", +"@# c #63658A", +"## c #787FBD", +"$# c #C9CFFF", +"%# c #CAD0FF", +"&# c #876D6B", +"*# c #9EC1FE", +"=# c #CBDEFF", +"-# c #FFFEE8", +";# c #FAE2C1", +"># c #F57977", +",# c #CD9080", +"'# c #CCD4AE", +")# c #D1CDA0", +"!# c #8BAB74", +"~# c #2D9BCE", +"{# c #549BD3", +"]# c #A9A8CE", +"^# c #CBC5DE", +"/# c #92A6E6", +"(# c #8581AD", +"_# c #3E436D", +":# c #6F76B2", +"<# c #BBC2FE", +"[# c #BCC3FE", +"}# c #C5CCFF", +"|# c #BFC6FF", +"1# c #82696B", +"2# c #A6C6FD", +"3# c #CFE1FF", +"4# c #FEFCC7", +"5# c #FEF99A", +"6# c #FBEAEA", +"7# c #FEE793", +"8# c #FFFF7F", +"9# c #8EB0C1", +"0# c #92A9C4", +"a# c #D7D9E0", +"b# c #C4BDCD", +"c# c #B7ABCE", +"d# c #F1F0F7", +"e# c #C1D4F4", +"f# c #807879", +"g# c #785543", +"h# c #59423C", +"i# c #3E3F60", +"j# c #4F517B", +"k# c #596099", +"l# c #838BC9", +"m# c #8D94D5", +"n# c #B8C0FF", +"o# c #8A92D4", +"p# c #7E6871", +"q# c #83B0FE", +"r# c #88B4FF", +"s# c #D7E6FF", +"t# c #FCF8A3", +"u# c #FEFAA4", +"v# c #FEFBB3", +"w# c #FEFBB7", +"x# c #FFFFFB", +"y# c #FBFEFF", +"z# c #E8EFF6", +"A# c #D8D3DA", +"B# c #E6E4E6", +"C# c #C7C7C4", +"D# c #A5C0EE", +"E# c #455E89", +"F# c #553D34", +"G# c #4F4048", +"H# c #604F5B", +"I# c #535688", +"J# c #6E555D", +"K# c #8CB1F1", +"L# c #95BBFC", +"M# c #AFCCFE", +"N# c #DFE9D5", +"O# c #FAF9C7", +"P# c #FEF996", +"Q# c #FEFDD6", +"R# c #FFFEEB", +"S# c #FEFEFE", +"T# c #FAFCFE", +"U# c #84A9E7", +"V# c #3B547F", +"W# c #6B89BC", +"X# c #86ACEC", +"Y# c #93B9FA", +"Z# c #A8C8F5", +"`# c #EDF0B5", +" $ c #FBF8A3", +".$ c #FEFBC1", +"+$ c #F7FAFE", +"@$ c #7AA2E5", +"#$ c #304872", +"$$ c #5F82BF", +"%$ c #82A8E9", +"&$ c #88B4FC", +"*$ c #B1CBF9", +"=$ c #7DA2E1", +"-$ c #223961", +" ", +" . + ", +" @ # $ % & * = - ", +" ; > > , ' ) ! ~ { ] ^ ", +" / ( _ : < < [ } < | 1 2 3 ", +" 4 5 } 6 7 8 9 0 a b c d e ", +" f g h i j k l m n o p q r ", +" s t u v w l x y z A B C D E ", +" F G | k H I J K L M N n O P ", +" Q ' 9 R z S T U V W X Y Z ", +" ` .j ..B +.@.#.$.%.B &.*.=. ", +" -.;.>.,.'.).[ !.~.{.T x $.~.%.].^./. ", +" (._.:.<.[.}.|.1.N 2.3.4.5.6.V %.7.8.9.0. ", +" a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.n.B p.q.r. ", +" s.t.u.u.v.w.x.y.x.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N. ", +" O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+ ", +" '+)+*+> , !+~+{+*+]+^+/+(+_+:+<+[+}+|+y.1+2+*+3+4+5+6+ ", +" 7+8+9+0+a+b+*+, , !+c+d+e+e+!+;.f+g+h+i+*+*+j+>.k+l+m+ ", +" n+o+p+q+r+s+t+u+v+d+w+w+{+U.x+y+!+x+b+*+*+z+A+B+C+D+E+ ", +" F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+w+S.U+U.*+*+j+5+V+W+X+6+ ", +" Y+Z+`+ @.@h.+@v.@@#@$@%@N+&@*@=@-@;@x+z+S.3+>@,@'@)@!@ ", +" ~@)@{@]@^@/@5+'+(@g._@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@ ", +" b@c@d@e@f@g@h@i@6+>.j@k@l@n+B+m@n@o@p@q@r@s@t@a@u@v@'+ ", +" w@x@y@z@A@B@C@D@E@~+F@G@C+H@I@J@K@L@M@N@1+O@Z+v@3+P@Q@ ", +" R@S@T@U@V@W@X@Y@Z@`@ #.#e+1++#@###$#%#i@H+H+Z+u@3+B+&# ", +" *#=#-#;#>#,#'#)#!#~#{#]#^#w+/#(#_#:#<#[#`+3+}#O@|#k+1# ", +" 2#3#4#5#> 6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#5+n#o#p# ", +"q#r#s#t#u#v#w#> x#y#z#A#B#C#D#E# F#G#H#I#W.J# ", +" K#L#M#N#O#P#Q#R#> S#T#U#V# ", +" W#X#Y#Z#`# $.$+$@$#$ ", +" $$%$&$*$=$-$ ", +" "}; diff --git a/econtrol/icons/samba.xpm b/econtrol/icons/samba.xpm new file mode 100755 index 0000000..50b63b5 --- /dev/null +++ b/econtrol/icons/samba.xpm @@ -0,0 +1,818 @@ +/* XPM */ +static char * samba_xpm[] = { +"48 48 767 2", +" c None", +". c #575757", +"+ c #535353", +"@ c #505050", +"# c #4D4D4D", +"$ c #4A4A4A", +"% c #474747", +"& c #444444", +"* c #414141", +"= c #3E3E3E", +"- c #3B3B3B", +"; c #373737", +"> c #353535", +", c #313131", +"' c #2F2F2F", +") c #2B2B2B", +"! c #282828", +"~ c #252525", +"{ c #222222", +"] c #1F1F1F", +"^ c #1C1C1C", +"/ c #1A1A1A", +"( c #181818", +"_ c #464646", +": c #434343", +"< c #404040", +"[ c #3D3D3D", +"} c #3A3A3A", +"| c #343434", +"1 c #2E2E2E", +"2 c #1B1B1B", +"3 c #191919", +"4 c #4F4F4F", +"5 c #4C4C4C", +"6 c #FFFFFF", +"7 c #FEFBFB", +"8 c #FBF2F2", +"9 c #F8E3E3", +"0 c #F3CECE", +"a c #ECB4B4", +"b c #E59393", +"c c #DB6E6E", +"d c #303030", +"e c #FBFCFD", +"f c #F2F5F9", +"g c #E4EAF2", +"h c #D1DBEB", +"i c #B8C8E0", +"j c #9AB2D3", +"k c #7898C3", +"l c #494949", +"m c #FEFCFC", +"n c #F6DDDD", +"o c #F2C9C9", +"p c #EDB4B4", +"q c #E79C9C", +"r c #E28585", +"s c #DC6F6F", +"t c #D15555", +"u c #2D2D2D", +"v c #2A2A2A", +"w c #FCFDFD", +"x c #DEE5EF", +"y c #CBD6E8", +"z c #B8C8DF", +"A c #A3B7D6", +"B c #8DA9CE", +"C c #7798C5", +"D c #6488B8", +"E c #333333", +"F c #686868", +"G c #0D0D0F", +"H c #141416", +"I c #28282A", +"J c #2B2B2D", +"K c #616060", +"L c #484848", +"M c #454545", +"N c #FCF5F5", +"O c #EEBBBB", +"P c #EAA9A9", +"Q c #E59494", +"R c #E07F7F", +"S c #DB6A6A", +"T c #CB4F4F", +"U c #292929", +"V c #262626", +"W c #F5F7FB", +"X c #BFCDE2", +"Y c #ADC0DC", +"Z c #99B1D4", +"` c #86A2CB", +" . c #7697C2", +".. c #6282B4", +"+. c #575758", +"@. c #040405", +"#. c #212123", +"$. c #4F4F50", +"%. c #323234", +"&. c #242426", +"*. c #1E1D1E", +"=. c #2C2C2B", +"-. c #131213", +";. c #F9E9E9", +">. c #E79A9A", +",. c #E28989", +"'. c #DE7575", +"). c #D96060", +"!. c #C54545", +"~. c #232323", +"{. c #EAEEF5", +"]. c #A0B5D5", +"^. c #8FA8CE", +"/. c #7D9AC7", +"(. c #6D8EC0", +"_. c #5E7FB0", +":. c #363636", +"<. c #0C0C0E", +"[. c #121214", +"}. c #404042", +"|. c #2D2D2F", +"1. c #020204", +"2. c #000000", +"3. c #F5D8D8", +"4. c #DE7979", +"5. c #DA6767", +"6. c #D65555", +"7. c #BD3939", +"8. c #DAE2EF", +"9. c #809DC8", +"0. c #7190C1", +"a. c #6487BD", +"b. c #597AAC", +"c. c #575656", +"d. c #08080A", +"e. c #0C0C0C", +"f. c #141314", +"g. c #070708", +"h. c #F0C3C3", +"i. c #D75858", +"j. c #D34646", +"k. c #B72E2E", +"l. c #C6D3E6", +"m. c #7C9AC7", +"n. c #7090C1", +"o. c #6389BB", +"p. c #5981B7", +"q. c #5276A6", +"r. c #302F2F", +"s. c #030305", +"t. c #09090A", +"u. c #070709", +"v. c #010103", +"w. c #D03737", +"x. c #B01F1F", +"y. c #AFC2DC", +"z. c #7698C5", +"A. c #7495C1", +"B. c #698BBE", +"C. c #5E83BB", +"D. c #537DB5", +"E. c #4D75B2", +"F. c #4B6DA0", +"G. c #232325", +"H. c #0F0F11", +"I. c #5B5A5A", +"J. c #161413", +"K. c #030304", +"L. c #040406", +"M. c #1F1F20", +"N. c #5F5E5D", +"O. c #313030", +"P. c #0F0E0F", +"Q. c #E28B8B", +"R. c #D65353", +"S. c #D44B4B", +"T. c #D14040", +"U. c #CF3434", +"V. c #CC2525", +"W. c #A71111", +"X. c #171717", +"Y. c #141414", +"Z. c #92ACCF", +"`. c #6288BB", +" + c #5E82B9", +".+ c #557CB6", +"++ c #4B74B2", +"@+ c #4270AE", +"#+ c #3F6BAD", +"$+ c #3F6399", +"%+ c #DBDBDB", +"&+ c #252526", +"*+ c #DDDCDC", +"=+ c #19191A", +"-+ c #D03D3D", +";+ c #CE3535", +">+ c #CD2C2C", +",+ c #CA2121", +"'+ c #C81313", +")+ c #A00303", +"!+ c #111111", +"~+ c #7093C1", +"{+ c #4972B0", +"]+ c #436DAC", +"^+ c #3866AB", +"/+ c #3160A6", +"(+ c #2E5EA5", +"_+ c #335A90", +":+ c #323233", +"<+ c #C0C0C0", +"[+ c #4B4B4A", +"}+ c #D9D9D8", +"|+ c #111112", +"1+ c #DAD9D9", +"2+ c #CECECE", +"3+ c #515151", +"4+ c #2C2C2C", +"5+ c #D13E3E", +"6+ c #C62727", +"7+ c #C02222", +"8+ c #B81C1C", +"9+ c #B21313", +"0+ c #A80A0A", +"a+ c #A10000", +"b+ c #8B0000", +"c+ c #101010", +"d+ c #0D0D0D", +"e+ c #4A74B2", +"f+ c #3461A4", +"g+ c #305C9E", +"h+ c #285696", +"i+ c #204E8D", +"j+ c #194487", +"k+ c #1A4484", +"l+ c #285087", +"m+ c #42403F", +"n+ c #C7C6C7", +"o+ c #C8C4BA", +"p+ c #4F411D", +"q+ c #6F6341", +"r+ c #93918B", +"s+ c #0B0B0C", +"t+ c #C2C2C2", +"u+ c #696969", +"v+ c #161616", +"w+ c #131313", +"x+ c #0A0A0A", +"y+ c #070707", +"z+ c #040404", +"A+ c #010101", +"B+ c #0F0F0F", +"C+ c #3C3B3A", +"D+ c #8F8C8A", +"E+ c #725923", +"F+ c #C99814", +"G+ c #E2B819", +"H+ c #D3AE1F", +"I+ c #C3A523", +"J+ c #64541D", +"K+ c #B6AD93", +"L+ c #151515", +"M+ c #121212", +"N+ c #090909", +"O+ c #060606", +"P+ c #030303", +"Q+ c #3C3B39", +"R+ c #785A23", +"S+ c #D19D1B", +"T+ c #E7B510", +"U+ c #EBC616", +"V+ c #F3D42D", +"W+ c #F5D622", +"X+ c #F1D014", +"Y+ c #DBB723", +"Z+ c #513E11", +"`+ c #242424", +" @ c #212121", +".@ c #FDFDFB", +"+@ c #F8F8F2", +"@@ c #F0F0E2", +"#@ c #E5E4CC", +"$@ c #D8D6B0", +"%@ c #C7C58E", +"&@ c #B4B166", +"*@ c #050505", +"=@ c #020202", +"-@ c #F7FAF6", +";@ c #EBF4E8", +">@ c #DAEAD5", +",@ c #C6DEBA", +"'@ c #ABCE9E", +")@ c #91C07F", +"!@ c #86BB72", +"~@ c #5B5752", +"{@ c #986A0A", +"]@ c #E2A90B", +"^@ c #EEBD11", +"/@ c #F0CD1B", +"(@ c #F5D623", +"_@ c #EFCD17", +":@ c #D5AD16", +"<@ c #B07A0C", +"[@ c #554110", +"}@ c #050506", +"|@ c #0D0D0E", +"1@ c #1E1E1E", +"2@ c #FDFDFC", +"3@ c #ECECDB", +"4@ c #E2E1C5", +"5@ c #D7D6B0", +"6@ c #CBCB98", +"7@ c #C0BE7F", +"8@ c #B4B267", +"9@ c #A4A14D", +"0@ c #FCFDFC", +"a@ c #E1EEDB", +"b@ c #D0E3C8", +"c@ c #BED9B2", +"d@ c #A9CE9B", +"e@ c #98C585", +"f@ c #8CBD76", +"g@ c #84B66F", +"h@ c #5D4518", +"i@ c #C28F11", +"j@ c #DFB613", +"k@ c #E3C015", +"l@ c #D0A917", +"m@ c #C49113", +"n@ c #C39C44", +"o@ c #43392E", +"p@ c #141415", +"q@ c #464544", +"r@ c #100F10", +"s@ c #504F4E", +"t@ c #1D1D1D", +"u@ c #F9F9F5", +"v@ c #DCDBB7", +"w@ c #D3D1A4", +"x@ c #C7C68F", +"y@ c #BCBA79", +"z@ c #B1AE62", +"A@ c #9F9B46", +"B@ c #F6FAF4", +"C@ c #C3DEB9", +"D@ c #B3D4A7", +"E@ c #A2CA93", +"F@ c #94C281", +"G@ c #88BC74", +"H@ c #84B46F", +"I@ c #424243", +"J@ c #666666", +"K@ c #A69169", +"L@ c #B48514", +"M@ c #BF8A0B", +"N@ c #BD870B", +"O@ c #BE8F27", +"P@ c #C1AD7F", +"Q@ c #CFCDCC", +"R@ c #858585", +"S@ c #5B5B5B", +"T@ c #1D1D1E", +"U@ c #F3F3E8", +"V@ c #CACA95", +"W@ c #C1BF82", +"X@ c #B7B66F", +"Y@ c #ADAA58", +"Z@ c #96953C", +"`@ c #A6CD98", +" # c #9AC589", +".# c #8BBD7A", +"+# c #89BB73", +"@# c #84B372", +"## c #151517", +"$# c #8C8B8B", +"%# c #C3C3C3", +"&# c #B2A385", +"*# c #B09069", +"=# c #B39C73", +"-# c #B9B2A6", +";# c #D1D0D0", +"># c #F9F8F8", +",# c #E0E0E0", +"'# c #2F2F30", +")# c #464647", +"!# c #EAE9D6", +"~# c #B9B872", +"{# c #B1AE5E", +"]# c #A7A44C", +"^# c #8E8D30", +"/# c #DDECD7", +"(# c #99C488", +"_# c #8CBF7B", +":# c #87BB72", +"<# c #86BB73", +"[# c #3D3C3D", +"}# c #E8E8E8", +"|# c #BCBCBC", +"1# c #B5B5B5", +"2# c #C4C4C4", +"3# c #DEDEDE", +"4# c #F7F7F7", +"5# c #FEFEFE", +"6# c #989898", +"7# c #060608", +"8# c #171718", +"9# c #DFDEC0", +"0# c #A8A54F", +"a# c #A09F3D", +"b# c #848325", +"c# c #CBE1C2", +"d# c #96C483", +"e# c #91C07E", +"f# c #87BB76", +"g# c #84BA6E", +"h# c #85B96F", +"i# c #606060", +"j# c #B1B1B1", +"k# c #FCFCFC", +"l# c #E6E6E6", +"m# c #EDEDED", +"n# c #050507", +"o# c #D2D1A5", +"p# c #98972D", +"q# c #7B7916", +"r# c #B4D4A8", +"s# c #84B96C", +"t# c #7FB769", +"u# c #7DB466", +"v# c #7AB466", +"w# c #83BA6D", +"x# c #404041", +"y# c #ECECEC", +"z# c #FDFDFD", +"A# c #F4F4F4", +"B# c #565657", +"C# c #0B0B0B", +"D# c #080808", +"E# c #C3C184", +"F# c #A7A34A", +"G# c #A2A141", +"H# c #9D9C36", +"I# c #95942A", +"J# c #8F8D1A", +"K# c #717008", +"L# c #99C689", +"M# c #70AD57", +"N# c #70AD54", +"O# c #6EAD57", +"P# c #76B15F", +"Q# c #101011", +"R# c #5C5C5C", +"S# c #DCDCDC", +"T# c #F1F1F1", +"U# c #F6F6F6", +"V# c #EEEEEE", +"W# c #FAFAFA", +"X# c #FBFBFB", +"Y# c #E7E7E7", +"Z# c #DDDDDD", +"`# c #D5D5D5", +" $ c #808080", +".$ c #6D6D6D", +"+$ c #B1B05F", +"@$ c #9B9A32", +"#$ c #97952A", +"$$ c #929021", +"%$ c #8C8815", +"&$ c #858408", +"*$ c #605E00", +"=$ c #7BB464", +"-$ c #5BA240", +";$ c #5DA442", +">$ c #63A84A", +",$ c #464545", +"'$ c #868585", +")$ c #E2E2E2", +"!$ c #F9F9F9", +"~$ c #CCCCCC", +"{$ c #C5C5C5", +"]$ c #171617", +"^$ c #9C9934", +"/$ c #8D8B1D", +"($ c #868418", +"_$ c #7F7F11", +":$ c #777508", +"<$ c #6E6A00", +"[$ c #5E5A00", +"}$ c #484500", +"|$ c #57A33C", +"1$ c #459428", +"2$ c #49942F", +"3$ c #57983E", +"4$ c #161617", +"5$ c #383838", +"6$ c #ADADAD", +"7$ c #201F1F", +"8$ c #686767", +"9$ c #A0A0A0", +"0$ c #3F3D3C", +"a$ c #161618", +"b$ c #272727", +"c$ c #151413", +"d$ c #393939", +"e$ c #8D8D8D", +"f$ c #333334", +"g$ c #09090B", +"h$ c #0E0D0D", +"i$ c #939393", +"j$ c #CBCBCB", +"k$ c #F8F8F8", +"l$ c #AFAFAF", +"m$ c #505051", +"n$ c #393634", +"o$ c #605E5D", +"p$ c #5D5D5D", +"q$ c #141313", +"r$ c #131314", +"s$ c #C7C7C7", +"t$ c #BFBFBF", +"u$ c #1F1F21", +"v$ c #666667", +"w$ c #3E3E3D", +"x$ c #0E0E0F", +"y$ c #171616", +"z$ c #333232", +"A$ c #D2D2D2", +"B$ c #F2F2F2", +"C$ c #E3E3E3", +"D$ c #F0F0F0", +"E$ c #EFEFEF", +"F$ c #6A6A6B", +"G$ c #4C4C4D", +"H$ c #171719", +"I$ c #292829", +"J$ c #585858", +"K$ c #6C6B6B", +"L$ c #2B2A2A", +"M$ c #464546", +"N$ c #D7D7D7", +"O$ c #C6C6C6", +"P$ c #79797A", +"Q$ c #5D5C5D", +"R$ c #262526", +"S$ c #555555", +"T$ c #110E0A", +"U$ c #181715", +"V$ c #535252", +"W$ c #DFDFDF", +"X$ c #F5F5F5", +"Y$ c #212122", +"Z$ c #919191", +"`$ c #7B7B7C", +" % c #545353", +".% c #121213", +"+% c #2B2B2C", +"@% c #A3710C", +"#% c #C8980E", +"$% c #AE870F", +"%% c #453C27", +"&% c #B8B8B8", +"*% c #FCFBF2", +"=% c #F1E5B4", +"-% c #B6A87E", +";% c #211F1C", +">% c #636364", +",% c #383839", +"'% c #2C2B2A", +")% c #474545", +"!% c #F1B90E", +"~% c #F4BD0E", +"{% c #B68C0D", +"]% c #B4B4B4", +"^% c #E9E9E9", +"/% c #F7EFD6", +"(% c #E7B91A", +"_% c #D2AB14", +":% c #1C1710", +"<% c #39393B", +"[% c #313133", +"}% c #0A0A0B", +"|% c #3E3318", +"1% c #81580E", +"2% c #E5AE0D", +"3% c #F5BD0E", +"4% c #F2BC0E", +"5% c #806410", +"6% c #201E1D", +"7% c #999898", +"8% c #E7DEC7", +"9% c #EAB313", +"0% c #D19D0D", +"a% c #261D0D", +"b% c #181207", +"c% c #AA8214", +"d% c #E8BA17", +"e% c #C6910C", +"f% c #E6AE0C", +"g% c #F1B90D", +"h% c #F4BC0E", +"i% c #F5C01A", +"j% c #F5BF15", +"k% c #E3B416", +"l% c #3A2C0C", +"m% c #727272", +"n% c #C7BDA5", +"o% c #E0A90F", +"p% c #DBA30B", +"q% c #966A0F", +"r% c #5C400A", +"s% c #654807", +"t% c #A5750B", +"u% c #ECB30D", +"v% c #EEB812", +"w% c #F6C42A", +"x% c #F5C226", +"y% c #F5C93C", +"z% c #F6CB43", +"A% c #F5BE14", +"B% c #F3C012", +"C% c #AA8813", +"D% c #0F0C07", +"E% c #767676", +"F% c #E1E1E1", +"G% c #BEB4A0", +"H% c #D79F0E", +"I% c #E6AE0A", +"J% c #D49B13", +"K% c #CD9410", +"L% c #D19B0F", +"M% c #E6AE0E", +"N% c #F0BD0F", +"O% c #E9B10F", +"P% c #F6C630", +"Q% c #F7D055", +"R% c #F7D15B", +"S% c #F6C83A", +"T% c #EABB14", +"U% c #624A0B", +"V% c #040304", +"W% c #414142", +"X% c #EAEAEA", +"Y% c #978C77", +"Z% c #D0970A", +"`% c #EFBE26", +" & c #EBB30E", +".& c #E7AF0B", +"+& c #EAB20D", +"@& c #F1BA0E", +"#& c #F3BB0E", +"$& c #E5AE13", +"%& c #F5C42C", +"&& c #F7D464", +"*& c #F8D35F", +"=& c #F5C737", +"-& c #F3BD0E", +";& c #CDA310", +">& c #70674E", +",& c #BEBEBE", +"'& c #F3F3F3", +")& c #CACACA", +"!& c #8B8B8B", +"~& c #3F321C", +"{& c #CE960A", +"]& c #EFBF2E", +"^& c #F5C940", +"/& c #F5BE12", +"(& c #E8B10E", +"_& c #97680C", +":& c #E4AE13", +"<& c #F2C22E", +"[& c #F6C738", +"}& c #F6CD4C", +"|& c #F6C735", +"1& c #EFBD0F", +"2& c #CBAA47", +"3& c #DFDDDB", +"4& c #D3D3D3", +"5& c #D8D8D8", +"6& c #D4D4D4", +"7& c #BABABA", +"8& c #656565", +"9& c #0A0A0C", +"0& c #3D2A08", +"a& c #CB930A", +"b& c #F2C029", +"c& c #F7D360", +"d& c #F7CE4F", +"e& c #F2BB0E", +"f& c #DBA60E", +"g& c #D29E0C", +"h& c #93650C", +"i& c #A2700C", +"j& c #DFA90E", +"k& c #E7B624", +"l& c #EAB518", +"m& c #EFBD22", +"n& c #F5C01C", +"o& c #F5BD10", +"p& c #EEB90E", +"q& c #CE980C", +"r& c #85724E", +"s& c #9B9B9B", +"t& c #6B6B6B", +"u& c #242425", +"v& c #483106", +"w& c #CC940A", +"x& c #F1BC18", +"y& c #F7CB46", +"z& c #F7D15F", +"A& c #EFBB1C", +"B& c #F2BA0E", +"C& c #E9B20E", +"D& c #DDA70D", +"E& c #C2900E", +"F& c #D6A00C", +"G& c #DAA30C", +"H& c #DCA60E", +"I& c #DFAA0E", +"J& c #EBB40E", +"K& c #F0B80D", +"L& c #CB940E", +"M& c #62430A", +"N& c #573B0A", +"O& c #C78E0A", +"P& c #EFB70D", +"Q& c #EFB915", +"R& c #E5B527", +"S& c #E6B217", +"T& c #E8AF0E", +"U& c #D49D0C", +"V& c #A68147", +"W& c #C68E0A", +"X& c #D29A0B", +"Y& c #D7A00C", +"Z& c #EBB30D", +"`& c #EDB50E", +" * c #DEA50C", +".* c #5D3F0D", +"+* c #0D0B09", +"@* c #0A090B", +"#* c #4B3309", +"$* c #B37D09", +"%* c #DDA40B", +"&* c #E8B00C", +"** c #DCA411", +"=* c #8C7655", +"-* c #8E6412", +";* c #B57E09", +">* c #BC8509", +",* c #A8740D", +"'* c #7C5209", +")* c #443316", +"!* c #525150", +"~* c #747372", +"{* c #624A22", +"]* c #926109", +"^* c #B9820A", +"/* c #C38B0A", +"(* c #BD8509", +"_* c #887C6A", +":* c #724C11", +"<* c #61410B", +"[* c #604922", +"}* c #827F7B", +"|* c #725526", +"1* c #76500E", +"2* c #7B5516", +" ", +" ", +" . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( ", +" + @ # $ _ : < [ } ; | , 1 ) ! ~ { ] 2 3 3 2 ", +" 4 5 6 7 8 9 0 a b c d 1 6 e f g h i j k ^ ~ ", +" 5 l m n o p q r s t u v w x y z A B C D { E F G H I J v K ", +" L M N o O P Q R S T U V W y X Y Z ` ...v +.@.#.$.%.&.*.=.-. ", +" & * ;.p P >.,.'.).!.V ~.{.z Y ].^./.(._.:.<.[.}.|.1.1./ 2.2.K ", +" * = 3.q Q ,.4.5.6.7.{ ] 8.A Z ^.9.0.a.b.c.1.I %.d.1.1.e.f.g.2. ", +" [ } h.r R '.5.i.j.k.] 2 l.B ` m.n.o.p.q.r.s.t.g.1.1.1.s.u.1.v. ", +" } :.P s S ).6.j.w.x.2 ( y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.v.K ", +" :.E Q.i.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+&.N.%+N.s.&+N.*+N.=+v.v. ", +" E d 5.T.-+;+>+,+'+)+Y.!+~+++{+]+^+/+(+_+:+<+[+}+|+K 1+[+2+3+1.2. ", +" ' 4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+) o+p+q+r+s+t+u+2.2. ", +" ) ! ~ { ] ^ 3 v+w+c+d+x+y+z+2.2.A+z+B+! C+D+E+F+G+H+I+J+K+2.2.2. ", +" ! ~ { ] 2 ( L+M+B+e.N+O+P+2.2.2.A+z+B+! Q+R+S+T+U+V+W+X+Y+Z+1.2. ", +" `+ @6 .@+@@@#@$@%@&@*@=@6 -@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@@.}@|@ ", +" @1@2@3@4@5@6@7@8@9@=@2.0@a@b@c@d@e@f@g@3+h@i@j@k@l@m@<@n@o@p@q@r@s@ ", +" t@/ u@4@v@w@x@y@z@A@2.2.B@b@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@d.S@{ T@ ", +" 3 v+U@5@w@V@W@X@Y@Z@2.2.;@c@D@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#&.)#L.K ", +" v+w+!#6@x@W@~#{#]#^#2.2./#d@E@(#_#:#<#[ [#}#,#|#1#2#3#4#5#5#6#7#}.<.8# ", +" M+B+9#7@y@X@{#0#a#b#2.2.c#d#e#f#g#h#i#s+j#5#k#l#%+m#k#5#5#5#,#{ n#n#s.[ ", +" B+e.o#8@z@Y@]#a#p#q#2.2.r#s#t#u#v#w#d.x#y#5#5#z#z#5#5#5#5#z#A#4 1.1.1.n#B# ", +" C#D#E#0#F#G#H#I#J#K#2.2.L#M#N#O#P#Q#1.R#S#T#U#y#V#W#X#T#Y#Z#`# $*@z+P+1.7#.$ ", +" y+*@+$H#@$#$$$%$&$*$2.2.=$-$;$>$,$1.u.'$)$!$z#m#X#z#5#W#m#3#~${$l Y.3 L.1.]$ ", +" z+A+^$/$($_$:$<$[$}$2.2.|$1$2$3$4$v+5$Z#k#z#z#k#z#z#z#z#5#k#!$Z#6$d+! 7$1.L.8$ ", +" 2.2.2.2.2.2.2.2.2.2.2.2.=@x+2 5$3 c+9$m#z#5#z#k#5#z#z#z#k#5#z#X#Z#4 } 0$a$1.b$ ", +" 2.2.2.2.2.2.2.2.2.2.2.A+O+!+V # c$d$t+)$z#z#X#!$z#5#z#5#z#k#z#k#4#e$] f$) 1.g$ ", +" 1@h$i$j$k$z#k#A#k$X#k#z#5#z#z#z#5#U#l$v+m$n$1.s.o$ ", +" 6 $ p$q$r$s$Y#z#z#z#,#4#k#k#k#z#z#z#5#k#T#t$u$v$: 1.1.w$ ", +" 6 $ x$y$z$A$B$z#z#5#C$D$k#z#5#z#z#z#z#z#E$2#]$F$G$s.H$I$ ", +" J$4+ K$1.L$M$N$B$z#k#k#Z#U#z#k#k#z#z#z#5#z#T#O$3 P$Q$J I R$ ", +" J$4+ S$T$U$V$Z#V#z#z#k#W$4#z#z#k#z#5#z#k#z#X$<+Y$Z$`$ %.%+% ", +" 6 $ @%#%$%%%&%m#z#z#z#,#B$z#z#z#X#k#k#z#*%=%-%;%>%i#,%'%)% ", +" 6 $ @%@%!%~%{%; ]%X#k#z#^%A#k#z#5#z#z#5#k#/%(%_%:%<%[%}%|%@% ", +" J$4+ 1%@%@%2%3%3%4%5%6%7%X$k#k$k#!$z#k#z#k#z#X#8%9%0%a%1.1.b%c%d%1% ", +" J$4+ 1%e%f%g%h%i%j%3%k%l%G m%y#z#z#!$z#!$k#k#k#D$n%o%p%q%r%s%t%u%v%@% ", +" 6 $ @%f%w%x%y%z%A%3%B%C%D%y+E%k$k#z#z#!$z#z#z#F%G%H%I%J%K%L%M%3%N%@% ", +" 6 $ @%O%P%Q%R%S%3%3%3%T%U%V%W%D$z#z#5#z#z#X$X%2+Y%Z%`% &.&+&@&3%3%#&@% ", +" J$4+ @%$&%&&&*&=&3%3%3%-&;&>&,&'&z#k$!$X#y#3#)&!&~&{&]&^&P%/&3%3%3%h%(&_& ", +" J$4+ @%:&<&[&}&|&3%3%3%3%1&2&3&4&5&}#X%S#6&7&8&9&0&a&b&c&d&3%3%3%e&f&g&h& ", +" 6 $J$J$6 6 J$i&j&k&l&m&n&o&3%3%3%p&q&r&6$,&t$1#s&t&u&s.1.v&w&x&y&z&A&B&C&D&E&1% ", +" 6 $4+4+ $ $4+1%i&F&G&H&I&J&h%3%3%K&L&M&D#Y.t@B+P+=@1.1.s.N&O&P&Q&R&S&T&U&i&1% ", +" V&1%@%@%W&X&Y&Z&`& *<@.*+*u.@*9&9&9&9&d.g.#*$*%* &&***@%1% ", +" =*1%-*@%;*>*,*'*)*!*~* {*]*^*/*(*1% ", +" _*1%:*<*[*}* |*1*1%2* ", +" ", +" "}; diff --git a/econtrol/icons/screensaver.xpm b/econtrol/icons/screensaver.xpm new file mode 100755 index 0000000..4973ee2 --- /dev/null +++ b/econtrol/icons/screensaver.xpm @@ -0,0 +1,557 @@ +/* XPM */ +static char * screensaver_xpm[] = { +"32 32 522 2", +" c None", +". c #ACD1F8", +"+ c #C6E0FA", +"@ c #D0E5FB", +"# c #CBE2FA", +"$ c #CAE2FA", +"% c #C9E0FA", +"& c #C7DFFA", +"* c #C6DFFA", +"= c #C7E1FA", +"- c #CBE3F9", +"; c #CCE3F9", +"> c #CDE4FA", +", c #CFE4FA", +"' c #CFE4F9", +") c #CFE5F9", +"! c #D2E5F8", +"~ c #D7E9F9", +"{ c #BAD9F9", +"] c #B5D6F8", +"^ c #85A2C5", +"/ c #375A86", +"( c #416693", +"_ c #4B6E9E", +": c #6385B3", +"< c #80A0C8", +"[ c #87A6CB", +"} c #8FADD2", +"| c #9FBCDE", +"1 c #AEC9E7", +"2 c #B2D0EB", +"3 c #B7D2F0", +"4 c #C2DBF7", +"5 c #C5E0FA", +"6 c #C4E0FA", +"7 c #C1E0FA", +"8 c #C5E1FA", +"9 c #A9CDF5", +"0 c #A0CBF5", +"a c #C8DBF0", +"b c #24436C", +"c c #0E2C4B", +"d c #0E2B4B", +"e c #0D2A49", +"f c #0D2A48", +"g c #0C2946", +"h c #0C2745", +"i c #0C2743", +"j c #0E2C4D", +"k c #113256", +"l c #123358", +"m c #14365D", +"n c #1B3F69", +"o c #1F446E", +"p c #3B6190", +"q c #CCE3FA", +"r c #B7D8F8", +"s c #A2C8F2", +"t c #A9CEF7", +"u c #CAE4FB", +"v c #6B87AD", +"w c #173659", +"x c #123A6D", +"y c #0B6C52", +"z c #0E366E", +"A c #0D356B", +"B c #0C3268", +"C c #0C3264", +"D c #0D305F", +"E c #0C2F5B", +"F c #0C2E56", +"G c #0C2D53", +"H c #0C2C4D", +"I c #0C2A49", +"J c #0D2945", +"K c #295180", +"L c #C9E1FB", +"M c #C4E0F9", +"N c #8BBDFA", +"O c #C0DCF9", +"P c #B2D4F9", +"Q c #CFDEEE", +"R c #264468", +"S c #163A65", +"T c #0A963E", +"U c #02E40F", +"V c #0E3772", +"W c #0D3570", +"X c #0C336E", +"Y c #0B326C", +"Z c #0A3069", +"` c #0A2F66", +" . c #092E63", +".. c #0A2D5F", +"+. c #0A2C5B", +"@. c #0A2C55", +"#. c #133864", +"$. c #A8C7E8", +"%. c #C9E3FA", +"&. c #C9E2FA", +"*. c #AFD3FB", +"=. c #578AC8", +"-. c #A2CBF6", +";. c #E1F3FD", +">. c #6681A4", +",. c #17375A", +"'. c #153C72", +"). c #0E6F56", +"!. c #00FF00", +"~. c #08943D", +"{. c #0E3570", +"]. c #0C346E", +"^. c #0A2E62", +"/. c #0A2D5E", +"(. c #0A2D5A", +"_. c #0B2C55", +":. c #5179AC", +"<. c #C9E3FB", +"[. c #CAE3FB", +"}. c #C2DFFA", +"|. c #78AEF6", +"1. c #2D5172", +"2. c #B2D3F8", +"3. c #C8E1FA", +"4. c #C4D3E3", +"5. c #254467", +"6. c #173D69", +"7. c #163D76", +"8. c #143C75", +"9. c #07B02E", +"0. c #03D717", +"a. c #0F3671", +"b. c #0D356E", +"c. c #0C336C", +"d. c #0B3169", +"e. c #0B3066", +"f. c #0B2C58", +"g. c #1D4578", +"h. c #B5D3EE", +"i. c #A1CCFF", +"j. c #4D80B9", +"k. c #C4DFF9", +"l. c #B0D1F7", +"m. c #EFF7FD", +"n. c #587496", +"o. c #19395D", +"p. c #155965", +"q. c #0BA537", +"r. c #03E510", +"s. c #01F208", +"t. c #0B7B4C", +"u. c #103771", +"v. c #0E366F", +"w. c #0D346C", +"x. c #0C326A", +"y. c #0B3166", +"z. c #0B2F62", +"A. c #0A2E5E", +"B. c #0D305E", +"C. c #6A90BF", +"D. c #CCE4FB", +"E. c #CBE3FB", +"F. c #BEDDFE", +"G. c #6EA4E9", +"H. c #334F68", +"I. c #A6CEF7", +"J. c #DDEEFC", +"K. c #B2C2D4", +"L. c #234263", +"M. c #193F6C", +"N. c #09C028", +"O. c #09B22F", +"P. c #0F7E4E", +"Q. c #143C74", +"R. c #123A72", +"S. c #113871", +"T. c #0F366F", +"U. c #0E356C", +"V. c #0C336A", +"W. c #0B3063", +"X. c #0B2E5D", +"Y. c #2A538A", +"Z. c #C5DFF8", +"`. c #CDE5FB", +" + c #98C4FB", +".+ c #4D7DA6", +"++ c #B4D5F8", +"@+ c #C2DEF9", +"#+ c #ECF6F9", +"$+ c #557090", +"%+ c #193C61", +"&+ c #1B506F", +"*+ c #1C4276", +"=+ c #184076", +"-+ c #173F75", +";+ c #153D74", +">+ c #0F6F54", +",+ c #123A71", +"'+ c #10386F", +")+ c #0F366D", +"!+ c #0D346A", +"~+ c #0C3267", +"{+ c #0C3062", +"]+ c #12376A", +"^+ c #86A8D2", +"/+ c #CCE5FB", +"(+ c #CBE5FB", +"_+ c #B7D8FB", +":+ c #679EEC", +"<+ c #30464A", +"[+ c #C6DFF9", +"}+ c #AAD1F7", +"|+ c #EEF8FE", +"1+ c #AFBFD0", +"2+ c #214163", +"3+ c #1E4371", +"4+ c #1F4578", +"5+ c #1D4377", +"6+ c #1A4276", +"7+ c #184075", +"8+ c #0C983E", +"9+ c #0AA436", +"0+ c #133A72", +"a+ c #113970", +"b+ c #10376D", +"c+ c #0F356B", +"d+ c #0D3368", +"e+ c #0C3163", +"f+ c #3F689E", +"g+ c #CDE6FB", +"h+ c #C7E1FB", +"i+ c #8EBEF5", +"j+ c #4773BE", +"k+ c #ACD0F7", +"l+ c #E9F2F4", +"m+ c #3E6182", +"n+ c #1C4067", +"o+ c #224878", +"p+ c #204678", +"q+ c #1E4477", +"r+ c #1C4377", +"s+ c #1A4176", +"t+ c #13655D", +"u+ c #154A6B", +"v+ c #143C72", +"w+ c #11386E", +"x+ c #0F356C", +"y+ c #0E3367", +"z+ c #173E74", +"A+ c #A0BFE2", +"B+ c #CEE6FB", +"C+ c #B3D6F9", +"D+ c #6198E6", +"E+ c #25365A", +"F+ c #8BBCF3", +"G+ c #C5DFFA", +"H+ c #F5FCFE", +"I+ c #9CB1CB", +"J+ c #274B72", +"K+ c #244976", +"L+ c #244979", +"M+ c #224778", +"N+ c #1F4677", +"O+ c #1D4477", +"P+ c #1B4276", +"Q+ c #194075", +"R+ c #173E73", +"S+ c #153D73", +"T+ c #133A70", +"U+ c #12396F", +"V+ c #10366C", +"W+ c #0E3468", +"X+ c #577DB1", +"Y+ c #D2E6FB", +"Z+ c #C2E1FA", +"`+ c #80B3F1", +" @ c #426BB0", +".@ c #6DA6EF", +"+@ c #FDFFFE", +"@@ c #E1ECF4", +"#@ c #6F96C2", +"$@ c #345A8B", +"%@ c #254A79", +"&@ c #234978", +"*@ c #214678", +"=@ c #1E4577", +"-@ c #1C4376", +";@ c #183F74", +">@ c #163D73", +",@ c #143C71", +"'@ c #133A6F", +")@ c #11376C", +"!@ c #224B83", +"~@ c #B9D1ED", +"{@ c #D2E7FB", +"]@ c #A3CBF6", +"^@ c #5D98EE", +"/@ c #6DA2EB", +"(@ c #78AAEE", +"_@ c #A3C9F6", +":@ c #E8F4FC", +"<@ c #FBFFFF", +"[@ c #B3CCE7", +"}@ c #4D76A9", +"|@ c #274D7D", +"1@ c #1F4577", +"2@ c #1B4176", +"3@ c #143A70", +"4@ c #12396D", +"5@ c #7095C3", +"6@ c #D5E8FB", +"7@ c #B4D7F7", +"8@ c #76B0FC", +"9@ c #384F7A", +"0@ c #6C9AD9", +"a@ c #7AABEE", +"b@ c #B6D4F7", +"c@ c #F2FAFF", +"d@ c #EDF6FC", +"e@ c #82A7D0", +"f@ c #365E91", +"g@ c #214778", +"h@ c #1F4678", +"i@ c #1D4376", +"j@ c #1B4175", +"k@ c #163D72", +"l@ c #153B70", +"m@ c #2E568D", +"n@ c #D0E5F8", +"o@ c #D2E8FB", +"p@ c #B8D9F9", +"q@ c #97C4F8", +"r@ c #588AD9", +"s@ c #6191D2", +"t@ c #80B0EF", +"u@ c #C3DDF9", +"v@ c #F4FDFF", +"w@ c #C6DCEF", +"x@ c #5680B3", +"y@ c #295182", +"z@ c #194174", +"A@ c #183F73", +"B@ c #173D72", +"C@ c #8DADD2", +"D@ c #D7EBFB", +"E@ c #C0DDF9", +"F@ c #A5CFF7", +"G@ c #5C97ED", +"H@ c #4466A8", +"I@ c #6598DE", +"J@ c #89B7F2", +"K@ c #EEF9FE", +"L@ c #95B6DD", +"M@ c #3E6AA0", +"N@ c #1D4476", +"O@ c #1B4274", +"P@ c #193F73", +"Q@ c #466DA1", +"R@ c #D2E7F9", +"S@ c #A8D0F7", +"T@ c #81B5F9", +"U@ c #3573BB", +"V@ c #2E4942", +"W@ c #436CA9", +"X@ c #6699E2", +"Y@ c #96C1F7", +"Z@ c #DAEDFF", +"`@ c #DAEBFB", +" # c #6A94C6", +".# c #264E84", +"+# c #22497E", +"@# c #A2BEDE", +"## c #B4D6F8", +"$# c #8FC0F4", +"%# c #5190F6", +"&# c #3571A3", +"*# c #2E4726", +"=# c #4D78BE", +"-# c #699EEA", +";# c #A4CAFA", +"># c #E0F3FF", +",# c #B1CEEB", +"'# c #E3F1FD", +")# c #C6E1FB", +"!# c #96C4F5", +"~# c #68A0ED", +"{# c #4687F5", +"]# c #4982A1", +"^# c #263E20", +"/# c #4066A2", +"(# c #6CA0E7", +"_# c #B1D7FF", +":# c #DEEDFB", +"<# c #DAEDFC", +"[# c #9EC9F6", +"}# c #70A8F0", +"|# c #4886E7", +"1# c #70AAFE", +"2# c #558993", +"3# c #1B2C19", +"4# c #4870A9", +"5# c #79B1F5", +"6# c #76ACF0", +"7# c #4A8BEA", +"8# c #3B7DE7", +"9# c #669EEB", +"0# c #99CAFF", +"a# c #598798", +"b# c #8DA7A4", +"c# c #C7D9D8", +"d# c #D6D7D8", +"e# c #C8CFD0", +"f# c #BEC6C2", +"g# c #BCC8D1", +"h# c #B5D7FB", +"i# c #8EBCF3", +"j# c #8EBBF3", +"k# c #A4C9F6", +"l# c #D4ECFE", +"m# c #ABC9EE", +"n# c #586574", +"o# c #B2CDE1", +"p# c #98C3E3", +"q# c #DCF6FF", +"r# c #F9FFFF", +"s# c #F8FFFF", +"t# c #F6FFFF", +"u# c #ECFAFF", +"v# c #DEEEFC", +"w# c #DEEFFC", +"x# c #EAF6FD", +"y# c #E8F5FE", +"z# c #D1E7FC", +"A# c #ACD4FD", +"B# c #8AC1F2", +"C# c #597E74", +"D# c #D0E6FA", +"E# c #A4CEFD", +"F# c #C7E3FF", +"G# c #CFE7FB", +"H# c #D6EAFC", +"I# c #E7F3FD", +"J# c #E7F4FD", +"K# c #E3F3FD", +"L# c #E6F4FD", +"M# c #EBF6FD", +"N# c #DCEEFC", +"O# c #BDDCFA", +"P# c #8CBEF3", +"Q# c #7AB1F1", +"R# c #75ADF8", +"S# c #69ABE6", +"T# c #3D5662", +"U# c #98C5FF", +"V# c #B8DAFB", +"W# c #D3E8FB", +"X# c #CBE4FB", +"Y# c #D4E8FC", +"Z# c #DFEFFC", +"`# c #CEE6FA", +" $ c #A4CDF7", +".$ c #98C4F5", +"+$ c #8BBDF3", +"@$ c #80B5F2", +"#$ c #78B0F7", +"$$ c #6CADFF", +"%$ c #376DAD", +"&$ c #4D7BAA", +"*$ c #74A9EF", +"=$ c #B2D8FF", +"-$ c #D0E7FF", +";$ c #CCE4FA", +">$ c #C8E2FA", +",$ c #CAE3FA", +"'$ c #D7EAFB", +")$ c #CBE4FA", +"!$ c #B8D9F8", +"~$ c #ACD1F7", +"{$ c #A3CCF6", +"]$ c #99C5F4", +"^$ c #93C4F7", +"/$ c #84BDFF", +"($ c #5D9CDC", +"_$ c #3B66A3", +":$ c #182A2A", +"<$ c #5484B6", +"[$ c #86B7F1", +"}$ c #BCDDFD", +"|$ c #CAE4FA", +"1$ c #C4E1FA", +"2$ c #C6E2FA", +"3$ c #BBD9F9", +"4$ c #B1D5F8", +"5$ c #ABD1F8", +"6$ c #ABD2F9", +"7$ c #9DCEFF", +"8$ c #74ADF0", +"9$ c #426D75", +"0$ c #1C2E36", +"a$ c #3B6468", +"b$ c #6095EB", +"c$ c #97C3F5", +"d$ c #BDDFFB", +"e$ c #C9E5FB", +"f$ c #B8DBFF", +"g$ c #B0DAFF", +"h$ c #85BBF4", +"i$ c #497796", +"j$ c #1F2F4A", +"k$ c #181616", +"l$ c #5482CC", +"m$ c #70ABFA", +"n$ c #A9CEF8", +"o$ c #C8E5FD", +"p$ c #BCE0FF", +"q$ c #91C2D3", +"r$ c #4F778E", +"s$ c #1E2D2F", +"t$ c #5E91DA", +"u$ c #6FA0E7", +"v$ c #527CAA", +"w$ c #1B2C20", +" ", +" . + @ # $ % & * = - ; > , ' ' ) ! ~ ", +" { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 ", +" 0 a b c d e f g h i j k l m n o p $ q r s ", +" t u v w x y z A B C D E F G H I J K L # M N ", +" O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=. ", +" -.;.>.,.'.).!.~.{.].Y Z ` ^./.(._.:.<.[.}.|.1. ", +" 2.3.4.5.6.7.8.9.0.a.b.c.d.e.^./.f.g.h.[.%.i.j. ", +" k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H. ", +" I.J.K.L.M.N.O.P.Q.R.S.T.U.V.y.W.X.Y.Z.`.<. +.+ ", +" ++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+ ", +" [+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+`.h+i+j+ ", +" k+J.l+m+n+o+p+q+r+s+t+u+v+,+w+x+y+z+A+B+u C+D+E+ ", +" F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+D.Z+`+ @ ", +" .@q +@@@#@$@%@&@*@=@-@s+;@>@,@'@)@!@~@{@8 ]@^@ ", +" /@(@_@:@<@[@}@|@M+1@q+2@Q+R+'.3@4@5@6@[.7@8@9@ ", +" 0@a@b@c@d@e@f@g@h@i@j@;@k@l@m@n@o@p@q@r@ ", +" s@t@u@v@w@x@y@q+-@z@A@B@C@D@E@F@G@H@ ", +" I@J@o@K@L@M@N@O@P@Q@R@B+S@T@U@V@ ", +" W@X@Y@Z@`@ #.#+#@#D@##$#%#&#*# ", +" =#-#;#>#,#^+'#)#!#~#{#]#^# ", +" /#(#_#:#<#[#}#|#1#2#3# ", +" 4#5#6#7#8#9#0#a# ", +" b#c#d#e#f#g#h#i#j#k#6 l#m#n# ", +" o#p#q#r#<@s#t#u#v#w#x#y#z#r A#B#C# ", +" D#E#F#G#H#'#I#J#K#L#M#N#O#-.P#Q#R#S#T# ", +" U#V#W#(+X#D.`./+Y#Z#`#C+ $.$+$@$#$$$%$ ", +" &$*$=$-$;$<.>$,$'$)$!$~${$]$^$/$($_$:$ ", +" <$[$}$|$1$2$/+3$4$5$6$7$8$9$0$ ", +" a$b$c$d$e$1$p@f$g$h$i$j$k$ ", +" l$m$n$o$p$q$r$s$ ", +" t$u$v$w$ "}; diff --git a/econtrol/icons/themes.xpm b/econtrol/icons/themes.xpm new file mode 100755 index 0000000..64ea2af --- /dev/null +++ b/econtrol/icons/themes.xpm @@ -0,0 +1,354 @@ +/* XPM */ +static char * themes_xpm[] = { +"32 32 319 2", +" c None", +". c #BAC6DB", +"+ c #93A0B7", +"@ c #F1F6FF", +"# c #FFFFFF", +"$ c #FEFFFF", +"% c #F9FDFF", +"& c #F4F7FE", +"* c #EBF0F9", +"= c #E3E9F4", +"- c #DAE1EF", +"; c #CED7E8", +"> c #B8C6DF", +", c #A2ADC0", +"' c #F2F7FF", +") c #F5F9FF", +"! c #EEF3FC", +"~ c #E8EDF7", +"{ c #E0E7F3", +"] c #D7DFED", +"^ c #CBD5E6", +"/ c #B5C2D9", +"( c #E1EAF9", +"_ c #9CA8BC", +": c #FBFEFF", +"< c #F6FAFF", +"[ c #F1F5FE", +"} c #E3EAF4", +"| c #DCE3F0", +"1 c #CFD8E8", +"2 c #B8C4DB", +"3 c #E6ECF7", +"4 c #D2DDEF", +"5 c #9CA8BE", +"6 c #FCFFFF", +"7 c #F8FBFF", +"8 c #F4F8FE", +"9 c #EEF2FB", +"0 c #E7EDF7", +"a c #DFE5F2", +"b c #D2DBEA", +"c c #BAC6DC", +"d c #F5F8FF", +"e c #DEE4F1", +"f c #D1DBEF", +"g c #9DA9BF", +"h c #FDFFFF", +"i c #F9FCFF", +"j c #F0F4FD", +"k c #E9EFF8", +"l c #E1E7F3", +"m c #D5DDEC", +"n c #BCC7DB", +"o c #F3F7FE", +"p c #E2E8F3", +"q c #D4DFF1", +"r c #9FABC0", +"s c #FAFDFF", +"t c #F7FAFF", +"u c #F2F5FD", +"v c #EBEFF9", +"w c #D9E1EF", +"x c #B4C1D7", +"y c #E9EBF1", +"z c #E2E8EF", +"A c #DAE1ED", +"B c #CED7E6", +"C c #C6D2E7", +"D c #97A4BB", +"E c #F7FBFF", +"F c #F2F6FD", +"G c #EDF1FB", +"H c #E6ECF6", +"I c #DEE5F2", +"J c #BECADD", +"K c #8E9FBB", +"L c #004BE0", +"M c #B7C3D8", +"N c #EEF3FB", +"O c #FCFCFC", +"P c #FEFEFE", +"Q c #F3F7FF", +"R c #E7ECF7", +"S c #E1E7F4", +"T c #DBE3F0", +"U c #CDD6E7", +"V c #B7C4DA", +"W c #ACBAD3", +"X c #AAB9D2", +"Y c #A4B4D1", +"Z c #7A8BA7", +"` c #9BAED2", +" . c #E5E9F1", +".. c #F6F6F6", +"+. c #FCFBFC", +"@. c #F5F8FE", +"#. c #E2E9F4", +"$. c #C2CCE0", +"%. c #B4C0D8", +"&. c #B1BFD6", +"*. c #AFBCD5", +"=. c #ABBBD6", +"-. c #3E71D6", +";. c #D7DBE2", +">. c #ECECEC", +",. c #F7F7F7", +"'. c #F0F5FD", +"). c #E9EFF9", +"!. c #E5EBF6", +"~. c #DDE4F1", +"{. c #CBD5E5", +"]. c #BDC9DE", +"^. c #BBC7DC", +"/. c #B8C5DB", +"(. c #B7C3DA", +"_. c #B3C1DB", +":. c #014ADB", +"<. c #0950DE", +"[. c #BBC3D3", +"}. c #E0DFE0", +"|. c #F1F1F1", +"1. c #EFC3CB", +"2. c #F3565A", +"3. c #F91A1C", +"4. c #ED4046", +"5. c #CAB3C4", +"6. c #BFCADF", +"7. c #BDC8DD", +"8. c #BCC8DC", +"9. c #B9C6DE", +"0. c #0248D4", +"a. c #7694D0", +"b. c #D4D3D3", +"c. c #E9E9E9", +"d. c #F9F9F9", +"e. c #ECE1E9", +"f. c #FB1C1E", +"g. c #EE5258", +"h. c #EF4248", +"i. c #FF0000", +"j. c #D49DAA", +"k. c #C4CFE2", +"l. c #C2CDE0", +"m. c #C1CDE0", +"n. c #BECBE2", +"o. c #014ADC", +"p. c #1759DD", +"q. c #CECDCD", +"r. c #B7D3BE", +"s. c #88CA99", +"t. c #5EBC76", +"u. c #2FA94E", +"v. c #FAFCFF", +"w. c #F2F6FE", +"x. c #E9EEF8", +"y. c #F16469", +"z. c #F7292B", +"A. c #D1DAE9", +"B. c #D3CBDA", +"C. c #F33539", +"D. c #D5ADBB", +"E. c #C8D2E5", +"F. c #C6D1E3", +"G. c #C4D0E6", +"H. c #1356DB", +"I. c #98AAD0", +"J. c #87BF96", +"K. c #49B163", +"L. c #009626", +"M. c #3FB05C", +"N. c #EAEFF8", +"O. c #DFE6F2", +"P. c #FD0D0E", +"Q. c #EB6F76", +"R. c #D3DBEA", +"S. c #CFD8E9", +"T. c #CDD7E8", +"U. c #CAD4E6", +"V. c #CAD3E5", +"W. c #C8D4E8", +"X. c #0249D8", +"Y. c #0249D5", +"Z. c #3F72D9", +"`. c #D0D0D0", +" + c #C7DACC", +".+ c #3EB05B", +"++ c #F3F7FD", +"@+ c #E0D7E3", +"#+ c #ED7178", +"$+ c #D8E0EE", +"%+ c #D4DCEB", +"&+ c #CED7E7", +"*+ c #CBD6EA", +"=+ c #7691C4", +"-+ c #B1B9CC", +";+ c #DBDADA", +">+ c #3EAF5B", +",+ c #E8EDF8", +"'+ c #E3EAF5", +")+ c #E9AEB7", +"!+ c #EE7278", +"~+ c #DAE2EF", +"{+ c #DAD1DF", +"]+ c #D9C0CE", +"^+ c #D3DCEA", +"/+ c #D0DAE9", +"(+ c #CFD9EC", +"_+ c #9FA9BB", +":+ c #4B7BDC", +"<+ c #6388D3", +"[+ c #D2D1D2", +"}+ c #3BAC59", +"|+ c #EAEFF9", +"1+ c #E4EAF5", +"2+ c #E9BEC7", +"3+ c #ED7077", +"4+ c #E78C94", +"5+ c #D5DDED", +"6+ c #D1DBED", +"7+ c #A7B2C4", +"8+ c #92ACE0", +"9+ c #0C52DF", +"0+ c #B3BCCF", +"a+ c #38AA57", +"b+ c #DDEAEB", +"c+ c #58B875", +"d+ c #1CA140", +"e+ c #1CA13F", +"f+ c #64BB81", +"g+ c #CD2813", +"h+ c #FD0E0E", +"i+ c #E89DA6", +"j+ c #EC8087", +"k+ c #DBD3E0", +"l+ c #D6DDEC", +"m+ c #D2DCEE", +"n+ c #004BDE", +"o+ c #9AADD1", +"p+ c #467BE4", +"q+ c #185ADD", +"r+ c #28A349", +"s+ c #1CA03F", +"t+ c #3AAC5A", +"u+ c #0E9B32", +"v+ c #2B983E", +"w+ c #EB241F", +"x+ c #F7393C", +"y+ c #E5AAB5", +"z+ c #D8DFED", +"A+ c #D6DEED", +"B+ c #D6DEEC", +"C+ c #D4DEF0", +"D+ c #ACBBD9", +"E+ c #B0C6F1", +"F+ c #AFC1E6", +"G+ c #A0B2D8", +"H+ c #96A9CF", +"I+ c #7FC396", +"J+ c #E9EEF7", +"K+ c #D9E8EB", +"L+ c #72C08D", +"M+ c #D5DFF0", +"N+ c #B9C5D9", +"O+ c #EDF2FA", +"P+ c #EEEDEE", +"Q+ c #DDDDDD", +"R+ c #CCCED0", +"S+ c #26A147", +"T+ c #DEE2EA", +"U+ c #E7ECF5", +"V+ c #82C79B", +"W+ c #46B066", +"X+ c #E1E8F3", +"Y+ c #DDE4F0", +"Z+ c #D9E1EE", +"`+ c #D7DFEE", +" @ c #EFF4FC", +".@ c #F5F4F5", +"+@ c #EAEAEA", +"@@ c #DBDDE2", +"#@ c #36A855", +"$@ c #E2E7EE", +"%@ c #E9EEF6", +"&@ c #AED8C3", +"*@ c #39AB59", +"=@ c #E2E8F4", +"-@ c #D6DFF1", +";@ c #B9C5DA", +">@ c #FAFAFA", +",@ c #F6F5F5", +"'@ c #E8ECF2", +")@ c #39AB58", +"!@ c #E8EDF5", +"~@ c #EAEFF7", +"{@ c #ADD7C3", +"]@ c #D9E0EF", +"^@ c #FDFDFD", +"/@ c #F2F6FC", +"(@ c #3BAD5A", +"_@ c #73C18E", +":@ c #C8E0DB", +"<@ c #D9E0EE", +"[@ c #FCFEFF", +"}@ c #0E9B33", +"|@ c #C0E1D3", +"1@ c #91CCA8", +"2@ c #F8FAFE", +"3@ c #B3DCC6", +"4@ c #90CCA8", +"5@ c #D7DEED", +"6@ c #D6E0F2", +"7@ c #D1E8E1", +"8@ c #68BF83", +"9@ c #B2DCC6", +"0@ c #67BE83", +"a@ c #75C28F", +"b@ c #EAF3FF", +"c@ c #EDF2FB", +"d@ c #E8EEF8", +" . . . . . . . . . . . . . . . + ", +" . @ # # # # # # $ % & * = - ; > , ", +" . ' # # # # # $ % ) ! ~ { ] ^ / ( _ ", +" . ' # # # # # $ : < [ * } | 1 2 3 4 5 ", +" . ' # # # # # # 6 7 8 9 0 a b c d e f g ", +" . ' # # # # # # h i d j k l m n # o p q r ", +" . ' # # # # # # h s t u v = w x y z A B C D ", +" . ' # # # # # # $ 6 E F G H I J K K K K K K K ", +" L M N O P # # # # $ : 7 Q 9 R S T ] U V W X Y Z ", +" L L ` ...+.# # # # # 6 s @.! k #.T m $.%.&.*.=.Z ", +" L L -.;.>.,.P # # # # 6 i d '.).!.~.{.].^./.(._.Z ", +" L :.L <.[.}.|.O # # # # h s t o 1.2.3.4.5.6.7.8.9.Z ", +" L 0.L a.b.c.d.# # # # h % o e.f.g.h.i.j.k.l.m.n.Z ", +" L o. L p.q.r.s.t.u.h v.< w.x.y.z.A.B.C.D.E.F.F.G.Z ", +" L H.L I.J.K.L.M.: i ) N.O.P.Q.m R.A.S.T.U.V.W.Z ", +" L :.X.Y.H.L Z.`. +L..+6 ++H l @+i.#+$+] %+R.A.; &+*+Z ", +" L X. =+L L -+;+L.>+u ,+3 '+)+i.!+~+$+{+]+^+b /+(+Z ", +" L _+:+L <+[+L.}+* |+0 1+2+i.y.~.- 3+4+5+%+^+6+Z ", +" L :. 7+8+L 9+0+L.a+b+c+d+e+f+g+h+i+j+P.k+$+l+m m+Z ", +" L L n+ o+p+L L q+L.r+s+e+t+u+L.v+w+i.x+y+~+z+A+B+C+Z ", +" D+E+F+G+H+L.L.I+J+|+K+u+L.L+l a | ~+w A+5+M+Z ", +" N+O+P+Q+R+L.S+T+U+x.x.V+L.W+X+O.Y+| Z+$+`+M+Z ", +" N+ @.@+@@@L.#@$@%@x.x.&@L.*@=@O.I | ~+] $+-@Z ", +" ;@'.>@,@'@L.)@!@~@* x.{@L.L+p O.Y+| ]@] $+-@Z ", +" . ' P ^@/@L.(@O+* * x._@L.:@X+{ Y+| <@$+$+M+Z ", +" . ' # [@F L.}@|@* |+1@u+f+= X+O.Y+| Z+$+] -@Z ", +" . ' # 2@3@L.L.L.t+d+u+4@H = { O.| ~+$+$+5@6@Z ", +" . ' # 2@7@8@9@0@t+a@K+0 H = { O.| ~+$+$+5@6@Z ", +" . b@# 2@ @ @N c@|+|+d@0 H = { O.| ~+$+$+5@6@Z ", +" . Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ", +" ", +" "}; diff --git a/econtrol/icons/timedate.xpm b/econtrol/icons/timedate.xpm new file mode 100755 index 0000000..7f988a4 --- /dev/null +++ b/econtrol/icons/timedate.xpm @@ -0,0 +1,482 @@ +/* XPM */ +static char * timedate_xpm[] = { +"32 32 447 2", +" c None", +". c #BAC6DB", +"+ c #93A0B7", +"@ c #F1F6FF", +"# c #FFFFFF", +"$ c #FEFFFF", +"% c #F9FDFF", +"& c #F4F7FE", +"* c #EBF0F9", +"= c #E3E9F4", +"- c #DAE1EF", +"; c #CED7E8", +"> c #B8C6DF", +", c #A2ADC0", +"' c #F2F7FF", +") c #A0A2A5", +"! c #9DA1A5", +"~ c #9B9FA5", +"{ c #989CA4", +"] c #E8EDF7", +"^ c #E0E7F3", +"/ c #D7DFED", +"( c #CBD5E6", +"_ c #B5C2D9", +": c #E1EAF9", +"< c #9CA8BC", +"[ c #FBFEFF", +"} c #9C9FA5", +"| c #F1F5FE", +"1 c #E3EAF4", +"2 c #DCE3F0", +"3 c #CFD8E8", +"4 c #B8C4DB", +"5 c #E6ECF7", +"6 c #D2DDEF", +"7 c #9CA8BE", +"8 c #FCFFFF", +"9 c #9DA0A5", +"0 c #F4F8FE", +"a c #EEF2FB", +"b c #E7EDF7", +"c c #DFE5F2", +"d c #D2DBEA", +"e c #BAC6DC", +"f c #F5F8FF", +"g c #DEE4F1", +"h c #D1DBEF", +"i c #9DA9BF", +"j c #FDFFFF", +"k c #F0F4FD", +"l c #E9EFF8", +"m c #E1E7F3", +"n c #D5DDEC", +"o c #BCC7DB", +"p c #F3F7FE", +"q c #E2E8F3", +"r c #D4DFF1", +"s c #9FABC0", +"t c #9FA2A5", +"u c #9EA1A5", +"v c #F2F5FD", +"w c #EBEFF9", +"x c #D9E1EF", +"y c #B4C1D7", +"z c #E9EBF1", +"A c #E2E8EF", +"B c #DAE1ED", +"C c #CED7E6", +"D c #C6D2E7", +"E c #97A4BB", +"F c #F7FBFF", +"G c #F2F6FD", +"H c #EDF1FB", +"I c #E4EAF4", +"J c #D8DFEB", +"K c #BDC8DB", +"L c #8E9FBB", +"M c #F8FBFF", +"N c #F3F7FF", +"O c #E7ECF7", +"P c #E1E7F4", +"Q c #DBE3F0", +"R c #CDD6E7", +"S c #B7C4DA", +"T c #ACBAD3", +"U c #AAB9D2", +"V c #A4B4D1", +"W c #7A8BA7", +"X c #FAFDFF", +"Y c #F5F8FE", +"Z c #EEF3FC", +"` c #E2E9F4", +" . c #C2CCE0", +".. c #B4C0D8", +"+. c #B1BFD6", +"@. c #AFBCD5", +"#. c #ABBBD6", +"$. c #81A3D6", +"%. c #DEE6F1", +"&. c #E3E6E7", +"*. c #42454C", +"=. c #70737A", +"-. c #F0F5FD", +";. c #E9EFF9", +">. c #E5EBF6", +",. c #DDE4F1", +"'. c #CBD5E5", +"). c #BDC9DE", +"!. c #BBC7DC", +"~. c #B8C5DB", +"{. c #B7C3DA", +"]. c #B3C1DB", +"^. c #8AABD8", +"/. c #8EA5C7", +"(. c #BFCBDC", +"_. c #E3E7EF", +":. c #FCFCFC", +"<. c #808388", +"[. c #676A71", +"}. c #EBF0FA", +"|. c #DFE6F2", +"1. c #D0D8E8", +"2. c #C6D0E3", +"3. c #C2CDE0", +"4. c #BFCADF", +"5. c #BBC6DB", +"6. c #BCC8DC", +"7. c #B9C6DE", +"8. c #9FC3F0", +"9. c #81ACE5", +"0. c #7397CA", +"a. c #7793BD", +"b. c #A7B7CD", +"c. c #E8EBF1", +"d. c #FEFEFE", +"e. c #5A5C61", +"f. c #72757C", +"g. c #E0E6F3", +"h. c #D2DBEB", +"i. c #CCD6E7", +"j. c #C9D3E4", +"k. c #C6D1E3", +"l. c #C4CFE2", +"m. c #C1CCDF", +"n. c #C1CDE0", +"o. c #BECBE2", +"p. c #E4E6E8", +"q. c #D2DEED", +"r. c #A5C2E8", +"s. c #79A5E4", +"t. c #6494DC", +"u. c #5B85C0", +"v. c #758DB4", +"w. c #93A4BC", +"x. c #F9FBFC", +"y. c #8F9297", +"z. c #494B52", +"A. c #B3B6BE", +"B. c #50545B", +"C. c #D5DEEC", +"D. c #D1DAE9", +"E. c #D0D9E9", +"F. c #C8D2E5", +"G. c #C4D0E6", +"H. c #FAF8F5", +"I. c #EBEBEB", +"J. c #E1E5E9", +"K. c #B7C5DD", +"L. c #6195E2", +"M. c #4F81CB", +"N. c #4A76BA", +"O. c #6D86AD", +"P. c #788495", +"Q. c #EAEFF8", +"R. c #C5CBD6", +"S. c #DAE2EF", +"T. c #D3DBEA", +"U. c #888E9A", +"V. c #CDD7E8", +"W. c #CAD4E6", +"X. c #868C98", +"Y. c #C8D4E8", +"Z. c #FEFEFB", +"`. c #ECECED", +" + c #F2F2F2", +".+ c #FCFCFD", +"++ c #F9F9F8", +"@+ c #C6CBD4", +"#+ c #8DA1BE", +"$+ c #5380C4", +"%+ c #4A7FD6", +"&+ c #3B6EBF", +"*+ c #3A64A7", +"=+ c #4D6895", +"-+ c #94A2BB", +";+ c #C6D0E2", +">+ c #D8E0EE", +",+ c #D4DCEB", +"'+ c #8A909B", +")+ c #898F9A", +"!+ c #888E99", +"~+ c #CBD6EA", +"{+ c #E0DFDC", +"]+ c #E8E8E9", +"^+ c #F7F7F7", +"/+ c #D6D4D5", +"(+ c #E0E1E2", +"_+ c #C4C9D1", +":+ c #5A76A3", +"<+ c #4274C9", +"[+ c #2961BC", +"}+ c #2C63BB", +"|+ c #3862A6", +"1+ c #436091", +"2+ c #8C9BB7", +"3+ c #D7DFEE", +"4+ c #8B909B", +"5+ c #D3DCEA", +"6+ c #CFD9EC", +"7+ c #FFFFFE", +"8+ c #E3E3E3", +"9+ c #D2D2D2", +"0+ c #E7E7E7", +"a+ c #DEDEDE", +"b+ c #DCDCDC", +"c+ c #EFEEEE", +"d+ c #ECECEB", +"e+ c #F2F3F4", +"f+ c #8E949D", +"g+ c #466AA8", +"h+ c #1A4FA9", +"i+ c #154FB7", +"j+ c #2A5BB7", +"k+ c #2A529D", +"l+ c #2C4A80", +"m+ c #96A3BF", +"n+ c #D8DFEE", +"o+ c #DAE1EE", +"p+ c #8D929D", +"q+ c #8B919C", +"r+ c #D1DBED", +"s+ c #F4F3F3", +"t+ c #E5E6E6", +"u+ c #F0F0F0", +"v+ c #E2E2E2", +"w+ c #D3D3D3", +"x+ c #D0D0D0", +"y+ c #E8E8E8", +"z+ c #EEEEEE", +"A+ c #F3F3F3", +"B+ c #CCCCCC", +"C+ c #E4E4E3", +"D+ c #F9F9F4", +"E+ c #8B96A8", +"F+ c #375998", +"G+ c #01379E", +"H+ c #124BB6", +"I+ c #2253AF", +"J+ c #1D4494", +"K+ c #3F5993", +"L+ c #C0CADE", +"M+ c #8D939D", +"N+ c #D6DDEC", +"O+ c #D2DCEE", +"P+ c #FBFAF8", +"Q+ c #E4E5E6", +"R+ c #E1E1E1", +"S+ c #FBFBFB", +"T+ c #E5E5E5", +"U+ c #BFBFBF", +"V+ c #BBBBBB", +"W+ c #E1E1E0", +"X+ c #F0F0F1", +"Y+ c #AEAEAE", +"Z+ c #D5CEC7", +"`+ c #677286", +" @ c #2A4990", +".@ c #042E9C", +"+@ c #214895", +"@@ c #3F5080", +"#@ c #B1BAD3", +"$@ c #8E939D", +"%@ c #8D929C", +"&@ c #8C919C", +"*@ c #D4DEF0", +"=@ c #E7E5E1", +"-@ c #C6C2BA", +";@ c #C1C2C4", +">@ c #E9E9E9", +",@ c #D8D8D8", +"'@ c #CDCED0", +")@ c #A49C94", +"!@ c #E3D5C1", +"~@ c #FAF6F2", +"{@ c #FEFEFC", +"]@ c #E6E7E8", +"^@ c #BCBBBA", +"/@ c #E2DFD5", +"(@ c #727F99", +"_@ c #143171", +":@ c #7D8BB1", +"<@ c #D9E1EE", +"[@ c #D6DEED", +"}@ c #D5DFF0", +"|@ c #FFFFF2", +"1@ c #DDDEE2", +"2@ c #C8C8C8", +"3@ c #D4D4D4", +"4@ c #DADADA", +"5@ c #D5D5D5", +"6@ c #F4F4F4", +"7@ c #FFFDFC", +"8@ c #E0C3A8", +"9@ c #D6B57F", +"0@ c #D5B894", +"a@ c #E0CEB7", +"b@ c #C5C6CD", +"c@ c #D0D0D2", +"d@ c #EFEFF0", +"e@ c #FAFAFA", +"f@ c #E9E7E1", +"g@ c #636A85", +"h@ c #A9B1CC", +"i@ c #DDE4F0", +"j@ c #D9DFE8", +"k@ c #EAE6E1", +"l@ c #CAC8C5", +"m@ c #E6E5E5", +"n@ c #B3B3B3", +"o@ c #C5C5C5", +"p@ c #E8E9E9", +"q@ c #F9FAFB", +"r@ c #D5BCB1", +"s@ c #D4B798", +"t@ c #F6DDAB", +"u@ c #C79147", +"v@ c #8A451D", +"w@ c #9F9595", +"x@ c #DFE7EA", +"y@ c #E1DFDE", +"z@ c #F1EFEB", +"A@ c #80879A", +"B@ c #6C73A1", +"C@ c #D8DFED", +"D@ c #DEE5F2", +"E@ c #D6DFF1", +"F@ c #679BF2", +"G@ c #7AA6EB", +"H@ c #B2BAC6", +"I@ c #E6E5E2", +"J@ c #C3C4C4", +"K@ c #CCCBCC", +"L@ c #CED0D1", +"M@ c #C8CBD0", +"N@ c #A47359", +"O@ c #CD984F", +"P@ c #DA9529", +"Q@ c #D1892A", +"R@ c #72201A", +"S@ c #DED3CB", +"T@ c #D3D9DD", +"U@ c #CBC8C5", +"V@ c #B2B4B4", +"W@ c #526185", +"X@ c #BFC4D9", +"Y@ c #D9E0EF", +"Z@ c #5D93EB", +"`@ c #8AB7FE", +" # c #D0DDF0", +".# c #D2CFCA", +"+# c #E3E1D5", +"@# c #F5F4F0", +"## c #EEF0F2", +"$# c #A6AAAC", +"%# c #9C705E", +"&# c #AF6B27", +"*# c #B15A02", +"=# c #A54300", +"-# c #A47465", +";# c #E7E7E5", +"># c #727B8C", +",# c #777FA2", +"'# c #D9E0EE", +")# c #6197F2", +"!# c #719DE5", +"~# c #CBD6DF", +"{# c #FFFFF5", +"]# c #E2DED8", +"^# c #C6C7C6", +"/# c #E6DEDE", +"(# c #D7BCAD", +"_# c #C39684", +":# c #7E2A0D", +"<# c #B99A88", +"[# c #EFF2F3", +"}# c #DEE0E4", +"|# c #636C90", +"1# c #BFC4D8", +"2# c #E1E8F3", +"3# c #6596EB", +"4# c #70A2F4", +"5# c #B3BAC3", +"6# c #F4EEE4", +"7# c #E3E6EC", +"8# c #A48E86", +"9# c #CCC2BB", +"0# c #C1C3C4", +"a# c #DBDBDB", +"b# c #8C91A5", +"c# c #7D82A5", +"d# c #DEE4F0", +"e# c #D7DEED", +"f# c #D6E0F2", +"g# c #B1C0DB", +"h# c #B5CCF3", +"i# c #6B9CF0", +"j# c #6B9DF1", +"k# c #F1F5FC", +"l# c #C7C1B4", +"m# c #DCE1E6", +"n# c #E1E5E8", +"o# c #D6D5D4", +"p# c #AEB0B2", +"q# c #465374", +"r# c #B4BBD3", +"s# c #EAF3FF", +"t# c #DEE8F9", +"u# c #B5CBF1", +"v# c #659AF5", +"w# c #6897E4", +"x# c #B9BCC2", +"y# c #FFFFF0", +"z# c #F8F3EB", +"A# c #9899A5", +"B# c #5D618D", +"C# c #6D85AC", +"D# c #5277B5", +"E# c #4F86E1", +"F# c #7BA6EF", +"G# c #E0E3E8", +"H# c #EDEBE7", +"I# c #37476B", +"J# c #647398", +"K# c #194999", +"L# c #4983E6", +"M# c #496292", +"N# c #011147", +" . . . . . . . . . . . . . . . + ", +" . @ # # # # # # $ % & * = - ; > , ", +" . ' ) ) ) ) ) ) ! ~ { ] ^ / ( _ : < ", +" . ' # ) # ) # ) [ } | * 1 2 3 4 5 6 7 ", +" . ' # # ) # # ) 8 9 0 a b c d e f g h i ", +" . ' # ) # ) # ) j 9 f k l m n o # p q r s ", +" . ' ) ) ) ) ) ) t u } v w = x y z A B C D E ", +" . ' # # # # # # $ 8 F G H I J K L L L L L L L ", +" . ' # # # # # # $ [ M N a O P Q / R S T U V W ", +" . ' # # # # # # # 8 X Y Z l ` Q n ...+.@.#.W ", +" $.%.# # # # # # # &.*.=.-.;.>.,.'.).!.~.{.].W ", +" $.^./.(._.# # # # :.<.*.[.p }.|.1.2.3.4.5.6.7.W ", +" $.8.9.0.a.b.c.# d.e.*.*.f.* g.h.i.j.k.l.m.n.o.W ", +" $.p.q.r.s.t.u.v.w.x.y.z.A.B.c C.D.E.R ( F.k.k.G.W ", +" $.H.I.J.K.$.L.M.N.O.P.*.Q.R.S./ n T.D.U.V.W.X.Y.W ", +" $.Z.`. +.+++@+#+$+%+&+*+=+-+;+2 Q >+/ ,+'+)+U.!+~+W ", +" $.{+]+^+# # /+(+_+:+<+[+}+|+1+2+,.S.>+3+4+5+d )+6+W ", +" $.7+8+9+0+# a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+4+'+r+W ", +" $.# s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+>+N+q+O+W ", +" $.P+Q+R+S+# T+U+V+W+X+Y+# # 7+Z+`+ @.@+@@@#@$@%@&@&@*@W ", +" $.=@-@;@>@:.A+,@z+# '@)@!@~@{@]@^@7+/@(@_@:@<@$@x [@q+}@W ", +" $.|@1@2@3@a+4@5@6@# 7@8@9@0@a@b@c@d@e@f@g@h@i@2 <@>+3+}@W ", +"$.j@k@l@m@# 3@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@2 S./ >+E@W ", +" F@G@H@# # I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@|.i@2 Y@/ >+E@W ", +" Z@`@ #.#+#@###$#%#&#*#=#-## # ;#>#,#o+^ i@2 '#>+>+}@W ", +" )#!#~#{#]#^#/#(#_#:#<#[## }#|#1#2#|.i@2 <@>+/ E@W ", +" 3#4#5#6## # 7#8#9#0#a#b#c#d#^ |.2 S.>+>+e#f#W ", +" g#h#i#j#k## l#m#n#o#p#q#r#= ^ |.2 S.>+>+e#f#W ", +" . s#t#u#v#w#x#y#z#8+A#B#i@= ^ |.2 S.>+>+e#f#W ", +" . W W W C#D#E#F#G#H#I#J#W W W W W W W W W W W ", +" K#L#M#N# ", +" "}; diff --git a/econtrol/icons/wallpaper.xpm b/econtrol/icons/wallpaper.xpm new file mode 100755 index 0000000..486af42 --- /dev/null +++ b/econtrol/icons/wallpaper.xpm @@ -0,0 +1,973 @@ +/* XPM */ +static char * wallpaper_xpm[] = { +"48 48 922 2", +" c None", +". c #141414", +"+ c #212121", +"@ c #232323", +"# c #242424", +"$ c #222222", +"% c #1D1D1D", +"& c #0C0C0C", +"* c #1C1C1C", +"= c #868686", +"- c #F9F9F9", +"; c #F8F8F8", +"> c #F6F6F6", +", c #F5F5F5", +"' c #F4F4F4", +") c #F3F3F3", +"! c #EEEEEE", +"~ c #EBEBEB", +"{ c #ECECEC", +"] c #EAEAEA", +"^ c #E9E9E9", +"/ c #E8E8E8", +"( c #E7E7E7", +"_ c #E6E6E6", +": c #E5E5E5", +"< c #E4E4E4", +"[ c #E3E3E3", +"} c #E2E2E2", +"| c #DFDFDF", +"1 c #CDCDCD", +"2 c #5B5B5B", +"3 c #0B0B0B", +"4 c #2D2D2D", +"5 c #F2F2F2", +"6 c #FEFEFE", +"7 c #DBDBDB", +"8 c #FCFCFC", +"9 c #F0F0F0", +"0 c #CFCFCF", +"a c #D3D3D3", +"b c #E0E0E0", +"c c #DEDEDE", +"d c #DDDDDD", +"e c #DCDCDC", +"f c #DADADA", +"g c #D9D9D9", +"h c #D8D8D8", +"i c #D7D7D7", +"j c #D6D6D6", +"k c #D5D5D5", +"l c #D2D2D2", +"m c #D1D1D1", +"n c #D0D0D0", +"o c #CACACA", +"p c #C6C6C6", +"q c #BBBBBB", +"r c #C2C2C2", +"s c #CECECE", +"t c #BEBEBE", +"u c #D4D4D4", +"v c #CBCBCB", +"w c #C9C9C9", +"x c #C7C7C7", +"y c #C4C4C4", +"z c #B4B4B4", +"A c #ADADAD", +"B c #AFAFAF", +"C c #BFBFBF", +"D c #B6B6B6", +"E c #B0B0B0", +"F c #BABABA", +"G c #BCBCBC", +"H c #B8B8B8", +"I c #B5B5B5", +"J c #B3B3B3", +"K c #B1B1B1", +"L c #AEAEAE", +"M c #AAAAAA", +"N c #A8A8A8", +"O c #A7A7A7", +"P c #A5A5A5", +"Q c #C1C1C1", +"R c #B9B9B9", +"S c #5D5D5D", +"T c #2F3132", +"U c #343638", +"V c #3D3F40", +"W c #434547", +"X c #494B4D", +"Y c #454749", +"Z c #404244", +"` c #393B3E", +" . c #353739", +".. c #343637", +"+. c #333536", +"@. c #343537", +"#. c #333537", +"$. c #333435", +"%. c #333636", +"&. c #323435", +"*. c #323335", +"=. c #313334", +"-. c #2F3031", +";. c #2D2E2F", +">. c #2B2C2D", +",. c #2A2B2C", +"'. c #282829", +"). c #262728", +"!. c #747475", +"~. c #434647", +"{. c #374655", +"]. c #475665", +"^. c #5E6D7B", +"/. c #707F8D", +"(. c #7F8E9C", +"_. c #8393A2", +":. c #8091A1", +"<. c #798B9C", +"[. c #728597", +"}. c #6F8294", +"|. c #6D8192", +"1. c #6C7F91", +"2. c #6A7C8F", +"3. c #677A8B", +"4. c #647688", +"5. c #627485", +"6. c #607182", +"7. c #5C6D7E", +"8. c #5B6B7C", +"9. c #546475", +"0. c #4F6070", +"a. c #4C5C6D", +"b. c #495869", +"c. c #445364", +"d. c #415060", +"e. c #3D4B5B", +"f. c #334152", +"g. c #2C3A4A", +"h. c #243344", +"i. c #1C2A3B", +"j. c #162435", +"k. c #122032", +"l. c #061626", +"m. c #7D7D7E", +"n. c #B2B2B2", +"o. c #F7F7F7", +"p. c #484A4C", +"q. c #51606D", +"r. c #74818C", +"s. c #919DA6", +"t. c #A9B4BC", +"u. c #B6C1C9", +"v. c #BCC7CF", +"w. c #BDC8D1", +"x. c #B9C6CF", +"y. c #B8C5CF", +"z. c #B3C0CB", +"A. c #B2BFCA", +"B. c #B0BDC7", +"C. c #AEBBC5", +"D. c #ABB8C3", +"E. c #A8B5C0", +"F. c #A4B1BC", +"G. c #A0ADB9", +"H. c #98A6B2", +"I. c #909FAC", +"J. c #8897A5", +"K. c #7C8C9B", +"L. c #798897", +"M. c #788895", +"N. c #718190", +"O. c #6C7C8B", +"P. c #687887", +"Q. c #5E6E7F", +"R. c #516173", +"S. c #435567", +"T. c #34475C", +"U. c #283C51", +"V. c #23364C", +"W. c #112436", +"X. c #818282", +"Y. c #C5C5C5", +"Z. c #4A4C4D", +"`. c #5A6773", +" + c #8B959E", +".+ c #AEB6BE", +"++ c #C6CCD2", +"@+ c #D0D7DC", +"#+ c #D3D9E0", +"$+ c #D4DAE1", +"%+ c #D3DAE1", +"&+ c #CFD7DD", +"*+ c #CBD3DB", +"=+ c #CBD3DA", +"-+ c #C8D0D7", +";+ c #C6CED5", +">+ c #C7CED6", +",+ c #C3CBD2", +"'+ c #C0C8D0", +")+ c #B9C1CA", +"!+ c #B1BAC3", +"~+ c #A6B0BA", +"{+ c #95A0AC", +"]+ c #8995A1", +"^+ c #848F9C", +"/+ c #838F9B", +"(+ c #818C98", +"_+ c #7D8793", +":+ c #737F8B", +"<+ c #6B7683", +"[+ c #5A6674", +"}+ c #485464", +"|+ c #344152", +"1+ c #253244", +"2+ c #192638", +"3+ c #1D3142", +"4+ c #828383", +"5+ c #75828D", +"6+ c #A8B1B9", +"7+ c #CBD1D6", +"8+ c #DCE2E6", +"9+ c #E2E7EB", +"0+ c #E3E8EC", +"a+ c #E4EAEE", +"b+ c #E3E9EE", +"c+ c #E0E6EC", +"d+ c #DEE5EA", +"e+ c #DBE2E8", +"f+ c #D8E0E6", +"g+ c #D8DFE5", +"h+ c #D5DDE3", +"i+ c #D2DAE1", +"j+ c #D0D8DE", +"k+ c #CAD3DA", +"l+ c #C2CBD4", +"m+ c #B5C0CA", +"n+ c #A8B4C0", +"o+ c #9BA9B6", +"p+ c #95A3B0", +"q+ c #919FAC", +"r+ c #8E9DAA", +"s+ c #8B99A7", +"t+ c #8593A1", +"u+ c #7B8998", +"v+ c #6C7C8C", +"w+ c #5A6C7D", +"x+ c #485B6E", +"y+ c #384B60", +"z+ c #2C4156", +"A+ c #223646", +"B+ c #4C4E4F", +"C+ c #76838E", +"D+ c #ACB5BC", +"E+ c #CCD2D7", +"F+ c #D9DFE3", +"G+ c #DDE3E8", +"H+ c #DDE3E9", +"I+ c #DAE2E8", +"J+ c #D6DFE6", +"K+ c #D2DBE3", +"L+ c #CED7E0", +"M+ c #C8D3DC", +"N+ c #C3CED8", +"O+ c #C5CFD9", +"P+ c #C1CBD4", +"Q+ c #B8C3CE", +"R+ c #B2BEC8", +"S+ c #ABB7C3", +"T+ c #9FACB8", +"U+ c #93A2AF", +"V+ c #8998A6", +"W+ c #8392A1", +"X+ c #808E9C", +"Y+ c #7C8A99", +"Z+ c #778593", +"`+ c #707D8C", +" @ c #697686", +".@ c #5B6A79", +"+@ c #4D5D6E", +"@@ c #404F61", +"#@ c #324255", +"$@ c #273749", +"%@ c #223546", +"&@ c #828283", +"*@ c #C0C0C0", +"=@ c #4B4D4D", +"-@ c #818F9A", +";@ c #B2BBC2", +">@ c #CFD6DC", +",@ c #DAE1E6", +"'@ c #DDE4E9", +")@ c #DCE4EA", +"!@ c #DBE6ED", +"~@ c #D6E2EA", +"{@ c #CDDAE4", +"]@ c #C6D5E0", +"^@ c #BFCFDB", +"/@ c #B8C9D6", +"(@ c #B6C7D4", +"_@ c #B1C2D0", +":@ c #ACBECC", +"<@ c #A8B9C8", +"[@ c #A5B7C6", +"}@ c #9FB1C0", +"|@ c #99ABBB", +"1@ c #92A6B7", +"2@ c #8DA1B1", +"3@ c #899CAD", +"4@ c #8699AA", +"5@ c #7F92A4", +"6@ c #788B9D", +"7@ c #718698", +"8@ c #6B7F93", +"9@ c #64788C", +"0@ c #5D7186", +"a@ c #566B80", +"b@ c #485E74", +"c@ c #3B5269", +"d@ c #203344", +"e@ c #818182", +"f@ c #47494A", +"g@ c #717E8B", +"h@ c #A5AFB8", +"i@ c #C2CAD1", +"j@ c #CFD7DE", +"k@ c #D0D9E1", +"l@ c #CBD6E0", +"m@ c #C7D4E0", +"n@ c #C0CEDC", +"o@ c #B5C6D6", +"p@ c #AABDCE", +"q@ c #9DB2C5", +"r@ c #93A9BE", +"s@ c #9BB3C5", +"t@ c #9EB4C6", +"u@ c #849CB1", +"v@ c #768DA3", +"w@ c #72879D", +"x@ c #73889C", +"y@ c #798EA3", +"z@ c #879DB0", +"A@ c #8196A9", +"B@ c #6D8094", +"C@ c #687B8F", +"D@ c #64778B", +"E@ c #5E7184", +"F@ c #58697E", +"G@ c #526479", +"H@ c #506276", +"I@ c #4F6073", +"J@ c #48586C", +"K@ c #3E4E63", +"L@ c #35455A", +"M@ c #1E3142", +"N@ c #808081", +"O@ c #7B8A96", +"P@ c #AAB6BE", +"Q@ c #C5CED5", +"R@ c #D4DEE5", +"S@ c #D1DEE6", +"T@ c #CFDDE7", +"U@ c #CCDCE7", +"V@ c #C2D4E1", +"W@ c #B9CDDB", +"X@ c #AFC6D6", +"Y@ c #A6BECF", +"Z@ c #9CB5C9", +"`@ c #7792AA", +" # c #68829C", +".# c #627C96", +"+# c #617B94", +"@# c #5F7890", +"## c #5A738B", +"$# c #647B92", +"%# c #7C95AA", +"&# c #778FA5", +"*# c #728BA1", +"=# c #6C859B", +"-# c #688197", +";# c #657D94", +"># c #657C93", +",# c #627990", +"'# c #60778F", +")# c #5F758B", +"!# c #546B83", +"~# c #4B627B", +"{# c #1C3142", +"]# c #414345", +"^# c #6B7A89", +"/# c #9BA7B3", +"(# c #B7C1CB", +"_# c #C3CDD7", +":# c #C2CED9", +"<# c #BDCBD8", +"[# c #BACAD9", +"}# c #B1C2D1", +"|# c #454D54", +"1# c #91A4B5", +"2# c #92A8BD", +"3# c #A2BACC", +"4# c #87A2B8", +"5# c #6884A0", +"6# c #617D99", +"7# c #5F7A96", +"8# c #57728F", +"9# c #536F8A", +"0# c #546E88", +"a# c #4F6983", +"b# c #5F7891", +"c# c #6C869E", +"d# c #546C85", +"e# c #4E667F", +"f# c #4F657E", +"g# c #4D637B", +"h# c #4D627A", +"i# c #4F637A", +"j# c #55677D", +"k# c #516378", +"l# c #4C5E73", +"m# c #415369", +"n# c #1B2F40", +"o# c #808080", +"p# c #A3AFB9", +"q# c #BEC8D1", +"r# c #CAD4DC", +"s# c #CBD7E1", +"t# c #C7D5E1", +"u# c #C2D3E1", +"v# c #99A7B2", +"w# c #909090", +"x# c #4B4B4B", +"y# c #191919", +"z# c #2F3A44", +"A# c #5E7892", +"B# c #5D7B96", +"C# c #587593", +"D# c #53718E", +"E# c #516D89", +"F# c #4E6A85", +"G# c #496581", +"H# c #4C6783", +"I# c #6B86A0", +"J# c #65829C", +"K# c #627E98", +"L# c #617C96", +"M# c #617B95", +"N# c #647D96", +"O# c #688098", +"P# c #6B8298", +"Q# c #6C8299", +"R# c #657B93", +"S# c #5B728A", +"T# c #6E7D8B", +"U# c #98A5B0", +"V# c #B2BDC7", +"W# c #6F767E", +"X# c #6D767E", +"Y# c #67727C", +"Z# c #4B545C", +"`# c #393A3A", +" $ c #B7B7B7", +".$ c #9E9E9E", +"+$ c #505050", +"@$ c #1B1B1B", +"#$ c #1A232D", +"$$ c #496580", +"%$ c #4A6682", +"&$ c #496682", +"*$ c #45607D", +"=$ c #6B87A2", +"-$ c #4D6783", +";$ c #496480", +">$ c #48637E", +",$ c #4C657F", +"'$ c #526881", +")$ c #586D84", +"!$ c #61748A", +"~$ c #617389", +"{$ c #5B6E84", +"]$ c #4F6279", +"^$ c #1A2E3F", +"/$ c #414344", +"($ c #7F8F9B", +"_$ c #A4B0BA", +":$ c #B7C2CB", +"<$ c #000000", +"[$ c #C9C8C4", +"}$ c #858380", +"|$ c #7E7D7B", +"1$ c #9B9B9B", +"2$ c #E1E1E1", +"3$ c #EFEFEF", +"4$ c #535353", +"5$ c #425C77", +"6$ c #6C89A4", +"7$ c #6985A1", +"8$ c #65839E", +"9$ c #67829D", +"0$ c #6D87A0", +"a$ c #728BA4", +"b$ c #788EA6", +"c$ c #7A8FA6", +"d$ c #758BA2", +"e$ c #6A819A", +"f$ c #404243", +"g$ c #768695", +"h$ c #9CA9B5", +"i$ c #AAB7C1", +"j$ c #4E4D4C", +"k$ c #CECBC5", +"l$ c #C8C5BF", +"m$ c #D3D1CC", +"n$ c #DCDAD5", +"o$ c #BCBAB7", +"p$ c #A9A9A8", +"q$ c #C3C3C3", +"r$ c #506880", +"s$ c #657D97", +"t$ c #516C88", +"u$ c #4F6C87", +"v$ c #536E8B", +"w$ c #556F8B", +"x$ c #5B748D", +"y$ c #637A92", +"z$ c #6A7F97", +"A$ c #6D8197", +"B$ c #677B92", +"C$ c #5B7088", +"D$ c #192D3E", +"E$ c #CCCCCC", +"F$ c #A2A2A2", +"G$ c #202020", +"H$ c #85939F", +"I$ c #AAB6C0", +"J$ c #ABB5BE", +"K$ c #666563", +"L$ c #C6C2BB", +"M$ c #C5C2BA", +"N$ c #C8C4BD", +"O$ c #CDCAC2", +"P$ c #D4D1CB", +"Q$ c #D9D7D2", +"R$ c #DAD8D3", +"S$ c #C3C2BE", +"T$ c #BFBEBC", +"U$ c #252525", +"V$ c #556779", +"W$ c #5D7285", +"X$ c #6A849C", +"Y$ c #728DA7", +"Z$ c #748FAB", +"`$ c #748FA9", +" % c #7B93AD", +".% c #8097B0", +"+% c #8399B1", +"@% c #849AB0", +"#% c #7D94AC", +"$% c #748CA5", +"%% c #A0A0A0", +"&% c #1F1F1F", +"*% c #3F4143", +"=% c #798998", +"-% c #788189", +";% c #959592", +">% c #C1BEB6", +",% c #C6C3BB", +"'% c #CAC7BF", +")% c #CDCAC4", +"!% c #CBC7C2", +"~% c #D2D0CB", +"{% c #D1CFCA", +"]% c #CECCC7", +"^% c #C5C4C0", +"/% c #8A8885", +"(% c #262625", +"_% c #1E1E1E", +":% c #20252B", +"<% c #4C5A68", +"[% c #4B5D70", +"}% c #5C738C", +"|% c #627C98", +"1% c #66809C", +"2% c #6D849F", +"3% c #6F859F", +"4% c #758AA2", +"5% c #7589A2", +"6% c #6F839D", +"7% c #607792", +"8% c #182B3D", +"9% c #A1A1A1", +"0% c #3F4042", +"a% c #8B99A5", +"b% c #A6B3BE", +"c% c #555B60", +"d% c #B1B0AA", +"e% c #BFBBB4", +"f% c #C7C4BC", +"g% c #CCC8C1", +"h% c #CDCBC4", +"i% c #C0BDB5", +"j% c #C3C0B8", +"k% c #BFBCB4", +"l% c #BAB6AD", +"m% c #B8B4AB", +"n% c #C5C3BC", +"o% c #C8C7C1", +"p% c #B4B1AB", +"q% c #8A8881", +"r% c #47515D", +"s% c #566471", +"t% c #677788", +"u% c #7F95AB", +"v% c #88A1BB", +"w% c #8AA3BC", +"x% c #89A2BB", +"y% c #89A2BA", +"z% c #8AA2BB", +"A% c #8BA2BB", +"B% c #8BA3BB", +"C% c #839CB6", +"D% c #7992AF", +"E% c #172B3B", +"F% c #A4A4A4", +"G% c #3E4041", +"H% c #7A8A9A", +"I% c #96A5B3", +"J% c #A3B2C0", +"K% c #9DA7B0", +"L% c #828382", +"M% c #A8A49B", +"N% c #BAB7AF", +"O% c #CFCCC8", +"P% c #76736D", +"Q% c #ADA9A0", +"R% c #BDBAB2", +"S% c #B9B5AC", +"T% c #B3B0A6", +"U% c #AFAAA0", +"V% c #A9A69C", +"W% c #54534D", +"X% c #3F3F3E", +"Y% c #4D5864", +"Z% c #566472", +"`% c #69798C", +" & c #7E92A9", +".& c #8399B3", +"+& c #8097B2", +"@& c #7E95AF", +"#& c #7D94AE", +"$& c #7C93AE", +"%& c #7D93AD", +"&& c #798FAB", +"*& c #7088A4", +"=& c #647D9C", +"-& c #112435", +";& c #3E4040", +">& c #8896A5", +",& c #9CABB9", +"'& c #909CA9", +")& c #A8B7C6", +"!& c #97A6B3", +"~& c #292B2C", +"{& c #7B7975", +"]& c #D3D2CD", +"^& c #878480", +"/& c #3B3936", +"(& c #252422", +"_& c #908C81", +":& c #B8B3AB", +"<& c #B2AEA5", +"[& c #938E84", +"}& c #4C4945", +"|& c #333333", +"1& c #5F6B75", +"2& c #6D7A88", +"3& c #8C9CAD", +"4& c #9EB1C7", +"5& c #A1B7CD", +"6& c #9FB4CC", +"7& c #9AB1C9", +"8& c #98AFC7", +"9& c #92AAC4", +"0& c #93ABC4", +"a& c #8FA7C2", +"b& c #88A2BD", +"c& c #7B97B6", +"d& c #172A3B", +"e& c #ACACAC", +"f& c #3C3E3F", +"g& c #74879B", +"h& c #8598AC", +"i& c #90A4B8", +"j& c #93A7BC", +"k& c #4B535A", +"l& c #94928F", +"m& c #DBD9D6", +"n& c #878580", +"o& c #1F1E1C", +"p& c #6F6A63", +"q& c #242321", +"r& c #8E887F", +"s& c #B0ACA3", +"t& c #ABA79E", +"u& c #5C5851", +"v& c #262523", +"w& c #1E2126", +"x& c #596572", +"y& c #687685", +"z& c #8597AD", +"A& c #92A7C0", +"B& c #92A9C3", +"C& c #8FA5C0", +"D& c #89A1BD", +"E& c #839CB9", +"F& c #7E97B5", +"G& c #7B94B2", +"H& c #768FAF", +"I& c #6D88AA", +"J& c #627EA3", +"K& c #182C3C", +"L& c #3C3D3E", +"M& c #7F90A3", +"N& c #8A9BAD", +"O& c #8FA2B4", +"P& c #595857", +"Q& c #D0CFCD", +"R& c #DCDBD7", +"S& c #9B9892", +"T& c #191817", +"U& c #060505", +"V& c #59646E", +"W& c #606A72", +"X& c #525353", +"Y& c #302F2B", +"Z& c #67635C", +"`& c #7F7A72", +" * c #47453F", +".* c #262B30", +"+* c #5E6974", +"@* c #636E7A", +"#* c #768393", +"$* c #94A6BA", +"%* c #9FB6CF", +"&* c #9AB1CC", +"** c #96ADC8", +"=* c #90A9C6", +"-* c #8CA7C3", +";* c #89A3C1", +">* c #849FBE", +",* c #7D99BB", +"'* c #7291B4", +")* c #293B4A", +"!* c #667C94", +"~* c #7087A0", +"{* c #4E5256", +"]* c #F0EFEF", +"^* c #EEEEED", +"/* c #908C87", +"(* c #424E5B", +"_* c #505E6D", +":* c #424D5A", +"<* c #58697A", +"[* c #11100F", +"}* c #43403C", +"|* c #171614", +"1* c #2E363F", +"2* c #4D5A69", +"3* c #4F5D6D", +"4* c #58687A", +"5* c #697C92", +"6* c #7C92AD", +"7* c #819AB7", +"8* c #7E97B6", +"9* c #7994B4", +"0* c #728DAF", +"a* c #6E8AAD", +"b* c #6784A8", +"c* c #6381A5", +"d* c #5D7BA1", +"e* c #57769C", +"f* c #53719A", +"g* c #1E3141", +"h* c #454545", +"i* c #040B10", +"j* c #050E13", +"k* c #535351", +"l* c #F2F1F1", +"m* c #EBEAEA", +"n* c #232220", +"o* c #100F0E", +"p* c #020609", +"q* c #02070B", +"r* c #010709", +"s* c #01080B", +"t* c #00070C", +"u* c #02090E", +"v* c #04080B", +"w* c #030608", +"x* c #03070A", +"y* c #04090C", +"z* c #050B0F", +"A* c #050B10", +"B* c #050A10", +"C* c #050A0F", +"D* c #040A0E", +"E* c #04090E", +"F* c #060B0F", +"G* c #070B0F", +"H* c #05090D", +"I* c #04080C", +"J* c #030609", +"K* c #F1F1F1", +"L* c #5F5F5F", +"M* c #DDDDDC", +"N* c #E9E9E8", +"O* c #131211", +"P* c #555555", +"Q* c #898989", +"R* c #919191", +"S* c #A3A3A3", +"T* c #EDEDED", +"U* c #A9A9A9", +"V* c #696969", +"W* c #2B2A28", +"X* c #2F2F2F", +"Y* c #727272", +"Z* c #757575", +"`* c #888888", +" = c #ABABAB", +".= c #A6A6A6", +"+= c #BDBDBD", +"@= c #989898", +"#= c #818181", +"$= c #777777", +"%= c #9A9A9A", +"&= c #666666", +"*= c #9C9C9C", +"== c #8F8F8F", +"-= c #6D6D6D", +";= c #F2E4AE", +">= c #F2E3AD", +",= c #C9BF9E", +"'= c #969696", +")= c #8D8D8D", +"!= c #7A7A7A", +"~= c #8A8A8A", +"{= c #999999", +"]= c #979797", +"^= c #959595", +"/= c #8C8670", +"(= c #86806A", +"_= c #848173", +":= c #949494", +"<= c #C8C8C8", +"[= c #929292", +"}= c #9D9D9D", +"|= c #8C8C8C", +"1= c #7C7C7C", +"2= c #878787", +"3= c #121212", +"4= c #858585", +"5= c #626262", +"6= c #595959", +"7= c #9F9F9F", +"8= c #3D3D3D", +"9= c #606060", +"0= c #8E8E8E", +"a= c #7D7D7D", +"b= c #3C3C3C", +"c= c #838383", +"d= c #848484", +"e= c #464646", +"f= c #060606", +"g= c #020202", +"h= c #2A2A2A", +"i= c #4E4E4E", +"j= c #585858", +"k= c #565656", +"l= c #545454", +"m= c #515151", +"n= c #4D4D4D", +"o= c #4A4A4A", +"p= c #4C4C4C", +"q= c #494949", +"r= c #484848", +"s= c #474747", +"t= c #444444", +"u= c #434343", +"v= c #424242", +"w= c #414141", +"x= c #3F3F3F", +"y= c #3E3E3E", +"z= c #3B3B3B", +"A= c #383838", +"B= c #404040", +"C= c #3A3A3A", +"D= c #363636", +"E= c #313131", +"F= c #2B2B2B", +"G= c #282828", +"H= c #272727", +"I= c #262626", +"J= c #1A1A1A", +"K= c #040404", +"L= c #373737", +"M= c #8B8B8B", +"N= c #7B7B7B", +"O= c #787878", +"P= c #707070", +"Q= c #6C6C6C", +"R= c #686868", +"S= c #676767", +"T= c #646464", +"U= c #616161", +"V= c #525252", +"W= c #353535", +"X= c #0D0D0D", +"Y= c #0E0E0E", +"Z= c #111111", +"`= c #101010", +" - c #0F0F0F", +".- c #090909", +" ", +" ", +" . + @ # # # # # # # # # # # # $ + # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ $ % & ", +" * = - - ; > , , ' ) ! ~ { { { { { { ~ ~ ] ] ] ^ ^ ^ / / / ( ( _ _ : : < [ } | 1 2 3 ", +" 4 5 , > 6 > ^ 7 8 9 0 a b | c c c d e e 7 7 f f g h h i j k k a l l m n 0 1 o p q * ", +" * 9 ~ : | 0 p r [ s t m d d e e 7 f g g g h i i j j k u l l m n 0 0 s 1 v w x y q + ", +" $ - _ k z A B C D E F G F H H H D D I z z z J J J K E E B L L A M M N O P P I Q R # ", +" $ ; < v S T U V W X X Y Z ` ...U .U ..+.@.@.@.#...$.%.&.+.*.=.-.;.>.,.'.).!.C I # ", +" $ ; } p ~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.l n.@ ", +" $ o.b y p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.u z @ ", +" $ o.| Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+u z @ ", +" $ o.c r Z.5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+4+a K @ ", +" $ o.c Q B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+w.Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@l B @ ", +" $ o.d *@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@d@e@l L @ ", +" $ > e t f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@m L @ ", +" $ > 7 t f@O@P@Q@i+R@S@T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#N@m A $ ", +" $ > 7 G ]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#m M $ ", +" $ > 7 G Z O@p#q#r#s#t#u#v#I w#x#y#z#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#n#o#n M $ ", +" $ > f G Z T#U#V#W#X#Y#Z#`# $Y.a d o .$+$@$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$o#n M + ", +" $ > f G /$($_$:$<$[$}$|$= 1$B t v i 2$^ 3$h P 4$@$5$6$7$8$8$9$0$a$b$c$d$e$^$o#0 N + ", +" $ > g q f$g$h$i$j$k$l$m$n$[$o$p$I q$m e < { 5 v 4$r$s$t$u$v$w$x$y$z$A$B$C$D$o#E$F$G$ ", +" $ > h F Z H$I$J$K$L$M$N$O$P$Q$R$m$S$T$o k b 1$U$<$V$W$X$Y$Z$`$ %.%+%@%#%$%D$o#E$%%&% ", +" $ > h F *%=%o+-%;%>%,%'%)%O$N$L$!%~%{%]%^%/%(%_%:%<%[%}%|%1%1%2%3%4%5%6%7%8%o#v 9%&% ", +" $ , h R 0%a%b%c%d%e%f%g%h%M$i%j%k%l%m%n%o%p%q%U$r%s%t%u%v%w%x%y%z%A%B%C%D%E%o#E$F%&% ", +" $ , i R G%H%I%J%K%L%M%N%g%O%P%Q%R%S%T%U%V%W%X%4 Y%Z%`% &.&+&@&#&$&%&&&*&=&-&o#E$L + ", +" $ , i H ;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&Q%[&}&|&4 1&2&3&4&5&6&7&8&9&0&a&b&c&d&N@E$e&+ ", +" $ , j H f&g&h&i&j&k&l&m&n&o&p&(&q&r&s&t&u&v&<$w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&N@v e&+ ", +" $ , k $L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *<$.*+*@*#*$*5&%*&***=*-*;*>*,*'*)*X.v L + ", +" $ , k $L&!*~*{*]*^*/*T&U&(*_*:*<*:*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*N@o e&+ ", +" $ ' u y h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*x*v*v*y*z*A*z*A*B*C*D*E*F*G*H*I*J*N@o M + ", +" $ ' a m i K*> L*M*N*O*P*Q*R*N E$} b f Y.A S*A Y.c 9 o.; ; ; o.o.o.o.o.> , T*n K U*G$ ", +" $ ' a l j j a *@V*W*X*Y*Z*`*S*q y y *@H =.=e& $C r q$q$r Q *@C C +=q $K K B N U*+ ", +" $ ' l 7 7 g 2$U*H @=#=$=o#%=n.t Q Q C G R $R q G q F F R H H $D I z n.B L e&O .=G$ ", +" $ ' m 2$q$Q g &=Q K *===@=L G *@*@C t +=+=G q q F R H $D I I z z J x k u Q N .=F$+ ", +" $ ) n } j : ' -=p *@D B J F C C t t +=G q F F R H $D I z J J J K E < ;=>=,='=P L $ ", +" $ ) 0 Q )=!=~='=Y.q$C t t e&1$.$.$*=1$1$1$%={={=@=]='='=^=*=G Y.I A q /=(=_=:=L z @$ ", +" $ ) 1 <=+=R R C r Q C t U*~=.$< l '=[=e&7 7 }=-=|=0 < E 1=2=D m 1 B O .$*=}= =Q .$3= ", +" 3 P $R H z J K E L =9%4=2=M =5=6=R*7=B V*8=9=0=A a=b=4$c=]=9%q F {=[=w#R*:=d=e=f= ", +" g=h=i=j=k=l=4$l=m=n=x#o=p=x#q=q=o=r=s=s=s=e=h*h*h*t=u=u=u=v=w=i=k=u=x=y=z=A=@ <$<$ ", +" <$$ q=h*u=t=t=t=t=t=t=b=t=v=y=B=w=C=C=D=|&E=4 F=h=G=H=I=# U$@ @ @ $ J=. K=<$<$ ", +" L=L ^=)=============c===M=2=Q*~=o##=N=O=Z*P=-=Q=R=R=S=T=T=5=5=5=U=V=W=X= ", +" Y=y#3=Z=Z=`=Z=`=`=Z=Z=Z=Z=Z=`=Z=Z=Z=Z=Z=Z=Z=Z=Z=Z=Z=Z=Z=Z=`=`=`=`= -.-g= ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/econtrol/icons/windowmanager.xpm b/econtrol/icons/windowmanager.xpm new file mode 100755 index 0000000..06d11e4 --- /dev/null +++ b/econtrol/icons/windowmanager.xpm @@ -0,0 +1,551 @@ +/* XPM */ +static char * windowmanager_xpm[] = { +"32 32 516 2", +" c None", +". c #C9EFF9", +"+ c #BFDCE4", +"@ c #C7ECF6", +"# c #CAEBF4", +"$ c #BAE6F3", +"% c #97A9AE", +"& c #ADE7F3", +"* c #B9EFF7", +"= c #B8F7FB", +"- c #C3EFF7", +"; c #B7EDFC", +"> c #9AC8D8", +", c #A6E1F0", +"' c #9FEFF7", +") c #8BEFF7", +"! c #85EDF6", +"~ c #93EBF5", +"{ c #A4ECFA", +"] c #8CD4E9", +"^ c #8DD2E6", +"/ c #9FC2CC", +"( c #D0F3FA", +"_ c #AEECF5", +": c #81E5F2", +"< c #70E5F2", +"[ c #62E3F1", +"} c #5AE1EF", +"| c #70E1F1", +"1 c #78D8ED", +"2 c #76DAF7", +"3 c #72AFC2", +"4 c #ADDBE8", +"5 c #EDFCFE", +"6 c #EEFBFE", +"7 c #C7F0F7", +"8 c #89DFEE", +"9 c #59DAEB", +"0 c #49D9EB", +"a c #3CD6EA", +"b c #3AD4E9", +"c c #4BD1E7", +"d c #5DD6F1", +"e c #55C0DD", +"f c #6CBFD7", +"g c #9BD6E6", +"h c #C7EDF8", +"i c #F2FEFE", +"j c #E7FBFE", +"k c #E5FBFE", +"l c #DDF8FC", +"m c #ADE8F2", +"n c #66D4E7", +"o c #35CAE2", +"p c #2ACBE4", +"q c #22C8E3", +"r c #1FC6E1", +"s c #34C8E3", +"t c #3FC2E0", +"u c #47C0E2", +"v c #5FA0B4", +"w c #A1DEEF", +"x c #E5F9FC", +"y c #E7FBFD", +"z c #E0F9FC", +"A c #DAF7FC", +"B c #D4F7FB", +"C c #D4F8FC", +"D c #C6F2F9", +"E c #95DFEE", +"F c #4BC8DE", +"G c #1CBEDB", +"H c #16BCDC", +"I c #11BBDC", +"J c #11B8DB", +"K c #1EB7D9", +"L c #32C2E8", +"M c #3CB2D5", +"N c #5FB0C9", +"O c #95D0DB", +"P c #BAE9F6", +"Q c #ECFCFE", +"R c #DAF8FC", +"S c #D5F8FB", +"T c #CEF6FB", +"U c #C8F4FA", +"V c #C2F2F9", +"W c #BEF2FA", +"X c #B2EEF6", +"Y c #79D5E6", +"Z c #33BAD6", +"` c #0DAED0", +" . c #0AAFD5", +".. c #06ACD3", +"+. c #07ABD3", +"@. c #13ADD4", +"#. c #1EADD4", +"$. c #2FB1D7", +"%. c #5895A8", +"&. c #8FD3E5", +"*. c #D7F6FB", +"=. c #E4FBFE", +"-. c #CFF5FA", +";. c #C0F2F9", +">. c #B8F0F8", +",. c #B0EEF7", +"'. c #A9EDF5", +"). c #A9EDF7", +"!. c #97E5F0", +"~. c #65CDE0", +"{. c #23ADCC", +"]. c #05A2C9", +"^. c #03A2CD", +"/. c #02A1CC", +"(. c #019EC9", +"_. c #15A6CD", +":. c #25B9E1", +"<. c #2FA2C5", +"[. c #5FC4E0", +"}. c #A1DFF0", +"|. c #E8FDFE", +"1. c #DCF9FC", +"2. c #D5F7FB", +"3. c #C8F3FA", +"4. c #BFF0F8", +"5. c #AFEEF6", +"6. c #A7EBF4", +"7. c #A1E9F3", +"8. c #98E6F1", +"9. c #93E5F1", +"0. c #8FE5F0", +"a. c #83DEEB", +"b. c #51C1D6", +"c. c #1AA5C4", +"d. c #0194BF", +"e. c #0095C2", +"f. c #3DBFDA", +"g. c #4CC5D9", +"h. c #0291BF", +"i. c #0C9BC8", +"j. c #7FC3D6", +"k. c #D4F9FD", +"l. c #DEF8FC", +"m. c #D6F7FC", +"n. c #D0F6FA", +"o. c #C7F2F9", +"p. c #B8F0F6", +"q. c #B0EEF6", +"r. c #A8EBF4", +"s. c #9FE8F1", +"t. c #93E3EE", +"u. c #82DDE8", +"v. c #72D5E2", +"w. c #6DD4E3", +"x. c #6DD7E6", +"y. c #73DAE8", +"z. c #65D1E1", +"A. c #3EB7CD", +"B. c #0F95B9", +"C. c #0A8DB1", +"D. c #1A96B7", +"E. c #007FAF", +"F. c #1D94BB", +"G. c #B4CDF6", +"H. c #B7CFF7", +"I. c #AEC9F6", +"J. c #A9C5F5", +"K. c #A3C1F5", +"L. c #9DBEF4", +"M. c #95B9F3", +"N. c #8FB4F2", +"O. c #87B0F2", +"P. c #81ACF1", +"Q. c #7AA7F0", +"R. c #73A2EF", +"S. c #6E9FED", +"T. c #689AE9", +"U. c #6497E6", +"V. c #6092E3", +"W. c #5C8FE0", +"X. c #5A8DDE", +"Y. c #5B8EE0", +"Z. c #346CBC", +"`. c #4BC1D0", +" + c #54CADB", +".+ c #57CDDE", +"++ c #59D0E0", +"@+ c #52C8D9", +"#+ c #2DA8C1", +"$+ c #0885AA", +"%+ c #0078A5", +"&+ c #3A90AA", +"*+ c #AECBF6", +"=+ c #A4D3FA", +"-+ c #9CD0FA", +";+ c #96CBF9", +">+ c #8EC7F7", +",+ c #87C2F7", +"'+ c #7EBCF6", +")+ c #75B7F5", +"!+ c #6CB1F4", +"~+ c #61A9F3", +"{+ c #58A2ED", +"]+ c #529CE8", +"^+ c #4B95E2", +"/+ c #448EDC", +"(+ c #3D86D6", +"_+ c #3881D2", +":+ c #3179CC", +"<+ c #2D74C7", +"[+ c #EDF5FD", +"}+ c #7EAFF1", +"|+ c #1758AB", +"1+ c #34A3B1", +"2+ c #48BCCC", +"3+ c #4CC4D7", +"4+ c #4BC5D8", +"5+ c #4AC5D7", +"6+ c #4FCADA", +"7+ c #34AFC6", +"8+ c #1E8FB5", +"9+ c #A8C7F6", +"0+ c #96CEFA", +"a+ c #8EC9F9", +"b+ c #87C5F8", +"c+ c #7FC0F7", +"d+ c #77BAF6", +"e+ c #6DB4F5", +"f+ c #63ADF4", +"g+ c #5AA7F0", +"h+ c #529FEA", +"i+ c #4B98E4", +"j+ c #4591DE", +"k+ c #3F8BD9", +"l+ c #3783D3", +"m+ c #327DCE", +"n+ c #2C76C8", +"o+ c #2771C4", +"p+ c #7CADF0", +"q+ c #5189D5", +"r+ c #1558AB", +"s+ c #1E808C", +"t+ c #39ACBB", +"u+ c #45BCCD", +"v+ c #45BFD1", +"w+ c #42BED0", +"x+ c #41BDCE", +"y+ c #2CABC3", +"z+ c #4E95AA", +"A+ c #A4C2F5", +"B+ c #A7C7F5", +"C+ c #A1C4F4", +"D+ c #9CC0F3", +"E+ c #95BBF2", +"F+ c #8BB5F1", +"G+ c #82AFEF", +"H+ c #77A8EE", +"I+ c #6EA2EC", +"J+ c #679BE6", +"K+ c #5F95DF", +"L+ c #558CD7", +"M+ c #4F86D2", +"N+ c #4880CC", +"O+ c #4078C5", +"P+ c #3972BE", +"Q+ c #316BB8", +"R+ c #2C65B3", +"S+ c #255FAD", +"T+ c #205BA9", +"U+ c #154F9D", +"V+ c #136B75", +"W+ c #2E9EAD", +"X+ c #3BB4C4", +"Y+ c #3CB9CB", +"Z+ c #38B6C9", +"`+ c #2692AD", +" @ c #C1D8FD", +".@ c #F4F9FF", +"+@ c #F1F7FF", +"@@ c #EEF5FE", +"#@ c #EAF3FE", +"$@ c #E7F1FE", +"%@ c #E4F0FE", +"&@ c #E0EDFE", +"*@ c #DBEBFD", +"=@ c #D5E7FD", +"-@ c #CFE3FD", +";@ c #CCE1FC", +">@ c #C5DEFC", +",@ c #BFDAFB", +"'@ c #B9D6FB", +")@ c #AED0FA", +"!@ c #A6CBF9", +"~@ c #A1C8F9", +"{@ c #9AC3F7", +"]@ c #98C3F8", +"^@ c #588BDD", +"/@ c #0F626C", +"(@ c #2694A3", +"_@ c #33ACBD", +":@ c #33B0C3", +"<@ c #32B0C0", +"[@ c #1D9AB6", +"}@ c #3D8D9D", +"|@ c #BCD5FD", +"1@ c #F3F8FF", +"2@ c #F0F6FE", +"3@ c #ECF4FE", +"4@ c #EAF2FE", +"5@ c #E6F0FE", +"6@ c #E1EEFE", +"7@ c #DDEBFD", +"8@ c #D7E8FD", +"9@ c #D2E5FD", +"0@ c #C8E0FC", +"a@ c #C2DCFB", +"b@ c #B3D3FA", +"c@ c #A5CAF8", +"d@ c #9FC6F8", +"e@ c #9DC5F7", +"f@ c #97C2F7", +"g@ c #91BEF6", +"h@ c #5689DB", +"i@ c #0E6069", +"j@ c #218E9D", +"k@ c #2CA4B5", +"l@ c #2CA8BA", +"m@ c #26A2B7", +"n@ c #1D90AD", +"o@ c #B8D2FC", +"p@ c #EBF3FE", +"q@ c #E8F1FE", +"r@ c #DBEAFD", +"s@ c #D4E6FD", +"t@ c #CBE1FC", +"u@ c #C4DDFB", +"v@ c #AACDF9", +"w@ c #9FC6F7", +"x@ c #99C3F6", +"y@ c #95C0F6", +"z@ c #91BDF6", +"A@ c #8DBBF5", +"B@ c #5286D7", +"C@ c #0C5C65", +"D@ c #1B8897", +"E@ c #249BAD", +"F@ c #249EB0", +"G@ c #1A97B1", +"H@ c #3F90A6", +"I@ c #B2CFFC", +"J@ c #EDF4FE", +"K@ c #E7F0FE", +"L@ c #E3EFFD", +"M@ c #DEECFD", +"N@ c #DAE9FD", +"O@ c #CEE2FC", +"P@ c #C5DDFB", +"Q@ c #A9CDF8", +"R@ c #9EC5F7", +"S@ c #9CC4F7", +"T@ c #9BC3F7", +"U@ c #92BEF5", +"V@ c #8CBAF5", +"W@ c #86B6F4", +"X@ c #4E83D4", +"Y@ c #0A5761", +"Z@ c #177F90", +"`@ c #1C91A3", +" # c #1D96A8", +".# c #1A88A7", +"+# c #AFCDFC", +"@# c #E9F2FE", +"## c #E0EDFD", +"$# c #DBE9FD", +"%# c #D1E4FC", +"&# c #AFCFF9", +"*# c #9DC4F7", +"=# c #98C2F6", +"-# c #95C0F5", +";# c #91BDF5", +"># c #8BB9F4", +",# c #85B5F3", +"'# c #7EB1F2", +")# c #4B80D1", +"!# c #08525D", +"~# c #127789", +"{# c #168798", +"]# c #0F86A1", +"^# c #3C8FA5", +"/# c #AACAFC", +"(# c #E2EEFD", +"_# c #D8E9FD", +":# c #D3E5FC", +"<# c #CFE3FC", +"[# c #C0DAFB", +"}# c #A3C8F7", +"|# c #9EC5F6", +"1# c #9DC4F6", +"2# c #99C2F6", +"3# c #97C1F5", +"4# c #8AB8F4", +"5# c #84B4F3", +"6# c #76ABF1", +"7# c #467CCD", +"8# c #07535E", +"9# c #0F7281", +"0# c #0F7B90", +"a# c #0F85A4", +"b# c #A6C7FC", +"c# c #E2EEFE", +"d# c #D6E6FC", +"e# c #CCE1FB", +"f# c #A0C6F6", +"g# c #9AC3F6", +"h# c #96C0F5", +"i# c #92BDF4", +"j# c #8AB8F3", +"k# c #84B3F2", +"l# c #7DB0F1", +"m# c #75AAF0", +"n# c #6DA4EF", +"o# c #4177C8", +"p# c #075765", +"q# c #0B6A7B", +"r# c #09758E", +"s# c #3893AD", +"t# c #A2C4FC", +"u# c #E4EFFE", +"v# c #D5E5FC", +"w# c #CEE2FB", +"x# c #BCD7FA", +"y# c #98C0F5", +"z# c #93BDF4", +"A# c #8EBAF3", +"B# c #85B4F2", +"C# c #7DAFF1", +"D# c #76ABF0", +"E# c #6DA4EE", +"F# c #659EE8", +"G# c #3C72C3", +"H# c #044F61", +"I# c #076376", +"J# c #0D7998", +"K# c #9DC1FB", +"L# c #DEEBFD", +"M# c #D8E7FC", +"N# c #D3E4FC", +"O# c #BFD9FA", +"P# c #A7CAF7", +"Q# c #9FC5F6", +"R# c #9CC3F5", +"S# c #94BDF4", +"T# c #8EB9F3", +"U# c #7FAFF1", +"V# c #74A9EF", +"W# c #6BA2ED", +"X# c #659DE8", +"Y# c #5C96E1", +"Z# c #376DBE", +"`# c #335F69", +" $ c #0F5F77", +".$ c #388DA1", +"+$ c #9AC0FB", +"@$ c #D5E6FC", +"#$ c #CAE0FB", +"$$ c #BAD5F9", +"%$ c #AACCF7", +"&$ c #A6C9F7", +"*$ c #A4C8F6", +"=$ c #99C1F5", +"-$ c #92BCF3", +";$ c #88B6F2", +">$ c #80B0F1", +",$ c #77AAEF", +"'$ c #659CE7", +")$ c #5C95E0", +"!$ c #548DD9", +"~$ c #3068B8", +"{$ c #89B6F9", +"]$ c #C5DDFA", +"^$ c #BDD8F9", +"/$ c #B4D2F9", +"($ c #AFCFF8", +"_$ c #ACCDF7", +":$ c #A9CBF7", +"<$ c #A4C7F6", +"[$ c #9EC3F5", +"}$ c #8DB8F2", +"|$ c #85B2F1", +"1$ c #7AABF0", +"2$ c #6EA3EE", +"3$ c #5B93DF", +"4$ c #538CD7", +"5$ c #4B84D0", +"6$ c #2B63B3", +"7$ c #6095E6", +"8$ c #6095E5", +"9$ c #5E93E4", +"0$ c #5C92E3", +"a$ c #5C91E2", +"b$ c #5A8FE0", +"c$ c #598EDF", +"d$ c #578CDD", +"e$ c #558ADB", +"f$ c #5388D9", +"g$ c #4F84D5", +"h$ c #4D82D3", +"i$ c #4A7FD0", +"j$ c #467CCC", +"k$ c #4076C7", +"l$ c #3D73C4", +"m$ c #386EBF", +"n$ c #3369BA", +"o$ c #2D65B5", +"p$ c #2961B1", +"q$ c #225AA7", +" ", +" . + ", +" @ # $ % ", +" & * = - ; > ", +" , ' ) ! ~ { ] ^ ", +" / ( _ : < [ } | 1 2 3 ", +" 4 5 6 7 8 9 0 a b c d e f ", +" g h i j k l m n o p q r s t u v ", +" w x y z A B C D E F G H I J K L M N ", +" O P Q z R S T U V W X Y Z ` ...+.@.#.$.%. ", +" &.*.=.R B -.U ;.>.,.'.).!.~.{.].^./.(._.:.<.[. ", +" }.|.1.2.-.3.4.>.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i. ", +" j.k.l.m.n.o.4.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F. ", +" G.H.G.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+ ", +" *+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+ ", +" 9+-+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+ ", +" A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+Z+`+ ", +" @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@ ", +" |@1@2@3@4@5@6@7@8@9@-@0@a@b@c@d@e@{@f@g@h@i@j@k@l@m@n@ ", +" o@1@@@p@q@%@6@r@s@9@t@u@v@w@w@e@x@y@z@A@B@C@D@E@F@G@H@ ", +" I@2@J@p@K@L@M@N@s@O@P@Q@R@R@S@T@y@U@V@W@X@Y@Z@`@ #.# ", +" +#+@J@@#5@##$#=@%#t@&#S@R@*#=#-#;#>#,#'#)#!#~#{#]#^# ", +" /#2@p@K@(#M@_#:#<#[#}#|#1#2#3#;#4#5#'#6#7#8#9#0#a# ", +" b#@@p@K@c#7@d#%#e#&#f#1#g#h#i#j#k#l#m#n#o#p#q#r#s# ", +" t#J@@#u###N@v#w#x#}#f#1#y#z#A#B#C#D#E#F#G#H#I#J# ", +" K#J@q@(#L#M#N#O#P#}#Q#R#S#T#B#U#V#W#X#Y#Z#`# $.$ ", +" +$p@5@M@@$#$$$%$&$*$Q#=$-$;$>$,$W#'$)$!$~$ ", +" {$%#e#]$^$/$($_$:$<$[$S#}$|$1$2$'$3$4$5$6$ ", +" 7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$ ", +" ", +" ", +" "}; diff --git a/econtrol/locale/hu.po b/econtrol/locale/hu.po new file mode 100755 index 0000000..d408f3d --- /dev/null +++ b/econtrol/locale/hu.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Ez az alkalmazás az asztal-ikonok beállításait módosítja" + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Ez az alkalmazás a színösszeállítást módosítja" + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Ez az alkalmazás a képernyőkímélő beállításait módosítja" + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "Ez az alkalmazás az ablakkezelő színeit és viselkedését módosítja" + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Ez az alkalmazás az egér és billentyűzet beállításait módosítja" + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "Ez az alkalmazás segít egy új program telepítésében" + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "Ez az alkalmazás a rendszer időt módosítja" + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Ez az alkalmazás a panel beállításait módosítja" + +#: econtrol.cpp:3870 +#: econtrol.cpp:3894 +msgid "Control panel" +msgstr "Vezérlőpult" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&Fájl" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Kilépés" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "Segítsé&g" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "M&agamról" + +#: econtrol.cpp:3906 +msgid "Welcome to the control panel. Here you can setup most things on your computer." +msgstr "Üdvözöllek a vezérlőpultban. Itt módosíthatod felhasználói felületed beállításait." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Ikonok" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Ikon beállítások" + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Színek" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Szín beállítások" + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Képernyő- kímélő" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Képernyőkímélő beállításai" + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Ablakkezelő" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Ablakkezelő beállításai" + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Felhasználói felület" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Felhasználói felület beállításai" + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Új program telepítése" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Program telepítése" + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Dátum és idő" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Dátum és idő beállítások" + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Panel" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Panel beállítások" + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Kész" + diff --git a/econtrol/locale/id.po b/econtrol/locale/id.po new file mode 100755 index 0000000..36e481e --- /dev/null +++ b/econtrol/locale/id.po @@ -0,0 +1,193 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: econtrol 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 202-11-29 13:52+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Utilitas konfigurasi ini menetapkan ikon di desktop." + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Utilitas konfigurasi ini menetapkan warna global." + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Utilitas konfigurasi ini menetapkan screensaver." + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "Utilitas konfigurasi ini menetapkan warna dan perilaku window manager." + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Utilitas konfigurasi ini menetapkan parameter untuk sistem window." + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "" +"Utilitas konfigurasi ini menolong anda menginstallkan perangkat lunak baru." + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "" +"Utilitas konfigurasi ini menunjukkan dan menetapkan waktu dan tanggal " +"komputer." + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Utilitas konfigurasi ini menetapkan perilaku panel." + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "Panel kontrol" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&File" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Keluar" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "&Pertolongan" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "&Tentang" + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +"Selamat datang di panel kontrol. Disini anda dapat men-setup hal-hal " +"tertentu di komputer anda." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Ikon" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Seting ikon." + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Warna" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Seting warna" + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Screen saver" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Konfigurasi screensaver." + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Window manager" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Seting window manager." + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Tampilan" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Seting tampilan." + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Install perangkat lunak baru" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Instalasi perangkat lunak." + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Jam dan tanggal" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Seting jam dan tanggal." + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Panel" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Konfigurasi panel." + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Siap" + +#~ msgid "About Control panel" +#~ msgstr "Tentang Panel kontrol" + +#~ msgid "&Close" +#~ msgstr "&Tutup" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +#~ "Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +#~ "atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +#~ "Public License, versi 2 atau versi yang lebih baru. Program ini " +#~ "didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +#~ "tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General " +#~ "Public License untuk lebih jelasnya. Anda seharusnya telah menerima " +#~ "salinan GNU General Public License bersama dengan program ini; jikat " +#~ "tidak, silahkan minta ke Free Software Foundation, Inc., 675 Mass Ave, " +#~ "Cambridge, MA 02139, USA." + +#~ msgid "This config utility shows system information." +#~ msgstr "Utilitas konfigurasi ini menunjukkan informasi sistem." + +#~ msgid "This config utility sets printer." +#~ msgstr "Utilitas konfigurasi ini menetapkan printer." + +#~ msgid "Printers" +#~ msgstr "Printer" + +#~ msgid "Printers management." +#~ msgstr "Pengelolaan printer." + +#~ msgid "Hardware center" +#~ msgstr "Pusat perangkat keras" + +#~ msgid "Hardware center." +#~ msgstr "Pusat perangkat keras." diff --git a/econtrol/locale/messages.pot b/econtrol/locale/messages.pot new file mode 100755 index 0000000..cd1926f --- /dev/null +++ b/econtrol/locale/messages.pot @@ -0,0 +1,143 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "" + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "" + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "" + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "" + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "" + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "" + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "" + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "" + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "" + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "" + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "" + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "" + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "" + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "" + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "" + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "" + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "" + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "" diff --git a/econtrol/locale/ru.po b/econtrol/locale/ru.po new file mode 100755 index 0000000..bd9774b --- /dev/null +++ b/econtrol/locale/ru.po @@ -0,0 +1,168 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr " " + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr " " + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr " " + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr " " + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr " , , " + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr " " + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr " " + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr " " + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr " " + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr " " + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +" , ţ " +"." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr " " + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr " " + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr " " + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr " " + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr " " + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr " " + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr " " + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr " " + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr " " + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr " " + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "" + +#~ msgid "About Control panel" +#~ msgstr " " + +#~ msgid "&Close" +#~ msgstr "" + +#~ msgid "This config utility shows system information." +#~ msgstr " " + +#~ msgid "This config utility sets printer." +#~ msgstr " " + +#~ msgid "Printers" +#~ msgstr "" + +#~ msgid "Printers management." +#~ msgstr " " + +#~ msgid "Hardware center" +#~ msgstr "" + +#~ msgid "Hardware center." +#~ msgstr " " diff --git a/econtrol/locale/sk.po b/econtrol/locale/sk.po new file mode 100755 index 0000000..6cb7db5 --- /dev/null +++ b/econtrol/locale/sk.po @@ -0,0 +1,192 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: econtrol 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Táto konfiguračná utilita nastavuje ikony na ploche." + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Táto konfiguračná utilita umožňuje nastaviť globálne farby." + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Táto konfiguračná utilita nastavuje šetrič obrazovky." + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "" +"Táto konfiguračná utilita nastavuje farby a správanie sa manažéra okien." + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Táto konfiguračná utilita nastavuje parametre window systému." + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "Táto konfiguračná utilita pomáha inštalovať nový softvér." + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "Táto konfiguračná utilita zobrazuje a nastavuje čas a dátum." + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Táto konfiguračná utilita nastavuje správanie sa panelu." + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "Kontrólny panel" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&Súbor" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Koniec" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "&Nápoveda" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "&O programe" + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +"Vitajte v kontrólnom paneli. Môžete tu nastaviť vačšinu vecí na vašom " +"počítači." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Ikony" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Nastavenie ikôn." + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Farby" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Nastavenie farieb." + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Šetrič obrazovky" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Konfigurácia šetriča obrazovky." + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Manažér okien" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Nastavenie manažéra okien." + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Obrazovka" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Nastavenie obrazovky." + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Inštalovať nový softvér" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Inštalácia softvéru." + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Čas a dátum" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Nastavenie času a dátumu." + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Panel" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Konfigurácia panelu." + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Pripravený" + +#~ msgid "About Control panel" +#~ msgstr "O Kontrolnom paneli" + +#~ msgid "&Close" +#~ msgstr "&Zavrieť" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +#~ "Tento program je voľný softvér, môžete ho redistribuovať a/alebo " +#~ "modifikovať podľa podmienok licencie GNU General Public License " +#~ "publikovanej nadáciou the Free Software Foundation, buď verzie 2 tejto " +#~ "licencie, alebo (podľa vášho uváženia) ľubovoľnej novšej verzie. Tento " +#~ "program je distribuovaný v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK " +#~ "ZÁRUKY; dokonca bez 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 " +#~ "Licence along with this program; if not, write to the Free Software " +#~ "Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" + +#~ msgid "This config utility shows system information." +#~ msgstr "Táto konfiguračná utilita zobrazuje systémové informácie." + +#~ msgid "This config utility sets printer." +#~ msgstr "Táto konfiguračná utilita nastavuje tlačiarne." + +#~ msgid "Printers" +#~ msgstr "Tlačiarne" + +#~ msgid "Printers management." +#~ msgstr "Správa tlačiarní." + +#~ msgid "Hardware center" +#~ msgstr "Hardvérové centrum" + +#~ msgid "Hardware center." +#~ msgstr "Hardvérové centrum." diff --git a/econtrol/locale/sr.po b/econtrol/locale/sr.po new file mode 100755 index 0000000..ab08c54 --- /dev/null +++ b/econtrol/locale/sr.po @@ -0,0 +1,191 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ECONTROL 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 2002-11-27 04:39+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Овај конфигурациони алат подешава иконе на десктопу." + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Овај алат за конфигурисанје сетује глобалне боје." + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Овај алат за конфигурисање служи за подешавање скринсејвера." + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "Овај конфигурациони алат подешава боје и понашање менаџера прозора." + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Овај конфигурациони алат подешава параметре система прозора." + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "Овај конфигурациони алат помаже Вам да инсталирате нове програме." + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "Овај конфигурациони алат приказује и сетује време и датум рачунара." + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Овај конфигурациони алат служи за подешавање понашања панела." + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "Контролни панел" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&Фајл" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Крај" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "По&моћ" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "&О..." + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +"Добродошли у контролни панел. Овде можете да подесите скоро све ствари Вашег " +"рачунара." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Иконе" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Подешавање икона." + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Боје" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Подешавања боја." + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Скрин сејвер" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Подешавање скрин сејвера." + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Менаџер прозора" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Подешавање менадџера прозора." + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Дисплеј" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Подешавања дисплеја" + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Инсталирај нови софтвер" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Инсталирање софтвера." + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Време и датум" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Подешавање времена и датума." + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Панел" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Конфигурисање панела." + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Спреман" + +#~ msgid "About Control panel" +#~ msgstr "О контролном панелу" + +#~ msgid "&Close" +#~ msgstr "&Затвори" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Овај програм је базиран на FLTK пројекту (www.fltk.org). Овај програм је " +#~ "слободан софтвер, можете га редистрибуирати и/или модификовати под " +#~ "условима постављеним GNU General Public лиценцом објављеном од стране " +#~ "Free Software Foundation, било да је то верзија 2 Лиценце, или (опционо) " +#~ "било која каснија верзија. Овај програм је дистрибуиран у нади да ће бити " +#~ "употребљив, али БЕЗ ИКАКВИХ ГАРАНЦИЈА; чак без имплицитне гаранције " +#~ "ПРОДАЈЕ РОБЕ или ПОГОДНОСТИ ЗА НЕКУ СПЕЦИФИЧНУ НАМЕНУ. Погледајте \"GNU " +#~ "General Public License\" за више детаља. Требало би да сте добили копију " +#~ "\"GNU General Public License\" лиценце заједно са овим програмом; ако " +#~ "нисте, пишите на Free Software Foundation, Inc., 675 Mass Ave, Cambridge, " +#~ "MA 02139, USA." + +#~ msgid "This config utility shows system information." +#~ msgstr "Овај алат за конфигурисање приказује системске информације." + +#~ msgid "This config utility sets printer." +#~ msgstr "Овај конфигурациони алат подешава штампач." + +#~ msgid "Printers" +#~ msgstr "Штампачи" + +#~ msgid "Printers management." +#~ msgstr "Менаџмент штампача." + +#~ msgid "Hardware center" +#~ msgstr "Хардвер центар" + +#~ msgid "Hardware center." +#~ msgstr "Хардвер центар." diff --git a/ede.spec.in b/ede.spec.in new file mode 100755 index 0000000..5d53292 --- /dev/null +++ b/ede.spec.in @@ -0,0 +1,76 @@ +# +# $Id: ede.spec.in 1652 2006-06-07 19:37:51Z karijes $ +# +# Part of Equinox Desktop Environment (EDE). +# Copyright (c) 2000-2006 EDE Authors. +# +# This program is licenced under terms of the +# GNU General Public Licence version 2 or newer. +# See COPYING for details. + + +# Note that this is NOT a relocatable package +# rpm -bb ede.spec ; /usr/src/RPM/SPECS + +%define name ede +%define ver @EDE_VERSION@ +%define rel 1 +%define localstatedir /var/lib +%define pakdir %{name}-%{ver} + +Summary: The core programs for the Equinox Desktop Environment. +Name: %{name} +Version: %ver +Release: %rel +Copyright: GPL +Group: X11/EDE/Base +Source: %{name}-%{ver}.tar.gz +BuildRoot: /var/tmp/%{name}-%{version}-root +URL: http://sourceforge.net/projects/ede +Prereq: /sbin/install-info +Requires: efltk-devel >= 2.0.4 + +%description +Equinox Desktop Environment (EDE) is desktop environment - the piece of +software that enables you to launch applications in a convenient way, +show what windows you have opened, manages icons and background of your +desktop, etc. This core package provides panel with tasklist, clock, +load status; icon manager that take care of your icons on background, +control panel for easy access to your settings, helpbook for reading +documentation, color configuration, panel configuration, display configuration +utility, menu editor, icons configuration, tips, time/date and timezone +configuration, fast file search tool and of course window manager that manages +your windows with config utility. + +%prep +%setup -q -n %{pakdir} + +%build + +./build.gcc --prefix=%{_prefix} + +%install +[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{_prefix} install + +%clean +[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT + +%post +#/sbin/ldconfig + +%postun +#/sbin/ldconfig + +%files +%doc AUTHORS COPYING ChangeLog NEWS README +%defattr (-, root, root) +%{_bindir}/* +#%{_sysconfdir}/ +%{_datadir}/locale/*/*/* +%{_datadir}/ede/* +%{_datadir}/ede/.ede/* + +%changelog + diff --git a/edeconf.h.in b/edeconf.h.in new file mode 100755 index 0000000..bc5b9ec --- /dev/null +++ b/edeconf.h.in @@ -0,0 +1,82 @@ +/* edeconf.h.in. Generated from configure.in by autoheader. */ + +/* Define 1 if you want native language support */ +#undef ENABLE_NLS + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ALSA + +/* Define to 1 if you have the header file and it defines stime() function. */ +#undef HAVE_STIME + +/* Define 1 if XWindows has Xutf extension. */ +#undef HAVE_X11_UTF_TEXT_PROP + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Default installation place. Overwrite if you like */ +#undef PREFIX + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Short version number */ +#undef VERSION + +/* Define to 1 if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING diff --git a/edelib2/Config.cpp b/edelib2/Config.cpp new file mode 100755 index 0000000..6a1a123 --- /dev/null +++ b/edelib2/Config.cpp @@ -0,0 +1,883 @@ +/* + * $Id$ + * + * edelib::Config - library for configuration management + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +/*#include "fl_internal.h" + +#include +#include +#include +#include +#include +#include */ + +#include "Config.h" +#include + +#include "NLS.h" +#include "../edeconf.h" +#include "Util.h" + +/*#include +#include */ + +#include +/*#include +#include */ +#include + +/*#ifdef _WIN32_WCE +#include +#endif +//#include + +#ifdef _WIN32 + +# include +# include +# include +# define access(a,b) _access(a,b) +# define mkdir(a,b) _mkdir(a) +# define R_OK 4 + +#else + +# include + +#endif *//* _WIN32 */ + + +#define LOCALE_TO_C() \ + char *locale = setlocale(LC_ALL, ""); \ + char *restore_locale = locale ? strdup(locale) : strdup("C"); \ + setlocale(LC_ALL, "C") + +#define RESTORE_LOCALE() \ + setlocale(LC_ALL, restore_locale); \ + free(restore_locale) + +// From Enumerations.h +#ifdef _WIN32 +# undef slash +# define slash '\\' +#else +# undef slash +# define slash '/' +#endif +// End Enumerations.h + +using namespace fltk; +using namespace edelib; + + + +// GLOBAL NOTE: asprintf() is a GNU extension - if it's unsupported on some +// platforms, use our tasprintf() instead (in Util.h) + + + + + + +// vec_from_string() - similar to explode() in PHP or split() in Perl +// adapted from Fl_String_List to use vector +std::vector vec_from_string(const char *str, const char *separator) +{ + if(!str) return std::vector (); + + uint separator_len = strlen(separator); + const char *ptr = str; + const char *s = strstr(ptr, separator); + std::vector retval; + if(s) { + do { + uint len = s - ptr; + if (len) { + retval.push_back(strndup(ptr,len)); + } else { + retval.push_back(NULL); + } + + ptr = s + separator_len; + s = strstr(ptr, separator); + } + while(s); + + if(*ptr) { + retval.push_back(strdup(ptr)); + } + } else { + retval.push_back(strdup(ptr)); + } + return retval; +} + + +// Get filename with full path of config file +// TODO: mergeing of system and user config +char* Config::find_file(const char *filename, bool create, int mode) +{ + static char path[PATH_MAX]; + + if(is_path_rooted(filename)) { + strncpy(path, filename, PATH_MAX); + return (create || !access(path, R_OK)) ? path : 0; + } + if(mode==USER) { + const char *cptr = getenv("HOME"); + char *ret=0; + if(cptr) { + snprintf(path, PATH_MAX-1, "%s%c%s%c%s", cptr, slash, ".ede", slash, filename); + if(create || !access(path, R_OK)) { + ret = path; + } + return ret; + } + return 0; + } else { + snprintf(path, sizeof(path)-1, "%s%c%s", get_sys_dir(), slash, filename); + return (create || !access(path, R_OK)) ? path : 0; + } +} + + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +#define S(item) ((Config_Section*)item) + +Config::Config(const char *vendor, const char *application, int mode) +: Config_Section("","",0) +{ + m_vendor=m_app=m_filename=NULL; + m_cur_sec = 0; + m_changed=false; + m_error = 0; + + if(vendor) m_vendor = strdup(vendor); + if(application) m_app = strdup(application); + + if(strlen(m_app) > 0) + { + const char *file=0; + char tmp[PATH_MAX]; +#ifdef _WIN32 + if(mode==SYSTEM) + snprintf(tmp, sizeof(tmp)-1, "%s%c%s.conf", m_app, slash, m_app); + else +#endif + snprintf(tmp, sizeof(tmp)-1, "apps%c%s%c%s.conf", slash, m_app, slash, m_app); + file = find_file(tmp, true, mode); + if(file) + { + bool ret = make_path_for_file(file); + if(ret) + { + m_filename = strdup(file); + read_file(true); + } else + m_error = CONF_ERR_FILE; + } else + m_error = CONF_ERR_FILE; + } else + m_error = CONF_ERR_FILE; +} + +Config::Config(const char *filename, bool read, bool create) +: Config_Section("","",0) +{ + m_vendor=m_app=m_filename=NULL; + + if(filename) m_filename = strdup(filename); else m_filename = strdup(""); +// TODO: shouldn't we just return false if there's no filename?? +// use case: creating a new file (nonexistant) + + m_error = 0; + m_cur_sec = 0; + m_changed=false; + + if(create && strlen(m_filename)>0) { + make_path_for_file(m_filename); + } + + if(read) read_file(create); +} + +Config::~Config() +{ + flush(); + clear(); + if(m_filename) free(m_filename); + if(m_vendor) free(m_vendor); + if(m_app) free(m_app); +} + +/* get error string associated with error number */ +const char *Config::strerror(int error) +{ + switch(error) + { + case CONF_SUCCESS: return _("Successful operation"); + case CONF_ERR_FILE: return _("Could not access config file"); + case CONF_ERR_SECTION: return _("Config file section not found"); + case CONF_ERR_KEY: return _("Key not found in section"); + case CONF_ERR_MEMORY: return _("Could not allocate memory"); + case CONF_ERR_NOVALUE: return _("Invalid value associated with key"); + default: return _("Unknown error"); + } +} + +bool Config::read_file(bool create) +{ + bool error = false; + if(m_filename && strlen(m_filename)<1) { + m_error = CONF_ERR_FILE; + return false; + } + + if(create && !(access(m_filename, F_OK)==0)) { + FILE *f = fopen(m_filename, "w+"); + if(f) { + fputs(" ", f); + fclose(f); + } else error=true; + } + + if(error) { + m_error = CONF_ERR_FILE; + return false; + } + + // If somebody calls this function two times, we + // need to clean earlier section list... + clear(); + + ///// + struct stat fileStat; + stat(m_filename, &fileStat); + uint size = fileStat.st_size; + if(size == 0) { + m_error = 0; + return true; + } + + FILE *fp = fopen(m_filename, "r"); + if(!fp) { + //fprintf(stderr, "fp == 0: %s\n", m_filename); + m_error = CONF_ERR_FILE; + return false; + } + + uint bsize = size*sizeof(char); + char *buffer = (char*)malloc(bsize+1); + buffer[bsize] = 0; + if(!buffer) { + m_error = CONF_ERR_MEMORY; + return false; + } + + uint readed = fread(buffer, 1, size, fp); + if(readed <= 0) { + free((char*)buffer); + fclose(fp); + m_error = CONF_ERR_FILE; + return false; + } + fclose(fp); + + /* old parser + String_List strings(buffer, "\n"); + + free((char*)buffer); + + Config_Section *section = this; + for(uint n=0; n=0) { + line = strings[n].sub_str(comment_pos, strings[n].length()-comment_pos).trim(); + } else { + line = strings[n].trim(); + } + + if(line[0] == '[') + { + int pos = line.pos(']'); + if(pos>=0) + { + String sec(line.sub_str(1, pos-1)); + section = create_section(sec); + } + } + else if(line[0] != '#') + { + int pos = line.pos('='); + if(pos==-1) pos = line.pos(':'); + if(pos>=0) { + String key(line.sub_str(0, pos)); + pos++; + String value(line.sub_str(pos, line.length()-pos)); + section->add_entry(key, value); + } + } + } + */ + + // new parser by Vedran + // I like writing parsers + // too bad others don't like me writing parsers... + // TODO: i did some stupid things here for debugging, need to check + + int pos=0; + bool comment, iskey, issection; + const uint maxlen=4096; + char key[maxlen], value[maxlen], sectionname[maxlen]; + key[0]='\0'; value[0]='\0'; sectionname[0]='\0'; + Config_Section *section = this; + + do { + int c=buffer[pos]; + if ((c == '\n') || (c == '\0')) { + comment=false; iskey=true; issection=false; + wstrim(sectionname); + wstrim(key); + wstrim(value); + if (strlen(sectionname) > 0) + section = create_section(sectionname); + if (strlen(key) > 0) + section->add_entry(key,value); + key[0]='\0'; value[0]='\0'; sectionname[0]='\0'; + } + else if (c == '#') + comment = true; + else if (comment == false) { + if (c == '[') + issection = true; + else if (c == ']') + issection = false; + else if ((c == '=') || (c == ':')) + iskey = false; + else { + if (issection) + if (maxlen>strlen(sectionname)+strlen((const char*) &c)) + strcat(sectionname, (const char*) &c); + else if (iskey) + if (maxlen>strlen(key)+strlen((const char*) &c)) + strcat(key, (const char*) &c); + else + if (maxlen>strlen(value)+strlen((const char*) &c)) + strcat(value, (const char*) &c); + } + } + pos++; + } while (buffer[pos] != '\0'); + + m_error = 0; + m_changed=false; + return true; +} + +bool Config::flush() +{ + if(!m_changed) return true; + if(strlen(m_filename) < 1) return false; + + FILE *file = fopen(m_filename, "w+"); +// if(!file) +// fl_throw(::strerror(errno)); + + LOCALE_TO_C(); + + fprintf(file, "# EDE INI Version %s\n", PACKAGE_VERSION); + if(m_vendor && strlen(m_vendor)>0) fprintf(file, "# Vendor: %s\n", m_vendor); + if(m_app && strlen(m_app)>0) fprintf(file, "# Application: %s\n", m_app); + + // Flush sections + write_section(0, file); + + RESTORE_LOCALE(); + + fclose(file); + + m_error = 0; + m_changed=false; + return true; +} + + +Config_Section *Config::create_section(const char* name) +{ + if(strlen(name)<1) return 0; + + Config_Section *section = find_section(name, true); + if(section) return section; + + char *lastptr = strrchr(name,'/'); // int pos = name.rpos('/')+1; + int pos; + if(lastptr) { + pos = lastptr-name + 1; + } else { + section = new Config_Section(name, "", 0); + sections().push_back(section); + return section; + } + + //char* sec_name(name.sub_str(pos, name.length()-pos)); + char *sec_name = strndup(name+pos, strlen(name)-pos); + //char* sec_path(name.sub_str(0, pos)); + char *sec_path = strndup(name, pos); + + Config_Section *parent = find_section(sec_path, false); + Config_Sections *list = §ions(); + + if(!parent) { + // Fl_String_List sections; + std::vector sections = vec_from_string(sec_path, "/"); + + char path[PATH_MAX]; + path[0]='\0'; + for(uint n=0; nsections(); + + parent = new Config_Section(sections.at(n), path, parent); + list->push_back(parent); + + if (PATH_MAX>strlen(path)+strlen(sections.at(n))+1) { + strcat(path, sections.at(n)); + strcat(path, "/"); + } + } + } + + if(parent) list = &parent->sections(); + + section = new Config_Section(sec_name, sec_path, parent); + list->push_back(section); + + free(sec_name); free(sec_path); + m_error = 0; + return section; +} + +Config_Section *Config::find_section(const char *path, bool perfect_match) const +{ + if(!path || !*path) return 0; + + std::vector sections = vec_from_string(path, "/"); + + if(sections.size()==0) + return find(path, false); + + Config_Section *section = (Config_Section *)this; + for(uint n=0; nfind(sections.at(n), false); + if(!tmp) { + if(perfect_match) + return 0; + else + break; + } + section = tmp; + } + return section; +} + +void Config::remove_key(const char *section, const char *key) +{ + if(key) { + Config_Section *sect = find_section(section, true); + if(sect->remove_entry(key)) { + m_error = 0; + m_changed = true; + return; + } + } + m_error = CONF_ERR_KEY; +} + +// finding and removing stuff from deque +void sectremove(Config_Sections sects, Config_Section *sect) +{ + for (uint n=0; nparent()) { + sectremove(sect->parent()->sections(),sect); + } else { + sectremove(sections(),sect); + } + delete sect; + m_error = 0; + m_changed = true; + return; + } + m_error = CONF_ERR_SECTION; +} + +/* + * Read functions + */ + +int Config::_read_string(Config_Section *s, const char *key, char *ret, const char *def_value, int size) +{ + if(!key || !s) { + if(def_value) strncpy(ret, def_value, size); + else ret[0] = '\0'; + m_error = (!key ? CONF_ERR_KEY : CONF_ERR_SECTION); + return m_error; + } + + char *val = s->find_entry(key); + if(val) { + int len = strlen(val); // convert from unsigned... and now: + len = (lenfind_entry(key); + if(val && strlen(val)>0) + { + ret = strdup(val); + return (m_error = CONF_SUCCESS); + } + free(val); + + if (def_value) ret = strdup(def_value); else ret=0; + m_error = CONF_ERR_KEY; + return m_error; +} + +/*int Config::_read_string(Config_Section *s, const char *key, Fl_String &ret, const char *def_value) +{ + if(!key || !s) { + ret = def_value; + m_error = !key ? CONF_ERR_KEY : CONF_ERR_SECTION; + return m_error; + } + + Fl_String *val = s->find_entry(key); + if(val) { + ret = (*val); + return (m_error = CONF_SUCCESS); + } + + ret = def_value; + return (m_error = CONF_ERR_KEY); +}*/ + +int Config::_read_long(Config_Section *s, const char *key, long &ret, long def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) + if (tmp[0]) ret=strtol(tmp, NULL, 10); else ret=def_value; + else + ret = def_value; + return m_error; +} + +int Config::_read_int(Config_Section *s, const char *key, int &ret, int def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + ret = atoi(tmp); + if ((errno == ERANGE) || (ret == 0 && strcmp(tmp,"0") != 0)) ret = def_value; + } else + ret = def_value; + return m_error; +} + +int Config::_read_float (Config_Section *s, const char *key, float &ret, float def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + LOCALE_TO_C(); + ret = (float)strtod(tmp, 0); + RESTORE_LOCALE(); + } else + ret = def_value; + return m_error; +} + +int Config::_read_double(Config_Section *s, const char *key, double &ret, double def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + LOCALE_TO_C(); + ret = strtod(tmp, 0); + RESTORE_LOCALE(); + } else + ret = def_value; + return m_error; +} + +int Config::_read_bool(Config_Section *s, const char *key, bool &ret, bool def_value) +{ + char* tmp; + if(_read_string(s, key, tmp, 0)) { + ret = def_value; + return m_error; + } + if ((strncasecmp(tmp,"true",4)==0) + || (strncasecmp(tmp,"yes",3)==0) + || (strncasecmp(tmp,"on",2)==0) + || (strcasecmp(tmp,"1")==0)) { + ret = true; + } else if((strncasecmp(tmp,"false",5)==0) + || (strncasecmp(tmp,"no",2)==0) + || (strncasecmp(tmp,"off",3)==0) + || (strcasecmp(tmp,"0")==0)) { + ret = false; + } else { + m_error = CONF_ERR_NOVALUE; + ret = def_value; + } + return m_error; +} + +int Config::_read_color(Config_Section *s, const char *key, Color &ret, Color def_value) +{ + char* tmp; + if(_read_string(s, key, tmp, 0)) { + ret = def_value; + return m_error; + } + + int r=0,g=0,b=0; + if(sscanf(tmp, "RGB(%d,%d,%d)", &r, &g, &b)!=3) { + ret = def_value; + return (m_error = CONF_ERR_NOVALUE); + } + ret = color(r,g,b); + return m_error; +} + +/* + * Write functions + */ + +/*int Config::_write_string(Config_Section *s, const char *key, const char *value) +{ + char* val(value); + return _write_string(s, key, val); +}*/ + +int Config::_write_string(Config_Section *s, const char *key, const char* value) +{ + if(!s) return (m_error = CONF_ERR_SECTION); + if(!key) return (m_error = CONF_ERR_KEY); + +/* This logic is now in add_entry, cause we can't pass around pointers into structure + + char *val = s->find_entry(key); + if(val) { + strncpy(val, value, strlen(value)); + } else */ + if (value) s->add_entry(key, value); else s->add_entry(key, ""); + + m_changed=true; + return (m_error=CONF_SUCCESS); +} + +int Config::_write_long(Config_Section *s, const char *key, const long value) +{ + return _write_string(s, key, tsprintf("%ld", value)); +} + +int Config::_write_int(Config_Section *s, const char *key, const int value) +{ + return _write_string(s, key, tsprintf("%d", value)); +} + +int Config::_write_float(Config_Section *s, const char *key, const float value) +{ + LOCALE_TO_C(); + char tmp[32]; snprintf(tmp, sizeof(tmp)-1, "%g", value); + RESTORE_LOCALE(); + return _write_string(s, key, tmp); +} + +int Config::_write_double(Config_Section *s, const char *key, const double value) +{ + LOCALE_TO_C(); + char tmp[32]; snprintf(tmp, sizeof(tmp)-1, "%g", value); + RESTORE_LOCALE(); + return _write_string(s, key, tmp); +} + +int Config::_write_bool(Config_Section *s, const char *key, const bool value) +{ + if(value) return _write_string(s, key, "1"); + return _write_string(s, key, "0"); +} + +int Config::_write_color(Config_Section *s, const char *key, const Color value) +{ + unsigned char r,g,b; + split_color(value, r,g,b); + return _write_string(s, key, tsprintf("RGB(%d,%d,%d)", r,g,b)); +} + +////////////////////////////////////// +////////////////////////////////////// +////////////////////////////////////// + +Config_Section::Config_Section(const char* name, const char* path, Config_Section *par) +: m_parent(par) +{ + m_name=strdup(name); + m_path=strdup(path); +} + +Config_Section::~Config_Section() +{ + free(m_name); + free(m_path); + clear(); +} + +void Config_Section::clear() +{ + for(uint n=0; n0) + fprintf(fp, "[%s%s]\n", path(), name()); + + for(uint n=0; n 0) { + for(int a=0; awrite_section(indent+2, fp); + } +} + +void Config_Section::add_entry(const char* key, const char* value) +{ + if(!key || strlen(key)<1) return; + if(!value) return; + + char *kvpair; + asprintf(&kvpair,"%s=%s",twstrim(key),twstrim(value)); + + // if key already exists, delete + bool found = false; + for (uint i=0; i +#include // TODO: port everything to char** +#include // TODO: port everything to char** + +#include +#include +#include + +#ifdef _WIN32_WCE +#include +#endif + +using namespace fltk; + + +namespace edelib { + + +/** + * \defgroup edelib::Config edelib::Config globals + */ +/*@{*/ + +/** + * Error codes for edelib::Config + */ +enum ConfErrors { + CONF_SUCCESS = 0, ///< successful operation + CONF_ERR_FILE, ///< trouble accessing config file or directory + CONF_ERR_SECTION, ///< requested section was not found + CONF_ERR_KEY, ///< requested key was not found + CONF_ERR_MEMORY, ///< memory allocation error + CONF_ERR_NOVALUE, ///< key found, but invalid value associated with it +}; + +/** List used for sections in Fl_Config_Section */ +//FIXME +//typedef Fl_Ptr_List Fl_Config_Sections; +typedef std::deque Config_Sections; + +/** Map used for entries in Fl_Config_Section */ +//FIXME +//typedef Fl_String_String_Map Fl_Config_Lines; +//this is not exactly compatible, but that's the best we can do... +typedef std::vector Config_Lines; + +/*@}*/ + +class Config; + +/** + * The configuration section. + * Represents one section in config (ini) file. + * @see edelib::Config + */ +class Config_Section +{ + friend class Config; +public: + Config_Section(const char* name, const char* path, Config_Section *par); + virtual ~Config_Section(); + + /** + * Destroys all sections and entries. + */ + virtual void clear(); + + /** + * Returns pointer to parent section, NULL for Fl_Config (root) + */ + Config_Section *parent() const { return m_parent; } + + /** + * Returns name of section, without path. + * @see path() + */ + const char* name() const { return m_name; } + + /** + * Returns path to section, without name. + * @see name() + */ + const char* path() const { return m_path; } + + /** + * Returns const reference to entry map. + */ + const Config_Lines &lines() const { return m_lines; } + + /** + * Returns reference to entry map. + */ + Config_Lines &lines() { return m_lines; } + + /** + * Returns const reference to section list. + */ + const Config_Sections §ions() const { return m_sections; } + + /** + * Returns reference to section list. + */ + Config_Sections §ions() { return m_sections; } + + /** + * Find section named 'name'. + * @param section_name name of section to find + * @param recursive set true to perform recursive search. + */ + Config_Section *find(const char *section_name, bool recursive=false) const; + +protected: + Config_Section *m_parent; + char *m_name, *m_path; + + Config_Lines m_lines; //Line map + Config_Sections m_sections; //Section list + + void write_section(int indent, FILE *fp) const; + + void add_entry(const char* key, const char* value); + bool remove_entry(const char* key); + char* find_entry(const char *key) const; +}; + +/** + * The configuration holder. This class maybe used very easily to + * store application settings to file. Either system wide or user specific, + * depending on config type. edelib::Config is derived edelib::Config_Section, please + * take look a look at functions it provides also. + * @see edelib::Config_Section + */ +class Config : public Config_Section { +public: + + /** + * Config file modes + */ + enum ConfigType { + USER=1, ///< User specific config file + SYSTEM ///< System wide config file + }; + + /** + * Creates/reads/writes app specific config file. + * + * LINUX:
    + * File is created in ($home)/.ede/apps/($application)/($application).conf + * Or ($prefix)/share/ede/apps/($application)/($application).conf + * + *
    WIN32:
    + * ($home)\Local Settings\.ede\apps\($application)/($application).conf + * Or ($common files)\($application)\($application).conf + * + * Location depends on ConfigType 'mode', USER or SYSTEM + * + * @param vendor aplication vendor, written down to file + * @param application name, written down to file + * @param mode which mode to use + */ + Config(const char *vendor, const char *application, int mode=USER); + + /** + * Access custom file in filesystem. + * + * @param filename path to config (ini) file. + * @param readfile if true, file is readed on constructor. I.e no need for read_file() + * @param createfile if true, file is created if it doesn't exists. + */ + Config(const char *filename, bool readfile=true, bool createfile=true); + + /** + * Destroys config + */ + virtual ~Config(); + + /** + * Finds config file, depending on mode. + * NOTE: User MUST NOT free returned pointer! + * + * LINUX:
    + * File is created in ($home)/.ede/apps/($application)/($application).conf + * Or ($prefix)/share/ede/apps/($application)/($application).conf + * + *
    WIN32:
    + * ($home)\Local Settings\.ede\apps\($application)/($application).conf + * Or ($common files)\($application)\($application).conf + * + * @param filename Relative filename, e.g. "myapp_config.ini" + * @param create if true, path is returned even if file is not found. Otherwise NULL if path not found. + * @param mode which mode to use + */ + static char *find_file(const char *filename, bool create=true, int mode=USER); + + + /** + * (re)read file. NOTE: Deletes current entries from this Fl_Config object. + * @param create if true, file is created if it doesn't exists. + * @see filename() + */ + bool read_file(bool create = true); + + /** + * Flush entries to file. + * Returns true on success. + * @see filename() + */ + bool flush(); + + /** Returns current filename. */ + const char* filename() const { return m_filename; } + /** Set new filename. You need to call read_file() to get new entries. */ + void filename(const char *filename) { strncpy(m_filename, filename, strlen(filename)); } + /** Set new filename. You need to call read_file() to get new entries. */ +// void filename(const Fl_String &filename) { m_filename = filename; } + + /** Returns current vendor name. */ + const char* vendor() const { return m_vendor; } + /** Set new vendor name. */ + void vendor(const char *vendor) { strncpy(m_vendor, vendor, strlen(vendor)); } + /** Set new vendor name. */ +// void vendor(const Fl_String &vendor) { m_vendor = vendor; } + + /** Returns current application name. */ + const char* application() const { return m_app; } + /** Set new application name. */ + void application(const char *app) { strncpy(m_app, app, strlen(app)); } + /** Set new application name. */ +// void application(const Fl_String &app) { m_app = app; } + + /** + * Returns true, if data changed. + * call flush() to sync changes to file + * @see flush() + */ + bool is_changed() const { return m_changed; } + + /** + * Set changed, forces flush() to write file. + * Even if it is not changed. + */ + void set_changed() { m_changed = true; } + + /** + * Returns last error happened. + */ + int error() const { return m_error; } + + /** + * Reset error, normally you don't need to call this. + */ + void reset_error() { m_error = 0; } + + /** + * Return string presentation for last happened error. + */ + const char *strerror() const { return Config::strerror(m_error); } + + /** + * Return error string, associated with 'errnum' + */ + static const char *strerror(int errnum); + + /** + * Create new section. You can pass full path as section name. + * For example: create_section("/path/to/my/section"); + * All nested sections are created automatically. + * + * Returns pointer to created section, NULL if failed. + */ +// Config_Section *create_section(const char *path) { char* tmp(path); return create_section(tmp); } + + /** + * Create new section. You can pass full path as section name. + * For example: create_section("/path/to/my/section"); + * All nested sections are created automatically. + * + * Returns pointer to created section, NULL if failed. + */ + Config_Section *create_section(const char* path); + + /** + * Find section. You can pass full path as section name. + * For example: find_section("/path/to/my/section"); + * + * Returns pointer to found section, NULL if not found. + * + * @param perfect_match is true, it returns NULL if no exact section found. Otherwise it returns last found section in path. + */ + Config_Section *find_section(const char *path, bool perfect_match=true) const; + + /** + * Return child sections of section specified 'secpath' + */ + Config_Sections *section_list(const char *secpath) const { Config_Section *s=find_section(secpath); return s ? (&s->sections()) : 0; } + + /** + * Return entries of section specified 'secpath' + */ + Config_Lines *line_list(const char *secpath) const { Config_Section *s=find_section(secpath); return s ? (&s->lines()) : 0; } + + /** + * Set default section for read/write operations. + * NOTE: section is created, if it's not found.
    + * NOTE: You can pass path to section e.g "/path/to/my/section" + */ + void set_section(const char *secpath) { set_section(create_section(secpath)); } + + /** + * Set default section for read/write operations. + */ + void set_section(Config_Section *sec) { m_cur_sec = sec; } + + /** + * Remove entry associated with 'key' from section. + * NOTE: You can pass path to section e.g "/path/to/my/section" + */ + void remove_key(const char *section, const char *key); + + /** + * Remove section specified by 'section'. + * NOTE: You can pass path to section e.g "/path/to/my/section" + */ + void remove_sec(const char *section); + + + /** + * Read Fl_String entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ +// int read(const char *key, char* ret, const char *def_value) { return _read_string(m_cur_sec, key, ret, def_value); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + * @param size of 'ret' char* array. + */ + int read(const char *key, char *ret, const char *def_value, int size) { return _read_string(m_cur_sec, key, ret, def_value, size); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: 'ret' is allocated by Fl_Confing, user MUST free 'ret' by calling free() function. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, char *&ret, const char *def_value=0) { return _read_string(m_cur_sec, key, ret, def_value); } + + /** + * Read long entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, long &ret, long def_value=0) { return _read_long(m_cur_sec, key, ret, def_value); } + + /** + * Read int entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, int &ret, int def_value=0) { return _read_int(m_cur_sec, key, ret, def_value); } + + /** + * Read float entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, float &ret, float def_value=0) { return _read_float(m_cur_sec, key, ret, def_value); } + + /** + * Read double entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, double &ret, double def_value=0) { return _read_double(m_cur_sec, key, ret, def_value); } + + /** + * Read bool entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, bool &ret, bool def_value=0) { return _read_bool(m_cur_sec, key, ret, def_value); } + + /** + * Read Fl_Color entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, Color &ret, Color def_value=0) { return _read_color(m_cur_sec, key, ret, def_value); } + + + /** + * Write Fl_String entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ +// int write(const char *key, const Fl_String &value) { return _write_string(m_cur_sec, key, value); } + + /** + * Write const char* entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const char *value) { return _write_string(m_cur_sec, key, value); } + + /** + * Write long entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const long value) { return _write_long(m_cur_sec, key, value); } + + /** + * Write int entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const int value) { return _write_int(m_cur_sec, key, value); } + + /** + * Write float entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const float value) { return _write_float(m_cur_sec, key, value); } + + /** + * Write double entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const double value) { return _write_double(m_cur_sec, key, value); } + + /** + * Write bool entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const bool value) { return _write_bool(m_cur_sec, key, value); } + + /** + * Write Fl_Color entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const Color value) { return _write_color(m_cur_sec, key, value); } + + + /** + * Read Fl_String entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ +// int get(const char *section, const char *key, Fl_String &ret, const char *def_value) { return _read_string(find_section(section), key, ret, def_value); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, char *ret, const char *def_value, int size) { return _read_string(find_section(section), key, ret, def_value, size); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: 'ret' is allocated by Fl_Confing, user MUST free 'ret' by calling free() function. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, char *&ret, const char *def_value=0) { return _read_string(find_section(section), key, ret, def_value); } + + /** + * Read long entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, long &ret, long def_value=0) { return _read_long(find_section(section), key, ret, def_value); } + + /** + * Read int entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, int &ret, int def_value=0) { return _read_int(find_section(section), key, ret, def_value); } + + /** + * Read float entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, float &ret, float def_value=0) { return _read_float(find_section(section), key, ret, def_value); } + + /** + * Read double entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, double &ret, double def_value=0) { return _read_double(find_section(section), key, ret, def_value); } + + /** + * Read bool entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, bool &ret, bool def_value=0) { return _read_bool(find_section(section), key, ret, def_value); } + + /** + * Read Fl_Color entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, Color &ret, Color def_value=0) { return _read_color(find_section(section), key, ret, def_value); } + + + /** + * Write Fl_String entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ +// int set(const char *section, const char *key, const Fl_String &value) { return _write_string(create_section(section), key, value); } + + /** + * Write const char *entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const char *value) { return _write_string(create_section(section), key, value); } + + /** + * Write long entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const long value) { return _write_long(create_section(section), key, value); } + + /** + * Write int entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const int value) { return _write_int(create_section(section), key, value); } + + /** + * Write float entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const float value) { return _write_float(create_section(section), key, value); } + + /** + * Write bool entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const bool value) { return _write_double(create_section(section), key, value); } + + /** + * Write Fl_Color entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const Color value) { return _write_color(create_section(section), key, value); } + +private: + int m_error; + char* m_filename; + char *m_vendor, *m_app; + + Config_Section *m_cur_sec; + bool m_changed; + + //int _read_string(Fl_Config_Section *s, const char *key, Fl_String &ret, const char *def_value); + int _read_string(Config_Section *s, const char *key, char *ret, const char *def_value, int size); + int _read_string(Config_Section *s, const char *key, char *&ret, const char *def_value); + int _read_long (Config_Section *s, const char *key, long &ret, long def_value); + int _read_int (Config_Section *s, const char *key, int &ret, int def_value); + int _read_float (Config_Section *s, const char *key, float &ret, float def_value); + int _read_double(Config_Section *s, const char *key, double &ret, double def_value); + int _read_bool (Config_Section *s, const char *key, bool &ret, bool def_value); + int _read_color (Config_Section *s, const char *key, Color &ret, Color def_value); + + //int _write_string(Fl_Config_Section *s, const char *key, const Fl_String &value); + int _write_string(Config_Section *s, const char *key, const char *value); + int _write_long (Config_Section *s, const char *key, const long value); + int _write_int (Config_Section *s, const char *key, const int value); + int _write_float (Config_Section *s, const char *key, const float value); + int _write_double(Config_Section *s, const char *key, const double value); + int _write_bool (Config_Section *s, const char *key, const bool value); + int _write_color (Config_Section *s, const char *key, const Color value); +}; + +// Backward compatibility... +static inline const char* find_config_file(const char *filename, bool create=true) { + return Config::find_file(filename, create, Config::USER); +} + +} + +#endif diff --git a/edelib2/Icon.cpp b/edelib2/Icon.cpp new file mode 100755 index 0000000..7ed8d2e --- /dev/null +++ b/edelib2/Icon.cpp @@ -0,0 +1,165 @@ +/* + * $Id$ + * + * edelib::Icon - General icon library with support for Icon themes + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include +#include +#include + +#include "Icon.h" +#include "Config.h" +#include "../edeconf.h" + +using namespace fltk; +using namespace edelib; + +// FIXME: use an EDE internal default theme +const char* Icon::iconspath = PREFIX"/share/icons"; +const char* Icon::defaulttheme = "crystalsvg"; +char* Icon::theme = 0; + + + +// Read configuration to detect currently active theme +void Icon::read_theme_config() +{ + char temp_value[PATH_MAX]; + if (theme) free(theme); + + Config cfg(find_config_file("ede.conf", 0)); + cfg.set_section("Icons"); + if (!cfg.read("IconTheme", temp_value, 0, sizeof(temp_value))) + theme = strdup(temp_value); + + if (!theme || strlen(theme)<2) + theme = strdup(defaulttheme); +} + + +// Change theme in configuration +void Icon::set_theme(const char *t) +{ + if (theme) free(theme); + theme = strdup(t); + + Config cfg(find_config_file("ede.conf", true)); + cfg.set_section("Icons"); + cfg.write("IconTheme", theme); +} + + + +// Search theme directory for icon file of given name + +// Icon names are unique, regardless of subdirectories. The +// "actions", "apps", "devices" etc. are just an idea that +// never lived. So we simply flatten the KDE directory +// structure. + +// TODO: add support for xpm, use functions from fltk/filename.h + +char *find_icon(const char *name, const char *directory) +{ + DIR *my_dir; + struct dirent *my_dirent; + char filename[PATH_MAX]; + + // Buffer for stat() + struct stat *buf = (struct stat*)malloc(sizeof(struct stat)); + + if (!(my_dir = opendir(directory))) + { + // Directory doesn't exist! + fprintf (stderr, "Edelib: ERROR: Theme %s is no more on disk :(\n", directory); + free(buf); + return 0; + } + while ((my_dirent = readdir(my_dir)) != NULL) + { + // filename is a fully qualified path + snprintf (filename, sizeof(filename), "%s/%s", directory, my_dirent->d_name); + + // strip .png part + char *work = strdup(my_dirent->d_name); + char *d = strrchr(work,'.'); + if (d && (strcmp(d, ".png") == 0)) + { + *d = '\0'; + if (strcmp(work, name)==0) + { + //free(work); // this cause stack corruption sometimes!! + closedir(my_dir); + free(buf); + return strdup(filename); // found! + } + } + //free(work); // this cause stack corruption sometimes!! + // FIXME + + // Let's try subdirectories + stat (filename, buf); + if (strcmp(my_dirent->d_name,".")!=0 && strcmp(my_dirent->d_name,"..")!=0 && S_ISDIR(buf->st_mode)) + { + // filename is a directory, look inside: + char *tmp = find_icon(name, filename); + if (tmp) { // found + closedir(my_dir); + free(buf); + return tmp; + } + } + } + closedir(my_dir); + free(buf); + + // not found + return 0; +} + +// Create icon with given "standard" name +Icon* Icon::get(const char *name, int size) +{ + char directory[PATH_MAX]; + + // FIXME: rescale icon from other sizes + if (size!=TINY && size!=SMALL && size!=MEDIUM && size!=LARGE && size!=HUGE) + { + fprintf (stderr, "Edelib: ERROR: We don't support icon size %d... using %dx%d\n", size, MEDIUM, MEDIUM); + size=MEDIUM; + } + + snprintf (directory, sizeof(directory), "%s/%s/%dx%d", iconspath, get_theme(), size, size); + + char *icon = find_icon(name, directory); + + if (!icon) // Fallback to icon from default theme, if not found + { + snprintf (directory, sizeof(directory), "%s/%s/%dx%d", iconspath, defaulttheme, size, size); + icon = find_icon(name, directory); + } + if (!icon && size!=TINY) // No default icon in this size + { + snprintf (directory, sizeof(directory), "%s/%s/%dx%d", iconspath, defaulttheme, TINY, TINY); + icon = find_icon(name, directory); + // TODO: scale icon from tiny to requested size + } + if (!icon) + return 0; // sorry + else + { + //fprintf(stderr,"Ikona: %s\n",icon); + Icon* i = (Icon*)pngImage::get(icon); + free(icon); + //i->transp_index(255); + //fprintf (stderr, "Name: %s Transp_index: %d Pixel type: %d\n", name, i->transp_index(), i->pixel_type()); + return i; + } +} diff --git a/edelib2/Icon.h b/edelib2/Icon.h new file mode 100755 index 0000000..e7fa61e --- /dev/null +++ b/edelib2/Icon.h @@ -0,0 +1,91 @@ +/* + * $Id$ + * + * edelib::Icon - General icon library with support for Icon themes + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +/*! \class edelib::Icon + +This class gives support for KDE-compatible icon themes. +Icons are identified with their standard names, and the class +will fetch corresponding image from its standard location. +User can easily change all icons at once by setting the icon +theme. + +There should be a freedesktop.org standard for icon names, +but I'm not aware of one so we will implement a sort of KDE +compatibility. Please refer to Icon theme documentation for +details. + +*/ + +#ifndef _edelib_Icon_h_ +#define _edelib_Icon_h_ + +#include + +using namespace fltk; + +namespace edelib { + +// This class builds on pngImage, which is a subclass of SharedImage. +// SharedImage.h code suggests that this will be dropped in favor of +// Image class. + +class Icon : public pngImage +{ +public: + /*! Icon sizes: + TINY - 16x16 + SMALL - 32x32 + MEDIUM - 48x48 + LARGE - 64x64 + HUGE - 128x128 + At the moment we only support and use TINY and MEDIUM sizes.*/ + enum IconSize { + TINY = 16, + SMALL = 32, + MEDIUM = 48, + LARGE = 64, + HUGE = 128, + }; + + // Silence compiler warning + virtual ~Icon(); + + /*! Return edelib::Icon with given standard name and size. Adding + path or .png extension is not necessary - just name is fine. + Example: + o->image(edelib::Icon::get("fileopen", edelib::Icon::TINY)); */ + static Icon* get(const char *name, int size = MEDIUM); + + /*! Give currently active theme and its directory. */ + static const char* get_theme() { if (!theme) read_theme_config(); return theme; } + + /*! Set theme as currently active. */ + static void set_theme(const char *t); + + int get_size() { return my_size; } + +// In future, we might add methods for retrieving theme metadata +// (name, author, URL, copyright and such) + +private: + static void read_theme_config(); + static const char* iconspath; + static const char* defaulttheme; + static char* theme; + int my_size; + char *my_theme; +}; + +} + +#endif diff --git a/edelib2/Makefile b/edelib2/Makefile new file mode 100755 index 0000000..48da25f --- /dev/null +++ b/edelib2/Makefile @@ -0,0 +1,15 @@ + +CPPFILES = about_dialog.cpp Config.cpp Icon.cpp MimeType.cpp process.cpp pty.cpp Run.cpp Util.cpp +TARGET = + +include ../makeinclude + +all: about_dialog.o Config.o Icon.o MimeType.o process.o pty.o Run.o Util.o + +install: + +uninstall: + +clean: + $(RM) *.o + diff --git a/edelib2/MimeType.cpp b/edelib2/MimeType.cpp new file mode 100644 index 0000000..017db69 --- /dev/null +++ b/edelib2/MimeType.cpp @@ -0,0 +1,347 @@ +/* + * $Id$ + * + * edelib::MimeType - Detection of file types and handling + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "MimeType.h" + +#include + +#include "Run.h" +#include "Config.h" +#include "Util.h" + +#include +#include +#include +#include +#include + +#define GFILE "/usr/bin/file" +// I made this icon because on KDE there are stupidly two icons with same name +#define DEFAULT_ICON "misc-vedran" +#define FOLDER_ICON "folder" +#define RECYCLED_ICON "recycled" +#define LOCKED_ICON "lockoverlay" +#define FOLDERLOCKED_ICON "folder_locked" +// to be defined in separate file: +#define FILE_MANAGER "efiler" + + +using namespace fltk; +using namespace edelib; + + +// GLOBAL NOTE: asprintf() is a GNU extension - if it's unsupported on some +// platforms, use our tasprintf() instead (in Util.h) + + + +// File format: +// id|description|handler program|icon|wildcard for filename (extension)|wildcard for file command output|classic mime type +// +// - id - short string; to setup subtypes, just use slash (/) as separator in ID +// - description - what is shown in gui +// - handler program - filename will be appended, specify any needed parameters for opening - THIS WILL BE MOVED INTO SEPARATE FILE (for handling multiple programs etc.) +// - icon - just name, don't give extension or path +// - extension - will be used only if multiple types have same file command match. You don't need to give asterisk (*) i.e. .png. If there are multiple extensions, separate them with slash (/). Actually, "extension" can be any part of filename, but I can't think of use for this +// - file output - relevant part of output from `file -bLnNp $filename` +// - classic mime type - what is used for interchange i.e. text/plain - may be used for matching if other methods fail +// +// This is how mimetype resolving is supposed to work: if there is exactly one match for `file` +// output, this is what we use. If there are multiple, the largest match is used. If there are +// no results or several results with same size we look at extension, then at classic mime type +// (using -i parameter to `file`). +// NOTE: not sure about this last thing, since -i parameter appears to just be alias + + + +// queue/tree of mimetype data +static struct MimeData { + char *id, *typestr, *program, *iconname, *extension, *file_output, *classic_mime; + MimeData *next; +} *mime_first=0; + + +// This is used instead of strstrmulti to check if filename ends with any of extensions +char *test_extension(const char *file, const char *ext) { + if (!file || !ext || (strlen(file)==0) || (strlen(ext)==0)) + return (char*)file; // this means that empty search returns true + char *copy = strdup(ext); + char *token = strtok(copy, "/"); + char *result = 0; + do { + int k = strlen(file)-strlen(token); + if (strcmp(file+k,token) == 0) { return strdup(file+k); break; } + } while ((token = strtok(NULL, "/"))); // double braces to silence compiler warnings :( + free (copy); + if (!result && (ext[strlen(ext)-1] == '/')) + return (char*)file; // again + return result; +} + + + +// Read mime data from file + +void get_mimedata() { + // TODO: currently all mimes are on the same level... + mime_first = (MimeData*) malloc(sizeof(MimeData)+1); + MimeData *m = mime_first; + + char line[256]; + char* mime_filename = Config::find_file("mimetypes.conf"); + FILE *f = fopen(mime_filename,"r"); + bool first=true; + while (!feof(f) && (fgets(line,255,f))) { + if (feof(f)) break; + + // delete comments + if (char* p=strchr(line,'#')) { *p = '\0'; } + // delete spaces + wstrim(line); + // if there's nothing left, skip + if (strlen(line)<1) continue; + char *p1,*p2; + if (!(p1 = strchr(line,'|'))) continue; // likewise + + // Allocate next element if this is not first pass + if (!first) { + m->next = (MimeData*) malloc(sizeof(MimeData)+1); + m = m->next; + } + first=false; + + // parse line + m->id = wstrim(strndup(line,p1-line)); + if (p1 && (p2 = strchr(++p1,'|'))) m->typestr = wstrim(strndup(p1,p2-p1)); else m->typestr=0; + if (p2 && (p1 = strchr(++p2,'|'))) m->program = wstrim(strndup(p2,p1-p2)); else m->program=0; + if (p1 && (p2 = strchr(++p1,'|'))) m->iconname = wstrim(strndup(p1,p2-p1)); else m->iconname=0; + if (p2 && (p1 = strchr(++p2,'|'))) m->extension = wstrim(strndup(p2,p1-p2)); else m->extension=0; + if (p1 && (p2 = strchr(++p1,'|'))) m->file_output = wstrim(strndup(p1,p2-p1)); else m->file_output=0; + if (p2 && (p1 = strchr(++p2,'|'))) m->classic_mime = wstrim(strndup(p2,p1-p2)); else m->classic_mime=0; + } + fclose(f); +} + + +void free_mimedata() { + MimeData *m, *n; + m = mime_first; + while ((n = m->next)) { free(m); m=n; } + mime_first=0; +} + + +void print_mimedata() { // for debugging + MimeData *m = mime_first; + while (m != 0) { + fprintf(stderr, "ID: '%s' Name: '%s' Prog: '%s' Icon: '%s' Ext: '%s' File: '%s' MIME: '%s'\n", m->id, m->typestr, m->program, m->iconname, m->extension, m->file_output, m->classic_mime); + m = m->next; + } +} + + +// declare given MimeData as current +void MimeType::set_found(char *id) { + if (!id) return; + + // find id + MimeData *m = mime_first; + while (m && strcmp(m->id,id)!=0) m = m->next; + + // copy data to cur_* + cur_id = strdup(id); + if (m->typestr) cur_typestr = strdup(m->typestr); + if (m->program && (strlen(twstrim(m->program))>0)) { + asprintf (&cur_command, "%s \"%s\"", m->program, cur_filename); + } + if (m->iconname) cur_iconname = strdup(m->iconname); + else cur_iconname = strdup(DEFAULT_ICON); +} + + + +MimeType::MimeType(const char* filename, bool usefind) { + cur_id=cur_typestr=cur_command=cur_iconname=cur_filename=0; + if (filename && filename_exist(filename)) { + cur_filename=strdup(filename); + + // Directory + if (filename_isdir(filename)) { + if (access(filename, R_OK || X_OK)) { + // Not readable + cur_id = strdup("directory/locked"); + cur_typestr = strdup("Directory (not accessible)"); + cur_iconname = strdup(FOLDERLOCKED_ICON); + } else { + cur_id = strdup("directory"); + cur_typestr = strdup("Directory"); + asprintf(&cur_command, "%s \"%s\"", FILE_MANAGER, filename); + cur_iconname = strdup(FOLDER_ICON); + } + return; + } + + // File not readable + if (access(filename, R_OK)) { + if (errno == EACCES) { + cur_id = strdup("locked"); + cur_typestr = strdup("Can't read file"); + cur_iconname = strdup(LOCKED_ICON); + } + // we don't handle other errors specially + return; + } + + // Backup file + if (filename[strlen(filename)-1] == '~') { + cur_id = strdup("backup"); + cur_typestr = strdup("Backup file"); + cur_iconname = strdup(RECYCLED_ICON); + return; + } + + if (!mime_first) get_mimedata(); + + // Stuff we need to declare before goto for visibility reasons + MimeData *m = mime_first; + char buffer[256]; + int found=0, foundext = 0; + MimeData *file_matches[20], *ext_matches[20] = {0}; // this is for if(!ext_matches[0]) + + if (!usefind) goto nofind; // using goto here makes less indentation ;) + + // execute file command + const int ourpid = getpid(); + run_program(tsprintf("%s -bLnNp '%s' >/tmp/ede-%d", GFILE, filename, ourpid)); + + // read cmd output from temp file + FILE *f = fopen (tsprintf("/tmp/ede-%d",ourpid),"r"); + fgets(buffer,255,f); + fclose(f); // won't be more than 255 chars + +fprintf (stderr,"File said: %s\n",buffer); + + // find matches for 'file' command output + // TODO: add wildcard matching + do { + if (m->file_output && (strstr(buffer,m->file_output))) + file_matches[found++]=m; + } while ((m=m->next)); + + if (found == 1) { // one result found + this->set_found(file_matches[0]->id); + return; + } + + if (found > 1) { // multiple results - find best match + // We look for longest file match + uint max=0; + for (int i=0; ifile_output)>max) + max = strlen(file_matches[i]->file_output); + +fprintf(stderr, "Max: %d\n",max); + // If all matches are empty, this is probably bogus + if (max == 0) goto nofind; + + // Test to see if there are multiple best choices + int j=0; + for (int i=0; ifile_output) == max) { + fprintf (stderr, "Lokalni maximum '%s'\n", file_matches[i]->id); + file_matches[j++] = file_matches[i]; + } + // Now **file_matches should contain only maximums + if (j==1) { this->set_found(file_matches[0]->id); return; } + + // Compare maximums on extension + for (int i=0; iextension)) + ext_matches[foundext++] = file_matches[i]; + + // No extension matches - accept first result (FIXME) + if (foundext == 0) { + this->set_found(file_matches[0]->id); + return; + } + // From here we jump to comment " // continue extension matching" + } + + nofind: + if (!ext_matches[0]) { + // Try extension matching on all mimetypes + // This code will be executed if: + // a) find command is disabled + // b) find command returned zero matches (not likely, + // because some mimetypes have empty 'find' field) + // c) all of find results have equal length and no extensions + // match (this is probably a misconfiguration, but its possible) + m = mime_first; + do { + // take care not to match empty extension + if (m->extension + && (strlen(m->extension)>0) + && + (m->extension[strlen(m->extension)-1] != '/') + && (test_extension(filename,m->extension))) { + fprintf (stderr, "Extenzija '%s'\n", m->id); + ext_matches[foundext++]=m; + } + } while ((m=m->next)); + } + +fprintf(stderr, "Foundext: %d\n", foundext); + // continue extension matching + if (foundext == 1) { // one result found + this->set_found(ext_matches[0]->id); + return; + } + + if (foundext > 1) { // multiple results - find best match + // Code is almost the same as above + // We look for longest extension match + uint max=0; + for (int i=0; iextension)>max && + (ext_matches[i]->extension[strlen(ext_matches[i]->extension)-1] != '/')) + max = strlen(ext_matches[i]->extension); + + // Test to see if there are multiple best choices + int j=0; + for (int i=0; iextension) == max) + ext_matches[j++] = ext_matches[i]; + // Now **ext_matches should contain only maximums + if (j==1) { this->set_found(ext_matches[0]->id); return; } + + // Now what??? we return first one whether it be the only or not! + // FIXME + this->set_found(file_matches[0]->id); + return; + } + + // No extension results found - this is unknown file type + cur_id = strdup("unknown"); + cur_typestr = strdup("Unknown"); + cur_iconname = strdup(DEFAULT_ICON); + } +} + + +MimeType::~MimeType() { + if (cur_id) free(cur_id); + if (cur_typestr) free(cur_typestr); + if (cur_command) free(cur_command); + if (cur_iconname) free(cur_iconname); + if (cur_filename) free(cur_filename); + // free_mimedata() - should we? mimedata is static for a reason... +} diff --git a/edelib2/MimeType.h b/edelib2/MimeType.h new file mode 100644 index 0000000..7e85d29 --- /dev/null +++ b/edelib2/MimeType.h @@ -0,0 +1,68 @@ +/* + * $Id$ + * + * edelib::MimeType - Detection of file types and handling + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +/*! \class edelib::MimeType + +This detects the type of file using "magic" (fingerprint +usualy found in the first several bytes) and, if that fails, +"extension" (part of filename after last dot). To avoid code +duplication, GNU file is used. + +Also this class suggests the command to be used for opening. + +*/ + + +#ifndef _edelib_MimeType_h_ +#define _edelib_MimeType_h_ + +#include "Icon.h" + +namespace edelib { + +class MimeType +{ +public: + + /*! Constructor takes filename and all interesting data is + returned with methods listed below. filename must contain + full path. Set usefind to false to avoid using GNU/find + command.*/ + + MimeType(const char* filename, bool usefind=true); + + // Silence compiler warning + virtual ~MimeType(); + + /*! Returns a string describing file type i.e. "PNG Image" */ + const char* type_string() { if (cur_typestr) return cur_typestr; else return 0;} + + /*! String that can be executed to open the given file + or perform some default action (e.g. for .desktop files, + the program that will be launched) */ + const char* command() { if (cur_command) return cur_command; else return 0; } + + /*! Returns edelib::Icon for files of this type. Parameter is + edelib::Icon::IconSize */ + Icon* icon(int size) { if(cur_iconname) return Icon::get(cur_iconname,size); else return 0; } + + const char* id() { if(cur_id) return cur_id; else return 0; } + +private: + char *cur_id, *cur_typestr, *cur_command, *cur_iconname, *cur_filename; + void set_found(char *id); +}; + +} + +#endif diff --git a/edelib2/NLS.h b/edelib2/NLS.h new file mode 100755 index 0000000..59d81ea --- /dev/null +++ b/edelib2/NLS.h @@ -0,0 +1,21 @@ +/* + * $Id$ + * + * edelib::NLS - Native language support + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +// Native language support - under construction +// Based on code from efltk (Fl_Locale) + +#ifndef _NLS_H_ +#define _NLS_H_ + +#define _(s) s + +#endif diff --git a/edelib2/Run.cpp b/edelib2/Run.cpp new file mode 100755 index 0000000..5acff31 --- /dev/null +++ b/edelib2/Run.cpp @@ -0,0 +1,237 @@ +/* + * $Id$ + * + * edelib::Run - Library for executing external programs + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +#define PREFIX "/usr" + +#include "Run.h" + +#include "Config.h" +#include +#include "NLS.h" +#include "process.h" + +using namespace fltk; +using namespace edelib; + + +// GLOBAL NOTE: asprintf() is a GNU extension which is also available under *BSD +// If this is considered a problem, use our tasprintf() instead (in Util.h) + + +// -------------------------------------------- +// Start a process using exec(3) +// This means that there is no handling or control over process, +// it's just forked into background. If you need to chat with +// program or use its output, see edelib::PtyProcess +// -------------------------------------------- + +int run_fork(const char *cmd, bool wait) +{ + int pid, status; + int nulldev; + extern char **environ; + + status=0; + if (cmd == NULL) + return (EDERUN_EMPTY); + + pid = fork (); + if (pid == -1) + return (EDERUN_FORK_FAILED); + if (pid == 0) + { + char *argv[4]; + // child + argv[0] = "sh"; + argv[1] = "-c"; + argv[2] = (char*)cmd; + argv[3] = NULL; + + // The following is to avoid X locking when executing + // terminal based application that requires user input + if ((nulldev = open ("/dev/null", O_RDWR))) + { + close (0); dup (nulldev); + close (1); dup (nulldev); + close (2); dup (nulldev); + } + + if (execve ("/bin/sh", argv, environ) == -1) + perror ("/bin/sh"); + _exit (EDERUN_EXECVE_FAILED); + } + do + { + if ((wait) && (waitpid (pid, &status, 0) == -1)) + { + if (errno != EINTR) + return (EDERUN_WAITPID_FAILED); + } + else { + if (status==127) status=EDERUN_NOT_FOUND; + if (status==126) status=EDERUN_NOT_EXEC; + return status; + } + } + while (1); + + return 0; +} + + +// -------------------------------------------- +// Start a process as root user +// We use edelib::PtyProcess to chat with su/sudo. Afterwards +// the program continues undisturbed +// -------------------------------------------- + +// this is our internal message: +#define CONTMSG "elauncher_ok_to_continue" +// these are part of sudo/su chat: +#define PWDQ "Password:" +#define BADPWD "/bin/su: incorrect password" +#define SUDOBADPWD "Sorry, try again." + +int run_as_root(const char *cmd, bool wait) +{ + // -- we could check for availibility of sudo, but there's no point + bool use_sudo = false; + Config pGlobalConfig(find_config_file("ede.conf", 0)); + pGlobalConfig.set_section("System"); + pGlobalConfig.read("UseSudo", use_sudo, false); + + // Prepare array as needed by exec() + char *parts[4]; + if (use_sudo) { + parts[0] = "/bin/sudo"; + parts[1] = ""; + // This "continue message" prevents accidentally exposing password + asprintf(&parts[2], "echo %s; %s", CONTMSG, cmd); + parts[3] = NULL; + } else { + parts[0] = "/bin/su"; + parts[1] = "-c"; + // This "continue message" prevents accidentally exposing password + asprintf(&parts[2], "echo %s; %s", CONTMSG, cmd); + parts[3] = NULL; + } + // the actual command is this: +// cmd_ = strtok(cmd," "); + +tryagain: + PtyProcess *child = new PtyProcess(); + child->setEnvironment((const char**)environ); + if (child->exec(parts[0], (const char**)parts) < 0) { + return EDERUN_PTY_FAILED; + } + + // Wait for process to actually start. Shouldn't last long + while (1) { + int p = child->pid(); + if (p != 0 && child->checkPid(p)) + break; + int exit = child->checkPidExited(p); + if (exit != -2) { + // Process is DOA + fprintf (stderr, "Edelib: Process has died unexpectedly! Exit status: %d\n",exit); + delete child; + goto tryagain; + } + fprintf (stderr, "Edelib: Process not started yet...\n"); + } + + // Run program as root using su or sudo + char *line; + + // TODO: fix password dialog so that Cancel can be detected + // At the moment it's impossible to tell if the password is blank + const char *pwd = password(_("This program requires administrator privileges.\nPlease enter your password below:")); + + // Chat routine + while (1) { + line = child->readLine(); + + // This covers other cases of failed process startup + // Our su command should at least produce CONTMSG + if (line == 0 && child->checkPidExited(child->pid()) != PtyProcess::NotExited) { + // TODO: capture stdout? as in sudo error? + fprintf (stderr, "Edelib: su process has died unexpectedly in chat stage!\n"); + delete child; + + if (choice_alert (_("Failed to start authentication. Try again"), 0, _("Yes"), _("No")) == 2) return 0; + goto tryagain; + } + + if (strncasecmp(line,PWDQ,strlen(PWDQ))== 0) + child->writeLine(pwd,true); + + if (strncasecmp(line,CONTMSG,strlen(CONTMSG)) == 0) + break; // program starts... + + if ((strncasecmp(line,BADPWD,strlen(BADPWD)) == 0) || (strncasecmp(line,SUDOBADPWD,strlen(SUDOBADPWD)) == 0)) { + // end process + child->waitForChild(); + delete child; + + if (choice_alert (_("The password is wrong. Try again?"), 0, _("Yes"), _("No")) == 2) return 0; + + goto tryagain; + } + } + + // Wait for program to end, discarding output + int child_val = child->waitForChild(); + if (child_val==127) child_val=EDERUN_NOT_FOUND; + if (child_val==126) child_val=EDERUN_NOT_EXEC; + + // deallocate one string we allocated + free(parts[2]); + delete child; + + return child_val; +} + + +static bool done_checks=false; +static bool elauncher_found=false; + +// Check availability of various necessary components +// For the moment just elauncher :) +void do_checks() +{ + struct stat *buf = (struct stat*)malloc(sizeof(struct stat)); + if (stat (PREFIX"/bin/elauncher", buf) == 0) + elauncher_found = true; + else + elauncher_found = false; +} + + +int edelib::run_program(const char *path, bool wait, bool root, bool use_elauncher) +{ + char *execstr; + if (!done_checks) do_checks(); + if (use_elauncher && elauncher_found) { + if (root) + asprintf(&execstr,"elauncher --root \"%s\"", path); + else + asprintf(&execstr,"elauncher \"%s\"", path); + run_fork (execstr, false); // elauncher can't wait + } else { + if (root) + return run_as_root(path, wait); + else + return run_fork(path, wait); + } + return 0; // shutup compiler! +} diff --git a/edelib2/Run.h b/edelib2/Run.h new file mode 100755 index 0000000..6e2cf88 --- /dev/null +++ b/edelib2/Run.h @@ -0,0 +1,72 @@ +/* + * $Id$ + * + * edelib::Run - Library for executing external programs + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef _edelib_Run_h_ +#define _edelib_Run_h_ + +#include +#include +#include +#include +#include +#include +#include + +namespace edelib { + +/** \fn run_program(char *path, bool wait=true, bool root=false, bool use_elauncher=false) + Standard EDE function for running external tasks. This function is time tested + and provides a number of neat facilities. + + Parameters: + \a path - Full path to executable. If path is ommited, function will search PATH + environment variable. + \a wait - If true, parent process will be frozen until program ends. If false, + it will fork into background and parent has no way to know what happened with it. + default = true + \a root - If true, sudo will be used to run program as root, with a nice facility + to enter your root password. If sudo is not available, "su -c" will be tried. + default = false + \a use_elauncher - Program will be launched through elauncher which provides busy + cursor, information about missing executable, standard output, backtrace in case + of segfault etc. However, use of elauncher may cause some minimal overhead. + Also, since there is no way to wait with elauncher, \a wait value will be + ignored. default = false + + Return value of the function is program "exit value". Usually exit value of 0 + means successful execution, and values 1-255 have certain special meanings + per program documentation. Several special values above 255 are: + EDERUN_NOT_FOUND - \a cmd doesn't exist + EDERUN_EMPTY - \a cmd is empty + EDERUN_NOT_EXEC - \a cmd doesn't have execute permission + EDERUN_FORK_FAILED - fork() function returned a PID of -1 (see fork(2)) + EDERUN_WAITPID_FAILED - waitpid() function resulted with error (see waitpid(2)) + EDERUN_EXECVE_FAILED - execve() function returned -1 (see execve(2)) + EDERUN_PTY_FAILED - could not create pseudo-terminal (see getpt(3) and grantpt(3)) +*/ + +enum{ + EDERUN_NOT_FOUND = 65535, + EDERUN_EMPTY = 65534, + EDERUN_NOT_EXEC = 65533, + EDERUN_FORK_FAILED = 65532, + EDERUN_WAITPID_FAILED = 65531, + EDERUN_EXECVE_FAILED = 65530, + EDERUN_PTY_FAILED = 65529 +}; + + +int run_program(const char *path, bool wait=true, bool root=false, bool use_elauncher=false); + +} + +#endif diff --git a/edelib2/Util.cpp b/edelib2/Util.cpp new file mode 100644 index 0000000..1c7f334 --- /dev/null +++ b/edelib2/Util.cpp @@ -0,0 +1,346 @@ +/* + * $Id$ + * + * Library of useful functions + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Util.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifdef _WIN32 + +# include +# include +# include +# define access(a,b) _access(a,b) +# define mkdir(a,b) _mkdir(a) +# define R_OK 4 + +#else + +# include + +#endif /* _WIN32 */ + + +// From Enumerations.h +#ifdef _WIN32 +# undef slash +# define slash '\\' +#else +# undef slash +# define slash '/' +#endif +// End Enumerations.h + + +using namespace fltk; +using namespace edelib; + + +// Test if path is absolute or relative +int edelib::is_path_rooted(const char *fn) +{ +#ifdef _WIN32 + if (fn[0] == '/' || fn[0] == '.' || fn[0] == '\\' || fn[1]==':') +#else + if (fn[0] == '/' || fn[0] == '.') +#endif + return 1; + return 0; +} + + +// recursively create a path in the file system +bool edelib::make_path( const char *path ) +{ + if(access(path, 0)) + { + const char *s = strrchr( path, slash ); + if ( !s ) return 0; + int len = s-path; + char *p = (char*)malloc( len+1 ); + memcpy( p, path, len ); + p[len] = 0; + make_path( (const char*)p ); + free( p ); + return ( mkdir( path, 0777 ) == 0 ); + } + return true; +} + + +// create the path needed for file using make_path +bool edelib::make_path_for_file( const char *path ) +{ + const char *s = strrchr( path, slash ); + if ( !s ) return false; + int len = s-path; + char *p = (char*)malloc( len+1 ); + memcpy( p, path, len ); + p[len] = 0; + bool ret=make_path( (const char*)p ); + free( p ); + return ret; +} + + +// Cross-platform function for system path +char* edelib::get_sys_dir() +{ +#ifndef _WIN32 + return SYSTEM_PATH; +#else + static char path[PATH_MAX]; + HKEY hKey; + if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion", 0, KEY_READ, &hKey)==ERROR_SUCCESS) + { + DWORD size=4096; + RegQueryValueExW(hKey, L"CommonFilesDir", NULL, NULL, (LPBYTE)path, &size); + RegCloseKey(hKey); + return path; + } + return "C:\\EDE\\"; +#endif +} + + + +// Cross-platform function for home directory... +// I don't see the purpose since getenv("HOME") works just fine +/*char* edelib::get_homedir() { + char *path = new char[PATH_MAX]; + const char *str1; + + str1=getenv("HOME"); + if (str1) { + memcpy(path, str1, strlen(str1)+1); + return path; + } + + return 0; +}*/ + + +// strdupcat() - it's cool to strcat with implied realloc +// -- NOTE: due to use of realloc *always* use strdupcat return value: +// dest = strdupcat(dest,src); +// and *never* use it like: +// strdupcat(dest,src); +char* edelib::strdupcat(char *dest, const char *src) +{ + if (!dest) { + dest=(char*)malloc(strlen(src)); + } else { + dest=(char*)realloc (dest, strlen(dest)+strlen(src)+1); + } + strcat(dest,src); + return dest; +} + + +// wstrim() - for trimming characters (used in parser) +// parts of former fl_trimleft and fl_trimright from Fl_Util.cpp +char* edelib::wstrim(char *string) +{ + if(!string) + return NULL; + + char *start; + int len = strlen(string); + + if (len) { + char *p = string + len; + do { + p--; + if ( !isspace(*p) ) break; + } while ( p != string ); + + if ( !isspace(*p) ) p++; + *p = 0; + } + + for(start = string; *start && isspace (*start); start++); + memmove(string, start, strlen(start) + 1); + + return string; +} + +const char* edelib::twstrim(const char* string) +{ + static char buffer[4096]; + if (strlen(string)>4095) { + strncpy(buffer,string,4095); + buffer[4095]='\0'; + } else + strcpy(buffer,string); + wstrim((char*)buffer); + return (const char*)buffer; +} + +// hmmmh? +/* +char* wstrim(const char *string) +{ + char *newstring = strdup(string); + return wstrim(newstring); +}*/ + +// Returns nicely formatted string for byte sizes +const char* edelib::nice_size(double size) { + static char buffer[256]; + if (size<1024) { + snprintf(buffer,255,"%d B",(int)size); + } else if (size<1024*10) { + snprintf(buffer,255,"%.1f kB",(float)size/1024); + } else if (size<1024*1024) { + snprintf(buffer,255,"%d kB",(int)size/1024); + } else if (size<1024*1024*10) { + snprintf(buffer,255,"%.1f MB",(float)size/(1024*1024)); + } else if (size<1024*1024*1024) { + snprintf(buffer,255,"%d MB",(int)size/(1024*1024)); + } else if (size<1024*1024*1024*10) { + snprintf(buffer,255,"%.1f GB",(float)size/(1024*1024*1024)); + } else { + snprintf(buffer,255,"%d GB",(int)size/(1024*1024*1024)); + } + return (const char*) buffer; +} + + +// Find in haystack any of needles (divided with separator) +char* edelib::strstrmulti(const char *haystack, const char *needles, const char *separator) { + if (!haystack || !needles || (strlen(haystack)==0) || (strlen(needles)==0)) + return (char*)haystack; // this means that empty search returns true + char *copy = strdup(needles); + char *token = strtok(copy, separator); + char *result = 0; + do { + if ((result = strstr(haystack,token))) break; + } while ((token = strtok(NULL, separator))); + free (copy); + if (!result && (strcmp(separator,needles+strlen(needles)-strlen(separator))==0)) + return (char*)haystack; // again + return result; +} + + + +// vec_from_string() - similar to explode() in PHP or split() in Perl +// adapted from Fl_String_List to use vector +/*std::vector vec_from_string(const char *str, const char *separator) +{ + if(!str) return std::vector (); + + const char *ptr = str; + const char *s = strstr(ptr, separator); + std::vector retval; + if(s) { + unsigned separator_len = strlen(separator); + do { + unsigned len = s - ptr; + if (len) { + retval.push_back(strndup(ptr,len)); + } else { + retval.push_back(NULL); + } + + ptr = s + separator_len; + s = strstr(ptr, separator); + } + while(s); + + if(*ptr) { + retval.push_back(strdup(ptr)); + } + } else { + retval.push_back(strdup(ptr)); + } + return retval; +}*/ + + + + +// Print to a static char[] and return pointer +const char* edelib::tsprintf(char *format, ...) +{ + static char buffer[4096]; + va_list args; + va_start(args, format); + vsnprintf(buffer, 4095, format, args); + va_end(args); + return (const char*)buffer; +} + +char* edelib::tasprintf(char *format, ...) +{ + char buffer[4096]; + va_list args; + va_start(args, format); + vsnprintf(buffer, 4095, format, args); + va_end(args); + return strdup(buffer); +} + + +// This function exists on some OSes and is mentioned in C textbooks +// However, we can just use sprintf instead + +/* +char * +itoa(int value, char *string, int radix) +{ + char tmp[33]; + char *tp = tmp; + int i; + unsigned v; + int sign; + char *sp; + + if (radix > 36 || radix <= 1) + { + return 0; + } + + sign = (radix == 10 && value < 0); + if (sign) + v = -value; + else + v = (unsigned)value; + while (v || tp == tmp) + { + i = v % radix; + v = v / radix; + if (i < 10) + *tp++ = i+'0'; + else + *tp++ = i + 'a' - 10; + } + + if (string == 0) + string = (char *)malloc((tp-tmp)+sign+1); + sp = string; + + if (sign) + *sp++ = '-'; + while (tp > tmp) + *sp++ = *--tp; + *sp = 0; + return string; +}*/ diff --git a/edelib2/Util.h b/edelib2/Util.h new file mode 100644 index 0000000..65e1ecb --- /dev/null +++ b/edelib2/Util.h @@ -0,0 +1,88 @@ +/* + * $Id$ + * + * Library of useful functions + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +#ifndef edelib_Util_h +#define edelib_Util_h + +#include "../edeconf.h" + + +namespace edelib { + + +// Constants +#define SYSTEM_PATH PREFIX"/share/ede" +#define DOC_PATH SYSTEM_PATH"/doc" + + +// Cross-platform test if path is absolute or relative +int is_path_rooted(const char *fn); + +// Recursively create a path in the file system +bool make_path( const char *path ); + +// Create the path needed for file using make_path +bool make_path_for_file( const char *path ); + +// Cross-platform function for system files location +char* get_sys_dir(); + +// strcat() that also does realloc if needed. Useful if +// e.g. you have a loop which grows string in each pass +// -- Note: due to use of realloc *always* use strdupcat return value: +// dest = strdupcat(dest,src); +// and *never* use it like: +// strdupcat(dest,src); + +// NOTE this function is not used! Its use is not recommended + +char* strdupcat(char *dest, const char *src); + +// Whitespace trim (both left and right) +char* wstrim(char *string); + +// Version with temporary results (static char[]) +const char* twstrim(const char *string); + +// Finds in haystack any of strings contained in string "needles". The substrings +// are divided with separator. +// Not actually used... +char* strstrmulti(const char *haystack, const char *needles, const char *separator); + +// Returns nicely formatted string for byte sizes e.g. "1.2 kB" for size=1284 +const char* nice_size(double size); + +// Create vector from string using separator +//std::vector vec_from_string(const char *str, const char *separator); + + +/*! \fn const char* edelib::tsprintf(char* format, ...) + +A useful function which executes sprintf() on a static char[] variable big enough to +hold short temporary strings. The variable remains valid until next call. + +Use: + run_program(tsprintf(PREFIX"/bin/eiconsconf %s",param)); + +When setting text values of fltk objects, instead use tasprintf which executes a strdup. +Example: + window->label(tasprintf("%s, version %s",appname,appversion)); +*/ + +const char* tsprintf(char* format, ...); + +char* tasprintf(char* format, ...); + +} + +#endif diff --git a/edelib2/about_dialog.cpp b/edelib2/about_dialog.cpp new file mode 100755 index 0000000..84b8d51 --- /dev/null +++ b/edelib2/about_dialog.cpp @@ -0,0 +1,84 @@ +/* + * $Id$ + * + * About dialog + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "about_dialog.h" +#include +#include + +#include "../edeconf.h" +#include "NLS.h" +#include "Run.h" +#include "Util.h" + + +using namespace fltk; +using namespace edelib; + +const char* copying_file = "copying.html"; + + +static Window *aboutWindow; + +void showCopyingInfo() +{ + run_program(tsprintf("file:%s/%s", DOC_PATH, copying_file),false,false,true); +} + +void cb_Click(Button* b, void*) +{ + showCopyingInfo(); +} + +void cb_Close(Button*, void*) +{ + aboutWindow->hide(); +} + +void edelib::about_dialog(const char *progname, const char *progversion, const char *addcomment) +{ + aboutWindow = new Window(275, 190); + aboutWindow->begin(); + {InvisibleBox* o = new InvisibleBox(5, 5, 265, 44); + o->labelsize(18); + o->label(tasprintf("%s %s",progname,progversion)); // tmp will be deallocated by InvisibleBox destructor + o->box(FLAT_BOX); + } + {InvisibleBox* o = new InvisibleBox(5, 50, 265, 20); + o->label(tasprintf(_("Part of Equinox Desktop Environment %s"),PACKAGE_VERSION)); // tmp will be deallocated by InvisibleBox destructor + o->box(FLAT_BOX); + } + new InvisibleBox(5, 70, 265, 20, _("(C) Copyright 2000-2005 EDE Authors")); + {InvisibleBox* o = new InvisibleBox(5, 90, 265, 40, _("This program is licenced under terms of the GNU General Public License version 2 or newer.")); + o->labelsize(10); + o->align(ALIGN_INSIDE|ALIGN_WRAP); + } + {Button* o = new Button(65, 124, 145, 20, _("Click here for details.")); + o->box(NO_BOX); + o->buttonbox(NO_BOX); + o->labelcolor(BLUE); + o->highlight_textcolor(RED); + o->labelsize(10); + o->callback((Callback*)cb_Click); + ((Window*)(o->parent()))->hotspot(o); + } + {Button* o = new Button(95, 152, 80, 25, "&Close"); + o->callback((Callback*)cb_Close); + } + aboutWindow->end(); + + aboutWindow->label(tasprintf(_("About %s"), progname)); // tmp will be deallocated by Window destructor + aboutWindow->set_modal(); + aboutWindow->resizable(aboutWindow); + + aboutWindow->end(); + aboutWindow->show(); +} diff --git a/edelib2/about_dialog.h b/edelib2/about_dialog.h new file mode 100755 index 0000000..65ee1f3 --- /dev/null +++ b/edelib2/about_dialog.h @@ -0,0 +1,27 @@ +/* + * $Id$ + * + * About dialog + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef _edelib_aboutdialog_h_ +#define _edelib_aboutdialog_h_ + +#include +#include +#include + + +namespace edelib { + +void about_dialog(const char *progname, const char *progversion, const char *addcomment = 0); + +} + +#endif diff --git a/edelib2/aboutdialog.fld b/edelib2/aboutdialog.fld new file mode 100755 index 0000000..ee59c76 --- /dev/null +++ b/edelib2/aboutdialog.fld @@ -0,0 +1,71 @@ +# data file for the eFLTK User Interface Designer (eFLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// The EDE control center.} {} + +decl {// Copyright (c) 2000. - 2005. EDE Authors} {} + +decl {// This program is licenced under terms of the} {} + +decl {// GNU General Public Licence version 2 or newer.} {} + +decl {// See COPYING for details} {} + +decl {//} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {Fl_Window *aboutWindow;} {} + +class AboutDialog {open +} { + Function {AboutDialog(const char *progname, const char *progversion, const char *addcomment = 0)} {open return_type void + } { + Fl_Window aboutWindow {open + xywh {652 341 275 190} resizable + extra_code {aboutWindow->label(Fl_String(_("About"))+Fl_String(" ")+Fl_String(progname));} modal visible + } { + Fl_Box {} { + xywh {5 5 265 44} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP label_size 18 + extra_code {o->label(Fl_String(progname)+Fl_String(" ")+Fl_String(progversion));} + } + Fl_Box {} { + label {Part of Equinox Desktop Environment} + xywh {5 49 265 20} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP + extra_code {o->label(o->label() + Fl_String(" "PACKAGE_VERSION));} + } + Fl_Box {} { + label {(C) Copyright 2000-2005 EDE Authors} + xywh {5 74 265 20} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + Fl_Box {} { + label {This program is licenced under terms of the GNU General Public License version 2 or newer.} + xywh {5 98 265 30} align FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP label_size 10 + } + Fl_Button {} { + label {Click here for details.} + callback {showCopyingInfo();} + xywh {65 124 145 20} hotspot box NO_BOX button_box NO_BOX label_color 4 highlight_label_color 1 label_size 10 + } + Fl_Button {} { + label {&Close} + callback {aboutWindow->hide();} selected + xywh {95 152 80 25} + } + } + code {aboutWindow->end(); +aboutWindow->show();} {} + } + Function {showCopyingInfo()} {open private + } { + code {fl_start_child_process("elauncher file:/usr/share/ede/doc/copying.html",false);} {} + } +} diff --git a/edelib2/locale/messages.pot b/edelib2/locale/messages.pot new file mode 100755 index 0000000..66040bd --- /dev/null +++ b/edelib2/locale/messages.pot @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:39+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:27 +msgid "About " +msgstr "" + +#: aboutdialog.cpp:36 +msgid "Part of Equinox Desktop Environment " +msgstr "" + +#: aboutdialog.cpp:40 +msgid "(C) Copyright 2000-2005 EDE Authors" +msgstr "" + +#: aboutdialog.cpp:44 +msgid "" +"This program is licenced under terms of the GNU General Public License " +"version 2 or newer." +msgstr "" + +#: aboutdialog.cpp:49 +msgid "Click here for details." +msgstr "" + +#: aboutdialog.cpp:58 +msgid "&Close" +msgstr "" diff --git a/edelib2/process.cpp b/edelib2/process.cpp new file mode 100755 index 0000000..1bc30ba --- /dev/null +++ b/edelib2/process.cpp @@ -0,0 +1,693 @@ +/* + * $Id$ + * + * edelib::PtyProcess - This class enables us to "chat" with terminal programs synchronously + * Adapted from KDE (kdelibs/kdesu/process.cpp) - original copyright message below + * + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +/* vi: ts=8 sts=4 sw=4 + * + * Id: process.cpp 439322 2005-07-27 18:49:23Z coolo + * + * This file is part of the KDE project, module kdesu. + * Copyright (C) 1999,2000 Geert Jansen + * + * This file contains code from TEShell.C of the KDE konsole. + * Copyright (c) 1997,1998 by Lars Doelle + * + * This is free software; you can use this library under the GNU Library + * General Public License, version 2. See the file "COPYING.LIB" for the + * exact licensing terms. + * + * process.cpp: Functionality to build a front end to password asking + * terminal programs. + */ + +//#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#if defined(__SVR4) && defined(sun) +#include +#include +#endif + +#ifdef HAVE_SYS_SELECT_H +#include // Needed on some systems. +#endif + +//#include +//#include + +//#include +//#include + +#include "process.h" +#include "pty.h" +//#include "kcookie.h" +#include "NLS.h" + +using namespace edelib; + + +int strpos(const char *string, char c) +{ + for (uint i=0;ienv = 0; + m_Pid = 0; + m_Inbuf = m_TTY = m_Exit = m_Command = 0; +} + + +int PtyProcess::init() +{ + delete m_pPTY; + m_pPTY = new PTY(); + m_Fd = m_pPTY->getpt(); + if (m_Fd < 0) + return -1; + if ((m_pPTY->grantpt() < 0) || (m_pPTY->unlockpt() < 0)) + { + fprintf(stderr, "Edelib: PtyProcess: Master setup failed.\n"); + m_Fd = -1; + return -1; + } + if (m_TTY) free(m_TTY); + m_TTY = strdup(m_pPTY->ptsname()); +// m_Inbuf.resize(0); + if (m_Inbuf) free(m_Inbuf); + m_Inbuf = 0; + return 0; +} + + +PtyProcess::~PtyProcess() +{ + if (m_TTY) free(m_TTY); + if (m_Inbuf) free(m_Inbuf); + delete m_pPTY; + delete d; +} + +/** Set additinal environment variables. */ +void PtyProcess::setEnvironment( const char **env ) +{ + // deallocate old environment store + int i=0; + if (d->env) + while (d->env[i] != NULL) + free(d->env[i++]); + + // count number of environment variables + int n_env=0; + while (env[n_env++] != NULL); + d->env = (char**)malloc((n_env+2)*sizeof(char *)); + + // copy env to d->env + i=0; + while (env[i] != NULL) { + d->env[i] = strdup(env[i]); + i++; // gcc insists that strdup(env[i++]) above would be ambiguous... + } + d->env[i] = NULL; +} + +char **PtyProcess::environment() const +{ + return d->env; +} + +/* + * Read one line of input. The terminal is in canonical mode, so you always + * read a line at at time + */ + +char *PtyProcess::readLine(bool block) +{ + int pos; + char *ret = 0; + + if (m_Inbuf && strlen(m_Inbuf)>0) + { + pos = strpos(m_Inbuf,'\n'); + if (pos == -1) + { + ret = strdup(m_Inbuf); + free(m_Inbuf); + m_Inbuf = 0; + } else + { + // ret = part of m_Inbuf before \n + // m_Inbuf = part of m_Inbuf after \n + ret = strdup(m_Inbuf); + free(m_Inbuf); + m_Inbuf = strdup(ret + pos + 1); + ret[pos+1] = '\0'; + } + return ret; + } + + int flags = fcntl(m_Fd, F_GETFL); + if (flags < 0) + { +// kdError(900) << k_lineinfo << "fcntl(F_GETFL): " << perror << "\n"; + fprintf (stderr, "Edelib: PtyProcess: fcntl not working - %d\n", errno); + return ret; + } + int oflags = flags; + if (block) + flags &= ~O_NONBLOCK; + else + flags |= O_NONBLOCK; + + if ((flags != oflags) && (fcntl(m_Fd, F_SETFL, flags) < 0)) + { + // We get an error here when the child process has closed + // the file descriptor already. + return ret; + } + + int nbytes; + char buf[256]; + while (1) + { + nbytes = read(m_Fd, buf, 255); + if (nbytes == -1) + { + if (errno == EINTR) + continue; + else break; + } + if (nbytes == 0) + break; // eof + + buf[nbytes] = '\000'; + if (m_Inbuf) + m_Inbuf = (char*)realloc(m_Inbuf, strlen(m_Inbuf)+nbytes+1); + else { + m_Inbuf = (char*)malloc(nbytes+1); + m_Inbuf[0] = 0; + } + strcat(m_Inbuf, buf); + + ret = strdup(m_Inbuf); + // only one line... + pos = strpos(ret,'\n'); + if (pos != -1) { + free (m_Inbuf); + m_Inbuf = strdup(ret + pos + 1); + ret[pos+1] = '\0'; + } + break; + } + + return ret; +} + + +void PtyProcess::writeLine(const char *line, bool addnl) +{ + if (line && strlen(line)>0) + write(m_Fd, line, strlen(line)); + if (addnl) + write(m_Fd, "\n", 1); +} + + +void PtyProcess::unreadLine(const char *line, bool addnl) +{ + char *tmp = (char*) malloc(strlen(line)+1); + strcpy(tmp,line); + if (addnl) + strcat(tmp, "\n"); + + if (m_Inbuf) { + char *tmp2 = (char*)malloc(strlen(m_Inbuf)+strlen(tmp)+1); + strcpy(tmp2,tmp); + strcat(tmp2,m_Inbuf); + free(m_Inbuf); + m_Inbuf=tmp2; + free(tmp); + } else + m_Inbuf = tmp; +} + +/* + * Fork and execute the command. This returns in the parent. + */ + +int PtyProcess::exec(const char *command, const char **args) +{ + fprintf(stderr, "Edelib: PtyProcess: Running `%s'\n", command); + int i; + + if (init() < 0) + return -1; + + // Open the pty slave before forking. See SetupTTY() + fprintf (stderr, "pty: %s\n", m_TTY); + int slave = open(m_TTY, O_RDWR); + if (slave < 0) + { + fprintf(stderr, "Edelib: PtyProcess: Could not open slave pty.\n"); + return -1; + } + + if ((m_Pid = fork()) == -1) + { + fprintf(stderr, "Edelib: PtyProcess: fork(): %s\n", strerror(errno)); + return -1; + } + + // Parent + if (m_Pid) + { + close(slave); + return 0; + } + + // Child + if (SetupTTY(slave) < 0) { + _exit(1); + } + + i=0; + while (d->env[i] != NULL) + putenv(d->env[i++]); +// unsetenv("KDE_FULL_SESSION"); + + // From now on, terminal output goes through the tty. + + const char *path; +// if (strchr(command,'/')) + path = command; +/* VEDRAN: This is now handled elsewhere - fully qualified path + *must* be provided*/ +// else +// { +// QString file = KStandardDirs::findExe(command); +// if (file.isEmpty()) +// { +// kdError(900) << k_lineinfo << command << " not found\n"; +// _exit(1); +// } +// path = QFile::encodeName(file); +// } + +// const char **argp = (const char **)malloc((args.count()+2)*sizeof(char *)); +/* const char **cptr = args; + int count=0; + while (cptr++) + count++; + fprintf(stderr, "G\n"); + const char **argp = (const char **)malloc((count+2)*sizeof(char *)); + fprintf(stderr, "H\n"); + + i = 0; +// argp[i++] = strdup(path); + cptr = args; + int j=0; + while (cptr[j]) + argp[i++] = strdup(cptr[j++]); +// for (QList::ConstIterator it=args.begin(); it!=args.end(); ++it) +// argp[i++] = *it; + + argp[i + 2] = 0;*/ + + execv(path, const_cast(args)); + _exit(1); + return -1; // Shut up compiler. Never reached. +} + + +/* + * Wait until the terminal is set into no echo mode. At least one su + * (RH6 w/ Linux-PAM patches) sets noecho mode AFTER writing the Password: + * prompt, using TCSAFLUSH. This flushes the terminal I/O queues, possibly + * taking the password with it. So we wait until no echo mode is set + * before writing the password. + * Note that this is done on the slave fd. While Linux allows tcgetattr() on + * the master side, Solaris doesn't. + */ + +int PtyProcess::WaitSlave() +{ + int slave = open(m_TTY, O_RDWR); + if (slave < 0) + { +// kdError(900) << k_lineinfo << "Could not open slave tty.\n"; + return -1; + } + +// kdDebug(900) << k_lineinfo << "Child pid " << m_Pid << endl; + + struct termios tio; + while (1) + { + if (!checkPid(m_Pid)) + { + close(slave); + return -1; + } + if (tcgetattr(slave, &tio) < 0) + { +// kdError(900) << k_lineinfo << "tcgetattr(): " << perror << "\n"; + close(slave); + return -1; + } + if (tio.c_lflag & ECHO) + { +// kdDebug(900) << k_lineinfo << "Echo mode still on.\n"; + waitMS(slave,100); + continue; + } + break; + } + close(slave); + return 0; +} + + +int PtyProcess::enableLocalEcho(bool enable) +{ + int slave = open(m_TTY, O_RDWR); + if (slave < 0) + { +// kdError(900) << k_lineinfo << "Could not open slave tty.\n"; + return -1; + } + struct termios tio; + if (tcgetattr(slave, &tio) < 0) + { +// kdError(900) << k_lineinfo << "tcgetattr(): " << perror << "\n"; + close(slave); return -1; + } + if (enable) + tio.c_lflag |= ECHO; + else + tio.c_lflag &= ~ECHO; + if (tcsetattr(slave, TCSANOW, &tio) < 0) + { +// kdError(900) << k_lineinfo << "tcsetattr(): " << perror << "\n"; + close(slave); return -1; + } + close(slave); + return 0; +} + + +// runChild() -- added by Vedran +// This routine will execute child process capturing all output +// +// Rationale: +// Even though most users today use window managers to run programs and not +// xterms, many XWindow programs will not display any kind of error dialog +// if there is some error that prevents them to run, but instead produce +// some sort of error message on stdout or stderr and set the exit code to +// nonzero. While this makes them easier for scripting purposes, this will +// leave a user unfamiliar with UNIX a bit baffled - they will click the +// shiny icon and nothing will happen. This function should help a window +// manager or program launcher to do something smart about it. + +#define MAXBUF 10000 + +int PtyProcess::runChild() +{ + int ret = NotExited; + int nbytes; + char buf[256]; + + const char *message = _("\n *** Further output ommitted by Edelib ***\n"); + + while (ret == NotExited) { + while (1) { + nbytes = read(m_Fd, buf, 255); + if (nbytes == -1) + { + if (errno == EINTR) + continue; + else break; + } + if (nbytes == 0) + break; // eof + + buf[nbytes] = '\0'; + + // We don't want m_Inbuf to grow too big + if (m_Inbuf && strlen(m_Inbuf)<=MAXBUF) { + m_Inbuf = (char*)realloc(m_Inbuf, strlen(m_Inbuf)+nbytes+1); + strcat(m_Inbuf, buf); + + } else if (m_Inbuf == 0) + m_Inbuf = strdup(buf); + } + ret = checkPidExited(m_Pid); + } + + if (m_Inbuf && strlen(m_Inbuf)>MAXBUF) { + // Attach message about cutting out the rest + m_Inbuf = (char*)realloc(m_Inbuf, strlen(m_Inbuf)+strlen(message)); + strcat(m_Inbuf, message); + } + return ret; +} + +/* + * Copy output to stdout until the child process exists, or a line of output + * matches `m_Exit'. + * We have to use waitpid() to test for exit. Merely waiting for EOF on the + * pty does not work, because the target process may have children still + * attached to the terminal. + */ + +int PtyProcess::waitForChild() +{ + int retval = 1; + + fd_set fds; + FD_ZERO(&fds); + + + while (1) + { + FD_SET(m_Fd, &fds); + int ret = select(m_Fd+1, &fds, 0L, 0L, 0L); + if (ret == -1) + { + if (errno != EINTR) + { +// kdError(900) << k_lineinfo << "select(): " << perror << "\n"; + return -1; + } + ret = 0; + } + + if (ret) + { + char *line = readLine(false); + while (line && strlen(line)>0) + { + if (m_Exit && strlen(m_Exit)>0 && !strncasecmp(line, m_Exit, strlen(m_Exit))) + kill(m_Pid, SIGTERM); + if (m_bTerminal) + { + fputs(line, stdout); + fputc('\n', stdout); + } + line = readLine(false); + } + } + + ret = checkPidExited(m_Pid); + if (ret == Error) + { + if (errno == ECHILD) retval = 0; + else retval = 1; + break; + } + else if (ret == Killed || ret == Crashed) + { + retval = 0; + break; + } + else if (ret == NotExited) + { + // keep checking + } + else + { + retval = ret; + break; + } + } + return retval; +} + +/* + * SetupTTY: Creates a new session. The filedescriptor "fd" should be + * connected to the tty. It is closed after the tty is reopened to make it + * our controlling terminal. This way the tty is always opened at least once + * so we'll never get EIO when reading from it. + */ + +int PtyProcess::SetupTTY(int fd) +{ + // Reset signal handlers + for (int sig = 1; sig < NSIG; sig++) + signal(sig, SIG_DFL); + signal(SIGHUP, SIG_IGN); + + // Close all file handles + struct rlimit rlp; + getrlimit(RLIMIT_NOFILE, &rlp); + for (int i = 0; i < (int)rlp.rlim_cur; i++) + if (i != fd) close(i); + + // Create a new session. + setsid(); + + // Open slave. This will make it our controlling terminal + int slave = open(m_TTY, O_RDWR); + if (slave < 0) + { + fprintf(stderr, "Edelib: PtyProcess: Could not open slave side: %s\n", strerror(errno)); + return -1; + } + close(fd); + +#if defined(__SVR4) && defined(sun) + + // Solaris STREAMS environment. + // Push these modules to make the stream look like a terminal. + ioctl(slave, I_PUSH, "ptem"); + ioctl(slave, I_PUSH, "ldterm"); + +#endif + +#ifdef TIOCSCTTY + ioctl(slave, TIOCSCTTY, NULL); +#endif + + // Connect stdin, stdout and stderr + dup2(slave, 0); dup2(slave, 1); dup2(slave, 2); + if (slave > 2) + close(slave); + + // Disable OPOST processing. Otherwise, '\n' are (on Linux at least) + // translated to '\r\n'. + struct termios tio; + if (tcgetattr(0, &tio) < 0) + { + fprintf (stderr, "Edelib: PtyProcess: tcgetattr(): %s\n", strerror(errno)); + return -1; + } + tio.c_oflag &= ~OPOST; + if (tcsetattr(0, TCSANOW, &tio) < 0) + { + fprintf(stderr, "Edelib: PtyProcess: tcsetattr(): %s\n", strerror(errno)); + return -1; + } + + return 0; +} + +void PtyProcess::virtual_hook( int, void* ) +{ /*BASE::virtual_hook( id, data );*/ } diff --git a/edelib2/process.h b/edelib2/process.h new file mode 100755 index 0000000..32c0962 --- /dev/null +++ b/edelib2/process.h @@ -0,0 +1,205 @@ +/* + * $Id$ + * + * edelib::PtyProcess - This class enables us to "chat" with terminal programs synchronously + * Adapted from KDE (kdelibs/kdesu/process.h) - original copyright message below + * + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +/* vi: ts=8 sts=4 sw=4 + * + * Id: process.h 439322 2005-07-27 18:49:23Z coolo + * + * This file is part of the KDE project, module kdesu. + * Copyright (C) 1999,2000 Geert Jansen + * + * This is free software; you can use this library under the GNU Library + * General Public License, version 2. See the file "COPYING.LIB" for the + * exact licensing terms. + */ + +#ifndef _edelib_Process_h_ +#define _edelib_Process_h_ + +#include + +//#include +//#include +//#include +//#include + +//#include + +namespace edelib { + +class PTY; + +/** + * Synchronous communication with tty programs. + * + * PtyProcess provides synchronous communication with tty based programs. + * The communications channel used is a pseudo tty (as opposed to a pipe) + * This means that programs which require a terminal will work. + */ + +class PtyProcess +{ +public: + PtyProcess(); + virtual ~PtyProcess(); + + /** + * Forks off and execute a command. The command's standard in and output + * are connected to the pseudo tty. They are accessible with readLine + * and writeLine. + * @param command The command to execute. + * @param args The arguments to the command. + */ + int exec(const char *command, const char **args); + + /** + * Reads a line from the program's standard out. Depending on the @em block + * parameter, this call blocks until a single, full line is read. + * @param block Block until a full line is read? + * @return The output string. + */ + char *readLine(bool block=true); + + /** + * Writes a line of text to the program's standard in. + * @param line The text to write. + * @param addNewline Adds a '\n' to the line. + */ + void writeLine(const char *line, bool addNewline=true); + + /** + * Puts back a line of input. + * @param line The line to put back. + * @param addNewline Adds a '\n' to the line. + */ + void unreadLine(const char *line, bool addNewline=true); + + /** + * Sets the exit string. If a line of program output matches this, + * waitForChild() will terminate the program and return. + */ + void setExitString(char *exit) { m_Exit = exit; } + + /** + * Waits for the child to exit, capturing all output. + */ + int runChild(); + + /** + * Waits for the child to exit. See also setExitString. + */ + int waitForChild(); + + /** + * Waits until the pty has cleared the ECHO flag. This is useful + * when programs write a password prompt before they disable ECHO. + * Disabling it might flush any input that was written. + */ + int WaitSlave(); + + /** + * Enables/disables local echo on the pseudo tty. + */ + int enableLocalEcho(bool enable=true); + + /** + * Enables/disables terminal output. Relevant only to some subclasses. + */ + void setTerminal(bool terminal) { m_bTerminal = terminal; } + + /** + * Overwrites the password as soon as it is used. Relevant only to + * some subclasses. + */ + void setErase(bool erase) { m_bErase = erase; } + + /** + * Set additinal environment variables. + */ + void setEnvironment( const char **env ); + + /** + * Returns the filedescriptor of the process. + */ + inline int fd() const {return m_Fd;}; + + /** + * Returns the pid of the process. + */ + inline int pid() const {return m_Pid;}; + +public /* static */: + /* + ** This is a collection of static functions that can be + ** used for process control inside kdesu. I'd suggest + ** against using this publicly. There are probably + ** nicer Qt based ways to do what you want. + */ + + /* + ** Wait @p ms miliseconds (ie. 1/10th of a second is 100ms), + ** using @p fd as a filedescriptor to wait on. Returns + ** select(2)'s result, which is -1 on error, 0 on timeout, + ** or positive if there is data on one of the selected fd's. + ** + ** @p ms must be in the range 0..999 (ie. the maximum wait + ** duration is 999ms, almost one second). + */ + static int waitMS(int fd,int ms); + + + /* + ** Basic check for the existence of @p pid. + ** Returns true iff @p pid is an extant process, + ** (one you could kill - see man kill(2) for signal 0). + */ + static bool checkPid(pid_t pid); + + /* + ** Check process exit status for process @p pid. + ** On error (no child, no exit), return -1. + ** If child @p pid has exited, return its exit status, + ** (which may be zero). + ** If child @p has not exited, return -2. + */ + enum checkPidStatus { Error=-1, NotExited=-2, Killed=-3, Crashed=-4 } ; + static int checkPidExited(pid_t pid); + + +protected: + char **environment() const; + + bool m_bErase, m_bTerminal; + int m_Pid, m_Fd; + char *m_Command, *m_Exit; + +private: + int init(); + int SetupTTY(int fd); + + PTY *m_pPTY; + char *m_Inbuf, *m_TTY; + +protected: + virtual void virtual_hook( int id, void* data ); +private: + class PtyProcessPrivate; + PtyProcessPrivate *d; +}; + + +} + +#endif diff --git a/edelib2/pty.cpp b/edelib2/pty.cpp new file mode 100755 index 0000000..6f8e161 --- /dev/null +++ b/edelib2/pty.cpp @@ -0,0 +1,353 @@ +/* + * $Id$ + * + * edelib::PTY - A class for handling pseudoterminals (PTYs) + * Adapted from KDE (kdelibs/kdesu/kdesu_pty.cpp) - original copyright message below + * + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +/* vi: ts=8 sts=4 sw=4 + * + * $Id$ + * + * This file is part of the KDE project, module kdesu. + * Copyright (C) 1999,2000 Geert Jansen + * + * This file contains code from TEShell.C of the KDE konsole. + * Copyright (c) 1997,1998 by Lars Doelle + * + * This is free software; you can use this library under the GNU Library + * General Public License, version 2. See the file "COPYING.LIB" for the + * exact licensing terms. + * + * pty.cpp: Access to PTY's on different systems a la UNIX98. + */ + + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE /* Needed for getpt, ptsname in glibc 2.1.x systems */ +#endif + +//#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#if defined(__osf__) || defined(__CYGWIN__) +#include +#endif + +//#include + +//#include +//#include +#include "pty.h" + +// FIXME: Blah defines +#define HAVE_GETPT +#define HAVE_PTSNAME +#define HAVE_GRANTPT +#define HAVE_UNLOCKPT + +// stdlib.h is meant to declare the prototypes but doesn't :( +#ifndef __THROW +#define __THROW +#endif + +#ifdef HAVE_GRANTPT +extern "C" int grantpt(int fd) __THROW; +#endif + +#ifdef HAVE_PTSNAME +extern "C" char * ptsname(int fd) __THROW; +#endif + +#ifdef HAVE_UNLOCKPT +extern "C" int unlockpt(int fd) __THROW; +#endif + +#ifdef HAVE__GETPTY +extern "C" char *_getpty(int *, int, mode_t, int); +#endif + +#ifdef HAVE__PTY_H + #include +#endif + +#include + +#ifdef HAVE_LIBUTIL_H + #include +#elif defined(HAVE_UTIL_H) + #include +#endif + + +using namespace edelib; + + +void *qalloc(void *ptr, size_t size) +{ + if (ptr) + return realloc (ptr, size); + else + return malloc (size); +} + + +PTY::PTY() +{ + ptyfd = -1; + ptyname = ttyname = 0; +} + +PTY::~PTY() +{ + if (ptyfd >= 0) + close(ptyfd); + if (ptyname) free (ptyname); + if (ttyname) free (ttyname); +} + + +// Opens a pty master and returns its filedescriptor. + +int PTY::getpt() +{ + +#if defined(HAVE_GETPT) && defined(HAVE_PTSNAME) + + // 1: UNIX98: preferred way + ptyfd = ::getpt(); + ttyname = strdup(::ptsname(ptyfd)); + return ptyfd; + +#elif defined(HAVE_OPENPTY) + +#define MAXNAME 30 + + // 2: BSD interface + // More preferred than the linux hacks + char name[MAXNAME]; + int master_fd, slave_fd; + if (openpty(&master_fd, &slave_fd, name, 0L, 0L) != -1) { + ttyname = (char*)qalloc(ttyname,MAXNAME); + strncpy(ttyname, name, MAXNAME); + name[5]='p'; + ptyname = (char*)qalloc(ptyname,MAXNAME); + strncpy(ptyname, name, MAXNAME); + close(slave_fd); // We don't need this yet // Yes, we do. + ptyfd = master_fd; + return ptyfd; + } + ptyfd = -1; +// kdDebug(900) << k_lineinfo << "Opening pty failed.\n"; + return -1; + +#elif defined(HAVE__GETPTY) + + // 3: Irix interface + int master_fd; + char *tmp = _getpty(&master_fd,O_RDWR,0600,0); + if (tmp) { + ttyname = strdup(tmp); + ptyfd = master_fd; + } else { + ptyfd = -1; +// kdDebug(900) << k_lineinfo << "Opening pty failed.error" << errno << '\n'; + } + return ptyfd; + +#else + + // 4: Open terminal device directly + // 4.1: Try /dev/ptmx first. (Linux w/ Unix98 PTYs, Solaris) + + ptyfd = open("/dev/ptmx", O_RDWR); + if (ptyfd >= 0) { + ptyname = strdup("/dev/ptmx"); +#ifdef HAVE_PTSNAME + ttyname = strdup(::ptsname(ptyfd)); + return ptyfd; +#elif defined (TIOCGPTN) + int ptyno; + if (ioctl(ptyfd, TIOCGPTN, &ptyno) == 0) { + ttyname = (char*)qalloc(ttyname,MAXNAME); + snprintf(ttyname,MAXNAME-1,"/dev/pts/%d", ptyno); + return ptyfd; + } +#endif + close(ptyfd); + } + + // 4.2: Try /dev/pty[p-e][0-f] (Linux w/o UNIX98 PTY's) + + for (const char *c1 = "pqrstuvwxyzabcde"; *c1 != '\0'; c1++) + { + for (const char *c2 = "0123456789abcdef"; *c2 != '\0'; c2++) + { + ptyname = (char*)qalloc(ptyname,strlen("/dev/pty12")); + ttyname = (char*)qalloc(ttyname,strlen("/dev/tty12")); + sprintf(ptyname, "/dev/pty%c%c", *c1, *c2); + sprintf(ttyname, "/dev/tty%c%c", *c1, *c2); + if (access(ptyname, F_OK) < 0) + goto linux_out; + ptyfd = open(ptyname, O_RDWR); + if (ptyfd >= 0) + return ptyfd; + } + } +linux_out: + + // 4.3: Try /dev/pty%d (SCO, Unixware) + + for (int i=0; i<256; i++) + { + ptyname = (char*)qalloc(ptyname,MAXNAME); + ttyname = (char*)qalloc(ttyname,MAXNAME); + snprintf(ptyname, MAXNAME-1, "/dev/ptyp%d", i); + snprintf(ttyname, MAXNAME-1, "/dev/ttyp%d", i); + if (access(ptyname, F_OK) < 0) + break; + ptyfd = open(ptyname, O_RDWR); + if (ptyfd >= 0) + return ptyfd; + } + + + // Other systems ?? + ptyfd = -1; +// kdDebug(900) << k_lineinfo << "Unknown system or all methods failed.\n"; + return -1; + +#endif // HAVE_GETPT && HAVE_PTSNAME + +} + + +int PTY::grantpt() +{ + if (ptyfd < 0) + return -1; + +#ifdef HAVE_GRANTPT + + return ::grantpt(ptyfd); + +#elif defined(HAVE_OPENPTY) + + // the BSD openpty() interface chowns the devices properly for us, + // no need to do this at all + return 0; + +#else + + // konsole_grantpty only does /dev/pty?? + if (strncmp(ptyname, "/dev/pty", 8) != 0) + return 0; + + fprintf (stderr, "Edelib: Pty: Your system doesn't have capabilities for PTYs and we don't implement them."); + return -1; + + // Use konsole_grantpty: +// if (KStandardDirs::findExe("konsole_grantpty").isEmpty()) +// { +// kdError(900) << k_lineinfo << "konsole_grantpty not found.\n"; +// return -1; +// } + + // As defined in konsole_grantpty.c + const int pty_fileno = 3; + + pid_t pid; + if ((pid = fork()) == -1) + { +// kdError(900) << k_lineinfo << "fork(): " << perror << "\n"; + return -1; + } + + if (pid) + { + // Parent: wait for child + int ret; + waitpid(pid, &ret, 0); + if (WIFEXITED(ret) && !WEXITSTATUS(ret)) + return 0; +// kdError(900) << k_lineinfo << "konsole_grantpty returned with error: " +// << WEXITSTATUS(ret) << "\n"; + return -1; + } else + { + // Child: exec konsole_grantpty + if (ptyfd != pty_fileno && dup2(ptyfd, pty_fileno) < 0) + _exit(1); + execlp("konsole_grantpty", "konsole_grantpty", "--grant", (void *)0); +// kdError(900) << k_lineinfo << "exec(): " << perror << "\n"; + _exit(1); + } + + // shut up, gcc + return 0; + +#endif // HAVE_GRANTPT +} + + +/** + * Unlock the pty. This allows connections on the slave side. + */ + +int PTY::unlockpt() +{ + if (ptyfd < 0) + return -1; + +#ifdef HAVE_UNLOCKPT + + // (Linux w/ glibc 2.1, Solaris, ...) + + return ::unlockpt(ptyfd); + +#elif defined(TIOCSPTLCK) + + // Unlock pty (Linux w/ UNIX98 PTY's & glibc 2.0) + int flag = 0; + return ioctl(ptyfd, TIOCSPTLCK, &flag); + +#else + + // Other systems (Linux w/o UNIX98 PTY's, ...) + return 0; + +#endif + +} + + +/** + * Return the slave side name. + */ + +const char *PTY::ptsname() +{ + if (ptyfd < 0) + return 0; + + return ttyname; +} + diff --git a/edelib2/pty.h b/edelib2/pty.h new file mode 100755 index 0000000..0d4d6d3 --- /dev/null +++ b/edelib2/pty.h @@ -0,0 +1,90 @@ +/* + * $Id$ + * + * edelib::PTY - A class for handling pseudoterminals (PTYs) + * Adapted from KDE (kdelibs/kdesu/kdesu_pty.h) - original copyright message below + * + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +/* vi: ts=8 sts=4 sw=4 + * + * Id: kdesu_pty.h 439322 2005-07-27 18:49:23Z coolo + * + * This file is part of the KDE project, module kdesu. + * Copyright (C) 1999,2000 Geert Jansen + * + * This is free software; you can use this library under the GNU Library + * General Public License, version 2. See the file "COPYING.LIB" for the + * exact licensing terms. + */ + + +/** + * PTY compatibility routines. This class tries to emulate a UNIX98 PTY API + * on various platforms. + */ +#ifndef _edelib_PTY_h_ +#define _edelib_PTY_h_ + +//#include + +//#include + +namespace edelib { + +class PTY { + +public: + /** + * Construct a PTY object. + */ + PTY(); + + /** + * Destructs the object. The PTY is closed if it is still open. + */ + ~PTY(); + + /** + * Allocate a pty. + * @return A filedescriptor to the master side. + */ + int getpt(); + + /** + * Grant access to the slave side. + * @return Zero if succesfull, < 0 otherwise. + */ + int grantpt(); + + /** + * Unlock the slave side. + * @return Zero if successful, < 0 otherwise. + */ + int unlockpt(); + + /** + * Get the slave name. + * @return The slave name. + */ + const char *ptsname(); + +private: + + int ptyfd; + char *ptyname, *ttyname; + + class PTYPrivate; + PTYPrivate *d; +}; + +} + +#endif // _edelib_PTY_h_ diff --git a/edewm/Atoms.cpp b/edewm/Atoms.cpp new file mode 100644 index 0000000..0cddd8e --- /dev/null +++ b/edewm/Atoms.cpp @@ -0,0 +1,243 @@ +/* + * $Id: Atoms.cpp 1700 2006-07-22 18:51:10Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Atoms.h" +#include + +// Icccm atoms +Atom _XA_WM_PROTOCOLS; +Atom _XA_WM_DELETE_WINDOW; +Atom _XA_WM_STATE; +Atom _XA_WM_CHANGE_STATE; +Atom _XA_WM_COLORMAP_WINDOWS; +Atom _XA_WM_TAKE_FOCUS; + +Atom _XA_UTF8_STRING; + +// Motif atoms +Atom _XA_MOTIF_HINTS; + +// Netwm atoms +Atom _XA_NET_SUPPORTED; +Atom _XA_NET_SUPPORTING_WM_CHECK; + +Atom _XA_NET_NUMBER_OF_DESKTOPS; +Atom _XA_NET_DESKTOP_GEOMETRY; +Atom _XA_NET_DESKTOP_VIEWPORT; +Atom _XA_NET_CURRENT_DESKTOP; +Atom _XA_NET_DESKTOP_NAMES; +Atom _XA_NET_ACTIVE_WINDOW; +Atom _XA_NET_WORKAREA; +Atom _XA_NET_SHOWING_DESKTOP; +// other root messages +Atom _XA_NET_CLOSE_WINDOW; +Atom _XA_NET_MOVERESIZE_WINDOW; +Atom _XA_NET_RESTACK_WINDOW; +Atom _XA_NET_REQUEST_FRAME_EXTENTS; + +// application messages +Atom _XA_NET_WM_NAME; +Atom _XA_NET_WM_WINDOW_TYPE; +Atom _XA_NET_WM_WINDOW_TYPE_NORMAL; +Atom _XA_NET_WM_WINDOW_TYPE_DOCK; +Atom _XA_NET_WM_WINDOW_TYPE_TOOLBAR; +Atom _XA_NET_WM_WINDOW_TYPE_MENU; +Atom _XA_NET_WM_WINDOW_TYPE_UTIL; +Atom _XA_NET_WM_WINDOW_TYPE_DIALOG; +Atom _XA_NET_WM_WINDOW_TYPE_SPLASH; +Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP; + +// our messages +Atom _XA_EDE_WM_STARTUP_NOTIFY; +Atom _XA_EDE_WM_APP_STARTING; + +// only for debugging +Atom _XA_NET_VIRTUAL_ROOTS; +Atom _XA_NET_DESKTOP_LAYOUT; +Atom _XA_NET_WM_MOVERESIZE; +Atom _XA_NET_WM_VISIBLE_NAME; +Atom _XA_NET_WM_ICON_NAME; +Atom _XA_NET_WM_ICON_VISIBLE_NAME; +Atom _XA_NET_WM_DESKTOP; +Atom _XA_NET_WM_STATE; +Atom _XA_NET_WM_STATE_MODAL; //Needs transient for (root for whole group) +Atom _XA_NET_WM_STATE_STICKY; //Pos fixed, even if virt. desk. scrolls +Atom _XA_NET_WM_STATE_MAXIMIZED_VERT; +Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ; +Atom _XA_NET_WM_STATE_SHADED; +Atom _XA_NET_WM_STATE_SKIP_TASKBAR; +Atom _XA_NET_WM_STATE_SKIP_PAGER; +Atom _XA_NET_WM_STATE_HIDDEN; +Atom _XA_NET_WM_STATE_FULLSCREEN; +Atom _XA_NET_WM_STATE_ABOVE; +Atom _XA_NET_WM_STATE_BELOW; +Atom _XA_NET_WM_STATE_DEMANDS_ATTENTION; +Atom _XA_NET_WM_ALLOWED_ACTIONS; +Atom _XA_NET_WM_ACTION_MOVE; +Atom _XA_NET_WM_ACTION_RESIZE; +Atom _XA_NET_WM_ACTION_MINIMIZE; +Atom _XA_NET_WM_ACTION_SHADE; +Atom _XA_NET_WM_ACTION_STICK; +Atom _XA_NET_WM_ACTION_MAXIMIZE_HORZ; +Atom _XA_NET_WM_ACTION_MAXIMIZE_VERT; +Atom _XA_NET_WM_ACTION_FULLSCREEN; +Atom _XA_NET_WM_ACTION_CHANGE_DESKTOP; +Atom _XA_NET_WM_ACTION_CLOSE; +Atom _XA_NET_WM_STRUT; +Atom _XA_NET_WM_STRUT_PARTIAL; +Atom _XA_NET_WM_ICON_GEOMETRY; +Atom _XA_NET_WM_ICON; +Atom _XA_NET_WM_PID; +Atom _XA_NET_WM_HANDLED_ICONS; +Atom _XA_NET_WM_USER_TIME; +Atom _XA_NET_FRAME_EXTENTS; +Atom _XA_NET_WM_PING; +Atom _XA_NET_WM_SYNC_REQUEST; +Atom _XA_NET_WM_STATE_STAYS_ON_TOP; +Atom _XA_KWM_WIN_ICON; + + +#ifdef _DEBUG + #define REGISTER_ATOM(id, name) \ + id = XInternAtom(fl_display, name, False);\ + atoms_map[id] = name +#else + #define REGISTER_ATOM(id, name) \ + id = XInternAtom(fl_display, name, False) +#endif + +#define COUNT(x) (sizeof(x)/sizeof(x[0])) + +#ifdef _DEBUG +void InitAtoms(Display* display, std::map& atoms_map) +#else +void InitAtoms(Display* display) +#endif +{ + // Icccm + REGISTER_ATOM(_XA_WM_PROTOCOLS, "WM_PROTOCOLS"); + REGISTER_ATOM(_XA_WM_DELETE_WINDOW, "WM_DELETE_WINDOW"); + REGISTER_ATOM(_XA_WM_STATE, "WM_STATE"); + REGISTER_ATOM(_XA_WM_CHANGE_STATE, "WM_CHANGE_STATE"); + REGISTER_ATOM(_XA_WM_COLORMAP_WINDOWS, "WM_COLORMAP_WINDOWS"); + REGISTER_ATOM(_XA_WM_TAKE_FOCUS, "WM_TAKE_FOCUS"); + + REGISTER_ATOM(_XA_UTF8_STRING, "UTF8_STRING"); + + // Motif + REGISTER_ATOM(_XA_MOTIF_HINTS, "_MOTIF_WM_HINTS"); + + // Netwm + REGISTER_ATOM(_XA_NET_SUPPORTED, "_NET_SUPPORTED"); + REGISTER_ATOM(_XA_NET_SUPPORTING_WM_CHECK, "_NET_SUPPORTING_WM_CHECK"); + REGISTER_ATOM(_XA_NET_NUMBER_OF_DESKTOPS, "_NET_NUMBER_OF_DESKTOPS"); + REGISTER_ATOM(_XA_NET_DESKTOP_GEOMETRY, "_NET_DESKTOP_GEOMETRY"); + REGISTER_ATOM(_XA_NET_DESKTOP_VIEWPORT, "_NET_DESKTOP_VIEWPORT"); + REGISTER_ATOM(_XA_NET_CURRENT_DESKTOP, "_NET_CURRENT_DESKTOP"); + REGISTER_ATOM(_XA_NET_DESKTOP_NAMES, "_NET_DESKTOP_NAMES"); + REGISTER_ATOM(_XA_NET_ACTIVE_WINDOW, "_NET_ACTIVE_WINDOW"); + REGISTER_ATOM(_XA_NET_WORKAREA, "_NET_WORKAREA"); + REGISTER_ATOM(_XA_NET_SHOWING_DESKTOP, "_NET_SHOWING_DESKTOP"); + + // other root messages + REGISTER_ATOM(_XA_NET_CLOSE_WINDOW, "_NET_CLOSE_WINDOW"); + REGISTER_ATOM(_XA_NET_MOVERESIZE_WINDOW, "_NET_MOVERESIZE_WINDOW"); + REGISTER_ATOM(_XA_NET_RESTACK_WINDOW, "_NET_RESTACK_WINDOW"); + REGISTER_ATOM(_XA_NET_REQUEST_FRAME_EXTENTS, "_NET_REQUEST_FRAME_EXTENTS"); + + REGISTER_ATOM(_XA_NET_WM_NAME, "_NET_WM_NAME"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE, "_NET_WM_WINDOW_TYPE"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_NORMAL, "_NET_WM_WINDOW_TYPE_NORMAL"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DOCK, "_NET_WM_WINDOW_TYPE_DOCK"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_TOOLBAR, "_NET_WM_WINDOW_TYPE_TOOLBAR"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_MENU, "_NET_WM_WINDOW_TYPE_MENU"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_UTIL, "_NET_WM_WINDOW_TYPE_UTIL"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DIALOG, "_NET_WM_WINDOW_TYPE_DIALOG"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DIALOG, "_NET_WM_WINDOW_TYPE_SPLASH"); + REGISTER_ATOM(_XA_NET_WM_WINDOW_TYPE_DESKTOP, "_NET_WM_WINDOW_TYPE_DESKTOP"); + + // window messages + REGISTER_ATOM(_XA_NET_WM_STATE, "_NET_WM_STATE"); + REGISTER_ATOM(_XA_NET_WM_STATE_MAXIMIZED_VERT,"_NET_WM_STATE_MAXIMIZED_VERT"); + REGISTER_ATOM(_XA_NET_WM_STATE_MAXIMIZED_HORZ,"_NET_WM_STATE_MAXIMIZED_HORZ"); + REGISTER_ATOM(_XA_NET_WM_STATE_SHADED, "_NET_WM_STATE_SHADED"); + REGISTER_ATOM(_XA_NET_WM_STATE_ABOVE, "_NET_WM_STATE_ABOVE"); + REGISTER_ATOM(_XA_NET_WM_STATE_BELOW, "_NET_WM_STATE_BELOW"); + + // our messages + REGISTER_ATOM(_XA_EDE_WM_STARTUP_NOTIFY, "_EDE_WM_STARTUP_NOTIFY"); + REGISTER_ATOM(_XA_EDE_WM_APP_STARTING, "_EDE_WM_APP_STARTING"); + + // debugging stuff (aka. not implemented) + REGISTER_ATOM(_XA_NET_VIRTUAL_ROOTS, "_NET_VIRTUAL_ROOTS"); + REGISTER_ATOM(_XA_NET_DESKTOP_LAYOUT, "_NET_DESKTOP_LAYOUT"); + REGISTER_ATOM(_XA_NET_WM_MOVERESIZE, "_NET_WM_MOVERESIZE"); + REGISTER_ATOM(_XA_NET_WM_VISIBLE_NAME, "_NET_WM_VISIBLE_NAME"); + REGISTER_ATOM(_XA_NET_WM_ICON_NAME, "_NET_WM_ICON_NAME"); + REGISTER_ATOM(_XA_NET_WM_ICON_VISIBLE_NAME, "_NET_WM_ICON_VISIBLE_NAME"); + REGISTER_ATOM(_XA_NET_WM_DESKTOP, "_NET_WM_DESKTOP"); + REGISTER_ATOM(_XA_NET_WM_STATE_MODAL, "_NET_WM_STATE_MODAL"); + REGISTER_ATOM(_XA_NET_WM_STATE_STICKY, "_NET_WM_STATE_STICKY"); + REGISTER_ATOM(_XA_NET_WM_STATE_SKIP_TASKBAR, "_NET_WM_STATE_SKIP_TASKBAR"); + REGISTER_ATOM(_XA_NET_WM_STATE_SKIP_PAGER, "_NET_WM_STATE_SKIP_PAGER"); + REGISTER_ATOM(_XA_NET_WM_STATE_HIDDEN, "_NET_WM_STATE_HIDDEN"); + REGISTER_ATOM(_XA_NET_WM_STATE_FULLSCREEN, "_NET_WM_STATE_FULLSCREEN"); + REGISTER_ATOM(_XA_NET_WM_STATE_DEMANDS_ATTENTION, "_NET_WM_STATE_DEMANDS_ATTENTION"); + REGISTER_ATOM(_XA_NET_WM_ALLOWED_ACTIONS, "_NET_WM_ALLOWED_ACTIONS"); + REGISTER_ATOM(_XA_NET_WM_ACTION_MOVE, "_NET_WM_ACTION_MOVE"); + REGISTER_ATOM(_XA_NET_WM_ACTION_RESIZE, "_NET_WM_ACTION_RESIZE"); + REGISTER_ATOM(_XA_NET_WM_ACTION_MINIMIZE, "_NET_WM_ACTION_MINIMIZE"); + REGISTER_ATOM(_XA_NET_WM_ACTION_SHADE, "_NET_WM_ACTION_SHADE"); + REGISTER_ATOM(_XA_NET_WM_ACTION_STICK, "_NET_WM_ACTION_STICK"); + REGISTER_ATOM(_XA_NET_WM_ACTION_MAXIMIZE_HORZ,"_NET_WM_ACTION_MAXIMIZE_HORZ"); + REGISTER_ATOM(_XA_NET_WM_ACTION_MAXIMIZE_VERT,"_NET_WM_ACTION_MAXIMIZE_VERT"); + REGISTER_ATOM(_XA_NET_WM_ACTION_FULLSCREEN, "_NET_WM_ACTION_FULLSCREEN"); + REGISTER_ATOM(_XA_NET_WM_ACTION_CHANGE_DESKTOP,"_NET_WM_ACTION_CHANGE_DESKTOP"); + REGISTER_ATOM(_XA_NET_WM_ACTION_CLOSE, "_NET_WM_ACTION_CLOSE"); + REGISTER_ATOM(_XA_NET_WM_STRUT, "_NET_WM_STRUT"); + REGISTER_ATOM(_XA_NET_WM_STRUT_PARTIAL, "_NET_WM_STRUT_PARTIAL"); + REGISTER_ATOM(_XA_NET_WM_ICON_GEOMETRY, "_NET_WM_ICON_GEOMETRY"); + REGISTER_ATOM(_XA_NET_WM_ICON, "_NET_WM_ICON"); + REGISTER_ATOM(_XA_NET_WM_PID, "_NET_WM_PID"); + REGISTER_ATOM(_XA_NET_WM_HANDLED_ICONS, "_NET_WM_HANDLED_ICONS"); + REGISTER_ATOM(_XA_NET_WM_USER_TIME, "_NET_WM_USER_TIME"); + REGISTER_ATOM(_XA_NET_FRAME_EXTENTS, "_NET_FRAME_EXTENTS"); + REGISTER_ATOM(_XA_NET_WM_PING, "_NET_WM_PING"); + REGISTER_ATOM(_XA_NET_WM_SYNC_REQUEST, "_NET_WM_SYNC_REQUEST"); + REGISTER_ATOM(_XA_NET_WM_STATE_STAYS_ON_TOP, "_NET_WM_STATE_STAYS_ON_TOP"); + REGISTER_ATOM(_XA_KWM_WIN_ICON, "_KWM_WIN_ICON"); +} + +// these are list of current implemented atoms +void SetSupported(Window root) +{ + Atom atoms[] = + { + _XA_NET_SUPPORTED, + _XA_NET_SUPPORTING_WM_CHECK, + + _XA_NET_WM_NAME, + _XA_NET_WM_WINDOW_TYPE, + _XA_NET_WM_WINDOW_TYPE_NORMAL, + _XA_NET_WM_WINDOW_TYPE_DOCK, + _XA_NET_WM_WINDOW_TYPE_TOOLBAR, + _XA_NET_WM_WINDOW_TYPE_MENU, + _XA_NET_WM_WINDOW_TYPE_UTIL, + _XA_NET_WM_WINDOW_TYPE_DIALOG, + _XA_NET_WM_WINDOW_TYPE_SPLASH, + _XA_NET_WM_WINDOW_TYPE_DESKTOP + }; + + XChangeProperty(fl_display, root, _XA_NET_SUPPORTED, XA_ATOM, 32, PropModeReplace, + (unsigned char*)atoms, COUNT(atoms)); +} + diff --git a/edewm/Atoms.h b/edewm/Atoms.h new file mode 100644 index 0000000..b37ce79 --- /dev/null +++ b/edewm/Atoms.h @@ -0,0 +1,131 @@ +/* + * $Id: Atoms.h 1700 2006-07-22 18:51:10Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __ATOMS_H__ +#define __ATOMS_H__ + +#ifdef _DEBUG +#include +#endif + +#include + +// Icccm atoms +extern Atom _XA_WM_PROTOCOLS; +extern Atom _XA_WM_DELETE_WINDOW; +extern Atom _XA_WM_STATE; +extern Atom _XA_WM_CHANGE_STATE; +extern Atom _XA_WM_COLORMAP_WINDOWS; +extern Atom _XA_WM_TAKE_FOCUS; + +extern Atom _XA_UTF8_STRING; + +// Motif atoms +extern Atom _XA_MOTIF_HINTS; + +// Netwm atoms +// root messages +extern Atom _XA_NET_SUPPORTED; +extern Atom _XA_NET_SUPPORTING_WM_CHECK; +extern Atom _XA_NET_NUMBER_OF_DESKTOPS; +extern Atom _XA_NET_DESKTOP_GEOMETRY; +extern Atom _XA_NET_DESKTOP_VIEWPORT; +extern Atom _XA_NET_CURRENT_DESKTOP; +extern Atom _XA_NET_DESKTOP_NAMES; +extern Atom _XA_NET_ACTIVE_WINDOW; +extern Atom _XA_NET_WORKAREA; +extern Atom _XA_NET_SHOWING_DESKTOP; +// other root messages +extern Atom _XA_NET_CLOSE_WINDOW; +extern Atom _XA_NET_MOVERESIZE_WINDOW; +extern Atom _XA_NET_RESTACK_WINDOW; +extern Atom _XA_NET_REQUEST_FRAME_EXTENTS; + +// application messages +extern Atom _XA_NET_WM_NAME; +extern Atom _XA_NET_WM_WINDOW_TYPE; + extern Atom _XA_NET_WM_WINDOW_TYPE_NORMAL; + extern Atom _XA_NET_WM_WINDOW_TYPE_DOCK; + extern Atom _XA_NET_WM_WINDOW_TYPE_TOOLBAR; + extern Atom _XA_NET_WM_WINDOW_TYPE_MENU; + extern Atom _XA_NET_WM_WINDOW_TYPE_UTIL; + extern Atom _XA_NET_WM_WINDOW_TYPE_DIALOG; + extern Atom _XA_NET_WM_WINDOW_TYPE_SPLASH; + extern Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP; + +extern Atom _XA_NET_WM_STATE_SHADED; +extern Atom _XA_NET_WM_STATE_MAXIMIZED_VERT; +extern Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ; +extern Atom _XA_NET_WM_STATE_ABOVE; +extern Atom _XA_NET_WM_STATE_BELOW; + +// how to apply above states +#define _NET_WM_STATE_REMOVE 0 // remove/unset property +#define _NET_WM_STATE_ADD 1 // add/set property +#define _NET_WM_STATE_TOGGLE 2 // toggle property + +// our messages +extern Atom _XA_EDE_WM_STARTUP_NOTIFY; + extern Atom _XA_EDE_WM_APP_STARTING; + +// atoms for debugging (not implemented) +extern Atom _XA_NET_VIRTUAL_ROOTS; +extern Atom _XA_NET_DESKTOP_LAYOUT; +extern Atom _XA_NET_WM_MOVERESIZE; +extern Atom _XA_NET_RESTACK_WINDOW; +extern Atom _XA_NET_REQUEST_FRAME_EXTENTS; +extern Atom _XA_NET_WM_NAME; +extern Atom _XA_NET_WM_VISIBLE_NAME; +extern Atom _XA_NET_WM_ICON_NAME; +extern Atom _XA_NET_WM_ICON_VISIBLE_NAME; +extern Atom _XA_NET_WM_DESKTOP; +extern Atom _XA_NET_WM_STATE; +extern Atom _XA_NET_WM_STATE_MODAL; //Needs transient for (root for whole group) +extern Atom _XA_NET_WM_STATE_STICKY; //Pos fixed, even if virt. desk. scrolls +extern Atom _XA_NET_WM_STATE_SKIP_TASKBAR; +extern Atom _XA_NET_WM_STATE_SKIP_PAGER; +extern Atom _XA_NET_WM_STATE_HIDDEN; +extern Atom _XA_NET_WM_STATE_FULLSCREEN; +extern Atom _XA_NET_WM_STATE_DEMANDS_ATTENTION; + +extern Atom _XA_NET_WM_ALLOWED_ACTIONS; +extern Atom _XA_NET_WM_ACTION_MOVE; +extern Atom _XA_NET_WM_ACTION_RESIZE; +extern Atom _XA_NET_WM_ACTION_MINIMIZE; +extern Atom _XA_NET_WM_ACTION_SHADE; +extern Atom _XA_NET_WM_ACTION_STICK; +extern Atom _XA_NET_WM_ACTION_MAXIMIZE_HORZ; +extern Atom _XA_NET_WM_ACTION_MAXIMIZE_VERT; +extern Atom _XA_NET_WM_ACTION_FULLSCREEN; +extern Atom _XA_NET_WM_ACTION_CHANGE_DESKTOP; +extern Atom _XA_NET_WM_ACTION_CLOSE; +extern Atom _XA_NET_WM_STRUT; +extern Atom _XA_NET_WM_STRUT_PARTIAL; +extern Atom _XA_NET_WM_ICON_GEOMETRY; +extern Atom _XA_NET_WM_ICON; +extern Atom _XA_NET_WM_PID; +extern Atom _XA_NET_WM_HANDLED_ICONS; +extern Atom _XA_NET_WM_USER_TIME; +extern Atom _XA_NET_FRAME_EXTENTS; +extern Atom _XA_NET_WM_PING; +extern Atom _XA_NET_WM_SYNC_REQUEST; +extern Atom _XA_NET_WM_STATE_STAYS_ON_TOP; +extern Atom _XA_KWM_WIN_ICON; + +#ifdef _DEBUG + void InitAtoms(Display* display, std::map& atoms_map); +#else + void InitAtoms(Display* display); +#endif +void SetSupported(Window root); + +#endif // __ATOMS_H__ diff --git a/edewm/COMPLIANCE b/edewm/COMPLIANCE new file mode 100644 index 0000000..2d4e4c4 --- /dev/null +++ b/edewm/COMPLIANCE @@ -0,0 +1,128 @@ +$Id: COMPLIANCE 1688 2006-07-19 12:01:58Z karijes $ + +Edewm standards compliance +========================== + +Map: +---- + (?): pending for implementation + (+): implemented + (/): partially implemented + (x): listed in _NET_SUPPORTED, but not implemented + (-): probably will not be implemented + +Netwm compliance (http://freedesktop.org/Standards/wm-spec/) +============================================================ + +Root window +----------- + +(+) _NET_SUPPORTED, +(x) _NET_SUPPORTING_WM_CHECK +(?) _NET_CLIENT_LIST +(?) _NET_CLIENT_LIST_STACKING +(?) _NET_NUMBER_OF_DESKTOPS +(?) _NET_DESKTOP_GEOMETRY +(?) _NET_DESKTOP_VIEWPORT +(?) _NET_CURRENT_DESKTOP +(?) _NET_DESKTOP_NAMES +(?) _NET_ACTIVE_WINDOW +(?) _NET_WORKAREA +(?) _NET_SUPPORTING_WM_CHECK +(-) _NET_VIRTUAL_ROOTS +(?) _NET_DESKTOP_LAYOUT +(?) _NET_SHOWING_DESKTOP +(?) _NET_CLOSE_WINDOW +(?) _NET_MOVERESIZE_WINDOW +(?) _NET_WM_MOVERESIZE + +Application window +------------------ + +(x) _NET_WM_NAME +(/) _NET_WM_WINDOW_TYPE + (+) _NET_WM_WINDOW_TYPE_NORMAL + (?) _NET_WM_WINDOW_TYPE_DOCK + (+) _NET_WM_WINDOW_TYPE_TOOLBAR + (+) _NET_WM_WINDOW_TYPE_MENU + (?) _NET_WM_WINDOW_TYPE_UTIL + (?) _NET_WM_WINDOW_TYPE_DIALOG + (+) _NET_WM_WINDOW_TYPE_SPLASH + (?) _NET_WM_WINDOW_TYPE_DESKTOP + +(/) _NET_WM_STATE + (?) _NET_WM_STATE_MODAL + (?) _NET_WM_STATE_STICKY + (/) _NET_WM_STATE_MAXIMIZED_VERT + (/) _NET_WM_STATE_MAXIMIZED_HORZ + (+) _NET_WM_STATE_SHADED + (?) _NET_WM_STATE_SKIP_TASKBAR + (?) _NET_WM_STATE_SKIP_PAGER + (?) _NET_WM_STATE_HIDDEN + (?) _NET_WM_STATE_FULLSCREEN + (?) _NET_WM_STATE_ABOVE + (?) _NET_WM_STATE_BELOW + +(-) _NET_WM_ALLOWED_ACTIONS + Although in edewm there is facility for easier implementing + this message, I am not quite sure where will be used. + +(?) _NET_WM_STRUT +(?) _NET_WM_STRUT_PARTIAL +(?) _NET_WM_ICON_GEOMETRY +(?) _NET_WM_ICON + +(-) _NET_WM_PID + Probably later will be implemented. For now it is not needed + at all. + +(-) _NET_WM_HANDLED_ICONS +(?) _NET_WM_USER_TIME + + +Icccm compliance +================ + +Version 2.0 is used as guide. + +Note: in WM_NORMAL_HINTS, win_gravitiy is ignored since edewm always +assume and use NorthWestGravity. This will be changed. + + +Other +===== + +Motif +----- + +(/) _MOTIF_HINTS + This hint is, as I can see, very standardized now, but implementations + differ. Edewm use only decor data from it, since based on decor, allowed + actions are deduced. + +KDE +--- +(?) _KWM_WIN_ICON + Previous edewm version loaded this message, but not used. Probably + will be implemented for history reasons (hm...) + +GNOME +----- +(-) None of them, since no one requested it. + + +Ambiguities +=========== +If ambiguities arise between similar hints, Netwm is preferred. Then +comes Icccm and Other. + + +Notes +===== +This document will be tried to be up to date with package. If you notice some +omissions, please mail me at [karijes at users.sf.net]. + +Important: since standard's documentation is very sparse (nothing unusual) and +possibility for bad/wrong interpretation of some parts exists, your notice about +them (or different behaviors among other window managers) will be much appreciated. +Mail is above. diff --git a/edewm/Cursor.cpp b/edewm/Cursor.cpp new file mode 100644 index 0000000..733f8ac --- /dev/null +++ b/edewm/Cursor.cpp @@ -0,0 +1,298 @@ +/* + * $Id: Cursor.cpp 1700 2006-07-22 18:51:10Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Cursor.h" +#include "Frame.h" +#include "Tracers.h" + +#include +#include + +#include + +#ifdef _DEBUG + #include + std::map cursors_map; +#endif + +/* Windows like cursors (copied from FLTK). + * These are cursors for some shapes (given in comments). For others, default X are used. + */ +#define CURSORSIZE 16 +#define HOTXY 8 +static struct TableEntry { + uchar bits[CURSORSIZE*CURSORSIZE/8]; + uchar mask[CURSORSIZE*CURSORSIZE/8]; + Cursor cursor; +} table[] = { + {{ // FL_CURSOR_NS + 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}, + { + 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0xc0, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xf0, 0x0f, + 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01}}, + {{ // FL_CURSOR_EW + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, + 0x0c, 0x30, 0xfe, 0x7f, 0xfe, 0x7f, 0x0c, 0x30, 0x08, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x1c, 0x38, + 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{ // FL_CURSOR_NWSE + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x78, 0x00, + 0xe8, 0x00, 0xc0, 0x01, 0x80, 0x03, 0x00, 0x17, 0x00, 0x1e, 0x00, 0x1c, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + { + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x7c, 0x00, 0xfc, 0x00, + 0xfc, 0x01, 0xec, 0x03, 0xc0, 0x37, 0x80, 0x3f, 0x00, 0x3f, 0x00, 0x3e, + 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00}}, + {{ // FL_CURSOR_NESW + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1e, + 0x00, 0x17, 0x80, 0x03, 0xc0, 0x01, 0xe8, 0x00, 0x78, 0x00, 0x38, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3f, + 0x80, 0x3f, 0xc0, 0x37, 0xec, 0x03, 0xfc, 0x01, 0xfc, 0x00, 0x7c, 0x00, + 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0}, {0}} // FL_CURSOR_NONE & unknown +}; + +// Mozilla-like busy cursor +#define LAWATCH_WIDTH 32 +#define LAWATCH_HEIGHT 32 +#define LAWATCH_HOTXY 2 +const char left_arrow_watch_bits [] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, + 0xfc, 0x3b, 0x00, 0x00, 0x7c, 0x38, 0x00, 0x00, 0x6c, 0x54, 0x00, 0x00, + 0xc4, 0xdc, 0x00, 0x00, 0xc0, 0x44, 0x00, 0x00, 0x80, 0x39, 0x00, 0x00, + 0x80, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const char left_arrow_watch_mask [] = +{ + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x3b, 0x00, 0x00, + 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, + 0xee, 0xff, 0x01, 0x00, 0xe4, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, + 0xc0, 0x7f, 0x00, 0x00, 0x80, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +Cursor CreateLeftArrowWatch(void) +{ + XColor dummy; + Pixmap p = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), + left_arrow_watch_bits, LAWATCH_WIDTH, LAWATCH_HEIGHT); + Pixmap m = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), + left_arrow_watch_mask, LAWATCH_WIDTH, LAWATCH_HEIGHT); + + Cursor cursor = XCreatePixmapCursor(fl_display, p, m, &dummy, &dummy, LAWATCH_HOTXY, LAWATCH_HOTXY); + + // recolor created cursor to usefull colors + XColor fgc; + Fl_Color fg = fl_get_color(FL_BLACK); + fgc.red = (fg>>16)&0xFF00; + fgc.green = (fg>>8)&0xFF00; + fgc.blue = fg & 0xFF00; + + XColor bgc; + Fl_Color bg = fl_get_color(FL_WHITE); + bgc.red = (bg>>16)&0xFF00; + bgc.green = (bg>>8)&0xFF00; + bgc.blue = bg & 0xFF00; + XRecolorCursor(fl_display, cursor, &fgc, &bgc); + + return cursor; +} + +Cursor CreateFltkCursor(Fl_Cursor c) +{ + Cursor cursor; + if(!c) + return None; + + if(c >= FL_CURSOR_NS) + { + TableEntry* q = (c > FL_CURSOR_NESW) ? table+4 : table+(c-FL_CURSOR_NS); + if(!(q->cursor)) + { + XColor dummy; + Pixmap p = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), (const char*)q->bits, + CURSORSIZE, CURSORSIZE); + Pixmap m = XCreateBitmapFromData(fl_display, RootWindow(fl_display, fl_screen), (const char*)q->mask, + CURSORSIZE, CURSORSIZE); + q->cursor = XCreatePixmapCursor(fl_display, p, m, &dummy, &dummy, HOTXY, HOTXY); + + XFreePixmap(fl_display, m); + XFreePixmap(fl_display, p); + } + cursor = q->cursor; + } + else + cursor = XCreateFontCursor(fl_display, (c-1)*2); + + // recolor created cursor to usefull colors + XColor fgc; + Fl_Color fg = fl_get_color(FL_BLACK); + fgc.red = (fg>>16)&0xFF00; + fgc.green = (fg>>8)&0xFF00; + fgc.blue = fg & 0xFF00; + + XColor bgc; + Fl_Color bg = fl_get_color(FL_WHITE); + bgc.red = (bg>>16)&0xFF00; + bgc.green = (bg>>8)&0xFF00; + bgc.blue = bg & 0xFF00; + XRecolorCursor(fl_display, cursor, &fgc, &bgc); + + return cursor; +} + +CursorHandler::CursorHandler() +{ + cursors_loaded = false; + + /* In some cases curr_cursor_type can't be set + * fast enough (mostly for Frame::grab_cursor()) which + * will crash whole wm. This will prevent that. + */ + curr_cursor_type = CURSOR_DEFAULT; +} + +CursorHandler::~CursorHandler() +{ + if(st != X_CURSORS) + return; + + for(int i = 0; i < CURSOR_LIST_SIZE; i++) + XFreeCursor(fl_display, cursors[i]); +} + +void CursorHandler::load(CursorShapeType s) +{ + TRACE_FUNCTION("void CursorHandler::load(CursorShapeType s)"); + + st = s; + if(st == FLTK_CURSORS) + { + cursors[CURSOR_DEFAULT] = CreateFltkCursor(FL_CURSOR_ARROW); + cursors[CURSOR_MOVE] = CreateFltkCursor(FL_CURSOR_MOVE); + + //cursors[CURSOR_WAIT] = CreateFltkCursor(FL_CURSOR_WAIT); + cursors[CURSOR_WAIT] = CreateLeftArrowWatch(); + + cursors[CURSOR_HELP] = CreateFltkCursor(FL_CURSOR_HELP); + cursors[CURSOR_N] = CreateFltkCursor(FL_CURSOR_NS); + cursors[CURSOR_NE] = CreateFltkCursor(FL_CURSOR_NESW); + cursors[CURSOR_E] = CreateFltkCursor(FL_CURSOR_WE); + cursors[CURSOR_SE] = CreateFltkCursor(FL_CURSOR_NWSE); + cursors[CURSOR_S] = CreateFltkCursor(FL_CURSOR_NS); + cursors[CURSOR_SW] = CreateFltkCursor(FL_CURSOR_NESW); + cursors[CURSOR_W] = CreateFltkCursor(FL_CURSOR_WE); + cursors[CURSOR_NW] = CreateFltkCursor(FL_CURSOR_NWSE); + } + else + { + cursors[CURSOR_DEFAULT] = XCreateFontCursor(fl_display, XC_left_ptr); + cursors[CURSOR_MOVE] = XCreateFontCursor(fl_display, XC_fleur); + + //cursors[CURSOR_WAIT] = XCreateFontCursor(fl_display, XC_watch); + cursors[CURSOR_WAIT] = CreateLeftArrowWatch(); + + cursors[CURSOR_HELP] = XCreateFontCursor(fl_display, XC_question_arrow); + cursors[CURSOR_N] = XCreateFontCursor(fl_display, XC_top_side); + cursors[CURSOR_NE] = XCreateFontCursor(fl_display, XC_top_right_corner); + cursors[CURSOR_E] = XCreateFontCursor(fl_display, XC_right_side); + cursors[CURSOR_SE] = XCreateFontCursor(fl_display, XC_bottom_right_corner); + cursors[CURSOR_S] = XCreateFontCursor(fl_display, XC_bottom_side); + cursors[CURSOR_SW] = XCreateFontCursor(fl_display, XC_bottom_left_corner); + cursors[CURSOR_W] = XCreateFontCursor(fl_display, XC_left_side); + cursors[CURSOR_NW] = XCreateFontCursor(fl_display, XC_top_left_corner); + } + +#ifdef _DEBUG + cursors_map[CURSOR_DEFAULT] = "CURSOR_DEFAULT"; + cursors_map[CURSOR_MOVE] = "CURSOR_MOVE"; + cursors_map[CURSOR_WAIT] = "CURSOR_WAIT"; + cursors_map[CURSOR_HELP] = "CURSOR_HELP"; + cursors_map[CURSOR_N] = "CURSOR_N"; + cursors_map[CURSOR_NE] = "CURSOR_NE"; + cursors_map[CURSOR_E] = "CURSOR_E"; + cursors_map[CURSOR_SE] = "CURSOR_SE"; + cursors_map[CURSOR_S] = "CURSOR_S"; + cursors_map[CURSOR_SW] = "CURSOR_SW"; + cursors_map[CURSOR_W] = "CURSOR_W"; + cursors_map[CURSOR_NW] = "CURSOR_NW"; +#endif + + cursors_loaded = true; +} + +void CursorHandler::set_cursor(Frame* f, CursorType t) +{ + TRACE_FUNCTION("void CursorHandler::set_cursor(Frame* f, CursorType t)"); +#ifdef _DEBUG + ELOG("Cursor set to %s", cursors_map[t]); +#endif + assert(cursors_loaded != false); + assert(f != NULL); + + // do not set cursor to same type again + if(t == curr_cursor_type) + return; + + curr_cursor_type = t; + + XDefineCursor(fl_display, fl_xid(f), cursors[curr_cursor_type]); +} + +// only for root window +void CursorHandler::set_root_cursor(void) +{ + TRACE_FUNCTION("void CursorHandler::set_root_cursor(void)"); + assert(cursors_loaded != false); + + root_window_cursor = cursors[CURSOR_DEFAULT]; + XDefineCursor(fl_display, RootWindow(fl_display, fl_screen), root_window_cursor); +} + +void CursorHandler::set_root_cursor(CursorType t) +{ + TRACE_FUNCTION("void CursorHandler::set_root_cursor(CursorType t)"); + assert(cursors_loaded != false); + + root_window_cursor = cursors[t]; + XDefineCursor(fl_display, RootWindow(fl_display, fl_screen), root_window_cursor); +} + +Cursor CursorHandler::current_cursor(void) const +{ + TRACE_FUNCTION("Cursor CursorHandler::current_cursor(void) const"); + //assert(current_cursor > 0 && current_cursor < CURSOR_LIST_SIZE); + return cursors[curr_cursor_type]; +} diff --git a/edewm/Cursor.h b/edewm/Cursor.h new file mode 100644 index 0000000..a393e18 --- /dev/null +++ b/edewm/Cursor.h @@ -0,0 +1,70 @@ +/* + * $Id: Cursor.h 1700 2006-07-22 18:51:10Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __CURSOR_H__ +#define __CURSOR_H__ + +#include // Cursor + +/* Main existance of this class is + * to allow using efltk and X cursors + * (...and maybe bitmapped ones :). + */ + +enum CursorType +{ + CURSOR_DEFAULT = 0, + CURSOR_MOVE, + CURSOR_WAIT, + CURSOR_HELP, + CURSOR_N, + CURSOR_NE, + CURSOR_E, + CURSOR_SE, + CURSOR_S, + CURSOR_SW, + CURSOR_W, + CURSOR_NW, + CURSOR_NONE +}; + +#define CURSOR_LIST_SIZE 13 + +enum CursorShapeType +{ + FLTK_CURSORS = 0, + X_CURSORS +}; + +class Frame; + +class CursorHandler +{ + private: + int cursors[CURSOR_LIST_SIZE]; + CursorShapeType st; + CursorType curr_cursor_type; + Cursor root_window_cursor; + bool locked; + bool cursors_loaded; + public: + CursorHandler(); + ~CursorHandler(); + void load(CursorShapeType s); + void set_cursor(Frame* f, CursorType t); + void set_root_cursor(void); + void set_root_cursor(CursorType t); + Cursor current_cursor(void) const; + Cursor root_cursor(void) { return root_window_cursor; } + CursorShapeType cursor_shape_type(void) { return st; } +}; +#endif diff --git a/edewm/Desktop.h b/edewm/Desktop.h new file mode 100644 index 0000000..097c744 --- /dev/null +++ b/edewm/Desktop.h @@ -0,0 +1,81 @@ +/* + * $Id: Desktop.h 1653 2006-06-09 13:08:58Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef _DESKTOP_H_ +#define _DESKTOP_H_ + +#include + +class Desktop { +public: + Desktop(const char *name); + ~Desktop(); + + const char* name() const { return name_; } + void name(const char *name); + int number() const { return number_; } + + static Desktop *desktop(int num); + + static Desktop *next(); + static Desktop *prev(); + + static Desktop *current() { return current_; } + static int current_num() { return current_ ? current_->number() : -1; } + + static Desktop* add(const char *name=0); + + static void current(Desktop *cur); + static void current(int cur) { current(desktop(cur)); } + + static int desktop_count() { return desktop_count_; } + + static void update_desktop_viewport(); + static void update_desktop_workarea(); + static void update_desktop_geometry(); + + static void update_desktop_count(uint cnt, bool send=true); + static void update_desktop_names(bool send=true); + + static void set_names(); + + int junk; // for temporary storage by menu builder + +private: + static Desktop* current_; + static int desktop_count_; + + const char* name_; + int number_; +}; + +class Desktop_List : public Fl_Ptr_List { +public: + Desktop_List() : Fl_Ptr_List() { } + + void append(Desktop *item) { Fl_Ptr_List::append((void *)item); } + void prepend(Desktop *item) { Fl_Ptr_List::prepend((void *)item); } + void insert(uint pos, Desktop *item) { Fl_Ptr_List::insert(pos, (void *)item); } + void replace(uint pos, Desktop *item) { Fl_Ptr_List::replace(pos, (void *)item); } + void remove(uint pos) { Fl_Ptr_List::remove(pos); } + bool remove(Desktop *item) { return Fl_Ptr_List::remove((void *)item); } + int index_of(const Desktop *w) const { return Fl_Ptr_List::index_of((void*)w); } + Desktop *item(uint index) const { return (Desktop*)Fl_Ptr_List::item(index); } + + Desktop **data() { return (Desktop**)items; } + + Desktop *operator [](uint ind) const { return (Desktop *)items[ind]; } +}; + +extern Desktop_List desktops; + +#endif diff --git a/edewm/Events.cpp b/edewm/Events.cpp new file mode 100644 index 0000000..e7add63 --- /dev/null +++ b/edewm/Events.cpp @@ -0,0 +1,508 @@ +/* + * $Id: Events.cpp 1712 2006-07-25 10:04:41Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Events.h" +#include "Frame.h" +#include "Titlebar.h" +#include "Windowmanager.h" +#include "Tracers.h" +#include "Atoms.h" +#include "Hints.h" +#include "Cursor.h" +#include "debug.h" + +#include + + +#define FRAME_NAME(frame) (frame->label ? frame->label : "NULL") + +FrameEventHandler::FrameEventHandler(Frame* f) : curr_frame(f) +{ + assert(curr_frame != NULL); +} + +FrameEventHandler::~FrameEventHandler() +{ +} + +/* Handle efltk events. + * Some events like FL_FOCUS and FL_UNFOCUS are not handled, since + * efltk does not receive this event when when should (for example: + * one window is focused, but other shoud be automatically unfocused). + * X on ther hand send FocusIn and FocusOut when above events ocurr. + */ +int FrameEventHandler::handle_fltk(int event) +{ + long gggg; + static long bbbb; + static CursorType ctype; + + if(curr_frame->show_titlebar) + { + Titlebar* tbar = curr_frame->titlebar; + assert(tbar != NULL); + + if(!curr_frame->resizing()) + { + if(Fl::event_inside(tbar->x(), tbar->y(), tbar->w(), tbar->h()) || curr_frame->moving()) + return tbar->handle(event); + } + } + + switch(event) + { + case FL_SHOW: + case FL_HIDE: + return 0; + + case FL_ENTER: + ELOG("FrameEventHandler: FL_ENTER"); + return 1; + + case FL_LEAVE: + ELOG("FrameEventHandler: FL_LEAVE"); + return 1; + + case FL_MOVE: + { + // note, I am using coordinates _inside_ window + gggg = curr_frame->resize_type(Fl::event_x(), Fl::event_y()); + switch(gggg) + { + case ResizeTypeUpLeft: + ELOG("FrameEventHandler (resizing): ResizeTypeUpLeft"); + curr_frame->set_cursor(CURSOR_NW); + ctype = CURSOR_NW; + bbbb = ResizeTypeUpLeft; + return 1; + case ResizeTypeUpRight: + ELOG("FrameEventHandler (resizing): ResizeTypeUpRight"); + curr_frame->set_cursor(CURSOR_NE); + ctype = CURSOR_NE; + bbbb = ResizeTypeUpRight; + return 1; + case ResizeTypeDownLeft: + ELOG("FrameEventHandler (resizing): ResizeTypeDownLeft"); + curr_frame->set_cursor(CURSOR_SW); + ctype = CURSOR_SW; + bbbb = ResizeTypeDownLeft; + return 1; + case ResizeTypeDownRight: + ELOG("FrameEventHandler (resizing): ResizeTypeDownRight"); + curr_frame->set_cursor(CURSOR_SE); + ctype = CURSOR_SE; + bbbb = ResizeTypeDownRight; + return 1; + case ResizeTypeUp: + ELOG("FrameEventHandler (resizing): ResizeTypeUp"); + curr_frame->set_cursor(CURSOR_N); + ctype = CURSOR_N; + bbbb = ResizeTypeUp; + return 1; + case ResizeTypeLeft: + ELOG("FrameEventHandler (resizing): ResizeTypeLeft"); + curr_frame->set_cursor(CURSOR_W); + ctype = CURSOR_W; + bbbb = ResizeTypeLeft; + return 1; + case ResizeTypeRight: + ELOG("FrameEventHandler (resizing): ResizeTypeRight"); + curr_frame->set_cursor(CURSOR_E); + ctype = CURSOR_E; + bbbb = ResizeTypeRight; + return 1; + case ResizeTypeDown: + ELOG("FrameEventHandler (resizing): ResizeTypeDown"); + curr_frame->set_cursor(CURSOR_S); + ctype = CURSOR_S; + bbbb = ResizeTypeDown; + return 1; + default: + //curr_frame->set_cursor(CURSOR_DEFAULT); + bbbb = ResizeTypeNone; + return 1; + } + return 1; + } + + case FL_PUSH: + ELOG("FrameEventHandler: FL_PUSH"); + + if(Fl::event_is_click()) + { + curr_frame->borders_color(CLICKED); + curr_frame->raise(); + } + return 1; + + case FL_DRAG: + ELOG("FrameEventHandler: FL_DRAG"); + if(bbbb != ResizeTypeNone) + { + if(!curr_frame->resizing()) + { + curr_frame->grab_cursor(); + curr_frame->resize_start(); + curr_frame->show_coordinates_window(); + } + + //XGrabServer(fl_display); + + curr_frame->set_cursor(ctype); + curr_frame->resize_window(Fl::event_x_root(), Fl::event_y_root(), bbbb); + curr_frame->update_coordinates_window(); + } + return 1; + + case FL_RELEASE: + ELOG("FrameEventHandler: FL_RELEASE"); + if(curr_frame->resizing()) + { + //XUngrabServer(fl_display); + curr_frame->resize_end(); + curr_frame->ungrab_cursor(); + curr_frame->hide_coordinates_window(); + curr_frame->set_cursor(CURSOR_DEFAULT); + } + + //curr_frame->color(FL_GRAY); + curr_frame->borders_color(FOCUSED); + return 1; + default: + // let other events go to sizers + return curr_frame->handle_parent(event); + } + return 0; + +} + +int FrameEventHandler::handle_x(XEvent* event) +{ + switch(event->type) + { + case MapRequest: + return map_event(event->xmaprequest); + case UnmapNotify: + return unmap_event(event->xunmap); + case ReparentNotify: + return reparent_event(event->xreparent); + case DestroyNotify: + return destroy_event(event->xdestroywindow); + /*case ClientMessage: + return client_message(event->xclient);*/ + case LeaveNotify: + case EnterNotify: + return enter_leave_event(event->xcrossing); + + /* FocusIn, as FocusOut is not used, but for + * debugging is here. When we map a large number + * of windows, X seems goes into (for me unknown) + * infinite FocusIn/FocusOut loop, which blocks + * everything. So, to keep us far away from pain, + * leave FocusIn for someone else. Here should not + * be used. + */ + case FocusIn: + { + ELOG("FrameEventHandler: FocusIn"); + switch(event->xfocus.mode) + { + case NotifyNormal: + ELOG(" - NotifyNormal"); + break; + case NotifyGrab: + ELOG(" - NotifyGrab"); + break; + case NotifyUngrab: + ELOG(" - NotifyUngrab"); + break; + } + + if(event->xfocus.send_event) + ELOG(" - got from SendEvent"); + + /* This will prevent menus, etc. + * to steal focus from parent. + */ + //if(event->xfocus.mode == NotifyNormal) + // curr_frame->focus(); + } + return 1; + + /* FocusOut really fuck up focusing so + * it is not handled. Either xfocus.mode == NotifyNormal + * does not helps when window emits menu, since menu + * itself will yield FocusOut for parent and FocusIn + * for itself. Unfortunately I don't know any toolkit + * which export some kind MENU flag, where we can check. + * So, let we shut it up, make ourself little bit happy + * and take all burden of FocusOut to ourself (which made + * use very very unhappy). + */ + case FocusOut: + { + ELOG("FrameEventHandler: FocusOut"); + switch(event->xfocus.mode) + { + case NotifyNormal: + ELOG(" - NotifyNormal"); + break; + case NotifyGrab: + ELOG(" - NotifyGrab"); + break; + case NotifyUngrab: + ELOG(" - NotifyUngrab"); + break; + } + + if(event->xfocus.send_event) + ELOG(" - got from SendEvent"); + //curr_frame->unfocus(); + } + return 1; + case PropertyNotify: + return property_event(event->xproperty); + case ConfigureRequest: + return configure_event(event->xconfigurerequest); + return 1; + + default: +#ifdef _DEBUG + const char* name = WindowManager::instance()->xevent_map[event->type]; + if(name) + ELOG("Got unhandled %s in frame", name); + else + ELOG("Got unhandled event in frame (%i)", event->type); +#endif + return 0; + } + return 0; +} + +int FrameEventHandler::map_event(const XMapRequestEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::map_event(const XMapRequestEvent& e)"); + assert(e.window == curr_frame->window()); + + curr_frame->map(); + + return 1; +} + +int FrameEventHandler::unmap_event(const XUnmapEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::unmap_event(const XUnmapEvent& e)"); + //assert(e.window == curr_frame->window()); + if(e.window != curr_frame->window()) + return 1; + + ELOG("FrameEventHandler: UnmapNotify (%s)", FRAME_NAME(curr_frame->fdata)); + if(e.from_configure) + return 1; + + if(curr_frame->option(FrameOptIgnoreUnmap)) + { + ELOG("Frame have FrameOptIgnoreUnmap, skiping this event"); + curr_frame->clear_option(FrameOptIgnoreUnmap); + } + else + curr_frame->unmap(); + + return 1; +} + +int FrameEventHandler::reparent_event(const XReparentEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::reparent_event(const XReparentEvent& e)"); + ELOG("FrameEventHandler: ReparentNotify (%s)", FRAME_NAME(curr_frame->fdata)); + + // echo + if(e.parent == fl_xid(curr_frame)) + return 1; + // app is trying to tear-off again ??? + if(e.parent == fl_xid(WindowManager::instance())) + return 1; + + if(e.override_redirect) + { + ELOG("override_redirect from reparent_event"); + } + + EWARNING("Destroy in ReparentNotify!"); + curr_frame->destroy(); + + return 1; +} + +int FrameEventHandler::destroy_event(const XDestroyWindowEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::destroy_event(const XDestroyWindowEvent& e)"); + + curr_frame->destroy(); + return 1; +} + +int FrameEventHandler::client_message(const XClientMessageEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::client_message(const XClientMessageEvent& e)"); + + if(!ValidateDrawable(e.window)) + return 1; + +#ifdef _DEBUG + Atom a = e.message_type; + const char* name = WindowManager::instance()->atom_map[a]; + if(name) + ELOG("FrameEventHandler: unhandled atom %s", name); + else + ELOG("FrameEventHandler: unhandled atom %x", a); +#endif + + return 1; +} + +/* Handle property atoms. Here Netwm atoms are handled + * last, giving them precedence and chance to overwrite + * Icccm stuf (list XA_WM_NAME vs. _XA_NET_WM_NAME) + */ +int FrameEventHandler::property_event(const XPropertyEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::property_event(const XPropertyEvent& e)"); + + if(e.atom == XA_WM_NAME) + ELOG("XA_WM_NAME"); + if(e.atom == XA_WM_ICON_NAME) + ELOG("XA_WM_ICON_NAME"); + if(e.atom == XA_WM_HINTS) + ELOG("XA_WM_HINTS"); + if(e.atom == XA_WM_NORMAL_HINTS) + ELOG("XA_WM_NORMAL_HINTS"); + if(e.atom == XA_WM_SIZE_HINTS) + ELOG("XA_WM_SIZE_HINTS"); + if(e.atom == XA_WM_TRANSIENT_FOR) + ELOG("XA_WM_TRANSIENT_FOR"); + if(e.atom == _XA_WM_COLORMAP_WINDOWS) + ELOG("_XA_WM_COLORMAP_WINDOWS"); + if(e.atom == _XA_WM_STATE) + ELOG("_XA_WM_STATE"); + if(e.atom == _XA_WM_PROTOCOLS) + ELOG("_XA_WM_PROTOCOLS"); + if(e.atom == _XA_NET_WM_WINDOW_TYPE) + ELOG("_XA_NET_WM_WINDOW_TYPE"); + if(e.atom == _XA_NET_WM_STRUT) + { + ELOG("_XA_NET_WM_STRUT"); + int dummy; + WindowManager::instance()->hints()->netwm_strut(curr_frame->fdata->window, + &dummy, &dummy, &dummy, &dummy); + } + if(e.atom == _XA_NET_WM_NAME) + ELOG("_XA_NET_WM_NAME"); + if(e.atom == _XA_NET_WM_ICON) + ELOG("_XA_NET_WM_ICON"); + if(e.atom == _XA_KWM_WIN_ICON) + ELOG("_XA_KWM_WIN_ICON"); + + return 1; +} + +/* Handle EnterNotify and LeaveNotify events. + * Here is used only LeaveNotify to change cursor, since it will be + * trigered only on window borders (exact what is needed). On other + * hand, entering frame's child (or plain window) is handled by + * window itself, with ability to change cursor as like. + * Note, this event could not be simulated with FL_LEAVE, since + * it will be trigered only when mouse if off from whole window + * (including childs). + * + * Also, checkings of frame resizings are must, since mouse moving is + * usually faster than window resizing, so we will get flickering in + * cursors changes if not checked. + * + * TODO: better will be cursor is grabbed ! + */ +int FrameEventHandler::enter_leave_event(const XCrossingEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::enter_event(const XEnterWindowEvent& e)"); + if(curr_frame->state(FrameStateUnmapped)) + return 1; + + if(e.type == LeaveNotify && !curr_frame->resizing()) + curr_frame->set_cursor(CURSOR_DEFAULT); + + return 1; +} + +/* This message we can get for windows we know about and we don't know + * about (since all root messages are redirected to us). So we first check + * is window is managed by us, and apply changes to it via our functions. + * Otherwise, we configure window directly. + * + * Note: in fltk's fluid(1.1.6), setting x coords will send us pretty + * amount of junk (change x and y in the same time !!!). This is probably + * bug in fluid. + */ +int FrameEventHandler::configure_event(const XConfigureRequestEvent& e) +{ + TRACE_FUNCTION("int FrameEventHandler::configure_event(const XConfigureRequestEvent& e)"); + + if(curr_frame->state(FrameStateUnmapped)) + return 1; + + if(curr_frame->window() == e.window) + { + ELOG("ConfigureRequest from frame"); + if(!ValidateDrawable(curr_frame->window())) + return 1; + + int x_pos = curr_frame->fdata->plain.x; + int y_pos = curr_frame->fdata->plain.y; + int w_sz = curr_frame->fdata->plain.w; + int h_sz = curr_frame->fdata->plain.h; + + if(e.value_mask & CWX) + x_pos = e.x; + if(e.value_mask & CWY) + y_pos = e.y; + if(e.value_mask & CWWidth) + w_sz = e.width; + if(e.value_mask & CWHeight) + h_sz = e.height; + + if(e.value_mask & CWStackMode) + { + if(e.detail == Above) + curr_frame->raise(); + if(e.detail == Below) + curr_frame->lower(); + } + + curr_frame->set_size(x_pos, y_pos, w_sz, h_sz, true); + } + else + { + ELOG("ConfigureRequest from unhandled window"); + + if(ValidateDrawable(e.window)) + { + XWindowChanges wc; + wc.x = e.x; + wc.y = e.y; + wc.width = e.width; + wc.height = e.height; + wc.stack_mode = e.detail; + XConfigureWindow(fl_display, e.window, e.value_mask, &wc); + } + } + + return 1; +} diff --git a/edewm/Events.h b/edewm/Events.h new file mode 100644 index 0000000..1dfced1 --- /dev/null +++ b/edewm/Events.h @@ -0,0 +1,45 @@ +/* + * $Id: Events.h 1683 2006-07-17 14:05:47Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __EVENTS_H__ +#define __EVENTS_H__ + +#include // XEvent + +/* Purpose of this class is to + * split and minimize already big Frame class + */ + +class Frame; + +class FrameEventHandler +{ + private: + Frame* curr_frame; + + int map_event(const XMapRequestEvent& e); + int unmap_event(const XUnmapEvent& e); + int reparent_event(const XReparentEvent& e); + int destroy_event(const XDestroyWindowEvent& e); + int client_message(const XClientMessageEvent& e); + int property_event(const XPropertyEvent& e); + int enter_event(const XCrossingEvent& e); + int configure_event(const XConfigureRequestEvent& e); + int enter_leave_event(const XCrossingEvent& e); + public: + FrameEventHandler(Frame* f); + ~FrameEventHandler(); + int handle_fltk(int e); + int handle_x(XEvent* e); +}; + +#endif diff --git a/edewm/Frame.cpp b/edewm/Frame.cpp new file mode 100644 index 0000000..14f8100 --- /dev/null +++ b/edewm/Frame.cpp @@ -0,0 +1,1700 @@ +/* + * $Id: Frame.cpp 1736 2006-08-19 00:38:53Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Frame.h" +#include "Events.h" +#include "Hints.h" +#include "Windowmanager.h" +#include "Atoms.h" +#include "Utils.h" +#include "Titlebar.h" +#include "debug.h" +#include "Sound.h" +#include "Tracers.h" + +#include +#include // snprintf + +#ifdef SHAPE + #include +#endif // SHAPE + + +#define FRAME_NAME(frame) (frame->label ? frame->label : "NULL") + +// TODO: just for testing +#define BORDER_UPDOWN 3 +#define BORDER_LEFTRIGHT 3 + +#define BORDER_THIN_UPDOWN 1 +#define BORDER_THIN_LEFTRIGHT 1 + +#define SIZER_W 15 +#define SIZER_H 15 + +#define MIN_W 0 +#define MIN_H 0 + +#define TITLEBAR_H 20 + +#define EDGE_SNAP 10 + + +void FrameBorders::item_color(Fl_Color c, FrameBordersState s, bool is_border) +{ + switch(s) + { + case FOCUSED: + (is_border) ? (focused = c) : (sizers_focused = c); + break; + case UNFOCUSED: + (is_border) ? (unfocused = c) : (sizers_unfocused = c); + break; + case CLICKED: + (is_border) ? (clicked = c) : (sizers_clicked = c); + break; + } +} + +Fl_Color FrameBorders::item_color(FrameBordersState s, bool is_border) +{ + switch(s) + { + case FOCUSED: + if(is_border) + return focused; + else + return sizers_focused; + case UNFOCUSED: + if(is_border) + return unfocused; + else + return sizers_unfocused; + case CLICKED: + if(is_border) + return clicked; + else + return sizers_clicked; + } + + return FL_GRAY; +} + +void FrameBorders::updown(int s) +{ + updown_w = s; + updown2x_w = s * 2; +} + +void FrameBorders::leftright(int s) +{ + leftright_h = s; + leftright2x_h = s * 2; +} + +void FrameBorders::shaped(bool s) +{ + is_shaped = s; +} + +CoordinatesView::CoordinatesView() : Fl_Window(120, 20) +{ + color(FL_WHITE); + box(FL_BORDER_BOX); + data_box = new Fl_Box(0, 0, w(), h()); + data_box->label_size(11); + end(); +} + +CoordinatesView::~CoordinatesView() +{ +} + +void CoordinatesView::display_data(int x, int y, int w, int h) +{ + snprintf(data, sizeof(data)-1, "%i x %i x %i x %i", x, y, w, h); + data_box->label(data); + data_box->redraw_label(); + redraw(); +} + +Frame::Frame(Window win, XWindowAttributes* attrs) : + Fl_Window(0, 0), + fdata(new FrameData), + screen_x(0), + screen_y(0), + screen_w(0), + screen_h(0), + restore_x(0), + restore_y(0), + restore_w(0), + restore_h(0), + opaque_move_resize(false), + show_titlebar(true), + is_moving(false), + is_resizing(false), + cursor_grabbed(false), + snap_move(false), + show_coordinates(true) +{ + // register our events + events = new FrameEventHandler(this); + + if(show_coordinates) + cview = new CoordinatesView(); + + fdata->window = win; + fdata->transient_win = None; + fdata->colormap = DefaultColormap(fl_display, fl_screen); + fdata->option = 0; + fdata->type = FrameTypeNormal; + fdata->state = 0; + fdata->win_gravity = 0; + fdata->autoplace = true; + fdata->icon_pixmap = 0; + fdata->icon_mask = 0; + fdata->label = 0; + fdata->label_alocated = false; + + fdata->plain.x = fdata->plain.y = 0; + fdata->plain.w = fdata->plain.h = 0; + fdata->plain.offset_x = fdata->plain.offset_y = 0; + fdata->plain.inc_w = fdata->plain.inc_h = 0; + fdata->plain.max_w = fdata->plain.max_h = 0; + fdata->plain.min_w = fdata->plain.min_h = 0; + + overlay.x = overlay.y = overlay.w = overlay.h = 0; + + borders.border_color(fl_darker(FL_GRAY), FOCUSED); + borders.border_color(FL_WHITE, UNFOCUSED); + borders.border_color(FL_BLUE, CLICKED); + + borders.sizers_color(FL_GRAY, FOCUSED); + borders.sizers_color(FL_RED, UNFOCUSED); + borders.sizers_color(FL_RED, CLICKED); + // recalculated in setup_borders + borders.updown(0); + borders.leftright(0); + borders.shaped(false); + + // we does not use window specific borders + fdata->plain.border = 0; + + // collect data + WindowManager* wm = WindowManager::instance(); + + screen_x = wm->x(); + screen_y = wm->y(); + screen_w = wm->w(); + screen_h = wm->h(); + + XWindowAttributes init_attrs; + if(attrs) + { + init_attrs = *attrs; + set_option(FrameOptIgnoreUnmap); + } + else + XGetWindowAttributes(fl_display, fdata->window, &init_attrs); + + fdata->plain.x = init_attrs.x; + fdata->plain.y = init_attrs.y; + fdata->plain.w = init_attrs.width; + fdata->plain.h = init_attrs.height; + + load_colormap(init_attrs.colormap); + + if(init_attrs.map_state == IsViewable) + set_state(FrameStateNormal); + else if(init_attrs.map_state == IsUnmapped) + set_state(FrameStateIconized); + else if(init_attrs.map_state == IsUnviewable) + ELOG("Got IsUnviewable map_state, skiping for now..."); + + wm->hints()->icccm_size(fdata); + wm->hints()->icccm_wm_hints(fdata); + wm->hints()->netwm_window_type(fdata); + wm->hints()->netwm_window_state(fdata); + wm->hints()->mwm_load_hints(fdata); + + load_label(); + + // do this asap so we don't miss any events... + XSelectInput(fl_display, fdata->window, + VisibilityChangeMask | ColormapChangeMask | + PropertyChangeMask | FocusChangeMask /*| StructureNotifyMask*/); + + XGetTransientForHint(fl_display, fdata->window, &fdata->transient_win); + if(fdata->transient_win != None) + { + fdata->type = FrameTypeDialog; + ELOG("Got transient_win"); + } + + if(fdata->type == FrameTypeNormal || fdata->type == FrameTypeDialog) + { + set_option(FrameOptHaveTitlebar | FrameOptHaveBorder | FrameOptCloseable | FrameOptMoveable); + if(fdata->type == FrameTypeNormal) + set_option(FrameOptResizeable | FrameOptHideable); + + borders.leftright(BORDER_LEFTRIGHT); + borders.updown(BORDER_UPDOWN); + } + + init_overlay(borders.updown()); + + x(fdata->plain.x); + y(fdata->plain.y); + + w(fdata->plain.w + borders.leftright2x()); + h(fdata->plain.h + borders.updown2x()); + XSetWindowBorderWidth(fl_display, fdata->window, fdata->plain.border); + + XMoveResizeWindow(fl_display, fdata->window, fdata->plain.x, fdata->plain.y, + fdata->plain.w, fdata->plain.h); + + ELOG("XWindowAttributes: %i %i %i %i", fdata->plain.x, fdata->plain.y, fdata->plain.w, fdata->plain.h); + begin(); + Fl_Color szc = borders.sizers_color(FOCUSED); + sizer_top_left = new Fl_Box(1,1,SIZER_W,SIZER_H); + sizer_top_left->box(FL_FLAT_BOX); + sizer_top_left->color(szc); + + sizer_top_right = new Fl_Box(1,1,SIZER_W,SIZER_H); + sizer_top_right->box(FL_FLAT_BOX); + sizer_top_right->color(szc); + + sizer_bottom_left = new Fl_Box(1,1,SIZER_W,SIZER_H); + sizer_bottom_left->box(FL_FLAT_BOX); + sizer_bottom_left->color(szc); + + sizer_bottom_right = new Fl_Box(1,1,SIZER_W,SIZER_H); + sizer_bottom_right->box(FL_FLAT_BOX); + sizer_bottom_right->color(szc); + + + if(show_titlebar) + { + titlebar = new Titlebar(this, borders.leftright(), borders.updown(), + w() - borders.leftright2x(), TITLEBAR_H, "Untitled"); + + if(fdata->label) + titlebar->label(fdata->label); + + /* Offset for fdata->window in our frame. + * Used in reparenting. + */ + fdata->plain.offset_x = borders.leftright(); + fdata->plain.offset_y = borders.updown() + titlebar->h(); + } + else + { + fdata->plain.offset_x = borders.leftright(); + fdata->plain.offset_y = borders.updown(); + } + + end(); + + /* Reposition and resize main frame + * but skip it if position is already + * set by some hints or fdata->autoplace is false. + * + * NOTE: efltk set minimal position 2x2 + * so this is check. If window is initialy + * tried to be placed on 0x0 it will be + * misteriously hidden. + */ + int pos_x; + int pos_y; + if(fdata->autoplace && wm->query_best_position(&pos_x, &pos_y, w(), h())) + { + if(pos_x <= 2) + pos_x = x(); + if(pos_y <= 2) + pos_y = y(); + + ELOG("This window does use autoplace"); + } + else + { + // recorrect positions made up in setup_borders() ?@#@! including + // titlebar if present + if((x() - borders.leftright()) > screen_x) + pos_x = x() - borders.leftright(); + else + pos_x = x(); + + if(show_titlebar && (y() - titlebar->h() - borders.updown()) > screen_y) + pos_y = y() - titlebar->h() - borders.updown(); + else if((y() - borders.updown()) > screen_y) + pos_y = y() - borders.updown(); + else + pos_y = y(); + } + + if(show_titlebar) + resize(pos_x, pos_y, w(), h() + titlebar->h()); + else + resize(pos_x, pos_y, w(), h()); + + place_sizers(x(), y(), w(), h()); + + // only normal windows can be resized + if(fdata->type != FrameTypeNormal) + hide_sizers(); + + set_override(); + // color of main window background, aka borders + color(borders.border_color(FOCUSED)); + create(); + reparent_window(); + configure_notify(); + + // rest is in content_click() + XGrabButton(fl_display, AnyButton, AnyModifier, fdata->window, + False, ButtonPressMask, GrabModeSync, GrabModeAsync, None, None); + + // show our creation + XMapWindow(fl_display, fdata->window); + show(); + + if(borders.shaped()) + shape_borders(); + + //shape_edges(); + + XAddToSaveSet(fl_display, fdata->window); + + // TODO: this handling should be in WindowManager + wm->window_list.push_back(this); + + if(fdata->transient_win != None) + { + ELOG("Added to aot_list"); + // latest mapped windows will be _before_ others iff they are transient + wm->aot_list.push_front(this); + } + else + { + ELOG("Added to stack_list"); + wm->stack_list.push_front(this); + } + + if(fdata->option & FrameOptTakeFocus) + focus(); + + ELOG("Window loaded, frame: 0x%x plain: 0x%x", fl_xid(this), fdata->window); + XFlush(fl_display); +} + +Frame::~Frame() +{ + ELOG("Frame::~Frame"); + if(fdata->label_alocated) + free(fdata->label); + + XFreeGC(fl_display, overlay.inverted_gc); + + if(show_coordinates) + delete cview; + + delete events; + delete fdata; +} +#if 0 +void Frame::feed_data(XWindowAttributes* existing) +{ + WindowManager* wm = WindowManager::instance(); + + screen_x = wm->x(); + screen_y = wm->y(); + screen_w = wm->w(); + screen_h = wm->h(); + + wm->hints()->icccm_size(fdata); + + // TODO: For testing only. Better solution will be. + fdata->type = wm->hints()->netwm_window_type(fdata); + + setup_borders(); + + if(fdata->type == FrameTypeSplash + || fdata->type == FrameTypeMenu + || fdata->type == FrameTypeDesktop + || fdata->type == FrameTypeDock) + { + show_titlebar = false; + } + // ------------------------------------------------ + + wm->hints()->netwm_window_state(fdata); + wm->hints()->mwm_load_hints(fdata); + + load_wm_hints(); + load_colormap(); + load_label(); + + XWindowAttributes attrs; + if(existing) + attrs = *existing; + else + XGetWindowAttributes(fl_display, fdata->window, &attrs); + + // according to ICCCM standard, returned values must + // be used for window only, excluding decorations + fdata->plain.x = attrs.x; + fdata->plain.y = attrs.y; + // TODO: add checking if window out of screen + fdata->plain.w = attrs.width; + fdata->plain.h = attrs.height; + + ELOG("XWindowAttributes: %i %i %i %i", fdata->plain.x, fdata->plain.y, fdata->plain.w, fdata->plain.h); + + // Shorthand for: fdata->colormap = attrs->colormap; + // ...for easier tracking + if(fdata->colormap != attrs.colormap) + load_colormap(attrs.colormap); + + switch(attrs.map_state) + { + case IsUnmapped: + set_state(FrameStateIconized); + break; + case IsViewable: + set_state(FrameStateNormal); + break; + case IsUnviewable: + ELOG("Got IsUnviewable map_state, skiping for now..."); + break; + } +} +#endif +/* load WM_HINTS property, finding if window + * have icons and in what state is in + * TODO: place this as Hint::icccm_load_wm_hints() + */ +#if 0 +void Frame::load_wm_hints(void) +{ + XWMHints* wm_hints = XAllocWMHints(); + wm_hints = XGetWMHints(fl_display, fdata->window); + if(!wm_hints) + { + ELOG("XGetWMHints failed!"); + return; + } + + if((wm_hints->flags & IconPixmapHint) && wm_hints->icon_pixmap) + fdata->icon_pixmap = wm_hints->icon_pixmap; + if((wm_hints->flags & IconMaskHint) &&wm_hints->icon_mask) + fdata->icon_mask = wm_hints->icon_mask; + + switch(wm_hints->initial_state) + { + case WithdrawnState: + XRemoveFromSaveSet(fl_display, fdata->window); + break; + case IconicState: + fdata->state = FrameStateIconized; + break; + case NormalState: + default: + fdata->state = FrameStateNormal; + break; + } + + // check for focus + if((wm_hints->flags & InputHint) && !wm_hints->input) + fdata->option &= ~FrameOptTakeFocus; // window does not want focus + else + fdata->option |= FrameOptTakeFocus; // window want focus; + + XFree(wm_hints); +} +#endif +// guess title +void Frame::load_label(void) +{ + TRACE_FUNCTION("void Frame::load_label(void)"); + WindowManager* wm = WindowManager::instance(); + + // first try NETWM style + fdata->label = wm->hints()->netwm_label(fdata->window, &fdata->label_alocated); + if(!fdata->label) + { + // then ICCCM + fdata->label = wm->hints()->icccm_label(fdata->window, &fdata->label_alocated); + } + ELOG("Window: %s (%p) loaded", (fdata->label ? fdata->label : "NULL"), fdata->window); +} + +void Frame::destroy(void) +{ + TRACE_FUNCTION("void Frame::destroy(void)"); + + ELOG("window goes down"); + if(state(FrameStateDestroyed)) + return; + + if(!state(FrameStateUnmapped)) + { + if(ValidateDrawable(fdata->window)) + { + XRemoveFromSaveSet(fl_display, fdata->window); + XUnmapWindow(fl_display, fdata->window); + XUnmapWindow(fl_display, fl_xid(this)); + } + } + + set_state(FrameStateDestroyed); + WindowManager::instance()->update_client_list(); + Fl::awake(); +} + +void Frame::map(void) +{ + if(!state(FrameStateUnmapped)) + return; + + XAddToSaveSet(fl_display, fdata->window); + XMapWindow(fl_display, fdata->window); + XMapWindow(fl_display, fl_xid(this)); + + clear_state(FrameStateUnmapped); +} + +void Frame::unmap(void) +{ + if(state(FrameStateUnmapped)) + return; + + if(ValidateDrawable(fdata->window)) + { + XRemoveFromSaveSet(fl_display, fdata->window); + XUnmapWindow(fl_display, fdata->window); + XUnmapWindow(fl_display, fl_xid(this)); + } + + set_state(FrameStateUnmapped); +} + +// Install custom or default colormap. +// Default colormap is read only once, in Frame constructor. +void Frame::load_colormap(Colormap col) +{ + TRACE_FUNCTION("void Frame::load_colormap(Colormap col)"); + + if(col != 0) + { + ELOG("Installing custom colormap"); + fdata->colormap = col; + } + else + ELOG("Loading default colormap"); + + XInstallColormap(fl_display, fdata->colormap); +} + +// Recalculate framed based on plain. +// If window is outside screen, fix what needs to be fixed +void Frame::setup_borders(void) +{ + TRACE_FUNCTION("void Frame::setup_borders(void)"); + + int tx, ty; + switch(fdata->type) + { + case FrameTypeNormal: + /* border = BORDER_NORMAL; */ + borders.leftright(BORDER_LEFTRIGHT); + borders.updown(BORDER_UPDOWN); + break; + case FrameTypeDialog: + /*border = BORDER_THIN; */ + //borders.leftright(BORDER_THIN_LEFTRIGHT); + //borders.updown(BORDER_THIN_UPDOWN); + borders.leftright(BORDER_LEFTRIGHT); + borders.updown(BORDER_UPDOWN); + break; + case FrameTypeSplash: + case FrameTypeDesktop: + case FrameTypeMenu: + case FrameTypeDock: + borders.leftright(0); + borders.updown(0); + // they don't have visible borders + break; + } + + // TODO: setting up initial window sizes + // should not be in setup_borders(); + tx = fdata->plain.x - borders.leftright(); + ty = fdata->plain.y - borders.updown(); + if(tx < 0) + fdata->plain.x = borders.leftright(); + if(ty < 0) + fdata->plain.y = borders.updown(); + x(fdata->plain.x); + y(fdata->plain.y); + + w(fdata->plain.w + borders.leftright2x()); + h(fdata->plain.h + borders.updown2x()); + + // set fdata->window borders, althought fdata->plain.borders is + // always 0 + XSetWindowBorderWidth(fl_display, fdata->window, fdata->plain.border); +} +#if 0 +/* Setup window sizes to minimal usable (MIN_W, MIN_H) + * but only for normal windows. Transient should set + * their size internally. + */ +void Frame::init_sizes(void) +{ + if(fdata->type == FrameTypeDialog) + return; + + if(fdata->plain.w < MIN_W) + fdata->plain.w = MIN_W; + if(fdata->plain.h < MIN_H) + fdata->plain.h = MIN_H; +} +#endif +void Frame::init_overlay(int border_size) +{ + XGCValues v; + v.subwindow_mode = IncludeInferiors; + v.foreground = 0xffffffff; + v.function = GXxor; + v.line_width = border_size; + v.graphics_exposures = False; + int mask = GCForeground | GCSubwindowMode | GCFunction | GCLineWidth | GCGraphicsExposures; + overlay.inverted_gc = XCreateGC(fl_display, + WindowManager::instance()->root_window(), mask, &v); +} + +void Frame::reparent_window(void) +{ + TRACE_FUNCTION("void Frame::reparent_window(void)"); + + if(!ValidateDrawable(fdata->window)) + return; + + const int XEventMask = + ExposureMask | + StructureNotifyMask| + VisibilityChangeMask | + KeyPressMask| + KeyReleaseMask| + KeymapStateMask| + FocusChangeMask | + ButtonPressMask | + ButtonReleaseMask | + EnterWindowMask | + LeaveWindowMask | + PointerMotionMask | + SubstructureRedirectMask | + SubstructureNotifyMask; + + + XSetWindowAttributes sattr; + // TODO: some windows set bit_gravity too + sattr.bit_gravity = NorthWestGravity; + sattr.event_mask = XEventMask; + sattr.colormap = fl_colormap; + sattr.border_pixel = fl_xpixel(FL_BLACK); + sattr.override_redirect = 0; + sattr.background_pixel = fl_xpixel(FL_GRAY); + XChangeWindowAttributes(fl_display, fl_xid(this), + CWBitGravity | CWBorderPixel | CWColormap | CWEventMask | CWBackPixel | CWOverrideRedirect, &sattr); + + XReparentWindow(fl_display, fdata->window, fl_xid(this), fdata->plain.offset_x, fdata->plain.offset_y); +/* + if(!show_titlebar) + { + XReparentWindow(fl_display, fdata->window, fl_xid(this), + borders.leftright(), borders.updown()); + } + else + { + XReparentWindow(fl_display, fdata->window, fl_xid(this), + borders.leftright(), borders.updown() + titlebar->h()); + } +*/ + +} + +void Frame::recalc_geometry(int x_pos, int y_pos, int w_sz, int h_sz, short rtype) +{ + TRACE_FUNCTION("void Frame::recalc_geometry(int x_pos, int y_pos, int w_sz, int h_sz, short rtype"); + + if(rtype == GeometryRecalcAll) + { + x(x_pos); y(y_pos); + w(w_sz); h(h_sz); + + fdata->plain.x = x() + borders.leftright(); + fdata->plain.y = y() + borders.updown(); + fdata->plain.w = w() - borders.leftright2x(); + } + else if(rtype == GeometryRecalcAllXY) + { + // do not include fdata->plain.w + // FIXME: duplication as above + x(x_pos); y(y_pos); + w(w_sz); h(h_sz); + fdata->plain.x = x() + borders.leftright(); + fdata->plain.y = y() + borders.updown(); + } + else if(rtype == GeometryRecalcPlain) + { + fdata->plain.x = x_pos; + fdata->plain.y = y_pos; + fdata->plain.w = w_sz; + fdata->plain.h = h_sz; + + x(x_pos - borders.leftright()); + y(y_pos - borders.updown()); + w(w_sz + borders.leftright2x()); + } + else + { + // we should no be here + assert(0); + } + + + if(show_titlebar) + { + // titlebar->resize(border, border, w() - border2x, titlebar->h()); + if(rtype == GeometryRecalcAll) + { + fdata->plain.h = h() - (titlebar->h() + borders.updown2x()); + } + else if(rtype == GeometryRecalcPlain) + { + h(h_sz + titlebar->h() + borders.updown2x()); + } + + titlebar->size(w() - borders.leftright2x(), titlebar->h()); + } + else + { + if(rtype == GeometryRecalcAll) + { + fdata->plain.h = h() - borders.updown2x(); + } + else if(rtype == GeometryRecalcPlain) + { + h(h_sz + borders.updown2x()); + } + } + + /* Sanitize sizes. If we go below min width and height + * even X will start to yell. Who likes yelling ? + * + * TODO: maybe when we detect this, should disallow any + * further moves/resizes ? + */ + if(fdata->plain.w <= fdata->plain.min_w) + { + int offset = fdata->plain.min_w - fdata->plain.w; + fdata->plain.w = fdata->plain.min_w; + w(w() + offset); + } + + if(fdata->plain.h <= fdata->plain.min_h) + { + int offset = fdata->plain.min_h - fdata->plain.h; + fdata->plain.h = fdata->plain.min_h; + h(h() + offset); + } + + + ELOG("p: %i %i %i %i w: %i %i %i %i", + fdata->plain.x, fdata->plain.y, fdata->plain.w, fdata->plain.h, + x(), y(), w(), h()); +} + +/* Set size of window, accepting coordinates for fdata->window + frame, + * int which case it will be resized both. + */ +void Frame::set_size(int x_pos, int y_pos, int w_sz, int h_sz, bool apply_on_plain) +{ + TRACE_FUNCTION("void Frame::set_size(int x_pos, int y_pos, int w_sz, int h_sz, bool apply_on_plain)"); + + if(!ValidateDrawable(fdata->window)) + return; + + short how; + if(apply_on_plain) + how = GeometryRecalcPlain; + else + how = GeometryRecalcAll; + + recalc_geometry(x_pos, y_pos, w_sz, h_sz, how); + + XGrabServer(fl_display); + + place_sizers(x(), y(), w(), h()); + XMoveWindow(fl_display, fl_xid(this), x(), y()); + XResizeWindow(fl_display, fl_xid(this), w(), h()); + XResizeWindow(fl_display, fdata->window, fdata->plain.w, fdata->plain.h); + + if(borders.shaped()) + shape_borders(); + + XUngrabServer(fl_display); + + configure_notify(); + redraw(); +} + +void Frame::move_window(int x_pos, int y_pos) +{ + TRACE_FUNCTION("void Frame::move_window(int x_pos, int y_pos)"); + + //draw_overlay(x_pos, y_pos, w(), h()); + //return; + + // very dummy snapping with screen edges + // TODO: what about other window(s) edges ? + if(snap_move) + { + int snap_x = screen_x + EDGE_SNAP; + int snap_y = snap_x; + int snap_w = screen_w - EDGE_SNAP; + int snap_h = screen_h - EDGE_SNAP; + int w_pos = x_pos + w(); + int h_pos = y_pos + h(); + + if(snap_x > x_pos - EDGE_SNAP && snap_x < x_pos + EDGE_SNAP) + x_pos = screen_x; + if(snap_y > y_pos - EDGE_SNAP && snap_y < y_pos + EDGE_SNAP) + y_pos = screen_y; + + if(snap_w > w_pos - EDGE_SNAP && snap_w < w_pos + EDGE_SNAP) + x_pos = screen_w - w(); + if(snap_h > h_pos - EDGE_SNAP && snap_h < h_pos + EDGE_SNAP) + y_pos = screen_h - h(); + } + + recalc_geometry(x_pos, y_pos, w(), h(), GeometryRecalcAllXY); + XMoveWindow(fl_display, fl_xid(this), x(), y()); + configure_notify(); +} + +void Frame::draw_overlay(int x, int y, int w, int h) +{ + TRACE_FUNCTION("void Frame::draw_overlay(int x, int y, int w, int h)"); +/* + XGCValues v; + v.subwindow_mode = IncludeInferiors; + v.foreground = 0xffffffff; + v.function = GXxor; + v.line_width = borders.updown(); + v.graphics_exposures = False; + int mask = GCForeground|GCSubwindowMode|GCFunction|GCLineWidth|GCGraphicsExposures; + GC invertGc = XCreateGC(fl_display, RootWindow(fl_display, fl_screen), mask, &v); +*/ + + if (w < 0) {x += w; w = -w;} + else if (!w) w = 1; + if (h < 0) {y += h; h = -h;} + else if (!h) h = 1; + Window root = WindowManager::instance()->root_window(); + + if(overlay.w > 0) + { + if(x == overlay.x && y == overlay.y && w == overlay.w && h == overlay.h) + return; + XDrawRectangle(fl_display, root, overlay.inverted_gc, overlay.x, overlay.y, overlay.w, overlay.h); + } + + overlay.x = x; + overlay.y = y; + overlay.w = w; + overlay.h = h; + + XDrawRectangle(fl_display, root, overlay.inverted_gc, overlay.x, overlay.y, overlay.w, overlay.h); +} + +void Frame::clear_overlay(void) +{ + if(overlay.w > 0) + { + Window root = WindowManager::instance()->root_window(); + XDrawRectangle(fl_display, root, overlay.inverted_gc, overlay.x, overlay.y, overlay.w, overlay.h); + overlay.w = 0; + } +} + +void Frame::place_sizers(int x, int y, int w, int h) +{ + TRACE_FUNCTION("void Frame::place_sizers(int x, int y, int w, int h)"); + + // using position() instead resize() will be only + // valid if sizers are initialy set to SIZER_W and SIZER_H + + sizer_top_left->position(0, 0); + sizer_top_right->position(w - SIZER_W, 0); + sizer_bottom_left->position(0, h - SIZER_H); + sizer_bottom_right->position(w - SIZER_W, h - SIZER_H); +} + +/* Determine type of resizing based on position + * (NOTE: here is used relative position - Fl::event_x() and Fl::event_y(), + * which are valid only in frame window). + * + * TODO: any way this can be simplified ? + */ +long Frame::resize_type(int x, int y) +{ + // TRACE_FUNCTION("long Frame::resize_type(int x, int y)"); + + //ELOG("%i %i", x, y); + // we are in top left sizer + if((x >= sizer_top_left->x() && x <= sizer_top_left->w()) && + (y >= sizer_top_left->y() && y <= sizer_top_left->h())) + return ResizeTypeUpLeft; + + // we are in top right sizer + if((x >= sizer_top_right->x() && x <= sizer_top_right->x() + sizer_top_right->w()) && + (y >= sizer_top_right->y() && y <= sizer_top_right->y() + sizer_top_right->h())) + return ResizeTypeUpRight; + + // we are in bottom left sizer + if((x >= sizer_bottom_left->x() && x <= sizer_bottom_left->x() + sizer_bottom_left->w()) && + (y >= sizer_bottom_left->y() && y <= sizer_bottom_left->y() + sizer_bottom_left->h())) + return ResizeTypeDownLeft; + + // we are in bottom right sizer + if((x >= sizer_bottom_right->x() && x <= sizer_bottom_right->x() + sizer_bottom_right->w()) && + y >= sizer_bottom_right->y() && y <= sizer_bottom_right->y() + sizer_bottom_right->h()) + return ResizeTypeDownRight; + + // we are in top border + if((x > sizer_top_left->x() + sizer_top_left->w() && x < sizer_top_right->x()) && + (y < borders.updown())) + return ResizeTypeUp; + + // we are in left border + if((x < borders.leftright()) && (y > sizer_top_left->y() + sizer_top_left->h()) && + y < sizer_bottom_left->y()) + return ResizeTypeLeft; + + // we are in right border + if((x < sizer_top_right->x() + sizer_top_right->w()) && + (x > sizer_top_right->x() + sizer_top_right->w() - borders.leftright()) && + (y > sizer_top_right->y() + sizer_top_right->w()) && + (y < sizer_bottom_left->y())) + return ResizeTypeRight; + + // we are in bottom border + if((x > sizer_bottom_left->x() + sizer_bottom_left->w()) && + (x < sizer_bottom_right->x()) && + (y > sizer_bottom_left->y() + sizer_bottom_left->h() - borders.updown()) && + (y < sizer_bottom_left->y() + sizer_bottom_left->h())) + return ResizeTypeDown; + + + return ResizeTypeNone; +} + +/* unscramble direction, and check what combination it have + * + * TODO: direction should not have oposite sides included + * like ResizeTypeRight | ResizeTypeLeft + */ +void Frame::resize_window(int mouse_x, int mouse_y, long direction) +{ + TRACE_FUNCTION("void Frame::resize_window(int mouse_x, int mouse_y, long direction)"); + + if(direction == 0) + EFATAL("calling resize on possible unresizable window"); + + if(direction & ResizeTypeNone) + return; + +#warning "Add increment/decrement info from icccm" + + // use collected increment/decrement info from icccm + /*int inc_w = fdata->plain.inc_w; + int inc_h = fdata->plain.inc_h; */ + + int tw = 0, th = 0; + + if(direction & ResizeTypeLeft) + { + if(mouse_x > x()) + tw = w() - (mouse_x - x()); // decrease + else + tw = w() + (x() - mouse_x); // increase + + set_size(mouse_x, y(), tw, h(), false); + } + + if(direction & ResizeTypeRight) + { + tw = mouse_x - x(); + set_size(x(), y(), tw, h(), false); + } + + if(direction & ResizeTypeUp) + { + if(mouse_y > y()) + th = h() - (mouse_y - y()); //decrease + else + th = h() + (y() - mouse_y); //increase + + set_size(x(), mouse_y, w(), th, false); + } + + if(direction & ResizeTypeDown) + { + th = mouse_y - y(); + set_size(x(), y(), w(), th, false); + } + +} + +void Frame::configure_notify(void) +{ + TRACE_FUNCTION("void Frame::configure_notify(void)"); + if(!ValidateDrawable(fdata->window)) + return; + + WindowManager::instance()->hints()->icccm_configure(fdata); +} + +// apply shape on borders, based on shape mask +void Frame::shape_borders(void) +{ + TRACE_FUNCTION("void Frame::shape_borders(void)"); + +#ifdef SHAPE + Window shape = XCreateSimpleWindow(fl_display, RootWindow(fl_display, fl_screen), + x(), y(), w(), h(), 0, 0, 0); + + XRectangle rect[4]; + // top + rect[0].x = SIZER_W; + rect[0].y = 0; + rect[0].width = w() - SIZER_W * 2; + rect[0].height = borders.updown(); + + // right + rect[1].x = w() - borders.leftright(); + rect[1].y = SIZER_H; + rect[1].width = borders.leftright(); + rect[1].height = h() - SIZER_H * 2; + + // bottom + rect[2].x = SIZER_W; + rect[2].y = h() - borders.updown(); + rect[2].width = w() - SIZER_W * 2; + rect[2].height = borders.updown(); + + // left + rect[3].x = 0; + rect[3].y = SIZER_H; + rect[3].width = borders.leftright(); + rect[3].height = h() - SIZER_H * 2; + + // modify our shape window + XShapeCombineRectangles(fl_display, shape, ShapeBounding, 0, 0, rect, 4, ShapeSubtract, Unsorted); + // apply our shape window as mask + XShapeCombineShape(fl_display, fl_xid(this), ShapeBounding, 0, 0, shape, ShapeBounding, ShapeSet); + XDestroyWindow(fl_display, shape); +#endif +} + +// apply shape on edges, based on pixmap mask +#include "mask.xpm" +#include +void Frame::shape_edges(void) +{ + TRACE_FUNCTION("void Frame::shape_edges(void)"); +#if 0 + // TODO: finish with other three edges + Fl_Image img((const char**)mask_xpm); + Pixmap mask = img.create_mask(img.width(), img.height()); + + Window shape = XCreateSimpleWindow(fl_display, RootWindow(fl_display, fl_screen), + x(), y(), w(), h(), 0, 0, 0); + + XShapeCombineMask(fl_display, shape, ShapeBounding, 0, 0, mask, ShapeSubtract); + XShapeCombineShape(fl_display, fl_xid(this), ShapeBounding, 0, 0, shape, ShapeBounding, ShapeSet); + XDestroyWindow(fl_display, shape); +#endif +} + +void Frame::maximize(void) +{ + TRACE_FUNCTION("void Frame::maximize(void)"); + + if(state(FrameStateShaded)) + { + ELOG("Maximizing shaded windows is bugy as devil himself !"); + return; + } + + if(fdata->type == FrameTypeDialog) + { + ELOG("Dialogs should not be resized !"); + return; + } + + if(state(FrameStateMaximized)) + { + ELOG("Window is alread maximized"); + return; + } + + restore_x = x(); + restore_y = y(); + restore_w = w(); + restore_h = h(); + + set_size(screen_x, screen_y, screen_w, screen_h, false); + set_state(FrameStateMaximized); + + WindowManager::instance()->play_sound(SOUND_MAXIMIZE); +} + +void Frame::restore(void) +{ + TRACE_FUNCTION("void Frame::restore(void)"); + + if(!state(FrameStateMaximized)) + { + ELOG("Restore unmaximized window ???"); + return; + } + + set_size(restore_x, restore_y, restore_w, restore_h, false); + clear_state(FrameStateMaximized); + + WindowManager::instance()->play_sound(SOUND_RESTORE); +} + +/* First will inspect does window participate for WM_DELETE_WINDOW + * message, and if not, it will be killed. That is the life... + */ +void Frame::close_kill(void) +{ + TRACE_FUNCTION("void Frame::close_kill(void)"); + + Atom* protocols; + int n; + bool have_close = false; + + if(XGetWMProtocols(fl_display, fdata->window, &protocols, &n)) + { + for(int i = 0; i < n; i++) + { + if(protocols[i] == _XA_WM_DELETE_WINDOW) + have_close = true; + } + + XFree(protocols); + } + if(have_close) + SendMessage(fdata->window, _XA_WM_PROTOCOLS, _XA_WM_DELETE_WINDOW); + else + { + ELOG("Frame killed"); + XKillClient(fl_display, fdata->window); + } + + WindowManager::instance()->play_sound(SOUND_CLOSE); +} + +// window accepts input +void Frame::focus(void) +{ + TRACE_FUNCTION("void Frame::focus(void)"); + + if(state(FrameStateFocused)) + return; + + if(!ValidateDrawable(fdata->window)) + return; + + WindowManager::instance()->clear_focus_windows(); + + borders_color(FOCUSED); + if(show_titlebar) + titlebar->focus(); + + //XSetInputFocus(fl_display, fdata->window, RevertToPointerRoot, fl_event_time); + XSetInputFocus(fl_display, fdata->window, RevertToPointerRoot, CurrentTime); + XInstallColormap(fl_display, fdata->colormap); + + /* DO NOT use this ! + * SendMessage(fdata->window, _XA_WM_PROTOCOLS, _XA_WM_TAKE_FOCUS); + */ + + WindowManager::instance()->hints()->netwm_set_active_window(fdata->window); + set_state(FrameStateFocused); +} + +void Frame::unfocus(void) +{ + if(!state(FrameStateFocused)) + return; + + TRACE_FUNCTION("void Frame::unfocus(void)"); + + borders_color(UNFOCUSED); + if(show_titlebar) + titlebar->unfocus(); + + clear_state(FrameStateFocused); +} + +void Frame::raise(void) +{ + TRACE_FUNCTION("void Frame::raise(void)"); + + WindowManager* wm = WindowManager::instance(); + if(wm->stack_list.size() <= 1) + { + ELOG("Only one window, restacking skipped"); + focus(); + return; + } + + FrameList::iterator it = wm->stack_list.begin(); + FrameList::iterator last = wm->stack_list.end(); + + while(it != last) + { + if(*it == this) + { + wm->stack_list.erase(it); + wm->stack_list.push_front(*it); + } + + ++it; + } + wm->restack_windows(); + focus(); +} + +/* Send frame one stack position below. + * Note that as in raise(), aot_list is not checked + * since those windows are _always_ on top. This will + * rearange stack_list and call restack_windows(), as you guess. + * + * Yes, this can be avoided using XWindowChanges with + * x.sibling and x.stack_mode = Below, which is much faster + * but we will lose arangements in stack_list and posibility + * to update _NET_CLIENT_LIST_STACKING atom. So stick with this. + * + * PS: if you have idea how to combine XWindowChanges with X calls + * without needs to update stack_list, but to extract full stacking + * list for _NET_CLIENT_LIST_STACKING, let me know. + */ +void Frame::lower(void) +{ + TRACE_FUNCTION("void Frame::lower(void)"); + + WindowManager* wm = WindowManager::instance(); + + if(wm->stack_list.size() <= 1) + { + ELOG("Only one window, restacking skipped"); + return; + } + + FrameList::iterator top = wm->stack_list.begin(); + + /* We are not at the top. + * This will prevent rise-lower-rise effect when + * function is called multiple times. + */ + if(this != *top) + return; + + FrameList::iterator below = top; + ++below; + + if(*below) + { + std::swap(*top, *below); + } + + wm->restack_windows(); + focus(); +} + +/* When we want to shade window, child (fdata->window) must + * completely disapear (as should it be). Funny thing is + * if few pixels child is visible, some programs-windows + * will crash (like mrxvt). + */ +void Frame::shade(void) +{ + TRACE_FUNCTION("void Frame::shade(void)"); + + if(!show_titlebar) + return; + + if(state(FrameStateShaded)) + return; + + restore_x = x(); + restore_y = y(); + restore_w = w(); + restore_h = h(); + + // place it to outside frame + int px = -(fdata->plain.offset_x + fdata->plain.w); + int py = -(fdata->plain.offset_y + fdata->plain.h); + + XMoveWindow(fl_display, fdata->window, px, py); + XResizeWindow(fl_display, fl_xid(this), w(), titlebar->h() + borders.updown2x()); + + set_state(FrameStateShaded); + WindowManager::instance()->hints()->netwm_set_window_state(fdata); + + WindowManager::instance()->play_sound(SOUND_SHADE); + + // Configure not needed, since we do nothing usefull to window + //configure_notify(); +} + +void Frame::unshade(void) +{ + TRACE_FUNCTION("void Frame::unshade(void)"); + + if(!show_titlebar) + return; + + if(!state(FrameStateShaded)) + { + ELOG("Unshade not shaded window ???"); + return; + } + + XMoveResizeWindow(fl_display, fdata->window, fdata->plain.offset_x, fdata->plain.offset_y, + fdata->plain.w, fdata->plain.h); + XResizeWindow(fl_display, fl_xid(this), w(), restore_h); + + clear_state(FrameStateShaded); + WindowManager::instance()->hints()->netwm_set_window_state(fdata); + + WindowManager::instance()->play_sound(SOUND_SHADE); + + // Configure not needed, since we do nothing usefull to window + //configure_notify(); +} + +void Frame::borders_color(FrameBordersState s) +{ + TRACE_FUNCTION("void Frame::borders_color(FrameBordersState s)"); + + Fl_Color szc = borders.sizers_color(s); + sizer_top_left->color(szc); + sizer_top_right->color(szc); + sizer_bottom_left->color(szc); + sizer_bottom_right->color(szc); + + color(borders.border_color(s)); + redraw(); +} + +void Frame::show_sizers(void) +{ + TRACE_FUNCTION("void Frame::show_sizers(void)"); + + sizer_top_left->show(); + sizer_top_right->show(); + sizer_bottom_left->show(); + sizer_bottom_right->show(); +} + +void Frame::hide_sizers(void) +{ + TRACE_FUNCTION("void Frame::hide_sizers(void)"); + + sizer_top_left->hide(); + sizer_top_right->hide(); + sizer_bottom_left->hide(); + sizer_bottom_right->hide(); +} + +void Frame::set_cursor(CursorType t) +{ + WindowManager::instance()->set_cursor(this, t); +} + +#if 0 +/* This function will change window type, to some of + * netwm types. Note, this function should _not_ be used + * anywhere except from toolbar menu, where window can + * be modified (if allowed in options). + * + * TODO: If we want borderless window, netwm does not provide + * anything like _NET_WM_WINDOW_TYPE_SPLASH, but not for splashes. + * Maybe we should add something like _EDE_WM_WINDOW_TYPE_PLAIN ? + */ +void Frame::change_window_type(short type) +{ + TRACE_FUNCTION("void Frame::change_window_type(short type)"); + + if(type == fdata->type) + return; + + // set fdata->window borders, althought fdata->plain.borders is + // always 0 + XSetWindowBorderWidth(fl_display, fdata->window, fdata->plain.border); + + fdata->type = type; + + switch(fdata->type) + { + case FrameTypeNormal: + borders.leftright(BORDER_LEFTRIGHT); + borders.updown(BORDER_UPDOWN); + break; + case FrameTypeDialog: + borders.leftright(BORDER_THIN_LEFTRIGHT); + borders.updown(BORDER_THIN_UPDOWN); + break; + case FrameTypeSplash: + case FrameTypeDesktop: + case FrameTypeMenu: + case FrameTypeDock: + borders.leftright(0); + borders.updown(0); + if(show_titlebar && titlebar) + { + titlebar->hide(); + show_titlebar = false; + } + // they don't have visible borders + break; + } + + // TODO: setting up initial window sizes + // should not be in setup_borders(); + if(fdata->type == FrameTypeNormal || fdata->type == FrameTypeDialog) + { + int tx, ty; + tx = fdata->plain.x - borders.leftright(); + ty = fdata->plain.y - borders.updown(); + /* + if(tx < 0) + fdata->plain.x = borders.leftright(); + if(ty < 0) + fdata->plain.y = borders.updown(); + */ + x(fdata->plain.x); + y(fdata->plain.y); + + w(fdata->plain.w + borders.leftright2x()); + h(fdata->plain.h + borders.updown2x()); + } + // means only borders + else + { + /* First resize window to size of child (x,y will be preserved) + * then resize child. + * XXX: child window's x,y are offsets from x,y of parent, so + * they are 0. + * We can't use Fl_Window::size(), since explicit window sizing + * does not work. In that case, slap it with hammer ! + */ + XResizeWindow(fl_display, fl_xid(this), fdata->plain.w, fdata->plain.h); + XMoveResizeWindow(fl_display, fdata->window, 0, 0, fdata->plain.w, fdata->plain.h); + } + + WindowManager::instance()->hints()->netwm_set_window_type(fdata); +} +#endif +/* After XGrabButton, WindowManager will FL_PUSH events + * redirect here. We must make sure after processing them + * redirect events further to fdata->window. + * + * We should not worry about transients (or any window + * it aot_list) since they will be always on top. + * + * TODO: Should we allow events on below windows event + * if transients are shown ??? + */ +void Frame::content_click(void) +{ + TRACE_FUNCTION("void Frame::content_click(void)"); + + ELOG("Clicked on frame: %s", FRAME_NAME(fdata)); + + if(fl_xevent.xbutton.button == 1) + raise(); + + XAllowEvents(fl_display, ReplayPointer, CurrentTime); +} + +void Frame::show_coordinates_window(void) +{ + if(!show_coordinates) + return; + + TRACE_FUNCTION("void Frame::show_coordinates_window(void)"); + + // calculate center of frame, and show it there + int cx = (x() + w()/2) - (cview->w()/2); + int cy = (y() + h()/2) - (cview->h()/2); + + /* Check if we are inside screen coordinates or showing window + * beyond them will not show window at all! + */ + if(cx < screen_x) + cx = screen_x; + if(cy < screen_y) + cy = screen_y; + if((cx + cview->w()) > screen_w) + cx = screen_w - cview->w(); + if((cy + cview->h()) > screen_h) + cy = screen_h - cview->h(); + + cview->position(cx, cy); + //if(!cview->shown()) + cview->show(); +} + +void Frame::update_coordinates_window(void) +{ + if(!show_coordinates) + return; + + TRACE_FUNCTION("void Frame::update_coordinates_window(void)"); + int cx = (x() + w()/2) - (cview->w()/2); + int cy = (y() + h()/2) - (cview->h()/2); + + if(cx < screen_x) + cx = screen_x; + if(cy < screen_y) + cy = screen_y; + if((cx + cview->w()) > screen_w) + cx = screen_w - cview->w(); + if((cy + cview->h()) > screen_h) + cy = screen_h - cview->h(); + + cview->position(cx, cy); + cview->display_data(x(), y(), w(), h()); +} + +void Frame::hide_coordinates_window(void) +{ + if(!show_coordinates) + return; + + TRACE_FUNCTION("void Frame::hide_coordinates_window(void)"); + cview->hide(); +} + +// handle events that efltk understainds +int Frame::handle(int event) +{ + return events->handle_fltk(event); +} + +int Frame::handle(XEvent* event) +{ + return events->handle_x(event); +} + +// this is here so FrameEventHandler can access Fl_Window +int Frame::handle_parent(int event) +{ + return Fl_Window::handle(event); +} + +/* Grab pointer, scheduling pointer events for future use. + * The only thing I can say is this is the only way of correct + * usage, althought I would like to see pointer in GrabModeAsync. + * Later is hardly possible (think so) because efltk will not be + * able to synchronize itself with X events. + */ +void Frame::grab_cursor(void) +{ + TRACE_FUNCTION("void Frame::grab_cursor(void)"); + + if(cursor_grabbed) + return; + + // use currently set cursor + Cursor cc = WindowManager::instance()->cursor_handler()->current_cursor(); + + if(XGrabPointer(fl_display, fl_xid(this), + true, /* owner events */ + ButtonMotionMask | ButtonPressMask |ButtonReleaseMask | PointerMotionMask, + GrabModeAsync, /* pointer mode */ + GrabModeAsync, /* keyboard mode */ + None, + cc, fl_event_time) == GrabSuccess) + { + //XAllowEvents(fl_display, AsyncPointer, CurrentTime); + cursor_grabbed = true; + ELOG("Cursor grabbed"); + } +} + +void Frame::ungrab_cursor(void) +{ + TRACE_FUNCTION("void Frame::ungrab_cursor(void)"); + + if(!cursor_grabbed) + return; + + ELOG("Cursor ungrabbed"); + Fl::event_is_click(0); // avoid double click + //XAllowEvents(fl_display, Fl::event() == FL_PUSH ? ReplayPointer : AsyncPointer, CurrentTime); + XUngrabPointer(fl_display, fl_event_time); + XFlush(fl_display); // make sure we are out of danger before continuing... + // because we "pushed back" the FL_PUSH, make it think no buttons are down: + Fl::e_state &= 0xffffff; + Fl::e_keysym = 0; + + cursor_grabbed = false; +} + +void Frame::display_internals(void) +{ + EPRINTF("-----------------------------------\n"); + EPRINTF("window : %lx\n", fdata->window); + EPRINTF("transient : %lx\n", fdata->transient_win); + EPRINTF("colormap : %lx\n", fdata->colormap); + EPRINTF("state : %li\n", fdata->state); + EPRINTF("options : %li\n", fdata->option); + EPRINTF("type : %i\n", fdata->type); + EPRINTF("min width : %i\n", fdata->plain.min_w); + EPRINTF("min height : %i\n", fdata->plain.min_h); + EPRINTF("max width : %i\n", fdata->plain.max_w); + EPRINTF("max height : %i\n", fdata->plain.max_h); + EPRINTF("x : %i\n", fdata->plain.x); + EPRINTF("y : %i\n", fdata->plain.y); + EPRINTF("w : %i\n", fdata->plain.w); + EPRINTF("h : %i\n", fdata->plain.h); + EPRINTF("x (framed) : %i\n", x()); + EPRINTF("y (framed) : %i\n", y()); + EPRINTF("w (framed) : %i\n", w()); + EPRINTF("h (framed) : %i\n", h()); + EPRINTF("gravity : %i\n", fdata->win_gravity); + EPRINTF("autoplace : %i\n", fdata->autoplace); + EPRINTF("have icon : %s\n", (fdata->icon_pixmap ? "yes" : "no")); + EPRINTF("have icon mask : %s\n", (fdata->icon_mask ? "yes" : "no")); + EPRINTF("label : %s\n", (fdata->label ? fdata->label : "NULL")); + EPRINTF("-----------------------------------\n"); +} diff --git a/edewm/Frame.h b/edewm/Frame.h new file mode 100644 index 0000000..affef12 --- /dev/null +++ b/edewm/Frame.h @@ -0,0 +1,344 @@ +/* + * $Id: Frame.h 1736 2006-08-19 00:38:53Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef _FRAME_H_ +#define _FRAME_H_ + +#include +#include +#include + +#include "Cursor.h" + +// frame states (internal) +#define FrameStateNormal (1 << 0) // neither of below states +#define FrameStateUnmapped (1 << 1) // or Withdrawn +#define FrameStateDestroyed (1 << 2) // destroyed window, handled by WindowManager +#define FrameStateFocused (1 << 3) + +// frame states (netwm) +#define FrameStateModal (1 << 4) // transients +#define FrameStateSticky (1 << 5) +#define FrameStateShaded (1 << 6) +#define FrameStateHidden (1 << 7) // or iconized +#define FrameStateIconized FrameStateHidden + +/* These two types are used to emit _NET_WM_STATE_ABOVE and _NET_WM_STATE_BELOW. + * For me it is unclear why they didn't called _NET_WM_STATE_ALWAYS_(ABOVE,BELOW) + * since all wm's set them in this state (except transient who are always above all + * windows), and stacking order can't be changed. Anyway, enjoy with more apropriate + * names. + */ +#define FrameStateAlwaysAbove (1 << 8) +#define FrameStateAlwaysBelow (1 << 9) + +#define FrameStateMaximizedHorz (1 << 10) +#define FrameStateMaximizedVert (1 << 11) +#define FrameStateMaximized (FrameStateMaximizedHorz | FrameStateMaximizedVert) + +// some options frame can have (or their combinations) +/* +#define FrameOptSkipList (1 << 0) // some reason why not in list +#define FrameOptBorder (1 << 1) +#define FrameOptThinBorder (1 << 2) +#define FrameOptTitlebar (1 << 3) +#define FrameOptSysmenu (1 << 4) // what a hell !?!? +#define FrameOptMinimize (1 << 5) +#define FrameOptMaxmize (1 << 6) +#define FrameOptClose (1 << 7) +#define FrameOptResize (1 << 8) +#define FrameOptMove (1 << 9) +#define FrameOptTakeFocus (1 << 10) +#define FrameOptKeepAspect (1 << 11) +*/ + +#define FrameOptSkipList (1 << 0) +#define FrameOptHaveBorder (1 << 1) +#define FrameOptHaveTitlebar (1 << 2) +#define FrameOptResizeable (1 << 3) +#define FrameOptMoveable (1 << 4) +#define FrameOptCloseable (1 << 5) +#define FrameOptHideable (1 << 6) +#define FrameOptTakeFocus (1 << 7) +#define FrameOptKeepAspect (1 << 8) + +/* some events echo UnmapNotify, like ReparentNotify, and if we + * start wm on existing X session with open windows, this flag will + * prevent they be unmapped + */ +#define FrameOptIgnoreUnmap (1 << 12) + +// frame type +#define FrameTypeNormal 0 +#define FrameTypeDialog 1 +#define FrameTypeSplash 2 +#define FrameTypeDock 3 +#define FrameTypeToolbar 4 +#define FrameTypeMenu 5 +#define FrameTypeUtil 6 +#define FrameTypeDesktop 7 + +// type of resizing; means from which +// side of window is resize doing +#define ResizeTypeNone (1 << 0) +#define ResizeTypeLeft (1 << 1) +#define ResizeTypeRight (1 << 2) +#define ResizeTypeUp (1 << 3) +#define ResizeTypeDown (1 << 4) +#define ResizeTypeUpLeft (ResizeTypeUp | ResizeTypeLeft) +#define ResizeTypeDownLeft (ResizeTypeDown | ResizeTypeLeft) +#define ResizeTypeUpRight (ResizeTypeUp | ResizeTypeRight) +#define ResizeTypeDownRight (ResizeTypeDown | ResizeTypeRight) +#define ResizeTypeAll (ResizeTypeUp | ResizeTypeDown | ResizeTypeLeft | ResizeTypeRight) + +// type of recalc_geometry() +#define GeometryRecalcAll 0 +#define GeometryRecalcAllXY 1 // recalc all, except for plain w and h +#define GeometryRecalcPlain 2 + +// now lets go to code... + +// window sizes without borders, titlebar etc. +struct WindowGeometry +{ + int x, y, w, h; + int offset_x, offset_y; + int min_w, min_h; + int max_w, max_h; + int inc_w, inc_h; + int border; +}; + +struct FrameData +{ + Window window; + Window transient_win; + Colormap colormap; + + WindowGeometry plain; + + Pixmap icon_pixmap; + Pixmap icon_mask; + char* label; + bool label_alocated; + long state; + long option; + short type; + + int win_gravity; + bool autoplace; + bool have_transient; + +// Icon* icon; +}; + +struct Overlay +{ + int x, y, w, h; + GC inverted_gc; +}; + +enum FrameBordersState +{ + FOCUSED = 1, + UNFOCUSED, + CLICKED +}; + +class FrameBorders +{ + private: + Fl_Color focused; + Fl_Color unfocused; + Fl_Color clicked; + Fl_Color sizers_focused; + Fl_Color sizers_unfocused; + Fl_Color sizers_clicked; + int updown_w; + int updown2x_w; + int leftright_h; + int leftright2x_h; + bool is_shaped; + bool is_border; + void item_color(Fl_Color c, FrameBordersState s, bool is_border); + Fl_Color item_color(FrameBordersState s, bool is_border); + + public: + void border_color(Fl_Color c, FrameBordersState s) { item_color(c, s, true); } + void sizers_color(Fl_Color c, FrameBordersState s) { item_color(c, s, false); } + void updown(int s); + void leftright(int s); + void shaped(bool s); + + Fl_Color border_color(FrameBordersState s) { return item_color(s, true); } + Fl_Color sizers_color(FrameBordersState s) { return item_color(s, false); } + int updown(void) { return updown_w; } + int updown2x(void) { return updown2x_w; } + int leftright(void) { return leftright_h; } + int leftright2x(void) { return leftright2x_h; } + bool shaped(void) { return is_shaped; } +}; + +/* Window responsible for displaying parent + * coordinates. It will _not_ be framed. + */ +class CoordinatesView : public Fl_Window +{ + private: + char data[100]; + Fl_Box* data_box; + public: + CoordinatesView(); + ~CoordinatesView(); + void display_data(int x, int y, int w, int h); +}; + + +class Titlebar; +class FrameEventHandler; + +// Head honcho of everything +class Frame : public Fl_Window +{ + private: + friend class FrameEventHandler; + + FrameData* fdata; + int screen_x, screen_y, screen_w, screen_h; + // sizes used when we do restore() + int restore_x, restore_y, restore_w, restore_h; + + bool opaque_move_resize; + bool show_titlebar; + bool is_moving; + bool is_resizing; + bool cursor_grabbed; + bool snap_move; + bool show_coordinates; + + FrameBorders borders; + FrameEventHandler* events; + + Titlebar* titlebar; + + Fl_Box* sizer_top_left; + Fl_Box* sizer_top_right; + Fl_Box* sizer_bottom_left; + Fl_Box* sizer_bottom_right; + + CoordinatesView* cview; + + Overlay overlay; + + // private loaders + void feed_data(XWindowAttributes* attrs); + //void load_wm_hints(void); + /* void load_size_hints(void); */ + void load_label(void); + + // preparers + void setup_borders(void); + // void init_sizes(void); + void init_overlay(int border_size); + void reparent_window(void); + void place_sizers(int x, int y, int w, int h); + long resize_type(int x, int y); + + void recalc_geometry(int x, int y, int w, int h, short rtype); + void configure_notify(void); + void shape_borders(void); + void shape_edges(void); + + void show_sizers(void); + void hide_sizers(void); + + void draw_overlay(int x, int y, int w, int h); + void clear_overlay(void); + + // this is here so FrameEventHandler can access Fl_Window + int handle_parent(int event); + + Frame(const Frame&); + Frame operator=(const Frame&); + + public: + Frame(Window, XWindowAttributes* = 0); + ~Frame(); + + Window window(void) { return fdata->window; } + Window transient_window(void) { return fdata->transient_win; } + + void settings_changed(void) { } + int handle(int e); + int handle(XEvent* e); + void destroy(void); + void display_internals(void); + void content_click(void); + + bool frame_type(short t) { return ((fdata->type == t) ? true : false); } + + void set_state(long s) { fdata->state |= s; } + bool state(long s) { return ((fdata->state & s) == s) ? true : false; } + void clear_state(long s) { fdata->state &= ~s; } + void clear_all_states(void) { fdata->state = 0; } + + void set_option(long o) { fdata->option |= o; } + bool option(long o) { return ((fdata->option & o) == o) ? true : false; } + void clear_option(long o) { fdata->option &= ~o; } + void clear_all_options(void) { fdata->option = 0; } + + // public loaders + void load_colormap(Colormap col = 0); + + // window manipulators + void set_size(int x, int y, int w, int h, bool apply_on_plain); + void move_window(int x, int y); + void resize_window(int mouse_x, int mouse_y, long direction); + void maximize(void); + void restore(void); + void shade(void); + void unshade(void); + void close_kill(void); + void focus(void); + void unfocus(void); + void raise(void); + void lower(void); + void borders_color(FrameBordersState s); + void set_cursor(CursorType t); + // void change_window_type(short t); + void map(void); + void unmap(void); + + void show_coordinates_window(void); + void update_coordinates_window(void); + void hide_coordinates_window(void); + + //const FrameBorders& frame_borders(void) { return borders; } + + /* These function are used to determine how Frame + * will dispatch events between titlebar and sizers + */ + void move_start(void) { is_moving = true; } + void move_end(void) { is_moving = false; } + bool moving(void) { return is_moving; } + void resize_start(void) { is_resizing = true; } + void resize_end(void) { is_resizing = false; } + bool resizing(void) { return is_resizing; } + + // TODO: should this be in WindowManager or here ??? + void grab_cursor(void); + void ungrab_cursor(void); + + bool destroy_scheduled(void) { return state(FrameStateDestroyed); } +}; + +#endif diff --git a/edewm/Hints.cpp b/edewm/Hints.cpp new file mode 100644 index 0000000..179cf55 --- /dev/null +++ b/edewm/Hints.cpp @@ -0,0 +1,512 @@ +/* + * $Id: Hints.cpp 1736 2006-08-19 00:38:53Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Hints.h" +#include "Tracers.h" +#include "Frame.h" +#include "Atoms.h" +#include "Windowmanager.h" + +#include +#include // CARD32 +#include + +#define MwmHintsDecorations (1 << 1) + +#define MwmDecorAll (1 << 0) +#define MwmDecorBorder (1 << 1) +#define MwmDecorHandle (1 << 2) +#define MwmDecorTitle (1 << 3) +#define MwmDecorMenu (1 << 4) +#define MwmDecorMinimize (1 << 5) +#define MwmDecorMaximize (1 << 6) + +#define PropMotifHintsElements 3 + +struct MwmHints +{ + unsigned long flags; + unsigned long functions; + unsigned long decorations; +}; + +void Hints::icccm_size(FrameData* f) +{ + TRACE_FUNCTION("void Hints::icccm_size(FrameData* f)"); + + assert(f != 0); + long supplied; + XSizeHints* sh = XAllocSizeHints(); + + if(!XGetWMNormalHints(fl_display, f->window, sh, &supplied)) + sh->flags = 0; + + if(sh->flags & PResizeInc) + { + if(sh->width_inc < 1) + sh->width_inc = 1; + if(sh->height_inc < 1) + sh->height_inc = 1; + } + + /* Check if PBaseSize flag is set. If not + * fill it with minimal values and use them below. + */ + if(!(sh->flags & PBaseSize)) + sh->base_width = sh->base_height = 0; + + if(!(sh->flags & PMinSize)) + { + sh->min_width = sh->base_width; + sh->min_height= sh->base_height; + } + + if(!(sh->flags & PMaxSize)) + { + sh->max_width = 32767; + sh->max_height = 32767; + } + + if(sh->max_width < sh->min_width || sh->max_width <= 0) + sh->max_width = 32767; + if(sh->max_height < sh->min_height || sh->max_height <= 0) + sh->max_height = 32767; + + if(!(sh->flags & PWinGravity)) + { + sh->win_gravity = NorthWestGravity; + sh->flags |= PWinGravity; + } + + f->plain.max_w = sh->max_width; + f->plain.max_h = sh->max_height; + //f->plain.w = sh->base_width; + //f->plain.h = sh->base_height; + f->plain.min_w = sh->min_width; + f->plain.min_h = sh->min_height; + f->win_gravity = sh->win_gravity; + + // TODO: maybe calculate aspect_min and aspect_max ? + if(sh->flags & PAspect) + f->option |= FrameOptKeepAspect; + + f->autoplace = (!(sh->flags & (USPosition|PPosition))); + + XFree(sh); +} + +void Hints::icccm_wm_hints(FrameData* f) +{ + TRACE_FUNCTION("void Hints::icccm_wm_hints(FrameData* f)"); + assert(f != NULL); + + XWMHints* wm_hints = XAllocWMHints(); + wm_hints = XGetWMHints(fl_display, f->window); + if(!wm_hints) + { + ELOG("XGetWMHints failed!"); + return; + } + + if((wm_hints->flags & IconPixmapHint) && wm_hints->icon_pixmap) + f->icon_pixmap = wm_hints->icon_pixmap; + if((wm_hints->flags & IconMaskHint) &&wm_hints->icon_mask) + f->icon_mask = wm_hints->icon_mask; + + switch(wm_hints->initial_state) + { + case WithdrawnState: + XRemoveFromSaveSet(fl_display, f->window); + break; + case IconicState: + f->state = FrameStateIconized; + break; + case NormalState: + default: + f->state = FrameStateNormal; + break; + } + + // check for focus + if((wm_hints->flags & InputHint) && !wm_hints->input) + f->option &= ~FrameOptTakeFocus; // window does not want focus + else + f->option |= FrameOptTakeFocus; // window want focus; + + XFree(wm_hints); +} + +char* Hints::icccm_label(Window win, bool* allocated) +{ + TRACE_FUNCTION("char* Hints::icccm_label(Window win, bool* allocated)"); + + XTextProperty xtp; + char* title = 0; + if(XGetWMName(fl_display, win, &xtp)) + { + if(xtp.encoding == XA_STRING) + { + title = strdup((const char*)xtp.value); + *allocated = true; + } + else + { + ELOG("X11 UTF8 text property not supported, at least for now..."); + *allocated = false; + } + + XFree(xtp.value); + } + + return title; +} + +void Hints::icccm_set_iconsizes(WindowManager* wm) +{ + TRACE_FUNCTION("void Hints::icccm_set_iconsizes(WindowManager* wm)"); + assert(wm != 0); + + XIconSize* is = XAllocIconSize(); + if(!is) + { + ELOG("XAllocIconSize failed!"); + return; + } + + is->min_width = is->min_height = 8; + is->max_width = is->max_height = 48; + is->width_inc = is->height_inc = 1; + ELOG("setting icon sizes"); + XSetIconSizes(fl_display, WindowManager::instance()->root_window(), is, 1); + XFree(is); +} + +void Hints::icccm_configure(FrameData* f) const +{ + TRACE_FUNCTION("void Hints::icccm_configure(FrameData* f) const"); + + assert(f != 0); + + XConfigureEvent ce; + ce.send_event = True; + ce.display = fl_display; + ce.type = ConfigureNotify; + ce.event = f->window; + ce.window = f->window; + ce.x = f->plain.x; + ce.y = f->plain.y; + ce.width = f->plain.w; + ce.height = f->plain.h; + ce.border_width = f->plain.border; + ce.above = None; + ce.override_redirect = False; + XSendEvent(fl_display, f->window, False, StructureNotifyMask, (XEvent*)&ce); +} + +char* Hints::netwm_label(Window win, bool* allocated) +{ + TRACE_FUNCTION("char* Hints::netwm_label(Window win, bool* allocated)"); + + unsigned char* title = 0; + Atom real_type; + int real_format; + unsigned long items_read, items_left; + + int status = XGetWindowProperty(fl_display, win, _XA_NET_WM_NAME, + 0L, 0x7fffffff, False, _XA_UTF8_STRING, &real_type, &real_format, &items_read, &items_left, + (unsigned char**)&title); + + if(status != Success && items_read != 1) + { + *allocated = false; + if(title) + XFree(title); + + return 0; + } + + *allocated = true; + return (char*)title; +} + +void Hints::netwm_window_type(FrameData* fd) +{ + TRACE_FUNCTION("short Hints::netwm_window_type(FrameData* fd) const"); + + Atom *data; + Atom real_type; + int real_format; + unsigned long items_read, items_left; + short type = FrameTypeNormal; + + int status = XGetWindowProperty(fl_display, fd->window, _XA_NET_WM_WINDOW_TYPE, + 0L, 8L, false, XA_ATOM, &real_type, &real_format, &items_read, &items_left, + (unsigned char**)&data); + + if(status != Success || !items_read) + { + ELOG("Netwm say: unknown window type, using FrameTypeNormal"); + type = FrameTypeNormal; + } + + for(unsigned int i = 0; i < items_read; i++) + { + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_DOCK) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_DOCK"); + type = FrameTypeDock; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_TOOLBAR) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_TOOLBAR"); + type = FrameTypeToolbar; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_MENU) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_MENU"); + type = FrameTypeMenu; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_UTIL) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_UTIL"); + type = FrameTypeUtil; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_DIALOG) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_DIALOG"); + type = FrameTypeDialog; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_SPLASH) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_SPLASH"); + type = FrameTypeSplash; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_DESKTOP) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_DESKTOP"); + type = FrameTypeDesktop; + break; + } + + if(data[i] == _XA_NET_WM_WINDOW_TYPE_NORMAL) + { + ELOG("_XA_NET_WM_WINDOW_TYPE_NORMAL"); + type = FrameTypeNormal; + break; + } + } + + XFree(data); + fd->type = type; +} + +void Hints::netwm_set_window_type(FrameData* fd) +{ + TRACE_FUNCTION("void Hints::netwm_set_window_type(FrameData* fd)"); + assert(fd != 0); + + Atom to_set[1]; + switch(fd->type) + { + case FrameTypeNormal: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_NORMAL; + break; + case FrameTypeDesktop: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_DESKTOP; + break; + case FrameTypeSplash: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_SPLASH; + break; + case FrameTypeUtil: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_UTIL; + break; + case FrameTypeMenu: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_MENU; + break; + case FrameTypeToolbar: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_TOOLBAR; + break; + case FrameTypeDialog: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_DIALOG; + break; + case FrameTypeDock: + to_set[0] = _XA_NET_WM_WINDOW_TYPE_DOCK; + break; + default: + EFATAL("Type unknown"); + to_set[0] = _XA_NET_WM_WINDOW_TYPE_NORMAL; + break; + } + + XChangeProperty(fl_display, fd->window, _XA_NET_WM_WINDOW_TYPE, XA_ATOM, 32, + PropModeReplace, (unsigned char*)to_set, 1); +} + +long Hints::netwm_window_state(FrameData* fd) const +{ + TRACE_FUNCTION("long Hints::netwm_window_state(FrameData* fd) const"); + assert(fd != 0); + + Atom *data; + Atom real_type; + int real_format; + unsigned long items_read, items_left; + + int status = XGetWindowProperty(fl_display, fd->window, _XA_NET_WM_STATE, + 0L, 12L, false, XA_ATOM, &real_type, &real_format, &items_read, &items_left, + (unsigned char**)&data); + + if(status != Success || !items_read) + return FrameTypeNormal; + + for(unsigned int i = 0; i < items_read; i++) + { + if(data[i] == _XA_NET_WM_STATE_MODAL) + ELOG("_XA_NET_WM_STATE_MODAL"); + else if(data[i] == _XA_NET_WM_STATE_STICKY) + ELOG("_XA_NET_WM_STATE_STICKY"); + else if(data[i] == _XA_NET_WM_STATE_MAXIMIZED_VERT) + ELOG("_XA_NET_WM_STATE_MAXIMIZED_VERT"); + else if(data[i] == _XA_NET_WM_STATE_MAXIMIZED_HORZ) + ELOG("_XA_NET_WM_STATE_MAXIMIZED_HORZ"); + else if(data[i] == _XA_NET_WM_STATE_SHADED) + ELOG("_XA_NET_WM_STATE_SHADED"); + else if(data[i] == _XA_NET_WM_STATE_SKIP_TASKBAR) + ELOG("_XA_NET_WM_STATE_SKIP_TASKBAR"); + else if(data[i] == _XA_NET_WM_STATE_SKIP_PAGER) + ELOG("_XA_NET_WM_STATE_SKIP_PAGER"); + else if(data[i] == _XA_NET_WM_STATE_HIDDEN) + ELOG("_XA_NET_WM_STATE_HIDDEN"); + else if(data[i] == _XA_NET_WM_STATE_FULLSCREEN) + ELOG("_XA_NET_WM_STATE_FULLSCREEN"); + else if(data[i] == _XA_NET_WM_STATE_ABOVE) + ELOG("_XA_NET_WM_STATE_ABOVE"); + else if(data[i] == _XA_NET_WM_STATE_BELOW) + ELOG("_XA_NET_WM_STATE_BELOW"); + else if(data[i] == _XA_NET_WM_STATE_DEMANDS_ATTENTION) + ELOG("_XA_NET_WM_STATE_DEMANDS_ATTENTION"); + } + + XFree(data); + return FrameStateNormal; +} + +void Hints::netwm_set_window_state(FrameData* fd) +{ + TRACE_FUNCTION("void Hints::set_window_state(FrameData* fd)"); + + assert(fd != 0); + Atom data[10]; + int i = 0; + + if(fd->state & FrameStateSticky) + data[i++] = _XA_NET_WM_STATE_STICKY; + if(fd->state & FrameStateShaded) + data[i++] = _XA_NET_WM_STATE_SHADED; + if(fd->state & FrameStateAlwaysAbove) + data[i++] = _XA_NET_WM_STATE_ABOVE; + if(fd->state & FrameStateAlwaysBelow) + data[i++] = _XA_NET_WM_STATE_BELOW; + if((fd->state & FrameStateMaximizedHorz) || (fd->state & FrameStateMaximized)) + data[i++] = _XA_NET_WM_STATE_MAXIMIZED_HORZ; + if((fd->state & FrameStateMaximizedVert) || (fd->state & FrameStateMaximized)) + data[i++] = _XA_NET_WM_STATE_MAXIMIZED_VERT; + + XChangeProperty(fl_display, fd->window, _XA_NET_WM_STATE, XA_ATOM, 32, + PropModeReplace, (unsigned char*)data, i); +} + +void Hints::netwm_set_active_window(Window win) +{ + TRACE_FUNCTION("void Hints::netwm_set_active_window(Window win)"); + + XChangeProperty(fl_display, WindowManager::instance()->root_window(), _XA_NET_ACTIVE_WINDOW, XA_WINDOW, 32, + PropModeReplace, (unsigned char *)&win, 1); +} + +void Hints::netwm_strut(Window win, int* x, int* y, int* w, int* h) const +{ + TRACE_FUNCTION("void Hints::netwm_strut(Window win, int* x, int* y, int* w, int* h) const"); + + CARD32 *data; + Atom real_type; + int real_format; + unsigned long items_read, items_left; + + int status = XGetWindowProperty(fl_display, win, _XA_NET_WM_STRUT, + 0L, 0x7fffffff, False, XA_CARDINAL, &real_type, &real_format, &items_read, &items_left, + (unsigned char**)&data); + + ELOG("STRUT: items_read %i", items_read); + if(status != Success) + return; + + if((items_read / sizeof(CARD32)) != 4) + { + ELOG("STRUT: window have wrong strut %i", items_read/sizeof(CARD32)); + return; + } + + ELOG("STRUT: %i %i %i %i", data[0], data[1], data[2], data[3]); + XFree((char*)data); +} + +void Hints::mwm_load_hints(FrameData* fd) +{ + TRACE_FUNCTION("void Hints::mwm_load_hints(FrameData* fd)"); + assert(fd != 0); + + Atom real_type; + int real_format; + unsigned long items_read, items_left; + MwmHints* mwm; + + int status = XGetWindowProperty(fl_display, fd->window, _XA_MOTIF_HINTS, + 0L, 20L, false, _XA_MOTIF_HINTS, &real_type, &real_format, &items_read, &items_left, + (unsigned char**)&mwm); + + if(status == Success && items_read /*>= PropMotifHintsElements*/) + { + ELOG("MWM: got hints !!!"); + if((mwm->flags & MwmHintsDecorations)) + { + if(mwm->decorations & MwmDecorAll) + ELOG("MwmDecorAll"); + else + { + if(mwm->decorations & MwmDecorTitle) + ELOG("MwmHintsDecorTitle"); + if(mwm->decorations & MwmDecorBorder) + ELOG("MwmHintsDecorBorder"); + if(mwm->decorations & MwmDecorHandle) + ELOG("MwmHintsDecorHandle"); + } + } + else + ELOG("mwm: no decor at all"); + } + + XFree(mwm); +} diff --git a/edewm/Hints.h b/edewm/Hints.h new file mode 100644 index 0000000..4f40449 --- /dev/null +++ b/edewm/Hints.h @@ -0,0 +1,40 @@ +/* + * $Id: Hints.h 1736 2006-08-19 00:38:53Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __HINTS_H__ +#define __HINTS_H__ + +#include + +struct FrameData; +class WindowManager; + +struct Hints +{ + void icccm_size(FrameData* f); + void icccm_wm_hints(FrameData* f); + char* icccm_label(Window win, bool* allocated); + void icccm_set_iconsizes(WindowManager* wm); + void icccm_configure(FrameData* f) const; + + char* netwm_label(Window win, bool* allocated); + void netwm_window_type(FrameData* fd); + void netwm_set_window_type(FrameData* fd); + long netwm_window_state(FrameData* fd) const; + void netwm_set_window_state(FrameData* fd); + void netwm_set_active_window(Window win); + void netwm_strut(Window win, int* x, int* y, int* w, int* h) const; + + void mwm_load_hints(FrameData* fd); +}; + +#endif diff --git a/edewm/Makefile b/edewm/Makefile new file mode 100644 index 0000000..690d9ac --- /dev/null +++ b/edewm/Makefile @@ -0,0 +1,42 @@ +# +# $Id: Makefile 1737 2006-08-19 00:45:31Z karijes $ +# +# Part of Equinox Desktop Environment (EDE). +# Copyright (c) 2000-2006 EDE Authors. +# +# This program is licenced under terms of the +# GNU General Public Licence version 2 or newer. +# See COPYING for details. + +CPPFILES = \ + debug.cpp \ + main.cpp \ + Windowmanager.cpp \ + Hints.cpp \ + Atoms.cpp \ + Titlebar.cpp \ + Frame.cpp \ + Cursor.cpp \ + Events.cpp \ + Sound.cpp \ + Utils.cpp + +TARGET = edewm + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + +archive: + DATE=`date +%d%m%Y`; \ + cd ..; \ + tar -cjpvf edewm-unfinished-$$DATE.tar.bz2 edewm diff --git a/edewm/Sound.cpp b/edewm/Sound.cpp new file mode 100644 index 0000000..42e9306 --- /dev/null +++ b/edewm/Sound.cpp @@ -0,0 +1,173 @@ +/* + * $Id: Sound.cpp 1697 2006-07-21 15:01:05Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Sound.h" +#include "debug.h" + +#ifdef SOUND + #include + #include +#endif + +#include +#include +#include // free +#include // strdup + +SoundSystem::SoundSystem() +{ +#ifdef SOUND + device = NULL; + inited = false; + down = false; +#endif +} + +SoundSystem::~SoundSystem() +{ +#ifdef SOUND + if(!down) + shutdown(); // just in case +#endif +} + +void SoundSystem::init(void) +{ +#ifdef SOUND + EPRINTF("Loading sound system\n"); + + ao_initialize(); + default_driver = ao_default_driver_id(); + + for(int i = 0; i < KNOWN_SOUNDS; i++) + { + event_sound[i].allocated = false; + event_sound[i].loaded = false; + event_sound[i].file_to_play = NULL; + } + + inited = true; +#endif +} + +void SoundSystem::shutdown(void) +{ +#ifdef SOUND + EPRINTF("Shutting down sound system\n"); + + ao_shutdown(); + + for(int i = 0; i < KNOWN_SOUNDS; i++) + { + if(event_sound[i].allocated) + free(event_sound[i].file_to_play); + } + + down = true; +#endif +} + +void SoundSystem::add(short event, const char* file) +{ +#ifdef SOUND + assert(event < KNOWN_SOUNDS); + if(event_sound[event].allocated) + free(event_sound[event].file_to_play); + + event_sound[event].file_to_play = strdup(file); + event_sound[event].allocated = true; + event_sound[event].loaded = true; +#endif +} + +int SoundSystem::play(short event) +{ +#ifdef SOUND + assert(event < KNOWN_SOUNDS); + if(event_sound[event].loaded) + play(event_sound[event].file_to_play); + else + ELOG("Skipping this sound, no file for it"); +#endif + return 1; +} + +int SoundSystem::play(const char* fname) +{ +#ifdef SOUND + assert(inited != false); + assert(fname != NULL); + + FILE* f = fopen(fname, "rb"); + if(f == NULL) + { + ELOG("Can't open %s\n", fname); + return 0; + } + + OggVorbis_File vf; + vorbis_info* vi; + + if(ov_open(f, &vf, NULL, 0) < 0) + { + ELOG("%s does not appear to be ogg file\n"); + fclose(f); + return 0; + } + + // read and print comments + char** comm = ov_comment(&vf, -1)->user_comments; + vi = ov_info(&vf, -1); + + while(*comm) + { + ELOG("%s", *comm); + comm++; + } + + assert(vi != NULL); + + format.bits = 4 * 8; // TODO: should be word_size * 8 + format.channels = vi->channels; + format.rate = vi->rate; + format.byte_format = AO_FMT_NATIVE; + + // now open device + device = ao_open_live(default_driver, &format, NULL); + if(device == NULL) + { + ELOG("Can't open device"); + ov_clear(&vf); + return 0; + } + + int current_section; + while(1) + { + long ret = ov_read(&vf, pcm_out, sizeof(pcm_out), 0, 2, 1, ¤t_section); + if(ret == 0) + break; + else if(ret < 0) + ELOG("Error in the stream, continuing..."); + else + ao_play(device, pcm_out, ret); + } + + ao_close(device); + device = NULL; + + // NOTE: fclose(f) is not needed, since ov_clear() will close file + ov_clear(&vf); +#endif // SOUND + + return 1; +} diff --git a/edewm/Sound.h b/edewm/Sound.h new file mode 100644 index 0000000..1b68259 --- /dev/null +++ b/edewm/Sound.h @@ -0,0 +1,63 @@ +/* + * $Id: Sound.h 1697 2006-07-21 15:01:05Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __SOUND_H__ +#define __SOUND_H__ + +#ifdef SOUND + #include +#endif + +enum +{ + SOUND_MINIMIZE = 0, + SOUND_MAXIMIZE, + SOUND_RESTORE, + SOUND_SHADE, + SOUND_CLOSE +}; +#define KNOWN_SOUNDS 5 + +struct EventSound +{ + bool allocated; + bool loaded; + short event; + char* file_to_play; +}; + +#define PCM_BUF_SIZE 4096 + +class SoundSystem +{ +#ifdef SOUND + private: + ao_device* device; + ao_sample_format format; + int default_driver; + char pcm_out[PCM_BUF_SIZE]; + bool inited; + bool down; + EventSound event_sound[KNOWN_SOUNDS]; +#endif + public: + SoundSystem(); + ~SoundSystem(); + void init(void); + void shutdown(void); + + void add(short event, const char* file); + int play(const char* fname); + int play(short event); +}; + +#endif diff --git a/edewm/Titlebar.cpp b/edewm/Titlebar.cpp new file mode 100644 index 0000000..8000724 --- /dev/null +++ b/edewm/Titlebar.cpp @@ -0,0 +1,429 @@ +/* + * $Id: Titlebar.cpp 1718 2006-07-29 13:26:19Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Titlebar.h" +#include "Frame.h" +#include "debug.h" +#include +#include +#include +#include +#include + +#include "app.xpm" +Fl_Image app_img((const char**)app_xpm); + +#define MAX_OF 0.6f +#define MIN_OF 0.5f +#define RES_OF 0.1f +#define vv(x,y) fl_vertex(x,y) + +void draw_close(Fl_Color col) +{ + fl_rotate(45); + fl_color(col); + + vv(-0.9f,-0.12f); vv(-0.9f,0.12f); vv(0.9f,0.12f); vv(0.9f,-0.12f); fl_fill_stroke(FL_DARK3); + vv(-0.12f,-0.9f); vv(-0.12f,0.9f); vv(0.12f,0.9f); vv(0.12f,-0.9f); fl_fill_stroke(FL_DARK3); +} + +void draw_max(Fl_Color col) +{ + fl_color(col); + + vv(-MAX_OF, -MAX_OF); vv(MAX_OF, -MAX_OF); + vv(MAX_OF,-MAX_OF+0.4); vv(-MAX_OF,-MAX_OF+0.4); + fl_fill(); + + vv(MAX_OF,-MAX_OF); vv(MAX_OF,MAX_OF); + vv(-MAX_OF,MAX_OF); vv(-MAX_OF,-MAX_OF); + fl_stroke(); +} + +void draw_maximized(Fl_Color col) +{ + fl_color(col); + + vv(-MAX_OF+RES_OF, -MAX_OF+RES_OF); vv(MAX_OF-RES_OF, -MAX_OF+RES_OF); + vv(MAX_OF-RES_OF,-MAX_OF+RES_OF); vv(MAX_OF-RES_OF,MAX_OF-RES_OF); + vv(-MAX_OF+RES_OF,MAX_OF-RES_OF); vv(-MAX_OF+RES_OF,-MAX_OF+RES_OF); + fl_stroke(); + + vv(-MAX_OF+RES_OF+0.2f, -MAX_OF+RES_OF+0.2f); vv(MAX_OF-RES_OF-0.2f, -MAX_OF+RES_OF+0.2f); + vv(MAX_OF-RES_OF-0.2f,-MAX_OF+RES_OF+0.2f); vv(MAX_OF-RES_OF-0.2f,MAX_OF-RES_OF-0.2f); + vv(-MAX_OF+RES_OF+0.2f,MAX_OF-RES_OF-0.2f); vv(-MAX_OF+RES_OF+0.2f,-MAX_OF+RES_OF+0.2f); + fl_stroke(); +} + + +void draw_min(Fl_Color col) +{ + fl_color(col); + + vv(-MIN_OF, MIN_OF); vv(MIN_OF, MIN_OF); + vv(MIN_OF, MIN_OF+0.3f); vv(-MIN_OF, MIN_OF+0.3f); + fl_fill(); +} + +void close_cb(Fl_Widget*, void* t) +{ + Titlebar* tb = (Titlebar*)t; + assert(tb != NULL); + tb->on_close(); +} + +void maximize_cb(Fl_Widget* b, void* t) +{ + Titlebar* tb = (Titlebar*)t; + assert(tb != NULL); + tb->on_maximize(); +} + +void shade_cb(Fl_Widget*, void* t) +{ + Titlebar* tb = (Titlebar*)t; + assert(tb != NULL); + tb->on_shade(); +} + +void minimize_cb(Fl_Widget*, void* t) +{ + Titlebar* tb = (Titlebar*)t; + assert(tb != NULL); + tb->on_minimize(); +} + +void lower_cb(Fl_Widget*, void* t) +{ + Titlebar* tb = (Titlebar*)t; + assert(tb != NULL); + tb->on_lower(); +} + +TitlebarButton::TitlebarButton(int type) : + Fl_Button(0, 0, 0, 0, 0), + button_type(type), + pos(PLACE_RIGHT) +{ + focus_box(FL_NO_BOX); + box(FL_FLAT_BOX); + label_type(FL_SYMBOL_LABEL); + + switch(button_type) + { + case TITLEBAR_CLOSE_UP: + label("@xx"); + break; + case TITLEBAR_MAX_UP: + label("@mx"); + break; + case TITLEBAR_MIN_UP: + label("@ii"); + break; + } +} + +TitlebarButton::~TitlebarButton() +{ +} + +/* Place buttons on titlebar. The can be either + * PLACE_RIGHT (standard in many wm-s) or PLACE_RIGHT + */ +void TitlebarButton::place(int p) +{ + if(p != PLACE_LEFT && p != PLACE_RIGHT) + pos = PLACE_RIGHT; + else + pos = p; +} + +Titlebar::Titlebar(Frame* f, int x, int y, int w, int h, const char* l) : + Fl_Group(x, y, w, h, l), + win_x(0), + win_y(0), + win_x1(0), + win_y1(0), + curr_frame(f), + minb(TITLEBAR_MIN_UP), + maxb(TITLEBAR_MAX_UP), + closeb(TITLEBAR_CLOSE_UP), + label_box(new Fl_Box(0, 0, 0, 0)), + icon_box(new Fl_Box(0, 0, 0, 0)), + focus_color(FL_GRAY), + unfocus_color(FL_WHITE) +{ + assert(curr_frame != NULL); + + box(FL_FLAT_BOX); + + fl_add_symbol("xx", draw_close, 1); + fl_add_symbol("mx", draw_max, 1); + fl_add_symbol("mz", draw_maximized, 1); + fl_add_symbol("ii", draw_min, 1); + label_box->box(FL_FLAT_BOX); + label_box->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); + label_box->color(FL_GRAY); + + icon_box->image(app_img); + + title_menu = new Fl_Menu_(); + + /* XXX: any way this can be better ? + * When we change label of existing menu item, menu width will not be + * recalculated honoring size of that item. So we must initially fill + * them with blanks, which will keep longer labels fully visible. + */ + menu_max = title_menu->add(_("Maximize "), 0, maximize_cb, this); + menu_shade = title_menu->add(_("Shade "), 0, shade_cb, this); + menu_lower = title_menu->add(_("Lower "), 0, lower_cb, this); + menu_min = title_menu->add(_("Minimize "), 0, minimize_cb, this, FL_MENU_DIVIDER); + menu_close = title_menu->add(_("Close "), 0, close_cb, this); + + //closeb.place(PLACE_LEFT); + end(); + + closeb.callback(close_cb, this); + //minb.callback(minimize_cb, this); + minb.callback(shade_cb, this); + maxb.callback(maximize_cb, this); + + color(FL_GRAY); + //align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); + if(curr_frame->frame_type(FrameTypeDialog)) + { + minb.hide(); + maxb.hide(); + } +} + +Titlebar::~Titlebar() +{ +} + +#define PLACE_BUTTON(btn, leftx, rightx, mid, offset, sz) \ + if(btn.place() == PLACE_LEFT) \ + {\ + btn.resize(leftx, mid, sz, sz); \ + if(btn.visible()) \ + leftx += sz + offset; \ + }\ + if(btn.place() == PLACE_RIGHT) \ + {\ + btn.resize(rightx, mid, sz, sz); \ + if(btn.visible()) \ + rightx -= sz + offset; \ + } + +void Titlebar::layout(void) +{ + int initial_offset = 2; // distance from borders + int W = w() - box()->dx() - initial_offset; + int X = box()->dx() + initial_offset; + + int lsize = h() / 2 + 2; + int offset = 0; + int mid = 0; + int sz = h(); + + label_size(lsize); + + sz -= 4; // button width/height + mid = 2; + offset = 2; + + int lx = X + offset; // left x + int rx = W - sz - offset; // right x + + PLACE_BUTTON(closeb, lx, rx, mid, offset, sz) + PLACE_BUTTON(maxb, lx, rx, mid, offset, sz) + PLACE_BUTTON(minb, lx, rx, mid, offset, sz) + + //rx -= sz + offset; + //lx += sz + offset; + + if(icon_box->visible()) + { + icon_box->resize(lx, mid, sz, sz); + lx += sz + offset; + } + + lx += offset; + rx -= lx; + label_box->resize(lx, mid, rx, sz); + + fl_font(label_font(), label_size()); + // take a label from titlebar object + if(!label().empty()) + label_box->label(label()); + + Fl_Group::layout(); +} + +void Titlebar::focus(void) +{ + // TODO: add colors for label_box, buttons + color(focus_color); + redraw(); +} + +void Titlebar::unfocus(void) +{ + // TODO: add colors for label_box, buttons + color(unfocus_color); + redraw(); +} + +void Titlebar::on_close(void) +{ + assert(curr_frame != NULL); + curr_frame->close_kill(); +} + +void Titlebar::on_maximize(void) +{ + assert(curr_frame != NULL); + + if(curr_frame->state(FrameStateMaximized)) + { + curr_frame->restore(); + maxb.label("@mx"); + menu_max->label(_("Maximize")); + } + else + { + curr_frame->maximize(); + maxb.label("@mz"); + menu_max->label(_("UnMaximize")); + } +} + +void Titlebar::on_minimize(void) +{ + assert(curr_frame != NULL); + // TODO: not implemented +} + +void Titlebar::on_shade(void) +{ + assert(curr_frame != NULL); + + if(curr_frame->state(FrameStateShaded)) + { + curr_frame->unshade(); + menu_shade->label(_("Shade")); + } + else + { + curr_frame->shade(); + menu_shade->label(_("UnShade")); + } +} + +void Titlebar::on_lower(void) +{ + curr_frame->lower(); +} + +int Titlebar::handle(int event) +{ + // check if event is directed to our buttons + if(event == FL_PUSH || event == FL_RELEASE) + { + Fl_Widget* ch = 0; + for(int i = 0; i < children(); i++) + { + ch = child(i); + + // do not send event to label_box + if(label_box && ch == label_box) + continue; + + if(ch && Fl::event_inside(ch->x(), ch->y(), ch->w(), ch->h())) + { + ch->send(event); + return 1; + } + } + } + + // proceed to our events + switch(event) + { + case FL_PUSH: + ELOG("Titlebar FL_PUSH"); + + if(Fl::event_state(FL_BUTTON3)) + { + title_menu->popup(Fl::event_x_root(), Fl::event_y_root()); + title_menu->redraw(); + return 1; + } + + // prevent double click + if(Fl::event_is_click()) + curr_frame->raise(); + + win_x = Fl::event_x_root() - curr_frame->x(); + win_y = Fl::event_y_root() - curr_frame->y(); + return 1; + + case FL_DRAG: + ELOG("Titlebar FL_DRAG"); + // TODO: correct behaviour ??? + if(curr_frame->state(FrameStateMaximized)) + return 1; + + win_x1 = Fl::event_x_root() - win_x; + win_y1 = Fl::event_y_root() - win_y; + + if(!curr_frame->moving()) + { + curr_frame->move_start(); + + /* We can safely call grab_cursor() as many times + * as we want, since it have internal checks + * + * TODO: add XGrabServer() here + */ + curr_frame->set_cursor(CURSOR_MOVE); + curr_frame->grab_cursor(); + curr_frame->show_coordinates_window(); + } + + curr_frame->move_window(win_x1, win_y1); + curr_frame->update_coordinates_window(); + + return 1; + + case FL_RELEASE: + ELOG("Titlebar FL_RELEASE"); + if(curr_frame->moving()) + { + curr_frame->ungrab_cursor(); + curr_frame->set_cursor(CURSOR_DEFAULT); + curr_frame->move_end(); + curr_frame->hide_coordinates_window(); + } + return 1; + + case FL_ENTER: + ELOG("Titlebar::FL_ENTER"); + return 1; + case FL_LEAVE: + ELOG("Titlebar::FL_LEAVE"); + return 1; + default: + return Fl_Group::handle(event); + } + return 0; +} diff --git a/edewm/Titlebar.h b/edewm/Titlebar.h new file mode 100644 index 0000000..2deeb6c --- /dev/null +++ b/edewm/Titlebar.h @@ -0,0 +1,79 @@ +/* + * $Id: Titlebar.h 1718 2006-07-29 13:26:19Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __TITLEBAR_H__ +#define __TITLEBAR_H__ + +#include +#include +#include +#include +#include + +// TODO: remove this after themes are added +#define TITLEBAR_MAX_UP 1 +#define TITLEBAR_CLOSE_UP 2 +#define TITLEBAR_MIN_UP 3 + +#define PLACE_RIGHT 1 +#define PLACE_LEFT 2 + +class TitlebarButton : public Fl_Button +{ + private: + int button_type; + int pos; + public: + TitlebarButton(int type); + ~TitlebarButton(); + void place(int p); + int place(void) { return pos; } +}; + +class Frame; + +class Titlebar : public Fl_Group +{ + private: + int win_x, win_y, win_x1, win_y1; + Frame* curr_frame; + TitlebarButton minb; + TitlebarButton maxb; + TitlebarButton closeb; + Fl_Box* label_box; + Fl_Box* icon_box; + Fl_Color focus_color; + Fl_Color unfocus_color; + + Fl_Menu_* title_menu; + Fl_Widget* menu_max; + Fl_Widget* menu_min; + Fl_Widget* menu_close; + Fl_Widget* menu_shade; + Fl_Widget* menu_lower; + + public: + Titlebar(Frame* f, int x, int y, int w, int h, const char* l); + ~Titlebar(); + void layout(void); + int handle(int event); + void focus(void); + void unfocus(void); + + void on_close(void); + void on_maximize(void); + void on_minimize(void); + void on_shade(void); + void on_lower(void); +}; + +#endif diff --git a/edewm/Tracers.h b/edewm/Tracers.h new file mode 100644 index 0000000..12786b0 --- /dev/null +++ b/edewm/Tracers.h @@ -0,0 +1,42 @@ +/* + * $Id: Tracers.h 1671 2006-07-11 14:07:43Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __TRACERS_H__ +#define __TRACERS_H__ + +#include "debug.h" + +#ifdef _DEBUG + class FunctionTracer + { + private: + const char* func; + public: + FunctionTracer(const char* f) : func(f) + { + if(func) + EPRINTF("Function [+]: \"%s\"\n", func); + } + + ~FunctionTracer() + { + if(func) + EPRINTF("Function [-]: \"%s\"\n", func); + } + }; + + #define TRACE_FUNCTION(name) FunctionTracer foo(name) +#else + #define TRACE_FUNCTION(name) (void)0 +#endif // _DEBUG + +#endif diff --git a/edewm/Utils.cpp b/edewm/Utils.cpp new file mode 100644 index 0000000..5818dbf --- /dev/null +++ b/edewm/Utils.cpp @@ -0,0 +1,29 @@ +/* + * $Id: Utils.cpp 1705 2006-07-23 22:31:56Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Utils.h" +#include + +void SendMessage(Window win, Atom a, Atom l) +{ + XEvent ev; + long mask; + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = win; + ev.xclient.message_type = a; + ev.xclient.format = 32; + ev.xclient.data.l[0] = long(l); + ev.xclient.data.l[1] = long(fl_event_time); + mask = 0L; + XSendEvent(fl_display, win, False, mask, &ev); +} diff --git a/edewm/Utils.h b/edewm/Utils.h new file mode 100644 index 0000000..23576be --- /dev/null +++ b/edewm/Utils.h @@ -0,0 +1,20 @@ +/* + * $Id: Utils.h 1705 2006-07-23 22:31:56Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __UTILS_H__ +#define __UTILS_H__ + +#include + +void SendMessage(Window win, Atom a, Atom l); + +#endif // _UTILS_H_ diff --git a/edewm/Windowmanager.cpp b/edewm/Windowmanager.cpp new file mode 100644 index 0000000..5dc6b1f --- /dev/null +++ b/edewm/Windowmanager.cpp @@ -0,0 +1,733 @@ +/* + * $Id: Windowmanager.cpp 1711 2006-07-25 09:51:50Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Windowmanager.h" +#include "Atoms.h" +#include "Hints.h" +#include "Frame.h" +#include "../exset/exset.h" +#include "Tracers.h" +#include "Sound.h" +#include "debug.h" + +#include +#include +#include +#include + +#define WM_CONFIG_FILE "wmanager.conf" +#define EDE_CONFIG_FILE "ede.conf" + + +WindowManager* WindowManager::pinstance = NULL; +int x_errors; + +/* This is one of the most important part of wm and reflects + * current design. Wm will try to send all messages to frame itself, + * after trying to find it's ID in collected list. All further processing + * is left to that frame. Other messages will process wm, + * minimizing spreading events all over the code. + * I'am not in love with this decision; it's roots are from previous + * edewm code (the real roots are from icewm). + * + * Future major versions will probably have different design. + */ +int wm_event_handler(int e) +{ + if(fl_xevent.type == KeyPress) + e = FL_KEY; + if(!e) + { + Window window = fl_xevent.xany.window; + switch(fl_xevent.type) + { + case CirculateNotify: + case CirculateRequest: + case ConfigureNotify: + case ConfigureRequest: + case CreateNotify: + case GravityNotify: + /*case MapNotify:*/ + case MapRequest: + case ReparentNotify: + case UnmapNotify: + window = fl_xevent.xmaprequest.window; + break; + } + + FrameList::iterator last = WindowManager::instance()->window_list.end(); + for(FrameList::iterator it = WindowManager::instance()->window_list.begin(); it != last; ++it) + { + Frame* c = *it; + if(c->window() == window || fl_xid(c) == window) + { + //ELOG("wm_event_handler-> window found (%i), sending a message", i); + return c->handle(&fl_xevent); + } + } + + return WindowManager::instance()->handle(&fl_xevent); + } + else + return WindowManager::instance()->handle(e); +} + +int convert_align(int a) +{ + switch(a) + { + default: + case 0: break; + case 1: return FL_ALIGN_RIGHT; + case 2: return FL_ALIGN_CENTER; + } + return FL_ALIGN_LEFT; +} + +int xerror_handler(Display* d, XErrorEvent* e) +{ + if(e->request_code == X_ChangeWindowAttributes && + e->error_code == BadAccess && + e->resourceid == RootWindow(fl_display, DefaultScreen(fl_display))) + { + // force cleaning data + WindowManager::shutdown(); + Fl::fatal(_("Another window manager is running. You must exit it before running edewm.")); + } + + x_errors++; + + char buff[128]; + + EPRINTF("\n"); + XGetErrorDatabaseText(fl_display, "XlibMessage", "XError", "", buff, 128); + EPRINTF("%s: ", buff); + XGetErrorText(fl_display, e->error_code, buff, 128); + EPRINTF("%s \n", buff); + + XGetErrorDatabaseText(fl_display, "XlibMessage", "MajorCode", "%d", buff, 128); + EPRINTF(" "); + EPRINTF(buff, e->request_code); + + sprintf(buff, "%d", e->request_code); + XGetErrorDatabaseText(fl_display, "XRequest", buff, "%d", buff, 128); + EPRINTF(" (%s)\n", buff); + + XGetErrorDatabaseText(fl_display, "XlibMessage", "MinorCode", "%d", buff, 128); + EPRINTF(" "); + EPRINTF(buff, e->minor_code); + EPRINTF(" "); + XGetErrorDatabaseText(fl_display, "XlibMessage", "ResourceID", "%d", buff, 128); + EPRINTF(buff, e->resourceid); + + EPRINTF("\n"); + EPRINTF("\n"); + + return 0; +} + +bool ValidateDrawable(Drawable d) +{ + Window w; + int dummy; + unsigned int dummy_ui; + + XSync(fl_display, False); + x_errors = 0; + XGetGeometry(fl_display, d, &w, &dummy, &dummy, &dummy_ui, &dummy_ui, &dummy_ui, &dummy_ui); + XSync(fl_display, False); + + bool ret = (x_errors == 0 ? true : false); + x_errors = 0; + +/* + if(ret != true) + { + WindowManager::shutdown(); + assert(ret == true); + } +*/ + + return ret; +} + +WindowManager::WindowManager() : Fl_Window(0, 0, Fl::w(), Fl::h()), is_running(false) +{ + box(FL_NO_BOX); + ELOG("WindowManager constructor"); +} + +WindowManager::~WindowManager() +{ + ELOG("WindowManager destructor"); + + FrameList::iterator last = window_list.end(); + for(FrameList::iterator it = window_list.begin(); it != last; ++it) + { + Frame* f = *it; + delete f; + } + window_list.clear(); + + sound_system->shutdown(); + delete sound_system; + + delete wm_conf; + delete hint_stuff; + delete cur; +} + +WindowManager* WindowManager::instance(void) +{ + assert(WindowManager::pinstance != NULL); + return WindowManager::pinstance; +} + +void WindowManager::init(int argc, char** argv) +{ + if(WindowManager::pinstance != NULL) + return; + + WindowManager::pinstance = new WindowManager(); + WindowManager::pinstance->init_internals(); +} + +void WindowManager::shutdown(void) +{ + if(WindowManager::pinstance != NULL) + { + delete WindowManager::pinstance; + WindowManager::pinstance = NULL; + } +} + +void WindowManager::init_internals(void) +{ + ELOG("Starting window manager"); + wm_conf = new WindowManagerConfig; + + app_starting = false; + + // defaults, in case world goes down + wm_conf->title_active_color = fl_rgb(0,0,128); + wm_conf->title_active_color_text = fl_rgb(255,255,255); + wm_conf->title_normal_color = fl_rgb(192,192,192); + wm_conf->title_normal_color_text = fl_rgb(0,0,128); + wm_conf->title_label_align = FL_ALIGN_LEFT; + wm_conf->title_height = 20; + wm_conf->title_box_type = 0; + wm_conf->frame_do_opaque = false; + wm_conf->frame_animate = true; + wm_conf->frame_animate_speed = 15; + + fl_open_display(); + XSetErrorHandler(xerror_handler); + wm_area.set(0, 0, Fl::w(), Fl::h()); + + read_configuration(); + read_xset_configuration(); + + //register_protocols(); +#ifdef _DEBUG + InitAtoms(fl_display, atom_map); + register_events(); +#else + InitAtoms(fl_display); +#endif + + //cur = XCreateFontCursor(fl_display, XC_left_ptr); + //XDefineCursor(fl_display, RootWindow(fl_display, fl_screen), cur); + // load cursor + cur = new CursorHandler; + cur->load(X_CURSORS); + cur->set_root_cursor(); + + sound_system = new SoundSystem(); + sound_system->init(); + + sound_system->add(SOUND_MINIMIZE, "sounds/minimize.ogg"); + sound_system->add(SOUND_MAXIMIZE, "sounds/maximize.ogg"); + sound_system->add(SOUND_CLOSE, "sounds/close.ogg"); + sound_system->add(SOUND_RESTORE, "sounds/restore.ogg"); + sound_system->add(SOUND_SHADE, "sounds/shade.ogg"); + + // the world is starting here + show(); + register_protocols(); + + hint_stuff = new Hints; + hint_stuff->icccm_set_iconsizes(this); + + init_clients(); + Fl::add_handler(wm_event_handler); + XSync(fl_display, 0); + + is_running = true; +} + +// load current visible clients +void WindowManager::init_clients(void) +{ + Frame* frame = 0; + uint win_num; + Window w1, w2, *wins; + XWindowAttributes attr; + XQueryTree(fl_display, fl_xid(this), &w1, &w2, &wins, &win_num); + + // XXX: excluding root parent !!! + //for (uint i = 0; i < win_num-1; i++) + for (uint i = 0; i < win_num; i++) + { + XGetWindowAttributes(fl_display, wins[i], &attr); + if(!attr.override_redirect && attr.map_state == IsViewable) + { + if(!attr.screen) + { + ELOG("Screen not as window, skiping..."); + continue; + } + + if(ValidateDrawable(wins[i])) + frame = new Frame(wins[i], &attr); + } + else + ELOG("Skipping override_redirect window"); + } + XFree((void *)wins); +} + +// register type messages wm understainds +void WindowManager::register_protocols(void) +{ + ELOG("Loading protocols"); + SetSupported(root_win); +} + +void WindowManager::read_configuration(void) +{ + ELOG("Reading config"); + Fl_Config conf(fl_find_config_file(WM_CONFIG_FILE, 0)); + conf.set_section("TitleBar"); + conf.read("Active color", wm_conf->title_active_color, fl_rgb(0, 0, 128)); + conf.read("Normal color", wm_conf->title_normal_color, fl_rgb(192, 192, 192)); + conf.read("Active color text", wm_conf->title_active_color_text, fl_rgb(255, 255, 255)); + conf.read("Normal color text", wm_conf->title_normal_color_text, fl_rgb(0, 0, 128)); + conf.read("Box type", wm_conf->title_box_type, 0); + conf.read("Height", wm_conf->title_height, 20); + + int la; + conf.read("Text align", la, 0); + wm_conf->title_label_align = convert_align(la); + + conf.set_section("Resize"); + conf.read("Opaque resize", wm_conf->frame_do_opaque, false); + conf.read("Animate", wm_conf->frame_animate, true); + conf.read("Animate Speed", wm_conf->frame_animate_speed, 15); + + conf.set_section("Misc"); + conf.read("Use theme", wm_conf->use_theme); + + notify_clients(); +} + +void WindowManager::read_xset_configuration(void) +{ + Fl_Config conf(fl_find_config_file(EDE_CONFIG_FILE, 1)); + int val1, val2, val3; + Exset xset; + + conf.set_section("Mouse"); + conf.read("Accel", val1, 4); + conf.read("Thress",val2, 4); + xset.set_mouse(val1, val2); + + conf.set_section("Bell"); + conf.read("Volume", val1, 50); + conf.read("Pitch", val2, 440); + conf.read("Duration", val3, 200); + xset.set_bell(val1, val2, val3); + + conf.set_section("Keyboard"); + conf.read("Repeat", val1, 1); + conf.read("ClickVolume", val2, 50); + xset.set_keybd(val1, val2); + + conf.set_section("Screen"); + conf.read("Delay", val1, 15); + conf.read("Pattern",val2, 2); + xset.set_pattern(val1, val2); + + conf.read("CheckBlank", val1, 1); + xset.set_check_blank(val1); + + conf.read("Pattern", val1, 2); + xset.set_blank(val1); +} + +void WindowManager::notify_clients(void) +{ +#warning "TODO: implement WindowManager::notify_clients()" +} + +void WindowManager::show(void) +{ + if(!shown()) + { + create(); + /* Destroy efltk window, set RootWindow to our + * xid and redirect all messages to us, which + * will make us a window manager. + */ + XDestroyWindow(fl_display, Fl_X::i(this)->xid); + Fl_X::i(this)->xid = RootWindow(fl_display, fl_screen); + root_win = RootWindow(fl_display, fl_screen); + XSelectInput(fl_display, fl_xid(this), + SubstructureRedirectMask | + SubstructureNotifyMask | + ColormapChangeMask | + PropertyChangeMask | + ButtonPressMask | + ButtonReleaseMask | + EnterWindowMask | + LeaveWindowMask | + KeyPressMask | + KeyReleaseMask | + KeymapStateMask); + + ELOG("RootWindow ID set to xid"); + draw(); + } +} + +void WindowManager::draw(void) +{ + ELOG("RootWindow draw"); + // redraw root window + XClearWindow(fl_display, fl_xid(this)); +} + +void WindowManager::idle(void) +{ + //ELOG("Idle"); + FrameList::iterator last = remove_list.end(); + for(FrameList::iterator it = remove_list.begin(); it != last; ++it) + { + Frame* f = *it; + delete f; + } + remove_list.clear(); +} + +void WindowManager::exit(void) +{ + if(is_running) + is_running = false; +} + +const Cursor WindowManager::root_cursor(void) +{ + assert(cur != NULL); + return cur->root_cursor(); +} + +void WindowManager::set_cursor(Frame* f, CursorType t) +{ + assert(f != NULL); + cur->set_cursor(f, t); +/* + if(cur->cursor_shape_type() == FLTK_CURSORS) + cur->set_fltk_cursor(f, t); + else + cur->set_x_cursor(f, t); +*/ +} + +const CursorHandler* WindowManager::cursor_handler(void) +{ + assert(cur != NULL); + return cur; +} + +int WindowManager::handle(int event) +{ + Window window = fl_xevent.xany.window; + switch(event) + { + case FL_PUSH: + { + FrameList::iterator last = window_list.end(); + for(FrameList::iterator it = window_list.begin(); it != last; ++it) + { + Frame* f = *it; + if(f->window() == window || fl_xid(f) == window) + { + f->content_click(); + return 1; + } + } + + ELOG("FL_PUSH on root"); + return 0; + } + + case FL_SHORTCUT: + case FL_KEY: + + ELOG("FL_SHORCUT | FL_KEY"); + return 1; + case FL_MOUSEWHEEL: + XAllowEvents(fl_display, ReplayPointer, CurrentTime); + return 0; + } + return 0; +} + +int WindowManager::handle(XEvent* event) +{ + switch(event->type) + { + /* ClientMessage is only used for desktop handling + * and startup notifications. + */ + case ClientMessage: + { + ELOG("ClientMessage in wm"); + if(event->xclient.message_type == _XA_EDE_WM_STARTUP_NOTIFY) + { + Atom data = event->xclient.data.l[0]; + if(data == _XA_EDE_WM_APP_STARTING) + { + app_starting = true; + cur->set_root_cursor(CURSOR_WAIT); + } + } + return 1; + } + case MapRequest: + { + ELOG("MapRequest from wm"); + const XMapRequestEvent* e = &(fl_xevent.xmaprequest); + + XWindowAttributes attrs; + XGetWindowAttributes(fl_display, e->window, &attrs); + if(!attrs.override_redirect) + { + ELOG("--- map from wm ---"); + new Frame(e->window); + + if(app_starting) + { + cur->set_root_cursor(CURSOR_DEFAULT); + app_starting = false; + } + } + + return 1; + } + case ConfigureRequest: + { + ELOG("ConfigureRequest from wm"); + const XConfigureRequestEvent *e = &(fl_xevent.xconfigurerequest); + XConfigureWindow(fl_display, e->window, e->value_mask&~(CWSibling|CWStackMode), + (XWindowChanges*)&(e->x)); + return 1; + } + + default: + return 0; + } + return 0; +} + +/* Clear stack_list and window_list for those + * windows schedulied for removal. + * Expensive operation, so use it with care. + */ +void WindowManager::update_client_list(void) +{ + bool found = false; + + // first clear aot_list + FrameList::iterator last = aot_list.end(); + for(FrameList::iterator it = aot_list.begin(); it != last; ++it) + { + Frame* f = *it; + if(f->destroy_scheduled()) + { + // erase current and let 'it' point to next element + it = aot_list.erase(it); + found = true; + } + } + + // then clear stack_list + if(!found) + { + last = stack_list.end(); + for(FrameList::iterator it = stack_list.begin(); it != last; ++it) + { + Frame* f = *it; + if(f->destroy_scheduled()) + it = stack_list.erase(it); + } + } + + // then window_list + last = window_list.end(); + for(FrameList::iterator it = window_list.begin(); it != last; ++it) + { + Frame* f = *it; + if(f->destroy_scheduled()) + { + // TODO: do I need this ??? + remove_list.push_back(*it); + it = window_list.erase(it); + } + } +} + +/* Used by frames. + * Window manager will check position of last client and + * return possible next one + * + * Accepted values are: current frame width and height, and + * returned is position where it should be placed. + */ +bool WindowManager::query_best_position(int* x, int* y, int w, int h) +{ + const int offset = 20; + + if(window_list.size() <= 0) + return false; + + //Frame* f = window_list[window_list.size()-1]; + Frame* f = *(--window_list.end()); + if(!f) + return false; + + *x = f->x() + offset; + *y = f->y() + offset; + + // if w-h of frame are larger than area + // place them to apropriate corners + if((*x + w) > wm_area.w()) + *x = wm_area.x(); + if((*y + h) > wm_area.h()) + *y = wm_area.y(); + + return true; +} + +Frame* WindowManager::find_xid(Window win) +{ + FrameList::iterator last = window_list.end(); + for(FrameList::iterator it = window_list.begin(); it != last; ++it) + { + Frame* f = *it; + if(f->window() == win) + return f; + } + + return 0; +} + +void WindowManager::restack_windows(void) +{ + TRACE_FUNCTION("void WindowManager::restack_windows(void)"); + + Window* stack = new Window[aot_list.size() + stack_list.size()]; + FrameList::iterator it = aot_list.begin(); + FrameList::iterator last = aot_list.end(); + unsigned int i = 0; + + for(; it != last && i < aot_list.size(); ++it, i++) + stack[i] = fl_xid(*it); + + it = stack_list.begin(); + last = stack_list.end(); + + + for(; it != last && i < aot_list.size() + stack_list.size(); ++it, i++) + stack[i] = fl_xid(*it); + + XRestackWindows(fl_display, stack, stack_list.size()); + delete [] stack; +} + +void WindowManager::clear_focus_windows(void) +{ + if(aot_list.size() > 0) + { + FrameList::iterator it = aot_list.begin(); + FrameList::iterator last = aot_list.end(); + for(; it != last; ++it) + (*it)->unfocus(); + } + + FrameList::iterator it = stack_list.begin(); + FrameList::iterator last = stack_list.end(); + for(; it != last; ++it) + (*it)->unfocus(); +} + +void WindowManager::play_sound(short event) +{ + assert(sound_system != NULL); + sound_system->play(event); +} + + +#ifdef _DEBUG +void WindowManager::register_events(void) +{ + xevent_map[CirculateNotify] = "CirculateNotify"; + xevent_map[CirculateRequest] = "CirculateRequest"; + xevent_map[ConfigureNotify] = "ConfigureNotify"; + xevent_map[ConfigureRequest] = "ConfigureRequest"; + xevent_map[CreateNotify] = "CreateNotify"; + xevent_map[GravityNotify] = "GravityNotify"; + xevent_map[MapNotify] = "MapNotify"; + xevent_map[MapRequest] = "MapRequest"; + xevent_map[ReparentNotify] = "ReparentNotify"; + xevent_map[UnmapNotify] = "UnmapNotify"; + xevent_map[DestroyNotify] = "DestroyNotify"; + xevent_map[PropertyNotify] = "PropertyNotify"; + xevent_map[EnterNotify] = "EnterNotify"; + xevent_map[LeaveNotify] = "LeaveNotify"; + xevent_map[VisibilityNotify] = "VisibilityNotify"; + xevent_map[FocusIn] = "FocusIn"; + xevent_map[FocusOut] = "FocusOut"; + xevent_map[ClientMessage] = "ClientMessage"; + + efltkevent_map[FL_PUSH] = "FL_PUSH"; + efltkevent_map[FL_RELEASE] = "FL_RELEASE"; + efltkevent_map[FL_ENTER] = "FL_ENTER"; + efltkevent_map[FL_LEAVE] = "FL_LEAVE"; + efltkevent_map[FL_DRAG] = "FL_DRAG"; + efltkevent_map[FL_FOCUS] = "FL_FOCUS"; + efltkevent_map[FL_UNFOCUS] = "FL_UNFOCUS"; + efltkevent_map[FL_KEY] = "FL_KEY"; + efltkevent_map[FL_KEYUP] = "FL_KEYUP"; + efltkevent_map[FL_MOVE] = "FL_MOVE"; + efltkevent_map[FL_SHORTCUT] = "FL_SHORTCUT"; + efltkevent_map[FL_ACTIVATE] = "FL_ACTIVATE"; + efltkevent_map[FL_DEACTIVATE]= "FL_DEACTIVATE"; + efltkevent_map[FL_SHOW] = "FL_SHOW"; + efltkevent_map[FL_HIDE] = "FL_HIDE"; + efltkevent_map[FL_MOUSEWHEEL]= "FL_MOUSEWHEEL"; + efltkevent_map[FL_PASTE] = "FL_PASTE"; + efltkevent_map[FL_DND_ENTER] = "FL_DND_ENTER"; + efltkevent_map[FL_DND_DRAG] = "FL_DND_DRAG"; + efltkevent_map[FL_DND_LEAVE] = "FL_DND_LEAVE"; + efltkevent_map[FL_DND_RELEASE] = "FL_DND_RELEASE"; +} +#endif diff --git a/edewm/Windowmanager.h b/edewm/Windowmanager.h new file mode 100644 index 0000000..15decd1 --- /dev/null +++ b/edewm/Windowmanager.h @@ -0,0 +1,165 @@ +/* + * $Id: Windowmanager.h 1711 2006-07-25 09:51:50Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef _WINDOWMANAGER_H_ +#define _WINDOWMANAGER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Cursor.h" + +#ifdef _DEBUG +#include +#endif + +#include + +/* +class Frame_List : public Fl_Ptr_List { +public: + Frame_List() : Fl_Ptr_List() { } + + void append(Frame *item) { Fl_Ptr_List::append((void *)item); } + void prepend(Frame *item) { Fl_Ptr_List::prepend((void *)item); } + void insert(uint pos, Frame *item) { Fl_Ptr_List::insert(pos, (void *)item); } + void replace(uint pos, Frame *item) { Fl_Ptr_List::replace(pos, (void *)item); } + void remove(uint pos) { Fl_Ptr_List::remove(pos); } + bool remove(Frame *item) { return Fl_Ptr_List::remove((void *)item); } + int index_of(const Frame *w) const { return Fl_Ptr_List::index_of((void*)w); } + Frame *item(uint index) const { return (Frame*)Fl_Ptr_List::item(index); } + + Frame **data() { return (Frame**)items; } + + Frame *operator [](uint ind) const { return (Frame *)items[ind]; } +}; +*/ + +struct WindowManagerConfig +{ + Fl_Color title_active_color; + Fl_Color title_active_color_text; + Fl_Color title_normal_color; + Fl_Color title_normal_color_text; + + int title_label_align; + int title_height; + int title_box_type; + + bool frame_do_opaque; + bool frame_animate; + int frame_animate_speed; + + bool use_theme; +}; + + +// The WindowManager class looks like a window to efltk but is actually the +// screen's root window. This is done by setting xid to "show" it +// rather than have efltk create the window. Class handles all root +// windows X events + +struct Hints; +class Frame; +class CursorHandler; +class SoundSystem; +typedef std::list FrameList; + +class WindowManager : public Fl_Window +{ + private: + bool is_running; + static WindowManager* pinstance; + WindowManagerConfig* wm_conf; + Fl_Rect wm_area; + Window root_win; + Hints* hint_stuff; + + CursorHandler* cur; + SoundSystem* sound_system; + + bool app_starting; + + WindowManager(); + ~WindowManager(); + WindowManager(const WindowManager&); + WindowManager& operator=(WindowManager&); + void register_protocols(void); + void init_internals(void); + void init_clients(void); + + public: + static void init(int argc, char** argv); + static void shutdown(void); + static WindowManager* instance(); + void read_configuration(void); + void read_xset_configuration(void); + void notify_clients(void); + void show(void); + void hide(void) { } // prevent efltk from root window hiding + void draw(void); + int handle(int event); + int handle(XEvent* e); + void update_client_list(void); + bool running(void) { return is_running; } + Window root_window(void) { return root_win; } + void idle(void); + Hints* hints(void) { return hint_stuff; } + void exit(void); + int x(void) { return wm_area.x(); } + int y(void) { return wm_area.y(); } + int w(void) { return wm_area.w(); } + int h(void) { return wm_area.h(); } + + bool query_best_position(int* x, int* y, int w, int h); + Frame* find_xid(Window win); + void restack_windows(void); + void clear_focus_windows(void); + + void play_sound(short event); + + const Cursor root_cursor(void); + const CursorHandler* cursor_handler(void); + void set_cursor(Frame* f, CursorType t); + + //FrameList window_list; + //FrameList remove_list; + + // list of mapped windows (it is not changed excep window is destroyed) + FrameList window_list; + // stacking list of ordinary windows + FrameList stack_list; + // list of destroyed windows (cleared in WindowManager::idle() phase) + FrameList remove_list; + // list of always on top windows (transients etc.) + FrameList aot_list; + + +#ifdef _DEBUG + std::map atom_map; + std::map xevent_map; + std::map efltkevent_map; + + void register_events(void); +#endif +}; + + +bool ValidateDrawable(Drawable d); + +#endif diff --git a/edewm/app.xpm b/edewm/app.xpm new file mode 100644 index 0000000..2c5f3d9 --- /dev/null +++ b/edewm/app.xpm @@ -0,0 +1,21 @@ +/* XPM */ +static char * app_xpm[] = { +"16 16 2 1", +" c None", +". c #FF0000", +" ", +" ", +" ", +" .... . ", +" .... . ", +" .... . ", +" .... . ", +" ... . ", +" . .. ", +" . .... ", +" . .... ", +" . .... ", +" . .... ", +" . .... ", +" ", +" "}; diff --git a/edewm/debug.cpp b/edewm/debug.cpp new file mode 100644 index 0000000..2c53fc3 --- /dev/null +++ b/edewm/debug.cpp @@ -0,0 +1,62 @@ +/* + * $Id: debug.cpp 1671 2006-07-11 14:07:43Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "debug.h" +#include +#include + +#define OUT_TYPE stdout + +void edewm_log(const char* str, ...) +{ +#ifdef _DEBUG + fprintf(OUT_TYPE, "wm: "); + va_list args; + va_start(args, str); + vfprintf(OUT_TYPE, str, args); + fprintf(OUT_TYPE, "\n"); + fflush(OUT_TYPE); +#endif +} +void edewm_warning(const char* str, ...) +{ +#ifdef _DEBUG + fprintf(OUT_TYPE, "wm (warning): "); + va_list args; + va_start(args, str); + vfprintf(OUT_TYPE, str, args); + fprintf(OUT_TYPE, "\n"); + fflush(OUT_TYPE); +#endif +} + +void edewm_fatal(const char* str, ...) +{ +#ifdef _DEBUG + fprintf(OUT_TYPE, "!!! wm (fatal): "); + va_list args; + va_start(args, str); + vfprintf(OUT_TYPE, str, args); + fprintf(OUT_TYPE, "\n"); + fflush(OUT_TYPE); +#endif +} + +void edewm_printf(const char* str, ...) +{ +#ifdef _DEBUG + va_list args; + va_start(args, str); + vfprintf(OUT_TYPE, str, args); + fflush(OUT_TYPE); +#endif +} diff --git a/edewm/debug.h b/edewm/debug.h new file mode 100644 index 0000000..8a64bac --- /dev/null +++ b/edewm/debug.h @@ -0,0 +1,26 @@ +/* + * $Id: debug.h 1671 2006-07-11 14:07:43Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef __DEBUG_H__ +#define __DEBUG_H__ + +void edewm_log(const char* str, ...); +void edewm_printf(const char* str, ...); +void edewm_warning(const char* str, ...); +void edewm_fatal(const char* str, ...); + +#define ELOG edewm_log +#define EWARNING edewm_warning +#define EFATAL edewm_fatal +#define EPRINTF edewm_printf + +#endif diff --git a/edewm/edewm b/edewm/edewm new file mode 100755 index 0000000000000000000000000000000000000000..4d96de5fc6f93601c85a2cf5d5ffc51ba0d7f420 GIT binary patch literal 131276 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%0AD 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 A9{>OV literal 0 HcmV?d00001 diff --git a/edewm/locale/fi.po b/edewm/locale/fi.po new file mode 100644 index 0000000..ffb9e61 --- /dev/null +++ b/edewm/locale/fi.po @@ -0,0 +1,89 @@ +# Finnish translation of edewm. +# Copyright (C) 2002 THE edewm'S COPYRIGHT HOLDER +# This file is distributed under the same license as the edewm package. +# Mikko L. , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: edewm 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-09-16 11:07+0300\n" +"Last-Translator: Mikko L. \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Typyt %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Nimetn" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Kiinte" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Suurenna" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Pienenn" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Typydlle:" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "Tapa" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Sulje" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Palauta" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Toinen ikkunointi jrjestelm kynniss. Sinun tytyy lopettaa se ennen kuin " +"voit ajaa: %s" diff --git a/edewm/locale/hu.po b/edewm/locale/hu.po new file mode 100644 index 0000000..2984a51 --- /dev/null +++ b/edewm/locale/hu.po @@ -0,0 +1,85 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 +#: Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Munkaterület %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Névtelen" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "EDEWM: Belső hiba, restacking (%d != %d)! Kilépés... " + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Ragadós" + +#: Titlebar.cpp:275 +#: Titlebar.cpp:320 +msgid "Set size" +msgstr "Méret beállítása" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "Ablakméret beállítása:" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "szél.:" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "mag.:" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "&OK" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "Mégs&em" + +#: Titlebar.cpp:318 +#: Titlebar.cpp:331 +msgid "Maximize" +msgstr "Maximalizálás" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Minimalizálás" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Munkaterületre" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "Kilövés" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Bezárás" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Visszaállítás" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "Egy másik ablakkezelő fut. Ki kell lépni belőle mielőtt ezt futtatod: %s." + diff --git a/edewm/locale/id.po b/edewm/locale/id.po new file mode 100644 index 0000000..ad79606 --- /dev/null +++ b/edewm/locale/id.po @@ -0,0 +1,89 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edewm 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 202-11-29 14:20+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Ruangkerja %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Tanpa judul" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Sticky" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Maksimalkan" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Minimalkan" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Ke Desktop" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Tutup" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Kembalikan" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Window manager lain sedang berjalan. Anda harus menghentikannya sebelum " +"menjalankan %s." diff --git a/edewm/locale/messages.po.default b/edewm/locale/messages.po.default new file mode 100644 index 0000000..c33a66d --- /dev/null +++ b/edewm/locale/messages.po.default @@ -0,0 +1,63 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#: Desktop.cpp:233 Windowmanager.cpp:97 +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-09-16 10:58+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:247 +#, c-format +msgid "Workspace %d" +msgstr "" + + + +#: Frame.cpp:134 main.cpp:51 +msgid "Untitled" +msgstr "" + + + +#: Titlebar.cpp:211 +msgid "Sticky" +msgstr "" + +#: Titlebar.cpp:247 Titlebar.cpp:257 +msgid "Maximize" +msgstr "" + +#: Titlebar.cpp:248 +msgid "Minimize" +msgstr "" + +#: Titlebar.cpp:249 +msgid "To Desktop" +msgstr "" + +#: Titlebar.cpp:250 +msgid "Close" +msgstr "" + +#: Titlebar.cpp:272 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:256 +msgid "Restore" +msgstr "" + +#: Windowmanager.cpp:88 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" diff --git a/edewm/locale/messages.pot b/edewm/locale/messages.pot new file mode 100644 index 0000000..9512350 --- /dev/null +++ b/edewm/locale/messages.pot @@ -0,0 +1,88 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" diff --git a/edewm/locale/ru.po b/edewm/locale/ru.po new file mode 100644 index 0000000..b10b539 --- /dev/null +++ b/edewm/locale/ru.po @@ -0,0 +1,90 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr " %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr " " + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr " " + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +" . " +" %s." diff --git a/edewm/locale/sk.po b/edewm/locale/sk.po new file mode 100644 index 0000000..d44ddd7 --- /dev/null +++ b/edewm/locale/sk.po @@ -0,0 +1,87 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edewm 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Plocha %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Bez názvu" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Lepkavý" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Maximalizovať" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Minimalizovať" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Na plochu" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "Ukončiť" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Zavrieť" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Obnoviť" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Práve beží už iný manažér okien. Musíte ho ukončiť a chcete spustiť %s." diff --git a/edewm/locale/sr.po b/edewm/locale/sr.po new file mode 100644 index 0000000..dd8865c --- /dev/null +++ b/edewm/locale/sr.po @@ -0,0 +1,87 @@ +# EDEWM - Prevod na srpski jezik +# Copyright (C) 2002 EDE Team +# Dejan Lekic Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: EDEWM 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-11-21 08:26+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Радни простор %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Неименован" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Стики" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Максимизуј" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Минимизуј" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "На десктоп" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Затвори" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Врати" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Други менаџер прозора је активан. Мораћете га угасити пре покретања %s." diff --git a/edewm/main.cpp b/edewm/main.cpp new file mode 100644 index 0000000..19f4b8d --- /dev/null +++ b/edewm/main.cpp @@ -0,0 +1,54 @@ +/* + * $Id: main.cpp 1671 2006-07-11 14:07:43Z karijes $ + * + * Edewm, window manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "Windowmanager.h" +#include "debug.h" +#include + +#include +#include + +#include +#include +#include +#include + +bool got_signal = false; + + +void exit_signal(int signum) +{ + EWARNING("* Exiting (got signal %d) *", signum); + got_signal = true; +} + +int main(int argc, char ** argv) +{ + signal(SIGTERM, exit_signal); + signal(SIGKILL, exit_signal); + signal(SIGINT, exit_signal); + + Fl::args(argc, argv); + fl_init_locale_support("edewm", PREFIX"/share/locale"); + + WindowManager::init(argc, argv); + Fl_Style::load_theme(); + + while(!got_signal && WindowManager::instance()->running()) + { + Fl::wait(); + WindowManager::instance()->idle(); + } + + WindowManager::shutdown(); + return 0; +} diff --git a/edewm/mask.xpm b/edewm/mask.xpm new file mode 100644 index 0000000..c8a9cae --- /dev/null +++ b/edewm/mask.xpm @@ -0,0 +1,15 @@ +/* XPM */ +static char * mask_xpm[] = { +"10 10 2 1", +" c None", +". c #000000", +"........ ", +"...... ", +"..... ", +".... ", +"... ", +".. ", +". ", +". ", +" ", +" "}; diff --git a/edewm/tests/Makefile b/edewm/tests/Makefile new file mode 100644 index 0000000..40d2068 --- /dev/null +++ b/edewm/tests/Makefile @@ -0,0 +1,38 @@ +# +# $Id: Makefile 1696 2006-07-21 13:23:37Z karijes $ +# +# Part of Equinox Desktop Environment (EDE). +# Copyright (c) 2000-2006 EDE Authors. +# +# This program is licenced under terms of the +# GNU General Public Licence version 2 or newer. +# See COPYING for details. + +include ../../makeinclude + +define make_test +ALL += $1 +$1 : $1.cpp + echo Compiling $$<... + $(CXX) $(CXXFLAGS) $$< -o $$@ $(LIBS) +endef + +# Note: $(eval...) must be used instead plain $(call...) +# since variables will not be expanded correctly + +$(eval $(call make_test, basic_moveresize)) + +sound_test.o : sound_test.cpp + echo "Compiling $<..." + $(CXX) $(CXXFLAGS) -c $< +Sound.o : ../Sound.cpp + echo "Compiling $<..." + $(CXX) $(CXXFLAGS) -c $< +sound_test: sound_test.o Sound.o + $(CXX) sound_test.o Sound.o ../debug.o -o $@ $(LIBS) + +all: $(ALL) sound_test + +clean: + $(RM) $(ALL) + $(RM) *.o diff --git a/edewm/tests/basic_moveresize.cpp b/edewm/tests/basic_moveresize.cpp new file mode 100644 index 0000000..01ce29f --- /dev/null +++ b/edewm/tests/basic_moveresize.cpp @@ -0,0 +1,95 @@ +#include +#include +#include +#include +#include +#include + +#define MRSIZE 2 + +void cb_move_left(Fl_Widget*, void* ww) +{ + Fl_Window* win = (Fl_Window*) ww; + printf("move left(before) x: %i y: %i\n", win->x(), win->y()); + win->position(win->x() - MRSIZE, win->y()); + printf("move left(after) x: %i y: %i\n", win->x(), win->y()); +} + +void cb_move_right(Fl_Widget*, void* ww) +{ + Fl_Window* win = (Fl_Window*) ww; + printf("move right(before) x: %i y: %i\n", win->x(), win->y()); + win->position(win->x() + MRSIZE, win->y()); + printf("move right(after) x: %i y: %i\n", win->x(), win->y()); +} + +void cb_move_up(Fl_Widget*, void* ww) +{ + Fl_Window* win = (Fl_Window*) ww; + printf("move up(before) x: %i y: %i\n", win->x(), win->y()); + win->position(win->x(), win->y() - MRSIZE); + printf("move up(after) x: %i y: %i\n", win->x(), win->y()); +} + +void cb_move_down(Fl_Widget*, void* ww) +{ + Fl_Window* win = (Fl_Window*) ww; + printf("move down(before) x: %i y: %i\n", win->x(), win->y()); + win->position(win->x(), win->y() + MRSIZE); + printf("move down(after) x: %i y: %i\n", win->x(), win->y()); +} + + +int main (int argc, char **argv) +{ + Fl_Window* win = new Fl_Window(300, 290, "Basic Window Operations"); + win->shortcut(0xff1b); + + Fl_Box* bbb = new Fl_Box(10, 10, 280, 50, "Below buttons should apply changes to this window"); + bbb->align(FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + + Fl_Group* move_group = new Fl_Group(10, 85, 280, 75, "Move"); + move_group->box(FL_ENGRAVED_BOX); + move_group->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + + Fl_Button* move_up = new Fl_Button(130, 10, 25, 25, "^"); + move_up->callback(cb_move_up, win); + //move_left->label_type(FL_SYMBOL_LABEL); + + Fl_Button* move_down = new Fl_Button(130, 35, 25, 25, "v"); + move_down->callback(cb_move_down, win); + //move_right->label_type(FL_SYMBOL_LABEL); + + Fl_Button* move_left = new Fl_Button(105, 35, 25, 25, "<"); + move_left->callback(cb_move_left, win); + //move_up->label_type(FL_SYMBOL_LABEL); + + Fl_Button* move_right = new Fl_Button(155, 35, 25, 25, ">"); + move_right->callback(cb_move_right, win); + //move_down->label_type(FL_SYMBOL_LABEL); + + move_group->end(); + + + Fl_Group* resize_group = new Fl_Group(10, 190, 280, 75, "Resize"); + resize_group->box(FL_ENGRAVED_BOX); + resize_group->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + + Fl_Button* resize_up = new Fl_Button(130, 10, 25, 25, "^"); + //resize_left->label_type(FL_SYMBOL_LABEL); + + Fl_Button* resize_down = new Fl_Button(130, 35, 25, 25, "v"); + //resize_right->label_type(FL_SYMBOL_LABEL); + + Fl_Button* resize_left = new Fl_Button(105, 35, 25, 25, "<"); + //resize_up->label_type(FL_SYMBOL_LABEL); + + Fl_Button* resize_right = new Fl_Button(155, 35, 25, 25, ">"); + //resize_down->label_type(FL_SYMBOL_LABEL); + + resize_group->end(); + + win->end(); + win->show(argc, argv); + return Fl::run(); +} diff --git a/edewm/tests/basic_moveresize.fld b/edewm/tests/basic_moveresize.fld new file mode 100644 index 0000000..d7dd61c --- /dev/null +++ b/edewm/tests/basic_moveresize.fld @@ -0,0 +1,61 @@ +# data file for the eFLTK User Interface Designer (eFLUID) +version 2.0003 +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +Function {} {open +} { + Fl_Window {} { + label {Basic Window Operations} open + xywh {361 170 300 290} resizable visible + } { + Fl_Box {} { + label {Below buttons should apply changes to this window} + xywh {10 10 280 50} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + Fl_Group {} { + label Move open + xywh {10 85 280 75} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Button {} { + label {@<} + xywh {130 10 25 25} label_type SYMBOL_LABEL + } + Fl_Button {} { + label {@<} + xywh {130 35 25 25} label_type SYMBOL_LABEL + } + Fl_Button {} { + label {@<} + xywh {105 35 25 25} label_type SYMBOL_LABEL + } + Fl_Button {} { + label {@>} + xywh {155 35 25 25} label_type SYMBOL_LABEL + } + } + Fl_Group {} { + label Resize open selected + xywh {10 190 280 75} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Button {} { + label {@<} + xywh {130 10 25 25} label_type SYMBOL_LABEL + } + Fl_Button {} { + label {@<} + xywh {130 35 25 25} label_type SYMBOL_LABEL + } + Fl_Button {} { + label {@<} + xywh {105 35 25 25} label_type SYMBOL_LABEL + } + Fl_Button {} { + label {@>} + xywh {155 35 25 25} label_type SYMBOL_LABEL + } + } + } +} diff --git a/edewm/tests/demo.ogg b/edewm/tests/demo.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4091a9f6078fedbff560ce1c0e9c8452d2b3885d GIT binary patch literal 413925 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

    (l?6OUi3p?s{Y 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

    nUyjEm8y2_x{=L(s&xFDS$ctrZ= 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 z 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 literal 0 HcmV?d00001 diff --git a/edewm/tests/sound_test.cpp b/edewm/tests/sound_test.cpp new file mode 100644 index 0000000..e000351 --- /dev/null +++ b/edewm/tests/sound_test.cpp @@ -0,0 +1,14 @@ +#include "../Sound.h" +#include + +int main() +{ + puts("playing...\n"); + SoundSystem ss; + ss.init(); + ss.play("demo.ogg"); + ss.shutdown(); + puts("done\n"); + + return 0; +} diff --git a/edewm/tests/testpositions.sh b/edewm/tests/testpositions.sh new file mode 100644 index 0000000..85d4c9d --- /dev/null +++ b/edewm/tests/testpositions.sh @@ -0,0 +1,70 @@ +#!/bin/sh +# +# $Id: testpositions.sh 1672 2006-07-11 14:13:16Z karijes $ +# +#= +#= Usage: testpositions.sh [OPTIONS] +#= +#= Test position where will be placed newly created windows. +#= +#= Options: +#= -p [program] run program +#= -t [number] run [program] [number] times +#= -h show this help +#= +#= Example: testpositions.sh -e gvim -t 1000, which +#= will run 1000 instances of gvim. +#= +#= NOTE: if you try this with some heavier programs +#= (mozilla, ooffice, etc.) swapping and possible X crashes +#= are not due window manager. Just warned you ! +#= + +PROGRAM="xterm" +TIMES="10" + +help() +{ + sed -ne "/^#= /{ s/^#= //p }" $0 + exit 0 +} + +main() +{ + if [ $# -eq 0 ]; then + help + fi + + argv=$@ + for argv do + case $argv in + -h) + help + continue;; + -p) + unset PROGRAM + continue;; + -t) + unset TIMES + continue;; + esac + + if [ "$PROGRAM" = "" ];then + PROGRAM=$argv + continue + elif [ "$TIMES" = "" ];then + TIMES=$argv + else + echo "Bad parameter '$argv'." + echo "Run $0 -h for options." + exit 0 + fi + done + + for((i = 1; i <= $TIMES; i++)) + do + `$PROGRAM`& + done +} + +main $@ diff --git a/edialog/Makefile b/edialog/Makefile new file mode 100755 index 0000000..f14e5ab --- /dev/null +++ b/edialog/Makefile @@ -0,0 +1,17 @@ + +CPPFILES = edialog.cpp +TARGET = edialog + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/edialog/edialog.cpp b/edialog/edialog.cpp new file mode 100755 index 0000000..1514e2e --- /dev/null +++ b/edialog/edialog.cpp @@ -0,0 +1,237 @@ +// EDialog - copyleft (c) Vedran Ljubovic 2005 +// This program is licenced under GNU General Public License v2 or greater + + +#include +#include +#include +#include + +using namespace fltk; + + +// --- compat. modes enum + +enum { + KDIALOGMODE = 0 +}; + + +// Common functions + +void errormsg(char* msg) { + fprintf (stderr, "edialog: %s\n", msg); + exit(1); +} + + +void showhelp() { + printf ("edialog - Show dialogs using FLTK2\n"); + printf ("Copyright (c) Vedran Ljubovic 2005\n"); + printf ("This program is licensed under GNU General Public License v2 or greater\n\n"); + printf ("Displays a dialog box. Return value corresponds to button pressed (e.g 0 = Ok, 1 = Cancel...)\n\n"); + printf ("Options:\n"); + printf (" --kdialog - kdialog compatibility mode (default)\n"); + printf (" (see kdialog --help for list)\n"); + exit(0); +} + + +// Functions for dialogs + +void YesNo(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + exit(ask(param)); +} + +void YesNoCancel(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + exit(choice(param,yes,no,cancel)); +} + +void WarningYesNo(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + exit(choice_alert(param,yes,no,"")); +} + +void WarningContinueCancel(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + exit(choice_alert(param,"Continue",cancel,0)); +} + +void WarningYesNoCancel(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + exit(choice_alert(param,yes,no,cancel)); +} + +void Sorry(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + alert(param); + exit(0); +} + +void Error(char* param) { + errormsg("Not implemented yet."); + // Displays a red X and plays "error" sound + +// if (param[0] == '\0') errormsg ("Required parameter missing."); +// alert(param); +// exit(0); +} + +void MsgBox(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + message(param); + exit(0); +} + +void InputBox(char* param) { + if (param[0] == '\0') errormsg ("Required parameter missing."); + char *title = strtok(param," "); + char *defval = strtok(NULL," "); + printf ("%s\n",input(title,defval)); + exit(0); +} + +void Password(char* param) { + // NOTE: kdialog doesn't support default value for password + // possibly for security reasons? + if (param[0] == '\0') errormsg ("Required parameter missing."); + char *title = strtok(param," "); + char *defval = strtok(NULL," "); + printf ("%s\n",password(title,defval)); + exit(0); +} + +void TextBox(char* param) { + errormsg("Not implemented yet."); +} + +void ComboBox(char* param) { + errormsg("Not implemented yet."); +} + +void Menu(char* param) { + errormsg("Not implemented yet."); +} + +void CheckList(char* param) { + errormsg("Not implemented yet."); +} + +void RadioList(char* param) { + errormsg("Not implemented yet."); +} + +void PassivePopup(char* param) { + errormsg("Not implemented yet."); +} + +void GetOpenFilename(char* param) { + errormsg("Not implemented yet."); +} + +void GetSaveFilename(char* param) { + errormsg("Not implemented yet."); +} + +void GetExistingDirectory(char* param) { + errormsg("Not implemented yet."); +} + +void GetOpenUrl(char* param) { + errormsg("Not implemented yet."); +} + +void GetSaveUrl(char* param) { + errormsg("Not implemented yet."); +} + +void GetIcon(char* param) { + errormsg("Not implemented yet."); +} + +void ProgressBar(char* param) { + errormsg("Not implemented yet."); +} + + + +// ----------- These are charts for various compatibility modes + +struct paramslist { + char* option; + void (*func)(char*); +}; + +// kdialog - KDE dialog +paramslist kdialogopts[] = { + {"--yesno", YesNo}, + {"--yesnocancel", YesNoCancel}, + {"--warningyesno", WarningYesNo}, + {"--warningcontinuecancel", WarningContinueCancel}, + {"--warningyesnocancel", WarningYesNoCancel}, + {"--sorry", Sorry}, + {"--error", Error}, + {"--msgbox", MsgBox}, + {"--inputbox", InputBox}, + {"--password", Password}, + {"--textbox", TextBox}, + {"--combobox", ComboBox}, + {"--menu", Menu}, + {"--checklist", CheckList}, + {"--radiolist", RadioList}, + {"--passivepopup", PassivePopup}, + {"--getopenfilename", GetOpenFilename}, + {"--getsavefilename", GetSaveFilename}, + {"--getexistingdirectory", GetExistingDirectory}, + {"--getopenurl", GetOpenUrl}, + {"--getsaveurl", GetSaveUrl}, + {"--geticon", GetIcon}, + {"--progressbar", ProgressBar}, + {""} +}; + + +// parse command line parameters +int main (int argc, char **argv) { + int compat_mode = KDIALOGMODE; + bool param_recognized[100]; + for (int i=0;i<100;i++) param_recognized[i]=false; + + // Switches and modifiers + for (int i=1; ioption[0] != '\0') { + if (strcmp(argv[i],ptr->option) == 0) { + char *params = strdup(""); + i++; + while ((ifunc(params); + } + ptr++; + } + // function should exit() + // so we can get here only if parameter isn't recognized + if (param_recognized[i] == false) { + showhelp(); + } + } + + // No parameters passed or just modifiers + showhelp(); +} diff --git a/edisplayconf/Makefile b/edisplayconf/Makefile new file mode 100755 index 0000000..b5ecee2 --- /dev/null +++ b/edisplayconf/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = edisplayconf.cpp conf.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp ../edelib2/Run.cpp ../edelib2/process.cpp ../edelib2/pty.cpp +TARGET = edisplayconf + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/edisplayconf/conf.cpp b/edisplayconf/conf.cpp new file mode 100755 index 0000000..6293943 --- /dev/null +++ b/edisplayconf/conf.cpp @@ -0,0 +1,130 @@ +/* + * $Id$ + * + * X server properties + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "edisplayconf.h" +#include "conf.h" +#include "exset.h" +#include "../edelib2/Config.h" //#include +// if I move Config.h above exset.h, I get "'Font' does not name a type" in Xlib.h + +using namespace edelib; + + +extern edisplayconf *app; +Config config(Config::find_file("ede.conf",1)); +Exset xset; + +int get_value(const char *key, int def_value) +{ + static int val; + config.read(key, val, def_value); + return val; +} + +void do_xset() +{ + xset.set_mouse((int)app->slider_accel->value(),(int)app->slider_thresh->value()); + xset.set_bell((int)app->slider_volume->value(),(int)app->slider_pitch->value(),(int)app->slider_duration->value()); + xset.set_keybd((int)app->check_autorepeat->value(), (int)app->slider_click->value()); + xset.set_pattern((int)app->slider_delay->value(), (int)app->slider_pattern->value()); + xset.set_check_blank((int)app->check_blanking->value()); + xset.set_blank((int)app->radio_blank->value()); + +} + + +void read_disp_configuration() +{ + config.set_section("Mouse"); + app->slider_accel->value(get_value("Accel",4)); // Default 4 + app->slider_thresh->value(get_value("Thresh",4)); // Default 4 + config.set_section("Bell"); + app->slider_volume->value(get_value("Volume",50)); // default 50 + app->slider_pitch->value(get_value("Pitch",440)); // Default 440 + app->slider_duration->value(get_value("Duration",200)); // Default 200 + config.set_section("Keyboard"); + app->check_autorepeat->value(get_value("Repeat",1)); // Default 1 + app->slider_click->value(get_value("ClickVolume",50)); // Default 50 + app->slider_delay->value(get_value("Delay",15)); // Default 15 + config.set_section("Screen"); + app->check_blanking->value(get_value("CheckBlank",1)); // Default 1 + app->slider_pattern->value(get_value("Pattern",2)); // Default = 2 + + int pattern = get_value("RadioPattern",0); + int blank = get_value("RadioBlank",1); + app->radio_blank->value(blank); // Default 1 + app->radio_pattern->value(pattern); // Default 1 + + + if( pattern ) + app->slider_pattern->activate(); + else + app->slider_pattern->deactivate(); +} + +void write_configuration() +{ + config.set_section(config.create_section("Mouse")); + config.write("Accel",(int)app->slider_accel->value()); + config.write("Thresh",(int)app->slider_thresh->value()); + + config.set_section(config.create_section("Bell")); + config.write("Volume",(int)app->slider_volume->value()); + config.write("Pitch",(int)app->slider_pitch->value()); + config.write("Duration",(int)app->slider_duration->value()); + + config.set_section(config.create_section("Keyboard")); + config.write("Repeat",(int)app->check_autorepeat->value()); + config.write("ClickVolume",(int)app->slider_click->value()); + + config.set_section(config.create_section("Screen")); + config.write("Delay",(int)app->slider_delay->value()); + config.write("Pattern",(int)app->slider_pattern->value()); + config.write("CheckBlank",(int)app->check_blanking->value()); + config.write("RadioBlank", (int)app->radio_blank->value()); + config.write("RadioPattern",(int) app->radio_pattern->value()); + + config.flush(); + do_xset(); +} + + + + +void cancelCB() +{ + app->_finish = true; +} + +void testbellCB() +{ + xset.test_bell(); +} + +void TestBlankCB() +{ + xset.test_blank(); +} + + +void applyCB() +{ + write_configuration(); +} + +void okCB() +{ + + write_configuration(); + app->_finish = true; +} + diff --git a/edisplayconf/conf.h b/edisplayconf/conf.h new file mode 100755 index 0000000..95e2b8a --- /dev/null +++ b/edisplayconf/conf.h @@ -0,0 +1,11 @@ +#ifndef conf_h +#define conf_h + +void cancelCB(); +void testbellCB(); +void TestBlankCB(); +void applyCB(); +void okCB(); +void read_disp_configuration(); + +#endif diff --git a/edisplayconf/edisplayconf.cpp b/edisplayconf/edisplayconf.cpp new file mode 100755 index 0000000..77cfbad --- /dev/null +++ b/edisplayconf/edisplayconf.cpp @@ -0,0 +1,243 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#include "edisplayconf.h" +/* + * $Id$ + * + * X server properties + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include +#include +#include "conf.h" +#include "../edelib2/NLS.h" +//#include +#include + +inline void edisplayconf::cb_win_i(fltk::Window*, void*) { + _finish = true; +} +void edisplayconf::cb_win(fltk::Window* o, void* v) { + ((edisplayconf*)(o->user_data()))->cb_win_i(o,v); +} + +inline void edisplayconf::cb_Test_i(fltk::Button*, void*) { + testbellCB(); +} +void edisplayconf::cb_Test(fltk::Button* o, void* v) { + ((edisplayconf*)(o->parent()->parent()->parent()->user_data()))->cb_Test_i(o,v); +} + +inline void edisplayconf::cb_but_activate_i(fltk::Button*, void*) { + TestBlankCB(); +} +void edisplayconf::cb_but_activate(fltk::Button* o, void* v) { + ((edisplayconf*)(o->parent()->parent()->parent()->user_data()))->cb_but_activate_i(o,v); +} + +inline void edisplayconf::cb_radio_blank_i(fltk::RadioButton*, void*) { + radioCB(); +} +void edisplayconf::cb_radio_blank(fltk::RadioButton* o, void* v) { + ((edisplayconf*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_radio_blank_i(o,v); +} + +inline void edisplayconf::cb_radio_pattern_i(fltk::RadioButton*, void*) { + radioCB(); +} +void edisplayconf::cb_radio_pattern(fltk::RadioButton* o, void* v) { + ((edisplayconf*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_radio_pattern_i(o,v); +} + +inline void edisplayconf::cb_Cancel_i(fltk::Button*, void*) { + cancelCB(); +} +void edisplayconf::cb_Cancel(fltk::Button* o, void* v) { + ((edisplayconf*)(o->parent()->user_data()))->cb_Cancel_i(o,v); +} + +inline void edisplayconf::cb_but_kbd_apply_i(fltk::Button*, void*) { + applyCB(); +} +void edisplayconf::cb_but_kbd_apply(fltk::Button* o, void* v) { + ((edisplayconf*)(o->parent()->user_data()))->cb_but_kbd_apply_i(o,v); +} + +inline void edisplayconf::cb_OK_i(fltk::ReturnButton*, void*) { + okCB(); +} +void edisplayconf::cb_OK(fltk::ReturnButton* o, void* v) { + ((edisplayconf*)(o->parent()->user_data()))->cb_OK_i(o,v); +} + +edisplayconf::edisplayconf() { + fltk::Window* w; + {fltk::Window* o = win = new fltk::Window(265, 335, "Display configuration"); + w = o; + o->set_vertical(); + o->callback((fltk::Callback*)cb_win, (void*)(this)); + o->begin(); + {fltk::TabGroup* o = new fltk::TabGroup(5, 5, 260, 285); + o->set_vertical(); + o->begin(); + {fltk::Group* o = group_mouse = new fltk::Group(0, 24, 255, 260, "Mouse"); + o->set_vertical(); + o->align(fltk::ALIGN_LEFT); + o->begin(); + {fltk::ValueSlider* o = slider_accel = new fltk::ValueSlider(20, 30, 220, 18, "Acceleration"); + o->maximum(10); + o->step(1); + o->value(2); + o->align(fltk::ALIGN_TOP); + } + {fltk::ValueSlider* o = slider_thresh = new fltk::ValueSlider(20, 75, 220, 18, "Threshold (pixels)"); + o->maximum(20); + o->step(1); + o->value(4); + o->align(fltk::ALIGN_TOP); + } + o->end(); + } + {fltk::Group* o = group_bell = new fltk::Group(0, 25, 255, 259, "Bell"); + o->set_vertical(); + o->hide(); + o->begin(); + {fltk::ValueSlider* o = slider_volume = new fltk::ValueSlider(20, 30, 220, 18, "Volume in %"); + o->maximum(100); + o->step(1); + o->value(50); + o->align(fltk::ALIGN_TOP); + } + {fltk::ValueSlider* o = slider_pitch = new fltk::ValueSlider(20, 75, 220, 18, "Pitch in Hz"); + o->minimum(100); + o->maximum(1000); + o->step(1); + o->value(440); + o->align(fltk::ALIGN_TOP); + } + {fltk::ValueSlider* o = slider_duration = new fltk::ValueSlider(20, 120, 220, 18, "Duration in ms"); + o->maximum(1000); + o->step(1); + o->value(200); + o->align(fltk::ALIGN_TOP); + } + {fltk::Button* o = new fltk::Button(175, 170, 60, 25, "Test"); + o->callback((fltk::Callback*)cb_Test); + } + o->end(); + } + {fltk::Group* o = group_keyboard = new fltk::Group(0, 25, 255, 259, "Keyboard"); + o->set_vertical(); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->hide(); + o->begin(); + {fltk::CheckButton* o = check_autorepeat = new fltk::CheckButton(24, 20, 221, 20, " Repeat key activated"); + o->selection_color((fltk::Color)2); + o->set_flag(fltk::VALUE); + } + {fltk::ValueSlider* o = slider_click = new fltk::ValueSlider(25, 67, 220, 18, "Click volume %"); + o->maximum(100); + o->step(1); + o->value(50); + o->align(fltk::ALIGN_TOP); + } + o->end(); + } + {fltk::Group* o = group_screen = new fltk::Group(0, 25, 255, 259, "Screen"); + o->set_vertical(); + o->hide(); + o->begin(); + {fltk::Button* o = but_activate = new fltk::Button(167, 190, 80, 25, "&Test"); + o->callback((fltk::Callback*)cb_but_activate); + } + new fltk::InvisibleBox(10, 0, 234, 55); + {fltk::ValueSlider* o = slider_delay = new fltk::ValueSlider(27, 71, 210, 18, "Activation delay (min)"); + o->minimum(5); + o->maximum(120); + o->step(1); + o->value(15); + o->align(fltk::ALIGN_TOP); + } + {fltk::CheckButton* o = check_blanking = new fltk::CheckButton(15, 20, 222, 20, " Screen blanker activated"); + o->selection_color((fltk::Color)2); + o->set_flag(fltk::VALUE); + } + new fltk::InvisibleBox(10, 99, 234, 37); + {fltk::ValueSlider* o = slider_pattern = new fltk::ValueSlider(27, 155, 210, 18, "Pattern change delay (min)"); + o->minimum(1); + o->maximum(5); + o->step(0); + o->value(2); + o->align(fltk::ALIGN_TOP); + o->deactivate(); + } + {fltk::Group* o = new fltk::Group(35, 108, 210, 27); + o->begin(); + {fltk::RadioButton* o = radio_blank = new fltk::RadioButton(0, 0, 105, 20, "Blank"); + o->selection_color((fltk::Color)1); + o->set_flag(fltk::VALUE); + o->callback((fltk::Callback*)cb_radio_blank); + } + {fltk::RadioButton* o = radio_pattern = new fltk::RadioButton(107, 5, 95, 20, "Pattern"); + o->selection_color((fltk::Color)1); + o->callback((fltk::Callback*)cb_radio_pattern); + } + o->end(); + } + o->end(); + } + o->end(); + } + {fltk::Button* o = new fltk::Button(190, 300, 70, 25, "&Cancel"); + o->callback((fltk::Callback*)cb_Cancel); + o->align(fltk::ALIGN_CENTER); + } + {fltk::Button* o = but_kbd_apply = new fltk::Button(115, 300, 70, 25, "&Apply"); + o->callback((fltk::Callback*)cb_but_kbd_apply); + } + {fltk::ReturnButton* o = new fltk::ReturnButton(40, 300, 70, 25, "OK"); + o->shortcut(0xd); + o->callback((fltk::Callback*)cb_OK); + } + o->end(); + o->resizable(o); + } +} + +edisplayconf::~edisplayconf() { +} + +void edisplayconf::Run() { + _finish = false; + win->show(); + while (!_finish) fltk::wait(); + win->hide(); +} + +void edisplayconf::make_window() { +} + +void edisplayconf::radioCB() { + int l_blank; + + l_blank = (int)radio_blank->value(); + if (l_blank) + slider_pattern->deactivate(); + else + slider_pattern->activate(); +} + +int main(int ac,char **av) { + //fl_init_locale_support("edisplayconf", PREFIX"/share/locale"); + app = new edisplayconf(); + read_disp_configuration(); + app->Run(); + delete app; + return 0; +} +edisplayconf *app; diff --git a/edisplayconf/edisplayconf.fl b/edisplayconf/edisplayconf.fl new file mode 100755 index 0000000..fff98f1 --- /dev/null +++ b/edisplayconf/edisplayconf.fl @@ -0,0 +1,188 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {/* + * $Id$ + * + * X server properties + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "conf.h"} {} + +decl {\#include "../edelib2/NLS.h"} {} + +decl {//\#include } {} + +decl {\#include } {} + +class edisplayconf {open +} { + decl {bool _finish;} {public + } + Function {edisplayconf()} {open + } { + {fltk::Window} win { + label {Display configuration} + callback {_finish = true;} open + private xywh {386 200 265 335} resizable visible + } { + {fltk::TabGroup} {} {open + xywh {5 5 260 285} + } { + {fltk::Group} group_mouse { + label Mouse open selected + private xywh {0 24 255 260} align 4 + } { + {fltk::ValueSlider} slider_accel { + label Acceleration + xywh {20 30 220 18} align 1 maximum 10 step 1 value 2 + } + {fltk::ValueSlider} slider_thresh { + label {Threshold (pixels)} + xywh {20 75 220 18} align 1 maximum 20 step 1 value 4 + } + } + {fltk::Group} group_bell { + label Bell open + private xywh {0 25 255 259} hide + } { + {fltk::ValueSlider} slider_volume { + label {Volume in %} + xywh {20 30 220 18} align 1 maximum 100 step 1 value 50 + } + {fltk::ValueSlider} slider_pitch { + label {Pitch in Hz} + xywh {20 75 220 18} align 1 minimum 100 maximum 1000 step 1 value 440 + } + {fltk::ValueSlider} slider_duration { + label {Duration in ms} + xywh {20 120 220 18} align 1 maximum 1000 step 1 value 200 + } + {fltk::Button} {} { + label Test + callback {testbellCB();} + xywh {175 170 60 25} + } + } + {fltk::Group} group_keyboard { + label Keyboard open + private xywh {0 25 255 259} align 5 hide + } { + {fltk::CheckButton} check_autorepeat { + label { Repeat key activated} + xywh {24 20 221 20} selection_color 2 value 1 + } + {fltk::ValueSlider} slider_click { + label {Click volume %} + xywh {25 67 220 18} align 1 maximum 100 step 1 value 50 + } + } + {fltk::Group} group_screen { + label Screen open + xywh {0 25 255 259} hide + } { + {fltk::Button} but_activate { + label {&Test} + callback {TestBlankCB();} + xywh {167 190 80 25} + } + {fltk::InvisibleBox} {} { + xywh {10 0 234 55} + } + {fltk::ValueSlider} slider_delay { + label {Activation delay (min)} + xywh {27 71 210 18} align 1 minimum 5 maximum 120 step 1 value 15 + } + {fltk::CheckButton} check_blanking { + label { Screen blanker activated} + xywh {15 20 222 20} selection_color 2 value 1 + } + {fltk::InvisibleBox} {} { + xywh {10 99 234 37} + } + {fltk::ValueSlider} slider_pattern { + label {Pattern change delay (min)} + xywh {27 155 210 18} align 1 deactivate minimum 1 maximum 5 step 0 value 2 + } + {fltk::Group} {} {open + xywh {35 108 210 27} + } { + {fltk::RadioButton} radio_blank { + label Blank + callback {radioCB();} + xywh {0 0 105 20} selection_color 1 value 1 + } + {fltk::RadioButton} radio_pattern { + label Pattern + callback {radioCB();} + xywh {107 5 95 20} selection_color 1 + } + } + } + } + {fltk::Button} {} { + label {&Cancel} + callback {cancelCB();} + xywh {190 300 70 25} align 16 + } + {fltk::Button} but_kbd_apply { + label {&Apply} + callback {applyCB();} + xywh {115 300 70 25} + } + {fltk::ReturnButton} {} { + label OK + callback {okCB();} + xywh {40 300 70 25} shortcut 0xd + } + } + } + Function {~edisplayconf()} {open + } {} + Function {Run()} {open + } { + code {_finish = false; + win->show(); + while (!_finish) fltk::wait(); + win->hide();} {} + } + Function {make_window()} {} {} + Function {radioCB()} {open + } { + code {int l_blank; + + l_blank = (int)radio_blank->value(); + if (l_blank) + slider_pattern->deactivate(); + else + slider_pattern->activate();} {} + } +} + +Function {main(int ac,char **av)} {open return_type int +} { + code {//fl_init_locale_support("edisplayconf", PREFIX"/share/locale"); +app = new edisplayconf(); +read_disp_configuration(); +app->Run(); +delete app; +return 0;} {} +} + +decl {edisplayconf *app;} {public +} diff --git a/edisplayconf/edisplayconf.fld b/edisplayconf/edisplayconf.fld new file mode 100755 index 0000000..95d534b --- /dev/null +++ b/edisplayconf/edisplayconf.fld @@ -0,0 +1,174 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "conf.h"} {} + +decl {\#include } {} + +decl {\#include } {} + +class edisplayconf {open +} { + decl {bool _finish;} {public + } + Function {edisplayconf()} {open + } { + Fl_Window win { + label {Display configuration} + callback {_finish = true;} open + private xywh {211 112 265 335} hide + } { + Fl_Tabs {} {open + xywh {5 5 255 285} + } { + Fl_Group group_mouse { + label Mouse open + private xywh {0 20 255 265} align 4 + } { + Fl_Value_Slider slider_accel { + label Acceleration + xywh {25 25 220 18} type HORIZONTAL align 1 maximum 10 step 1 value 2 + } + Fl_Value_Slider slider_thresh { + label {Threshold (pixels)} + xywh {25 65 220 18} type HORIZONTAL align 1 maximum 20 step 1 value 4 + } + } + Fl_Group group_bell { + label Bell open + private xywh {0 20 255 265} hide + } { + Fl_Value_Slider slider_volume { + label {Volume in %} + xywh {25 25 220 18} type HORIZONTAL align 1 maximum 100 step 1 value 50 + } + Fl_Value_Slider slider_pitch { + label {Pitch in Hz} + xywh {25 70 220 18} type HORIZONTAL align 1 minimum 100 maximum 1000 step 1 value 440 + } + Fl_Value_Slider slider_duration { + label {Duration in ms} + xywh {25 115 220 18} type HORIZONTAL align 1 maximum 1000 step 1 value 200 + } + Fl_Button {} { + label Test + callback {testbellCB();} + xywh {180 165 60 25} + } + } + Fl_Group group_keyboard { + label Keyboard open + private xywh {0 20 255 265} align 5 hide + } { + Fl_Check_Button check_autorepeat { + label { Repeat key activated} + xywh {24 25 221 20} selection_color 2 value 1 + } + Fl_Value_Slider slider_click { + label {Click volume %} + xywh {25 65 220 18} type HORIZONTAL align 1 maximum 100 step 1 value 50 + } + } + Fl_Group group_screen { + label Screen open selected + xywh {0 20 255 265} hide + } { + Fl_Button but_activate { + label {&Test} + callback {TestBlankCB();} + xywh {165 187 80 25} + } + Fl_Box {} { + xywh {10 1 234 55} + } + Fl_Value_Slider slider_delay { + label {Activation delay (min)} + xywh {25 77 220 18} type HORIZONTAL align 1 minimum 5 maximum 120 step 1 value 15 + } + Fl_Check_Button check_blanking { + label { Screen blanker activated} + xywh {23 25 222 20} selection_color 2 value 1 + } + Fl_Box {} { + xywh {10 100 234 37} + } + Fl_Value_Slider slider_pattern { + label {Pattern change delay (min)} + xywh {25 152 220 18} type HORIZONTAL align 1 deactivate minimum 1 maximum 5 step 0 value 2 + } + Fl_Group {} {open + xywh {30 105 210 25} + } { + Fl_Round_Button radio_blank { + label Blank + callback {radioCB();} + xywh {0 5 105 20} type RADIO selection_color 1 value 1 + } + Fl_Round_Button radio_pattern { + label Pattern + callback {radioCB();} + xywh {115 5 95 20} type RADIO selection_color 1 + } + } + } + } + Fl_Button {} { + label {&Cancel} + callback {cancelCB();} + xywh {190 300 70 25} align 16 + } + Fl_Button but_kbd_apply { + label {&Apply} + callback {applyCB();} + xywh {115 300 70 25} + } + Fl_Return_Button {} { + label OK + callback {okCB();} + xywh {40 300 70 25} shortcut 0xd + } + } + } + Function {~edisplayconf()} {} {} + Function {Run()} {open + } { + code {_finish = false; + win->show(); + while (!_finish) Fl::wait(); + win->hide();} {} + } + Function {make_window()} {} {} + Function {radioCB()} {open + } { + code {int l_blank; + + l_blank = (int)radio_blank->value(); + if (l_blank) + slider_pattern->deactivate(); + else + slider_pattern->activate();} {} + } +} + +Function {main(int ac,char **av)} {open return_type int +} { + code {fl_init_locale_support("edisplayconf", PREFIX"/share/locale"); +app = new edisplayconf(); +read_disp_configuration(); +app->Run(); +delete app; +return 0;} {} +} + +decl {edisplayconf *app;} {public +} diff --git a/edisplayconf/edisplayconf.h b/edisplayconf/edisplayconf.h new file mode 100755 index 0000000..c065007 --- /dev/null +++ b/edisplayconf/edisplayconf.h @@ -0,0 +1,75 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#ifndef edisplayconf_h +#define edisplayconf_h +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class edisplayconf { +public: + bool _finish; + edisplayconf(); +private: + fltk::Window *win; + inline void cb_win_i(fltk::Window*, void*); + static void cb_win(fltk::Window*, void*); + fltk::Group *group_mouse; +public: + fltk::ValueSlider *slider_accel; + fltk::ValueSlider *slider_thresh; +private: + fltk::Group *group_bell; +public: + fltk::ValueSlider *slider_volume; + fltk::ValueSlider *slider_pitch; + fltk::ValueSlider *slider_duration; +private: + inline void cb_Test_i(fltk::Button*, void*); + static void cb_Test(fltk::Button*, void*); + fltk::Group *group_keyboard; +public: + fltk::CheckButton *check_autorepeat; + fltk::ValueSlider *slider_click; + fltk::Group *group_screen; + fltk::Button *but_activate; +private: + inline void cb_but_activate_i(fltk::Button*, void*); + static void cb_but_activate(fltk::Button*, void*); +public: + fltk::ValueSlider *slider_delay; + fltk::CheckButton *check_blanking; + fltk::ValueSlider *slider_pattern; + fltk::RadioButton *radio_blank; +private: + inline void cb_radio_blank_i(fltk::RadioButton*, void*); + static void cb_radio_blank(fltk::RadioButton*, void*); +public: + fltk::RadioButton *radio_pattern; +private: + inline void cb_radio_pattern_i(fltk::RadioButton*, void*); + static void cb_radio_pattern(fltk::RadioButton*, void*); + inline void cb_Cancel_i(fltk::Button*, void*); + static void cb_Cancel(fltk::Button*, void*); +public: + fltk::Button *but_kbd_apply; +private: + inline void cb_but_kbd_apply_i(fltk::Button*, void*); + static void cb_but_kbd_apply(fltk::Button*, void*); + inline void cb_OK_i(fltk::ReturnButton*, void*); + static void cb_OK(fltk::ReturnButton*, void*); +public: + ~edisplayconf(); + void Run(); + void make_window(); + void radioCB(); +}; +int main(int ac,char **av); +extern edisplayconf *app; +#endif diff --git a/edisplayconf/exset.h b/edisplayconf/exset.h new file mode 100755 index 0000000..da12dac --- /dev/null +++ b/edisplayconf/exset.h @@ -0,0 +1,76 @@ +#ifndef exset_h +#define exset_h + +#include //#include +#include "../edelib2/Run.h" //#include + +#include +#include + +#include +#include + +using namespace edelib; + +class Exset { + +public: + Exset(void) {} + ~Exset() {} + + char str[80]; + + void set_pattern(int delay, int pattern = -1){ + if( pattern != -1 ){ + sprintf(str,"xset s %d %d",delay*60,pattern*60); + run_program(str); + }else{ + sprintf(str,"xset s %d",delay*60); + run_program(str); + } + } + void set_check_blank(int blank){ + sprintf(str,"xset s %s",blank ? "on" : "off"); + run_program(str); + } + void set_blank(int blank){ + sprintf(str,"xset s %s",blank ? "blank" : "noblank"); + run_program(str); + } + + void test_blank() { run_program("xset s activate"); } + void test_bell() { run_program("xkbbell"); } + + void set_mouse(int accel, int thresh){ + XChangePointerControl(fltk::xdisplay, true, true, accel, + 1, thresh); + } + + + void set_bell(int volume, int pitch, int duration, int sound = 0){ + XKeyboardControl _ctrl; + unsigned long mask = KBBellPercent | KBBellPitch | KBBellDuration; + + _ctrl.bell_percent = volume; + _ctrl.bell_pitch = pitch; + _ctrl.bell_duration = duration; + + set_xset(&_ctrl,mask); + } + + void set_keybd( int repeat, int clicks) { + XKeyboardControl _ctrl; + unsigned long mask = KBKeyClickPercent | KBAutoRepeatMode; + + _ctrl.key_click_percent = clicks; + _ctrl.auto_repeat_mode = (repeat ? AutoRepeatModeOn : AutoRepeatModeOff); + + set_xset(&_ctrl,mask); + } + + void set_xset(XKeyboardControl * ctrl, unsigned long mask){ + XChangeKeyboardControl(fltk::xdisplay, mask, ctrl); + } +}; +#endif + diff --git a/edisplayconf/locale/hu.po b/edisplayconf/locale/hu.po new file mode 100755 index 0000000..e743756 --- /dev/null +++ b/edisplayconf/locale/hu.po @@ -0,0 +1,99 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Felület beállításai" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Egér" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Gyorsulás" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Határérték (képpont)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Csengő" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Hangerő %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Frekvencia" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Időtartam (ms)" + +#: edisplayconf.cpp:116 +msgid "Test" +msgstr "Próba" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Billentyűzet" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr "Billentyűzet ismétlés" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Hangerő %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Képernyő" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "Pró&ba" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Aktiválás kezdete (perc)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr "Képernyő sötétítés" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Embléma változás (perc)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Sötétítés" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Embléma" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "Mégs&em" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "OK" + diff --git a/edisplayconf/locale/id.po b/edisplayconf/locale/id.po new file mode 100755 index 0000000..647d5e7 --- /dev/null +++ b/edisplayconf/locale/id.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edisplayconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 202-11-29 14:29+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Konfigurasi tampilan" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Mouse" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Akselerasi" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Threshold (pixel)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Bel" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Volumen dalam %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Pitch dalam Hz" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Durasi dalam milidetik" + +#: edisplayconf.cpp:116 +#, fuzzy +msgid "Test" +msgstr "&Tes" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Keyboard" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " tombol Repeat diaktifkan" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Klik volumen %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Layar" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "&Tes" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Waktu tunda aktivasi (menit)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr " Pengosong layar diaktifkan" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Waktu tunda perubahan pola (menit)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Kosong" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Pola" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "&Batal" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Aktifkan" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/edisplayconf/locale/messages.pot b/edisplayconf/locale/messages.pot new file mode 100755 index 0000000..65447c8 --- /dev/null +++ b/edisplayconf/locale/messages.pot @@ -0,0 +1,105 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "" + +#: edisplayconf.cpp:116 +msgid "Test" +msgstr "" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr "" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr "" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/edisplayconf/locale/ru.po b/edisplayconf/locale/ru.po new file mode 100755 index 0000000..55160b0 --- /dev/null +++ b/edisplayconf/locale/ru.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr " " + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr " " + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr ", %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr ", " + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr ", " + +#: edisplayconf.cpp:116 +msgid "Test" +msgstr "" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " ޣ" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr " , %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr " " + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr " ޣ" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr " , " + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr " " + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/edisplayconf/locale/sk.po b/edisplayconf/locale/sk.po new file mode 100755 index 0000000..9a976a2 --- /dev/null +++ b/edisplayconf/locale/sk.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edisplayconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Nastavenie obrazovky" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Myš" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Zrýchlenie" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Threshold (v pixeloch)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Zvonček" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Hlasitosť v %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Pitch v Hz" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Trvanie v ms" + +#: edisplayconf.cpp:116 +#, fuzzy +msgid "Test" +msgstr "&Test" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Klávesnica" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " Aktivované opakovanie kláves" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Hlasitosť kliknutia %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Obrazovka" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "&Test" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Čas aktivatácie (min)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr " Aktivovaný šetrič obrazovky" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Čas zmeny vzoru (min)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Žiadny" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Vzor" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Použiť" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/edisplayconf/locale/sr.po b/edisplayconf/locale/sr.po new file mode 100755 index 0000000..ce3e523 --- /dev/null +++ b/edisplayconf/locale/sr.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: EDISPLAYCONF 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 2002-11-27 04:46+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Прикажи конфигурацију" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Миш" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Акцелерација" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Праг (у пикселима)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Звоно" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Јачина у %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Ниво у Hz" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Трајање у ms" + +#: edisplayconf.cpp:116 +#, fuzzy +msgid "Test" +msgstr "&Тест" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Тастатура" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " Активиран тастер за понављање" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Јачина клика %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Скрин" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "&Тест" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Пауза за активирање (мин)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr "Скрин бланкер активиран" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Мењање шаблона након (мин)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Бланк" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Шаблон" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "&Одустани" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Примени" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/efiler/EDE_FileBrowser.cxx b/efiler/EDE_FileBrowser.cxx new file mode 100644 index 0000000..548ecea --- /dev/null +++ b/efiler/EDE_FileBrowser.cxx @@ -0,0 +1,364 @@ +// +// "$Id: FileBrowser.cxx 5071 2006-05-02 21:57:08Z fabien $" +// +// FileBrowser routines. +// +// Copyright 1999-2006 by Michael Sweet. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library 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 +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// +// Contents: +// +// FileBrowser::full_height() - Return the height of the list. +// FileBrowser::item_height() - Return the height of a list item. +// FileBrowser::item_width() - Return the width of a list item. +// FileBrowser::item_draw() - Draw a list item. +// FileBrowser::FileBrowser() - Create a FileBrowser widget. +// FileBrowser::load() - Load a directory into the browser. +// FileBrowser::filter() - Set the filename filter. +// + +// +// Include necessary header files... +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __CYGWIN__ +# include +#elif defined(WIN32) +# include +# include +// Apparently Borland C++ defines DIRECTORY in , which +// interfers with the FileIcon enumeration of the same name. +# ifdef DIRECTORY +# undef DIRECTORY +# endif // DIRECTORY +#endif // __CYGWIN__ + +#ifdef __EMX__ +# define INCL_DOS +# define INCL_DOSMISC +# include +#endif // __EMX__ + +// CodeWarrior (__MWERKS__) gets its include paths confused, so we +// temporarily disable this... +#if defined(__APPLE__) && !defined(__MWERKS__) +# include +# include +# include +#endif // __APPLE__ && !__MWERKS__ + +using namespace fltk; + +// +// 'FileBrowser::FileBrowser()' - Create a FileBrowser widget. +// + +FileBrowser::FileBrowser(int X, // I - Upper-lefthand X coordinate + int Y, // I - Upper-lefthand Y coordinate + int W, // I - Width in pixels + int H, // I - Height in pixels + const char *l) // I - Label text + : Browser(X, Y, W, H, l) { + // Initialize the filter pattern, current directory, and icon size... + pattern_ = "*"; + directory_ = ""; + icon_size_ = -1.0f; + filetype_ = FILES; + show_hidden_ = false; +} + +// +// 'FileBrowser::load()' - Load a directory into the browser. +// + +int // O - Number of files loaded +FileBrowser::load(const char *directory,// I - Directory to load + File_Sort_F *sort) // I - Sort function to use +{ + int i; // Looping var + int num_files; // Number of files in directory + int num_dirs; // Number of directories in list + char filename[4096]; // Current file + FileIcon *icon; // Icon to use + + +// printf("FileBrowser::load(\"%s\")\n", directory); + + if (!directory) + return (0); + + clear(); + directory_ = directory; + + if (directory_[0] == '\0') + { + // + // No directory specified; for UNIX list all mount points. For DOS + // list all valid drive letters... + // + + num_files = 0; + if ((icon = FileIcon::find("any", FileIcon::DEVICE)) == NULL) + icon = FileIcon::find("any", FileIcon::DIRECTORY); + +#ifdef WIN32 +# ifdef __CYGWIN__ + // + // Cygwin provides an implementation of setmntent() to get the list + // of available drives... + // + FILE *m = setmntent("/-not-used-", "r"); + struct mntent *p; + + while ((p = getmntent (m)) != NULL) { + add(p->mnt_dir, icon); + num_files ++; + } + + endmntent(m); +# else + // + // Normal WIN32 code uses drive bits... + // + DWORD drives; // Drive available bits + + drives = GetLogicalDrives(); + for (i = 'A'; i <= 'Z'; i ++, drives >>= 1) + if (drives & 1) + { + sprintf(filename, "%c:/", i); + + if (i < 'C') + add(filename, icon); + else + add(filename, icon); + + num_files ++; + } +# endif // __CYGWIN__ +#elif defined(__EMX__) + // + // OS/2 code uses drive bits... + // + ULONG curdrive; // Current drive + ULONG drives; // Drive available bits + int start = 3; // 'C' (MRS - dunno if this is correct!) + + + DosQueryCurrentDisk(&curdrive, &drives); + drives >>= start - 1; + for (i = 'A'; i <= 'Z'; i ++, drives >>= 1) + if (drives & 1) + { + sprintf(filename, "%c:/", i); + add(filename, icon); + + num_files ++; + } +#elif defined(__APPLE__) && !defined(__MWERKS__) + // MacOS X and Darwin use getfsstat() system call... + int numfs; // Number of file systems + struct statfs *fs; // Buffer for file system info + + + // We always have the root filesystem. + add("/", icon); + + // Get the mounted filesystems... + numfs = getfsstat(NULL, 0, MNT_NOWAIT); + if (numfs > 0) { + // We have file systems, get them... + fs = new struct statfs[numfs]; + getfsstat(fs, sizeof(struct statfs) * numfs, MNT_NOWAIT); + + // Add filesystems to the list... + for (i = 0; i < numfs; i ++) { + // Ignore "/", "/dev", and "/.vol"... + if (fs[i].f_mntonname[1] && strcmp(fs[i].f_mntonname, "/dev") && + strcmp(fs[i].f_mntonname, "/.vol")) { + snprintf(filename, sizeof(filename), "%s/", fs[i].f_mntonname); + add(filename, icon); + } + num_files ++; + } + + // Free the memory used for the file system info array... + delete[] fs; + } +#else + // + // UNIX code uses /etc/fstab or similar... + // + FILE *mtab; // /etc/mtab or /etc/mnttab file + char line[1024]; // Input line + + // + // Open the file that contains a list of mounted filesystems... + // + + mtab = fopen("/etc/mnttab", "r"); // Fairly standard + if (mtab == NULL) + mtab = fopen("/etc/mtab", "r"); // More standard + if (mtab == NULL) + mtab = fopen("/etc/fstab", "r"); // Otherwise fallback to full list + if (mtab == NULL) + mtab = fopen("/etc/vfstab", "r"); // Alternate full list file + + if (mtab != NULL) + { + while (fgets(line, sizeof(line), mtab) != NULL) + { + if (line[0] == '#' || line[0] == '\n') + continue; + if (sscanf(line, "%*s%4095s", filename) != 1) + continue; + + strlcat(filename, "/", sizeof(filename)); + +// printf("FileBrowser::load() - adding \"%s\" to list...\n", filename); + add(filename, icon); + num_files ++; + } + + fclose(mtab); + } +#endif // WIN32 || __EMX__ + } + else + { + dirent **files; // Files in in directory + + + // + // Build the file list... + // + +#if (defined(WIN32) && !defined(__CYGWIN__)) || defined(__EMX__) + strlcpy(filename, directory_, sizeof(filename)); + i = strlen(filename) - 1; + + if (i == 2 && filename[1] == ':' && + (filename[2] == '/' || filename[2] == '\\')) + filename[2] = '/'; + else if (filename[i] != '/' && filename[i] != '\\') + strlcat(filename, "/", sizeof(filename)); + + num_files = fltk::filename_list(filename, &files, sort); +#else + num_files = fltk::filename_list(directory_, &files, sort); +#endif /* WIN32 || __EMX__ */ + + if (num_files <= 0) + return (0); + + for (i = 0, num_dirs = 0; i < num_files; i ++) { + if (strcmp(files[i]->d_name, "./") ) { + snprintf(filename, sizeof(filename), "%s/%s", directory_, + files[i]->d_name); + + //bool ft = true; if (ft) {FileIcon::load_system_icons(); ft=false;} + + icon = FileIcon::find(filename); + //printf("%s\n",files[i]->d_name); + if (!strcmp(files[i]->d_name, ".") || !strcmp(files[i]->d_name, "./") || + !show_hidden_ && files[i]->d_name[0]=='.' && strncmp(files[i]->d_name,"../",2)) + continue; + if ((icon && icon->type() == FileIcon::DIRECTORY) || + fltk::filename_isdir(filename)) { + num_dirs ++; + this->insert(num_dirs-1, files[i]->d_name, icon); + } else if (filetype_ == FILES && + fltk::filename_match(files[i]->d_name, pattern_)) { + add(files[i]->d_name, icon); + } + } + + free(files[i]); + } + + free(files); + } + + return (num_files); +} + + +// +// 'FileBrowser::filter()' - Set the filename filter. +// +// I - Pattern string +void FileBrowser::filter(const char *pattern) { + // If pattern is NULL set the pattern to "*"... + if (pattern) pattern_ = pattern; + else pattern_ = "*"; +} + +//////////////////////////////////////////////////////////////// +//#include +//#include +class FileItem : public Item { +public: + FileItem(const char * label, FileIcon * icon); + void draw(); +private: + FileIcon* fileIcon_; +}; + +FileItem::FileItem(const char * label, FileIcon * icon) : Item(label) { + fileIcon_=icon; + textsize(14); + if(icon) icon->value(this,true); +} +void FileItem::draw() { + if (fileIcon_) fileIcon_->value(this,true); + Item::draw(); +} +//////////////////////////////////////////////////////////////// + +void FileBrowser::add(const char *line, FileIcon *icon) { + this->begin(); + FileItem * i = new FileItem(strdup(line),icon); + i->w((int) icon_size()); i->h(i->w()); + this->end(); +} + +void FileBrowser::insert(int n, const char *label, FileIcon*icon) { + current(0); + FileItem * i = new FileItem(strdup(label),icon); + i->w((int) icon_size()); i->h(i->w()); + Menu::insert(*i,n); +} + +// +// End of "$Id: FileBrowser.cxx 5071 2006-05-02 21:57:08Z fabien $". +// diff --git a/efiler/EDE_FileBrowser.h b/efiler/EDE_FileBrowser.h new file mode 100644 index 0000000..5e86355 --- /dev/null +++ b/efiler/EDE_FileBrowser.h @@ -0,0 +1,95 @@ +// +// "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $" +// +// FileBrowser definitions. +// +// Copyright 1999-2006 by Michael Sweet. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library 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 +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + +// +// Include necessary header files... +// + +#ifndef fltk_FileBrowser_h +#define fltk_FileBrowser_h + +#include +#include +#include + +namespace fltk { + + +// +// FileBrowser class... +// + +class FL_API FileBrowser : public Browser +{ + int filetype_; + const char *directory_; + float icon_size_; + const char *pattern_; + +public: + enum { FILES, DIRECTORIES }; + + FileBrowser(int, int, int, int, const char * = 0); + + float icon_size() const { + return (icon_size_ <0? (2.0f* textsize()) : icon_size_); + } + void icon_size(float f) { icon_size_ = f; redraw(); }; + + void filter(const char *pattern); + const char *filter() const { return (pattern_); }; + + int load(const char *directory, File_Sort_F *sort = (File_Sort_F*) fltk::numericsort); + + float textsize() const { return (Browser::textsize()); }; + void textsize(float s) { Browser::textsize(s); icon_size_ = (uchar)(3 * s / 2); }; + + int filetype() const { return (filetype_); }; + void filetype(int t) { filetype_ = t; }; + const char * directory() const {return directory_;} + + // adding or inserting a line into the fileBrowser + void insert(int n, const char* label, FileIcon* icon); + void insert(int n, const char* label, void* data){Menu::insert(n, label,data);} + void add(const char * line, FileIcon* icon); + + // Showing or not showing the hidden files, that's the question: +public: + // sets this flag if you want to see the hidden files in the browser + void show_hidden(bool show) { show_hidden_= show; } + bool show_hidden() const {return show_hidden_;} +private: + bool show_hidden_; +}; + +} + +#endif // !_Fl_File_Browser_H_ + +// +// End of "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $". +// diff --git a/efiler/Makefile b/efiler/Makefile new file mode 100644 index 0000000..ec0df18 --- /dev/null +++ b/efiler/Makefile @@ -0,0 +1,17 @@ + +CPPFILES = efiler.cpp ../edelib2/MimeType.cpp ../edelib2/Run.cpp ../edelib2/process.cpp ../edelib2/pty.cpp ../edelib2/Config.cpp ../edelib2/Icon.cpp ../edelib2/Util.cpp ../edelib2/about_dialog.cpp +TARGET = efiler + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/efiler/efiler.cpp b/efiler/efiler.cpp new file mode 100644 index 0000000..2ac93eb --- /dev/null +++ b/efiler/efiler.cpp @@ -0,0 +1,538 @@ +/* + * $Id$ + * + * EFiler - EDE File Manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../edelib2/about_dialog.h" +#include "../edelib2/Icon.h" +#include "../edelib2/MimeType.h" +#include "../edelib2/NLS.h" +#include "../edelib2/Run.h" +#include "../edelib2/Util.h" + + +#define DEFAULT_ICON "misc-vedran" + + +using namespace fltk; +using namespace edelib; + + + +Window *win; +ScrollGroup* sgroup; +FileBrowser* fbrowser; +char current_dir[PATH_MAX]; +static bool semaphore=false; +bool showhidden = false; + +char **cut_copy_buffer = 0; +bool operation_is_copy = false; + + + +// This is for the icon view, which should be redesigned to be like FileBrowser + +void loaddir(const char* path); + +void button_press(Widget* w, void*) { + if (event_clicks() || event_key() == ReturnKey) { +// run_program((char*)w->user_data(),true,false,true); // use elauncher +// char tmp[256]; +// snprintf(tmp,255,"konsole --noclose -e %s",(char*)w->user_data()); +// run_program(tmp,true,false,false); + if (!w->user_data() || (strlen((char*)w->user_data())==0)) + alert(_("Unknown file type")); + else if (strncmp((char*)w->user_data(),"efiler ",7)==0) { + // don't launch new efiler instance + char tmp[PATH_MAX]; + strncpy(tmp,(char*)w->user_data()+7,PATH_MAX); + + // remove quotes + if (tmp[0] == '\'' || tmp[0] == '"') + memmove(tmp,tmp+1,strlen(tmp)-1); + int i=strlen(tmp)-2; + if (tmp[i] == '\'' || tmp[i] == '"') + tmp[i] = '\0'; + + loaddir(tmp); + } else { + fprintf(stderr, "Running: %s\n", (char*)w->user_data()); + run_program((char*)w->user_data(),false,false,true); + } + } + if (event_is_click()) w->take_focus(); + fprintf (stderr, "Event: %s (%d)\n",event_name(event()), event()); +} + + +void loaddir(const char *path) { + // If user clicks too fast, it can cause problems + if (semaphore) { + return; + } + semaphore=true; + + // Set current_dir + if (filename_isdir(path)) { + if (path[0] == '~') // Expand tilde + snprintf(current_dir,PATH_MAX,"%s/%s",getenv("HOME"),path); + else + strcpy(current_dir,path); + } else + strcpy(current_dir,getenv("HOME")); + // Trailing slash should always be there + if (current_dir[strlen(current_dir)-1] != '/') strcat(current_dir,"/"); +fprintf (stderr, "loaddir(%s) = (%s)\n",path,current_dir); + + // set window label + win->label(tasprintf(_("%s - File manager"), current_dir)); + + // Update file browser... + fbrowser->load(current_dir); + + // some constants - TODO: move to configuration + int startx=0, starty=0; + int sizex=90, sizey=58; + int spacex=5, spacey=5; + + // variables used later + Button **icon_array; + int icon_num=0; + dirent **files; + + + sgroup->remove_all(); + + sgroup->begin(); + // list files + icon_num = fltk::filename_list(current_dir, &files, alphasort); // no sort needed because icons have coordinates + icon_array = (Button**) malloc (sizeof(Button*) * icon_num + 1); + // fill array with zeros, for easier detection if button exists + for (int i=0; id_name; //shortcut + + // don't show ./ (current directory) + if (strcmp(n,"./")==0) continue; + + // hide files with dot except ../ (up directory) + if (!showhidden && (n[0] == '.') && (strcmp(n,"../")!=0)) continue; + + // hide files ending with tilde (backup) - NOTE + if (!showhidden && (n[strlen(n)-1] == '~')) continue; + + Button* o = new Button(myx, myy, sizex, sizey); + o->box(NO_BOX); + //o->labeltype(SHADOW_LABEL); + o->labelcolor(BLACK); + o->callback((Callback*)button_press); + o->align(ALIGN_INSIDE|ALIGN_CENTER|ALIGN_WRAP); + //o->when(WHEN_CHANGED|WHEN_ENTER_KEY); + + o->label(n); + o->image(Icon::get(DEFAULT_ICON,Icon::SMALL)); + + myx=myx+sizex+spacex; + // 4 - edges + if (myx+sizex > sgroup->w()) { myx=startx; myy=myy+sizey+spacey; } + + icon_array[i] = o; + } + sgroup->end(); + // Give first icon the focus + sgroup->child(0)->take_focus(); + + sgroup->redraw(); + + // Detect icon mimetypes etc. + for (int i=0; id_name); + MimeType *m = new MimeType(fullpath); + +fprintf(stderr,"Adding: %s (%s), cmd: '%s'\n", fullpath, m->id(), m->command()); + + // tooltip + char *tooltip; + if (strcmp(m->id(),"directory")==0) + asprintf(&tooltip, "%s - %s", files[i]->d_name, m->type_string()); + else + asprintf(&tooltip, "%s (%s) - %s", files[i]->d_name, nice_size(filename_size(fullpath)), m->type_string()); + icon_array[i]->tooltip(tooltip); + + // icon + icon_array[i]->image(m->icon(Icon::SMALL)); + + // get command to execute + if (strcmp(files[i]->d_name,"../")==0) { + // up directory - we don't want ../ poluting filename + char exec[PATH_MAX]; + int slashes=0, j; + for (j=strlen(current_dir); j>0; j--) { + if (current_dir[j]=='/') slashes++; + if (slashes==2) break; + } + if (slashes<2) + sprintf(exec,"efiler /"); + else { + sprintf(exec,"efiler "); + strncat(exec,current_dir,j); + } + icon_array[i]->user_data(strdup(exec)); + + } else if (m->command() && (strlen(m->command())>0)) + icon_array[i]->user_data(strdup(m->command())); + else + icon_array[i]->user_data(0); + + // make sure label isn't too large + // TODO: move this to draw() method + int lx,ly; + icon_array[i]->measure_label(lx,ly); + int pos=strlen(icon_array[i]->label()); + if (pos>252) pos=252; + char fixlabel[256]; + while (lx>sizex) { + strncpy(fixlabel,icon_array[i]->label(),pos); + fixlabel[pos]='\0'; + strcat(fixlabel,"..."); + icon_array[i]->label(strdup(fixlabel)); + icon_array[i]->measure_label(lx,ly); + pos--; + } + icon_array[i]->redraw(); + delete m; + } + + sgroup->redraw(); + semaphore=false; +} + + + +// List view +// Currently using fltk::FileBrowser which is quite ugly (so only callback is here) + +void fbrowser_cb(Widget* w, void*) { + // Take only proper callbacks + if (!event_clicks() && event_key() != ReturnKey) return; + + // Construct filename + const char *c = fbrowser->child(fbrowser->value())->label(); + char filename[PATH_MAX]; + if (strcmp(c,"../")==0) { + strcpy(filename,current_dir); // both are [PATH_MAX] + filename[strlen(filename)-1] = '\0'; // remove trailing slash in a directory + char *c2 = strrchr(filename,'/'); // find previous slash + if (c2) *(c2+1) = '\0'; // cut everything after this slash + else strcpy(filename,"/"); // if nothing is found, filename becomes "/" + } else + snprintf(filename,PATH_MAX,"%s%s",current_dir,c); + + // Change directory + if (filename_isdir(filename)) + loaddir(filename); + + // Let elauncher handle this file... + else + run_program(filename,false,false,true); +} + + +// Menu callbacks + +// File menu +void open_cb(Widget*, void*) { + Widget* w; + if (sgroup->visible()) + w = sgroup->child(sgroup->focus_index()); + else + w = fbrowser; + event_clicks(2); + w->do_callback(); +} +void location_cb(Widget*, void*) { + const char *dir = dir_chooser(_("Choose location"),current_dir); + if (dir) loaddir(dir); +} +void quit_cb(Widget*, void*) {exit(0);} + +// Edit menu + +// Execute cut or copy operation when List View is active +void do_cut_copy_fbrowser(bool m_copy) { + // Count selected icons, for malloc + int num = fbrowser->children(); + int nselected = 0; + for (int i=0; iselected(i)) nselected++; + + // Clear cut/copy buffer and optionally ungray the previously cutted icons + if (cut_copy_buffer) { + for (int i=0; cut_copy_buffer(i); i++) + free(cut_copy_buffer(i)); + free(cut_copy_buffer); + if (!operation_is_copy) { + for (int i=0; ichild(i)->textcolor(BLACK); // FIXME: use color from style + } + } + + // Allocate buffer + cut_copy_buffer = (char**)malloc(sizeof(char*) * (nselected+2)); + + // Add selected files to buffer and optionally grey icons (for cut effect) + int buf=0; + for (int i=0; i<=num; i++) { + if (fbrowser->selected(i)) { + asprintf(&cut_copy_buffer[buf], "%s%s", current_dir, fbrowser->child(i)->label()); + if (!m_copy) fbrowser->child(i)->textcolor(GRAY50); + buf++; + } + } + cut_copy_buffer[buf] = 0; + operation_is_copy = copy; + + // Deselect all + fbrowser->deselect(); +} + +// Execute cut or copy operation when Icon View is active +void do_cut_copy_sgroup(bool copy) { + // Group doesn't support type(MULTI) so only one item can be selected + // Will be changed + + int num = fbrowser->children(); + + // Clear cut/copy buffer and optionally ungray the previously cutted icon + if (cut_copy_buffer) { + for (int i=0; cut_copy_buffer(i); i++) + free(cut_copy_buffer(i)); + free(cut_copy_buffer); + if (!operation_is_copy) { + for (int i=0; ichild(i)->textcolor(BLACK); // FIXME: use color from style + } + } + + // Allocate buffer + cut_copy_buffer = (char**)malloc(sizeof(char*) * 3); + + // Add selected files to buffer and optionally grey icons (for cut effect) + // FIXME: label doesn't contain filename!! + asprintf(&cut_copy_buffer[0], "%s%s", current_dir, sgroup->child(sgroup->focus_index())->label()); + if (!m_copy) sgroup->child(sgroup->focus_index())->textcolor(GRAY50); + cut_copy_buffer[1]=0; + operation_is_copy=copy; +} + +void cut_cb(Widget*, void*) { + if (sgroup->visible()) + do_cut_copy_sgroup(false); + else + do_cut_copy_fbrowser(false); +} + +void copy_cb(Widget*, void*) { + if (sgroup->visible()) + do_cut_copy_sgroup(true); + else + do_cut_copy_fbrowser(true); +} + +void paste_cb(Widget*, void*) { + +} + +// View menu +void iconsview_cb(Widget*,void*) { + if (sgroup->visible() && event_key() == F8Key) { + sgroup->hide(); + fbrowser->show(); + fbrowser->take_focus(); + } else { + sgroup->show(); + fbrowser->hide(); + sgroup->take_focus(); + } +} +void listview_cb(Widget*,void*) { sgroup->hide(); fbrowser->show(); } +void showhidden_cb(Widget* w, void*) { + Item *i = (Item*)w; + if (showhidden) { + showhidden=false; + i->clear(); + } else { + showhidden=true; + i->set(); + } + fbrowser->show_hidden(showhidden); + //fbrowser->redraw(); + loaddir(current_dir); +} + +// Help menu +void about_cb(Widget*, void*) { about_dialog("EFiler", "0.1", _("EDE File Manager"));} + + + + +// GUI design + +int main (int argc, char **argv) { + win = new fltk::Window(600, 400); + win->color(WHITE); + win->begin(); + + // Main menu + {MenuBar *m = new MenuBar(0, 0, 600, 25); + m->begin(); + {ItemGroup *o = new ItemGroup(_("&File")); + o->begin(); + {Item *o = new Item(_("&Open")); + o->callback(open_cb); + o->shortcut(CTRL+'o'); + } + {Item *o = new Item(_("Open &with...")); + //o->callback(open_cb); + //o->shortcut(CTRL+'o'); + } + new Divider(); + {Item *o = new Item(_("Open &location")); + o->callback(location_cb); + //o->shortcut(CTRL+'o'); + } + new Divider(); + {Item *o = new Item(_("&Quit")); + o->callback(quit_cb); + o->shortcut(CTRL+'q'); + } + o->end(); + } + {ItemGroup *o = new ItemGroup(_("&Edit")); + o->begin(); + {Item *o = new Item(_("&Cut")); + o->callback(cut_cb); + o->shortcut(CTRL+'x'); + } + {Item *o = new Item(_("C&opy")); + //o->callback(open_cb); + o->shortcut(CTRL+'c'); + } + {Item *o = new Item(_("&Paste")); + //o->callback(open_cb); + o->shortcut(CTRL+'v'); + } + {Item *o = new Item(_("&Rename")); + //o->callback(open_cb); + o->shortcut(F2Key); + } + {Item *o = new Item(_("&Delete")); + //o->callback(open_cb); + o->shortcut(DeleteKey); + } + new Divider(); + {Item *o = new Item(_("&Preferences...")); + o->shortcut(CTRL+'p'); + } + o->end(); + } + {ItemGroup *o = new ItemGroup(_("&View")); + o->begin(); + {Item *o = new Item(_("&Icons")); + o->type(Item::RADIO); + o->shortcut(F8Key); + o->set(); + o->callback(iconsview_cb); + } + {Item *o = new Item(_("&Detailed List")); + o->type(Item::RADIO); + o->callback(listview_cb); + } + new Divider(); + {Item *o = new Item(_("&Show hidden")); + o->type(Item::TOGGLE); + o->callback(showhidden_cb); + } + {Item *o = new Item(_("Directory &Tree")); + o->type(Item::TOGGLE); + o->shortcut(F9Key); + } + o->end(); + } + {ItemGroup *o = new ItemGroup(_("&Help")); + o->begin(); + {Item *o = new Item(_("&About File Manager")); + o->shortcut(); + o->callback(about_cb); + } + o->end(); + } + m->end(); + } + + // Icon view + {sgroup = new ScrollGroup(0, 25, 600, 375); + sgroup->box(DOWN_BOX); + sgroup->color(WHITE); +// sgroup->highlight_color(WHITE); +// sgroup->selection_color(WHITE); + sgroup->align(ALIGN_LEFT|ALIGN_TOP); +// g->label("There are no files in current directory"); + } + + // List view + {fbrowser = new FileBrowser(0, 25, 600, 375); + fbrowser->box(DOWN_BOX); + fbrowser->color(WHITE); + fbrowser->callback(fbrowser_cb); +// sgroup->align(ALIGN_LEFT|ALIGN_TOP); +// g->label("There are no files in current directory"); + fbrowser->when(WHEN_ENTER_KEY); + //fbrowser->labelsize(12); + fbrowser->type(Browser::MULTI); + fbrowser->hide(); + } + + win->end(); + win->resizable(sgroup); + win->icon(Icon::get("folder",Icon::TINY)); + win->show(); + + if (argc==1) { // No params + loaddir (""); + } else { + loaddir (argv[1]); + } + + return fltk::run(); +} diff --git a/efiler/mimetypes.conf b/efiler/mimetypes.conf new file mode 100644 index 0000000..7d36bf2 --- /dev/null +++ b/efiler/mimetypes.conf @@ -0,0 +1,87 @@ +# EDE mimetypes description +# +# Format: +# id|description|handler program|icon|wildcard for filename (extension)|wildcard for file command output|classic mime type +# +# - id - short string; to setup subtypes, just use slash (/) as separator in ID +# - description - what is shown in gui +# - handler program - filename will be appended, specify any needed parameters for opening - THIS WILL BE MOVED INTO SEPARATE FILE (for handling multiple programs etc.) +# - icon - just name, don't give extension or path +# - extension - will be used only if multiple types have same file command match. You don't need to give asterisk (*) i.e. .png. If there are multiple extensions, separate them with slash (/). Actually, "extension" can be any part of filename, but I can't think of use for this +# - file output - relevant part of output from `file -bLnNp $filename` +# - classic mime type - what is used for interchange i.e. text/plain - may be used for matching if other methods fail +# +# This is how mimetype resolving is supposed to work: if there is exactly one match for `file` +# output, this is what we use. If there are multiple, the largest match is used. If there are +# no results or several results with same size we look at extension, then at classic mime type +# (using -i parameter to `file`). +# +bitmap|Picture (Unknown)|eimage|image||| +bitmap/bmp|Picture (BMP)|eimage|image|.bmp|PC bitmap data|image/bmp +bitmap/gif|Picture (GIF)|eimage|image|.gif|GIF image data|image/gif +bitmap/jpeg|Picture (JPEG)|eimage|image|.jpg/.jpeg|JPEG image data|image/png +bitmap/png|Picture (PNG)|eimage|image|.png|PNG image data|image/png +bitmap/psd|Picture (Adobe PhotoShop)||image|.psd|Adobe Photoshop Image|image/x-photoshop +text|Plain text|enotepad|txt|.txt/|text|text/plain +#text/unicode|Plain text|enotepad|txt|.txt|Unicode * text|text/plain # we need wildcard support in file output :( +text/c|C code|enotepad|source_c|.c/.h|C program text|text/x-c +text/config|Program configuration|enotepad|ascii|.conf/rc|text|text/plain +text/config/xml|Program configuration (XML)|enotepad|ascii|.conf/rc|XML document text|text/xml +text/cpp|C++ code|enotepad|source_cpp|.cpp/.cxx/.h|C++ program text|text/x-c++ +text/cpp/lame|Plain text|enotepad|txt||C++ program text|text/plain +text/desktop|Shortcut|elauncher|exec|.desktop/.directory|text|text/plain +text/diff|File difference|fldiff|kmultiple|.diff/.patch|'diff' output text| +text/html|Web page (HTML)|konqueror|html|.html/.htm|HTML document text|text/html +text/html/lame|Web page (HTML)|konqueror|html|.html/.htm|text|text/html # for pages that dont have the proper headers, and are so detected as simple ascii text +text/java|Java code|enotepad|source_java|.java|Perl5 module source text|text/x-java # misdetection in find +text/php|PHP code|enotepad|source_php|.php/.php3|PHP script text|text/plain +text/po|Program translation resource|kbabel|ascii|.po|PO (gettext message catalogue) text|text/x-po +text/readme|Read this first!|enotepad|txt2|README|text|text/plain +text/script|Program (shell script)|elauncher|empty|.sh|script text|application/x-shellscript +text/script/perl|Program (Perl script)|elauncher|empty|.pl|perl script text|application/x-perl +text/xml|XML text|enotepad|txt|.xml/|XML document text|text/xml +office|Office document|ooffice2.0|document||Document| +office/db|Database|ooffice2.0|empty||| # find icon for database! +office/db/sqlite|Database (SQLite)|ooffice2.0|empty|.db|SQLite database| +office/ms|Microsoft Office document|ooffice2.0|document||Microsoft Office Document| +office/odf|Open Document Format (ODF) document|ooffice2.0|document|| +office/pdf|PDF document|xpdf|pdf|.pdf|PDF document|application/pdf +office/spread|Spreadsheet|ooffice2.0|spreadsheet||| +office/spread/ods|Spreadsheet (OpenOffice.org 2.0)|ooffice2.0|spreadsheet|.ods|Zip archive data| +office/spread/sxc|Spreadsheet (OpenOffice.org 1.x)|ooffice2.0|spreadsheet|.sxc|Zip archive data| +office/spread/xls|Spreadsheet (MS Excel)|ooffice2.0|spreadsheet|.xls|Microsoft Office Document|application/msexcel +office/word|Word document|ooffice2.0|wordprocessing||| +office/word/doc|Word document (MS Word)|ooffice2.0|wordprocessing|.doc|Microsoft Office Document|application/msword +office/word/odt|Word document (OpenOffice.org 2.0)|ooffice2.0|wordprocessing|.odt|Zip archive data| +office/word/sxw|Word document (OpenOffice.org 1.x)|ooffice2.0|wordprocessing|.sxw|Zip archive data| +empty|Empty file|enotepad|misc-vedran||empty| +archive|Archive||tar||archive| # Consider using the term "Compressed file(s)" +archive/bz2|Archive (BZ2)||tar|.bz2|bzip2 compressed data|application/x-gzip +archive/gz|Archive (GZ)||tar|.gz|gzip compressed data|application/x-gzip +archive/rar|Archive (RAR)||tar|.rar|RAR archive data|application/x-rar +archive/tar|Archive (TAR)||tar|.tar|tar archive|application/x-tar +archive/targz|Archive (TAR.GZ)||tar|.tar.gz|gzip compressed data|application/x-gzip +archive/tarbz2|Archive (TAR.BZ2)||tar|.tar.bz2|bzip2 compressed data|application/x-bzip2 +archive/zip|Archive (ZIP)||tar|.zip|Zip archive data|application/x-zip +install|Program installation|efiler|tgz||| +install/makefile|Program instalation (source)|einstaller|make||make commands text|text/x-makefile +install/rpm|Program installation (RPM)|einstaller|rpm|.rpm|RPM|application/x-rpm +program|Program|elauncher|empty||| +program/elf|Program|elauncher|empty||ELF 32-bit LSB executable|application/x-executable +program/elf/o|Program part||misc-vedran||ELF 32-bit LSB relocatable|application/x-object +program/jar|Java program|java -jar|empty|.jar|Zip archive data|application/x-zip +program/java-class|Java program|java|empty|.class|compiled Java class data| +program/swf|Macromedia Flash program|mozilla-firefox|empty|.swf|Macromedia Flash data| +video|Video|mplayer|video||video| +video/qt|Video (QuickTime)|mplayer|video|.mov|Apple QuickTime movie|video/quicktime +video/xvid|Video (XviD)|mplayer|video|.avi|video: XviD|video/x-msvideo +audio|Audio|xmms|sound||audio| +audio/mp3|Audio (MP3)|xmms|sound|.mp3|MPEG ADTS, layer III|audio/mpeg +audio/ogg|Audio (OGG)|xmms|sound|.ogg|Ogg data, Vorbis audio|application/ogg +image|Filesystem image||binary|.img|filesystem data| +image/ext2|Filesystem image (ext2)||binary|.img|ext2 filesystem data| +image/boot|Boot floppy image||3floppy_unmount|.img|x86 boot sector| +vector|Drawing (unknown)|inkscape|vectorgfx||| +vector/svg|Drawing (SVG)|inkscape|vectorgfx|.svg|XML document text| # hope they fix file to detect this properly +font|Font||font||font| +font/ttf|Font (TrueType)||font_truetype|.ttf|TrueType font data| diff --git a/efinder/Makefile b/efinder/Makefile new file mode 100755 index 0000000..2a31aea --- /dev/null +++ b/efinder/Makefile @@ -0,0 +1,21 @@ + +CPPFILES = efinder.cpp eglob.cpp +TARGET = efinder + +POFILES = locale/ru.po\ + locale/sk.po\ + locale/hu.po + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/efinder/efinder.cpp b/efinder/efinder.cpp new file mode 100755 index 0000000..c4231cc --- /dev/null +++ b/efinder/efinder.cpp @@ -0,0 +1,497 @@ +// generated by Extended Fast Light User Interface Designer (eFluid) version 2.0003 + +#include "efinder.h" +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. +#include "eglob.h" +Fl_Window* permWindow; + +static void cb_Read(Fl_Check_Button*, void*) { + toggle_permission(S_IRUSR); +} + +static void cb_Write(Fl_Check_Button*, void*) { + toggle_permission(S_IWUSR); +} + +static void cb_Execute(Fl_Check_Button*, void*) { + toggle_permission(S_IXUSR); +} + +static void cb_Set(Fl_Check_Button*, void*) { + toggle_permission(S_ISUID); +} + +static void cb_Read1(Fl_Check_Button*, void*) { + toggle_permission(S_IRGRP); +} + +static void cb_Write1(Fl_Check_Button*, void*) { + toggle_permission(S_IWGRP); +} + +static void cb_Execute1(Fl_Check_Button*, void*) { + toggle_permission(S_IXGRP); +} + +static void cb_Set1(Fl_Check_Button*, void*) { + toggle_permission(S_ISGID); +} + +static void cb_Read2(Fl_Check_Button*, void*) { + toggle_permission(S_IROTH); +} + +static void cb_Write2(Fl_Check_Button*, void*) { + toggle_permission(S_IWOTH); +} + +static void cb_Execute2(Fl_Check_Button*, void*) { + toggle_permission(S_IXOTH); +} + +static void cb_Sticky(Fl_Check_Button*, void*) { + toggle_permission(S_ISVTX); +} + +static void cb_Close(Fl_Button*, void*) { + permWindow->hide(); +} + +void createPermWindow() { + Fl_Window* w; + {Fl_Window* o = permWindow = new Fl_Window(355, 175, _("Permissions")); + w = o; + o->shortcut(0xff1b); + {Fl_Group* o = new Fl_Group(10, 30, 110, 90, _("Owner")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Check_Button* o = new Fl_Check_Button(5, 5, 85, 25, _("Read")); + o->callback((Fl_Callback*)cb_Read); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 25, 85, 25, _("Write")); + o->callback((Fl_Callback*)cb_Write); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 45, 85, 25, _("Execute")); + o->callback((Fl_Callback*)cb_Execute); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 65, 85, 25, _("Set UID")); + o->callback((Fl_Callback*)cb_Set); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(125, 30, 105, 90, _("Group")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Check_Button* o = new Fl_Check_Button(5, 5, 85, 25, _("Read")); + o->callback((Fl_Callback*)cb_Read1); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 25, 85, 25, _("Write")); + o->callback((Fl_Callback*)cb_Write1); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 45, 85, 25, _("Execute")); + o->callback((Fl_Callback*)cb_Execute1); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 65, 85, 25, _("Set GID")); + o->callback((Fl_Callback*)cb_Set1); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(235, 30, 110, 90, _("Other")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Check_Button* o = new Fl_Check_Button(5, 5, 85, 25, _("Read")); + o->callback((Fl_Callback*)cb_Read2); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 25, 85, 25, _("Write")); + o->callback((Fl_Callback*)cb_Write2); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 45, 85, 25, _("Execute")); + o->callback((Fl_Callback*)cb_Execute2); + } + {Fl_Check_Button* o = new Fl_Check_Button(5, 65, 95, 25, _("Sticky")); + o->callback((Fl_Callback*)cb_Sticky); + } + o->end(); + } + {Fl_Button* o = new Fl_Button(140, 140, 85, 25, _("&Close")); + o->callback((Fl_Callback*)cb_Close); + } + o->end(); + o->resizable(o); + } + permWindow->end(); + permWindow->show(); +} +Fl_Window* findWindow; +Fl_Input* pathInput; + +static void cb_Browse(Fl_Button*, void*) { + const char *f = fl_select_dir(0, _("Select directory")); + if (f) { + pathInput->value(f); + } +;} +Fl_Input* filterInput; +Fl_Check_Button* recursiveCheck; +Fl_Value_Input* fileLimitValue; +Fl_Input* containsInput; +Fl_Check_Button* caseSensitiveCheck; +Fl_Check_Button* useRegexpCheck; +Fl_Input_Browser* fileTypeBrowser; +Fl_Check_Button* stayOnSingleCheck; +Fl_Check_Button* considerPermValue; + +static void cb_considerPermValue(Fl_Check_Button*, void*) { + if (considerPermValue->value()) + createPermWindow(); +} +Fl_Check_Button* considerUserValue; + +static void cb_considerUserValue(Fl_Check_Button*, void*) { + if (considerUserValue->value()) { + userGroup->activate(); + } + else { + userGroup->deactivate(); + } +;} +Fl_Group* userGroup; +Fl_Input_Browser* userIdChoice; +Fl_Input_Browser* groupIdChoice; +Fl_Check_Button* considerSizeValue; + +static void cb_considerSizeValue(Fl_Check_Button*, void*) { + if (considerSizeValue->value()) { + sizeGroup->activate(); + } + else { + sizeGroup->deactivate(); + } +;} +Fl_Group* sizeGroup; +Fl_Value_Input* sizeGValue; +Fl_Value_Input* sizeMValue; +Fl_Check_Button* considerTimeValue; + +static void cb_considerTimeValue(Fl_Check_Button*, void*) { + if (considerTimeValue->value()) { + timeGroup1->activate(); + timeValue->activate(); + timeGroup2->activate(); + } + else { + timeGroup1->deactivate(); + timeValue->deactivate(); + timeGroup2->deactivate(); + } +;} +Fl_Group* timeGroup1; +Fl_Round_Button* modifiedRadio; +Fl_Round_Button* changedRadio; +Fl_Round_Button* accessedRadio; +Fl_Value_Input* timeValue; +Fl_Group* timeGroup2; +Fl_Round_Button* minutesRadio; +Fl_Round_Button* hoursRadio; +Fl_Round_Button* daysRadio; +Fl_Round_Button* mounthsRadio; +Fl_Check_Button* doNotLookIntoBinaryCheck; +Fl_Check_Button* outputCountCheck; +Fl_Round_Button* matchAnywhereRadio; +Fl_Round_Button* matchWordsRadio; +Fl_Round_Button* matchLinesRadio; +Fl_Round_Button* invertMatchRadio; +Fl_ListView* searchList; +Fl_Box* statusLine; +Fl_Button* searchButton; + +static void cb_searchButton(Fl_Button*, void*) { + findCB(); +} + +static void cb_Cancel(Fl_Button*, void*) { + exit(0); +} +Fl_Button* stopButton; + +static void cb_stopButton(Fl_Button*, void*) { + stopSearch(); +} + +void createFindWindow() { + Fl_Window* w; + {Fl_Window* o = findWindow = new Fl_Window(480, 385, _("Find")); + w = o; + o->shortcut(0xff1b); + {Fl_Tabs* o = new Fl_Tabs(3, 5, 473, 235); + o->color((Fl_Color)0xfffffffe); + {Fl_Group* o = new Fl_Group(1, 23, 471, 211, _("Find")); + {Fl_Group* o = new Fl_Group(7, 20, 460, 100, _("Find")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Group* o = new Fl_Group(5, 5, 450, 30); + {Fl_Input* o = pathInput = new Fl_Input(70, 5, 285, 23, _("Path:")); + o->align(FL_ALIGN_LEFT|FL_ALIGN_WRAP); + o->parent()->resizable(o); + char *tmp = fl_get_homedir(); + o->value(tmp); + delete []tmp; + } + {Fl_Button* o = new Fl_Button(360, 5, 80, 23, _("&Browse...")); + o->callback((Fl_Callback*)cb_Browse); + o->tooltip(_("Find path.")); + } + o->end(); + } + {Fl_Input* o = filterInput = new Fl_Input(75, 40, 370, 23, _("File filter:")); + o->align(FL_ALIGN_LEFT|FL_ALIGN_WRAP); + o->value("*"); + o->parent()->resizable(o); + } + {Fl_Group* o = new Fl_Group(25, 65, 430, 32); + {Fl_Check_Button* o = recursiveCheck = new Fl_Check_Button(50, 0, 155, 30, _("Search subdirectories")); + o->value(1); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP|FL_ALIGN_WRAP); + } + {Fl_Group* o = new Fl_Group(200, 0, 220, 32); + {Fl_Value_Input* o = fileLimitValue = new Fl_Value_Input(175, 5, 45, 20, _("Limit results to first n files:")); + o->step(1); + o->value(64); + o->align(FL_ALIGN_LEFT|FL_ALIGN_CLIP|FL_ALIGN_WRAP); + } + o->end(); + } + o->end(); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(7, 140, 459, 65, _("Content")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Input* o = containsInput = new Fl_Input(75, 10, 370, 23, _("Containing:")); + o->align(FL_ALIGN_LEFT|FL_ALIGN_WRAP); + o->parent()->resizable(o); + } + {Fl_Group* o = new Fl_Group(75, 35, 370, 25); + {Fl_Check_Button* o = caseSensitiveCheck = new Fl_Check_Button(0, 0, 140, 25, _("Case sensitive")); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } + {Fl_Check_Button* o = useRegexpCheck = new Fl_Check_Button(140, 0, 230, 25, _("Extended regexp")); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } + o->end(); + } + o->end(); + } + {Fl_Box* o = new Fl_Box(7, 206, 455, 2); + o->parent()->resizable(o); + } + o->parent()->resizable(o); + o->end(); + } + {Fl_Group* o = new Fl_Group(1, 23, 471, 211, _("Filter options")); + o->hide(); + {Fl_Group* o = new Fl_Group(7, 20, 459, 32, _("Considerations")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Input_Browser* o = fileTypeBrowser = new Fl_Input_Browser(70, 5, 145, 23, _("File type:")); o->begin(); + o->align(FL_ALIGN_LEFT|FL_ALIGN_WRAP); + new Fl_Item(_("Any kind")); + new Fl_Item(_("Regular")); + new Fl_Item(_("Directory")); + new Fl_Item(_("Symlink")); + new Fl_Item(_("Socket")); + new Fl_Item(_("Block device")); + new Fl_Item(_("Character device")); + new Fl_Item(_("FIFO")); + o->parent()->resizable(o); + + o->value("Any kind"); + o->end(); + } + {Fl_Check_Button* o = stayOnSingleCheck = new Fl_Check_Button(225, 4, 230, 23, _("Stay on single filesystem")); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP|FL_ALIGN_WRAP); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(7, 50, 459, 155); + o->box(FL_ENGRAVED_BOX); + {Fl_Check_Button* o = considerPermValue = new Fl_Check_Button(5, 5, 115, 25, _("Permissions")); + o->callback((Fl_Callback*)cb_considerPermValue); + } + {Fl_Check_Button* o = considerUserValue = new Fl_Check_Button(5, 30, 115, 25, _("User/group:")); + o->callback((Fl_Callback*)cb_considerUserValue); + } + {Fl_Group* o = userGroup = new Fl_Group(120, 30, 325, 25); + o->deactivate(); + {Fl_Input_Browser* o = userIdChoice = new Fl_Input_Browser(70, 2, 72, 20, _("User id:")); o->begin(); + o->align(FL_ALIGN_LEFT|FL_ALIGN_WRAP); + o->value("Anyone"); + jam("/etc/passwd", userIdChoice); + o->end(); + } + {Fl_Input_Browser* o = groupIdChoice = new Fl_Input_Browser(240, 2, 72, 20, _("Group id:")); o->begin(); + o->align(FL_ALIGN_LEFT|FL_ALIGN_WRAP); + o->value("Anyone"); + jam("/etc/group", groupIdChoice); + o->end(); + } + o->end(); + } + {Fl_Check_Button* o = considerSizeValue = new Fl_Check_Button(5, 55, 80, 23, _("Size:")); + o->callback((Fl_Callback*)cb_considerSizeValue); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } + {Fl_Group* o = sizeGroup = new Fl_Group(85, 55, 360, 25); + o->box(FL_FLAT_BOX); + o->deactivate(); + {Fl_Value_Input* o = sizeGValue = new Fl_Value_Input(90, 2, 70, 20, _("greater than:")); + o->step(1); + } + {Fl_Value_Input* o = sizeMValue = new Fl_Value_Input(275, 2, 70, 20, _("and less than(KB):")); + o->step(1); + } + o->end(); + } + {Fl_Check_Button* o = considerTimeValue = new Fl_Check_Button(5, 80, 135, 25, _("Time:")); + o->callback((Fl_Callback*)cb_considerTimeValue); + } + {Fl_Group* o = timeGroup1 = new Fl_Group(140, 85, 110, 60); + o->box(FL_FLAT_BOX); + o->deactivate(); + {Fl_Round_Button* o = modifiedRadio = new Fl_Round_Button(0, 0, 105, 20, _("Modified")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = changedRadio = new Fl_Round_Button(0, 20, 105, 20, _("Changed")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = accessedRadio = new Fl_Round_Button(0, 40, 105, 20, _("Accessed")); + o->type(Fl_Round_Button::RADIO); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(255, 90, 80, 60); + {Fl_Value_Input* o = timeValue = new Fl_Value_Input(5, 33, 65, 20, _("in previous:")); + o->maximum(100); + o->step(1); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_CLIP|FL_ALIGN_WRAP); + o->deactivate(); + } + o->end(); + } + {Fl_Group* o = timeGroup2 = new Fl_Group(335, 85, 110, 60); + o->box(FL_FLAT_BOX); + o->deactivate(); + {Fl_Group* o = new Fl_Group(0, 0, 105, 60); + {Fl_Round_Button* o = minutesRadio = new Fl_Round_Button(0, 0, 105, 15, _("Minutes")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = hoursRadio = new Fl_Round_Button(0, 15, 105, 15, _("Hours")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = daysRadio = new Fl_Round_Button(0, 30, 105, 15, _("Days")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = mounthsRadio = new Fl_Round_Button(0, 45, 105, 15, _("Mounths")); + o->type(Fl_Round_Button::RADIO); + } + o->end(); + } + o->end(); + } + {Fl_Box* o = new Fl_Box(440, 5, 10, 145); + o->parent()->resizable(o); + } + o->parent()->resizable(o); + o->end(); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(1, 23, 471, 211, _("Content options")); + o->hide(); + {Fl_Group* o = new Fl_Group(7, 20, 459, 185, _("General considerations")); + o->box(FL_ENGRAVED_BOX); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + {Fl_Check_Button* o = doNotLookIntoBinaryCheck = new Fl_Check_Button(15, 10, 270, 23, _("Do not look into binary files")); + o->value(1); + } + {Fl_Check_Button* o = outputCountCheck = new Fl_Check_Button(15, 37, 270, 23, _("Output count of matching lines")); + o->value(1); + } + {Fl_Round_Button* o = matchAnywhereRadio = new Fl_Round_Button(15, 72, 255, 20, _("Match anywhere")); + o->type(Fl_Round_Button::RADIO); + o->value(1); + } + {Fl_Round_Button* o = matchWordsRadio = new Fl_Round_Button(15, 95, 255, 20, _("Match whole words only")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = matchLinesRadio = new Fl_Round_Button(15, 118, 255, 20, _("Match whole lines only")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Round_Button* o = invertMatchRadio = new Fl_Round_Button(15, 141, 255, 20, _("Output files where no match is found")); + o->type(Fl_Round_Button::RADIO); + } + {Fl_Box* o = new Fl_Box(285, 10, 160, 165); + o->parent()->resizable(o); + } + o->parent()->resizable(o); + o->end(); + } + o->end(); + } + {Fl_Group* o = new Fl_Group(1, 23, 471, 211, _("About")); + o->hide(); + {Fl_Box* o = new Fl_Box(21, 32, 424, 135, _("(C) Copyright 2000-2005. EDE Authors.\n\n Efinder is using the code from xfglob whic\ +h is\n (C) Copyright 2000-2001 by Edscott Wilson Garcia.")); + o->align(FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } + o->end(); + } + o->end(); + } + {Fl_ListView* o = searchList = new Fl_ListView(3, 245, 473, 85); o->begin(); + o->align(FL_ALIGN_TOP|FL_ALIGN_LEFT); + searchList->type(searchList->type() | Fl_ListView::MULTI_SELECTION); + searchList->add_column(_("Filename"), 200); + searchList->add_column(_("Size"), 79); + searchList->add_column(_("Last modified"), 125); + searchList->add_column(_("Rights"), 65); + searchList->column_flags(0, FL_ALIGN_LEFT); + searchList->column_flags(1, FL_ALIGN_CENTER); + searchList->column_flags(2, FL_ALIGN_CENTER); + searchList->column_flags(3, FL_ALIGN_RIGHT); + o->end(); + Fl_Group::current()->resizable(o); + } + {Fl_Box* o = statusLine = new Fl_Box(3, 362, 473, 20); + o->box(FL_THIN_DOWN_BOX); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + o->when(FL_WHEN_CHANGED); + } + {Fl_Group* o = new Fl_Group(3, 330, 473, 30); + {Fl_Button* o = searchButton = new Fl_Button(222, 3, 80, 25, _("&Find")); + o->shortcut(0xff0d); + o->callback((Fl_Callback*)cb_searchButton); + o->tooltip(_("Start the searching.")); + } + {Fl_Button* o = new Fl_Button(392, 3, 80, 25, _("&Cancel")); + o->callback((Fl_Callback*)cb_Cancel); + } + {Fl_Button* o = stopButton = new Fl_Button(307, 3, 80, 25, _("&Stop")); + o->callback((Fl_Callback*)cb_stopButton); + o->tooltip(_("Stop the searching.")); + } + {Fl_Box* o = new Fl_Box(7, 5, 210, 20); + o->parent()->resizable(o); + } + o->end(); + } + o->size_range(o->w(), o->h()); + o->end(); + } + findWindow->end(); + findWindow->show(); +} diff --git a/efinder/efinder.fld b/efinder/efinder.fld new file mode 100755 index 0000000..a01bc88 --- /dev/null +++ b/efinder/efinder.fld @@ -0,0 +1,470 @@ +# data file for the eFLTK User Interface Designer (eFLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Finder for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include "eglob.h"} {} + +Function {createPermWindow()} {return_type void +} { + Fl_Window permWindow { + label Permissions open + xywh {282 274 355 175} hide resizable + } { + Fl_Group {} { + label Owner open + xywh {10 30 110 90} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Check_Button {} { + label Read + callback {toggle_permission(S_IRUSR);} + xywh {5 5 85 25} + } + Fl_Check_Button {} { + label Write + callback {toggle_permission(S_IWUSR);} + xywh {5 25 85 25} + } + Fl_Check_Button {} { + label Execute + callback {toggle_permission(S_IXUSR);} + xywh {5 45 85 25} + } + Fl_Check_Button {} { + label {Set UID} + callback {toggle_permission(S_ISUID);} + xywh {5 65 85 25} + } + } + Fl_Group {} { + label Group open + xywh {125 30 105 90} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Check_Button {} { + label Read + callback {toggle_permission(S_IRGRP);} + xywh {5 5 85 25} + } + Fl_Check_Button {} { + label Write + callback {toggle_permission(S_IWGRP);} + xywh {5 25 85 25} + } + Fl_Check_Button {} { + label Execute + callback {toggle_permission(S_IXGRP);} + xywh {5 45 85 25} + } + Fl_Check_Button {} { + label {Set GID} + callback {toggle_permission(S_ISGID);} + xywh {5 65 85 25} + } + } + Fl_Group {} { + label Other open + xywh {235 30 110 90} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Check_Button {} { + label Read + callback {toggle_permission(S_IROTH);} + xywh {5 5 85 25} + } + Fl_Check_Button {} { + label Write + callback {toggle_permission(S_IWOTH);} + xywh {5 25 85 25} + } + Fl_Check_Button {} { + label Execute + callback {toggle_permission(S_IXOTH);} + xywh {5 45 85 25} + } + Fl_Check_Button {} { + label Sticky + callback {toggle_permission(S_ISVTX);} + xywh {5 65 95 25} + } + } + Fl_Button {} { + label {&Close} + callback {permWindow->hide();} + xywh {140 140 85 25} + } + } + code {permWindow->end(); +permWindow->show();} {} +} + +Function {createFindWindow()} {open return_type void +} { + Fl_Window findWindow { + label Find open + xywh {283 179 480 385} resizable + extra_code {o->size_range(o->w(), o->h());} visible + } { + Fl_Tabs {} {open + xywh {3 5 473 235} color 0xfffffffe + } { + Fl_Group {} { + label Find open + xywh {1 23 471 211} hide + extra_code {o->parent()->resizable(o);} + } { + Fl_Group {} { + label Find open + xywh {7 20 460 100} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Group {} {open + xywh {5 5 450 30} + } { + Fl_Input pathInput { + label {Path:} + xywh {70 5 285 23} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + extra_code {o->parent()->resizable(o); +char *tmp = fl_get_homedir(); +o->value(tmp); +delete []tmp;} + } + Fl_Button {} { + label {&Browse...} + callback {const char *f = fl_select_dir(0, _("Select directory")); + if (f) { + pathInput->value(f); + }} + tooltip {Find path.} + xywh {360 5 80 23} + extra_code {\#include } + } + } + Fl_Input filterInput { + label {File filter:} + xywh {75 40 370 23} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + extra_code {o->value("*"); +o->parent()->resizable(o);} + } + Fl_Group {} {open + xywh {25 65 430 32} + } { + Fl_Check_Button recursiveCheck { + label {Search subdirectories} + xywh {50 0 155 30} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP|FL_ALIGN_WRAP value 1 + } + Fl_Group {} {open + xywh {200 0 220 32} + } { + Fl_Value_Input fileLimitValue { + label {Limit results to first n files:} + xywh {175 5 45 20} align FL_ALIGN_LEFT|FL_ALIGN_CLIP|FL_ALIGN_WRAP step 1 value 64 + } + } + } + } + Fl_Group {} { + label Content open + xywh {7 140 459 65} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Input containsInput { + label {Containing:} + xywh {75 10 370 23} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + extra_code {o->parent()->resizable(o);} + } + Fl_Group {} {open + xywh {75 35 370 25} + } { + Fl_Check_Button caseSensitiveCheck { + label {Case sensitive} + xywh {0 0 140 25} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + Fl_Check_Button useRegexpCheck { + label {Extended regexp} + xywh {140 0 230 25} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + } + } + Fl_Box {} { + xywh {7 206 455 2} + extra_code {o->parent()->resizable(o);} + } + } + Fl_Group {} { + label {Filter options} open + xywh {1 23 471 211} hide + } { + Fl_Group {} { + label Considerations open + xywh {7 20 459 32} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + } { + Fl_Choice fileTypeBrowser { + label {File type:} + xywh {70 5 145 23} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + extra_code {\#include +o->parent()->resizable(o); + +o->value("Any kind");} + class Fl_Input_Browser + } { + Fl_Item {} { + label {Any kind} + } + Fl_Item {} { + label Regular + } + Fl_Item {} { + label Directory + } + Fl_Item {} { + label Symlink + } + Fl_Item {} { + label Socket + } + Fl_Item {} { + label {Block device} + } + Fl_Item {} { + label {Character device} + } + Fl_Item {} { + label FIFO + } + } + Fl_Check_Button stayOnSingleCheck { + label {Stay on single filesystem} + xywh {225 4 230 23} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP|FL_ALIGN_WRAP + } + } + Fl_Group {} {open + xywh {7 50 459 155} box ENGRAVED_BOX + extra_code {o->parent()->resizable(o);} + } { + Fl_Check_Button considerPermValue { + label Permissions + callback {if (considerPermValue->value()) + createPermWindow();} + xywh {5 5 115 25} + } + Fl_Check_Button considerUserValue { + label {User/group:} + callback {if (considerUserValue->value()) { + userGroup->activate(); +} +else { + userGroup->deactivate(); +}} + xywh {5 30 115 25} + } + Fl_Group userGroup {open + xywh {120 30 325 25} deactivate + } { + Fl_Choice userIdChoice { + label {User id:} open + xywh {70 2 72 20} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + extra_code {o->value("Anyone"); +jam("/etc/passwd", userIdChoice);} + class Fl_Input_Browser + } {} + Fl_Choice groupIdChoice { + label {Group id:} + xywh {240 2 72 20} align FL_ALIGN_LEFT|FL_ALIGN_WRAP + extra_code {o->value("Anyone"); +jam("/etc/group", groupIdChoice);} + class Fl_Input_Browser + } {} + } + Fl_Check_Button considerSizeValue { + label {Size:} + callback {if (considerSizeValue->value()) { + sizeGroup->activate(); +} +else { + sizeGroup->deactivate(); +}} + xywh {5 55 80 23} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + Fl_Group sizeGroup {open + xywh {85 55 360 25} deactivate box FLAT_BOX + } { + Fl_Value_Input sizeGValue { + label {greater than:} + xywh {90 2 70 20} step 1 + } + Fl_Value_Input sizeMValue { + label {and less than(KB):} + xywh {275 2 70 20} step 1 + } + } + Fl_Check_Button considerTimeValue { + label {Time:} + callback {if (considerTimeValue->value()) { + timeGroup1->activate(); + timeValue->activate(); + timeGroup2->activate(); +} +else { + timeGroup1->deactivate(); + timeValue->deactivate(); + timeGroup2->deactivate(); +}} + xywh {5 80 135 25} + } + Fl_Group timeGroup1 { + xywh {140 85 110 60} deactivate box FLAT_BOX + } { + Fl_Round_Button modifiedRadio { + label Modified + xywh {0 0 105 20} type RADIO + } + Fl_Round_Button changedRadio { + label Changed + xywh {0 20 105 20} type RADIO + } + Fl_Round_Button accessedRadio { + label Accessed + xywh {0 40 105 20} type RADIO + } + } + Fl_Group {} {open + xywh {255 90 80 60} + } { + Fl_Value_Input timeValue { + label {in previous:} + xywh {5 33 65 20} align FL_ALIGN_TOP|FL_ALIGN_LEFT|FL_ALIGN_CLIP|FL_ALIGN_WRAP deactivate maximum 100 step 1 + } + } + Fl_Group timeGroup2 {open + xywh {335 85 110 60} deactivate box FLAT_BOX + } { + Fl_Group {} {open + xywh {0 0 105 60} + } { + Fl_Round_Button minutesRadio { + label Minutes + xywh {0 0 105 15} type RADIO + } + Fl_Round_Button hoursRadio { + label Hours + xywh {0 15 105 15} type RADIO + } + Fl_Round_Button daysRadio { + label Days + xywh {0 30 105 15} type RADIO + } + Fl_Round_Button mounthsRadio { + label Mounths + xywh {0 45 105 15} type RADIO + } + } + } + Fl_Box {} { + xywh {440 5 10 145} + extra_code {o->parent()->resizable(o);} + } + } + } + Fl_Group {} { + label {Content options} + xywh {1 23 471 211} hide + } { + Fl_Group {} { + label {General considerations} open + xywh {7 20 459 185} align FL_ALIGN_TOP|FL_ALIGN_LEFT box ENGRAVED_BOX + extra_code {o->parent()->resizable(o);} + } { + Fl_Check_Button doNotLookIntoBinaryCheck { + label {Do not look into binary files} + xywh {15 10 270 23} value 1 + } + Fl_Check_Button outputCountCheck { + label {Output count of matching lines} + xywh {15 37 270 23} value 1 + } + Fl_Round_Button matchAnywhereRadio { + label {Match anywhere} + xywh {15 72 255 20} type RADIO value 1 + } + Fl_Round_Button matchWordsRadio { + label {Match whole words only} + xywh {15 95 255 20} type RADIO + } + Fl_Round_Button matchLinesRadio { + label {Match whole lines only} + xywh {15 118 255 20} type RADIO + } + Fl_Round_Button invertMatchRadio { + label {Output files where no match is found} + xywh {15 141 255 20} type RADIO + } + Fl_Box {} { + xywh {285 10 160 165} + extra_code {o->parent()->resizable(o);} + } + } + } + Fl_Group {} { + label About open + xywh {1 23 471 211} + } { + Fl_Box {} { + label {(C) Copyright 2000-2005. EDE Authors. + + Efinder is using the code from xfglob which is + (C) Copyright 2000-2001 by Edscott Wilson Garcia.} selected + xywh {21 32 424 135} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + } + } + Fl_Browser searchList {open + xywh {3 245 473 85} align FL_ALIGN_TOP|FL_ALIGN_LEFT resizable + extra_code {\#include +\#include +\#include +searchList->type(searchList->type() | Fl_ListView::MULTI_SELECTION); +searchList->add_column(_("Filename"), 200); +searchList->add_column(_("Size"), 79); +searchList->add_column(_("Last modified"), 125); +searchList->add_column(_("Rights"), 65); +searchList->column_flags(0, FL_ALIGN_LEFT); +searchList->column_flags(1, FL_ALIGN_CENTER); +searchList->column_flags(2, FL_ALIGN_CENTER); +searchList->column_flags(3, FL_ALIGN_RIGHT);} + class Fl_ListView + } {} + Fl_Box statusLine { + xywh {3 362 473 20} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE when CHANGED box THIN_DOWN_BOX + } + Fl_Group {} {open + xywh {3 330 473 30} + } { + Fl_Button searchButton { + label {&Find} + callback {findCB();} + tooltip {Start the searching.} + xywh {222 3 80 25} shortcut 0xff0d + } + Fl_Button {} { + label {&Cancel} + callback {exit(0);} + xywh {392 3 80 25} + } + Fl_Button stopButton { + label {&Stop} + callback {stopSearch();} + tooltip {Stop the searching.} + xywh {307 3 80 25} + } + Fl_Box {} { + xywh {7 5 210 20} + extra_code {o->parent()->resizable(o);} + } + } + } + code {findWindow->end(); +findWindow->show();} {} +} diff --git a/efinder/efinder.h b/efinder/efinder.h new file mode 100755 index 0000000..524131f --- /dev/null +++ b/efinder/efinder.h @@ -0,0 +1,69 @@ +// generated by Extended Fast Light User Interface Designer (eFluid) version 2.0003 + +#ifndef _EFINDER_H_ +#define _EFINDER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern Fl_Window* permWindow; +extern Fl_Window* findWindow; +extern Fl_Input* pathInput; +extern Fl_Input* filterInput; +extern Fl_Check_Button* recursiveCheck; +extern Fl_Value_Input* fileLimitValue; +extern Fl_Input* containsInput; +extern Fl_Check_Button* caseSensitiveCheck; +extern Fl_Check_Button* useRegexpCheck; +extern Fl_Input_Browser* fileTypeBrowser; +extern Fl_Check_Button* stayOnSingleCheck; +extern Fl_Check_Button* considerPermValue; +extern Fl_Check_Button* considerUserValue; +extern Fl_Group* userGroup; +extern Fl_Input_Browser* userIdChoice; +extern Fl_Input_Browser* groupIdChoice; +extern Fl_Check_Button* considerSizeValue; +extern Fl_Group* sizeGroup; +extern Fl_Value_Input* sizeGValue; +extern Fl_Value_Input* sizeMValue; +extern Fl_Check_Button* considerTimeValue; +extern Fl_Group* timeGroup1; +extern Fl_Round_Button* modifiedRadio; +extern Fl_Round_Button* changedRadio; +extern Fl_Round_Button* accessedRadio; +extern Fl_Value_Input* timeValue; +extern Fl_Group* timeGroup2; +extern Fl_Round_Button* minutesRadio; +extern Fl_Round_Button* hoursRadio; +extern Fl_Round_Button* daysRadio; +extern Fl_Round_Button* mounthsRadio; +extern Fl_Check_Button* doNotLookIntoBinaryCheck; +extern Fl_Check_Button* outputCountCheck; +extern Fl_Round_Button* matchAnywhereRadio; +extern Fl_Round_Button* matchWordsRadio; +extern Fl_Round_Button* matchLinesRadio; +extern Fl_Round_Button* invertMatchRadio; +extern Fl_ListView* searchList; +extern Fl_Box* statusLine; +extern Fl_Button* searchButton; +extern Fl_Button* stopButton; + +void createPermWindow(); +void createFindWindow(); + +#endif diff --git a/efinder/eglob.cpp b/efinder/eglob.cpp new file mode 100755 index 0000000..40f197b --- /dev/null +++ b/efinder/eglob.cpp @@ -0,0 +1,622 @@ +// eglob.cpp +// +// glob for xfce Copyright 2000-2001 Edscott Wilson Garcia +// Copyright (C) 2001-2002 Martin Pekar +// +// +// 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; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include "efinder.h" +#include "eglob.h" + +#include "icons/block_dev.xpm" +#include "icons/char_dev.xpm" +#include "icons/dir_close.xpm" +#include "icons/exe.xpm" +#include "icons/sexe.xpm" +#include "icons/fifo.xpm" +#include "icons/page.xpm" +#include "icons/page_lnk.xpm" +#include "icons/socket.xpm" + +#define GLOB "glob" +#define TRUE 1 +#define FALSE 0 +#define MAX_ARG 50 + +static int considerTime = FALSE, considerSize = FALSE, +considerUser = FALSE, considerPerm = FALSE, cancelled = FALSE; +static int pfd[2]; /* the pipe */ +static pid_t Gpid; /* glob pid, to be able to cancel search */ +static short int findCount; /* how many files found */ +static short int fileLimit = 64; +static int type=0x0; + +static Fl_Image block_dev_pix = *Fl_Image::read_xpm(0, (const char **)block_dev_xpm); +static Fl_Image char_dev_pix = *Fl_Image::read_xpm(0, (const char **)char_dev_xpm); +static Fl_Image dir_close_pix = *Fl_Image::read_xpm(0, (const char **)dir_close_xpm); +static Fl_Image exe_pix = *Fl_Image::read_xpm(0, (const char **)exe_xpm); +static Fl_Image sexe_pix = *Fl_Image::read_xpm(0, (const char **)sexe_xpm); +static Fl_Image fifo_pix = *Fl_Image::read_xpm(0, (const char **)fifo_xpm); +static Fl_Image page_pix = *Fl_Image::read_xpm(0, (const char **)page_xpm); +static Fl_Image page_lnk_pix = *Fl_Image::read_xpm(0, (const char **)page_lnk_xpm); +static Fl_Image socket_pix = *Fl_Image::read_xpm(0, (const char **)socket_xpm); + +static char *ftypes[9] = +{ + "Any kind", + "Regular", + "Directory", + "Symlink", + "Socket", + "Block device", + "Character device", + "FIFO", + NULL +}; + +static char *ft[] = +{ + "any", + "reg", + "dir", + "sym", + "sock", + "blk", + "chr", + "fifo", + NULL +}; + +void +jam(char *file, Fl_Menu_ *optmenu) +{ + FILE *archie; + char line[256]; + char *s,*r,*t = "Anyone"; + + archie=fopen(file,"r"); + if (archie==NULL) return; + + optmenu->add("Anyone"); + + while (!feof(archie) && (fgets(line,255,archie))) + { + if (feof(archie)) break; + line[255]=0; + if ((line[0]=='#')||(strchr(line,':')==NULL)) continue; + r=strtok(line,":"); if (!r) continue; + s=strchr(r+strlen(r)+1,':')+1;if (!s) continue; + s=strtok(s,":");if (!s) continue; + t=(char *)malloc(strlen(s)+1); + strcpy(t,s); + optmenu->add(r); + } + fclose(archie); + return; +} + + +void +toggle_permission(long data) +{ + int flag; + flag = (int ) ((long)data); + type ^= (flag&07777); +} + + +static void +abort_glob() +{ + if (Gpid) + { + kill (Gpid, SIGKILL); //agressive + } +} + + +static void +abort_glob1() +{ + if (Gpid) + { + kill (Gpid, SIGTERM); // nonagressive + } +} + + +void +GlobWait(void *data) +{ + int status; + int childPID; + childPID = (int) ((long)data); + //fprintf(stderr,"waiting\n"); + waitpid (childPID, &status, WNOHANG); + if (WIFEXITED (status)) + { + //fprintf(stderr,"waiting done\n"); + return; + } + Fl::add_timeout(2, GlobWait, (void*)childPID); + return; +} + + +void +findCB() +{ + char *argument[MAX_ARG]; + char sizeG_s[64], sizeM_s[64], hours_s[64], permS[64]; + char *path, *filter, *token, *s; + int i, j, sizeG, sizeM, hours; + int childPID; + + cancelled = FALSE; + + if (Gpid) + { + kill (Gpid, SIGHUP); + Gpid = 0; + } + + searchList->clear(); + + findCount = 0; + fileLimit = (int) fileLimitValue->value(); + path = (char*) pathInput->value(); + + if (strlen(path)==0) + path = "/"; + if (path[strlen(path)-1]=='~') + path = "~/"; //tilde expansion + + if (path[0]=='$') //environment variables + { + path=getenv(path+1); + if (path==NULL) + path="/"; + } + + filter = (char*) filterInput->value(); + token = (char*) containsInput->value(); + considerTime = considerTimeValue->value(); + considerSize = considerSizeValue->value(); + considerUser = considerUserValue->value(); + considerPerm = considerPermValue->value(); + + if (considerSize) + { + sizeG = (int)sizeGValue->value(); + sizeM = (int)sizeMValue->value(); + if ((sizeM <= sizeG)&&(sizeM > 0)) + { + fl_alert("Incoherent size considerations!"); + return; + } + } + else + sizeG = sizeM = 0; + + if (considerTime) + { + hours = (int)timeValue->value(); + } + else + hours = 0; + + //s = (char*) fileTypeBrowser->text(fileTypeBrowser->value()); + s = (char*) fileTypeBrowser->value(); + + for (j = -1, i = 0; ftypes[i] != NULL; i++) + { + if (strcmp (s, ftypes[i]) == 0) + { + j = i; + break; + } + } + + if (j < 0) + s = ftypes[0]; + i = 0; + argument[i++] = GLOB; + + //argument[i++] = "-v"; (verbose output from glob for debugging) + argument[i++] = "-P"; + + if (doNotLookIntoBinaryCheck->value()) + argument[i++] = "-I"; + + if (recursiveCheck->value()) + argument[i++] = "-r"; + + if (considerPerm) + { + argument[i++] = "-o"; + snprintf(permS, sizeof(permS)-1, "0%o",type&07777); + argument[i++] = permS; + } + + if (caseSensitiveCheck->value()) + argument[i++] = "-i"; + + if (outputCountCheck->value()) + argument[i++] = "-c"; + + if (invertMatchRadio->value()) + argument[i++] = "-L"; + + if (matchWordsRadio->value()) + argument[i++] = "-w"; + else + { + if (matchLinesRadio->value()) + argument[i++] = "-x"; + } + if (j > 0) + { + argument[i++] = "-t"; + argument[i++] = ft[j]; + } + + if (considerTime) + { + if (modifiedRadio->value()) argument[i++] = "-M"; + if (accessedRadio->value()) argument[i++] = "-A"; + if (changedRadio->value()) argument[i++] = "-C"; + if (hours > 0) + { + if (minutesRadio->value()) argument[i++] = "-k"; + if (hoursRadio->value()) argument[i++] = "-h"; + if (daysRadio->value()) argument[i++] = "-d"; + if (mounthsRadio->value()) argument[i++] = "-m"; + + snprintf (hours_s, sizeof(hours_s)-1, "%d", hours); + argument[i++] = hours_s; + } + } + + if (considerSize) + { + if (sizeG > 0) + { + argument[i++] = "-s"; + snprintf (sizeG_s, sizeof(sizeG_s)-1, "+%d", sizeG); + argument[i++] = sizeG_s; + } + if (sizeM > 0) + { + argument[i++] = "-s"; + snprintf (sizeM_s, sizeof(sizeM_s)-1, "-%d", sizeM); + argument[i++] = sizeM_s; + } + } + + if (stayOnSingleCheck->value()) + argument[i++] = "-a"; + + if (considerUser) + { + if (userIdChoice->value()) + { + argument[i++] = "-u"; + //argument[i++] = (char*)userIdChoice->text(userIdChoice->value()); + argument[i++] = (char*)userIdChoice->value(); + } + if (groupIdChoice->value()) + { + argument[i++] = "-g"; + //argument[i++] = (char*)groupIdChoice->text(groupIdChoice->value()); + argument[i++] = (char*)groupIdChoice->value(); + } + } + + if (strlen(filter) > 0) //don't apply filter if not specified and path is absolute!! + { + argument[i++] = "-f"; + argument[i++] = filter; + } + else + { + if (path[strlen (path) - 1] == '/') + { + argument[i++] = "-f"; + argument[i++] = "*"; + } + else + { + struct stat st; + if (stat (path, &st) == 0) + { + if (S_ISDIR (st.st_mode)) + { + argument[i++] = "-f"; + argument[i++] = "*"; + } + } + } + } + + if (strlen(token) > 0) //search token in files + { + if (useRegexpCheck->value()) + argument[i++] = "-E"; + else + argument[i++] = "-e"; + argument[i++] = token; + } + + argument[i++] = path; // last argument must be the path + argument[i] = (char *) 0; + //for (j=0;j= fileLimit) + fl_message(_("Interrupted because maximum limit exceded.")); + fl_alert(mess); + } + return; + } + + if ((strncmp (line, "PID=", 4) == 0)) + { + Gpid = atoi (line + 4); + //printf("Glob PID=%d\n",Gpid); + // fflush(NULL); + nothing_found = TRUE; + return; + } + if (cancelled) + return; + + if (line[0] == '/') /* strstr for : and strtok and send to cuenta */ + { + if (findCount >= fileLimit) + abort_glob1(); + else + { + char *path, *linecount = NULL, *textos[6], cuenta[32], + sizeF[64], permF[16]; + struct stat st; + int *data; + + path = line; + char *ptr = path; + while(*ptr) { if(*ptr=='\n') *ptr='\0'; ptr++; } + statusLine->copy_label(fl_trim(path)); + statusLine->redraw(); + + if (strstr(path, ":")) + { + path = strtok(path, ":"); + linecount = strtok (NULL, ":"); + if (strcmp(linecount, "0") == 0) + { + linecount = NULL; + return; + } + } + + findCount++; + data=(int *)malloc(3*sizeof(int)); + data[0]=findCount; + data[1]=data[2]=0; + + if (linecount) + snprintf(cuenta, sizeof(cuenta)-1, "%d (%s %s)", findCount, linecount, "lines"); + else + snprintf (cuenta, sizeof(cuenta)-1, "%d", findCount); + + textos[0] = cuenta; + textos[1] = filename = (char*)fl_file_filename(path); + textos[2] = path; + + Fl_Image *resultImage=0; + + if (lstat (path, &st) == 0) + { + data[1]=st.st_size; + data[2]=st.st_ctime; + + snprintf (sizeF, sizeof(sizeF)-1,"%ld", st.st_size); + snprintf (permF, sizeof(permF)-1,"0%o", st.st_mode & 07777); + textos[3] = sizeF; + textos[4] = ctime (&(st.st_ctime)); + textos[5] = permF; + + if (S_ISREG (st.st_mode)) + { + resultImage = &page_pix; + } + if ((st.st_mode & 0100) || (st.st_mode & 010) + || (st.st_mode & 01)) + { + resultImage = &exe_pix; + } + if (st.st_mode & 04000) + { + resultImage = &sexe_pix; + } + if (S_ISDIR (st.st_mode)) + { + resultImage = &dir_close_pix; + } + if (S_ISCHR (st.st_mode)) + { + resultImage = &char_dev_pix; + } + if (S_ISBLK (st.st_mode)) + { + resultImage = &block_dev_pix; + } + if (S_ISFIFO (st.st_mode)) + { + resultImage = &fifo_pix; + } + if (S_ISLNK (st.st_mode)) + { + resultImage = &page_lnk_pix; + } + if (S_ISSOCK (st.st_mode)) + { + resultImage = &socket_pix; + } + } + else + { + textos[2] = textos[3] = textos[4] = "-"; + } + { + // leave just directory + *(strrchr(path,'/'))=0; + if (!strlen(path)) + textos[2]="/"; + char output[FL_PATH_MAX]; + snprintf(output, sizeof(output)-1, "%s/%s", textos[2], textos[1]); + searchList->begin(); + Fl_ListView_Item *resultItem = new Fl_ListView_Item(); + + // Copy labels, so item destructor knows to de-allocate them + resultItem->copy_label(0, output); + resultItem->copy_label(1, textos[3]); + resultItem->copy_label(2, textos[4]); + resultItem->copy_label(3, textos[5]); + + resultItem->image(resultImage); + searchList->end(); + searchList->relayout(); + searchList->redraw(); + } + } + } + //else {} + nothing_found = FALSE; + buffer = line; + return; ; /* continue here causes main loop blocking */ + } + buffer++; + } + return; +} + +int main (int argc, char **argv) +{ + fl_init_locale_support("efinder", PREFIX"/share/locale"); + + if (pipe (pfd) < 0) + { + perror ("pipe"); + return 1; + } + + createFindWindow(); + + Fl::add_fd(pfd[0], FL_READ, process_find_messages, (void*)pfd[0]); + + Fl::run(); + + close(pfd[0]); + close(pfd[1]); + + return 0; +} diff --git a/efinder/eglob.h b/efinder/eglob.h new file mode 100755 index 0000000..a44714d --- /dev/null +++ b/efinder/eglob.h @@ -0,0 +1,44 @@ +// eglob.h +// +// Copyright 2000-2001 Edscott Wilson Garcia +// Copyright (C) 2001-2002 Martin Pekar +// +// 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; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +#ifndef EGLOB_H_ +#define EGLOB_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +int process_find_messages(); +void jam(char *file, Fl_Menu_ *); +void findCB(); +void stopSearch(); +void toggle_permission(long); + +#endif + diff --git a/efinder/glob.c b/efinder/glob.c new file mode 100755 index 0000000..e05f82f --- /dev/null +++ b/efinder/glob.c @@ -0,0 +1,504 @@ + +/* glob.c file filter for grep.*/ +/* + Copyright 2000 Edscott Wilson Garcia + + 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, 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; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +/*****************************************************************/ + +#include "globber.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_SNPRINTF +# include "snprintf.h" +#endif + +#ifdef DMALLOC +# include "dmalloc.h" +#endif + +/** tripas */ +#define VERSION_NAME "\nglob 0.5.0\n\nCopyright 2000-2001 Edscott Wilson Garcia\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" + +#define GREP "grep" + +static void *object=NULL; +static int initial; +static int terminated = 0; +static char *token; +static int options=0,type=0; +static long size=0; +static long month_t=0; +static long unsigned day_t=0; +static long unsigned hour_t=0; +static long unsigned min_t=0; + +#define GLOBRUN_PID 0x01 +#define GLOBRUN_COUNT 0x02 +#define GLOBRUN_FILTERED 0x04 +#define GLOBRUN_IGNORE_CASE 0x08 +#define GLOBRUN_REG_EXP 0x10 +#define GLOBRUN_INVERT 0x20 +/*#define GLOBRUN_WHATEVER 0x40*/ +#define GLOBRUN_WORDS_ONLY 0x80 +#define GLOBRUN_LINES_ONLY 0x100 +#define GLOBRUN_ZERO_BYTE 0x200 +#define GLOBRUN_NOBINARIES 0x400 +#define GLOBRUN_RECURSIVE 0x800 +#define GLOBRUN_VERBOSE 0x1000 +#define GLOBRUN_XDEV 0x2000 + +#define MAX_ARG 25 + +static int display (char *input) +{ + if (terminated) return terminated; /* die quietly and quickly */ + printf ("%s\n", input); + if (time (NULL) - initial > 3) { + fflush (NULL); + initial = time (NULL); + } + return terminated; +} + +static int grep (char *file) +{ + static char *arguments[MAX_ARG]; + int status = 0; + if (terminated) return terminated; /* die quietly and quickly */ + + arguments[status++] = "grep"; + arguments[status++] = "-d"; + arguments[status++] = "skip"; + arguments[status++] = "-H"; + if (options & GLOBRUN_NOBINARIES) + arguments[status++] = "-I"; + if (options & GLOBRUN_IGNORE_CASE) + arguments[status++] = "-i"; + if (options & GLOBRUN_WORDS_ONLY) + arguments[status++] = "-w"; + if (options & GLOBRUN_LINES_ONLY) + arguments[status++] = "-x"; + if (options & GLOBRUN_ZERO_BYTE) + arguments[status++] = "-Z"; + + if ((options & GLOBRUN_COUNT) && (options & GLOBRUN_INVERT)) + { + arguments[status++] = "-c"; + arguments[status++] = "-v"; + } + if ((options & GLOBRUN_COUNT) && !(options & GLOBRUN_INVERT)) + { + arguments[status++] = "-c"; + } + if (!(options & GLOBRUN_COUNT) && (options & GLOBRUN_INVERT)) + { + arguments[status++] = "-L"; + } + if (!(options & GLOBRUN_COUNT) && !(options & GLOBRUN_INVERT)) + { + arguments[status++] = "-l"; + } + + if (options & GLOBRUN_REG_EXP) + arguments[status++] = "-E"; + else + arguments[status++] = "-e"; + arguments[status++] = token; + + arguments[status++] = file; + arguments[status++] = (char *) 0; + if (options & GLOBRUN_VERBOSE) + { + int i; + for (i = 0; i < status; i++) + printf ("%s ", arguments[i]); + printf ("\n"); + } + + if (fork () == 0){ + execvp (GREP, arguments); + fprintf(stderr,"%s not found in path!\n",GREP); + exit(1); + } + wait (&status); + + /*fflush(NULL); */ + return terminated; +} + + +static char *message[] = { + " [-vVPrMACaiIyLcwxZ] [-fpotkhsmudgeE (option)] path \n\n", + "options: \n" + " [-r] [-v] [-d ddd] [-m mmm] [-f filter] [-s (+/-)size]\n", + " [-t type] [-p perm] [grep options...] \n", + "-v = verbose\n", + "-V = print version number information\n", + "-a = stay on a single filesystem.\n", + "-P = print process id (capital P)\n", + "-f filter = file filter (enclosed in quotes if regexp *,? or\n", + " [] is used)\n", + "-r = recursive\n", + "-s +kbytes = size greater than kbytes KBYTES\n", + "-s -kbytes = size less than kbytes KBYTES\n", + "-p perm = perm is either suid | exe\n", + "-o octal_mode = octal mode is the file mode in octal notation\n", + "-t type = any | reg | dir | sym | sock | blk | chr | fifo\n", + " (any, regular, directory, symlink, socket, blk_dev,\n", + " chr_dev, fifo: any is the default.)\n", + " * Time options must be used with either -M, -C, or -A.\n" + "-k min = file time in the previous (int) min minutes (either -M -C -A)\n", + "-h hhh = file time in the previous (int) hh hours (either -M -C -A)\n", + "-d ddd = file time in the previous (int) dd days (either -M -C -A)\n", + "-m mmm = file time in the previous (int) mm months (either -M -C -A)\n", + "-M = use mtime for file (modification time: mknod, truncate,\n", + " utime,write \n", + "-A = use atime for file (access time: exec, mknod, pipe,\n", + " utime, read) \n", + "-C = use ctime for file (change time: setting inode information\n", + " i.e., owner, group, link count, mode, etc.) \n", + "-u user-id = only files matching numeric user-id\n", + "-g group-id = only files matching numeric group-id\n", + "-Z = Output a zero byte (the ASCII NUL character)\n", + " instead of the character that normally follows a\n", + " file name (never tested option, if you do, email me)\n", + "\n", + "**specifying these option will be used in content search (grep):\n", + "-e string = containing string (if *,? or [], use quotes)\n", + "-E regexp = containing regexp: (use quotes amigo). \n", + "-i = ignore case (for search string -c)\n", + "-I = do not search into binary files\n", + "-y = same as -i (obsolete)\n", + "-L = print the name of each input file from which *no*\n", + " output would normally have been printed.\n", + "-c = only print a count of matching lines for each input\n", + " file.\n", + "-w = Select only those lines containing matches that\n", + " form whole words. Word-constituent characters are\n", + " letters, digits, and the underscore.\n", + "-x = Select only those matches that exactly match the\n", + " whole line.\n", + "\n", + NULL +}; + +void +finish (int sig) +{ + /*printf("\n****\nglob terminated by signal\n****\n"); */ + terminated = 1; + fflush (NULL); +} + +void +halt (int sig) +{ + fflush (NULL); + globber_destroy(object); + exit (1); +} + + +#define CHECK_ARG if (argc <= i) goto error; +int +main (int argc, char **argv) +{ + int i,timetype=0; + char *filter = NULL, globbered = 0; + int (*operate) (char *) = display; + initial = time (NULL); + + /* initializations */ + signal (SIGHUP, halt); + signal (SIGSEGV, finish); + signal (SIGKILL, finish); + signal (SIGTERM, finish); + + + if (argc < 2) + { + error: + fprintf (stdout, "use: %s ", argv[0]); + i = 0; + while (message[i]) + fprintf (stdout,"%s", message[i++]); + exit (1); + } + object=globber_create(); + for (i = 1; i < argc; i++) + { + if (argv[i][0] == '-') + { + /* options for the globber : *****************/ + if (strstr (argv[i], "M") != NULL) + { + timetype=1; + glob_set_options(object,GLOBBER_MTIME); + continue; + } + if (strstr (argv[i], "A") != NULL) + { + timetype=1; + glob_set_options(object,GLOBBER_ATIME); + continue; + } + if (strstr (argv[i], "C") != NULL) + { + timetype=1; + glob_set_options(object,GLOBBER_CTIME); + continue; + } + if (strstr (argv[i], "a") != NULL) + { + glob_set_options(object,GLOBBER_XDEV); + options |= GLOBRUN_XDEV; + continue; + } + if (strstr (argv[i], "v") != NULL) + { + glob_set_options(object,GLOBBER_VERBOSE); + options |= GLOBRUN_VERBOSE; + continue; + } + if (strstr (argv[i], "r") != NULL) + { + glob_set_options(object,GLOBBER_RECURSIVE); + options |= GLOBRUN_RECURSIVE; + continue; + } + if (strstr (argv[i], "u") != NULL) + { + i++; + CHECK_ARG; + glob_set_user(object,atol(argv[i])); + continue; + } + if (strstr (argv[i], "g") != NULL) + { + i++; + CHECK_ARG; + glob_set_group(object,atol(argv[i])); + continue; + } + + + if (strstr (argv[i], "t") != NULL) + { + i++; + type &= 07777; + CHECK_ARG; + /*if (strcmp (argv[i], "any") == 0) type &= 07777;*/ + if (strcmp (argv[i], "reg") == 0) type |= S_IFREG; + if (strcmp (argv[i], "dir") == 0) type |= S_IFDIR; + if (strcmp (argv[i], "sym") == 0) type |= S_IFLNK; + if (strcmp (argv[i], "sock") == 0)type |= S_IFSOCK; + if (strcmp (argv[i], "blk") == 0) type |= S_IFBLK; + if (strcmp (argv[i], "chr") == 0) type |= S_IFCHR; + if (strcmp (argv[i], "fifo") == 0)type |= S_IFIFO; + if (strcmp (argv[i], "any") != 0) { + glob_set_options(object,GLOBBER_TYPE); + glob_set_type(object,type); + } + continue; + } + if (strstr (argv[i], "p") != NULL) + { + i++; + /*type &= S_IFMT;*/ + CHECK_ARG; + if (strcmp (argv[i], "suid") == 0) + type |= S_ISUID; + if (strcmp (argv[i], "exe") == 0) + type |= S_IXUSR; + glob_set_options(object,GLOBBER_PERM); + glob_set_type(object,type); + continue; + } + if (strstr (argv[i], "o") != NULL) + { + int valor; + i++; + type &= S_IFMT; + CHECK_ARG; + sscanf(argv[i],"%o",&valor); + type |= (07777&valor); + glob_set_options(object,GLOBBER_PERM); + glob_set_type(object,type); + continue; + } + + if (strstr (argv[i], "s") != NULL) + { + i++; + CHECK_ARG; + size = atol (argv[i]); + if (size < 0) glob_set_sizeL(object,-size*1024); + else glob_set_sizeG(object,size*1024); + continue; + } + + if (strstr (argv[i], "k") != NULL) + { + i++; + CHECK_ARG; + min_t = atol (argv[i]); + glob_set_time(object,month_t,day_t,hour_t,min_t); + continue; + } + if (strstr (argv[i], "h") != NULL) + { + i++; + CHECK_ARG; + hour_t = atol (argv[i]); + glob_set_time(object,month_t,day_t,hour_t,min_t); + continue; + } + if (strstr (argv[i], "d") != NULL) + { + i++; + CHECK_ARG; + day_t = atol (argv[i]); + glob_set_time(object,month_t,day_t,hour_t,min_t); + continue; + } + if (strstr (argv[i], "m") != NULL) + { + CHECK_ARG; + month_t = atol (argv[i]); + glob_set_time(object,month_t,day_t,hour_t,min_t); + continue; + } + + + if (strstr (argv[i], "f") != NULL) + { + options |= GLOBRUN_FILTERED; + i++; + CHECK_ARG; + filter = argv[i]; + if (options & GLOBRUN_VERBOSE) + fprintf (stderr, "filtering %s\n", filter); + continue; + } + /* options for grep : *******************/ + if (strstr (argv[i], "I") != NULL) + { + options |= GLOBRUN_NOBINARIES; + continue; + } + if ((strstr (argv[i], "i") != NULL)||(strstr (argv[i], "y") != NULL)) + { + options |= GLOBRUN_IGNORE_CASE; + continue; + } + if (strstr (argv[i], "L") != NULL) + { + options |= GLOBRUN_INVERT; + continue; + } + if (strstr (argv[i], "c") != NULL) + { + options |= GLOBRUN_COUNT; + continue; + } + if (strstr (argv[i], "w") != NULL) + { + options |= GLOBRUN_WORDS_ONLY; + continue; + } + if (strstr (argv[i], "x") != NULL) + { + options |= GLOBRUN_LINES_ONLY; + continue; + } + if (strstr (argv[i], "Z") != NULL) + { + options |= GLOBRUN_ZERO_BYTE; + continue; + } + if (strstr (argv[i], "P") != NULL) + { + options |= GLOBRUN_PID; + printf ("PID=%d\n", (int) getpid ()); + fflush (NULL); + continue; + } + if (strstr (argv[i], "E") != NULL) + { + i++; + CHECK_ARG; + token = argv[i]; + operate = grep; + options |= GLOBRUN_REG_EXP; + continue; + } + if (strstr (argv[i], "e") != NULL) + { + i++; + CHECK_ARG; + token = argv[i]; + operate = grep; + options |= GLOBRUN_REG_EXP; + options ^= GLOBRUN_REG_EXP; /* turn off extended regexp */ + continue; + } + + if (strstr (argv[i], "V") != NULL) + { + printf ("%s", VERSION_NAME); + return 0; + } + fprintf(stdout,"unknown argument: %s\nuse -h for help.\n",argv[i]); + exit(1); + } + if (((min_t)||(hour_t)||(day_t)||(month_t))&& !timetype) + glob_set_options(object,GLOBBER_MTIME); + terminated = globber (object,argv[i], operate, filter); + globbered = 1; + } /* end of argument processing */ + + + if (!globbered) + { + fprintf (stderr, "must specify path\n"); + goto error; + } +/* if (terminated) printf("glob run was terminated.\n");*/ + if (!terminated) + { /* die quietly and quickly */ + if (options & GLOBRUN_PID) + printf ("GLOB DONE=%d\n", (int) getpid ()); + } + fflush (NULL); + globber_destroy(object); + exit (0); +} diff --git a/efinder/globber.c b/efinder/globber.c new file mode 100755 index 0000000..bb9e5ad --- /dev/null +++ b/efinder/globber.c @@ -0,0 +1,304 @@ + +/* globber.c */ +/* + Copyright 2000-2001 Edscott Wilson Garcia + + 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, 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; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +/*****************************************************************/ + +#include "globber.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_SNPRINTF +# include "snprintf.h" +#endif + +#ifdef DMALLOC +# include "dmalloc.h" +#endif + +/** tripas **/ +/* private */ +#ifndef GLOB_TILDE +#define GLOB_TILDE 0x0 +#endif +#ifndef GLOB_ONLYDIR +#define GLOB_ONLYDIR 0x0 +#endif + +#define MONTH_T 2628000 +#define DAY_T 86400 +#define HOUR_T 3600 +#define MIN_T 60 + +typedef struct objeto_globber { + int options; + int type; + int user; + int group; + long unsigned sizeG; + long unsigned sizeL; + long unsigned month_t; + long unsigned day_t; + long unsigned hour_t; + long unsigned min_t; +/* private variables, not to be duplicated on recursion: */ + struct stat *stinit; + struct stat st; + int pass; + time_t tiempo; + time_t actual; + int dostat; +} objeto_globber; + + +static int display(char *input){ + printf("%s\n",input); /*fflush(NULL);*/ + return 0; +} + +#define DO_CHECK_PARAM if (!address) return 0; else objeto = (objeto_globber *)address; +/* public */ +int glob_clear_options(void *address){ + objeto_globber *objeto; + DO_CHECK_PARAM; + objeto->stinit=NULL; + objeto->user=-1, + objeto->group=-1, + objeto->options=0x0, + objeto->sizeG=0x0, + objeto->sizeL=0x0, + objeto->type=0x0, + objeto->month_t=0x0, + objeto->day_t=0x0, + objeto->hour_t=0x0; + objeto->min_t=0x0; + objeto->pass=0x0; + objeto->dostat=0x0; + return 1; +} + +void *globber_create(void){ + objeto_globber *objeto; + objeto=(objeto_globber *)malloc(sizeof(objeto_globber)); + glob_clear_options((void *)objeto); + return (void *)objeto; +} + +void *globber_destroy(void *address){ + objeto_globber *objeto; + DO_CHECK_PARAM; + if (address) free(address); + if (objeto->stinit) free(objeto->stinit); + return NULL; +} + +int glob_set_options(void *address,int options){ + objeto_globber *objeto; + DO_CHECK_PARAM; + objeto->options |= options; + return 1; +} + +int glob_set_type(void *address,int type){ + objeto_globber *objeto; + DO_CHECK_PARAM; + objeto->type=type; + return 1; +} + +int glob_set_sizeG(void *address,long unsigned size){ + objeto_globber *objeto; + DO_CHECK_PARAM; + glob_set_options(objeto,GLOBBER_SIZE); + objeto->sizeG=size; + return 1; +} +int glob_set_sizeL(void *address,long unsigned size){ + objeto_globber *objeto; + DO_CHECK_PARAM; + objeto->sizeL=size; + return 1; +} +int glob_set_user(void *address,int user){ + objeto_globber *objeto; + DO_CHECK_PARAM; + glob_set_options(objeto,GLOBBER_USER); + objeto->user=user; + return 1; +} +int glob_set_group(void *address,int group){ + objeto_globber *objeto; + DO_CHECK_PARAM; + glob_set_options(objeto,GLOBBER_GROUP); + objeto->group=group; + return 1; +} + + +int glob_set_time(void *address,long unsigned month_t,long unsigned day_t, + long unsigned hour_t,long unsigned min_t){ + objeto_globber *objeto; + DO_CHECK_PARAM; + objeto->month_t=month_t; + objeto->day_t=day_t; + objeto->hour_t=hour_t; + objeto->min_t=min_t; + return 1; +} + + +/* if the user defined "operate" function returns TRUE, Globber will exit + * and return to calling module with the same return value */ + + +int globber(void *address,char *path,int (*operate)(char *),char *filter) { + /* these variables must be kept on the heap */ + glob_t dirlist; + int i; + char *globstring; + objeto_globber *object; + + if (!address) object= (objeto_globber *)globber_create(); + else object = (objeto_globber *)address; + + + if (object->options&GLOBBER_VERBOSE) fprintf(stderr,"path= %s\n",path); + if (object->options&GLOBBER_TIME) { + if (object->options&GLOBBER_MTIME) + object->options &=((GLOBBER_CTIME|GLOBBER_ATIME)^0xffffffff); + else if (object->options&GLOBBER_CTIME) + object->options &=(GLOBBER_ATIME^0xffffffff); + } + + dirlist.gl_offs=2; + if (!operate) operate=display; + + if (filter){ + globstring = (char *)malloc(strlen(path)+strlen(filter)+2); + strcpy(globstring,path); + if (path[strlen(path)-1]!='/') strcat(globstring,"/"); + strcat(globstring,filter); + } else globstring = path; + + if (glob(globstring,GLOB_ERR|GLOB_TILDE,NULL,&dirlist) != 0) { + if (object->options&GLOBBER_VERBOSE) fprintf(stderr,"%s: no match\n",globstring); + } + else for (i=0;ioptions&GLOBBER_STAT) { + lstat(dirlist.gl_pathv[i],&(object->st)); + if (object->options&GLOBBER_USER){ + if (object->user != object->st.st_uid) + continue; + } + if (object->options&GLOBBER_GROUP){ + if (object->group != object->st.st_gid) + continue; + } + if (object->options&GLOBBER_TIME){ + object->actual=time(NULL); + if (object->options&GLOBBER_MTIME) object->tiempo=object->st.st_mtime; + if (object->options&GLOBBER_ATIME) object->tiempo=object->st.st_atime; + if (object->options&GLOBBER_CTIME) object->tiempo=object->st.st_ctime; + if ((object->min_t > 0) && ((object->actual-object->tiempo)/MIN_T > object->min_t)) + continue; + if ((object->hour_t > 0) && ((object->actual-object->tiempo)/HOUR_T > object->hour_t)) + continue; + if ((object->day_t > 0) && ((object->actual-object->tiempo)/DAY_T > object->day_t)) + continue; + if ((object->month_t > 0) && ((object->actual-object->tiempo)/MONTH_T > object->month_t)) + continue; + } + if (object->options&GLOBBER_SIZE){ + if ((object->sizeL > 0)&&(object->st.st_size > object->sizeL)) + continue; + if (object->st.st_size < object->sizeG) + continue; + } + if (object->options&GLOBBER_PERM){ + if ((object->st.st_mode & 07777) & (object->type & 07777)); + else { + if ((object->st.st_mode & 07777)==(object->type & 07777)); + else continue; + } + } + + if (object->options&GLOBBER_TYPE) { + if ((object->st.st_mode & S_IFMT)!=(object->type & S_IFMT)) + continue; + } + } /* done lstat'ing */ + + if ((object->pass=(*(operate))(dirlist.gl_pathv[i]))!=0) break; + } + if (filter) free(globstring); + globfree(&dirlist); + if (object->pass) { + if (object->stinit) {free(object->stinit); object->stinit=NULL;} + return (object->pass); /* error returned from function */ + } + + if (object->options&GLOBBER_RECURSIVE) { + globstring = (char *)malloc(strlen(path)+3); + strcpy(globstring,path); + strcat(globstring,(globstring[strlen(globstring)-1]=='/')?"*":"/*"); + if (glob(globstring,GLOB_ERR|GLOB_ONLYDIR|GLOB_TILDE,NULL,&dirlist) != 0) { + if (object->options&GLOBBER_VERBOSE) fprintf(stderr,"%s: no match\n",globstring); + } + else for (i=0;ist)); + if ((object->st.st_mode & S_IFMT)!=S_IFDIR) continue; /* dont follow non-dirs. */ + if ((object->st.st_mode & S_IFMT)==S_IFLNK) continue; /* dont follow symlinks */ + + if (object->options&GLOBBER_XDEV){ + if (object->stinit==NULL) { + object->stinit=(struct stat *) malloc(sizeof (struct stat)); + lstat(dirlist.gl_pathv[i],object->stinit); + } + else { + if (object->st.st_dev != object->stinit->st_dev) continue; + /* dont leave filesystem */ + } + } + if (object->options&GLOBBER_VERBOSE) + fprintf(stderr,"directory: %s \n",dirlist.gl_pathv[i]); + object->pass=globber(address,dirlist.gl_pathv[i],operate,filter); + if (object->pass) break; + } + free(globstring); + globfree(&dirlist); + } + + if (object->stinit) {free(object->stinit);object->stinit=NULL;} + return (object->pass); +} + + + diff --git a/efinder/globber.h b/efinder/globber.h new file mode 100755 index 0000000..75e499b --- /dev/null +++ b/efinder/globber.h @@ -0,0 +1,86 @@ + +/* globber.h */ +/* + Copyright 2000 Edscott Wilson Garcia + + 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, 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; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +/*****************************************************************/ + +/* version 0.5.0 is object oriented and eliminates sharing of +* global variables with other modules. */ + +/* globber in its own .o file and link it in later:*/ + +#define GLOBBER_VERSION 0.5.0 + +int globber(void *address,char *input,int (*operate)(char *),char *filter); +int glob_clear_options(void *address); +void *globber_create(void); +void *globber_destroy(void *); +int glob_set_options(void *address,int options); +int glob_set_type(void *address,int type); +int glob_set_sizeL(void *address,long unsigned size); +int glob_set_sizeG(void *address,long unsigned size); +int glob_set_user(void *address,int user); +int glob_set_group(void *address,int group); +int glob_set_time(void *address,long unsigned month_t,long unsigned day_t, + long unsigned hour_t,long unsigned min_t); + +#ifdef __GLOBBER_INCLUDES__ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_CONFIG_H +# include +#endif +#ifdef HAVE_SNPRINTF +# include "snprintf.h" +#endif +#ifdef DMALLOC +# include "dmalloc.h" +#endif +#endif /* __GLOBBER_C__ */ + + + +#define GLOBBER_RECURSIVE 0x01 +#define GLOBBER_VERBOSE 0x02 +#define GLOBBER_XDEV 0x04 +#define GLOBBER_SIZE 0x08 + +#define GLOBBER_MTIME 0x10 +#define GLOBBER_ATIME 0x20 +#define GLOBBER_CTIME 0x40 +/*GLOBBER_MTIME|GLOBBER_ATIME|GLOBBER_CTIME :*/ +#define GLOBBER_TIME 0x70 +#define GLOBBER_PERM 0x80 +#define GLOBBER_TYPE 0x100 +#define GLOBBER_USER 0x200 +#define GLOBBER_GROUP 0x400 +/* GLOBBER_XDEV | GLOBBER_SIZE | GLOBBER_TIME | GLOBBER_PERM | +* GLOBBER_TYPE | GLOBBER_USER | GLOBBER_GROUP : */ +#define GLOBBER_STAT 0xffc + + + + diff --git a/efinder/icons/block_dev.xpm b/efinder/icons/block_dev.xpm new file mode 100755 index 0000000..cdbf8a7 --- /dev/null +++ b/efinder/icons/block_dev.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * block_dev_xpm[] = { +"16 16 5 1", +" s None c None", +". c #5555FF", +"X c #808080", +"o c #BBBBBB", +"O c #000000", +" ", +" ........... ", +" .XoooooXXX. ", +" .XoOOOOXXX.X ", +" .XoOXXoOXX.X ", +" .XoOXXoOXX.X ", +" .XoOoooOXX.X ", +" .XoOOOOXXX.X ", +" .XoOXXXOOX.X ", +" .XoOXXXoOX.X ", +" .XoOoooOOX.X ", +" .XoOOOOOXX.X ", +" .XXXXXXXXX.X ", +" ...........X ", +" XXXXXXXXXX ", +" "}; diff --git a/efinder/icons/char_dev.xpm b/efinder/icons/char_dev.xpm new file mode 100755 index 0000000..bd9060d --- /dev/null +++ b/efinder/icons/char_dev.xpm @@ -0,0 +1,61 @@ +/* XPM */ +static char * char_dev_xpm[] = { +"16 17 41 1", +" c None", +". c #980000", +"X c #8A0000", +"o c #C20000", +"O c #FF0606", +"+ c #FF0E0E", +"@ c #FF5555", +"# c #FE3535", +"$ c #FF6161", +"% c #F40000", +"& c #000000", +"* c #5E0000", +"= c #A50000", +"- c #BC0000", +"; c #C80101", +": c #ED0000", +"> c #DB0000", +", c #E10000", +"< c #3A0000", +"1 c #340000", +"2 c #FF2323", +"3 c #FE5353", +"4 c #FF1010", +"5 c #4E0000", +"6 c #950101", +"7 c #200000", +"8 c #780000", +"9 c #FF2525", +"0 c #620000", +"q c #AC0000", +"w c #FE3838", +"e c #830000", +"r c #D00000", +"t c #680000", +"y c #760000", +"u c #FF1919", +"i c #FE3131", +"p c #FF1E1E", +"a c #B10000", +"s c #440000", +"d c #550000", +" .X ", +" oO++@ ", +" @##$O% &&&&&& ", +"X%@@@@@&&&&&&& ", +"*=-o;&&&& ", +" ***&&&&:>@@@, ", +" <1&&&,@@2#34@ ", +" 56&7 8:@2294@.", +" 0%&& *-:@@@@%.", +" qw&& .e=orr;q*", +" @O&&&=*0ty8t0 ", +" @ui&&&t111111 ", +"6@up9&&& ", +"e%@@@&&&&&&&&& ", +" =;rras&&&&&&& ", +" s*00d ", +" 77 "}; diff --git a/efinder/icons/dir_close.xpm b/efinder/icons/dir_close.xpm new file mode 100755 index 0000000..24d109f --- /dev/null +++ b/efinder/icons/dir_close.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char *dir_close_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 5 1", +" c None", +". c #FFE79C", +"+ c #C6864A", +"@ c #FFC78C", +"# c #000000", +" ", +" ", +" ...+ ", +" @.@@@+ ", +" @@@@@@@@@@@@ ", +" @@...........# ", +" @.@@@@@@@@@@+# ", +" @.@@@@@@@@@@+# ", +" @.@@@@@@@@@@+# ", +" @.@@@@@@@@@@+# ", +" @.@@@@@@@@@@+# ", +" @.@@@@@@@@@@+# ", +" @.+++++++++++# ", +" ############# ", +" ", +" "}; diff --git a/efinder/icons/dir_open.xpm b/efinder/icons/dir_open.xpm new file mode 100755 index 0000000..9486602 --- /dev/null +++ b/efinder/icons/dir_open.xpm @@ -0,0 +1,29 @@ +/* XPM */ +static char *dir_open_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 16 16 6 1", +/* colors */ +". c none", +"# c #ffe79c", +"a c #c6864a", +"b c #ffc78c", +"c c #000000", +"d c #0000ff", +/* pixels */ +"................", +"................", +"....###a........", +"...#bbbba.......", +"..#bbbbbb#####..", +".#baaaaaaaaaaac.", +".#baa##########.", +".#ba#bbbbbbbbbba", +".#ba#bbbbbbbbbba", +".#b#bbbbbbbbbbac", +".#b#bbbbbbbbbbac", +".##bbbbbbbbbbacc", +".#aaaaaaaaaaaac.", +"..ccccccccccccc.", +"................", +"................" +}; diff --git a/efinder/icons/exe.xpm b/efinder/icons/exe.xpm new file mode 100755 index 0000000..d9fb6d2 --- /dev/null +++ b/efinder/icons/exe.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char *exe_xpm[] = { +"16 16 5 1", +" c None", +". c #000000", +"X c #5555FF", +"o c #666666", +"O c #FFFFFE", +" ", +" ............. ", +" .XXXXXXXXXXX.o ", +" .XXXXXXXXXXX.o ", +" .............o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .............o ", +" ooooooooooooo ", +" ", +" "}; diff --git a/efinder/icons/fifo.xpm b/efinder/icons/fifo.xpm new file mode 100755 index 0000000..8564d53 --- /dev/null +++ b/efinder/icons/fifo.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * fifo_xpm[] = { +"16 16 5 1", +" s None c None", +". c #000000", +"X c #FFFF55", +"o c #5555FF", +"O c #BBBBBB", +" ", +"XX ... XXXXX", +"XX oo.oo XXXXX", +"XX oOo.oOo XXXXX", +"XX oOOoOOo XXXXX", +"XX ooOOOoo XXXXX", +"XX ooooooo XXXXX", +"XX ooooooo XXXXX", +"XX ooooooo XXXXX", +"XX ooooooo XXXXX", +"XX ooooooo XXXXX", +"XX ooooooo XXXXX", +"XX ooooo XXXXX", +"XX ooo XXXXX", +"XX ... XXXXX", +" "}; diff --git a/efinder/icons/go_down.xpm b/efinder/icons/go_down.xpm new file mode 100755 index 0000000..0ec2e76 --- /dev/null +++ b/efinder/icons/go_down.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * go_down_xpm[] = { +"16 16 6 1", +" c none", +". c #FFFFFF", +"X c #A2A2A2", +"o c #000000", +"O c #595959", +"+ c #808080", +" +++++ ", +" OOOOO+ ", +" .ooooO+ ", +" .XXXoO+ ", +" .XXXoO+ ", +" .XXXoO+ ", +" .XXXoO+ ", +" .XXXoO+ ", +" +.XXXoO++++ ", +" OO.XXXoOOOO ", +" .oooXXXoooo ", +" .XXXXXXXo ", +" .XXXXXo ", +" .XXXo ", +" .Xo ", +" . "}; diff --git a/efinder/icons/go_to.xpm b/efinder/icons/go_to.xpm new file mode 100755 index 0000000..9176fc3 --- /dev/null +++ b/efinder/icons/go_to.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * go_to_xpm[] = { +"16 16 6 1", +" c none", +". c #FFFFFF", +"X c #000000", +"o c #A2A2A2", +"O c #595959", +"+ c #808080", +" ", +" ", +" ", +" . ", +" .X ", +" .oX ", +" .........ooX ", +" .oooooooooooX ", +" .ooooooooooooXO", +" .oooooooooooXO+", +" .XXXXXXXXooXO+ ", +" OOOOOOO.oXO+ ", +" ++++++.XO+ ", +" .O+ ", +" O+ ", +" + "}; diff --git a/efinder/icons/help.xpm b/efinder/icons/help.xpm new file mode 100755 index 0000000..edb484e --- /dev/null +++ b/efinder/icons/help.xpm @@ -0,0 +1,26 @@ +/* XPM */ +static char * help_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 3 1", +/* colors */ +" c None", +". c #000000", +"X c #BBCCBB", +/* pixels */ +" ", +" .....X ", +" .. X..X ", +" ..X ... ", +" ..X ... ", +" X.. X..X ", +" ..X ", +" .. ", +" ..X ", +" ..X ", +" ", +" ..X ", +" ..X ", +" ..X ", +" XX ", +" ", +" "}; diff --git a/efinder/icons/page.xpm b/efinder/icons/page.xpm new file mode 100755 index 0000000..f317d3b --- /dev/null +++ b/efinder/icons/page.xpm @@ -0,0 +1,23 @@ +/* XPM */ +static char * page_xpm[] = { +"16 16 4 1", +" c None", +". c #000000", +"+ c #FFFFFE", +"@ c #808080", +" ", +" ........ ", +" .+++++.@. ", +" .+++++.+@. ", +" .+++++.++@. ", +" .+++++.....@ ", +" .++++++@@@.@ ", +" .+++++++++.@ ", +" .+++++++++.@ ", +" .+++++++++.@ ", +" .+++++++++.@ ", +" .+++++++++.@ ", +" .+++++++++.@ ", +" ...........@ ", +" @@@@@@@@@@@ ", +" "}; diff --git a/efinder/icons/page_lnk.xpm b/efinder/icons/page_lnk.xpm new file mode 100755 index 0000000..c8da8d8 --- /dev/null +++ b/efinder/icons/page_lnk.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * page_lnk_xpm[] = { +"16 16 5 1", +" s None c None", +". c #000000", +"X c #FFFFFE", +"o c #808080", +"O c #5555FF", +" ", +" ........ ", +" .XXXXX.o. ", +" .XXXXX.Xo. ", +" .XXXXX.XXo. ", +" .XXXXX.....o ", +" .XXXXOOooo.o ", +" .XXXXOOOXX.o ", +" .XOOOOOOOX.o ", +" .XOOOOOOOX.o ", +" .XXXXOOOXX.o ", +" .XXXXOOXXX.o ", +" .XXXXXXXXX.o ", +" ...........o ", +" ooooooooooo ", +" "}; diff --git a/efinder/icons/sexe.xpm b/efinder/icons/sexe.xpm new file mode 100755 index 0000000..502521b --- /dev/null +++ b/efinder/icons/sexe.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * sexe_xpm[] = { +"16 16 5 1", +" c None", +". c #000000", +"X c #5555FF", +"o c #BBBBBB", +"O c #FF5555", +" ", +" ............. ", +" .XXXXXXXXXXX.o ", +" .XXXXXXXXXXX.o ", +" .............o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .OOOOOOOOOOO.o ", +" .............o ", +" ooooooooooooo ", +" ", +" "}; diff --git a/efinder/icons/socket.xpm b/efinder/icons/socket.xpm new file mode 100755 index 0000000..f618e3c --- /dev/null +++ b/efinder/icons/socket.xpm @@ -0,0 +1,23 @@ +/* XPM */ +static char * socket_xpm[] = { +"16 16 4 1", +" s None c None", +". c #5555FF", +"X c #1111EE", +"o c #000000", +" ", +" .X ", +" .X ", +" .X ", +" .X ", +" .X ", +" .X ", +" .XXXXXX ", +" .......X ", +" .X ", +" .X ", +" . .X ", +" ...X ", +" ..X ", +" .ooo ", +" "}; diff --git a/efinder/icons/up.xpm b/efinder/icons/up.xpm new file mode 100755 index 0000000..4bf5f16 --- /dev/null +++ b/efinder/icons/up.xpm @@ -0,0 +1,246 @@ +/* XPM */ +static char * up_xpm[] = { +"24 24 219 2", +" c None", +". c #050505", +"+ c #090909", +"@ c #080808", +"# c #080807", +"$ c #070707", +"% c #030303", +"& c #000000", +"* c #AEAEAA", +"= c #E3E4DC", +"- c #D4D5CC", +"; c #D4D4CB", +"> c #D3D3C9", +", c #CDCDC3", +"' c #D7D7CB", +") c #838379", +"! c #B8B8B3", +"~ c #DADACD", +"{ c #C9C9BC", +"] c #CECFC3", +"^ c #CDCDC1", +"/ c #DBDACE", +"( c #8E8E83", +"_ c #ACADA7", +": c #D3D4C8", +"< c #C5C4B9", +"[ c #C7C8BC", +"} c #C7C7BB", +"| c #AAAA9F", +"1 c #4B4B47", +"2 c #4C4C49", +"3 c #484844", +"4 c #474742", +"5 c #42423D", +"6 c #45463F", +"7 c #10100F", +"8 c #ABACA4", +"9 c #CDCEC2", +"0 c #BFC0B3", +"a c #C3C4B7", +"b c #C1C1B5", +"c c #C0C0B3", +"d c #C6C6B9", +"e c #D0D0C4", +"f c #D0D1C5", +"g c #D1D1C5", +"h c #D1D2C5", +"i c #CECEC2", +"j c #D9D9CC", +"k c #3C3C38", +"l c #A9AAA2", +"m c #CACABF", +"n c #BBBCB0", +"o c #BCBEB1", +"p c #C7C7BD", +"q c #D0D1C7", +"r c #CED0C6", +"s c #CDCEC5", +"t c #CCCCC3", +"u c #CBCCC3", +"v c #CBCDC3", +"w c #CCCDC3", +"x c #CDCDC4", +"y c #CDCEC4", +"z c #CDCEC3", +"A c #CBCCC2", +"B c #D6D7CC", +"C c #5E5F59", +"D c #151515", +"E c #21211F", +"F c #1D1D1C", +"G c #000001", +"H c #A1A19B", +"I c #C3C4B9", +"J c #B4B5AB", +"K c #BCBCB1", +"L c #FAFAF6", +"M c #FFFFFA", +"N c #FEFFF8", +"O c #FFFFF8", +"P c #FEFFF7", +"Q c #FFFFF7", +"R c #FEFFF6", +"S c #FDFEF6", +"T c #FDFEF5", +"U c #FCFDF4", +"V c #FBFCF2", +"W c #FAFAF0", +"X c #4D4E48", +"Y c #010101", +"Z c #9A9A93", +"` c #BDBEB2", +" . c #ADAFA2", +".. c #C6C7BE", +"+. c #FFFFF9", +"@. c #FCFCF1", +"#. c #FCFCF2", +"$. c #FCFDF2", +"%. c #FDFDF3", +"&. c #FDFDF4", +"*. c #FEFEF4", +"=. c #FEFFF5", +"-. c #30302C", +";. c #999992", +">. c #BABBB0", +",. c #A5A699", +"'. c #D9D9D3", +"). c #F7F8ED", +"!. c #F9FAEF", +"~. c #F9FAF0", +"{. c #FAFBF1", +"]. c #FBFCF1", +"^. c #FFFFF6", +"/. c #E4E5DA", +"(. c #95968F", +"_. c #B3B5A9", +":. c #A3A598", +"<. c #EAEAE4", +"[. c #F8F9EE", +"}. c #F3F4E8", +"|. c #F5F5EB", +"1. c #F5F6EB", +"2. c #F6F7EC", +"3. c #F7F7EC", +"4. c #F8F8EE", +"5. c #F6F6EB", +"6. c #88887F", +"7. c #020102", +"8. c #8B8B83", +"9. c #A9AB9E", +"0. c #ADAFA4", +"a. c #F3F3EC", +"b. c #ECEEE2", +"c. c #EDEFE3", +"d. c #EEEFE3", +"e. c #EFF0E6", +"f. c #F0F1E6", +"g. c #F0F1E7", +"h. c #F0F2E7", +"i. c #F1F2E7", +"j. c #F1F3E8", +"k. c #F2F4E8", +"l. c #F3F4E9", +"m. c #F4F5EA", +"n. c #232320", +"o. c #020202", +"p. c #86877F", +"q. c #9D9F94", +"r. c #C5C7BF", +"s. c #ECEDE5", +"t. c #E1E3D6", +"u. c #E4E6D9", +"v. c #E4E7DA", +"w. c #E5E7DB", +"x. c #E6E8DB", +"y. c #E7E8DD", +"z. c #E7E9DD", +"A. c #E8EADE", +"B. c #E9EBDF", +"C. c #EAECE0", +"D. c #EBECE1", +"E. c #EBEDE1", +"F. c #AFB1A5", +"G. c #82837C", +"H. c #D5D6CF", +"I. c #D9DCD0", +"J. c #D4D7CA", +"K. c #D7D9CD", +"L. c #D8DACD", +"M. c #D9DBCE", +"N. c #DADBCF", +"O. c #DBDCD0", +"P. c #DBDDD1", +"Q. c #DCDED2", +"R. c #DEDFD3", +"S. c #DEE0D4", +"T. c #DFE2D6", +"U. c #E0E3D6", +"V. c #E0E2D6", +"W. c #3E3F3A", +"X. c #797A72", +"Y. c #ABAEA3", +"Z. c #CFD2C9", +"`. c #C1C3B7", +" + c #C5C7BB", +".+ c #C7C8BF", +"++ c #C8CBC0", +"@+ c #C9CBC0", +"#+ c #CACDC2", +"$+ c #CBCEC3", +"%+ c #CDD0C3", +"&+ c #CED1C5", +"*+ c #D0D3C7", +"=+ c #D2D3C8", +"-+ c #D2D4C8", +";+ c #DDDED4", +">+ c #B1B3A8", +",+ c #010001", +"'+ c #6E6F68", +")+ c #C2C4BA", +"!+ c #C3C5BA", +"~+ c #BEC1B5", +"{+ c #BFC2B7", +"]+ c #BFC2B8", +"^+ c #C0C3B8", +"/+ c #C0C3B9", +"(+ c #C1C4B9", +"_+ c #C2C5B9", +":+ c #C4C6BA", +"<+ c #C4C6BB", +"[+ c #CACEC3", +"}+ c #353531", +"|+ c #121211", +"1+ c #252523", +"2+ c #232421", +"3+ c #242421", +"4+ c #232321", +"5+ c #1A1B18", +"6+ c #010100", +" ", +" ", +" ", +" ", +" . + + @ # $ $ % ", +" & * = - ; > , ' ) & ", +" & ! ~ { ] ] ^ / ( & ", +" & _ : < [ [ } ] | 1 2 2 3 4 4 4 5 6 7 ", +" & 8 9 0 a b 0 c d e f g e e g h i j k ", +" & l m n o p q r s t u v w x y z A B C D E F % ", +" G H I J K L M N O N P P P Q R S S T U V W M X ", +" Y Z ` ...+.@.@.@.#.$.$.$.$.%.%.&.&.*.=.T M -.", +" Y ;.>.,.'.P ).!.!.~.W W W W {.{.{.].].W ^./.% ", +" Y (._.:.<.[.}.|.1.1.1.2.2.3.).).4.[.[.5.O 6. ", +" 7.8.9.0.a.b.b.c.d.d.e.f.g.h.i.j.k.l.l.m.l.n. ", +" o.p.q.r.s.t.u.v.w.x.y.z.A.A.B.C.D.E.B.1.F.& ", +" o.G.q.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.t.V.E.W. ", +" o.X.Y.Z.`. + +.+++@+#+$+%+&+*+=+: -+;+>+o. ", +" ,+'+)+!+~+{+{+{+{+]+^+^+/+(+_+!+:+<+[+}+ ", +" |+1+2+3+3+3+3+3+3+3+4+4+4+4+4+4+1+5+6+ ", +" ", +" ", +" ", +" "}; diff --git a/efinder/locale/hu.po b/efinder/locale/hu.po new file mode 100755 index 0000000..8f438f5 --- /dev/null +++ b/efinder/locale/hu.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 +#: efinder.cpp:322 +msgid "Permissions" +msgstr "Jogok" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "Tulajdonos" + +#: efinder.cpp:71 +#: efinder.cpp:88 +#: efinder.cpp:105 +msgid "Read" +msgstr "Olvasás" + +#: efinder.cpp:74 +#: efinder.cpp:91 +#: efinder.cpp:108 +msgid "Write" +msgstr "Írás" + +#: efinder.cpp:77 +#: efinder.cpp:94 +#: efinder.cpp:111 +msgid "Execute" +msgstr "Futtatás" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "UID-bit" + +#: efinder.cpp:85 +msgid "Group" +msgstr "Csoport" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "GID-bit" + +#: efinder.cpp:102 +msgid "Other" +msgstr "Egyéb" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "Sticky" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "B&ezárás" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr "Könyvtár kiválasztása..." + +#: efinder.cpp:226 +#: efinder.cpp:231 +#: efinder.cpp:232 +msgid "Find" +msgstr "Keresés" + +#: efinder.cpp:236 +msgid "Path:" +msgstr "Útvonal:" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "&Tallóz..." + +#: efinder.cpp:245 +msgid "Find path." +msgstr "" + +#: efinder.cpp:249 +msgid "File filter:" +msgstr "Fájl szűrés:" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr "Alkönyvtárakban is" + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "Lista korlátozása n darabra:" + +#: efinder.cpp:271 +msgid "Content" +msgstr "Tartalom" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr "Tartalmaz:" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr "Kis-/nagybetű számít" + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr "Reguláris kifejezés" + +#: efinder.cpp:295 +msgid "Filter options" +msgstr "Szűrési opciók" + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "Fájl tulajdonságok" + +#: efinder.cpp:300 +msgid "File type:" +msgstr "Fájl típus:" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "Bármilyen" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "Általános fájl" + +#: efinder.cpp:304 +msgid "Directory" +msgstr "Könyvtár" + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "Szimbolikus link" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "Blokk eszköz" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "Karakteres eszköz" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "FIFO" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "Más fájlrendszeren nem keres" + +#: efinder.cpp:325 +msgid "User/group:" +msgstr "Felh./csoport:" + +#: efinder.cpp:330 +msgid "User id:" +msgstr "Felh.:" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr "Csoport:" + +#: efinder.cpp:344 +msgid "Size:" +msgstr "Méret:" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr "nagyobb mint:" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr "kisebb mint (KB):" + +#: efinder.cpp:359 +msgid "Time:" +msgstr "Idő:" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Módosítva" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "Változtatva:" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "Használva:" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr "az előző:" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "Percben" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "Órában" + +#: efinder.cpp:395 +msgid "Days" +msgstr "Napban" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr "Hónapban" + +#: efinder.cpp:413 +msgid "Content options" +msgstr "Tartalom opciók" + +#: efinder.cpp:415 +msgid "General considerations" +msgstr "Tartalmi opciók" + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "Ne keressen bináris fájlban" + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "Talált sorok számolása" + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr "Bármilyen találat" + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr "Teljes szó találat" + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr "Teljes sor találat" + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "Fájlok megjelenítése melyben nincs találat" + +#: efinder.cpp:445 +msgid "About" +msgstr "Magamról" + +#: efinder.cpp:447 +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" + +#: efinder.cpp:458 +msgid "Filename" +msgstr "Fájlnév" + +#: efinder.cpp:459 +msgid "Size" +msgstr "Méret" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Utolsó módosítás" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "Jogok" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "Ke&resés" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr "Keresés megkezdése" + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "Mégs&em" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "Megállítá&s" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr "Megállítja a keresést." + +#: eglob.cpp:446 +msgid "Search finished." +msgstr "Keresés befejezve." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr "Nincs találat." + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "%d találat." + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "Megszakítva - elértem a fájllimitet." + diff --git a/efinder/locale/id.po b/efinder/locale/id.po new file mode 100755 index 0000000..2cccaeb --- /dev/null +++ b/efinder/locale/id.po @@ -0,0 +1,342 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: efinder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:29+0100\n" +"PO-Revision-Date: 2002-12-17 16:07+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 efinder.cpp:322 +msgid "Permissions" +msgstr "Permisi" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "Pemilik" + +#: efinder.cpp:71 efinder.cpp:88 efinder.cpp:105 +msgid "Read" +msgstr "Baca" + +#: efinder.cpp:74 efinder.cpp:91 efinder.cpp:108 +msgid "Write" +msgstr "Tulis" + +#: efinder.cpp:77 efinder.cpp:94 efinder.cpp:111 +msgid "Execute" +msgstr "Eksekusi" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "Set UID" + +#: efinder.cpp:85 +msgid "Group" +msgstr "Grup" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "Set GID" + +#: efinder.cpp:102 +msgid "Other" +msgstr "Lainnya" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "Sticky" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "&Tutup" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr "Pilih direktori" + +#: efinder.cpp:226 efinder.cpp:231 efinder.cpp:232 +msgid "Find" +msgstr "Temukan" + +#: efinder.cpp:236 +msgid "Path:" +msgstr "Path:" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "&Browse" + +#: efinder.cpp:245 +msgid "Find path." +msgstr "Temukan path." + +#: efinder.cpp:249 +msgid "File filter:" +msgstr "Filter file:" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr "Cari di subdirektori" + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "Batasi hasil untuk n file pertama:" + +#: efinder.cpp:271 +msgid "Content" +msgstr "Isi" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr "Berisi:" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr "Membedakan huruf besar dan kecil" + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr "Perluasan regexp" + +#: efinder.cpp:295 +msgid "Filter options" +msgstr "Pilihan filter" + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "Pertimbangan" + +#: efinder.cpp:300 +msgid "File type:" +msgstr "Tipe file:" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder.cpp:304 +#, fuzzy +msgid "Directory" +msgstr "Pilih direktori" + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "Tinggal pada satu filesistem" + +#: efinder.cpp:325 +msgid "User/group:" +msgstr "Pemakai/grup" + +#: efinder.cpp:330 +msgid "User id:" +msgstr "id pemakai:" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr "id grup:" + +#: efinder.cpp:344 +msgid "Size:" +msgstr "Ukuran" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr "Lebih besar dari:" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr "dan lebih kecil dari(KB):" + +#: efinder.cpp:359 +msgid "Time:" +msgstr "Waktu:" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Dimodifikasi" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "Diubah" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "Diakses" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr "dalam sebelumnya:" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "Menit" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "Jam" + +#: efinder.cpp:395 +msgid "Days" +msgstr "Hari" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr "Bulan" + +#: efinder.cpp:413 +msgid "Content options" +msgstr "Pilihan isi" + +#: efinder.cpp:415 +msgid "General considerations" +msgstr "Pertimbangan umum" + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "Jangan melihat isi file biner" + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "Mengeluarkan jumlah baris yang sesuai" + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr "Cocok dimanapun" + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr "Cocok hanya seluruh kata" + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr "Cocok hanya keseluruhan baris" + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "Mengeluarkan file-file yang tidak ada kesesuaian ditemukan" + +#: efinder.cpp:445 +msgid "About" +msgstr "Tentang" + +#: efinder.cpp:447 +#, fuzzy +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" +"(C) Hak cipta 2000-2002 oleh Martin Pekar. Program ini menggunakan kode dari " +"xfglob yang merupakan (C) Hak cipta 2000-2001 oleh Edscott Wilson Gracia." + +#: efinder.cpp:458 +msgid "Filename" +msgstr "Namafile" + +#: efinder.cpp:459 +msgid "Size" +msgstr "Ukuran" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Dimodifikasi terakhir" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "Hak" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "&Temukan" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr "Memulai pencarian." + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "&Batal" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "&Stop" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr "Stop pencarian." + +#: eglob.cpp:446 +msgid "Search finished." +msgstr "Pencarian selesai." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr "Tidak ada yang ditemukan." + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "Ditemukan %d file" + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "Diinterupsi karena batas maksimum terlampaui." + +#~ msgid "Finder for Equinox Desktop Environment v. 1.0" +#~ msgstr "Finder untuk Equinox Desktop Environment v. 1.0" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +#~ msgstr "" +#~ "Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +#~ "Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +#~ "atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +#~ "Public License, versi 2 atau versi yang lebih baru. Program ini " +#~ "didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +#~ "tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General " +#~ "Public License untuk lebih jelasnya. Anda seharusnya telah menerima " +#~ "salinan GNU General Public License bersama dengan program ini; jikat " +#~ "tidak, silahkan minta ke Free Software Foundation, Inc., 675 Mass Ave, " +#~ "Cambridge, MA 02139, USA." diff --git a/efinder/locale/messages.pot b/efinder/locale/messages.pot new file mode 100755 index 0000000..5c6ba29 --- /dev/null +++ b/efinder/locale/messages.pot @@ -0,0 +1,314 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-07-22 10:29+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder/efinder.cpp:65 efinder/efinder.cpp:322 +msgid "Permissions" +msgstr "" + +#: efinder/efinder.cpp:68 +msgid "Owner" +msgstr "" + +#: efinder/efinder.cpp:71 efinder/efinder.cpp:88 efinder/efinder.cpp:105 +msgid "Read" +msgstr "" + +#: efinder/efinder.cpp:74 efinder/efinder.cpp:91 efinder/efinder.cpp:108 +msgid "Write" +msgstr "" + +#: efinder/efinder.cpp:77 efinder/efinder.cpp:94 efinder/efinder.cpp:111 +msgid "Execute" +msgstr "" + +#: efinder/efinder.cpp:80 +msgid "Set UID" +msgstr "" + +#: efinder/efinder.cpp:85 +msgid "Group" +msgstr "" + +#: efinder/efinder.cpp:97 +msgid "Set GID" +msgstr "" + +#: efinder/efinder.cpp:102 +msgid "Other" +msgstr "" + +#: efinder/efinder.cpp:114 +msgid "Sticky" +msgstr "" + +#: efinder/efinder.cpp:119 +msgid "&Close" +msgstr "" + +#: efinder/efinder.cpp:132 +msgid "Select directory" +msgstr "" + +#: efinder/efinder.cpp:226 efinder/efinder.cpp:231 efinder/efinder.cpp:232 +msgid "Find" +msgstr "" + +#: efinder/efinder.cpp:236 +msgid "Path:" +msgstr "" + +#: efinder/efinder.cpp:243 +msgid "&Browse..." +msgstr "" + +#: efinder/efinder.cpp:245 +msgid "Find path." +msgstr "" + +#: efinder/efinder.cpp:249 +msgid "File filter:" +msgstr "" + +#: efinder/efinder.cpp:255 +msgid "Search subdirectories" +msgstr "" + +#: efinder/efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "" + +#: efinder/efinder.cpp:271 +msgid "Content" +msgstr "" + +#: efinder/efinder.cpp:274 +msgid "Containing:" +msgstr "" + +#: efinder/efinder.cpp:279 +msgid "Case sensitive" +msgstr "" + +#: efinder/efinder.cpp:282 +msgid "Extended regexp" +msgstr "" + +#: efinder/efinder.cpp:295 +msgid "Filter options" +msgstr "" + +#: efinder/efinder.cpp:297 +msgid "Considerations" +msgstr "" + +#: efinder/efinder.cpp:300 +msgid "File type:" +msgstr "" + +#: efinder/efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder/efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder/efinder.cpp:304 +msgid "Directory" +msgstr "" + +#: efinder/efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder/efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder/efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder/efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder/efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder/efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "" + +#: efinder/efinder.cpp:325 +msgid "User/group:" +msgstr "" + +#: efinder/efinder.cpp:330 +msgid "User id:" +msgstr "" + +#: efinder/efinder.cpp:336 +msgid "Group id:" +msgstr "" + +#: efinder/efinder.cpp:344 +msgid "Size:" +msgstr "" + +#: efinder/efinder.cpp:351 +msgid "greater than:" +msgstr "" + +#: efinder/efinder.cpp:354 +msgid "and less than(KB):" +msgstr "" + +#: efinder/efinder.cpp:359 +msgid "Time:" +msgstr "" + +#: efinder/efinder.cpp:365 +msgid "Modified" +msgstr "" + +#: efinder/efinder.cpp:368 +msgid "Changed" +msgstr "" + +#: efinder/efinder.cpp:371 +msgid "Accessed" +msgstr "" + +#: efinder/efinder.cpp:377 +msgid "in previous:" +msgstr "" + +#: efinder/efinder.cpp:389 +msgid "Minutes" +msgstr "" + +#: efinder/efinder.cpp:392 +msgid "Hours" +msgstr "" + +#: efinder/efinder.cpp:395 +msgid "Days" +msgstr "" + +#: efinder/efinder.cpp:398 +msgid "Mounths" +msgstr "" + +#: efinder/efinder.cpp:413 +msgid "Content options" +msgstr "" + +#: efinder/efinder.cpp:415 +msgid "General considerations" +msgstr "" + +#: efinder/efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "" + +#: efinder/efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "" + +#: efinder/efinder.cpp:424 +msgid "Match anywhere" +msgstr "" + +#: efinder/efinder.cpp:428 +msgid "Match whole words only" +msgstr "" + +#: efinder/efinder.cpp:431 +msgid "Match whole lines only" +msgstr "" + +#: efinder/efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "" + +#: efinder/efinder.cpp:445 +msgid "About" +msgstr "" + +#: efinder/efinder.cpp:447 +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" + +#: efinder/efinder.cpp:458 +msgid "Filename" +msgstr "" + +#: efinder/efinder.cpp:459 +msgid "Size" +msgstr "" + +#: efinder/efinder.cpp:460 +msgid "Last modified" +msgstr "" + +#: efinder/efinder.cpp:461 +msgid "Rights" +msgstr "" + +#: efinder/efinder.cpp:475 +msgid "&Find" +msgstr "" + +#: efinder/efinder.cpp:478 +msgid "Start the searching." +msgstr "" + +#: efinder/efinder.cpp:480 +msgid "&Cancel" +msgstr "" + +#: efinder/efinder.cpp:483 +msgid "&Stop" +msgstr "" + +#: efinder/efinder.cpp:485 +msgid "Stop the searching." +msgstr "" + +#: efinder/eglob.cpp:446 +msgid "Search finished." +msgstr "" + +#: efinder/eglob.cpp:449 +msgid "Nothing found." +msgstr "" + +#: efinder/eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "" + +#: efinder/eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "" diff --git a/efinder/locale/ru.po b/efinder/locale/ru.po new file mode 100755 index 0000000..65b1aad --- /dev/null +++ b/efinder/locale/ru.po @@ -0,0 +1,320 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:29+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 efinder.cpp:322 +msgid "Permissions" +msgstr "" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "" + +#: efinder.cpp:71 efinder.cpp:88 efinder.cpp:105 +msgid "Read" +msgstr "" + +#: efinder.cpp:74 efinder.cpp:91 efinder.cpp:108 +msgid "Write" +msgstr "" + +#: efinder.cpp:77 efinder.cpp:94 efinder.cpp:111 +msgid "Execute" +msgstr "" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "GID" + +#: efinder.cpp:85 +msgid "Group" +msgstr "" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "UID" + +#: efinder.cpp:102 +msgid "Other" +msgstr "" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr " " + +#: efinder.cpp:226 efinder.cpp:231 efinder.cpp:232 +msgid "Find" +msgstr "" + +#: efinder.cpp:236 +msgid "Path:" +msgstr ":" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "..." + +#: efinder.cpp:245 +msgid "Find path." +msgstr " " + +#: efinder.cpp:249 +msgid "File filter:" +msgstr ":" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr " " + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr " n :" + +#: efinder.cpp:271 +msgid "Content" +msgstr "" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr ":" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr " " + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr " " + +#: efinder.cpp:295 +msgid "Filter options" +msgstr " " + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "" + +#: efinder.cpp:300 +msgid "File type:" +msgstr " :" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder.cpp:304 +#, fuzzy +msgid "Directory" +msgstr " " + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr " " + +#: efinder.cpp:325 +msgid "User/group:" +msgstr ":" + +#: efinder.cpp:330 +msgid "User id:" +msgstr ":" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr ":" + +#: efinder.cpp:344 +msgid "Size:" +msgstr ":" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr " , :" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr " , :" + +#: efinder.cpp:359 +msgid "Time:" +msgstr ":" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Σ" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr " :" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "" + +#: efinder.cpp:395 +msgid "Days" +msgstr "" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr ":" + +#: efinder.cpp:413 +msgid "Content options" +msgstr " " + +#: efinder.cpp:415 +msgid "General considerations" +msgstr " " + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr " " + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr " " + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr " " + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr " " + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr " " + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr " " + +#: efinder.cpp:445 +msgid "About" +msgstr " " + +#: efinder.cpp:447 +#, fuzzy +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" +"(C) Copyright 2000-2002 by Martin Pekar. xfglob " +" (C) Copyright 2000-2001 Edscott Wilson Garcia." + +#: efinder.cpp:458 +msgid "Filename" +msgstr " " + +#: efinder.cpp:459 +msgid "Size" +msgstr "" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Σ" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr " " + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr " " + +#: eglob.cpp:446 +msgid "Search finished." +msgstr " ۣ." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr " " + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr " : %d" + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr " - ." + +#~ msgid "Finder for Equinox Desktop Environment v. 1.0" +#~ msgstr " Equinox Desktop Environment v. 1.0" diff --git a/efinder/locale/sk.po b/efinder/locale/sk.po new file mode 100755 index 0000000..e5da8c1 --- /dev/null +++ b/efinder/locale/sk.po @@ -0,0 +1,337 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: efinder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:29+0100\n" +"PO-Revision-Date: 2002-10-13 12:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 efinder.cpp:322 +msgid "Permissions" +msgstr "Prístupové práva" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "Vlastník" + +#: efinder.cpp:71 efinder.cpp:88 efinder.cpp:105 +msgid "Read" +msgstr "Čítanie" + +#: efinder.cpp:74 efinder.cpp:91 efinder.cpp:108 +msgid "Write" +msgstr "Zápis" + +#: efinder.cpp:77 efinder.cpp:94 efinder.cpp:111 +msgid "Execute" +msgstr "Spustenie" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "Nastaviť UID" + +#: efinder.cpp:85 +msgid "Group" +msgstr "Skupina" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "Nastaviť GID" + +#: efinder.cpp:102 +msgid "Other" +msgstr "Ostatní" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "Sticky" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "&Zavrieť" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr "Zvoliť adresár" + +#: efinder.cpp:226 efinder.cpp:231 efinder.cpp:232 +msgid "Find" +msgstr "Hľadať" + +#: efinder.cpp:236 +msgid "Path:" +msgstr "Cesta:" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "&Hľadať..." + +#: efinder.cpp:245 +msgid "Find path." +msgstr "Hľadať cestu." + +#: efinder.cpp:249 +msgid "File filter:" +msgstr "Súborový filter:" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr "Prehľadávať podadresáre" + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "Limitovať výsledok na prvých n súborov:" + +#: efinder.cpp:271 +msgid "Content" +msgstr "Obsah" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr "Obsahujúci:" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr "Citlivý na veľkosť" + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr "Rozšírený regexp" + +#: efinder.cpp:295 +msgid "Filter options" +msgstr "Možnosti filtra" + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "Kritériá" + +#: efinder.cpp:300 +msgid "File type:" +msgstr "Typ súboru:" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder.cpp:304 +#, fuzzy +msgid "Directory" +msgstr "Zvoliť adresár" + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "Zostať na samotnom súborovom systéme" + +#: efinder.cpp:325 +msgid "User/group:" +msgstr "Užívateľ/skupina:" + +#: efinder.cpp:330 +msgid "User id:" +msgstr "Užívateľské id:" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr "Skupinové id:" + +#: efinder.cpp:344 +msgid "Size:" +msgstr "Veľkosť:" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr "väčší ako:" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr "a menší ako(KB)" + +#: efinder.cpp:359 +msgid "Time:" +msgstr "Čas:" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Modifikovaný" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "Zmenený" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "Pristúpený" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr "v predchádzajúcich:" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "Minútach" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "Hodinách" + +#: efinder.cpp:395 +msgid "Days" +msgstr "Dňoch" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr "Mesiacoch" + +#: efinder.cpp:413 +msgid "Content options" +msgstr "Možnosti obsahu" + +#: efinder.cpp:415 +msgid "General considerations" +msgstr "Hlavné kritériá" + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "Nepozerať sa do binárnych súborov" + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "Zobraziť počet nájdených riadkov" + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr "Nájsť všetko" + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr "Nájsť iba celé slová" + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr "Nájsť iba celé riadky" + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "Zobraziť súbory v ktoré sa nezhodujú" + +#: efinder.cpp:445 +msgid "About" +msgstr "O programe" + +#: efinder.cpp:447 +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" + +#: efinder.cpp:458 +msgid "Filename" +msgstr "Meno súboru" + +#: efinder.cpp:459 +msgid "Size" +msgstr "Veľkosť" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Naposledy modifikované" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "Práva" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "&Hľadať" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr "Začať vyhľadávanie." + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "&Zastaviť" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr "Zastaviť vyhľadávanie." + +#: eglob.cpp:446 +msgid "Search finished." +msgstr "Vyhľadávanie skončilo." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr "Nebolo nič nájdené." + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "Bolo nájdených %d súborov." + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "Prerušené, pretože bol prekročený maximálny limit." + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +#~ msgstr "" +#~ "Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +#~ "Tento program je voľný softvér, môžete ho redistribuovať a/alebo " +#~ "modifikovať podľa podmienok licencie GNU General Public License " +#~ "publikovanej nadáciou the Free Software Foundation, buď verzie 2 tejto " +#~ "licencie, alebo (podľa vášho uváženia) ľubovoľnej novšej verzie. Tento " +#~ "program je distribuovaný v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK " +#~ "ZÁRUKY; dokonca bez obsiahnutej záruky OBCHODOVATEĽNOSTI alebo VÝHOD PRE " +#~ "URČITÝ ÚČEL. Ďalšie podrobnosti hľadajte v licencii GNU General Public " +#~ "License. S týmto programom by ste mali dostať kópiu licencie GNU General " +#~ "Public Licence; ak nie, napíšte do nadácie the Free Software Foundation, " +#~ "Inc., 675 Mass Ave, Cambridge, MA 02139, USA." diff --git a/eiconman/Makefile b/eiconman/Makefile new file mode 100755 index 0000000..9783f58 --- /dev/null +++ b/eiconman/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = eiconman.cpp edeskicon.cpp propdialog.cpp edeskconf.cpp ../edelib2/EDE_Config.cpp ../edelib2/EDE_Run.cpp ../edelib2/pty.cpp ../edelib2/process.cpp +TARGET = eiconman + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/eiconman/edeskconf.cpp b/eiconman/edeskconf.cpp new file mode 100755 index 0000000..2dbb540 --- /dev/null +++ b/eiconman/edeskconf.cpp @@ -0,0 +1,159 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#include "edeskconf.h" +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +//#include +//#include +//#include +//#include +//#include +//#include +#include "eiconman.h" + +fltk::Window *bg_prop_window=(fltk::Window *)0; + +fltk::InvisibleBox *mini_image_box=(fltk::InvisibleBox *)0; + +fltk::LightButton *color_button=(fltk::LightButton *)0; + +fltk::CheckButton *use_button=(fltk::CheckButton *)0; + +fltk::Group *bg_image_group=(fltk::Group *)0; + +fltk::Input *image_input=(fltk::Input *)0; + +static fltk::Button *browse_button=(fltk::Button *)0; + +fltk::ValueSlider *opacity_slider=(fltk::ValueSlider *)0; + +fltk::Choice *mode_choice=(fltk::Choice *)0; + +static void cb_Cancel(fltk::Button*, void*) { + bg_prop_window->do_callback(); +} + +void make_desktop_properties() { + fltk::Window* w; + {fltk::Window* o = bg_prop_window = new fltk::Window(560, 270, "Background settings"); + w = o; + o->callback((fltk::Callback*)bg_prop_cb); + ((fltk::Window*)(o))->hotspot(o); + o->begin(); + {fltk::Group* o = new fltk::Group(10, 20, 265, 209, "Background"); + o->box(fltk::BORDER_FRAME); + o->color((fltk::Color)0xe6e7e600); + o->textcolor((fltk::Color)0xaaadaa00); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(1, 1, 263, 207); + o->box(fltk::BORDER_FRAME); + o->color((fltk::Color)0xe6e7e600); + o->textcolor((fltk::Color)0xdcdedc00); + } + {fltk::Group* o = new fltk::Group(35, 16, 230, 159); + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(65, 129, 60, 7); + o->box(fltk::BORDER_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(5, 0, 180, 131); + o->box(fltk::THIN_UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(47, 134, 94, 12); + o->box(fltk::THIN_UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(159, 121, 15, 6); + o->box(fltk::THIN_UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(152, 121, 2, 5); + o->set_vertical(); + o->box(fltk::FLAT_BOX); + o->color((fltk::Color)2); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(15, 9, 160, 110); + o->box(fltk::THIN_DOWN_BOX); + } + {fltk::InvisibleBox* o = mini_image_box = new fltk::InvisibleBox(16, 10, 158, 108); + o->box(fltk::FLAT_BOX); + o->buttonbox(fltk::FLAT_BOX); + o->color((fltk::Color)32); + o->highlight_color((fltk::Color)32); + o->align(fltk::ALIGN_CENTER); + } + o->end(); + } + {fltk::LightButton* o = color_button = new fltk::LightButton(169, 175, 85, 25, "C&olor..."); + o->type(0); + o->box(fltk::THIN_UP_BOX); + o->set_flag(fltk::VALUE); + o->callback((fltk::Callback*)bg_image_color); + } + o->end(); + } + {fltk::CheckButton* o = use_button = new fltk::CheckButton(285, 20, 265, 20, "Use wallpaper"); + o->set_flag(fltk::VALUE); + o->callback((fltk::Callback*)bg_image_use); + } + new fltk::Divider("label"); + {fltk::Group* o = bg_image_group = new fltk::Group(285, 50, 265, 175); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + {fltk::Input* o = image_input = new fltk::Input(20, 15, 240, 23, "Image:"); + o->callback((fltk::Callback*)bg_image_input); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->when(fltk::WHEN_ENTER_KEY); + } + {fltk::Button* o = browse_button = new fltk::Button(180, 48, 80, 23, "&Browse..."); + o->callback((fltk::Callback*)bg_image_browse); + } + {fltk::ValueSlider* o = opacity_slider = new fltk::ValueSlider(65, 83, 195, 18, "Opacity:"); + o->maximum(255); + o->step(1.01); + o->slider_size(10); + o->callback((fltk::Callback*)bg_image_opacity); + o->align(fltk::ALIGN_LEFT); + o->when(fltk::WHEN_RELEASE); + o->step(1); + } + {fltk::Choice* o = mode_choice = new fltk::Choice(65, 112, 195, 23, "Mode:"); + o->callback((fltk::Callback*)bg_image_mode); + o->begin(); + {fltk::Item* o = new fltk::Item("Center"); + o->user_data((void*)(0)); + } + {fltk::Item* o = new fltk::Item("Stretch"); + o->user_data((void*)(1)); + } + {fltk::Item* o = new fltk::Item("Stretch (aspect)"); + o->user_data((void*)(2)); + } + {fltk::Item* o = new fltk::Item("Tiled"); + o->deactivate(); + } + o->end(); + } + o->end(); + } + new fltk::Divider("label"); + {fltk::Button* o = new fltk::Button(290, 240, 80, 25, "&OK"); + o->callback((fltk::Callback*)bg_ok); + } + {fltk::Button* o = new fltk::Button(380, 240, 80, 25, "&Apply"); + o->callback((fltk::Callback*)bg_apply); + } + {fltk::Button* o = new fltk::Button(470, 240, 80, 25, "&Cancel"); + o->callback((fltk::Callback*)cb_Cancel); + } + o->end(); + o->resizable(o); + } +} diff --git a/eiconman/edeskconf.fl b/eiconman/edeskconf.fl new file mode 100755 index 0000000..e0110a3 --- /dev/null +++ b/eiconman/edeskconf.fl @@ -0,0 +1,163 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {selected +} + +decl {/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {public +} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {//\#include } {} + +decl {\#include "eiconman.h"} {} + +Function {make_desktop_properties()} {open return_type void +} { + {fltk::Window} bg_prop_window { + label {Background settings} + callback bg_prop_cb open + xywh {402 211 560 270} resizable hotspot visible + } { + {fltk::Group} {} { + label Background open + xywh {10 20 265 209} align 5 box BORDER_FRAME color 0xe6e7e600 textcolor 0xaaadaa00 + } { + {fltk::InvisibleBox} {} { + xywh {1 1 263 207} box BORDER_FRAME color 0xe6e7e600 textcolor 0xdcdedc00 + } + {fltk::Group} {} {open + xywh {35 16 230 159} + } { + {fltk::InvisibleBox} {} { + xywh {65 129 60 7} box BORDER_BOX + } + {fltk::InvisibleBox} {} { + xywh {5 0 180 131} box THIN_UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {47 134 94 12} box THIN_UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {159 121 15 6} box THIN_UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {152 121 2 5} box FLAT_BOX color 2 + } + {fltk::InvisibleBox} {} { + xywh {15 9 160 110} box THIN_DOWN_BOX + } + {fltk::InvisibleBox} mini_image_box { + xywh {16 10 158 108} align 16 box FLAT_BOX buttonbox FLAT_BOX color 32 highlight_color 32 + } + } + {fltk::LightButton} color_button { + label {C&olor...} + callback bg_image_color + xywh {169 175 85 25} type Normal box THIN_UP_BOX value 1 + } + } + {fltk::CheckButton} use_button { + label {Use wallpaper} + callback bg_image_use + xywh {285 20 265 20} value 1 + } + {fltk::Divider} {} { + label label + } + {fltk::Group} bg_image_group {open + xywh {285 50 265 175} align 5 + } { + {fltk::Input} image_input { + label {Image:} + callback bg_image_input + xywh {20 15 240 23} align 5 when ENTER_KEY + } + {fltk::Button} browse_button { + label {&Browse...} + callback bg_image_browse + private xywh {180 48 80 23} + } + {fltk::ValueSlider} opacity_slider { + label {Opacity:} + callback bg_image_opacity + xywh {65 83 195 18} align 4 when RELEASE maximum 255 step 1.01 slider_size 10 + extra_code {o->step(1);} + } + {fltk::Choice} mode_choice { + label {Mode:} + callback bg_image_mode open + xywh {65 112 195 23} + } { + {fltk::Item} {} { + label Center + user_data 0 + } + {fltk::Item} {} { + label Stretch + user_data 1 + } + {fltk::Item} {} { + label {Stretch (aspect)} + user_data 2 + } + {fltk::Item} {} { + label Tiled + deactivate + } + } + } + {fltk::Divider} {} { + label label + } + {fltk::Button} {} { + label {&OK} + callback bg_ok + private xywh {290 240 80 25} + } + {fltk::Button} {} { + label {&Apply} + callback bg_apply + private xywh {380 240 80 25} + } + {fltk::Button} {} { + label {&Cancel} + callback {bg_prop_window->do_callback();} + private xywh {470 240 80 25} + } + } +} diff --git a/eiconman/edeskconf.fld b/eiconman/edeskconf.fld new file mode 100755 index 0000000..052042c --- /dev/null +++ b/eiconman/edeskconf.fld @@ -0,0 +1,143 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Desktop background configuration for EDE is (C) Copyright 2000-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "eiconman.h"} {} + +Function {make_desktop_properties()} {open return_type void +} { + Fl_Window bg_prop_window { + label {Background settings} + callback bg_prop_cb open + xywh {389 23 560 270} hotspot visible + } { + Fl_Group {} { + label Background open + xywh {10 20 265 205} align 5 box BORDER_FRAME color 39 + } { + Fl_Box {} { + xywh {1 1 263 203} box BORDER_FRAME color 47 + } + Fl_Group {} {open + xywh {20 8 230 157} + } { + Fl_Box {} { + xywh {85 135 60 7} box BORDER_BOX + } + Fl_Box {} { + xywh {25 6 180 131} box THIN_UP_BOX + } + Fl_Box {} { + xywh {67 140 94 12} box THIN_UP_BOX + } + Fl_Box {} { + xywh {179 127 15 6} box THIN_UP_BOX + } + Fl_Box {} { + xywh {172 127 2 5} box FLAT_BOX color 2 + } + Fl_Box {} { + xywh {35 15 160 110} box THIN_DOWN_BOX + } + Fl_Box mini_image_box { + xywh {36 16 158 108} align 16 box FLAT_BOX button_box FLAT_BOX color 32 highlight_color 32 + } + } + Fl_Light_Button color_button { + label {C&olor...} + callback bg_image_color selected + xywh {170 170 85 25} type Normal box THIN_UP_BOX value 1 + } + } + Fl_Check_Button use_button { + label {Use wallpaper} + callback bg_image_use + xywh {285 20 265 20} value 1 + } + Fl_Divider {} { + label label + xywh {290 40 255 10} + } + Fl_Group bg_image_group {open + xywh {285 50 265 175} align 5 + } { + Fl_Input image_input { + label {Image:} + callback bg_image_input + xywh {15 17 240 23} align 5 when ENTER_KEY + } + Fl_Button browse_button { + label {&Browse...} + callback bg_image_browse + private xywh {175 50 80 23} + } + Fl_Value_Slider opacity_slider { + label {Opacity:} + callback bg_image_opacity + xywh {60 85 195 18} type HORIZONTAL align 4 when RELEASE maximum 255 step 1.01 slider_size 10 + extra_code {o->step(1);} + } + Fl_Choice mode_choice { + label {Mode:} + callback bg_image_mode open + xywh {60 114 195 23} + } { + Fl_Item {} { + label Center + user_data 0 + } + Fl_Item {} { + label Stretch + user_data 1 + } + Fl_Item {} { + label {Stretch (aspect)} + user_data 2 + } + Fl_Item {} { + label Tiled + deactivate + } + } + } + Fl_Divider {} { + label label + xywh {5 225 550 15} + } + Fl_Button {} { + label {&OK} + callback bg_ok + private xywh {290 240 80 25} + } + Fl_Button {} { + label {&Apply} + callback bg_apply + private xywh {380 240 80 25} + } + Fl_Button {} { + label {&Cancel} + callback {bg_prop_window->do_callback();} + private xywh {470 240 80 25} + } + } + code {bg_prop_window->end();} {} +} diff --git a/eiconman/edeskconf.h b/eiconman/edeskconf.h new file mode 100755 index 0000000..12a7a2a --- /dev/null +++ b/eiconman/edeskconf.h @@ -0,0 +1,45 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#ifndef edeskconf_h +#define edeskconf_h +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include +extern void bg_prop_cb(fltk::Window*, void*); +extern fltk::Window* bg_prop_window; +#include +#include +extern fltk::InvisibleBox* mini_image_box; +#include +extern void bg_image_color(fltk::LightButton*, void*); +extern fltk::LightButton* color_button; +#include +extern void bg_image_use(fltk::CheckButton*, void*); +extern fltk::CheckButton* use_button; +#include +extern fltk::Group* bg_image_group; +#include +extern void bg_image_input(fltk::Input*, void*); +extern fltk::Input* image_input; +#include +extern void bg_image_browse(fltk::Button*, void*); +#include +extern void bg_image_opacity(fltk::ValueSlider*, void*); +extern fltk::ValueSlider* opacity_slider; +#include +extern void bg_image_mode(fltk::Choice*, void*); +extern fltk::Choice* mode_choice; +#include +extern void bg_ok(fltk::Button*, void*); +extern void bg_apply(fltk::Button*, void*); +void make_desktop_properties(); +#endif diff --git a/eiconman/edeskicon.cpp b/eiconman/edeskicon.cpp new file mode 100755 index 0000000..7153324 --- /dev/null +++ b/eiconman/edeskicon.cpp @@ -0,0 +1,594 @@ +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "edeskicon.h" +#include "propdialog.h" +#include "eiconman.h" +#include "../edeconf.h" + +//#include + +//#include +//#include + +#define ICONSIZE 48 + +//Fl_Menu_Button *popup; +Icon *menu_item=0; + +extern Desktop *desktop; + +void menu_cb(fltk::Widget *w, long a) +{ + if(menu_item) { + switch(a) { + case 1: + Icon::cb_execute((fltk::Item*)w, menu_item); + break; + case 3: + delete_icon(w, menu_item); + break; + case 4: + property_dialog(w, menu_item, false); + break; + } + } +} + +char* get_localized_string() +{ + const char* locale = setlocale(LC_MESSAGES, NULL); +// int pos = locale.rpos('_'); +// if(pos>0) locale.sub_delete(pos, locale.length()-pos); + if(strlen(locale)==0 || strcmp(locale,"C")==0 || strcmp(locale,"POSIX")==0) + return strdup("Name"); + else { + char localName[128]; + sprintf(localName,"Name[%s]", locale); + return strdup(localName); + } +} + +char* get_localized_name(EDE_Config &iconConfig) +{ + char icon_name[128]; //wchar ? + char *tmp = get_localized_string(); + if(iconConfig.get("Desktop Entry", tmp, icon_name)) { + iconConfig.get("Desktop Entry", "Name", icon_name, "None"); + } + free(tmp); + return strdup(icon_name); +} + +Icon::Icon(char *icon_config) : fltk::Widget(0, 0, ICONSIZE, ICONSIZE) +{ + if(!popup) { + popup = new fltk::PopupMenu(0, 0, 0, 0); + if(popup->parent()) + popup->parent()->remove(popup); + popup->parent(0); + popup->type(fltk::PopupMenu::POPUP3); + popup->begin(); + + fltk::Item *open_item = new fltk::Item(_("&Open")); + open_item->callback(menu_cb, 1); + //open_item->x_offset(12); + + fltk::Item *delete_item = new fltk::Item(_("&Delete")); + delete_item->callback(menu_cb, 3); + //delete_item->x_offset(12); + + new fltk::Divider(); + + fltk::Item *property_item = new fltk::Item(_("&Properties")); + property_item->callback(menu_cb, 4); + //property_item->x_offset(12); + + popup->end(); + } + + cfg = new EDE_Config(icon_config); + + icon_im = 0; + micon = 0; + + cfg->set_section("Desktop Entry"); + cfg->read("X", x_position, 100); + cfg->read("Y", y_position, 100); + position(x_position, y_position); + +// label_font(FL_HELVETICA); + label(icon_name); + align(fltk::ALIGN_BOTTOM|fltk::ALIGN_WRAP); + tooltip(icon_name); + box(fltk::NO_BOX); + + update_all(); + desktop->begin(); +} + +Icon::~Icon() +{ + if (icon_im) delete icon_im; + if (cfg) delete cfg; +} + +void Icon::cb_execute_i() +{ + EDE_Config &iconfig = *cfg; + iconfig.set_section("Desktop Entry"); + + char *cmd=0; + if(!iconfig.read("Exec", cmd, 0) && cmd) + { + char pRun[256]; + char browser[256]; + EDE_Config pGlobalConfig(EDE_Config::find_config_file("ede.conf", 0)); + pGlobalConfig.get("Web", "Browser", browser, 0, sizeof(browser)); + if(pGlobalConfig.error() && !browser) { + strncpy(browser, "netscape", sizeof(browser)); + } + + char *location = cmd; + char *prefix = strstr(location, ":"); + if(prefix) // it is internet resource + { + *prefix = '\0'; + if (!strcasecmp(location, "http") || !strcasecmp(location, "ftp") || !strcasecmp(location, "file")) + { snprintf(pRun, sizeof(pRun)-1, "%s %s &", browser, cmd); + } + else if (!strcasecmp(location, "gg")) + { snprintf(pRun, sizeof(pRun)-1, "%s http://www.google.com/search?q=\"%s\" &", browser, ++prefix); + } + else if (!strcasecmp(location, "leo")) + { snprintf(pRun, sizeof(pRun)-1, "%s http://dict.leo.org/?search=\"%s\" &", browser, ++prefix); + } + else if (!strcasecmp(location, "av")) + { snprintf(pRun, sizeof(pRun)-1, "%s http://www.altavista.com/sites/search/web?q=\"%s\" &", browser, ++prefix); + } + else { + snprintf(pRun, sizeof(pRun)-1, "%s %s &", browser, cmd); + } + } + else // local executable + { snprintf(pRun, sizeof(pRun)-1, "%s &", cmd); + } + run_program(pRun); + + free((char*)cmd); + } +} + +int Icon::handle(int e) +{ + static int bx, by; + static int x_icon, y_icon; + static int X, Y; + static bool button1 = false; + int dx, dy; + + + if (e==fltk::PUSH) { + button1 = (fltk::event_button()==1); + } + + // Left mouse button + if(button1) { + switch(e) { + case fltk::DRAG: + + if(!micon) { + micon = new MovableIcon(this); + micon->show(); + } + + dx = ((fltk::event_x_root()-bx)/label_gridspacing) * label_gridspacing; + dy = ((fltk::event_y_root()-by)/label_gridspacing) * label_gridspacing; + X=x_icon+dx; + Y=y_icon+dy; + + if(Xx()) X=desktop->x(); + if(Yy()) Y=desktop->y(); + if(X+w()>desktop->x()+desktop->w()) X=desktop->x()+desktop->w()-w(); + if(Y+h()>desktop->y()+desktop->h()) Y=desktop->y()+desktop->h()-h(); + + micon->position(X, Y); + + return 1; + + case fltk::RELEASE: + + // This happens only when there was no drag + if(fltk::event_is_click()) { + if (one_click_exec) + cb_execute_i(); + return 1; + } + + // We will update config only on FL_RELEASE, when + // dragging is over + if(micon) { + delete micon; + micon = 0; + } + + position(X-desktop->x(), Y-desktop->y()); + desktop->redraw(); + + cfg->set_section("Desktop Entry"); + cfg->write("X", x()); + cfg->write("Y", y()); + cfg->flush(); + + return 1; + + case fltk::PUSH: + + take_focus(); + + bx = (fltk::event_x_root()/label_gridspacing)*label_gridspacing; + by = (fltk::event_y_root()/label_gridspacing)*label_gridspacing; + x_icon = ((desktop->x()+x())/label_gridspacing)*label_gridspacing; + y_icon = ((desktop->y()+y())/label_gridspacing)*label_gridspacing; + + // Double click + if ((!one_click_exec) && (Fl::event_clicks() > 0)) { + fltk::event_clicks(0); + cb_execute_i(); + } + + desktop->redraw(); + + return 1; + } + } + + switch (e) { + case fltk::SHORTCUT: + case fltk::KEY: + if(fltk::event_key()==fltk::Enter||fltk::event_key()==fltk::Space) { + cb_execute_i(); + } + break; + + case fltk::FOCUS: + case fltk::ENTER: + return 1; + + case fltk::PUSH: + take_focus(); + desktop->redraw(); + if(fltk::event_button()==3) { + menu_item = this; + popup->popup(); + menu_item = 0; + return 1; + } + break; + + default: + break; + } + + return fltk::Widget::handle(e); +} + +void Icon::draw() +{ + fltk::Flags f=0; + fltk::Image *im = icon_im; + if(focused()) { + f=fltk::SELECTED; + } + + if(im) + im->draw(0, 0, w(), h(),f); + else { + fltk::color(fltk::RED); + fltk::rect(0,0,w(),h()); + fltk::color(fltk::BLACK); + fltk::rectf(1,1,w()-2,h()-2); + fltk::color(fltk::WHITE); + fltk::font(label_font()->bold(), 10); + fltk::draw("NO ICON FOUND!", 1, 1, w()-2, h()-2, fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + + int X = w()-(w()/2)-(lwidth/2); + int Y = h()+2; + + if(!label_trans) { + fltk::color(label_background); + fltk::rectf(X,Y,lwidth,lheight); + } + + if(focused()) { + focus_box()->draw(X, Y, lwidth, lheight, color(), 0); + } + + fltk::font(label_font(), label_size()); + + // A little shadow, from Dejan's request :) + // SUCKS! + /*fl_color(fl_darker(label_color())); + fl_draw(label(), X-1, Y+1, lwidth, lheight, flags()); + fl_draw(label(), X, Y+1, lwidth, lheight, flags()); + */ + + fltk::color(label_color()); + fltk::draw(label(), X, Y, lwidth, lheight, flags()); +} + +void Icon::update_icon() +{ + if(icon_im) delete icon_im; + + char path[fltk::PATH_MAX]; + snprintf(path,fltk::PATH_MAX,PREFIX"/share/ede/icons/48x48/%s",icon_file); + + if(!fltk::file_exists(path)) strncpy(path, icon_file, fltk::PATH_MAX); + + if(fltk::file_exists(path)) + { + icon_im = fltk::Image::read(path, 0); + } else { + icon_im = 0; + } + + if(!icon_im) { + icon_im = fltk::Image::read(PREFIX"/share/ede/icons/48x48/folder.png", 0); + } + + if(icon_im) { + if(icon_im->width()!=48 || icon_im->height()!=48) { + fltk::Image *old = icon_im; + icon_im = old->scale(48,48); + delete old; + } + icon_im->mask_type(MASK_ALPHA); + icon_im->threshold(128); + } +} + +void Icon::layout() +{ + if(layout_damage()&fltk::LAYOUT_XYWH && icon_im) + { +#if 0 + // Alpha blends image to bg! + // This sucks, cause if icon overlaps another, it will + // draw bg top of overlapped icon... + if(icon_im->format()->Amask) + { + if(desktop->bg_image) { + int pitch = icon_im->pitch(); + + uint8 *data = new uint8[h()*pitch]; + + int X=x(),Y=y(),W=w(),H=h(); + if(X<0) X=0; + if(Y<0) Y=0; + if(X+W>desktop->w()) X=desktop->w()-W; + if(Y+H>desktop->h()) Y=desktop->h()-H; + + Fl_Rect r(X,Y,W,H); + Fl_Rect r2(0,0,W,H); + Fl_Renderer::blit(desktop->bg_image->data(), &r, desktop->bg_image->format(), desktop->bg_image->pitch(), + data, &r2, icon_im->format(), pitch, 0); + + if(im) delete im; + im = new Fl_Image(W, H, icon_im->format(), data); + + // Blit image data to our bg_image + Fl_Renderer::alpha_blit(icon_im->data(), &r2, icon_im->format(), icon_im->pitch(), + im->data(), &r2, im->format(), im->pitch(), + 0); + } else { + //blend to color + im = icon_im->back_blend(desktop->bg_color); + } + } + else +#endif + { + if(icon_im) { + icon_im->mask_type(MASK_ALPHA); + icon_im->threshold(128); + } + } + } + + fltk::Widget::layout(); +} + +void Icon::update_all() +{ + EDE_Config &iconConfig = *cfg; + iconConfig.read_file(false); + iconConfig.set_section("Desktop Entry"); + + // Icon Label: + icon_name = get_localized_name(iconConfig); + tooltip(icon_name); + label(icon_name); + + label_color(label_foreground); + label_size(label_fontsize); + + lwidth = label_maxwidth; // This is a bit strange, but otherwise we get mysterious crashes... + lheight= 0; + fltk::font(label_font(), label_size()); + fltk::measure(icon_name, lwidth, lheight, fltk::ALIGN_WRAP); + lwidth += 4; // height+= 4; + + // Icon file: + iconConfig.read("Icon", icon_file, "folder.png"); + + update_icon(); + + redraw(); + //desktop->redraw(); +} + +void save_icon(Icon *i_window) +{ + if(i_name->size()==0) { + fltk::alert(_("Name of the icon must be filled.")); + } + else + { + const char *icon_file = i_filename->value(); + const char *icons_path = PREFIX"/share/ede/icons/48x48"; + if(!strncmp(icons_path, i_filename->value(), strlen(icons_path))) { + // Only relative path, if icon in default location + icon_file = fltk::filename_name(i_filename->value()); + } + + EDE_Config i_config(i_link->value()); + i_config.set_section("Desktop Entry"); + + i_config.write(get_localized_string(), i_name->value()); + i_config.write("Name", i_name->value()); // fallback + i_config.write("Exec", i_location->value()); + i_config.write("Icon", icon_file); + i_config.flush(); + i_window->update_all(); + } +} + +void delete_icon(Fl_Widget*, Icon *icon) +{ + if (fltk::ask(_("Delete this icon?"))) + { + icon->hide(); + char fname[fltk::PATH_MAX]; + strncpy(fname, icon->get_cfg()->filename(), fltk::PATH_MAX); + delete icon; + if(remove(fname) < 0) + fltk::alert(_("Remove of the icon %s failed. You probably do not have write access to this file."), fname); + } +} + +int create_new_icon() +{ + int ix=fltk::event_x_root(); + int iy=fltk::event_y_root(); + Icon *icon=0; + const char *i = fltk::input(_("Enter the name of the new icon:"), "The Gimp"); + if (i) + { + char config[fltk::PATH_MAX]; + snprintf(config, sizeof(config)-1, "%s/.ede/desktop/%s.desktop", getenv("HOME"), i); + + if(!fltk::file_exists(config)) + { + EDE_Config cfg(config); + cfg.set_section("Desktop Entry"); + cfg.write("Icon", "no icon"); + cfg.write("X", ix); + cfg.write("Y", iy); + cfg.write(get_localized_string(), i); + cfg.write("Exec", "Executable Here"); + //const char *u = fl_input(_("Enter the program name or the location to open:"), "gimp"); + cfg.flush(); + + desktop->begin(); + icon = new Icon(config); + desktop->end(); + } + else { + fltk::alert(_("The icon with the same name already exists.")); + } + } + if(icon) { + property_dialog(0, icon, true); + icon->position(ix,iy); + icon->show(); + + desktop->redraw(); + desktop->relayout(); + } + return 0; +} + +void update_iconeditdialog(Icon *i) +{ + i_link->value(i->get_cfg()->filename()); + + EDE_Config &i_config = *i->get_cfg(); + + char* val; + i_config.set_section("Desktop Entry"); + + val = get_localized_name(i_config); + if(strlen(val)>0) { + i_name->value(val); + } + + if(!i_config.read("Exec", val, 0)) { + i_location->value(val); + } + + if(!i_config.read("Icon", val, 0)) { + i_filename->value(val); + } +} + +void update_property_dialog(Icon *i) +{ + char* val; + + EDE_Config i_config(i->get_cfg()->filename()); + i_config.set_section("Desktop Entry"); + + val = get_localized_name(i_config); + if(!val.empty()) { + pr_name->label(val); + } + + if(!i_config.read("Exec", val, 0)) { + pr_exec->label(val); + } + +/* TODO + Fl_FileAttr *attr = fl_file_attr(i->get_cfg()->filename()); + if(attr) + { + char size[32]; + snprintf(size, 32, _("%d bytes, %s"), (int) attr->size, attr->time); + pr_size->label(size); + delete attr; + }*/ + + pr_icon->image(i->icon_im); +} + +MovableIcon::MovableIcon(Icon *i) +: fltk::Window(desktop->x()+i->x(), desktop->y()+i->y(), i->w(), i->h()) +{ + icon = i; + set_override(); + create(); + + fltk::Image *im = i->icon_im; + if(im) + { + Pixmap mask = im->create_mask(im->width(), im->height()); + XShapeCombineMask(fltk::xdisplay, fltk::xid(this), ShapeBounding, 0, 0, mask, ShapeSet); + + align(fltk::ALIGN_INSIDE); + image(im); + } +} + +MovableIcon::~MovableIcon() +{ +} diff --git a/eiconman/edeskicon.h b/eiconman/edeskicon.h new file mode 100755 index 0000000..816db37 --- /dev/null +++ b/eiconman/edeskicon.h @@ -0,0 +1,109 @@ +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef edeskicon_h +#define edeskicon_h + +#include +#include +#include +#include +#include + +/*#include +#include +#include +#include +#include +#include +#include */ +#include //#include +//#include +#include //#include +/*#include +#include */ +#include //#include +//#include +#include "../edelib2/EDE_Config.h" //#include +#include //#include +#include "../edelib2/NLS.h" //#include + +//#include +#include +#include +#include + +class MovableIcon; + +class Icon : public fltk::Widget +{ +public: + Icon(char *icon_config); + ~Icon(); + + virtual void draw(); + virtual void layout(); + virtual int handle(int e); + + EDE_Config *get_cfg() const { return cfg; } + + void update_icon(); + void update_all(); + + fltk::Image *icon_im; + + int lwidth, lheight; + + void cb_execute_i(); + static inline void cb_execute(fltk::Item *, void *d) { ((Icon*)d)->cb_execute_i(); } + +protected: + EDE_Config *cfg; + MovableIcon *micon; + + char* icon_file; + char* icon_name; + + int x_position; + int y_position; +}; + +class MovableIcon : public fltk::Window +{ + Icon *icon; +public: + MovableIcon(Icon *i); + ~MovableIcon(); +}; + +/////////////////////////////////////// + +extern int label_background; +extern int label_foreground; +extern int label_fontsize; +extern int label_maxwidth; +extern int label_gridspacing; +extern bool one_click_exec; + +extern void read_icons_configuration(); +extern void save_icon(Icon *); +extern void delete_icon(fltk::Widget*, Icon *); +extern int create_new_icon(); + +extern void update_iconeditdialog(Icon *); +extern void update_property_dialog(Icon *); + +extern char* get_localized_string(); +extern char* get_localized_name(EDE_Config &iconConfig); + +#endif + diff --git a/eiconman/eiconman.cpp b/eiconman/eiconman.cpp new file mode 100755 index 0000000..e048e0c --- /dev/null +++ b/eiconman/eiconman.cpp @@ -0,0 +1,837 @@ +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "eiconman.h" +#include "edeskconf.h" +#include "edeskicon.h" + +/*#include +#include +#include +#include */ +#include + +#include "../edeconf.h" + +int label_background = 46848; +int label_foreground = fltk::WHITE; +int label_fontsize = 12; +int label_maxwidth = 75; +int label_gridspacing = 16; +bool label_trans = false; +bool one_click_exec = 0; +bool auto_arr = false; + +Desktop *desktop = 0; + +void scanIcons(char *path) +{ +/* Fl_Directory_DS dds; + dds.directory(path); + dds.open(); + + while(!dds.eof()) + { + Fl_String name(dds["Name"].get_string()); + Fl_String filename(dds.directory() + name); + + dds.next(); + + if(access(filename, R_OK)!=0) continue; + + if(fl_file_match(name, "*.desktop")) { + Icon *desktopIcon = new Icon(filename); + desktopIcon->show(); + } + }*/ +// Rewrite using fltk::filename_list + dirent **files; + int num_files = fltk::filename_list(path, &files); // no sort needed because icons have coordinates + + if (num_files <= 0) + return; + + for (int i = 0; i < num_files; i++) { + char filename[256]; //fltk::PATH_MAX - expected unqualified-id before numeric constant (?!?!) + snprintf(filename,256,"%s/%s",path,files[i]->d_name); + if (access(filename, R_OK)!=0) continue; + if (fltk::filename_match(files[i]->d_name, "*.desktop")) { + Icon *desktopIcon = new Icon(filename); + desktopIcon->show(); + } + } +} + +void readIconsConfiguration() +{ + EDE_Config globalConfig(EDE_Config::find_config_file("ede.conf", 0), true, false); + + globalConfig.set_section("IconManager"); + globalConfig.read("Label Background", label_background, 46848); + globalConfig.read("Label Transparent", label_trans, false); + globalConfig.read("Label Foreground", label_foreground, fltk::WHITE); + globalConfig.read("Label Fontsize", label_fontsize, 12); + globalConfig.read("Label Maxwidth", label_maxwidth, 75); + globalConfig.read("Gridspacing", label_gridspacing, 16); + globalConfig.read("OneClickExec", one_click_exec, 0); + globalConfig.read("AutoArrange", auto_arr, false); +} + +void cb_update_workarea(fltk::Widget *, void *arg) +{ + ((Desktop*)arg)->update_workarea(); +} + +void refresh(fltk::Widget *, void *arg) +{ + desktop->update_icons(); +} + +void icons_properties(fltk::Widget *, void *arg) +{ + run_program("eiconsconf",false); +} + +void desktop_properties(fltk::Widget *, void *arg); + +Desktop::Desktop() + : fltk::DoubleBufferWindow(0, 0, w(), h(), "EIconMan") +{ + //Fl_WM::callback(cb_update_workarea, this, Fl_WM::DESKTOP_WORKAREA); + + wpaper = 0; + bg_color = fltk::BLUE; + bg_opacity = 255; + bg_mode = 0; + + //window_type(Fl_WM::DESKTOP); + + popup = new fltk::PopupMenu(0, 0, 0, 0); + popup->type(fltk::PopupMenu::POPUP3); + popup->begin(); + + fltk::Item *icon; + + icon = new fltk::Item(_("&New desktop item")); + icon->callback((fltk::Callback*)create_new_icon, 0); + //icon->x_offset(18); + + icon = new fltk::Item(_("&Refresh")); + icon->callback((fltk::Callback*)refresh, 0); + //icon->x_offset(18); + + new fltk::Divider(); + + icon = new fltk::Item(_("&Icons Settings ")); + icon->callback((fltk::Callback*)icons_properties, (void*) this); + //icon->x_offset(18); + + icon = new fltk::Item(_("&Background Settings")); + icon->callback((fltk::Callback*)desktop_properties, (void*) this); + //icon->x_offset(18); + + + popup->end(); + + end(); + show(); +} + +Desktop::~Desktop() +{ + if(wpaper) delete wpaper; +} + +void Desktop::update_workarea() +{ + int X=0,Y=0,W=w(),H=h(); + // Get current workarea + //Fl_WM::get_workarea(X,Y,W,H); + + resize(X,Y,W,H); + layout(); + if(auto_arr) auto_arrange(); +} + +void Desktop::update_icons() +{ + for(int n=0; nupdate_all(); + } + if(auto_arr) + auto_arrange(); + + fltk::flush(); +} + +void Desktop::auto_arrange() +{ + int X=label_maxwidth/5+10; + int Y=10; + int H=h(); + for(int n=0; nposition(X, Y); + Y += i->h() + i->lheight + label_gridspacing + 10; + if((Y-10)>=H) { + Y=10; + X+=label_maxwidth; + again = true; + } + } while(again); + } + relayout(); + redraw(); +} + +int create_new_dnd_icon(int x, int y, char *filename) //create icon from dnd data +{ + if (filename) + { + char config[256]; //fltk::PATH_MAX - expected unqualified-id before numeric constant (?!?!) + const char *name = fltk::filename_name(filename); + snprintf(config, sizeof(config)-1, "%s/.ede/desktop/%s.desktop", getenv("HOME"), name); + + if (!fltk::filename_exist((char*)config)) + { + char val[256]; //fltk::PATH_MAX - expected unqualified-id before numeric constant (?!?!) + EDE_Config checkconf(filename, true, false); + + if(!checkconf.get("Desktop Entry", "Exec", val, 0, sizeof(val))) + { + EDE_Config cfg(config); + cfg.set_section("Desktop Entry"); + + checkconf.get("Desktop Entry", "Icon", val, "no icon", sizeof(val)); + cfg.write("Icon", val); + cfg.write("X", x); + cfg.write("Y", y); + cfg.write(get_localized_string(), get_localized_name(checkconf)); + + checkconf.get("Desktop Entry", "Exec", val, filename, sizeof(val)); + cfg.write("Exec", val); + cfg.flush(); + } + else + { + EDE_Config cfg(config); + cfg.set_section("Desktop Entry"); + cfg.write("Icon", "no icon"); + cfg.write("X", x); + cfg.write("Y", y); + cfg.write(get_localized_string(), name); + cfg.write("Exec", filename); + cfg.flush(); + } + desktop->begin(); + Icon *icon = new Icon((char*)config); + icon->show(); + desktop->end(); + desktop->redraw(); + } + else + { + fltk::alert(_("The icon with the same name already exists.")); + } + } + return 0; +} + +int Desktop::handle(int event) +{ + if (event == fltk::KEY) + { + const int numchildren = children(); + int previous = focus_index()>0?focus_index():0; + int i; + + if (fltk::focus()==this || fltk::focus() && !contains(fltk::focus())) return 0; + int key = navigation_key(); + if(key) + for (i = previous;;) { + if (key == fltk::LeftKey || key == fltk::UpKey) + { + if (i) --i; + else + { + if (parent()) return false; + i = numchildren-1; + } + } + else + { + ++i; + if (i >= numchildren) + { + if (parent()) return false; + i = 0; + } + } + if (i == previous) break; + if (key == fltk::DownKey || key == fltk::UpKey) + { + // for up/down, the widgets have to overlap horizontally: + fltk::Widget* o = child(i); + fltk::Widget* p = child(previous); + if (o->x() >= p->x()+p->w() || o->x()+o->w() <= p->x()) continue; + } + if (child(i)->take_focus()) { + redraw(); + return true; + } + } + + return 1; + } + + int ret = fltk::DoubleBufferWindow::handle(event); + + switch(event) + { + case fltk::PUSH: + if(fltk::event_button()==3) { + popup->fltk::Menu::popup(fltk::Rectangle(fltk::event_x_root(), fltk::event_y_root())); + } + break; + case fltk::FOCUS: + case fltk::UNFOCUS: + return 1; + + case fltk::DND_ENTER: + return 1; + case fltk::DND_DRAG: + //cursor((fltk::Cursor*)26, 70, 96); + cursor((fltk::Cursor*)26); // FIXME - colors + //cursor(fltk::CURSOR_MOVE, 70, 96); + case fltk::DND_RELEASE: +// cursor(fltk::CURSOR_DEFAULT, fltk::BLACK, fltk::WHITE); + cursor(fltk::CURSOR_DEFAULT); // FIXME - colors + return 1; + case fltk::PASTE: + create_new_dnd_icon(fltk::event_x_root(), fltk::event_y_root(), (char*)fltk::event_text()); + return 1; + + default: + break; + } + + return ret; +} + +static int iconChangeHandler(int e) +{ +/* if(!e && fltk::xevent.type==ClientMessage && fltk::xevent.xclient.message_type==FLTKChangeSettings) + { + readIconsConfiguration(); + desktop->update_icons(); + return 1; + } + return 0;*/ +} + +void Desktop::draw() +{ + int numchildren = children(); + + if(wpaper) { + wpaper->draw(fltk::Rectangle(0,0,w(),h())); + } else { + fltk::color(bg_color); + fltk::fillrect(0,0,w(),h()); + } + + int n; + for(n = numchildren; n--;) { + fltk::Widget &w = *child(n); + if(!fltk::not_clipped(fltk::Rectangle(w.x(), w.y(), w.w(), w.h()))) + continue; + fltk::push_matrix(); + fltk::translate(w.x(), w.y()); + w.set_damage(fltk::DAMAGE_ALL|fltk::DAMAGE_EXPOSE); + w.draw(); + w.set_damage(0); + fltk::pop_matrix(); + } +} + +WPaper *make_image(fltk::Color bg_color, fltk::SharedImage *im, int w, int h, int mode, uchar opacity); + +void Desktop::update_bg() +{ + //Fl_Renderer::system_init(); + + if (wpaper) { + delete wpaper; + wpaper=0; + } + + EDE_Config globalConfig(EDE_Config::find_config_file("ede.conf", 0), true, false); + globalConfig.set_section("Desktop"); +// globalConfig.read("Color", bg_color, (fltk::Color)fltk::darker(fltk::BLUE)); + globalConfig.read("Color", bg_color, fltk::BLUE); + globalConfig.read("Opacity", bg_opacity, 255); + globalConfig.read("Mode", bg_mode, 0); + globalConfig.read("Use", bg_use, 1); + + fltk::SharedImage *im=0; + + if(!globalConfig.read("Wallpaper", bg_filename, 0)) { + if(bg_use) { + im = fltk::SharedImage::get(bg_filename); +// if (im) im->system_convert(); + } + } else { + free(bg_filename); + bg_filename=0; + } + + if(im) { + wpaper = make_image(bg_color, im, w(), h(), bg_mode, bg_opacity); + delete im; + } + redraw(); +} + +#include + +static bool running = true; + +void exit_signal(int signum) +{ + printf("Exiting (got signal %d)\n", signum); + running = false; +} + +int main(int argc, char ** argv) +{ + signal(SIGTERM, exit_signal); + signal(SIGKILL, exit_signal); + signal(SIGINT, exit_signal); + +// fl_init_locale_support("eiconman", PREFIX"/share/locale"); + //fl_init_images_lib(); + + desktop = new Desktop(); + desktop->begin(); + + char homedir[256]; //fltk::PATH_MAX - expected unqualified-id before numeric constant (?!?!) + snprintf(homedir,256,"%s/.ede/desktop/",getenv("HOME")); + if(fltk::filename_isdir(homedir)) { + scanIcons(homedir); + } + + desktop->end(); + desktop->show(); + + readIconsConfiguration(); + + desktop->update_workarea(); + desktop->update_bg(); + desktop->update_icons(); + + //fltk::add_handler(iconChangeHandler); FIXME + + while(running) fltk::wait(); + + delete desktop; + + return 0; +} + +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// + +//WPaper::WPaper(int W, int H, Fl_PixelFormat *fmt) +//: Fl_Image(W,H,fmt,0) +WPaper::WPaper(int W, int H) +: fltk::SharedImage() +{ + w(W); + h(H); +// FIXME weird stuff... +// no_screen(true); +// state_effect(false); +} + +WPaper::~WPaper() +{ +// if(id) { +// fltk::delete_offscreen((Pixmap)id); +// id=0; +// } +// clear(); +} + +void WPaper::_draw(int dx, int dy, int dw, int dh, + int sx, int sy, int sw, int sh, + fltk::Flags f) +{ +// if(!id) fltk::Image::_draw(dx,dy,dw,dh,sx,sy,sw,sh,f); +// if(id && m_data) { +// delete m_data; +// m_data=0; +// } +// if(id) { +// // convert to Xlib coordinates: +// fltk::transform(dx,dy); +// fltk::copy_offscreen(dx,dy,dw,dh,(Pixmap)id,0,0); +// } +} + +WPaper *make_image(fltk::Color bg_color, + fltk::SharedImage *im, + int w, int h, + int mode, + uchar opacity=255) +{ + // secret box render function from Fl_Image :) + //extern uint8 *render_box(int w, int h, int bitspp, uint color, fltk::Colormap *pal, uint8 *buffer); + + //Fl_PixelFormat fmt = Fl_Renderer::system_format(); + //WPaper *bg_image = new WPaper(w, h, Fl_Renderer::system_format()); + WPaper *bg_image = new WPaper(w, h); + + int iw=im->width(), ih=im->height(); + int ix=0, iy=0; + int xoff=0, yoff=0; + fltk::SharedImage *newim = im; + + switch(mode) { + //CENTER + case 0: { + ix=(w/2)-(iw/2); + iy=(h/2)-(ih/2); + if(ix<0) xoff=-ix; if(iy<0) yoff=-iy; + if(ix<0) ix=0; if(iy<0) iy=0; + } + break; + + //STRECH + case 1: { + ix=0, iy=0, iw=w, ih=h; + if(w!=im->width()||h!=im->height()) { + newim = im->scale(w,h); + } + } + break; + + //STRETCH ASPECT + case 2: { + int pbw = w, pbh = h; + iw = pbw; + ih = iw * im->height() / im->width(); + if(ih > pbh) { + ih = pbh; + iw = ih * im->width() / im->height(); + } + ix=(w/2)-(iw/2), iy=(h/2)-(ih/2); + if(ix<0) ix=0; if(iy<0) iy=0; + if(iw>w) iw=w; if(ih>h) ih=h; + if(iw!=im->width()||ih!=im->height()) { + newim = im->scale(iw,ih); + } + } + break; + } + + // This could be an option, opacity + newim->format()->alpha = opacity; + + if( (iwformat()->alpha!=255) { + // If image doesnt fill the whole screen, or opacity < 255 + // fill image first with bg color. + //render_box(w, h, fmt->bitspp, bg_color, fmt->palette, bg_image->data()); + } + + if(iw>w) iw=w; if(ih>h) ih=h; + fltk::Rectangle r(xoff, yoff, iw, ih); + fltk::Rectangle r2(ix,iy, iw, ih); + + if(newim->format()->alpha>0) { + // Blit image data to our bg_image + bg_image->check_map(newim->format()); + //fltk::Renderer::alpha_blit(newim->data(), &r, newim->format(), newim->pitch(), + // bg_image->data(), &r2, bg_image->format(), bg_image->pitch(), + // 0); + } + + if(newim!=im) + delete newim; + + return bg_image; +} + +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// + +static bool shown = false, changed=false; +static WPaper *mini_wpaper=0; +static fltk::SharedImage *mini_image=0; +static int mode=0; +static bool use=true; +static uchar opacity=0; +static fltk::Color color=0; +static char* filename; + +void desktop_properties(fltk::Widget *, void *arg) +{ + if(!shown) { + make_desktop_properties(); + shown = true; + } + + mode = desktop->bg_mode; + color = desktop->bg_color; + opacity = desktop->bg_opacity; + use = desktop->bg_use; + filename = desktop->bg_filename; + + if(bg_prop_window->visible()) { + bg_prop_window->show(); + return; + } + + if(mini_image) { delete mini_image; mini_image=0; } + if(mini_wpaper){ delete mini_wpaper; mini_wpaper=0;} + + color_button->selection_color(color); + mini_image_box->color(color); + opacity_slider->value(opacity); + mode_choice->value(mode); + use_button->value(use); + image_input->value(filename); + + if(!desktop->bg_filename.empty()) + { + fltk::SharedImage *im = fltk::SharedImage::read(desktop->bg_filename); + if(im) { + im->system_convert(); + float scalew = (float)mini_image_box->w()/(float)desktop->w(); + float scaleh = (float)mini_image_box->h()/(float)desktop->h(); + mini_image = im->scale(int(im->width()*scalew), int(im->height()*scaleh)); + delete im; + } + } + + if(mini_image) { + mini_wpaper = make_image(color, mini_image, + mini_image_box->w(), mini_image_box->h(), + mode, opacity); + mini_image_box->image(mini_wpaper); + } else + mini_image_box->image(0); + + if(use) + bg_image_group->activate(); + else { + bg_image_group->deactivate(); + mini_image_box->image(0); + } + + bg_prop_window->show(); +} + +void bg_image_use(fltk::CheckButton *w, void *d) +{ + changed=true; + use = (bool)w->value(); + if(w->value()) { + bg_image_group->activate(); + mini_image_box->image(mini_wpaper); + } else { + bg_image_group->deactivate(); + mini_image_box->image(0); + } + + bg_image_group->redraw(); + mini_image_box->redraw(); +} + +void bg_image_mode(fltk::Choice *w, void *d) +{ + changed=true; + mode = w->value(); + if(mini_wpaper) delete mini_wpaper; + if(mini_image) { + mini_wpaper = make_image(color, mini_image, + mini_image_box->w(), mini_image_box->h(), + mode, opacity); + mini_image_box->image(mini_wpaper); + } else { + mini_image_box->image(0); + } + mini_image_box->redraw(); +} + +void bg_image_input(fltk::Input *w, void *d) +{ + changed=true; + +// Fl_String val(w->value()); +// filename = fl_file_expand(val); + filename = strdup(w->value()); + + if(mini_wpaper) { delete mini_wpaper; mini_wpaper=0; } + if(mini_image) { delete mini_image; mini_image=0; } + + fltk::SharedImage *im = fltk::SharedImage::read(filename); + if(im) { + im->system_convert(); + float scalew = (float)mini_image_box->w()/(float)desktop->w(); + float scaleh = (float)mini_image_box->h()/(float)desktop->h(); + mini_image = im->scale(int(im->width()*scalew), int(im->height()*scaleh)); + delete im; + } + + if(mini_image) { + mini_wpaper = make_image(color, mini_image, + mini_image_box->w(), mini_image_box->h(), + mode, opacity); + mini_image_box->image(mini_wpaper); + } else { + mini_image_box->image(0); + } + + image_input->value(filename); + image_input->redraw(); + mini_image_box->redraw(); +} + +void bg_image_opacity(fltk::ValueSlider *w, void *d) +{ + changed=true; + opacity = (uchar)w->value(); + + if(mini_wpaper) delete mini_wpaper; + if(mini_image) { + mini_wpaper = make_image(color, mini_image, + mini_image_box->w(), mini_image_box->h(), + mode, opacity); + mini_image_box->image(mini_wpaper); + } else { + mini_image_box->image(0); + } + mini_image_box->redraw(); +} + +void bg_image_browse(fltk::Button *w, void *d) +{ + changed=true; + fc_initial_preview = true; + const char *f=fltk::file_chooser(image_input->value(), + _("All Files, *," + "Png Images, *.png," + "Xpm Images, *.xpm," + "Jpeg Images, *.{jpg|jpeg}," + "Gif Images, *.gif," + "Bmp Images, *.bmp"), + _("Choose wallpaper:") + ); + + if(f) { + if(mini_wpaper) { delete mini_wpaper; mini_wpaper=0; } + if(mini_image) { delete mini_image; mini_image=0; } + + filename = f; + + fltk::SharedImage *im = fltk::SharedImage::read(f); + if(im) { + im->system_convert(); + float scalew = (float)mini_image_box->w()/(float)desktop->w(); + float scaleh = (float)mini_image_box->h()/(float)desktop->h(); + mini_image = im->scale(int(im->width()*scalew), int(im->height()*scaleh)); + delete im; + } + + if(mini_image) { + mini_wpaper = make_image(color, mini_image, + mini_image_box->w(), mini_image_box->h(), + mode, opacity); + mini_image_box->image(mini_wpaper); + } else + mini_image_box->image(0); + + image_input->value(filename); + image_input->redraw(); + mini_image_box->redraw(); + delete []f; + } +} + +void bg_image_color(fltk::LightButton *w, void *d) +{ + changed=true; + fltk::Color nc = color; + if(!fltk::color_chooser(_("Choose color"), nc)) + return; + + color = nc; + + mini_image_box->color(nc); + color_button->selection_color(color); + + if(mini_wpaper) delete mini_wpaper; + if(mini_image) { + mini_wpaper = make_image(color, mini_image, + mini_image_box->w(), mini_image_box->h(), + mode, opacity); + mini_image_box->image(mini_wpaper); + } else { + mini_image_box->image(0); + } + mini_image_box->redraw(); +} + +void bg_prop_cb(fltk::Window *w, void *d) +{ + if(mini_wpaper) { delete mini_wpaper; mini_wpaper=0; } + if(mini_image) { delete mini_image; mini_image=0; } + w->hide(); + + shown = false; + delete w; +} + +void bg_apply(fltk::Button *w, void *d) +{ + if(changed) { + EDE_Config globalConfig(EDE_Config::find_config_file("ede.conf", 1), true, true); + globalConfig.set_section("Desktop"); + globalConfig.write("Color", color); + globalConfig.write("Opacity", int(opacity)); + globalConfig.write("Wallpaper", filename); + globalConfig.write("Mode", mode); + globalConfig.write("Use", use); + globalConfig.flush(); + + desktop->update_bg(); + } + changed=false; +} + +void bg_ok(fltk::Button *w, void *d) +{ + bg_apply(w,d); + bg_prop_window->destroy(); +} diff --git a/eiconman/eiconman.h b/eiconman/eiconman.h new file mode 100755 index 0000000..57c4757 --- /dev/null +++ b/eiconman/eiconman.h @@ -0,0 +1,111 @@ +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef EICONMAN_H +#define EICONMAN_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include //#include +#include //#include +//#include +#include //#include +/*#include +#include +#include +#include +#include +#include */ +#include //#include +/*#include +#include */ +#include //#include +/*#include +#include +#include +#include +#include +#include +#include +#include +#include */ +#include // for PATH_MAX +#include +//#include +#include +#include +#include +#include "../edelib2/NLS.h" //#include +#include "../edelib2/EDE_Run.h" //#include + +class WPaper; + +class Desktop : public fltk::DoubleBufferWindow +{ +public: + Desktop(); + ~Desktop(); + + virtual int handle(int); + virtual void hide() {} + + virtual void draw(); + + void update_bg(); + void update_icons(); + void update_workarea(); + + void auto_arrange(); + + WPaper *wpaper; //Generated image + fltk::Color bg_color; + bool bg_use; + int bg_opacity, bg_mode; + char* bg_filename; + + fltk::PopupMenu *popup; +}; + +class WPaper : public fltk::SharedImage +{ +public: + WPaper(int W, int H); +// WPaper(int W, int H, Fl_PixelFormat *fmt); + ~WPaper(); + + void _draw(int dx, int dy, int dw, int dh, + int sx, int sy, int sw, int sh, + fltk::Flags f); + +}; + +extern Desktop *desktop; + +extern int label_background; +extern int label_foreground; +extern int label_fontsize; +extern bool label_trans; +extern int label_maxwidth; +extern int label_gridspacing; +extern bool one_click_exec; + +#endif diff --git a/eiconman/icons/clean.xpm b/eiconman/icons/clean.xpm new file mode 100755 index 0000000..8999d5e --- /dev/null +++ b/eiconman/icons/clean.xpm @@ -0,0 +1,20 @@ +/* XPM */ +static char * clean_xpm[] = { +"24 16 1 1", +" c None", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/eiconman/icons/monitor.xpm b/eiconman/icons/monitor.xpm new file mode 100755 index 0000000..bdef8e4 --- /dev/null +++ b/eiconman/icons/monitor.xpm @@ -0,0 +1,174 @@ +/* XPM */ +static char * monitor_xpm[] = { +"180 160 11 1", +" c None", +". c #FFFFFF", +"+ c #C5C6C5", +"@ c #CDC2CD", +"# c #C5C2C5", +"$ c #CDC6CD", +"% c #626162", +"& c #9CB2B4", +"* c #526573", +"= c #39FF31", +"- c #39FA31", +" ............................................................................................................................................................................... ", +" ................................................................................................................................................................................. ", +" ...+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$.%%", +" ..+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+%%", +" ..+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+%%", +" ..$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#+%%", +" ..+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+%%", +" ..+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+@+%%", +" ..$#+#+@+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#+#+%%", +" ..+#+@+#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+@+#$#+#%%", +" ..+@+#+#$#% .+#+#+@+#%%", +" ..$#+#$#+#% .$#$#+#$#%%", +" ..+#+@+#+#% .+#+#$#+#%%", +" ..+@+#+#$#% .$#+@+#+#%%", +" ..$#+#+@+#% .+#$#+#$#%%", +" ..+#+@+#+#% .$#+#+#+#%%", +" ..+@+#+#+#% .+#+#$#+#%%", +" ..$#+#$#$#% .+@+#+@+#%%", +" ..+#+@+#+#% .$#+@+#+@%%", +" ..+@+#+#+#% .+#+#+@+#%%", +" ..$#+#+@+@% .+@+#+#+#%%", +" ..+#+@+#+#% .+#+@+#$#%%", +" ..+@+#+@+#% .$#+#$#+#%%", +" ..$#+#$#+#% .+#$#+#+#%%", +" ..+#+@+#+#% .+@+#+@+#%%", +" ..+@+#+#$#% .+#+#$#+#%%", +" ..$#+#+@+#% .$#+#+#$#%%", +" ..+#+@+#+#% .+#$#+@+#%%", +" ..+@+#+#+#% .$#+#$#+#%%", +" ..$#+#$#$#% .+#$#+#+#%%", +" ..+#+@+#+#% .+@+#+#$#%%", +" ..+@+#+#+#% .$#+#+@+#%%", +" ..$#+#+@+@% .+#+@+#+#%%", +" ..+#+@+#+#% .+#$#+#+#%%", +" ..+@+#+@+#% .+@+#+#$#%%", +" ..$#+#$#+#% .$#+#+@+#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#$#% .+@+#+#+#%%", +" ..$#+#+@+#% .$#+#$#$#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#+#% .+#$#+#+#%%", +" ..$#+#$#$#% .$#+#+#$#%%", +" ..+#+@+#+#% .+#+#$#+#%%", +" ..+@+#+#$#% .+@+#+#+#%%", +" ..$#+#+@+#% .$#+@+#$#%%", +" ..+#+@+#+#% .+#+#+@+#%%", +" ..+@+#+#+#% .+@+#+#+#%%", +" ..$#+#$#$#% .$#+#$#+#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#$#% .+@+#+#$#%%", +" ..$#+#+@+#% .$#+#$#+#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#+#% .+@+#+#$#%%", +" ..$#+#$#$#% .$#+#+@+#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#$#% .+@+#+#+#%%", +" ..$#+#+@+#% .+#+#$#$#%%", +" ..+#+@+#+#% .$#+@+#+#%%", +" ..+@+#+#+#% .+#$#+#+#%%", +" ..$#+#$#$#% .+@+#+#$#%%", +" ..+#+@+#+#% .$#+#+@+#%%", +" ..+@+#+#$#% .+#+#$#+#%%", +" ..$#+#+@+#% .+@+#+#+#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#+#% .$#+#+@+#%%", +" ..$#+#$#$#% .+#$#+#$#%%", +" ..+#+@+#+#% .+@+#$#+#%%", +" ..+@+#+#$#% .$#+#+#+#%%", +" ..$#+#+@+#% .+#+#$#$#%%", +" ..+#+@+#+#% .+#$#+#+#%%", +" ..+@+#+#+#% .$#+#+#$#%%", +" ..$#+#$#$#% .+#+@+#+#%%", +" ..+#+@+#+#% .$#+#$#+#%%", +" ..+@+#+#$#% .+#$#+#$#%%", +" ..$#+#+@+#% .+@+#+@+#%%", +" ..+#+@+#+#% .$#+#$#+#%%", +" ..+@+#+#+#% .+#+@+#+#%%", +" ..$#+#$#$#% .+@+#+#+#%%", +" ..+#+@+#+#% .+#+#+@+#%%", +" ..+@+#+#$#% .$#+@+#+@%%", +" ..$#+#+@+#% .+#$#+#$#%%", +" ..+#+@+#+#% .$#+#+@+#%%", +" ..+@+#+#+#% .+#+@+#+#%%", +" ..$#+#$#$#% .+@+#+#+#%%", +" ..+#+@+#+#% .+#+#$#$#%%", +" ..+@+#+#$#% .$#+@+#+#%%", +" ..$#+#+@+#% .+#$#+#+#%%", +" ..+#+@+#+#% .+@+#+#$#%%", +" ..+@+#+#+#% .+#+#+@+#%%", +" ..$#+#$#$#% .$#+#$#+#%%", +" ..+#+@+#+#% .+#$#+#+#%%", +" ..+@+#+#$#% .$#+#+#$#%%", +" ..$#+#+@+#% .+#+@+#+#%%", +" ..+#+@+#+#% .+@+#+@+#%%", +" ..+@+#+#+#% .$#+#$#+#%%", +" ..$#+#$#$#% .+#+@+#+#%%", +" ..+#+@+#+#% .+#$#+#$#%%", +" ..+@+#+#$#% .+@+#+#+#%%", +" ..$#+#+@+#% .$#+#+#$#%%", +" ..+#+@+#+#% .+#+@+#+#%%", +" ..+@+#+#+#% .+#$#+@+#%%", +" ..$#+#$#$#% .+@+#+#+#%%", +" ..+#+@+#+#% .$#+#+@+#%%", +" ..+@+#+#$#% .+#+@+#+@%%", +" ..$#+#+@+#% .+#$#+#$#%%", +" ..+#+@+#+#% .+@+#+@+#%%", +" ..+@+#+#+#% .$#+#+#+#%%", +" ..$#+#$#$#% .+#+@+#+#%%", +" ..+#+@+#+#% .+@+#+@+#%%", +" ..+@+#+#$#% .+#+@+#+@%%", +" ..$#+#+@+#% .$#+#+@+#%%", +" ..+#+@+#+#% .+#$#+#+#%%", +" ..+@+#+#+#% .$#+#$#+#%%", +" ..$#+#$#$#% .+#+@+#$#%%", +" ..+#+@+#+#% .+@+#+#+#%%", +" ..+@+#+#$#% .$#+#$#+#%%", +" ..$#+#+@+#% .+#+@+#+#%%", +" ..+#+@+#+#% .+#$#+#$#%%", +" ..+@+#+#+#% .+@+#+#+#%%", +" ..$#+#$#$#% &.$#+#+@+#%%", +" ..+#+@+#+#% *.+#+@+#+#%%", +" ..+@+#+#$#%..............................................................................................................................................................+#$#+#$#%%", +" ..$#+#+@+#+#$#$#$#+@+@+@+#$#$#$#$#+@+@+#$#$#$#+@+@+#$#+@+#$#$#+@+@+#$#$#+@+@+#$#$#+@+@+@+@+@+#$#$#$#+#$#+@+@+@+#+@+@+@+#$#$#$#$#$#$#$#+@+@+#+@+@+#+@+@+@+#$#$#+@+@+#$#$#+@+#+#$#+%%", +" ..+#+@+#+#$#+#+#+#$#+#+#+@+#+#+#+#$#+#+@+#+#+#$#+#+#+@+#+@+#+#$#+#+@+#+#$#+#+@+#+#$#+#+#+#+#+@+#+#+#$#+#$#+#+#+@+#+#+#+@+#+#+#+#+#+#+#$#+#+@+#+#+@+#+#+#+@+#+#$#+#+@+#+#$#+#+@+#+%%", +" ..+@+#+#+@+#+@+#$#+#+@+#$#+#$#+@+#+#+#$#+#$#+@+#+#$#+#+@+#+#$#+#+@+#+#$#+#+@+#+#$#+#+#$#+@+#$#+#+@+#+#$#+#+@+#$#+#$#+@+#+#$#+#$#+@+#$#+#+@+#+@+#+#+@+#$#+#+#$#+#+#$#+#+@+#+#$#+#+%%", +" ..$#+#$#+#+#$#+#+#+@+#+@+#+#+#$#+@+#$#+#+@+#+#+#$#+#$#+#+#+@+#+#$#+#+@+#+#$#+#+@+#+@+#+#$#+#+#+@+#+@+#+#+@+#+@+#+@+#+#+#$#+#$#+#$#+#+#+@+#+#$#+#$#+#+@+#$#+#+#+@+#+#+@+#+#$#+#+#+%%", +" ..+#+@+#$#+@+#+@+#$#+#$#+#+@+#+#+#+@+#+#$#+#$#+#+#$#+#$#+@+#+#$#+#+@+#+#$#+#+@+#+#$#+@+#+#+@+#+#+#$#+@+#$#+#$#+#+#+#$#+@+#+@+#+@+#+@+#$#+#$#+#+@+#$#+#+#+#$#+@+#+@+#+#+#+@+#+#$#+%%", +" ..+@+#+#+#$#+#+#+@+#+#+#+@+#+@+#+@+#+#$#+#+@+#+@+#+#+@+#+#+#+@+#+#$#+#+@+#+#$#+#+@+#+#+@+#$#+#$#+@+#+#+@+#+#+#+@+#$#+#$#+#+#+#$#+#+#+@+#+#+#+@+#+#+#$#+#$#+#$#+#$#+#$#+@+#+#$#+#$%%", +" ..$#+#$#+#+#+@+#$#+#+@+#+#+#$#+@+#+#+@+#+#$#+#$#+@+#$#+#$#+@+#+#$#+#+@+#+#$#+#+@+#+#+@+#+@+#+@+#+#+#+@+#+#$#+#$#+#+#+@+#+#$#+#+#+@+#$#+#+@+#$#+#$#+#+#$#+#$#+#+@+#+@+#+#+#+@+#+@+%%", +" ..+#+@+#+@+#+#$#+#+@+#+@+#$#+#+#+#$#+#+#$#+#+@+#+#+@+#+#+#$#+#+@+#+#$#+#+@+#+#$#+#+@+#+#$#+#+#+#$#+@+#+#+@+#+@+#+@+#$#+#+@+#+@+#+#$#+#+@+#+@+#+#+#$#+@+#+@+#+#$#+#+#+#$#+@+#+#$#+%%", +" ..%#$#+#$#+#$#+#+#$#+#$#+#+#+@+#+@+#$#+#+#+#$#+#+#$#+#+@+#+#+@+#+#$#+#+@+#+#$#+#+@+#+#$#+#+@+#$#+#+#+#$#+#+@+#+#$#+#+#+@+#+#$#+#$#+#+#$#+#$#+#+@+#+@+#+#$#+#+@+#+#$#+@+#+#+#$#+#%%%", +" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", +" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", +" ..+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#%% ", +" ..+#+#...........%#+#+...........%#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#=-+#+.............%#+%% ", +" ..+@+#.$#+@+#$#+#%#$#+.$#+@+#$#+#%#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+#=-+#+.$#+@+#$#+@+#%#+%% ", +" ..+#+@.+#$#+#+#$#%#+#$.+#$#+#+#$#%#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#=-+#$.+#$#+#+#$#+#%#+%% ", +" ..$#+#.+@+#+@+#+#%@+#+.+@+#+@+#+#%@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#=-+#+.+@+#+@+#+#+#%@+%% ", +" ..+#$#.%%%%%%%%%%%#+@+.%%%%%%%%%%%#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#=-+@+.$#+#+#+@+#$#%#+%% ", +" ..$#+#$#+#+#+#+#+#+#+#$#+#+#+#+#+#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#+#+#+#.%%%%%%%%%%%%%#+%% ", +" ..+#+@+#+#+#+#$#+#$#+@+#+#+#+#$#+#$#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#$#+#+#+#+#+#+#+#+#%% ", +" ..%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", +" .%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", +" ..+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#%% ", +" ..+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#%% ", +" ..+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#%% ", +" ..+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#%% ", +" .............................................................................................. ", +" .............................................................................................% ", +" ..+@+#$#+@+#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#%% ", +" ..+#+@+#+#+@+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#%% ", +" ..$#+#+#$#+#+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#%% ", +" ..+#$#+@+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#+#$#+#%% ", +" ..$#+#$#+#+#$#+@+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+#%% ", +" ..+#+@+#+#+@+#+#+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#+@+#$#%% ", +" ..$#+#+#$#+#+@+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#%% ", +" ..+#$#+#+#$#+#$#+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#%% ", +" ..$#+#$#+@+#$#+#$#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+@+#+#+#%% ", +" ..%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", +" .%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "}; diff --git a/eiconman/locale/hu.po b/eiconman/locale/hu.po new file mode 100755 index 0000000..85de808 --- /dev/null +++ b/eiconman/locale/hu.po @@ -0,0 +1,209 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-10 14:35+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Háttér beállítások" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Háttér" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "S&zín..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "Háttérkép használata" + +#: edeskconf.cpp:91 +#: edeskconf.cpp:130 +msgid "label" +msgstr "címke" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Kép:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Tallóz" + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Áttetsző:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "Mód:" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "Középen" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "Nyújtás" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "Nyújtás (aránymegtartás)" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "Mozaik" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 +#: propdialog.cpp:113 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "Mégs&em" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "Me&gnyitás" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "Tö&rlés" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Tulajdonságok" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Az ikon nevét meg kell adni." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Letöröljem ezt az ikont?" + +#: edeskicon.cpp:473 +#, c-format +msgid "Remove of the icon %s failed. You probably do not have write access to this file." +msgstr "Az ikon törlése sikertelen: %s . Feltehetően nincs hozzá írási jogosultságod." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Mi legyen az ikon neve ?" + +#: edeskicon.cpp:505 +#: eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Létezik már ikon ilyen néven." + +#: edeskicon.cpp:562 +#, c-format +msgid "%d bytes, %s" +msgstr "%d bájt, %s" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "Új iko&n" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "F&rissítés" + +#: eiconman.cpp:122 +msgid "&Icons Settings " +msgstr "I&kon beállítások" + +#: eiconman.cpp:126 +msgid "&Background Settings" +msgstr "Há&ttér beállítások" + +#: eiconman.cpp:718 +msgid "All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg},Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "Minden fájl, *,Png kép, *.png,Xpm kép, *.xpm,Jpeg kép, *.{jpg|jpeg},Gif kép, *.gif,Bmp kép, *.bmp" + +#: eiconman.cpp:724 +msgid "Choose wallpaper:" +msgstr "Háttérkép kiválasztása..." + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "Szín kiválasztása" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Minden fájl (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Fájl kiválasztása..." + +#: propdialog.cpp:39 +msgid "Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*.bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files (*.*), *" +msgstr "Png kép (*.png), *.png, Jpeg kép (*.jpeg), *.{jpeg|jpg}, Bmp kép (*.bmp), *.bmp, Gif kép (*.gif), *.gif, Xpm kép (*.xpm), *.xpm, Minden fájl (*.*), *" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Ikonfájl kiválasztása..." + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Ikon tulajdonságok" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Ikon" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Név:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Méret:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Parancs:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Beállítások" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Link fájl:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Ikon név:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Futtatandó alkalmazás:" + +#: propdialog.cpp:102 +#: propdialog.cpp:109 +msgid "..." +msgstr "..." + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Ikonfájl:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Bezár" + diff --git a/eiconman/locale/id.po b/eiconman/locale/id.po new file mode 100755 index 0000000..e596bc1 --- /dev/null +++ b/eiconman/locale/id.po @@ -0,0 +1,258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconman 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 202-11-29 14:43+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Seting latar belakang" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Latar belakang" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "&Warna..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "Gunakan wallpaper" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Citra:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Browse..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Opasitas:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "Mode:" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "Tengah" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "Stretch" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "Stretch (aspek)" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "Tiled" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "&Terapkan" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "&Batal" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "&Buka" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "&Hapus" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Properti" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Nama ikon harus diisi." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Hapus ikon ini?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +"Penghapusan ikon %s gagal. Anda mungkin tidak mempunyai hak tulis terhadap " +"file ini" + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Masukkan nama ikon baru:" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Ikon dengan nama sama telah ada." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d byte" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "&Item desktop baru" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "&Refresh" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "Seting" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr "Seting latar belakang" + +#: eiconman.cpp:718 +#, fuzzy +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" +"Citra Png, *.png,Citra Xpm, *.xpm,Citra Jpeg, *.{jpg|jpeg},Citra Gif, *.gif," +"Citra Bmp, *.bmp,Pilih wallpaper:" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr "Gunakan wallpaper" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "Pilih warna" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Buka lokasi..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Pemilihan file ikon" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Properti ikon" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Ikon" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Nama:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Ukuran:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Perintah:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Seting" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Link file:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Nama ikon:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Lokasi untuk dibuka:" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Nama file ikon:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Tutup" + +#~ msgid "&Edit" +#~ msgstr "&Edit" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr "Masukkan nama program atau lokasi untuk dibuka:" + +#~ msgid "Background color selection..." +#~ msgstr "Pemilihan warna latar belakang..." + +#~ msgid "Image selection..." +#~ msgstr "Pemilihan citra" + +#~ msgid "Wallpaper" +#~ msgstr "Wallpaper" + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ "Citra (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, Semua file (*." +#~ "*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr "Ikon (*.png), *.png, Semua file (*.*), *" + +#~ msgid "None" +#~ msgstr "Tidak ada" + +#~ msgid "&Bg Properties" +#~ msgstr "Properti &Bg" + +#~ msgid "All Files, *" +#~ msgstr "Semua file, *" diff --git a/eiconman/locale/messages.pot b/eiconman/locale/messages.pot new file mode 100755 index 0000000..0c3a976 --- /dev/null +++ b/eiconman/locale/messages.pot @@ -0,0 +1,218 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "" + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "" + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "" + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "" + +#: edeskicon.cpp:562 +#, c-format +msgid "%d bytes, %s" +msgstr "" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "" + +#: eiconman.cpp:122 +msgid "&Icons Settings " +msgstr "" + +#: eiconman.cpp:126 +msgid "&Background Settings" +msgstr "" + +#: eiconman.cpp:718 +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" + +#: eiconman.cpp:724 +msgid "Choose wallpaper:" +msgstr "" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "" + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "" diff --git a/eiconman/locale/ru.po b/eiconman/locale/ru.po new file mode 100755 index 0000000..93ca9d0 --- /dev/null +++ b/eiconman/locale/ru.po @@ -0,0 +1,259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr " " + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr " " + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr ":" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr ":" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr ":" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr " ()" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr " ." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr " ?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +" %s. " +" ." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr " :" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr " ." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d " + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr " " + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr " " + +#: eiconman.cpp:718 +#, fuzzy +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" +" Png, *.png, Xpm, *.xpm, Jpeg, *.{jpg|jpeg}," +" Gif, *.gif, Bmp, *.bmp, :" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr " " + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr " " + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr " ..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr " " + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr " " + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr ":" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr ":" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr ":" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr ":" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr " :" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr " :" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr ":" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "" + +#~ msgid "&Edit" +#~ msgstr "" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr " :" + +#~ msgid "Background color selection..." +#~ msgstr " ..." + +#~ msgid "Image selection..." +#~ msgstr " ..." + +#~ msgid "Wallpaper" +#~ msgstr "" + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ " (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, " +#~ "(*.*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr " (*.png), *.png, (*.*), *" + +#~ msgid "None" +#~ msgstr "" + +#~ msgid "&Bg Properties" +#~ msgstr " " + +#~ msgid "All Files, *" +#~ msgstr " , *" diff --git a/eiconman/locale/sk.po b/eiconman/locale/sk.po new file mode 100755 index 0000000..34adce7 --- /dev/null +++ b/eiconman/locale/sk.po @@ -0,0 +1,258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconman 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Nastavenie pozadia" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Pozadie" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "F&arba..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "Použiť tapetu" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Obrázok:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Kontrast:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "Mód:" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "Centrovať" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "Roztiahnuť" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "Roztiahnuť (aspekt)" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "Dláždiť" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "&Použiť" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "&Otvoriť" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "&Zmazať" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Vlastnosti" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Názov ikony musí byť vyplnení." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Zmazať túto ikonu?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +"Zmazanie ikony %s zlyhalo. Pravdepodobne namáte prístup na zapisovanie k " +"tomutosúboru." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Zadajte názov novej ikony:" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Ikona s tým istým menom už existuje." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d bajtov" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "&Nová položka plochy" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "&Obnoviť" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "Nastavenia" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr "Nastavenie pozadia" + +#: eiconman.cpp:718 +#, fuzzy +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" +"Png obrázky, *.png,Xpm obrázky, *.xpm,Jpeg obrázky, *.{jpg|jpeg},Gif " +"obrázky, *.gif,Bmp obrázky, *.bmp,Zvoliť tapetu:" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr "Použiť tapetu" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "Zvoliť farbu" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Otvoriť umiestnenie..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Výber súboru s ikonou" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Vlastnosti ikony" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Ikona" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Názov:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Rozmer:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Príkaz:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Nastavenia" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Súbor linky:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Názov ikony:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Otvoriť umiestnenie:" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Súbor ikony:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Zavrieť" + +#~ msgid "&Edit" +#~ msgstr "&Editovať" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr "Zadajte názov programu alebo umiestnenie, ktoré chcete otvoriť:" + +#~ msgid "Background color selection..." +#~ msgstr "Výber farby pozadia..." + +#~ msgid "Image selection..." +#~ msgstr "Výber obrázka..." + +#~ msgid "Wallpaper" +#~ msgstr "Tapeta" + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ "Obrázky (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, Všetky súbory " +#~ "(*.*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr "Ikony (*.png), *.png, Všetky súbory (*.*), *" + +#~ msgid "None" +#~ msgstr "Žiadny" + +#~ msgid "&Bg Properties" +#~ msgstr "&Nastavenie pozadia" + +#~ msgid "All Files, *" +#~ msgstr "Všetky súbory, *" diff --git a/eiconman/locale/sr.po b/eiconman/locale/sr.po new file mode 100755 index 0000000..537c32a --- /dev/null +++ b/eiconman/locale/sr.po @@ -0,0 +1,249 @@ +# EICONMAN - Prevod na srpski jezik +# Copyright (C) 2002 EDE Team +# Dejan Lekic Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: EICONMAN 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 2002-11-21 08:43+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Особине позадине" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Позадина" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "&Боја..." + +#: edeskconf.cpp:87 +#, fuzzy +msgid "Use wallpaper" +msgstr "Позадинска слика" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Слика:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Траћи..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Провидност:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&ОК" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "&Примени" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "О&дустани" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "&Отвори" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "О&бриши" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Вредности" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Назив иконе мора бити испуњен." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Обрисати ову икону?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +"Брисање иконе %s није успело. Вероватно немате право уписа у овај фајл." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Унесите име нове иконе:" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Икона са истим именом већ постоји." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d бајтова" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "&Нова ставка на десктоп-у" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "О&свежи" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "Вредности" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr "Особине позадине" + +#: eiconman.cpp:718 +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr "Позадинска слика" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Отвори локацију..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Селекција икон-фајла" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Особине иконе" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Икона" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Назив:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Величина:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Команда:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Вредности" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Линк фајл:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Назив иконе:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Локација за отварање:" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Назив фајла-иконе:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Затвори" + +#~ msgid "&Edit" +#~ msgstr "&Едитуј" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr "Унесите име програма или локацију за отварање:" + +#~ msgid "Background color selection..." +#~ msgstr "Селекција боје позадине..." + +#~ msgid "Image selection..." +#~ msgstr "Селекција слике..." + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ "Слике (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, Сви фајлови (*." +#~ "*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr "Иконе (*.png), *.png, Сви фајлови (*.*), *" + +#~ msgid "None" +#~ msgstr "Ништа" + +#~ msgid "&Bg Properties" +#~ msgstr "Особ&ине позадине" diff --git a/eiconman/propdialog.cpp b/eiconman/propdialog.cpp new file mode 100755 index 0000000..f4250a9 --- /dev/null +++ b/eiconman/propdialog.cpp @@ -0,0 +1,146 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.1000 + +#include "propdialog.h" +/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include +#include "edeskicon.h" +static Icon *ds_icon; + +fltk::Window *i_propertieswindow=(fltk::Window *)0; + +fltk::Group *i_icontab=(fltk::Group *)0; + +fltk::InvisibleBox *pr_icon=(fltk::InvisibleBox *)0; + +fltk::InvisibleBox *pr_name=(fltk::InvisibleBox *)0; + +fltk::InvisibleBox *pr_size=(fltk::InvisibleBox *)0; + +fltk::InvisibleBox *pr_exec=(fltk::InvisibleBox *)0; + +fltk::Group *i_settingstab=(fltk::Group *)0; + +fltk::Output *i_link=(fltk::Output *)0; + +fltk::Input *i_name=(fltk::Input *)0; + +fltk::Input *i_location=(fltk::Input *)0; + +static void cb_(fltk::Button*, void*) { + char *file_types = _("Executables (*.*), *, All files (*.*), *"); + const char *f = fltk::file_chooser(_("Open location..."), file_types, i_location->value()); + if (f) i_location->value(f); +} + +fltk::Input *i_filename=(fltk::Input *)0; + +static void cb_1(fltk::Button*, void*) { + char *file_types = _("Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*.bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files (*.*), *"); + const char *f = fltk::file_chooser(_("Icon file selection"), file_types, PREFIX"/share/ede/icons/48x48/"); + if (f) i_filename->value(f); +} + +static void cb_Apply(fltk::Button*, void*) { + save_icon(ds_icon); +} + +static void cb_Close(fltk::Button*, void*) { + i_propertieswindow->hide(); +} + +void property_dialog(fltk::Widget *, Icon *icon, bool show_settings) { + fltk::Window* w; + if(i_propertieswindow) { + update_property_dialog(icon); + update_iconeditdialog(icon); + ds_icon=icon; + if(show_settings) { i_icontab->hide(); i_settingstab->show(); } + i_propertieswindow->exec(); + return; + } + {fltk::Window* o = i_propertieswindow = new fltk::Window(295, 310, "Icon properties"); + w = o; + o->set_vertical(); + o->begin(); + {fltk::TabGroup* o = new fltk::TabGroup(5, 5, 285, 270); + o->begin(); + {fltk::Group* o = i_icontab = new fltk::Group(0, 25, 285, 240, "Icon"); + o->hide(); + o->begin(); + {fltk::InvisibleBox* o = pr_icon = new fltk::InvisibleBox(10, 10, 60, 55); + o->box(fltk::THIN_DOWN_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(10, 80, 65, 38, "Name:"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(10, 125, 65, 33, "Size:"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(10, 175, 65, 65, "Command:"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = pr_name = new fltk::InvisibleBox(75, 78, 200, 40); + o->labelsize(20); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_CLIP|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = pr_size = new fltk::InvisibleBox(80, 123, 195, 35); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_CLIP|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = pr_exec = new fltk::InvisibleBox(80, 175, 195, 63); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_CLIP|fltk::ALIGN_WRAP); + } + o->end(); + } + {fltk::Group* o = i_settingstab = new fltk::Group(0, 25, 285, 240, "Settings"); + o->begin(); + {fltk::Output* o = i_link = new fltk::Output(10, 20, 265, 22, "Link file:"); + o->color((fltk::Color)0xffffff00); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + } + {fltk::Input* o = i_name = new fltk::Input(10, 77, 265, 22, "Icon name:"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + {fltk::Input* o = i_location = new fltk::Input(10, 117, 215, 22, "Location to open:"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + {fltk::Button* o = new fltk::Button(230, 117, 45, 22, "..."); + o->labeltype(fltk::ENGRAVED_LABEL); + o->callback((fltk::Callback*)cb_); + } + {fltk::Input* o = i_filename = new fltk::Input(10, 162, 215, 22, "Icon filename:"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + {fltk::Button* o = new fltk::Button(230, 162, 45, 22, "..."); + o->labeltype(fltk::ENGRAVED_LABEL); + o->callback((fltk::Callback*)cb_1); + } + {fltk::Button* o = new fltk::Button(210, 215, 65, 25, "&Apply"); + o->callback((fltk::Callback*)cb_Apply); + } + o->end(); + } + o->end(); + } + {fltk::Button* o = new fltk::Button(200, 280, 90, 25, "&Close"); + o->callback((fltk::Callback*)cb_Close); + } + o->end(); + o->resizable(o); + } + update_property_dialog(icon); + update_iconeditdialog(icon); + ds_icon=icon; + i_propertieswindow->end(); + if(show_settings) { i_icontab->hide(); i_settingstab->show(); } + i_propertieswindow->exec(); +} diff --git a/eiconman/propdialog.fl b/eiconman/propdialog.fl new file mode 100755 index 0000000..ad2ac53 --- /dev/null +++ b/eiconman/propdialog.fl @@ -0,0 +1,126 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.1000 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {/* + * $Id$ + * + * Desktop icons manager + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {} + +decl {\#include } {} + +decl {\#include "edeskicon.h"} {} + +decl {Icon *ds_icon;} {} + +Function {property_dialog(fltk::Widget *, Icon *icon, bool show_settings)} {open return_type void +} { + code {if(i_propertieswindow) { + update_property_dialog(icon); + update_iconeditdialog(icon); + ds_icon=icon; + if(show_settings) { i_icontab->hide(); i_settingstab->show(); } + i_propertieswindow->exec(); + return; +}} {} + {fltk::Window} i_propertieswindow { + label {Icon properties} open + xywh {477 160 295 310} resizable visible + } { + {fltk::TabGroup} {} {open + xywh {5 5 285 270} + } { + {fltk::Group} i_icontab { + label Icon open + xywh {0 25 285 240} hide + } { + {fltk::InvisibleBox} pr_icon { + xywh {10 10 60 55} box THIN_DOWN_BOX + } + {fltk::InvisibleBox} {} { + label {Name:} + xywh {10 80 65 38} align 149 + } + {fltk::InvisibleBox} {} { + label {Size:} + xywh {10 125 65 33} align 149 + } + {fltk::InvisibleBox} {} { + label {Command:} + xywh {10 175 65 65} align 149 + } + {fltk::InvisibleBox} pr_name { + xywh {75 78 200 40} align 213 labelsize 20 + } + {fltk::InvisibleBox} pr_size { + xywh {80 123 195 35} align 213 + } + {fltk::InvisibleBox} pr_exec { + xywh {80 175 195 63} align 213 + } + } + {fltk::Group} i_settingstab { + label Settings open + xywh {0 25 285 240} + } { + {fltk::Output} i_link { + label {Link file:} selected + xywh {10 20 265 22} align 5 color 0xffffff00 + } + {fltk::Input} i_name { + label {Icon name:} + xywh {10 77 265 22} align 133 + } + {fltk::Input} i_location { + label {Location to open:} + xywh {10 117 215 22} align 133 + } + {fltk::Button} {} { + label {...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *f = fltk::file_chooser(_("Open location..."), file_types, i_location->value()); +if (f) i_location->value(f);} + private xywh {230 117 45 22} labeltype ENGRAVED_LABEL + } + {fltk::Input} i_filename { + label {Icon filename:} + xywh {10 162 215 22} align 133 + } + {fltk::Button} {} { + label {...} + callback {char *file_types = _("Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*.bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files (*.*), *"); +const char *f = fltk::file_chooser(_("Icon file selection"), file_types, PREFIX"/share/ede/icons/48x48/"); +if (f) i_filename->value(f);} + private xywh {230 162 45 22} labeltype ENGRAVED_LABEL + } + {fltk::Button} {} { + label {&Apply} + callback {save_icon(ds_icon);} + xywh {210 215 65 25} + } + } + } + {fltk::Button} {} { + label {&Close} + callback {i_propertieswindow->hide();} + xywh {200 280 90 25} + } + } + code {update_property_dialog(icon); +update_iconeditdialog(icon); +ds_icon=icon; +i_propertieswindow->end(); +if(show_settings) { i_icontab->hide(); i_settingstab->show(); } +i_propertieswindow->exec();} {} +} diff --git a/eiconman/propdialog.fld b/eiconman/propdialog.fld new file mode 100755 index 0000000..38d0384 --- /dev/null +++ b/eiconman/propdialog.fld @@ -0,0 +1,115 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {\#include "edeskicon.h"} {} + +decl {Icon *ds_icon;} {selected +} + +Function {property_dialog(Fl_Widget *, Icon *icon, bool show_settings)} {open return_type void +} { + code {if(i_propertieswindow) { + update_property_dialog(icon); + update_iconeditdialog(icon); + ds_icon=icon; + if(show_settings) { i_icontab->hide(); i_settingstab->show(); } + i_propertieswindow->exec(); + return; +}} {} + Fl_Window i_propertieswindow { + label {Icon properties} open + xywh {132 75 295 310} + extra_code {\#include "edeskicon.h"} visible + } { + Fl_Tabs {} {open + xywh {5 5 285 270} + } { + Fl_Group i_icontab { + label Icon open + xywh {0 20 285 247} + } { + Fl_Box pr_icon { + xywh {10 10 60 55} box THIN_DOWN_BOX + } + Fl_Box {} { + label {Name:} + xywh {10 75 65 38} align 149 + } + Fl_Box {} { + label {Size:} + xywh {10 120 65 33} align 149 + } + Fl_Box {} { + label {Command:} + xywh {10 170 65 65} align 149 + } + Fl_Box pr_name { + xywh {75 73 200 40} align 213 label_size 20 + } + Fl_Box pr_size { + xywh {80 118 195 35} align 213 + } + Fl_Box pr_exec { + xywh {80 170 195 63} align 213 + } + } + Fl_Group i_settingstab { + label Settings open + xywh {0 20 285 250} hide + } { + Fl_Output i_link { + label {Link file:} + xywh {10 20 265 22} align 5 color 0xffffff00 + } + Fl_Input i_name { + label {Icon name:} + xywh {10 77 265 22} align 133 + } + Fl_Input i_location { + label {Location to open:} + xywh {10 117 215 22} align 133 + } + Fl_Button {} { + label {...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *f = fl_select_file(i_location->value(), file_types, _("Open location...")); +if (f) i_location->value(f);} + private xywh {230 117 45 22} label_type ENGRAVED_LABEL + } + Fl_Input i_filename { + label {Icon filename:} + xywh {10 162 215 22} align 133 + } + Fl_Button {} { + label {...} + callback {char *file_types = _("Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*.bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files (*.*), *"); +const char *f = fl_select_file(PREFIX"/share/ede/icons/48x48/", file_types, _("Icon file selection")); +if (f) i_filename->value(f);} + private xywh {230 162 45 22} label_type ENGRAVED_LABEL + } + Fl_Button {} { + label {&Apply} + callback {save_icon(ds_icon);} + xywh {210 215 65 25} + } + } + } + Fl_Button {} { + label {&Close} + callback {i_propertieswindow->hide();} + xywh {200 280 90 25} + } + } + code {update_property_dialog(icon); +update_iconeditdialog(icon); +ds_icon=icon; +i_propertieswindow->end(); +if(show_settings) { i_icontab->hide(); i_settingstab->show(); } +i_propertieswindow->exec();} {} +} diff --git a/eiconman/propdialog.h b/eiconman/propdialog.h new file mode 100755 index 0000000..c768bfd --- /dev/null +++ b/eiconman/propdialog.h @@ -0,0 +1,24 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.1000 + +#ifndef propdialog_h +#define propdialog_h +#include +extern fltk::Window* i_propertieswindow; +#include +#include +extern fltk::Group* i_icontab; +#include +extern fltk::InvisibleBox* pr_icon; +extern fltk::InvisibleBox* pr_name; +extern fltk::InvisibleBox* pr_size; +extern fltk::InvisibleBox* pr_exec; +extern fltk::Group* i_settingstab; +#include +extern fltk::Output* i_link; +#include +extern fltk::Input* i_name; +extern fltk::Input* i_location; +#include +extern fltk::Input* i_filename; +void property_dialog(fltk::Widget *, Icon *icon, bool show_settings); +#endif diff --git a/eiconsconf/Makefile b/eiconsconf/Makefile new file mode 100755 index 0000000..a5e180c --- /dev/null +++ b/eiconsconf/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = ../edelib2/Util.cpp ../edelib2/Config.cpp eiconsconf.cpp eicon.cpp +TARGET = eiconsconf + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/eiconsconf/eicon.cpp b/eiconsconf/eicon.cpp new file mode 100755 index 0000000..9ec809b --- /dev/null +++ b/eiconsconf/eicon.cpp @@ -0,0 +1,98 @@ +/* + * $Id$ + * + * Icon properties (for eiconman - the EDE desktop) + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "eicon.h" + +using namespace fltk; +using namespace edelib; + + +int label_background = 46848 +; +int label_foreground = WHITE; +int label_fontsize = 12; +int label_maxwidth = 75; +int label_gridspacing = 16 +; +bool label_trans = true; +bool label_engage_1click = false; +bool auto_arr = false; + +static void sendClientMessage(XWindow w, Atom a, long x) +{ +/* XEvent ev; + long mask; + + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = w; + ev.xclient.message_type = a; + ev.xclient.format = 32; + ev.xclient.data.l[0] = x; + ev.xclient.data.l[1] = CurrentTime; + mask = 0L; + if (w == RootWindow(fl_display, fl_screen)) + mask = SubstructureRedirectMask; + XSendEvent(fl_display, w, False, mask, &ev);*/ +} + +void sendUpdateInfo() +{ +// no worky +/* unsigned int i, nrootwins; + Window dw1, dw2, *rootwins = 0; + int screen_count = ScreenCount(fl_display); + extern Atom FLTKChangeSettings; + for (int s = 0; s < screen_count; s++) { + Window root = RootWindow(fl_display, s); + XQueryTree(fl_display, root, &dw1, &dw2, &rootwins, &nrootwins); + for (i = 0; i < nrootwins; i++) { + if (rootwins[i]!=RootWindow(fl_display, fl_screen)) { + sendClientMessage(rootwins[i], FLTKChangeSettings, 0); + } + } + } + XFlush(fl_display);*/ +} + +void + readIconsConfiguration() +{ + Config globalConfig(Config::find_file("ede.conf", 0), true, false); + globalConfig.set_section("IconManager"); + + globalConfig.read("Label Background", label_background, 46848); + globalConfig.read("Label Transparent", label_trans, false); + globalConfig.read("Label Foreground", label_foreground, WHITE); + globalConfig.read("Label Fontsize", label_fontsize, 12); + globalConfig.read("Label Maxwidth", label_maxwidth, 75); + globalConfig.read("Gridspacing", label_gridspacing, 16); + globalConfig.read("OneClickExec", label_engage_1click, false); + globalConfig.read("AutoArrange", auto_arr, false); +} + +void writeIconsConfiguration() +{ + Config globalConfig(Config::find_file("ede.conf", true)); + globalConfig.set_section("IconManager"); + + globalConfig.write("Label Background", label_background); + globalConfig.write("Label Transparent", label_trans); + globalConfig.write("Label Foreground", label_foreground); + globalConfig.write("Label Fontsize", label_fontsize); + globalConfig.write("Label Maxwidth", label_maxwidth); + globalConfig.write("Gridspacing", label_gridspacing); + globalConfig.write("OneClickExec", label_engage_1click); + globalConfig.write("AutoArrange", auto_arr); +} + + diff --git a/eiconsconf/eicon.h b/eiconsconf/eicon.h new file mode 100755 index 0000000..598f9e6 --- /dev/null +++ b/eiconsconf/eicon.h @@ -0,0 +1,43 @@ +/* + * $Id$ + * + * Icon properties (for eiconman - the EDE desktop) + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +#ifndef EICON_H +#define EICON_H + +#include +//#include +#include //#include +//#include +#include //#include +#include "../edelib2/Config.h" +#include "../edelib2/NLS.h" + +extern int label_background; +extern int label_foreground; +extern int label_fontsize; +extern int label_maxwidth; +extern int label_gridspacing; +extern bool label_trans; +extern bool label_engage_1click; +extern bool auto_arr; + +void + readIconsConfiguration() +; +void + writeIconsConfiguration() +; +void sendUpdateInfo(); + +#endif + diff --git a/eiconsconf/eiconsconf.cpp b/eiconsconf/eiconsconf.cpp new file mode 100755 index 0000000..72b50d9 --- /dev/null +++ b/eiconsconf/eiconsconf.cpp @@ -0,0 +1,191 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#include "eiconsconf.h" +/* + * $Id$ + * + * Icon properties (for eiconman - the EDE desktop) + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include +#include "../edelib2/NLS.h" +#include "../edeconf.h" +#include "eicon.h" + +fltk::Window *iconsConfWindow=(fltk::Window *)0; + +static void cb_OK(fltk::Button*, void*) { + writeIconsConfiguration(); + sendUpdateInfo(); + exit(0); +} + +static void cb_Cancel(fltk::Button*, void*) { + exit(0); +} + +static void cb_Apply(fltk::Button*, void*) { + writeIconsConfiguration(); + sendUpdateInfo(); +} + +fltk::Button *colorButton=(fltk::Button *)0; + +static void cb_colorButton(fltk::Button*, void*) { + changeBoxColor(colorButton); + label_background = (int) colorButton->color(); +} + +fltk::Button *colorButton1=(fltk::Button *)0; + +static void cb_colorButton1(fltk::Button*, void*) { + changeBoxColor(colorButton1); + label_foreground = (int) colorButton1->color(); +} + +fltk::ValueSlider *maxWidthSlider=(fltk::ValueSlider *)0; + +static void cb_maxWidthSlider(fltk::ValueSlider*, void*) { + label_maxwidth = (int) maxWidthSlider->value(); +} + +fltk::ValueSlider *fontsizeSlider=(fltk::ValueSlider *)0; + +static void cb_fontsizeSlider(fltk::ValueSlider*, void*) { + label_fontsize = (int) fontsizeSlider->value(); +} + +fltk::ValueSlider *gridspaceSlider=(fltk::ValueSlider *)0; + +static void cb_gridspaceSlider(fltk::ValueSlider*, void*) { + label_gridspacing = (int) gridspaceSlider->value(); +} + +fltk::CheckButton *autoArrButton=(fltk::CheckButton *)0; + +static void cb_autoArrButton(fltk::CheckButton* o, void*) { + auto_arr = (o->value()>0); +} + +fltk::CheckButton *engageButton=(fltk::CheckButton *)0; + +static void cb_engageButton(fltk::CheckButton*, void*) { + label_engage_1click = (int) engageButton->value(); +} + +fltk::CheckButton *bg_color_check=(fltk::CheckButton *)0; + +static void cb_bg_color_check(fltk::CheckButton* o, void*) { + if(o->value()) colorButton->activate(); + else colorButton->deactivate(); + label_trans = (o->value()==0); +} + +#include + +int main (int argc, char **argv) { + + fltk::Window* w; + //fl_init_locale_support("eiconsconf", PREFIX"/share/locale"); + readIconsConfiguration(); + {fltk::Window* o = iconsConfWindow = new fltk::Window(265, 310, "Icons settings"); + w = o; + o->set_vertical(); + o->begin(); + {fltk::Button* o = new fltk::Button(25, 277, 75, 25, "&OK"); + o->callback((fltk::Callback*)cb_OK); + } + {fltk::Button* o = new fltk::Button(185, 277, 75, 25, "&Cancel"); + o->callback((fltk::Callback*)cb_Cancel); + } + {fltk::Button* o = new fltk::Button(105, 277, 75, 25, "&Apply"); + o->callback((fltk::Callback*)cb_Apply); + } + {fltk::TabGroup* o = new fltk::TabGroup(1, 5, 259, 262); + o->set_vertical(); + o->color((fltk::Color)0xfffffffe); + o->begin(); + {fltk::Group* o = new fltk::Group(0, 20, 255, 239, "Look&&feel"); + o->begin(); + {fltk::Button* o = colorButton = new fltk::Button(164, 20, 60, 18, "Background color: "); + o->callback((fltk::Callback*)cb_colorButton); + o->align(fltk::ALIGN_LEFT); + o->color((fltk::Color)label_background); + if(label_trans) o->deactivate(); + } + {fltk::Button* o = colorButton1 = new fltk::Button(164, 45, 60, 18, "Label color: "); + o->callback((fltk::Callback*)cb_colorButton1); + o->align(fltk::ALIGN_LEFT); + o->color((fltk::Color) label_foreground); + } + {fltk::ValueSlider* o = maxWidthSlider = new fltk::ValueSlider(114, 78, 125, 20, "Maximum width: "); + o->minimum(48); + o->maximum(200); + o->step(1); + o->value(50); + o->slider_size(10); + o->callback((fltk::Callback*)cb_maxWidthSlider); + o->align(fltk::ALIGN_LEFT); + o->value(label_maxwidth); + } + {fltk::ValueSlider* o = fontsizeSlider = new fltk::ValueSlider(114, 108, 125, 20, "Font height: "); + o->type(fltk::ValueSlider::TICK_ABOVE); + o->minimum(8); + o->maximum(48); + o->step(1); + o->value(10); + o->slider_size(10); + o->callback((fltk::Callback*)cb_fontsizeSlider); + o->align(fltk::ALIGN_LEFT); + o->value(label_fontsize); + } + {fltk::ValueSlider* o = gridspaceSlider = new fltk::ValueSlider(114, 138, 125, 20, "Grid spacing: "); + o->type(fltk::ValueSlider::TICK_ABOVE); + o->minimum(1); + o->maximum(50); + o->step(1); + o->value(10); + o->slider_size(10); + o->callback((fltk::Callback*)cb_gridspaceSlider); + o->align(fltk::ALIGN_LEFT); + o->value(label_gridspacing); + } + {fltk::CheckButton* o = autoArrButton = new fltk::CheckButton(24, 198, 222, 20, "Auto arrange icons"); + o->callback((fltk::Callback*)cb_autoArrButton); + o->value(auto_arr); + } + {fltk::CheckButton* o = engageButton = new fltk::CheckButton(24, 173, 222, 20, "Engage with just one click"); + o->callback((fltk::Callback*)cb_engageButton); + o->value(label_engage_1click); + } + {fltk::CheckButton* o = bg_color_check = new fltk::CheckButton(226, 20, 20, 18); + o->callback((fltk::Callback*)cb_bg_color_check); + o->tooltip("Clear this, to get transparent background."); + if(!label_trans) o->set(); + } + o->end(); + } + o->end(); + } + o->end(); + o->resizable(o); + } + w->show(argc, argv); + return fltk::run(); +} + +void changeBoxColor(fltk::Button *box) { + //Fl_Button *colorBox = box; + fltk::Color oldColor = box->color(); + fltk::Color defColor = oldColor; + fltk::color_chooser(_("Choose color"), defColor); + if ( defColor != oldColor ) { + box->color(defColor); + box->redraw(); + } +} diff --git a/eiconsconf/eiconsconf.fld b/eiconsconf/eiconsconf.fld new file mode 100755 index 0000000..94b9431 --- /dev/null +++ b/eiconsconf/eiconsconf.fld @@ -0,0 +1,131 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./icons +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {/* + * $Id$ + * + * Icon properties (for eiconman - the EDE desktop) + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {} + +decl {\#include } {} + +decl {\#include "../edelib2/NLS.h"} {} + +decl {\#include "../edeconf.h"} {} + +decl {\#include "eicon.h"} {} + +Function {} {open +} { + code {//fl_init_locale_support("eiconsconf", PREFIX"/share/locale"); +readIconsConfiguration();} {} + {fltk::Window} iconsConfWindow { + label {Icons settings} open + xywh {386 204 265 310} resizable visible + } { + {fltk::Button} {} { + label {&OK} + callback {writeIconsConfiguration(); +sendUpdateInfo(); +exit(0);} + xywh {25 277 75 25} + } + {fltk::Button} {} { + label {&Cancel} + callback {exit(0);} + xywh {185 277 75 25} + } + {fltk::Button} {} { + label {&Apply} + callback {writeIconsConfiguration(); +sendUpdateInfo();} + xywh {105 277 75 25} + } + {fltk::TabGroup} {} {open + xywh {1 5 259 262} color 0xfffffffe + } { + {fltk::Group} {} { + label {Look&&feel} open + xywh {0 20 255 239} + } { + {fltk::Button} colorButton { + label {Background color: } + callback {changeBoxColor(colorButton); +label_background = (int) colorButton->color();} + xywh {164 20 60 18} align 4 + extra_code {o->color((fltk::Color)label_background); +if(label_trans) o->deactivate();} + } + {fltk::Button} colorButton1 { + label {Label color: } + callback {changeBoxColor(colorButton1); +label_foreground = (int) colorButton1->color();} + xywh {164 45 60 18} align 4 + extra_code {o->color((fltk::Color) label_foreground);} + } + {fltk::ValueSlider} maxWidthSlider { + label {Maximum width: } + callback {label_maxwidth = (int) maxWidthSlider->value();} + xywh {114 78 125 20} align 4 minimum 48 maximum 200 step 1 value 50 slider_size 10 + extra_code {o->value(label_maxwidth);} + } + {fltk::ValueSlider} fontsizeSlider { + label {Font height: } + callback {label_fontsize = (int) fontsizeSlider->value();} + xywh {114 108 125 20} type TICK_ABOVE align 4 minimum 8 maximum 48 step 1 value 10 slider_size 10 + extra_code {o->value(label_fontsize);} + } + {fltk::ValueSlider} gridspaceSlider { + label {Grid spacing: } + callback {label_gridspacing = (int) gridspaceSlider->value();} + xywh {114 138 125 20} type TICK_ABOVE align 4 minimum 1 maximum 50 step 1 value 10 slider_size 10 + extra_code {o->value(label_gridspacing);} + } + {fltk::CheckButton} autoArrButton { + label {Auto arrange icons} + callback {auto_arr = (o->value()>0);} + xywh {24 198 222 20} + extra_code {o->value(auto_arr);} + } + {fltk::CheckButton} engageButton { + label {Engage with just one click} + callback {label_engage_1click = (int) engageButton->value();} + xywh {24 173 222 20} + extra_code {o->value(label_engage_1click);} + } + {fltk::CheckButton} bg_color_check { + callback {if(o->value()) colorButton->activate(); +else colorButton->deactivate(); +label_trans = (o->value()==0);} + tooltip {Clear this, to get transparent background.} + xywh {226 20 20 18} + extra_code {if(!label_trans) o->set();} + } + } + } + } +} + +Function {changeBoxColor(fltk::Button *box)} {open return_type void +} { + code {//Fl_Button *colorBox = box; +fltk::Color oldColor = box->color(); +fltk::Color defColor = oldColor; +fltk::color_chooser(_("Choose color"), defColor); +if ( defColor != oldColor ) { + box->color(defColor); + box->redraw(); +}} {selected + } +} diff --git a/eiconsconf/eiconsconf.h b/eiconsconf/eiconsconf.h new file mode 100755 index 0000000..85d75bb --- /dev/null +++ b/eiconsconf/eiconsconf.h @@ -0,0 +1,21 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#ifndef eiconsconf_h +#define eiconsconf_h +#include +extern fltk::Window* iconsConfWindow; +#include +#include +#include +extern fltk::Button* colorButton; +extern fltk::Button* colorButton1; +#include +extern fltk::ValueSlider* maxWidthSlider; +extern fltk::ValueSlider* fontsizeSlider; +extern fltk::ValueSlider* gridspaceSlider; +#include +extern fltk::CheckButton* autoArrButton; +extern fltk::CheckButton* engageButton; +extern fltk::CheckButton* bg_color_check; +void changeBoxColor(fltk::Button *box); +#endif diff --git a/eiconsconf/locale/hu.po b/eiconsconf/locale/hu.po new file mode 100755 index 0000000..5d093b4 --- /dev/null +++ b/eiconsconf/locale/hu.po @@ -0,0 +1,67 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Ikon beállítások" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "Mégs&em" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Megjelenés" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Háttér szín:" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Szöveg szín:" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Maximális szélesség:" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Font magasság:" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Rácshoz igazítás:" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Ikonok automatikus rendezése" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Egy kattintással aktivál" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Töröld a kijelölést a szövegháttér eltűnéséhez" + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Szín kiválasztása" + diff --git a/eiconsconf/locale/id.po b/eiconsconf/locale/id.po new file mode 100755 index 0000000..5089303 --- /dev/null +++ b/eiconsconf/locale/id.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconsconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 202-11-29 14:58+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Seting ikon" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "&Batal" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Terapkan" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Look&&feel" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Warna latar belakang" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Warna label" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Lebar maximum: " + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Tinggi font: " + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Spasi grid: " + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Ikon tersusun otomatis" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Bekerja hanya dengan satu klik" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Bersihkan ini, untuk mendapatkan latar belakang transparan." + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Pilih warna" diff --git a/eiconsconf/locale/messages.pot b/eiconsconf/locale/messages.pot new file mode 100755 index 0000000..718f79d --- /dev/null +++ b/eiconsconf/locale/messages.pot @@ -0,0 +1,73 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "" + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "" diff --git a/eiconsconf/locale/ru.po b/eiconsconf/locale/ru.po new file mode 100755 index 0000000..62967ee --- /dev/null +++ b/eiconsconf/locale/ru.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr " " + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr " " + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr " : " + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr " : " + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr " : " + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr " : " + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr " : " + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr " " + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr " " + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr " " + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr " " diff --git a/eiconsconf/locale/sk.po b/eiconsconf/locale/sk.po new file mode 100755 index 0000000..0bb930d --- /dev/null +++ b/eiconsconf/locale/sk.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconsconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Nastavenie ikon" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Použiť" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Look&&feel" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Farba pozadia:" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Farba menovky:" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Maximálna šírka:" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Veľkosť fontu:" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Odstup mriežky:" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Automaticky usporiadavať ikony" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Potvrdiť iba jedným kliknutím" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Ak je tlačidlo odškrtnuté, budú sa zobrazovať transparentné ikony." + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Voľba farby" diff --git a/eiconsconf/locale/sr.po b/eiconsconf/locale/sr.po new file mode 100755 index 0000000..4e23efd --- /dev/null +++ b/eiconsconf/locale/sr.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconsconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 2002-11-30 01:46+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Подешавања икона" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&У реду" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "&Одустани" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Примени" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Изглед и особине" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Боја позадине:" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Боја наслова:" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Максимална ширина:" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Висина фонта:" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Размак међу линијама:" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Аутоматско ређање икона" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Стартуј једним кликом:" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Искључити ово, да би се добила провидна позадина." + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Изаберите боју" diff --git a/eimage/Makefile b/eimage/Makefile new file mode 100755 index 0000000..bf79c45 --- /dev/null +++ b/eimage/Makefile @@ -0,0 +1,17 @@ + +CPPFILES = eimage.cpp +TARGET = eimage + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/eimage/eimage.cpp b/eimage/eimage.cpp new file mode 100644 index 0000000..d616912 --- /dev/null +++ b/eimage/eimage.cpp @@ -0,0 +1,394 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +using namespace fltk; + + + +// Automatic detection of image type still doesn't work in fltk :( +static struct { + const char* filename; + SharedImage* (*func)(const char*, const uchar*); +} supported[] = { + { "*.png", pngImage::get}, + {"*.jpg", jpegImage::get}, + {"*.gif", gifImage::get}, + {"*.bmp", bmpImage::get}, + {"*.xpm", xpmFileImage::get}, + {0, 0} +}; + + + + +// Making these global vastly simplifies the code +// cause they're used a lot +// The proper thing to do is to make the whole program one big class +char filename[PATH_MAX], directory[PATH_MAX]; +Window* w; +class CenteredInScroll; +CenteredInScroll* c; +float zoomfactor; +bool autozoom=false; + +// Variables used in nextpic & prevpic +dirent **files; +int nfiles; + + +// Forward declaration of funcs for use from event handler +void nextpic(); +void prevpic(); +void loadimage(); +void newdir(); + + +// Callbacks for popup menu +void next_cb(Widget*) { nextpic(); } +void prev_cb(Widget*) { prevpic(); } +void open_cb(Widget*) { + const char* f = file_chooser("Choose image or directory","Image Files (*.{bmp,gif,jpg,png,xpm})",directory); + if (!f) return; + strncpy(filename,f,PATH_MAX); + newdir(); + loadimage(); +} +void manage_cb(Widget* b) {} // call file manager +void fullscr_cb(Widget* b) { + static bool isfull=false; + static int X,Y,W,H; + if (isfull) { + w->fullscreen_off(X,Y,W,H); + isfull=false; + } else { + X=w->x(); Y=w->y(); W=w->w(); H=w->h(); + w->fullscreen(); + isfull=true; + } +} +void exit_cb(Widget* b) { exit(0); } +void zoomin_cb(Widget* b) { + if (zoomfactor>=1) zoomfactor += 0.2; else zoomfactor += zoomfactor/5; + autozoom=false; + loadimage(); +} +void zoomout_cb(Widget* b) { + if (zoomfactor>=1) zoomfactor -= 0.2; else zoomfactor -= zoomfactor/5; + autozoom=false; + loadimage(); +} +void zoomrestore_cb(Widget* b) { zoomfactor = 1; autozoom=false; loadimage(); } +void zoomauto_cb(Widget *b) { autozoom = !autozoom; loadimage(); } + + + + +class CenteredInScroll : public Button { +private: + PopupMenu* popup; +public: + CenteredInScroll(int x, int y, int w, int h, const char*l = 0) + : Button(x,y,w,h,l) { + popup = new PopupMenu(0, 0, 0, 0); + if(popup->parent()) + popup->parent()->remove(popup); + popup->parent(0); + popup->type(PopupMenu::POPUP3); + popup->begin(); + + {Item *i = new Item("&Open..."); + i->callback(open_cb); + i->shortcut(CTRL+'o'); + } + + {Item *i = new Item("&Manage..."); + i->callback(manage_cb); + } + + new Divider(); + + {Item *i = new Item("&Next"); + i->callback(next_cb); + i->shortcut(DownKey); + } + + {Item *i = new Item("&Previous"); + i->callback(prev_cb); + i->shortcut(UpKey); + } + + new Divider(); + + {Item *i = new Item("&Zoom in"); + i->callback(zoomin_cb); + i->shortcut('+'); + } + + {Item *i = new Item("Zoom &out"); + i->callback(zoomout_cb); + i->shortcut('-'); + } + + {Item *i = new Item("Zoom &auto"); + i->callback(zoomauto_cb); + i->shortcut(CTRL+'a'); + } + + {Item *i = new Item("&Restore"); + i->callback(zoomrestore_cb); + i->shortcut('/'); + } + + new Divider(); + + {Item *i = new Item("&Fullscreen"); + i->callback(fullscr_cb); + i->shortcut(F11Key); + } + + new Divider(); + + {Item *i = new Item("A&bout"); + i->callback(exit_cb); + } + + {Item *i = new Item("&Exit"); + i->callback(exit_cb); + i->shortcut(EscapeKey); + } + + + + popup->end(); + } + + virtual void draw() { + int ix, iy; + if (w() < parent()->w()) { ix=((parent()->w() - w())/2); } else { ix=0; } + if (h() < parent()->h()) { iy=((parent()->h() - h())/2); } else { iy=0; } + Image *i = (Image*)image(); + i->draw(Rectangle(ix,iy,w(),h())); + } + + virtual int handle(int event) { + if (event == KEY) { + int key = event_key(); + const char* text = event_text(); // needed to detect some keys + if (key == LeftKey || key == UpKey) prevpic(); + else if (key == RightKey || key == DownKey) nextpic(); + // Shortcuts from popup menu wont work unless we define them here + // The 'this' is just to pass something to callback, it wont be used + else if (key == CTRL+'o') open_cb(this); + else if (strcmp(text,"+")==0 || key == AddKey) zoomin_cb(this); + else if (strcmp(text,"-")==0 || key == SubtractKey) zoomout_cb(this); + else if (strcmp(text,"/")==0 || key == DivideKey) zoomrestore_cb(this); + else if (key == CTRL+'a') zoomauto_cb(this); + else if (key == F11Key) fullscr_cb(this); + } + else if (event == PUSH) { + if(event_button()==3) { + popup->popup(); + return 1; + } + } + return Button::handle(event); + } +}; + + +// Directory changed, get new directory from filename +void newdir() { + int p=0; + for (int i=0; imeasure(W,H); // Should this wait until image is loaded? + if (autozoom) { + // Adjust zoom factor so picture fits on screen + // When switch to manual zooming, this factor will be used + float pw=c->parent()->w()+1, ph=c->parent()->h()+1; + // use float to avoid rounding + if (pw/W < ph/H) zoomfactor=pw/W; else zoomfactor=ph/H; + } + + c->w((int)W*zoomfactor-1); // cast to int and -1 help avoid + c->h((int)H*zoomfactor-1); // scrollbars when autozoom is on + c->image(im); + + c->parent()->relayout(); // remove scrollbars if necessary + c->parent()->redraw(); // remove traces of old picture + + c->label(""); // clear any previous labels + + char tmp[PATH_MAX]; // set window title + if (zoomfactor==1) + snprintf(tmp,PATH_MAX,"%s (%dx%d) - View picture",filename_name(filename),W,H); + else + snprintf(tmp,PATH_MAX,"%s (%dx%d) - zoom %1.1fx - View picture",filename_name(filename),W,H,zoomfactor); + w->label(strdup(tmp)); +} + + +// Get next/previous picture file in directory d +// (universal func. to be called from nextpic() and prevpic() +void prevnext(int direction) { + fprintf(stderr, "Nextpic() - file: %s dir: %s direction: %d\n",filename,directory,direction); + + if (nfiles == 0) { // read directory + nfiles = filename_list(directory,&files); + } + + // Select next picture after current + bool found=false; + const char* justname = filename_name(filename); + // this basically means: if direction is 1 go from first to last, else from last to first + for (int i=(direction?0:nfiles-1); (direction?i=0); i+=(direction?1:-1)) { + if (strncmp(justname,files[i]->d_name,PATH_MAX) == 0) { + found=true; + continue; + } + if (found) { + for (int j=0; supported[j].filename; j++) { + if (filename_match(files[i]->d_name,supported[j].filename)) { + snprintf(filename,PATH_MAX,"%s/%s",directory,files[i]->d_name); + loadimage(); + return; + } + } + } + } + + // Current picture not found, give first in directory + for (int i=(direction?0:nfiles-1); (direction?i=0); i+=(direction?1:-1)) { + for (int j=0; supported[j].filename; j++) { + if (filename_match(files[i]->d_name,supported[j].filename)) { + snprintf(filename,PATH_MAX,"%s/%s",directory,files[i]->d_name); + loadimage(); + return; + } + } + } + + // Nothing found... + fprintf(stderr, "Nextpic() - nothing found\n"); + char tmp[PATH_MAX]; + snprintf(tmp,PATH_MAX,"No pictures in directory %s",directory); + c->label(strdup(tmp)); + // Position label on center and redraw everything + c->w(1); c->h(1); + c->x(c->parent()->w()/2); + c->y(c->parent()->h()/2); + c->redraw(); + c->parent()->relayout(); + c->parent()->redraw(); + // Window title + snprintf(tmp,PATH_MAX,"View picture - nothing found in %s",directory); + w->label(strdup(tmp)); +} + +void nextpic() { prevnext(1); } +void prevpic() { prevnext(0); } + + + +int main (int argc, char **argv) { + filename[0]='\0'; directory[0]='\0'; zoomfactor=1; + + w = new Window(200, 200, "View picture"); + w->set_vertical(); + w->set_double_buffer(); + w->begin(); + {ScrollGroup* g = new ScrollGroup(0, 0, 200, 200); + //g->set_vertical(); +// Group::current()->resizable(o); + g->box(FLAT_BOX); + g->color(GRAY05); +// g->color(WHITE); + g->align(ALIGN_RIGHT); + g->resize_align(ALIGN_RIGHT); + g->begin(); + {c = new CenteredInScroll(0,0,200,200); + g->align(ALIGN_LEFT|ALIGN_TOP); + c->box(NO_BOX); + c->focusbox(NO_BOX); + g->color(GRAY05); + c->labelcolor(WHITE); + c->labelsize(14); + c->tooltip("Right click for menu"); + c->take_focus(); + } + g->end(); + } + w->end(); + w->resizable(w); + + // Analyze command line + + if (argc==1) { // No params + strncpy (directory, getenv("HOME"), PATH_MAX); + nextpic(); + + } else if (filename_isdir(argv[1])) { // Param is directory + strncpy (directory, argv[1], PATH_MAX); + nextpic(); + argc--; argv++; // ignore this param and forward rest to fltk + + } else { // Param is file + if (argv[1][0] == '~' && argv[1][1] == '/') // expand home dir + snprintf (filename, PATH_MAX, "%s/%s", getenv("HOME"), argv[1]+2); + else if (argv[1][0] != '/') // relative filename + snprintf (filename, PATH_MAX, "%s/%s", getenv("PWD"), argv[1]); + else // absolute filename + strncpy (filename, argv[1], PATH_MAX); + + if (!filename_exist(argv[1])) { + char tmp[PATH_MAX]; + snprintf(tmp,PATH_MAX,"File not found - %s",filename); + c->label(tmp); + } else + loadimage(); + + newdir(); // rebuild char[] directory + argc--; argv++; // ignore this param and forward rest to fltk + } + + w->show(argc,argv); + return run(); +} + diff --git a/einstaller/Makefile b/einstaller/Makefile new file mode 100755 index 0000000..8429d06 --- /dev/null +++ b/einstaller/Makefile @@ -0,0 +1,21 @@ + +CPPFILES = einstaller.cpp einstall.cpp ../edelib2/Util.cpp ../edelib2/Run.cpp ../edelib2/process.cpp ../edelib2/pty.cpp ../edelib2/Config.cpp +TARGET = einstaller + +POFILES = locale/ru.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/einstaller/TODO b/einstaller/TODO new file mode 100755 index 0000000..36ab74f --- /dev/null +++ b/einstaller/TODO @@ -0,0 +1,8 @@ +- use PtyProcess directly + * look for (#) signs for progress bar +- new checkbox - "Show options" + * analyze output from ./configure --help and show options + * for packages, show "Suggests:" and "Recommends:" +- separate rpm/dpkg/installpkg code into neat classes, so it's easy to add support +for others +- add support for dependency resolvers (apt-get, urpmi, emerge) diff --git a/einstaller/einstall.cpp b/einstaller/einstall.cpp new file mode 100755 index 0000000..f93cdb5 --- /dev/null +++ b/einstaller/einstall.cpp @@ -0,0 +1,274 @@ +/* + * $Id$ + * + * Package manager for Equinox Desktop Environment + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include +#include +#include +#include +#include + +#include "einstall.h" +#include "einstaller.h" + +#include +#include // for PATH_MAX +#include "../edelib2/process.h" +#include "../edelib2/Run.h" + +using namespace fltk; +using namespace edelib; + + + +// TODO: Check for memleaks +// TODO: use generated temp file names + + + +// This is a simple Pty helper function to reduce typing +// Mostly copied from edelib2/Run.cpp but some important changes +// TODO: Consider merging with Run.cpp + +int ptyrun(const char *command) +{ + fprintf (stderr, "command: %s\n",command); + extern char **environ; + + // Initialize PTY + PtyProcess *child = new PtyProcess(); + child->setEnvironment((const char**)environ); // environ is C constant + + const char *cmdparts[4]; + cmdparts[0] = "/bin/sh"; + cmdparts[1] = "-c"; + cmdparts[2] = command; + cmdparts[3] = NULL; + + if (child->exec(cmdparts[0], cmdparts) < 0) { + fprintf (stderr, "Failed to start pty\n"); + return -1; + } + + // Wait for process to actually start. Shouldn't last long + while (1) { + int p = child->pid(); + if (p != 0 && child->checkPid(p)) + break; + int exit = child->checkPidExited(p); + if (exit != -2) { + // Process is DOA + fprintf (stderr, "Process has died unexpectedly! Exit status: %d\n",exit); + delete child; + } + fprintf (stderr, "Not started yet...\n"); + } + + int status = child->checkPidExited(child->pid()); + while (status == PtyProcess::NotExited) { + char *buffer = child->readLine(); + if (buffer != 0) { + result_output->insert(buffer); + result_output->relayout(); + result_output->scroll(result_output->buffer()->length(),0); + fltk::flush(); + } + status = child->checkPidExited(child->pid()); + } + fprintf (stderr, "status: %d\n",status); + delete child; + return status; +} + + +// Install program from source code using standard procedure (configure, make, make install) + +void sourcecode(const char* directory, const char* logname) +{ + char workpath[PATH_MAX], workfile[PATH_MAX], command[PATH_MAX]; + + // Buffer for stat() + struct stat *buf = (struct stat*)malloc(sizeof(struct stat)); + + // Sometimes archives contain everything in one directory + DIR *my_dir; + int count; + struct dirent *my_dirent; + char my_char[PATH_MAX]; + strcpy (workpath, directory); + +recurse: + my_dir = opendir(workpath); + count=0; + while ((my_dirent = (struct dirent64*) readdir(my_dir)) != NULL) { + strncpy(my_char, my_dirent->d_name, PATH_MAX); + count++; + } + closedir(my_dir); + if (count < 4) { // suspicious + char tmp[PATH_MAX*2+1]; + strcpy (tmp, workpath); + strcat (tmp, "/"); + strcat (tmp, my_char); + stat(tmp, buf); + if (strcmp(my_char,".")!=0 && strcmp(my_char,"..")!=0 && S_ISDIR(buf->st_mode)) { + strncpy (workpath, tmp, PATH_MAX); + goto recurse; + } + } + + // Main program loop + install_progress->position(0); + while (1) { + snprintf(workfile, sizeof(workfile)-1, "%s/Makefile", workpath); + if (stat (workfile, buf) == 0) { + install_progress->position(50); + snprintf(command, sizeof(command)-1, "cd %s; make", workpath); + ptyrun(command); + install_progress->position(75); + snprintf(command, sizeof(command)-1, "cd %s; make install >> %s", workpath, logname); + run_program(command,true,true,false); + install_progress->position(100); + result_output->insert(_("=== Program installed! ===\n")); + break; + } + + snprintf(workfile, sizeof(workfile)-1, "%s/configure", workpath); + if (stat (workfile, buf) == 0) { + install_progress->position(25); + snprintf(command, sizeof(command)-1, "cd %s; ./configure", workpath); + ptyrun(command); + + // Test to see if configure succeeded + snprintf(workfile, sizeof(workfile)-1, "%s/Makefile", workpath); + if (stat (workfile, buf) == 0) { + install_progress->position(50); + continue; // go back to start + } else { + result_output->insert(_("There was an error running configure. See below for details.\n\n")); + break; + } + } + + snprintf(workfile, sizeof(workfile)-1, "%s/configure.in", workpath); + if (stat (workfile, buf) == 0) { + snprintf(command, sizeof(command)-1, "cd %s; autoconf", workpath); + ptyrun(command); + + // Test to see if autoconf succeeded + snprintf(workfile, sizeof(workfile)-1, "%s/configure", workpath); + if (stat (workfile, buf) == 0) { + install_progress->position(25); + continue; // go back to start + } + } + + // Nothing found... + result_output->insert(_("This archive is not recognized as source code. Try looking inside with archiver.\n")); + break; + } + + // Clean up + snprintf(command, sizeof(command)-1, "rm -fr %s", directory); + run_program(command); + free(buf); +} + + +void install_package(const char *package, bool nodeps) +{ + char tempname[PATH_MAX], logname[PATH_MAX], tempdir[PATH_MAX]; + + const char *e = filename_ext(package); + strncpy(tempname, "/tmp/einstXXXXXX", PATH_MAX); // Use better temp file name + close(mkstemp(tempname)); + remove(tempname); + strncpy(logname, tempname, PATH_MAX); + + if (strlen(e)<1) { + result_output->insert(_("Package type is not recognized. Einstaller presently supports rpm, deb, tgz and source code packages.\n")); + result_output->relayout(); + return; + } + + if (strcmp(e, ".rpm")==0) { + char command[PATH_MAX]; + + if (nodeps) + snprintf(command, PATH_MAX, "rpm -i --nodeps %s >& %s", package, logname); + else + snprintf(command, PATH_MAX, "rpm -i %s >& %s", package, logname); + run_program(command,true,true,false); + install_progress->position(100); + } + else if (strcmp(e, ".tgz")==0) { + char command[PATH_MAX]; + snprintf(command, PATH_MAX, "installpkg %s >& %s", package, logname); + run_program(command,true,true,false); + install_progress->position(100); + } + else if (strcmp(e, ".deb")==0) { + char command[PATH_MAX]; + snprintf(command, PATH_MAX, "dpkg -i %s >& %s", package, logname); + run_program(command,true,true,false); + install_progress->position(100); + } + else if (strcmp(e, ".gz")==0) { + char command[PATH_MAX]; + + // Create temp directory + strncpy(tempdir, "/tmp/einstdXXXXXX", PATH_MAX); + mkdtemp(tempdir); + + snprintf(command, PATH_MAX, "tar xzvC %s -f %s", tempdir, package); + ptyrun(command); + sourcecode(tempdir, logname); + } + else if (strcmp(e, ".bz2")==0) { + char command[PATH_MAX]; + + // Create temp directory + strncpy(tempdir, "/tmp/einstdXXXXXX", PATH_MAX); + mkdtemp(tempdir); + + snprintf(command, PATH_MAX, "tar xjvC %s -f %s", tempdir, package); + ptyrun(command); + sourcecode(tempdir, logname); + } + else if (strcmp(e, ".tar")==0) { + char command[PATH_MAX]; + + // Create temp directory + strncpy(tempdir, "/tmp/einstdXXXXXX", PATH_MAX); + mkdtemp(tempdir); + + snprintf(command, PATH_MAX, "tar xvC %s -f %s", tempdir, package); + ptyrun(command); + sourcecode(tempdir, logname); + } + else { + result_output->insert(_("Package type is not recognized. Einstaller presently supports rpm, deb, tgz and source code packages.\n")); + result_output->relayout(); + return; + } + + char line[1024]; + FILE* log = fopen(logname, "r"); + + if (log != NULL) { + while(fgets(line, sizeof(line), log)) + result_output->insert(line); + result_output->relayout(); + result_output->scroll(result_output->buffer()->length(),0); + fclose(log); + } + unlink(logname); +} diff --git a/einstaller/einstall.h b/einstaller/einstall.h new file mode 100755 index 0000000..41f70cd --- /dev/null +++ b/einstaller/einstall.h @@ -0,0 +1,26 @@ +/* + * $Id$ + * + * Package manager for Equinox Desktop Environment + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#ifndef _EINSTALL_H +#define _EINSTALL_H + +#include +#include +#include +#include +#include +#include "../edelib2/NLS.h" + +void install_package(const char*, bool); + +#endif + + diff --git a/einstaller/einstaller.cpp b/einstaller/einstaller.cpp new file mode 100755 index 0000000..62a5baa --- /dev/null +++ b/einstaller/einstaller.cpp @@ -0,0 +1,156 @@ +/* + * $Id$ + * + * Package manager for Equinox Desktop Environment + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "einstaller.h" +#include "einstall.h" + +#include +#include +#include +#include + +#include "icons/install.xpm" +#include "../edelib2/NLS.h" + +#include "../edeconf.h" + +using namespace fltk; + + +static TextBuffer *out_buffer; +static Window* install_window; + +static xpmImage datas_install((const char **)install); + +Group* steps_group; +Group* step1_group; +Input* package_name_input; +CheckButton* nodeps_button; +Group* step2_group; +TextEditor* result_output; +ProgressBar* install_progress; +Button* prev_button; +Button* next_button; + +static void cb_package_name_input(Button*, void*) { + next_button->activate(); +} + +static void cb_Browse(Button*, void*) { +// char *file_types = _("Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *"); + const char *f = file_chooser(_("Package selection"), "*.{rpm|tgz|deb|gz|bz2}", package_name_input->value()); + if (f) { + package_name_input->value(f); + next_button->activate(); + } +} + +static void cb_prev_button(Button*, void*) { + step1_group->show(); + step2_group->hide(); + prev_button->deactivate(); + next_button->activate(); + out_buffer->remove(0,out_buffer->length()); + flush(); +} + + +static void cb_next_button(Button*, void*) { + step1_group->hide(); + step2_group->show(); + prev_button->activate(); + next_button->deactivate(); + flush(); + install_package(package_name_input->value(), nodeps_button->value()); +} + +static void cb_Close(Button*, void*) { + exit(0); +} + + +int main (int argc, char **argv) { + // fl_init_locale_support("einstaller", PREFIX"/share/locale"); + out_buffer = new TextBuffer(); + + {Window* o = install_window = new Window(505, 315, "Install software package"); + o->begin(); + { + InvisibleBox* o = new InvisibleBox(5, 5, 135, 270); + o->set_vertical(); + o->image(datas_install); + o->box(DOWN_BOX); + o->color((Color)0x7d8300); + } + { + Group* o = steps_group = new Group(145, 5, 350, 270); + o->box(FLAT_BOX); + o->begin(); + { + Group* o = step1_group = new Group(0, 0, 350, 270); + o->box(ENGRAVED_BOX); + o->begin(); + { + InvisibleBox* o = new InvisibleBox(5, 5, 340, 120, "Welcome. This installation wizard will help you to install new software on your computer."); + o->labelsize(18); + o->align(ALIGN_TOP|ALIGN_LEFT|ALIGN_INSIDE|ALIGN_WRAP); + } + { + Input* o = package_name_input = new Input(5, 125, 240, 25, "Enter the name of software package you want to install:"); + o->align(ALIGN_TOP|ALIGN_LEFT|ALIGN_WRAP); + o->callback((Callback*)cb_package_name_input); + } + { + Button* o = new Button(250, 125, 90, 25, "&Browse..."); + o->callback((Callback*)cb_Browse); + } + nodeps_button = new CheckButton(5, 160, 338, 25, "Ignore dependencies"); + o->end(); + } + { + Group* o = step2_group = new Group(0, 0, 350, 270); + o->box(ENGRAVED_BOX); + o->hide(); + o->begin(); + { + TextEditor* o = result_output = new TextEditor(5, 20, 335, 155, "Installation results:"); + o->align(ALIGN_TOP|ALIGN_LEFT|ALIGN_WRAP); + o->buffer(out_buffer); + } + { + ProgressBar* o = install_progress = new ProgressBar(5, 210, 335, 20, "Installation status:"); + o->align(ALIGN_TOP|ALIGN_LEFT); + } + o->end(); + } + o->end(); + } + { + Button* o = prev_button = new Button(195, 280, 90, 25, "<< &Previous"); + o->callback((Callback*)cb_prev_button); + o->deactivate(); + } + { + Button* o = next_button = new Button(295, 280, 90, 25, "&Install"); + o->callback((Callback*)cb_next_button); + o->deactivate(); + } + { + Button* o = new Button(405, 280, 90, 25, "&Close"); + o->callback((Callback*)cb_Close); + } + o->end(); + ; + } // Window + install_window->show(argc, argv); + return run(); +} diff --git a/einstaller/einstaller.fl b/einstaller/einstaller.fl new file mode 100755 index 0000000..47f41b0 --- /dev/null +++ b/einstaller/einstaller.fl @@ -0,0 +1,97 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Installer for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include "einstall.h"} {} + +decl {fltk::TextBuffer *out_buffer;} {} + +Function {} {open +} { + code {fl_init_locale_support("einstaller", PREFIX"/share/locale"); +out_buffer = new Fl_Text_Buffer();} {} + {fltk::Window} install_window { + label {Install software package} open + private xywh {383 118 505 310} + extra_code {;} visible + } { + {fltk::InvisibleBox} {} { + xywh {5 5 135 270} box DOWN_BOX image {icons/install.xpm} color 0x7d8300 + } + {fltk::Group} steps_group {open + xywh {150 0 505 275} box FLAT_BOX + } { + {fltk::Group} step1_group {open selected + xywh {0 5 350 270} box ENGRAVED_BOX + } { + {fltk::Input} package_name_input { + label {Enter the name of software package you want to install:} + xywh {5 127 250 23} align 133 + } + {fltk::Button} {} { + label {&Browse...} + callback {char *file_types = _("Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *"); +const char *f = file_chooser(_("Package selection"), file_types, package_name_input->value()); + + if (f) { + package_name_input->value(f); + }} + xywh {260 127 80 25} + } + {fltk::InvisibleBox} {} { + label {Welcome. This installation wizard will help you to install new software on your computer.} + xywh {0 0 340 90} align 149 labelsize 18 + } + {fltk::CheckButton} nodeps_button { + label {Ignore dependencies} + xywh {2 160 338 25} + } + } + {fltk::Group} step2_group {open + xywh {5 5 350 270} hide box ENGRAVED_BOX + } { + {fltk::Output} result_output { + label {Installation results:} + xywh {5 20 335 155} align 133 + extra_code {o->buffer(out_buffer);} + class {fltk::TextEditor} + } + {fltk::ValueInput} install_progress { + label {Installation status:} + xywh {5 210 335 20} align 5 + class {fltk::ProgressBar} + } + } + } + {fltk::Button} prev_button { + label {<< &Previous} + callback {step1_group->show(); +step2_group->hide(); +prev_button->deactivate();} + xywh {230 280 80 25} deactivate + } + {fltk::Button} next_button { + label {&Install} + callback {step1_group->hide(); +step2_group->show(); +prev_button->activate(); +install_package();} + xywh {315 280 80 25} + extra_code {;} + } + {fltk::Button} {} { + label {&Close} + callback {exit(0);} + private xywh {415 280 80 25} + extra_code {;} + } + } +} diff --git a/einstaller/einstaller.fld b/einstaller/einstaller.fld new file mode 100755 index 0000000..2edaec8 --- /dev/null +++ b/einstaller/einstaller.fld @@ -0,0 +1,107 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Installer for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include "einstall.h"} {} + +decl {Fl_Text_Buffer *out_buffer;} {} + +Function {} {open +} { + code {fl_init_locale_support("einstaller", PREFIX"/share/locale"); +out_buffer = new Fl_Text_Buffer();} {} + Fl_Window install_window { + label {Install software package} open + private xywh {48 99 505 310} hide + extra_code {;} + } { + Fl_Box {} { + xywh {5 5 135 270} box DOWN_BOX image {icons/install.xpm} color 0x7d8300 + } + Fl_Group steps_group {open + xywh {140 0 355 275} box FLAT_BOX + } { + Fl_Group step1_group {open + xywh {5 5 350 270} box ENGRAVED_BOX + } { + Fl_Input package_name_input { + label {Enter the name of software package you want to install:} + xywh {10 132 250 23} align 133 + extra_code {;} + } + Fl_Button {} { + label {&Browse...} + callback {char *file_types = _("Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *"); +const char *f = fl_select_file(package_name_input->value(), file_types, _("Package selection")); + + if (f) { + package_name_input->value(f); + }} selected + xywh {265 132 80 25} + extra_code {\#include } + } + Fl_Box {} { + label {Welcome. This installation wizard will help you to install new software on your computer.} + xywh {5 5 340 90} align 149 label_size 18 + extra_code {;} + } + Fl_Check_Button nodeps_button { + label {Ignore dependencies} + xywh {7 165 338 25} + extra_code {;} + } + } + Fl_Group step2_group {open + xywh {5 5 350 270} hide box ENGRAVED_BOX + } { + Fl_Output result_output { + label {Installation results:} + xywh {10 25 335 155} align 133 + extra_code {\#include +; +o->buffer(out_buffer);} + class Fl_Text_Editor + } + Fl_Value_Input install_progress { + label {Installation status:} + xywh {10 215 335 20} align 5 + extra_code {\#include +;} + class Fl_ProgressBar + } + } + } + Fl_Button prev_button { + label {<< &Previous} + callback {step1_group->show(); +step2_group->hide(); +prev_button->deactivate();} + xywh {230 280 80 25} deactivate + extra_code {;} + } + Fl_Button next_button { + label {&Install} + callback {step1_group->hide(); +step2_group->show(); +prev_button->activate(); +install_package();} + xywh {315 280 80 25} + extra_code {;} + } + Fl_Button {} { + label {&Close} + callback {exit(0);} + private xywh {415 280 80 25} + extra_code {;} + } + } +} diff --git a/einstaller/einstaller.h b/einstaller/einstaller.h new file mode 100755 index 0000000..8b265bc --- /dev/null +++ b/einstaller/einstaller.h @@ -0,0 +1,30 @@ +/* + * $Id$ + * + * Package manager for Equinox Desktop Environment + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +#ifndef einstaller_h +#define einstaller_h +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern fltk::TextEditor* result_output; +extern fltk::ProgressBar* install_progress; +#endif diff --git a/einstaller/icons/install.xpm b/einstaller/icons/install.xpm new file mode 100755 index 0000000..7316166 --- /dev/null +++ b/einstaller/icons/install.xpm @@ -0,0 +1,490 @@ +/* XPM */ +const char *install[] = { +/* columns rows colors chars-per-pixel */ +"120 260 224 2", +" c Gray0", +". c #0f0f3f3f0f0f", +"X c #0f0f37372f2f", +"o c #202018180f0f", +"O c #20201f1f1f1f", +"+ c #2f2f28281010", +"@ c #2f2f28281f1f", +"# c #3f3f37371f1f", +"$ c #2f2f27272020", +"% c #2f2f2f2f2f2f", +"& c #202037372f2f", +"* c #202038383030", +"= c #20203f3f3f3f", +"- c #30302f2f2f2f", +"; c #303037372f2f", +": c #3f3f37372f2f", +"> c #3f3f37373030", +", c #000017174040", +"< c #00001f1f4040", +"1 c #00001f1f4f4f", +"2 c #00001f1f5050", +"3 c #00001f1f5f5f", +"4 c #000000007f7f", +"5 c #00001f1f6060", +"6 c #00001f1f6f6f", +"7 c #00001f1f7f7f", +"8 c #000028285f5f", +"9 c #0f0f37374040", +"0 c #000027276f6f", +"q c #000028286060", +"w c #000028286f6f", +"e c #000027277070", +"r c #000028287070", +"t c #00002f2f7070", +"y c #00003f3f7f7f", +"u c #20203f3f5050", +"i c #0f0f67670000", +"p c #0f0f68681f1f", +"a c #2f2f4f4f1010", +"s c #3f3f40403030", +"d c #2f2f68680000", +"f c #2f2f6f6f1010", +"g c #0f0f58584f4f", +"h c #000050505f5f", +"j c #101048484040", +"k c #0f0f60605f5f", +"l c #000068686060", +"z c #0f0f68686060", +"x c #000067677070", +"c c #000070706060", +"v c #000070706f6f", +"b c #000070707070", +"n c #000078787070", +"m c #00007f7f7f7f", +"M c #2f2f48484040", +"N c #2f2f50504f4f", +"B c #2f2f57575f5f", +"V c #202060604040", +"C c #2f2f68686060", +"Z c #303070707070", +"A c #4f4f38382020", +"S c #404048481010", +"D c #4f4f48482020", +"F c #4f4f40403030", +"G c #4f4f47473f3f", +"H c #5f5f47472f2f", +"J c #4f4f60601f1f", +"K c #707048481f1f", +"L c #6f6f68681f1f", +"P c #4f4f48484040", +"I c #4f4f50504040", +"U c #4f4f50504f4f", +"Y c #4f4f58584f4f", +"T c #5f5f57574f4f", +"R c #50505f5f5f5f", +"E c #4f4f70707070", +"W c #6f6f67674f4f", +"Q c #6f6f67675f5f", +"! c #6f6f6f6f6f6f", +"~ c #707070706060", +"^ c #707070706f6f", +"/ c #707078786f6f", +"( c #707078787070", +") c Gray50", +"_ c #00001f1f8f8f", +"` c #00000f0fa0a0", +"' c #00001717a0a0", +"] c #00001717afaf", +"[ c #00001f1fafaf", +"{ c #000027278080", +"} c #000027278f8f", +"| c #00002f2f8080", +" . c #00002f2f8f8f", +".. c #000027279090", +"X. c #00002f2f9090", +"o. c #00002f2f9f9f", +"O. c #0f0f37379090", +"+. c #00002727afaf", +"@. c #00002f2fa0a0", +"#. c #00002f2fafaf", +"$. c #00002f2fb0b0", +"%. c #00003737a0a0", +"&. c #00003737b0b0", +"*. c #00003737bfbf", +"=. c #00002f2fd0d0", +"-. c #00004f4f9f9f", +";. c #1f1f58589f9f", +":. c #00004040a0a0", +">. c #00004040bfbf", +",. c #00004848bfbf", +"<. c #00005858afaf", +"1. c #000078788080", +"2. c #00004747c0c0", +"3. c #00004040cfcf", +"4. c #00005050c0c0", +"5. c #00005858c0c0", +"6. c #00005858cfcf", +"7. c #00004848e0e0", +"8. c #00005050e0e0", +"9. c #00005757ffff", +"0. c #00006060cfcf", +"q. c #10106060cfcf", +"w. c #00006060ffff", +"e. c #00006f6ff0f0", +"r. c #0f0f6868f0f0", +"t. c #1f1f6f6fffff", +"y. c #3f3f7070cfcf", +"u. c #4f4f68689090", +"i. c #0000bfbf0000", +"p. c #202088881010", +"a. c #1f1f90906060", +"s. c #0000a0a04040", +"d. c #2f2fc7c72020", +"f. c #1f1fd0d04f4f", +"g. c #5f5f88881f1f", +"h. c #6060a0a01010", +"j. c #505090906f6f", +"k. c #6060cfcf2020", +"l. c #4040dfdf6f6f", +"z. c #000080808080", +"x. c #0000bfbfbfbf", +"c. c #3f3f90909090", +"v. c #20208f8fdfdf", +"b. c #707090909090", +"n. c #70709090afaf", +"m. c #50509797c0c0", +"M. c #6f6f9f9fcfcf", +"N. c #6060f0f0a0a0", +"B. c #bfbf00000000", +"V. c #a0a038381010", +"C. c #90906f6f1f1f", +"Z. c #9f9f70704f4f", +"A. c #808078786f6f", +"S. c #8f8f78786060", +"D. c #909088883f3f", +"F. c #8f8fb8b81010", +"G. c #9090b8b83f3f", +"H. c #bfbfbfbf0000", +"J. c #8f8f80806f6f", +"K. c #808080807070", +"L. c #8f8f87877070", +"P. c #bfbf98984040", +"I. c #afaf88886060", +"U. c #afaf98986f6f", +"Y. c #c0c0a7a77070", +"T. c #c0c0d8d82f2f", +"R. c Yellow", +"E. c #dfdfdfdf4f4f", +"W. c #808087878080", +"Q. c #8f8f88888f8f", +"!. c #8f8f90908f8f", +"~. c #909088888080", +"^. c #909090908080", +"/. c #9f9f90908f8f", +"(. c #9f9f98988f8f", +"). c #9f9f98989090", +"_. c #9f9f98989f9f", +"`. c #80809f9fa0a0", +"'. c #8f8fa0a0b0b0", +"]. c #a0a098989090", +"[. c #a0a0a7a79f9f", +"{. c #afafa8a89f9f", +"}. c #bfbfafaf9090", +"|. c #a0a0a8a8afaf", +" X c #afafa8a8a0a0", +".X c #a0a0b7b7afaf", +"XX c #b0b0afafa0a0", +"oX c #b0b0b0b0afaf", +"OX c #bfbfb7b7afaf", +"+X c #b0b0b8b8bfbf", +"@X c #bfbfb8b8b0b0", +"#X c Gray75", +"$X c #80809797f0f0", +"%X c #8080a7a7cfcf", +"&X c #9f9fb7b7c0c0", +"*X c #b0b0b8b8cfcf", +"=X c #a0a0afaff0f0", +"-X c #9090cfcfcfcf", +";X c #9090f0f0efef", +":X c #afafc8c8d0d0", +">X c #b0b0c7c7c0c0", +",X c #a0a0c8c8efef", +" j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX; ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z aX5X6X6X5X5X5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX; ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z pX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX; ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z pX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX; ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z pX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX; ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z pX5X6X6X6X6X|.`.`.`.`.'.+X+X+X+X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX- ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z pX6X6X6X6X4 , , 4 4 4 , , 4 4 4 5 5 4 2 5 5 5 5 5 5 y ;.B B B ;.;.u.u.n.n.n.n.|.+X+X+X+X+X+X+X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z aX6X6X6X6X4 , 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 , , , , , , , , , , , , , , , , , , 2 2 2 , , , 2 3 2 2 2 3 q q w u.6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 6 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 , , , , q 6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 7 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` q 6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , _ ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q 6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 4 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q 6X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 4 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q 6X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 4 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q 6X6X6X6X6X6X6X6X6XuX% ; s s s s s s = m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 0 5X6X6X6X6X6X6X6X6XuX% ; s s s s s s = m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6 5X6X6X6X6X6X6X6X6XuX% ; s s s s s s = m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6 5X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX4X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6 5X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m Z sX5X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6 5X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0 5X6X6X6X6X6X6X6X6XuX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0 5X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0 5X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0 5X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 0 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ' ' ' ' ] ' ] ' ' ' ' ] ' ' ' ' ' ] ' ' ] ] ' ' ] ' ] ' ' ' ] ' ] ' ' ' ] ' ] ' ' ] ' ' ' ] ' ] 0 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C aX6X6X6X6X4 , [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 0 4X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C aX5X6X6X6X4 , [ [ [ [ [ [ [ [ [ [ [ +.o.X.#.#.#.#.#.#.#.+.+.[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C aX4X6X6X6X4 , +.+.+.+.+.+.+.+.+.+.+.X.y .X.X.X.#.#.$.#.#.#.+.+.+.+.+.+.+.+.+.+.+.+.+.+.t 4X6X6X6X6X6X6X6X6XpX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C pX5X6X6X6X4 , +.+.$.$.$.$.$.+.+.+.$.;. m.M.M.M.m.m.m.u.;.;.y &.$.+.$.$.+.$.+.+.+.+.+.+.+.t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C uX5X6X6X6X4 , $.$.$.$.$.$.$.$.$.$.&.q. &X&X&X&X&X&X&X&X%X%XM.M.M.M.M.M.M.M.M.m. ;.&.$.$.$.$.$.$.$.$.$.$.$.$.t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C uX6X4X6X6X4 , $.$.$.$.$.$.$.$.$.$.>.q. +X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X&X ;.>.$.$.$.$.$.$.$.$.$.$.$.$.t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C yX6X4X6X6X4 , &.&.&.&.&.&.&.&.&.&.>.q. +X+X&X&X&X>X>X>X>X>X+X+X+X+X+X+X+X+X+X&X ;.>.&.&.&.&.&.&.&.&.&.&.&.&.t >X6X6X6X6X6X6X6X6XpX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 , *.&.*.*.&.*.&.&.*.&.,.q. +X+X-Xu.;.;.u.m.m.n.%X:X9X9X7X:X-X>X+X&X ;.,.&.*.&.*.&.&.*.&.&.*.&.*.t >X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X5X6X6X4 2 >.>.>.>.>.>.>.>.>.>.,.q. +X>X-X%Xn.m.m.u.;.;.u.sXsXsXsXsXsX>X+X&X ;.,.>.>.>.>.>.>.>.>.>.>.>.>.t >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X5X6X6X4 2 >.>.>.>.>.>.>.>.>.>.,.q. +X&X-X-X-X-X-X-X-X-X-X:X:X7X9XsXsXsX+X&X ;.,.>.>.>.>.>.>.>.>.>.>.>.>.t >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 , ,.,.,.,.,.,.,.,.,.,.,.q. M.M.M.M.%X%X-X-X-X-X-X-X-X-X-X-X-X>X+X-X ;.,.,.,.,.,.,.,.,.,.,.,.,.,.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 2.,.2.,.2.2.2.,.2.,.,.6. q.q.y.y.m.M.M.M.M.M.M.M.M.M.M.%X-X-X-X%X ;.6.2.,.2.,.2.2.,.2.2.2.2.2.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 4.4.4.4.4.4.4.4.4.4.4.4. y y ;.;.;.q.q.y.y.y.m.M.M.M.M. ;.6.4.4.4.4.4.4.4.4.4.4.4.4.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s g m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.5.<. y y ;.;.;. <.5.4.4.4.4.4.4.4.4.4.4.4.4.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s g m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.<. 5.5.5.5.5.5.5.5.5.5.5.5.5.5.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s g m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 6.5.6.6.6.6.6.6.6.6.6.5.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.5.6.6.6.6.6.6.6.6.6.6.6.6.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s : k m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 5.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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y *X6X6X6X6X6X6X6X6XpX$ ; s s s s s ; k m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s * m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m B sX6X4X6X6X4 2 5.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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s & m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m k sX6X4X6X6X4 2 5.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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 5 5.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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 5 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 5 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y +X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 %.5.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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y +X>X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 4 y 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y +X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 4 4 4 4 <.5.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.0.0.0.0.0.0.0.0.0.0.0.0.0.5.y &X6X6X6X6X6X6X6X6XpX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX5X6X6X6X6Xn.'.u.;.4 4 4 4 4 4 4 <.5.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.0.0.0.0.0.0.5.q 6X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX5X6X6X6X6X6X6X6X6X6X+X&X&X&Xu.;.4 4 4 4 4 4 4 <.5.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.5.q 6X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X>X+X&X&Xn.;.4 4 4 4 4 4 4 <.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.q 6X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j n z j k m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X>X+X&Xn.u.4 4 4 4 4 4 4 <.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.q 6X6X6X6X6X6X6X6X6XpX% ; s s s s > ; * * = k * z m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X>X&X'.u.4 4 4 4 4 4 4 5.0.0.0.0.0.0.0.0.0.q 6X6X6X6X6X6X6X6X6XpX$ ; > ; ; % ; * W U.U.U.z = m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m C sX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X>X+X'.b.4 4 4 4 4 4 4 5.0.<.y 6X6X6X6X6X6X6X6X@X).$ % ; * W I.U.U.U.U.U.U.U.= k m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m z sX#X4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X>X.X'.4 4 4 4 6X6X6X6X2X!.R > s s W S.U.U.U.U.U.U.U.U.U.U.U.U.* n m m m m m m m m m m m m m m m m n m m m ", +") m m m m m m m m m m m m m m m m z aX#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X#X).Q > > G W S.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.j k m m m m m m m m m m m m m v k * * n m m ", +") m m m m m m m m m m m m m m m m m n v v z C `.#X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X5X[.^ G > G T S.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.* v m m m m m m m m m n k = * M N M m m m ", +") m m m m m m m m m m m m m m m m m m m m m m n v v z z Z |.#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XR > I T S.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.k m m m m m m n k * * D D D D ; v m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m n v v z z Z _.oX#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X|.~ U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.v m m m m n k * ; D D F D D D M m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n v z z I [.#X#X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XS.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Z.W I.sXsX5Xn & g G D D D D D D D D * v m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m E I > % % - ; L.OX#X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X~ U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.I.W I.5XsXaXZ.D # D D D D D D D D D D D D = m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m g B I U U U I s o o o $ Q #X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X+X~ U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Z.W Y.sXsXsX}.# D D D D D D D D D D D D D O j m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z l P I I I I I I I G U P > @ O o o o o O #X#X#X#X#X#X6X6X6X6X6X6X6X6X6X6XW.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.I.Z.U.rXsXsXsXsXsX# D D D D D D D D D D : $ o = m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m j C Q R R T U I I I I G I I P G G > ; % $ O o o o o O #X#X#X#X#X6X6X6X6X6X6XW D U.U.U.U.U.U.U.U.U.U.U.U.Z.D.}.sXsXsXsXsXsXsXI.D D D D D D D D D D o o = m m m m m ", +") m m m m m m m m z N N j j N N z n n n n m m m m m m m m m z l E ) / ^ ! Q R R T U I G I I I P G G > ; % % @ O O o o o o o o o #X#X#X#X#X6X6XW H U.U.U.U.U.U.U.U.I.Z.Y.yXsXsXsXsXsXsXsXsXsXo D D D D D D D # = m m m m m ", +") m m m m m m n Y Y Q ~ (.[.[.~.!./.L./ E E C C z m m m m g n ).!.Q.W.) K.( ^ ! ! Q R T U U I I I P G s > ; % % @ @ O O O o o o o O O O o o o #X#X#XY # U.U.U.U.U.Z.I.OXsXsXsXsXsXsXsXsXsXsXsXW D D D D D D & Z c.M m m m m m ", +") m m m m m m v oXyXpXaXuXyX6XoX/.~ T T ~ (.].XXZ m m k v `.oX|. X[._./.!.Q.W.) ) / ^ ! T R R T U I I P G s > ; ; % % % % @ @ @ @ @ % % % ; ; ; ; $ % ; # U.I.I.}.aXsXsXsXsXsXsXsXsXsXsXsXsXyXo D D D # A OX+XsXsXR m m m m m ", +") m m m m m m v oX~ G I ~ ~.OXuXsXsXpXyXL.XXZ j j z.4X4X4X+X@XoXXX X_._.).!.Q.W.) K.^ Q ! ! Q R R T U P P G G s > > ; ; ; ; ; ; ; ; > s s G G P I G W # H ^.6XuXsXsXsXsXsXsXsXsXsXsXsXsXD D D Z.sXsXsX:XsXsXR m m m m m ", +") m m m m m m k @X~ {.~.! o $ 2X6X6X6X6X5X5X#X2X@X@XoX|. X[._./.!.Q.K.! ( / ^ ! Q R R T U I P P G G G G G G G G G G G P P I I I s U.S.W D D : # D H W S.OXuXsXsXsX}.o A }.sXsXsXsXsX7XsXsXR m m m m m ", +") m m m m m m k 5XI OXO o !.6X6X6X6X6X6X6X6X6X6X4X4X4X2X@XoXXX X[._.).!.) ) ) K.( ^ ! ! Q R R T U I I I I I I I I I I I I I P G : U.U.U.U.U.U.U.S.S.W W D : # D o W sXsXsXsXsXsXsXsX7XsXsXR m m m m m ", +") m m m m m m k 6XF o s 2X6X6X6X6X6X6X6X6X6X6X6X6X6X6X5X5X#X2X@X@XoX|. X[./.W.K.W.W.) ) / ^ ! Q R R T U I I I I I I I I P G G P F U.U.U.U.U.U.U.U.U.U.U.U.U.U.~ @ Y.sXsXsXsXsXsXsXsXsXsX9XsXsXR m m m m m ", +") m m m m m m z 6XG o ~ yXsXsXsXsX6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X4X4X2X@XoXXX X[./.W.K.) K.K.( ^ ! ! ! Q R T U I P G G G G P I I F U.U.U.U.U.U.U.U.U.U.U.U.U.U.W H aXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXR m m m m m ", +") m m m m m m k 6XO O ) ~ W.) !.|.sXsXsXsXsXsXsX6X6X6X6X6X6X6X6X6X6X6X5X5X#X2X@X@XoX X X[./.Q.W.) / ^ ! Q Q R R R R T U I I I I I F U.U.U.U.U.U.U.U.U.U.U.U.U.U.W Z.sXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXC m m m m m ", +") m m m m m m k yX O / / / / / / ) W.Q./.W._._.sXsXsXsXsXsXsX6X6X6X6X6X6X6X6X4X4X4X+X@XoXXX X_._.).!.Q.W.) K.( ^ ! ! Q R R T U I F U.U.U.U.U.U.U.U.U.U.U.U.U.U.W rXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ", +") m m m m m m k pX O / / / / / / / / / / / / / / W.Q.!.!.{.oXsXsXsXsXsXsXsXsX6X6X6X5X5X#X2X@X@XoX X X[._./.!.Q.W.) ) / ^ ! Q R R G U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ", +") m m m m m m k aX O / / / / / / / / / / / / / / / / / ~.L.~.) W.!.!.Q._._.|.sXsXsXsXsX#X#X#X#X4X+X@XoXXX X_._.).!.Q.W.) K.( ^ ! I U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ", +") m m m m m m g aX O / / / / / / / / / / / / / / / / / L.^./.K./ / / / / / ^ W.Q.!.!.!._._.sXsX#X#X#X#X#X#X#XoX|. X[._./.!.Q.W.) T U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ", +") m m m m m m j aX O / / / / / / / / / / / / / / / / / K.L.(.L./ / / / / / / / / / / / / ~ W.Q.!.!.W.) Q.sXsX#X#X#X#X#X#X_._.).!.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ", +") m m m m m m k rX O / / / / / / / / / / / / / / / / / ) L.(.~./ / / / / / / / / / / / / / / / / / / / ~ ) Q.!.!.( ( ( sX#X#X#X#XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXN m m m m m ", +") m m m m m m j {. O / / / / / / / / / / / / / / / / / / L.^.(.L./ / / / / / / / / / / / / / / / / / / / / / / / / / ~ ) Q.!._.^ P U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXN m m m m m ", +") m m m m m m j XX O / / / / / / / / / / / / / / / / / / ) L.(./.L./ / / / / / / / / / / / / / / / / / ~ ~ ~ / / / / / / / / / ~ : U.U.U.U.U.U.U.U.U.U.U.U.U.U.W sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ", +") m m m m m m j ^. O A./ / / / / / / / / / / / / / / / / / K.L.(.(.L.A./ / / / / / / / / / / / / / / |.|.|.|._.!.W./ ~ ~ ~ ~ / / ; U.U.U.U.U.U.U.U.U.U.U.U.U.U.D sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ", +") m m m m m m N J. O K.K.K.K.K.) A.A.A./ / / / / / / / / / / L.^.^.(.^.L.A./ / / / / / / / / / / / ~ |.|.|.|.|.|.|.|.|.|.|.|._.Q.s U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ", +") m m m m m m N 5XuX6XXX~ I % O W.W.W.W.W.L.L.L.K.K.K.K.) ) ) A./ / / / / K.~.L.^.(.^.L.A./ / / / / / / / / / / |.|.|.|.|.|.|.|.|.|.|.|.|.|.P U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ", +") m m m m m m N 4X4X4X5X5X6XyXaXsX6X].T O !.!.Q.~.~.~.~.W.W.W.W.W.W.L.L.L.K.K.K.K.) ) K.L.~.L.^.(.^.L.) / / / / / / / / / K.W.[.|.|.|.|.|.|.|.|.|.|.|.P U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ", +") m m m m m m N 5X6X6X5X4X4X5X].~ OX6X_.O )./././././.!.!.!.!.Q.~.~.~.~.W.W.W.W.W.W.L.L.L.L.W./.^.(.^.^.~.L.L.L.K.A./ / / / / / / ~ ~ ~ ~ W.Q._.|.|.|.P U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX= m m m m m ", +") m m m m m m B oXoX2XOX4X4X[.O % o OX!.O ].].].].].).).).)./././././.!.!.!.!.Q.~.~.~.~.W.W.W.W.~.(.].].^.^.^.^././.^.~.~.L.L.L.K.A./ / / / / / ~ ~ ~ ; U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX= m m m m m ", +") m m m m m m C 2XT ~ 2X4X4X^.@ s @ /.!.$ [.[.[.[.[.[.[.[.].].].].].).).).)./././././.!.!.!.!.Q.~.Q./.(.].].].(.(.(.(.^.(.(.(.(.(./.^.~.~.W.L.L.K.A./ % U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXiX= m m m m m ", +") m m m m m v C 5X4X4X4X4X4X5X; @ ; 5X!.O (.[.oXXX X X X[.[.[.[.[.[.[.[.[.].].].].].).).).)././././././././././.(.(.(.(.(.(.^.(.^.^.^.(.(.].].(.(./.^.; U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m m n z z E `..X4X4X5XyXOXyX6X_.O J.Q T W ~ L.^.].[.XXXX X X X X[.[.[.[.[.[.[.[.[.].].].].].).).).)././././././././././.(.(.(.(./.^./.(.^.^.(.: U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m m m m m k v j j j * Y ) !.Q : ; @XOXOXOX[./.~.S.W T W S.~.(.].oXXXXXXX X X X X[.[.[.[.[.[.[.[.[.].].].].].).).).)./././././././././.(.(.(.(.: U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m m m n C z.4X4XOX).W.R G $ % ; G R ( ). XXXoXoXoXoXOXXX[./.J.~ W T Q A./.].[.oXXXXXXXXX X X X X[.[.[.[.[.[.[.[.[.].].].].].).).).)./././././.s U.U.U.U.U.U.U.U.U.U.U.U.U.U.@ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m m m B C 4X4X4X4X4X4X4X4X4X@X[.) Q G % @ ; I Y ) ). XoXoXoXoXoXOX@X[.]./.A.Q T W ~ J./.[. XoXXXXXXXXXXX X X X X[.[.[.[.[.[.[.[.[.].].].].].).T U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m m v P @X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X XW.! P ; O ; P R ) `. XoXoXoXoXoXoXOXOX[.].~.S.W T W S.~./.[.OXoXoXXXXXXXXXXX X X X X[.[.[.[.[.[.[.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m m N ) 4X4X4X4X5X6X6X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X[.Q.! P ; O ; G R ( !.[.oXoXoXoXoXoXOXOXXX[./.L.~ W T W A./.].[.OXoXoXXXXXXXXXXXXX X X XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ", +") m m m m v R 4X4X4XJ.~ XXW 6X4X4X4X5X6X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X XQ.Q I ; O ; G R ( !.[. XoXoXoXoXoXoXOXOX{.]./.A.Q T W ~ J./.].XXOXoXoXoXXXT U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ @ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m m m m B !.4X4X4X].T @ 2X5XXX/.2XOX uX5X6X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X#XoX~.Q P - O @ G R ( !.[.|.oXoXoXoXoXoXOXOXOX[.].^.A.W T W ~ ~./.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ @ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m m m z R 4X4X4X4X4X5X6X6X4X4X[.F o Q T J.L. 6X6X6XL.5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X@X~.Q G % O O ; Y ( !._.|.@XOXoXoXoXoXoXOXOXXX[./.L.F U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ @ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m m m Y !.4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X~.Q ~ - Q 5XyXuXT [.4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X2XQ.Q F @ O O @ G R !._..X4X@XOXoXoXoXoXG U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m m z R b.4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X[.T ].o o 5X5X5X6XyX~./.4X4X5X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X6X4X~.Q F $ O O O - Y ! '.+X4XI U.U.U.U.U.U.U.U.U.U.U.U.U.U.o sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m m U !.b.4X4X6X6XyX~ 5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X6X6X2X{.5X5X : L.2XuX~.o 6X4X5X6X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X~.Q T @ O O O # U.U.U.U.U.U.U.U.U.U.U.U.U.U.o sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m z R b.#X4XXX - T 5X4X5X6X6X[.5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X[.~.J. A.J.XX^. uX6X6XXX5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X^.F U.U.U.U.U.U.U.U.U.U.U.U.U.U.o sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ", +") m U _.+X4X4X4X5X[.G {.5X5X P A. XXyXuXJ.[.4X4X5X5X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6XuX].Q @ ~ - ~ W 6X4X5X5X6X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.o sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX8X= m m m m m ", +") z R .X4X4X4X4X4X4X5X5X4X5XXX~.P ~ O - L.2XuXJ.: 6X5X5X6X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X[.J.o {.5XXX@ J.(. 6X6X6X/.2X4X4X4X4X4X4X4X4X4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U. sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ", +") U X4X4X+X4X4X4X5X6X6X[.5X5X6X6X6X6X6X].(.A. A.J.XX~ 6X4X4X4X5X6X5X4X4X4X4X4X4X4X4X4X4X4X5X5X5X4X2X~.Q ~ - Q (.yXuXJ./.5X4X5X5X4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U. sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ", +") R @X4X4X+X4X4XXX T T 6XyXuXT XX4X5X6X6X6X6XyXuX].T @ {.5XXX/.5XOX uX5X6X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X6X].Q L.@ o A.[.pX~ o 4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U. sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ", +") oX4X4X4X@X5X6X5XOX~.F {. O ].5XpX- J.6X5X6X6X5X5X6X6X5X4XXX- o Q T J.L. 6X6X6X/.5X4X4X5X4X4X4X4X4X4X4X4X4X4X4X5X5X6X6X2X].L.@ 2X4X4X5X6XG U.U.U.U.U.U.U.U.U.U.U.U.U.U. sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ", +") .X4X4X4X.XJ.L. 5X6X6X6XyX6X].5XT J.L.XXo 5X4X5X4X5X6X5X6X6XyX4X~.T ~ - Q XXyXuXQ [.4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X6X4X4X4X~ # U.U.U.U.U.U.U.U.U.U.U.U.U.U. sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXc.* z m m m m ", +") Z .X4X4X.XQ o J.5X4XA.~.2XuXaX~ ~.yXyXuX/.T % 6X5X(./.6XJ. yX6X6X5X5X5X6X6X6X6X].T ^.o o OX5X5X6XyX/./.4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. o sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX&XN k m m m m m ", +") B b.4X4X.X6X6X5X4X4XA.G o o OX4X5X6XyXyXuXyX5X5X].: A.I L.~ pX6XyX~.6X4X5X6X6X6X6XOX].5X5Xo F A.2XuX(.o 6X5X5X6X5X4X4X4X4X4X4X4X4X4X4XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. @ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXC * z m m m m m m ", +") U c.'.`.z.6X6X6X4X4X5X6X6X6X2X].5X4X[. @ Q ~.2X6X6X6XyXuXuX4X~.T A. ; : 5XyXuX: XX4X4X4X5X5X5X6X6X{.J.L. ~ J.XX^. uX6X6XXX5X4X4X4X4X4X4XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. @ sXsXsXsXsXsXsXsXsXsXsXsXsXsX@X* M n m m m m m m m ", +") n U U U B G : T ~.6X6X6X6X6X5X5X4X4X4X6X[.L.G o : J.[.6XyXyXuXuXyX5X].T [.o 6X5X6X6XuX~ [.4X5X6X6X6X6XyXuX[.W @ ~ - ~ Q 6X4X4X4X4X5X6XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. # sXsXsXsXsXsXsXsXsXsXsXsXsX! * k m m m m m m m m m ", +") m n z C C P * M N N G s s A.[.6X6X6X6X5X5X5X6X6X6X5X/.~ @ @ Q ~.2XyXuXuXyXyXpXOX5X5X5X - (.5XpXW T 6X5X6X6X5X5X6XyX6X].J.o {.5X4X4X~ [.aX I U.U.U.U.U.U.U.U.U.U.U.U.U.U. W sXsXsXsXsXsXsXsXsXsXsXuXk * z m m m m m m m m m m ", +") m m m m m m m m m n z * = N N T G : T L.6X6X6X6X6X5X5X5X6X6X6X[.L.G o o : J.[.pX J.4X4X6X6X^.{.Q J.L.XXQ uX6X6X[.5X4X5X6X4X4X4X2XG @ !.U.U.U.U.U.U.U.U.U.U.U.U.U.U. W sXsXsXsXsXsXsXsXsXsX5X= = n m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m k & = M M N T F P A.XX6X6X6X6X5X5X5X6X6X6X5X/.~ % yX4X4X5X6XyXyXyXyXuXaX].T % ~ F A.% 6X4X4X4X4X5X6X5X5X6X6X6X) U.U.U.U.U.U.U.U.U.U.U.U.U.U. W sXsXsXsXsXsXsXsXsX).* k m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m n z & M N M T P F W L.6X6X6X6X6X5X5X5X6X6X6X4X4X4Xo o : J.[.yXJ. yX6X6X5X].J. 6X5X4XOXS.[.yX 4X4X4X4X4X) U.U.U.U.U.U.U.U.U.U.U.U.U.U. D sXsXsXsXsXsXsXsXk * z m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m n k & * M N F T P P ~ XX6X6X6X6X5X4X4X4X6X6XOX/.~ @ {.4X4X4X5X6XuXyX6X4X5X5XT @ F 6X4X4X4X4X) U.U.U.U.U.U.U.U.U.U.U.U.U.U. # sXsXsXsXsXsXyXM = n m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z & & M M s P T F W L.5X6X6X6X6X5X5X5X6X6X6X5X4X4X4X(. : J.].6XaX 6X6X6X5X4X4X4X4X4XR U.U.U.U.U.U.U.U.U.U.U.U.U.U.o # sXsXsXsXsX@X* j n m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z X * M M F T T T ~ XX6X6X6X6X5X4X4X4X4X5X2X/.~ @ 6X4X4X4X4X4X4X4X@X! U.U.U.U.U.U.U.U.U.U.U.U.U.U.o # sXsXsXsXE * z m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z X & * M s P T P W L.5X6X6X6X5X5X5X5X6X6X6X6X4X4X4X4X4X4X4X5X^.M U.U.U.U.U.U.U.U.U.U.U.U.U.U.o # sXsXaXj * v m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z & X * M M F T T I ~ [.6X6X6X6X5X4X4X4X4X4X4X4X4X].A.= U.U.U.U.U.U.U.U.U.U.U.U.U.U.o # sX6X* M n m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z X X = M > P T P T L.2X6X6X6X5X4X4X5X(.* k U.U.U.U.U.U.U.U.U.U.U.U.U.U. # _.* k m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z & X = M > F T T T ~ ].5XL.~ v k N z S.I.U.U.U.U.U.U.U.U.U.U. M * v m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z & X X = > F P J.v n z j = * * M N ~ U.U.U.U.U.U.U. $ = n m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z z X l v m m m m m v k M * * = T ~ U.U.U. o * g m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n m m m m m m m m m m v k j * * = T O * k m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n z j = v m m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n v c c c v n m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m c g V c <.z.r.q.e.e.0.a.p.p p k c m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n c f k.d.z.9.9.8.6.8.6.6.,.6.7.q.W J p.p.a.g v n m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m a.b.b.b.n.n.%X%X=X.>.;.p p p.J j m m m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m c.;X;XN.N.f.f.f.f.f.j.b.b.n.n.$X=XqXsXsXsXtXtXtXtXiX:Xm.m m m m m m m m m m m m 1.u.T.F.b.9.r.r.r.r.9.9.9.r.e.! j.B u.y ;.Z.V.V.V.B.< 7.3.3.2.2.>.*.-.h *.p.L o.b m m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m c.1X1X;X;XN.l.f.f.f.f.j.b.n.n.%X=X.>.>.>.%.&.:.$.#.J #.l m m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m ,XwX1X1X1X;XN.N.f.f.f.f.j.`.n.n.$X.>.&.%.#.@.@.@.Y S | k m m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m n sXeXwXwX1X1X;X;XN.l.f.f.f.j.b.n.%X=XiXsXsXtXtXtXiXeXwX1X;X;XN.N.m m m m m x b.q.2.c.q.v.q.R.k.m.9.w.9.j.k.d.0.c.6.n z ;.V g.U 3.7.3.u.P y 2.2.>.>.&.%.%.@.@.o.o.G S Y k m m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m X sXiXiXeXwXwX1X1X;X;Xl.f.f.f.b.b.n.$X7XsXsXtXtXtXeXwX1X;X;XN.N.N.l.m m m x r.9.9.r.r.r.j.k.D.C.H.l.k.l.v.a.p.n a.k.j.g.9.q.d.D.:.2.2.2.3.3.>.>.>.>.&.%.%.@.o.o...' V 8 K l m m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m j sXiXiXiXiXeXwXwX1X1X;XN.f.f.f.b.n.%X.*.*.&.&.#.%.%.%.o. .} } _ D L v m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m v sXsXsXsXiXiXiXeXeXwX1X;XN.l.f.a.`.n.=XsXsXtXtXeXwX1X;XN.N.l.l.a.a.a.a.;.9.w.w.r.e.c.T.D.P.P.P.P.Z.k.G.T.E.T.k.d.d.<.r.q.q.F.g.O.G.s 7.=.2.&.&.&.$.#.#.@.@.O. . .} { { | K J m m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m v _.sXsXsXsXsXsXiXiXiXeXwX1X;XN.f.f.b.%XqXsXtXtXwX1X;XN.l.l.a.a.a.a.V V V 6.r.w.r.e.v.c.y.u.Z.P.P.Z.G.F.k.G.T.G.k.p.9.8.8.7.a.h.h.g.H.g.g.V 3.>.%.%.@.@.@.@.o.O. .} { { { y J V m m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m v 0XsXsXsXsXsXsXsXsXsXiXiXeXwX1XN.f.a.'..o.o.o.o.o. . .} { 7 7 { h d f m m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m g |.eXeXiXiXiXsXsXsXsXsXsXsXsXsXsXsXN.g u.qXN.a.V V V N N N N N N N N N N N ;.r.r.t.t.t.v.v.U.Z.P.E.E.E.E.E.G.G.k.k.d.d.p.:.c.h.F.C.9 E =.:.*.&.:.O.o.o..... . .{ | 7 7 { ..f g.g m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m v = 7X*X:X:X:X:X:X:X:X7X7X7XqXqXeXiXc.z.z.x X N = = u u u u u u u B u B B B B r.r.t.t.t.t.v.~ E.Y.P.P.E.E.E.h.k.k.G.G.h.p.p.k.h.h.h.W g.h V >.o.@.@.@.o..... . .{ { e 6 7 { h J f m m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m . P &X'.'.'.'.'.'.'.'.'.'.'.'.'.'.&Xz.z.z.z.* qX'.b.u.E E E B B B B B B B B B t.t.t.t.v.v.m.Z.P.Z.C.E.E.E.E.h.k.T.G.h.g.h.h.h.h.a D.i k ..%.@.@.o.......} . .{ e 7 7 7 { @.d J g m m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m N `.'.'.'.'.'.'.'.'.'.'.&X&X:X7XiX7Xz.z.z.z.iXsXsXsXsXiX7X,X&X'.n.b.u.u.u.E u.t.t.t.v.v.m.( P.I.Z.E.E.T.E.E.h.G.T.a p.G.g.h.d g.C.7 *.%.o.o.o.o.....} } } | { e 6 7 7 { } y d f n m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m l $ &X'.'.'.'.'.&X&X&X:X:X7XeXiXsXsX9X.>.z O.;.K A K S 8 } { .h p 6 7 e 6 0 8 q 3 5 3 3 q 8 r q | | | O.O.O.O.X.X. .....*.n m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n m u.j.|.`.8XwXwXwXwXwXeXeXiX7XR u.3.3.2.2.2.2.2.2.2.>.>.>.>.>. .&.;.K A + a } | _ p . 7 e 3 5 w 3 3 3 2 2 2 5 q q r r O.| | O.| O.X. . ...o.*.m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m.Z -Xu.n.n.u.u.u z q.3.3.3.2.3.*.2.2.*.2.*.>.>.%.%.%.-.o.;.K K H A X y g d . 6 0 e q 3 3 2 2 8 q 8 8 * p j y y V y O.| | X.X.o. .o.&.m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m O.2.2.3.3.3.3.3.*.*.*.*.*.*.*.*.&.&.&.%.%.%.O.O.X. .{ , S H # S K S * D.S X 5 2 2 2 5 & J + . i J f d f J d y O.X.O.g y o.o. .m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m y *.*.*.*.*.*.*.*.*.*.*.*.*.&.&.&.%.%.%.@.O.O. . .X. .} 7 5 , 6 5 $ + + + . 5 2 2 3 f . U . p.A L + a J J d h g p p.f S +.@.y m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m l 3.*.*.*.*.*.*.*.*.*.*.&.$.&.%.%.@.%.@.o.o. .X.{ .| e e e 0 5 3 5 5 3 9 + 1 2 9 j a F . . g.A # a a f J a p p.i f C.& @.$.l m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m b 3.*.&.*.*.&.*.*.&.&.$.$.#.%.#.@.@.o.o.o. . . .{ | t e 0 0 5 3 3 3 2 2 3 2 $ % 2 & o A . a . f # a f p f i i f J f L } o.3.v m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m %.$.&.&.$.&.$.$.#.#.#.#.#.@.@.@.o.o. . . . .{ { e e 0 q 5 3 3 2 2 2 1 1 1 1 1 1 2 G # a a . a . i a i p f J f J C.a $.@.*.m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m h #.#.%.#.#.#.#.#.#.@.@.o.@.o.o. . . . .{ { e e 0 0 5 5 3 2 2 1 1 1 1 1 1 , 1 , q : a a . a i i i i i p J J f L L & $.@.h m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m v &.@.@.#.#.@.@.@.@.@.o.o.o. . . . . .{ { e e 0 0 q q 3 3 2 1 1 1 1 1 1 , , , 2 E + a . i i i i i i p J J J f K C.j #.*.v m m m m m m m m m m m m m m ", +") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n n m c.c.m.&X0XtX3X3X3X3XX:X:X7X\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:39 +#: einstall.cpp:69 +msgid "Please enter the name of the package.\n" +msgstr "Add meg a csomag nevét.\n" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr "Csomagok (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, Minden fájl (*.*), *" + +#: einstaller.cpp:512 +msgid "Package selection" +msgstr "Csomag kiválasztása..." + +#: einstaller.cpp:553 +msgid "Install software package" +msgstr "Szoftver csomag telepítése" + +#: einstaller.cpp:564 +msgid "Enter the name of software package you want to install:" +msgstr "Add meg a telepítendő csomag nevét:" + +#: einstaller.cpp:568 +msgid "&Browse..." +msgstr "&Tallóz" + +#: einstaller.cpp:571 +msgid "Welcome. This installation wizard will help you to install new software on your computer." +msgstr "Üdvözöllek. Ez a varázsló segít egy csomag telepítésében." + +#: einstaller.cpp:577 +msgid "Ignore dependencies" +msgstr "Függőségek figyelmenkívül hagyása" + +#: einstaller.cpp:585 +msgid "Installation results:" +msgstr "Telepítés eredménye:" + +#: einstaller.cpp:590 +msgid "Installation status:" +msgstr "Telepítési folyamat:" + +#: einstaller.cpp:598 +msgid "<< &Previous" +msgstr "<< &Előző" + +#: einstaller.cpp:603 +msgid "&Install" +msgstr "Te&lepítés" + +#: einstaller.cpp:607 +msgid "&Close" +msgstr "&Bezárás" + diff --git a/einstaller/locale/messages.pot b/einstaller/locale/messages.pot new file mode 100755 index 0000000..e62dbc6 --- /dev/null +++ b/einstaller/locale/messages.pot @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:39 einstall.cpp:69 +msgid "Please enter the name of the package.\n" +msgstr "" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr "" + +#: einstaller.cpp:512 +msgid "Package selection" +msgstr "" + +#: einstaller.cpp:553 +msgid "Install software package" +msgstr "" + +#: einstaller.cpp:564 +msgid "Enter the name of software package you want to install:" +msgstr "" + +#: einstaller.cpp:568 +msgid "&Browse..." +msgstr "" + +#: einstaller.cpp:571 +msgid "" +"Welcome. This installation wizard will help you to install new software on " +"your computer." +msgstr "" + +#: einstaller.cpp:577 +msgid "Ignore dependencies" +msgstr "" + +#: einstaller.cpp:585 +msgid "Installation results:" +msgstr "" + +#: einstaller.cpp:590 +msgid "Installation status:" +msgstr "" + +#: einstaller.cpp:598 +msgid "<< &Previous" +msgstr "" + +#: einstaller.cpp:603 +msgid "&Install" +msgstr "" + +#: einstaller.cpp:607 +msgid "&Close" +msgstr "" diff --git a/einstaller/locale/ru.po b/einstaller/locale/ru.po new file mode 100755 index 0000000..9979f3a --- /dev/null +++ b/einstaller/locale/ru.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:39 einstall.cpp:69 +msgid "Please enter the name of the package.\n" +msgstr " .\n" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr " (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, (*.*), *" + +#: einstaller.cpp:512 +msgid "Package selection" +msgstr " " + +#: einstaller.cpp:553 +msgid "Install software package" +msgstr " " + +#: einstaller.cpp:564 +msgid "Enter the name of software package you want to install:" +msgstr " , :" + +#: einstaller.cpp:568 +msgid "&Browse..." +msgstr "" + +#: einstaller.cpp:571 +msgid "" +"Welcome. This installation wizard will help you to install new software on " +"your computer." +msgstr "" +" . " +" " + +#: einstaller.cpp:577 +msgid "Ignore dependencies" +msgstr " " + +#: einstaller.cpp:585 +msgid "Installation results:" +msgstr " :" + +#: einstaller.cpp:590 +msgid "Installation status:" +msgstr " :" + +#: einstaller.cpp:598 +msgid "<< &Previous" +msgstr "<< " + +#: einstaller.cpp:603 +msgid "&Install" +msgstr "" + +#: einstaller.cpp:607 +msgid "&Close" +msgstr "" diff --git a/einstaller/locale/sk.po b/einstaller/locale/sk.po new file mode 100755 index 0000000..46614b3 --- /dev/null +++ b/einstaller/locale/sk.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: einstaller 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:41 einstall.cpp:68 +msgid "Please enter the name of the package.\n" +msgstr "Prosím zadajte meno balíka.\n" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr "Balíky (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, Všetky súbory (*.*), *" + + +#: einstaller.cpp:509 +msgid "Package selection" +msgstr "Výber balíka" + +#: einstaller.cpp:549 +msgid "Install software package" +msgstr "Inštalácia softvérového balíka" + +#: einstaller.cpp:560 +msgid "Enter the name of software package you want to install:" +msgstr "Vložte meno softvérového balíka, ktorý chcete nainštalovať:" + +#: einstaller.cpp:564 +msgid "&Browse..." +msgstr "&Hľadať..." + +#: einstaller.cpp:568 +msgid "" +"Welcome. This installation wizard will help you to install new software on " +"your computer." +msgstr "" +"Tento sprievodca inštaláciou Vám pomôže nainštalovať nový softvér na Váš " +"počítač." + +#: einstaller.cpp:574 +msgid "Ignore dependencies" +msgstr "Ignorovať závislosti" + +#: einstaller.cpp:582 +msgid "Installation results:" +msgstr "Výsledky inštalácie:" + +#: einstaller.cpp:587 +msgid "Installation status:" +msgstr "Stav inštalácie:" + +#: einstaller.cpp:595 +msgid "<< &Previous" +msgstr "<< &Späť" + +#: einstaller.cpp:600 +msgid "&Install" +msgstr "&Inštalovať" + +#: einstaller.cpp:604 +msgid "&Close" +msgstr "&Zavrieť" diff --git a/ekeyconf/Makefile b/ekeyconf/Makefile new file mode 100755 index 0000000..d7ef5da --- /dev/null +++ b/ekeyconf/Makefile @@ -0,0 +1,17 @@ + +CPPFILES = ../edelib2/Util.cpp ../edelib2/Config.cpp ekeys.cpp ekeyconf.cpp Shortcut_Button.cpp +TARGET = ekeyconf + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/ekeyconf/Shortcut_Button.cpp b/ekeyconf/Shortcut_Button.cpp new file mode 100755 index 0000000..4530e77 --- /dev/null +++ b/ekeyconf/Shortcut_Button.cpp @@ -0,0 +1,54 @@ +// -- copyied over from fluid (Fl_Menu_Type.cpp) +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include "Shortcut_Button.h" + +#include //#include +#include //#include +//#include +#include + + +void Shortcut_Button::draw() { + label(fltk::key_name(svalue)); + color(value() ? default_style->selection_color() : default_style->color()); + textcolor(value() ? default_style->selection_textcolor() : default_style->textcolor()); +#ifdef _WIN32 + Button::draw(); +#else + fltk::Button::draw(); +#endif +} + + +#include +int Shortcut_Button::handle(int e) { + when(0); type(TOGGLE); + if (e == fltk::KEY) { + if (!value()) return 0; + int v = fltk::event_text()[0]; + if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) { + v = v | fltk::event_state()&(fltk::META|fltk::ALT|fltk::CTRL); + } else { + v = fltk::event_state()&(fltk::META|fltk::ALT|fltk::CTRL|fltk::SHIFT) | fltk::event_key(); + if (v == fltk::BackSpaceKey && svalue) v = 0; + } + if (v != svalue) {svalue = v; do_callback(); redraw();} + return 1; + } else if (e == fltk::UNFOCUS) { + int c = changed(); value(0); if (c) set_changed(); + return 1; + } else if (e == fltk::FOCUS) { + return value(); + } else { +#ifdef _WIN32 + int r = Button::handle(e); +#else + int r = fltk::Button::handle(e); +#endif + if (e == fltk::RELEASE && value() && fltk::focus() != this) take_focus(); + return r; + } +} diff --git a/ekeyconf/Shortcut_Button.h b/ekeyconf/Shortcut_Button.h new file mode 100755 index 0000000..4ee9f13 --- /dev/null +++ b/ekeyconf/Shortcut_Button.h @@ -0,0 +1,43 @@ +// +// "$Id: Shortcut_Button.h 4886 2006-03-30 09:55:32Z fabien $" +// +// Shortcut header file for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2006 by Bill Spitzak and others. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library 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 +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to "fltk-bugs@fltk.org". +// + +#ifndef Shortcut_Button_H +#define Shortcut_Button_H + +#include + +class Shortcut_Button : public fltk::Button { +public: + int svalue; + int handle(int); + void draw(); + Shortcut_Button(int x, int y, int w, int h, const char* l = 0) : + fltk::Button(x,y,w,h,l) {svalue = 0;} +}; + +// +// End of "$Id: Shortcut_Button.h 4886 2006-03-30 09:55:32Z fabien $". +// +#endif diff --git a/ekeyconf/ekeyconf.cpp b/ekeyconf/ekeyconf.cpp new file mode 100755 index 0000000..226a5b5 --- /dev/null +++ b/ekeyconf/ekeyconf.cpp @@ -0,0 +1,154 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#include "ekeyconf.h" +/* + * $Id$ + * + * Keyboard shortcuts applet + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2005-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ +#include "../edelib2/NLS.h" +#include "../edeconf.h" +#include "ekeys.h" + +fltk::Window *iconsConfWindow=(fltk::Window *)0; + +static void cb_OK(fltk::Button*, void*) { + writeKeysConfiguration(); + sendUpdateInfo(); + exit(0); +} + +static void cb_Cancel(fltk::Button*, void*) { + exit(0); +} + +static void cb_Apply(fltk::Button*, void*) { + writeKeysConfiguration(); + sendUpdateInfo(); +} + +Shortcut_Button *shortcut=(Shortcut_Button *)0; + +static void cb_shortcut(Shortcut_Button*, void*) { + setshortcutfor(action->text(),shortcut->svalue); +} + +fltk::InputBrowser *action=(fltk::InputBrowser *)0; + +static void cb_action(fltk::InputBrowser*, void*) { + shortcut->svalue = getshortcutfor(action->text()); + shortcut->redraw(); +} + +static void cb_New(fltk::Button*, void*) { + newShortcutWindow->show(); +} + +static void cb_Remove(fltk::Button*, void*) { + removeShortcut(action->text()); + populatelist(action); + action->text(action->child(0)->label()); + action->do_callback(); +} + +fltk::Window *newShortcutWindow=(fltk::Window *)0; + +fltk::Input *shortcutName=(fltk::Input *)0; + +fltk::Input *shortcutCommand=(fltk::Input *)0; + +static void cb_Ok(fltk::Button*, void*) { + addShortcut(shortcutName->value(),shortcutCommand->value()); + populatelist(action); + action->text(shortcutName->value()); + action->do_callback(); + newShortcutWindow->hide(); +} + +static void cb_Cancel1(fltk::Button*, void*) { + newShortcutWindow->hide(); +} + +#include + +int main (int argc, char **argv) { + + fltk::Window* w; + //fl_init_locale_support("ekeyconf", PREFIX"/share/locale"); + readKeysConfiguration(); + {fltk::Window* o = iconsConfWindow = new fltk::Window(275, 265, "Keyboard settings"); + o->begin(); + {fltk::Button* o = new fltk::Button(20, 237, 80, 25, "&OK"); + o->callback((fltk::Callback*)cb_OK); + } + {fltk::Button* o = new fltk::Button(190, 237, 80, 24, "&Cancel"); + o->callback((fltk::Callback*)cb_Cancel); + } + {fltk::Button* o = new fltk::Button(105, 237, 80, 24, "&Apply"); + o->callback((fltk::Callback*)cb_Apply); + } + {fltk::TabGroup* o = new fltk::TabGroup(1, 5, 267, 226); + o->color((fltk::Color)0xfffffffe); + o->begin(); + {fltk::Group* o = new fltk::Group(0, 23, 263, 200, "Shortcuts"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(20, 52, 140, 20, "Keyboard shortcut:"); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE); + } + {Shortcut_Button* o = shortcut = new Shortcut_Button(20, 72, 140, 20, "Keyboard shortcut:"); + o->color((fltk::Color)7); + o->callback((fltk::Callback*)cb_shortcut); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE); + o->tooltip("To set a shortcut:\n Click here, then type the key combination you want.\nT\ +o delete the shortcut:\n Click here, then type backspace.\nTo get out of sho\ +rtcut-setting mode:\n Click the mouse on this again, or on some other field."); + } + {fltk::InputBrowser* o = action = new fltk::InputBrowser(20, 26, 165, 21, "Action:"); + o->callback((fltk::Callback*)cb_action); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + action->text("Next window"); + } + {fltk::Button* o = new fltk::Button(20, 127, 110, 25, "&New shortcut..."); + o->callback((fltk::Callback*)cb_New); + } + {fltk::Button* o = new fltk::Button(140, 127, 110, 25, "&Remove shortcut"); + o->callback((fltk::Callback*)cb_Remove); + } + o->end(); + } + o->end(); + } + o->end(); + o->resizable(o); + } + {fltk::Window* o = newShortcutWindow = new fltk::Window(285, 114, "Define new shortcut"); + w = o; + o->begin(); + shortcutName = new fltk::Input(104, 15, 170, 24, "&Shortcut name:"); + shortcutCommand = new fltk::Input(104, 49, 170, 24, "C&ommand"); + {fltk::Button* o = new fltk::Button(49, 83, 88, 24, "&Ok"); + o->callback((fltk::Callback*)cb_Ok); + } + {fltk::Button* o = new fltk::Button(158, 83, 88, 24, "&Cancel"); + o->callback((fltk::Callback*)cb_Cancel1); + } + o->end(); + o->set_modal(); + o->resizable(o); + } + populatelist(action); + shortcut->svalue = getshortcutfor("Next window"); + shortcut->redraw(); + + // Grab all keyboard events from window manager + iconsConfWindow->show(argc, argv); + XGrabKey(fltk::xdisplay, AnyKey, AnyModifier, fltk::xid(iconsConfWindow), true, GrabModeAsync, GrabModeAsync); + return fltk::run(); +} diff --git a/ekeyconf/ekeyconf.fl b/ekeyconf/ekeyconf.fl new file mode 100755 index 0000000..b65d58f --- /dev/null +++ b/ekeyconf/ekeyconf.fl @@ -0,0 +1,135 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {/* + * $Id$ + * + * Keyboard shortcuts applet + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2005-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */} {} + +decl {\#include "../edelib2/NLS.h"} {} + +decl {\#include "../edeconf.h"} {} + +decl {\#include "Shortcut_Button.h"} {public +} + +decl {\#include "ekeys.h"} {} + +Function {} {open +} { + code {//fl_init_locale_support("ekeyconf", PREFIX"/share/locale"); +readKeysConfiguration();} {} + {fltk::Window} iconsConfWindow { + label {Keyboard settings} open + xywh {471 199 275 265} resizable visible + } { + {fltk::Button} {} { + label {&OK} + callback {writeKeysConfiguration(); +sendUpdateInfo(); +exit(0);} + xywh {20 237 80 25} + } + {fltk::Button} {} { + label {&Cancel} + callback {exit(0);} + xywh {190 237 80 24} + } + {fltk::Button} {} { + label {&Apply} + callback {writeKeysConfiguration(); +sendUpdateInfo();} + xywh {105 237 80 24} + } + {fltk::TabGroup} {} {open + xywh {1 5 267 226} color 0xfffffffe + } { + {fltk::Group} {} { + label Shortcuts open + xywh {0 23 263 200} align 5 + } { + {fltk::InvisibleBox} {} { + label {Keyboard shortcut:} + xywh {20 52 140 20} align 36 + } + {fltk::Button} shortcut { + label {Keyboard shortcut:} + callback {setshortcutfor(action->text(),shortcut->svalue);} selected + tooltip {To set a shortcut: + Click here, then type the key combination you want. +To delete the shortcut: + Click here, then type backspace. +To get out of shortcut-setting mode: + Click the mouse on this again, or on some other field.} + xywh {20 72 140 20} align 36 color 7 + class Shortcut_Button + } + {fltk::InputBrowser} action { + label {Action:} + callback {shortcut->svalue = getshortcutfor(action->text()); +shortcut->redraw();} + xywh {20 26 165 21} align 5 + extra_code {action->text("Next window");} + } {} + {fltk::Button} {} { + label {&New shortcut...} + callback {newShortcutWindow->show();} + xywh {20 127 110 25} + } + {fltk::Button} {} { + label {&Remove shortcut} + callback {removeShortcut(action->text()); +populatelist(action); +action->text(action->child(0)->label()); +action->do_callback();} + xywh {140 127 110 25} + } + } + } + } + {fltk::Window} newShortcutWindow { + label {Define new shortcut} open + xywh {601 395 285 114} hide resizable modal + } { + {fltk::Input} shortcutName { + label {&Shortcut name:} + xywh {104 15 170 24} + } + {fltk::Input} shortcutCommand { + label {C&ommand} + xywh {104 49 170 24} + } + {fltk::Button} {} { + label {&Ok} + callback {addShortcut(shortcutName->value(),shortcutCommand->value()); +populatelist(action); +action->text(shortcutName->value()); +action->do_callback(); +newShortcutWindow->hide();} + xywh {49 83 88 24} + } + {fltk::Button} {} { + label {&Cancel} + callback {newShortcutWindow->hide();} + xywh {158 83 88 24} + } + } + code {populatelist(action); +shortcut->svalue = getshortcutfor("Next window"); +shortcut->redraw(); + +// Grab all keyboard events from window manager +XGrabKey(fltk::xdisplay, AnyKey, AnyModifier, fltk::xid(w), true, GrabModeAsync, GrabModeAsync);} {} +} diff --git a/ekeyconf/ekeyconf.h b/ekeyconf/ekeyconf.h new file mode 100755 index 0000000..2a24c4e --- /dev/null +++ b/ekeyconf/ekeyconf.h @@ -0,0 +1,19 @@ +// generated by Fast Light User Interface Designer (fluid) version 2.0100 + +#ifndef ekeyconf_h +#define ekeyconf_h +#include "Shortcut_Button.h" +#include +extern fltk::Window* iconsConfWindow; +#include +#include +#include +#include +extern Shortcut_Button* shortcut; +#include +extern fltk::InputBrowser* action; +extern fltk::Window* newShortcutWindow; +#include +extern fltk::Input* shortcutName; +extern fltk::Input* shortcutCommand; +#endif diff --git a/ekeyconf/ekeys.cpp b/ekeyconf/ekeys.cpp new file mode 100755 index 0000000..059baca --- /dev/null +++ b/ekeyconf/ekeys.cpp @@ -0,0 +1,285 @@ +/* + * $Id$ + * + * Keyboard shortcuts applet + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2005-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "ekeys.h" + + +using namespace fltk; +using namespace edelib; + + +#define NR_HOTKEYS 30 + + +static struct { + char systemname[20]; + char uiname[50]; + char command[50]; +} hotkeys[] = { + {"NextWindow", "Next window", ""}, + {"PreviousWindow", "Previous window", ""}, + {"NextDesktop", "Next workspace", ""}, + {"PreviousDesktop", "Previous workspace", ""}, + {"FastRun", "Run program", ""}, + {"FindUtil", "Find file", ""}, + {"CloseWindow", "Close window", ""}, + {"MinimizeWindow", "Minimize window", ""}, + {"MaximizeWindow", "Maximize window", ""}, + {"Desktop1", "Workspace 1", ""}, + {"Desktop2", "Workspace 2", ""}, + {"Desktop3", "Workspace 3", ""}, + {"Desktop4", "Workspace 4", ""}, + {"Desktop5", "Workspace 5", ""}, + {"Desktop6", "Workspace 6", ""}, + {"Desktop7", "Workspace 7", ""}, + {"Desktop8", "Workspace 8", ""}, + {"App1", "", ""}, + {"App2", "", ""}, + {"App3", "", ""}, + {"App4", "", ""}, + {"App5", "", ""}, + {"App6", "", ""}, + {"App7", "", ""}, + {"App8", "", ""}, + {"App9", "", ""}, + {"App10", "", ""}, + {"App11", "", ""}, + {"App12", "", ""}, + +}; + + + +int keycodes[NR_HOTKEYS]; + + + + +static void sendClientMessage(XWindow w, Atom a, long x) +{ + XEvent ev; + long mask; + + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = w; + ev.xclient.message_type = a; + ev.xclient.format = 32; + ev.xclient.data.l[0] = x; + ev.xclient.data.l[1] = CurrentTime; + mask = 0L; + if (w == RootWindow(xdisplay, xscreen)) + mask = SubstructureRedirectMask; + XSendEvent(xdisplay, w, False, mask, &ev); +} + +void sendUpdateInfo() +{ +// No worky +/* unsigned int i, nrootwins; + XWindow dw1, dw2, *rootwins = 0; + int screen_count = ScreenCount(fltk::xdisplay); + extern Atom FLTKChangeSettings; + for (int s = 0; s < screen_count; s++) { + XWindow root = RootWindow(fltk::xdisplay, s); + XQueryTree(fltk::xdisplay, root, &dw1, &dw2, &rootwins, &nrootwins); + for (i = 0; i < nrootwins; i++) { + if (rootwins[i]!=RootWindow(fltk::xdisplay, fltk::xscreen)) { + sendClientMessage(rootwins[i], FLTKChangeSettings, 0); + } + } + } + XFlush(fltk::xdisplay);*/ +} + +int getshortcutfor(const char* action) +{ + for (int i=0; i= 'a') && (key[0] <= 'z')) { + parsed += key[0]; + } else if ((key[0] >= 'A') && (key[0] <= 'Z')) { + parsed += (key[0] - 'A' + 'a'); + } + } + } + + return parsed; +} + +void readKeysConfiguration() +{ + Config globalConfig(Config::find_file("wmanager.conf", 0), true, false); + globalConfig.set_section("Hotkeys"); + + for (int i=0; i0 && tmp != "") strncpy(hotkeys[i].uiname, hotkeys[i].systemname, 20); + } + } + + globalConfig.set_section("ApplicationNames"); + for (int i=0; iclear(); // Rewrite? + for (int i=0; iadd ( hotkeys[i].uiname); +} + +void addShortcut(const char *name, const char *cmd) +{ + if ((strcmp(name,"") !=0) && (strcmp(cmd,"") != 0)) { + for (int i=0; i +#include //#include +#include //#include +//#include +#include //#include +#include "../edelib2/Config.h" //#include +#include "../edelib2/NLS.h" //#include +#include //#include + + +int getshortcutfor(const char*); +void setshortcutfor(const char*, int); +void readKeysConfiguration(); +void writeKeysConfiguration(); +void sendUpdateInfo(); +void populatelist(fltk::InputBrowser *); +void addShortcut(const char*,const char*); +void removeShortcut(const char*); + +#endif + diff --git a/ekeyconf/locale/messages.pot b/ekeyconf/locale/messages.pot new file mode 100755 index 0000000..131dfcc --- /dev/null +++ b/ekeyconf/locale/messages.pot @@ -0,0 +1,55 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-03 13:14+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ekeyconf.cpp:47 +msgid "Keyboard settings" +msgstr "" + +#: ekeyconf.cpp:50 +msgid "&OK" +msgstr "" + +#: ekeyconf.cpp:53 +msgid "&Cancel" +msgstr "" + +#: ekeyconf.cpp:56 +msgid "&Apply" +msgstr "" + +#: ekeyconf.cpp:61 +msgid "Shortcuts" +msgstr "" + +#: ekeyconf.cpp:63 +msgid "Keyboard shortcut:" +msgstr "" + +#: ekeyconf.cpp:68 +msgid "" +"To set a shortcut:\n" +" Click here, then type the key combination you want.\n" +"To delete the shortcut:\n" +" Click here, then type backspace.\n" +"To get out of shortcut-setting mode:\n" +" Click the mouse on this again, or on some other field." +msgstr "" + +#: ekeyconf.cpp:72 +msgid "Action:" +msgstr "" diff --git a/elauncher/Makefile b/elauncher/Makefile new file mode 100755 index 0000000..955af7b --- /dev/null +++ b/elauncher/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = elauncher.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp ../edelib2/process.cpp ../edelib2/pty.cpp +TARGET = elauncher + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/elauncher/elauncher.cpp b/elauncher/elauncher.cpp new file mode 100755 index 0000000..b357ddf --- /dev/null +++ b/elauncher/elauncher.cpp @@ -0,0 +1,758 @@ +/* + * $Id$ + * + * Program and URL opener + * Provides startup notification, crash handler and other features + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "elauncher.h" +#include "../edeconf.h" +#include "../edelib2/process.h" + +using namespace fltk; +using namespace edelib; + + + +// TODO: find where to replace magic constants with fltk::PATH_MAX + + + + + +// globals used in forking +int fds_[3]; +char *cmd_; +int pid_; + +// command-line parameters +bool param_root = false; +bool param_secure = false; +bool param_term = false; + +// from configuration file +bool use_sudo = false; + +char *output; + + + + +/*char * +itoa(int value, char *string, int radix) +{ + char tmp[33]; + char *tp = tmp; + int i; + unsigned v; + int sign; + char *sp; + + if (radix > 36 || radix <= 1) + { + return 0; + } + + sign = (radix == 10 && value < 0); + if (sign) + v = -value; + else + v = (unsigned)value; + while (v || tp == tmp) + { + i = v % radix; + v = v / radix; + if (i < 10) + *tp++ = i+'0'; + else + *tp++ = i + 'a' - 10; + } + + if (string == 0) + string = (char *)malloc((tp-tmp)+sign+1); + sp = string; + + if (sign) + *sp++ = '-'; + while (tp > tmp) + *sp++ = *--tp; + *sp = 0; + return string; +}*/ + + + +// -------------------------------------------- +// Show busy cursor - not working +// -------------------------------------------- +void show_busy_screen(bool busy) +{ + // We can't use fltk::Cursor cause it can be set only per widget... + // and only if you overload that widget! + // I hate OOP :) + ::Cursor xcursor; + if (busy) + xcursor = XCreateFontCursor(xdisplay, XC_watch); + else + xcursor = XCreateFontCursor(xdisplay, XC_arrow); + // Hopefully this is desktop? + XDefineCursor(xdisplay, CreatedWindow::first->xid, xcursor); + sleep (3); +} + + + +// -------------------------------------------- +// Show a generic window for displaying output stream +// -------------------------------------------- + +void output_window_close(Widget *w) +{ + w->window()->hide(); +} + +void output_window(char *title, char *content) +{ + int height=0; + TextBuffer buffer; + buffer.text(content); + + for (unsigned i=0;i550) height=550; + if (height<100) height=100; + + Window window(500, height); + window.label(title); + window.begin(); + + TextDisplay message(0, 0, 500, height-23, content); + window.resizable(message); + message.color(WHITE); + message.textcolor(BLACK); + message.buffer(buffer); + + Button* button; + button = new ReturnButton(410, height-23, 80, 23, _("&Ok")); + button->callback(output_window_close); + window.hotspot(button); + // window.focus(button); + window.end(); + window.exec(); +} + + +// -------------------------------------------- +// Crash window - with details +// -------------------------------------------- +#define GDBPATH "/usr/bin/gdb" + +static xpmImage crash_pix((const char **)crash_xpm); +Window *crashWindow; +Button *crashDetailsButton, *crashCloseButton; +TextDisplay *backTraceTD; +TextBuffer *gdbbuffer; + +void cb_crashDetails(Widget *w) { + if (backTraceTD->visible()) { + backTraceTD->hide(); + crashWindow->resize(450,110); + } else { + crashWindow->resize(450,395); + backTraceTD->show(); + } +} + +void cb_crashOk(Widget *w) { + w->window()->hide(); +} + +// Execute gdb and place output into gdbbuffer +bool get_me_gdb_output(int crashpid) +{ + int pid, status; + extern char **environ; + + status=0; + pid = fork (); + if (pid == -1) + return false; + if (pid == 0) + { + // child + char *argv[4]; + argv[0] = "sh"; + argv[1] = "-c"; + argv[2] = (char*)malloc(1000); // Who should free(argv[2]) ? + snprintf (argv[2], sizeof(argv[2])-1, "echo bt>/tmp/gdbbatch; echo q>>/tmp/gdbbatch; "GDBPATH" %s --core core.%d --command /tmp/gdbbatch --quiet > /tmp/gdboutput", cmd_, crashpid); + argv[3] = NULL; + + if (execve ("/bin/sh", argv, environ) == -1) + perror ("/bin/sh"); + return false; // Error + } + do + { + if (waitpid (pid, &status, 0) == -1) + { + if (errno != EINTR) + return false; // Error + } + else { + gdbbuffer->loadfile("/tmp/gdboutput"); + // Take out the garbage + char *corefile = (char*)malloc(20); + snprintf (corefile, sizeof(corefile)-1, "./core.%d", crashpid); + unlink(corefile); + free(corefile); + return true; + } + } + while (1); +} + +void crashmessage(char *command, int pid) +{ + gdbbuffer = new TextBuffer; + Window* w; + { + Window* o = crashWindow = new Window(450, 110, _("The program has crashed")); + w = o; + o->shortcut(0xff1b); + o->begin(); + { + Button* o = crashDetailsButton = new Button(250, 75, 90, 25, _("&Details...")); + o->callback((Callback*)cb_crashDetails); + o->type(Button::TOGGLE); + } + { + Button* o = crashCloseButton = new Button(350, 75, 90, 25, _("&Close")); + o->callback((Callback*)cb_crashOk); + } + { + InvisibleBox* o = new InvisibleBox(60, 5, 380, 16, _("An error occured in program:")); + o->align(ALIGN_LEFT|ALIGN_INSIDE); + } + { + InvisibleBox* o = new InvisibleBox(90, 20, 380, 16, command); + o->labelfont(o->labelfont()->bold()); + o->align(ALIGN_LEFT|ALIGN_INSIDE); + } + { + InvisibleBox* o = new InvisibleBox(60, 35, 380, 30, _("Please inform the authors of this program and provide the details below.")); + o->align(ALIGN_LEFT|ALIGN_INSIDE|ALIGN_WRAP); + } + { + InvisibleBox* o = new InvisibleBox(15, 15, 35, 35, ""); + o->image(crash_pix); + } + { + TextDisplay* o = backTraceTD = new TextDisplay(10, 110, 430, 275, ""); + o->hide(); + o->color(WHITE); + o->textcolor(BLACK); + o->buffer(gdbbuffer); + } + o->end(); + } + w->show(); + flush(); + + // Is there gdb on the system? + struct stat *buf = (struct stat*)malloc(sizeof(struct stat)); + if (stat (GDBPATH, buf) != 0 || !get_me_gdb_output(pid)) + crashDetailsButton->deactivate(); + w->exec(); + + return; +} + + +// -------------------------------------------- +// Error message window +// -------------------------------------------- + +// This should be replaced with one of redesigned standard dialogs... + +static xpmImage error_pix((const char **)error_xpm); + +void cb_errOk(Widget *w) { + w->window()->hide(); +} + +void errormessage(char *part1, char *part2, char *part3) +{ + Window* w; + { + Window* o = new Window(350, 100, _("Error")); + w = o; + o->shortcut(0xff1b); + o->begin(); + { + ReturnButton* o = new ReturnButton(250, 65, 90, 25, _("&OK")); + o->callback((Callback*)cb_errOk); + } + { + InvisibleBox* o = new InvisibleBox(60, 5, 280, 16, part1); + o->align(ALIGN_LEFT|ALIGN_INSIDE); + } + { + InvisibleBox* o = new InvisibleBox(90, 20, 280, 16, part2); + o->labelfont(o->labelfont()->bold()); + o->align(ALIGN_LEFT|ALIGN_INSIDE); + } + { + InvisibleBox* o = new InvisibleBox(60, 35, 280, 30, part3); + o->align(ALIGN_LEFT|ALIGN_INSIDE|ALIGN_WRAP); + } + { + InvisibleBox* o = new InvisibleBox(15, 15, 35, 35, ""); + o->image(error_pix); + } + o->end(); + } + w->exec(); + return; +} + + +// -------------------------------------------- +// Depending on exit status, show some nice dialogs +// -------------------------------------------- + +void process_output_status(int exit_status, PtyProcess* child) +{ + char *messages1[257], *messages2[257]; + + // FIXME: do we still need this init? + for (int i=0;i<256;i++) { messages1[i] = ""; messages2[i] = ""; } + + if (exit_status == PtyProcess::Killed) exit_status = 256; + + messages1[127] = _("Program not found:"); + messages2[127] = _("Perhaps it is not installed properly. Check your $PATH value."); +// messages1[14] = _("Segmentation fault in child process:"); +// messages2[14] = _(""); + messages1[126] = _("File is not executable:"); + messages2[126] = _("Is this really a program? If it is, you should check its permissions."); + messages1[256] = _("Program was terminated:"); + messages2[256] = _(""); + + if (exit_status == PtyProcess::Crashed) { + // Nice bomb window + crashmessage(cmd_,child->pid()); + } else if (!(messages1[exit_status] == "")) { + // we have special message for this status + errormessage(messages1[exit_status],cmd_,messages2[exit_status]); + } else { + fprintf(stderr, _("Elauncher: child's exited normally with status %d\n"), exit_status); + + if (exit_status>0) { + // unknown status, display stdout & stderr + char *buffer; + char output[65535]; + + bool changed=false; + strcpy(output,""); + while (buffer = child->readLine()) { + strcat(output, buffer); + changed=true; + } + if (changed) output_window(_("Program output"),output); + } + } +} + + +// -------------------------------------------- +// Core function that handles su/sudo, waits for program to +// finish and then calls the output handler +// -------------------------------------------- + +// this is our internal message: +#define CONTMSG "elauncher_ok_to_continue" +// these are part of sudo/su chat: +#define PWDQ "Password:" +#define BADPWD "/bin/su: incorrect password" +#define SUDOBADPWD "Sorry, try again." + +// We can't use const char* because of strtok later +int start_child_process(char *cmd) +{ + + if (strlen(cmd)<1) return 0; +// show_busy_screen(true); +// return 0; + + // This is so that we can get a backtrace in case of crash + struct rlimit *rlim = (struct rlimit*)malloc(sizeof(struct rlimit)); + getrlimit (RLIMIT_CORE, rlim); + rlim_t old_rlimit = rlim->rlim_cur; // keep previous rlimit + rlim->rlim_cur = RLIM_INFINITY; + setrlimit (RLIMIT_CORE, rlim); + + // Prepare array as needed by exec() + char *parts[4]; + if (param_root) { + if (use_sudo) { + parts[0] = "/bin/sudo"; + parts[1] = ""; + } else { + parts[0] = "/bin/su"; + parts[1] = "-c"; + } + // This "continue message" prevents accidentally exposing password + int length = strlen("echo "CONTMSG)+strlen("; ")+strlen(cmd); + parts[2] = (char*)malloc(length); + snprintf(parts[2],length,"echo %s; %s",CONTMSG,cmd); + parts[3] = NULL; + } else { + parts[0] = "/bin/sh"; + parts[1] = "-c"; + parts[2] = strdup(cmd); + parts[3] = NULL; + } + // the actual command is this: + cmd_ = strtok(cmd," "); + +tryagain: + PtyProcess *child = new PtyProcess(); + child->setEnvironment((const char**)environ); + if (child->exec(parts[0], (const char**)parts) < 0) { + if (ask(_("Error starting program. Try again?"))) + goto tryagain; + else + return 0; + } + + // Wait for process to actually start. Shouldn't last long + while (1) { + int p = child->pid(); + if (p != 0 && child->checkPid(p)) + break; + int exit = child->checkPidExited(p); + if (exit != -2) { + // Process is DOA + fprintf (stderr, "Elauncher: Process has died unexpectedly! Exit status: %d\n",exit); + delete child; + goto tryagain; + } + fprintf (stderr, "Elauncher: Not started yet...\n"); + } + + // Run program as root using su or sudo + if (param_root) { + char *line; + + // TODO: fix password dialog so that Cancel can be detected + // At the moment it's impossible to tell if the password is blank + const char *pwd = password(_("This program requires administrator privileges.\nPlease enter your password below:")); + + // Chat routine + while (1) { + line = child->readLine(); + + // This covers other cases of failed process startup + // Our su command should at least produce CONTMSG + if (line == 0 && child->checkPidExited(child->pid()) != PtyProcess::NotExited) { + // TODO: capture stdout? as in sudo error? + fprintf (stderr, "Elauncher: su process has died unexpectedly in chat stage!\n"); + delete child; + + if (choice_alert (_("Failed to start authentication. Try again"), 0, _("Yes"), _("No")) == 2) return 0; + goto tryagain; + } + + if (strncasecmp(line,PWDQ,strlen(PWDQ))== 0) + child->writeLine(pwd,true); + + if (strncasecmp(line,CONTMSG,strlen(CONTMSG)) == 0) + break; // program starts... + + if ((strncasecmp(line,BADPWD,strlen(BADPWD)) == 0) || (strncasecmp(line,SUDOBADPWD,strlen(SUDOBADPWD)) == 0)) { + // end process + child->waitForChild(); + delete child; + + if (choice_alert (_("The password is wrong. Try again?"), 0, _("Yes"), _("No")) == 2) return 0; + + goto tryagain; + } + } + } + + // Wait for program to end, but don't lose the output +// show_busy_screen(false); +// cursor(CURSOR_ARROW); + int child_val = child->runChild(); + process_output_status(child_val,child); + + // deallocate one string we mallocated + free(parts[2]); + delete child; + + // Revert old rlimit + rlim->rlim_cur = old_rlimit; + setrlimit (RLIMIT_CORE, rlim); + + return 0; +} + + +// -------------------------------------------- +// Analyze command and, if it's URL, call appropriate application +// Otherwise assume that it's executable and run it +// (Code mostly copied over from former eRun) +// -------------------------------------------- + + +void run_resource(const char *cmd) { + char pRun[256]; + char browser[256]; + + // look up default browser in config + Config pGlobalConfig(Config::find_file("ede.conf", 0)); + pGlobalConfig.get("Web", "Browser", browser, 0, sizeof(browser)); + if(pGlobalConfig.error() && !browser) { + strncpy(browser, "mozilla", sizeof(browser)); + } + + // We might need this later, so try to optimize file reads + pGlobalConfig.get("System","UseSudo", use_sudo, false); + + // split cmd to protocol and location + char *protocol = strdup(cmd); + char *location = strchr(protocol, ':'); + if (location) *(location++) = '\0'; // cut off at ':' + + // is cmd a proper URL? + if((location) && (strchr(protocol, ' ') == NULL)) + { + if (strcasecmp(protocol,"file") == 0) + // use mimetypes + { + char *m_program; + + Config m_mimetypes(Config::find_file("mime.conf", 0)); + const char *m_ext = filename_ext(location); + m_mimetypes.get(m_ext, "Exec", m_program); + + if (m_program) + snprintf(pRun, sizeof(pRun)-1, "%s %s", m_program, location); + else + { // unknown extension + char m_printout[256]; + snprintf(m_printout, sizeof(m_printout)-1, _("Unknown file type:\n\t%s\nTo open this file in 'appname' please use\n 'appname %s'"), location, location); + alert(m_printout); + return; + } + } + + else if (strcasecmp(protocol, "http")==0 || strcasecmp(protocol, "ftp")==0) + { + snprintf(pRun, sizeof(pRun)-1, "%s %s", browser, cmd); + } + + // search engine urls + else if (strcasecmp(protocol, "gg")==0) + { + snprintf(pRun, sizeof(pRun)-1, "%s http://www.google.com/search?q=\"%s\"", browser, location); + } + + else if (strcasecmp(protocol, "leo")==0) + { + snprintf(pRun, sizeof(pRun)-1, "%s http://dict.leo.org/?search=\"%s\"", browser, location); + } + + else if (strcasecmp(protocol, "av")==0) + { + snprintf(pRun, sizeof(pRun)-1, "%s http://www.altavista.com/sites/search/web?q=\"%s\"", browser, location); + } + + else // Unkown URL type - let browser deal with it + { + snprintf(pRun, sizeof(pRun)-1, "%s %s", browser, cmd); + } + } + else + // local executable + // TODO: parse the standard parameters to the executable if any exists in the *.desktop file. + { + if (param_secure) { + char message[256]; + snprintf (message, sizeof(message)-1, _("You have requested to execute program %s via Elauncher. However, secure mode was enabled. Execution has been prevented."), cmd); + alert (message); + exit(1); + } else { + snprintf(pRun, sizeof(pRun)-1, "%s", cmd); + } + } + delete [] protocol; + + // Additional parameters + if (param_term) { + char termapp[256]; + pGlobalConfig.get("Terminal", "Terminal", termapp, 0, sizeof(termapp)); + char tmp[256]; + snprintf (tmp, sizeof(pRun)-1, "%s -e %s",termapp,pRun); + strcpy (pRun, tmp); + } + if (param_root) { + // nothing special to do here + } + + // continue with execution + start_child_process(pRun); +} + + +// -------------------------------------------- +// Draw GUI run dialog. This is shown when no parameters are given +// (Code mostly copied over from former eRun) +// -------------------------------------------- + +static xpmImage run_pix((const char **)run_xpm); +Window* windowRunDialog; +Input* inputRunDialog; +CheckButton* runAsRoot; + +static void cb_OK(Button*, void*) { + param_root = runAsRoot->value(); + windowRunDialog->hide(); + flush(); // Window will not hide without this... + run_resource(inputRunDialog->value()); +} + +static void cb_Cancel(Button*, void*) { + windowRunDialog->hide(); +} + +static void cb_Browse(Button*, void*) { + const char *file_types = _("Executables (*.*), *, All files (*.*), *"); + const char *fileName = file_chooser(_("File selection..."), "*.*", inputRunDialog->value()); // TODO: fix file filter when we get a new dialog + if (fileName) + { + inputRunDialog->value(fileName); + } +} + +void run_dialog() { + Window* w = windowRunDialog = new Window(350, 175, _("Open...")); + w->when(WHEN_ENTER_KEY); + w->begin(); + + { InvisibleBox* o = new InvisibleBox(5, 5, 55, 70); + o->image(run_pix); + o->align(ALIGN_CENTER|ALIGN_INSIDE); } + + { InvisibleBox* o = new InvisibleBox(60, 5, 285, 70, _("Type the location you want to open or the name of the program you want to run\ +. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)")); + o->align(132|ALIGN_INSIDE); } + + { Input* o = inputRunDialog = new Input(60, 80, 180, 25, _("Open:")); + o->align(132); + //o->when(WHEN_ENTER_KEY); + } + + { Button* o = new Button(250, 80, 90, 25, _("&Browse...")); + o->callback((Callback*)cb_Browse); } + + { CheckButton* o = runAsRoot = new CheckButton(60, 110, 90, 25, _("Run as &root")); + } + + { ReturnButton* o = new ReturnButton(150, 140, 90, 25, _("&OK")); + o->callback((Callback*)cb_OK); + o->shortcut(ReturnKey); // ENTER + } + + { Button* o = new Button(250, 140, 90, 25, _("&Cancel")); + o->callback((Callback*)cb_Cancel); } + +// -- window manager should do this +// w->x(fltk::xvisual->w / 2 - (w->w()/2)); +// w->y( (fltk::xvisual->h / 2) - (w->h()/2)); + w->end(); + + w->show(); + run(); +} + + +// Show console help on parameters + +void showHelp() { + printf ("ELauncher - "); + printf (_("program and URL opener for EDE.\n")); + printf ("Copyright (c) 2004,2005 EDE Authors\n"); + printf (_("Licenced under terms of GNU General Public Licence v2.0 or newer.\n\n")); + printf (_("Usage:\n")); + printf ("\telauncher [OPTIONS] [URL]\n"); + printf ("\telauncher [OPTIONS] [PROGRAM]\n\n"); + printf ("elauncher URL -\n"); + printf (_("\tParse URL in form protocol:address and open in appropriate program.\n\tURLs with protocol 'file' are opened based on their MIME type.\n")); + printf ("elauncher PROGRAM -\n"); + printf (_("\tRun the program. If no path is given, look in $PATH. To give parameters\n\tto program, use quotes e.g.:\n")); + printf ("\t\telauncher --term \"rm -rf /\"\n\n"); + printf (_("Options:\n")); + printf (" -h, --help\t- "); + printf (_("This help screen.\n")); + printf (" --root\t- "); + printf (_("Run as root. Dialog is opened to enter password.\n")); + printf (" --secure\t- "); + printf (_("Prevent running programs. Only URLs are allowed.\n")); + printf (" --term\t- "); + printf (_("Open in default terminal app.\n\n")); +} + + +// parse command line parameters + +int main (int argc, char **argv) { + char url[255]; + url[0] = '\0'; + +// fl_init_locale_support("elauncher", PREFIX"/share/locale"); + + for (int i=1; i +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +// for cursors: +//#include +//#include +// run dialog +#include +#include +#include +#include +#include +#include +#include +#include +#include +// other stuff +#include +#include +//#include +#include + +// This need to be last for Xlib.h errors +#include "../edelib2/NLS.h" +#include "../edelib2/Config.h" + + +// TODO: replace with edelib::Icon +#include "icons/run.xpm" +#include "icons/error.xpm" +#include "icons/crash.xpm" + + +#endif diff --git a/elauncher/icons/crash.xpm b/elauncher/icons/crash.xpm new file mode 100755 index 0000000..f857be8 --- /dev/null +++ b/elauncher/icons/crash.xpm @@ -0,0 +1,295 @@ +/* XPM */ +static char * crash_xpm[] = { +"48 48 244 2", +" c #FFFFFF", +". c #FEFEFE", +"+ c #FDFDFD", +"@ c #FCFCFC", +"# c #FAFAFA", +"$ c #F9F9F9", +"% c #F8F8F8", +"& c #FBFBFB", +"* c #F4F4F4", +"= c #F0F0F0", +"- c #EDEDED", +"; c #ECECEC", +"> c #EEEEEE", +", c #F3F3F3", +"' c #DEDEDE", +") c #C8C8C8", +"! c #B6B6B6", +"~ c #ACACAC", +"{ c #B2B2B2", +"] c #C2C2C2", +"^ c #D7D7D7", +"/ c #F1F1F1", +"( c #F6F6F6", +"_ c #F7F7F7", +": c #DBDBDB", +"< c #BBBBBB", +"[ c #999999", +"} c #7D7D7D", +"| c #686868", +"1 c #5D5D5D", +"2 c #646464", +"3 c #777777", +"4 c #949494", +"5 c #D8D8D8", +"6 c #A6A6A6", +"7 c #6B6B6B", +"8 c #373737", +"9 c #1F1F1F", +"0 c #0D0D0D", +"a c #030303", +"b c #040404", +"c c #090909", +"d c #1A1A1A", +"e c #363636", +"f c #5A5A5A", +"g c #A8A8A8", +"h c #DFDFDF", +"i c #595959", +"j c #2C2C2C", +"k c #151515", +"l c #0C0C0C", +"m c #050505", +"n c #010101", +"o c #0A0A0A", +"p c #242424", +"q c #929292", +"r c #D3D3D3", +"s c #E8E8E8", +"t c #AEAEAE", +"u c #636363", +"v c #222222", +"w c #000000", +"x c #020202", +"y c #535353", +"z c #D0D0D0", +"A c #7B7B7B", +"B c #262626", +"C c #070707", +"D c #272727", +"E c #6E6E6E", +"F c #E9E9E9", +"G c #E6E6E6", +"H c #ADADAD", +"I c #101010", +"J c #161616", +"K c #484848", +"L c #989898", +"M c #E0E0E0", +"N c #E4E4E4", +"O c #EBEBEB", +"P c #F2F2F2", +"Q c #DDDDDD", +"R c #8D8D8D", +"S c #424242", +"T c #060606", +"U c #838383", +"V c #D6D6D6", +"W c #EFEFEF", +"X c #DADADA", +"Y c #828282", +"Z c #3D3D3D", +"` c #1D1D1D", +" . c #202020", +".. c #171717", +"+. c #1C1C1C", +"@. c #7A7A7A", +"#. c #D1D1D1", +"$. c #7F7F7F", +"%. c #585858", +"&. c #4B4B4B", +"*. c #787878", +"=. c #696969", +"-. c #525252", +";. c #2D2D2D", +">. c #313131", +",. c #5E5E5E", +"'. c #707070", +"). c #727272", +"!. c #4A4A4A", +"~. c #898989", +"{. c #8A8A8A", +"]. c #AFAFAF", +"^. c #CDCDCD", +"/. c #767676", +"(. c #AAAAAA", +"_. c #8E8E8E", +":. c #A7A7A7", +"<. c #909090", +"[. c #9F9F9F", +"}. c #C6C6C6", +"|. c #D9D9D9", +"1. c #878787", +"2. c #C1C1C1", +"3. c #EAEAEA", +"4. c #DCDCDC", +"5. c #A0A0A0", +"6. c #D2D2D2", +"7. c #E5E5E5", +"8. c #E2E2E2", +"9. c #A1A1A1", +"0. c #A5A5A5", +"a. c #BFBFBF", +"b. c #F5F5F5", +"c. c #BABABA", +"d. c #B9B9B9", +"e. c #E3E3E3", +"f. c #B7B7B7", +"g. c #969696", +"h. c #8B8B8B", +"i. c #C7C7C7", +"j. c #CFCFCF", +"k. c #9E9E9E", +"l. c #888888", +"m. c #858585", +"n. c #7C7C7C", +"o. c #9B9B9B", +"p. c #B0B0B0", +"q. c #303030", +"r. c #3E3E3E", +"s. c #717171", +"t. c #494949", +"u. c #292929", +"v. c #323232", +"w. c #5C5C5C", +"x. c #ABABAB", +"y. c #CCCCCC", +"z. c #404040", +"A. c #121212", +"B. c #434343", +"C. c #8F8F8F", +"D. c #474747", +"E. c #454545", +"F. c #848484", +"G. c #181818", +"H. c #676767", +"I. c #3C3C3C", +"J. c #0B0B0B", +"K. c #2E2E2E", +"L. c #3A3A3A", +"M. c #333333", +"N. c #343434", +"O. c #353535", +"P. c #212121", +"Q. c #141414", +"R. c #6C6C6C", +"S. c #B1B1B1", +"T. c #E1E1E1", +"U. c #414141", +"V. c #4F4F4F", +"W. c #555555", +"X. c #B8B8B8", +"Y. c #7E7E7E", +"Z. c #4D4D4D", +"`. c #545454", +" + c #464646", +".+ c #2B2B2B", +"++ c #C4C4C4", +"@+ c #BDBDBD", +"#+ c #C3C3C3", +"$+ c #E7E7E7", +"%+ c #131313", +"&+ c #1B1B1B", +"*+ c #D5D5D5", +"=+ c #666666", +"-+ c #6A6A6A", +";+ c #4E4E4E", +">+ c #393939", +",+ c #CBCBCB", +"'+ c #818181", +")+ c #080808", +"!+ c #868686", +"~+ c #959595", +"{+ c #D4D4D4", +"]+ c #A2A2A2", +"^+ c #565656", +"/+ c #BEBEBE", +"(+ c #797979", +"_+ c #2A2A2A", +":+ c #0E0E0E", +"<+ c #1E1E1E", +"[+ c #979797", +"}+ c #505050", +"|+ c #3B3B3B", +"1+ c #4C4C4C", +"2+ c #A9A9A9", +"3+ c #5B5B5B", +"4+ c #6D6D6D", +"5+ c #A4A4A4", +"6+ c #232323", +"7+ c #0F0F0F", +"8+ c #191919", +"9+ c #111111", +"0+ c #656565", +"a+ c #575757", +"b+ c #606060", +"c+ c #444444", +"d+ c #515151", +"e+ c #3F3F3F", +"f+ c #747474", +"g+ c #757575", +"h+ c #C9C9C9", +"i+ c #B4B4B4", +"j+ c #2F2F2F", +"k+ c #A3A3A3", +"l+ c #9A9A9A", +"m+ c #383838", +"n+ c #252525", +"o+ c #282828", +"p+ c #CACACA", +"q+ c #C0C0C0", +"r+ c #9C9C9C", +"s+ c #CECECE", +"t+ c #626262", +"u+ c #737373", +" . + @ # $ $ % % # & + ", +" . @ $ * = - ; - > , % # @ . ", +" . @ = ' ) ! ~ ~ { ] ^ / ( # @ + . ", +" . _ : < [ } | 1 1 2 3 4 ! 5 = % # & + ", +" . @ - 6 7 8 9 0 a b c d e f g h , ( ( @ . ", +" . @ 5 6 i j k l m n n a o k p i q r s / % @ . ", +" . $ > t u v m w w w w w w w n x 9 y g r - , _ & + ", +" . = z A B l n w w w w w w w w w C D E { F ; / _ & . ", +" . G H f I m w w w w w w w w w w n J K L M N O P $ . ", +" . Q R S C T T m a n w w w x b T m I j U V ' G W _ + ", +" . X Y Z 0 ` v .I T n w x l ..v ` +.p @.#.Q G > _ + ", +" . X $.%.&.E @.*.=.-.;.>.S ,.'.@.).u !.~.z Q G - ( + ", +" . X Y {.].N # # * ^./.Y (.h ( # / z _.:.z Q G - ( + ", +" . ' <.[.}.- + + & |.1.L 2.3.@ + _ 4.5.{ 6.4.7.- ( + ", +" + 8.9.0.a.G % . b.z U q c.7.$ . W r 0.d.^ 4.e.- ( + ", +" . @ s f.g.h.}.s # : (.,.2 1.i.3.# j.~ g.d.M Q e.- ( + ", +" . @ = 5 k.7 /.Y _.~.l._.{.m.m.~._.A n.o.2.M ' e.> _ + ", +" . @ $ * p.u q.` 9 r.s.] ! R t.u.9 v.w.x.y.' ' N W _ + ", +" + # _ |.g z.A.c B.} ! ].C.D.9 l E.F.^.X X M F P $ + ", +" . @ % W ^.-.G.c Z H.Y $.E I.` J.%.[.: h |.7.> ( & . ", +" + $ % ' 2 u.G.K.L.M.N.O.j P.Q.R.S.: Q X O b.& . ", +" + & $ T.s.U.I.V.f %.%.i W.B.B *.X.4.h ' > _ @ . ", +" . _ > ; - * _ N Y.Z.U.Z.`.`.`.`.W. +.+U ++T.e.T.3./ ( # + . . ", +" . # 7.++@+#+M W $+h.t.G.J Q.%+%+Q.G.&+9 h.*+O 3.e.4.' $+P $ # @ . ", +" & s { =+,.-+g.) G t n.;+S >+e e 8 U.;+,.t 8.; ,+9.$.Y k.j.> b.$ + . ", +" . _ 6.'+I )+..!.k.e.#.! g.!+A 3 /.*.m.~+g {+O 7.]+^+P.D ^+~ 7.= ( & . ", +" & > /+'.0 m 0 j 1.Q M X j.^.y.y.,+y.j.6.V $+G ) (+_+:+<+!.6 e.= b.% @ ", +" . + G ++l.t.)+a C G.R.] M F G G $+F 3.F 3.3.3.G ^.[+}+I m A.q.Y./+s P b.# + ", +" + $ ++U |+Q.x n a J.1+L V O G 8.M 8.e.e.7.F - V 2+3+D a n m 0 z.'+|.- = _ @ . ", +" + _ @+3 ;.o n w n b ` r.4+L 2.V 7.O ; F ' }.5+'.B.6+7+n w x m d W.,+$+- , _ @ . ", +" + % }.1.U.P.8++.d 9+c )+6+-._./+M ; e.6.! R w.B T T 7+..7+o C Q.Z.i.N s > * # + ", +" . + 7.2.!+0+a+b+f I.` T )+9 c+~+^.T.a._.w.N.%+)+T A.e d+e p G.e+@.*+N 8.3./ $ + ", +" . P T.2.H ]+(.6 _.| c+O.!./.[.t [ s.D.D A.b G.O.1 !+9.{.A s.<.{ 4.T.T.O , # + ", +" + # b.W s M G N |.f.<.f+Y ~ 9.U !.B l )+l J B.g+].z N 5 j.h+5 T.M M 8.> ( & . ", +" . & _ * ; e.8.T.8.4.#.i+~+).;+j+G.7+0 +.S /.k+}.X Q 4.4.: X 4.' ' 8.s , # + . ", +" . & b.3.M *+4.M M *+2.g.| >++.l I v >+%.(+l+x./+r X ' 8.e.8.8.8.8.$+- _ @ . ", +" . $ W 5 ) @+*+M ^ p.} m+A.w w o n+-.Y t p.g.3 (+(.y.G 3.F N s O 3.- P $ + ", +" . @ T.< !+=.w.*.m.n.i M.J J.J.o+Z.Y.]+X.[./.S >.M.}+3 [+l+[+<.H p+$+> = % @ . ", +" + $ h+R +p 8+q.I.N.` )+J.` >+2 <.q+5 4.:.7 u.A.c k M.V.}+Z. +R.r+' ; > _ @ . ", +" @ * i+| 6+T b c J.o C c P.`.l+@+V ' N 7.6.0.| j+J.T J.I I 7+l P.f ,+G O b.& . ", +" + _ 2.Y.N.:+n n a c o+V.n.0.p+V ' M 8.N h s+i+!+a+D I x x b )+9 f ,+7.3.* & . ", +" . @ 5 0.a+p a n C 8+%.k.*+s N 4.|.' M e.G ; * X 2+`.v w n c ..|+g+6.7.s , # . ", +" . + P 5 _.t.T x %+S R z |.4.: 4.M 3.> = = = W ; p+A e w n ..|+'+c.h 7.G , # . ", +" . + @ > p.t+o o B 4+p.8.X 5 X M s P ( % _ * = * 4.o.1+)+b P.`.6 X T.e.G * & . ", +" . + & = ] u+:+J e+[ }.M ^ 5 h G W % @ + @ $ b.b.e.f.2 J )+o+=+! e.4.M s b.@ . ", +" . @ _ N ] g.[ g ,+5 Q 4.8.; / _ @ . . . + & $ = Q { F.| n.S.#.e.M $+= $ + ", +" . + & % / s G 7.7.T.Q 8.O b.$ @ . . & % , N z i+@+' M 8.N ; ( @ ", +" . @ % P 3.N h : Q 8.3.P $ @ . + $ P - s T.h M ' M $+= % + "}; diff --git a/elauncher/icons/error.xpm b/elauncher/icons/error.xpm new file mode 100755 index 0000000..cb5bf8c --- /dev/null +++ b/elauncher/icons/error.xpm @@ -0,0 +1,315 @@ +/* XPM */ +static char * error_xpm[] = { +"32 32 280 2", +" c None", +". c #CA8383", +"+ c #C98484", +"@ c #C97070", +"# c #C76262", +"$ c #C76868", +"% c #C66A6A", +"& c #C78383", +"* c #C67979", +"= c #C78B8B", +"- c #C68B8B", +"; c #CB7D7D", +"> c #C94242", +", c #C72020", +"' c #C63030", +") c #C73D3D", +"! c #CD3A3A", +"~ c #CD4444", +"{ c #CC5A5A", +"] c #CB5B5B", +"^ c #C45151", +"/ c #C15151", +"( c #BE4141", +"_ c #BF5858", +": c #C27474", +"< c #CB8A8A", +"[ c #CB6262", +"} c #C84343", +"| c #CC1313", +"1 c #DC0000", +"2 c #EB1F1F", +"3 c #F75C5C", +"4 c #F97B7B", +"5 c #F86B6B", +"6 c #EA2E2E", +"7 c #D50000", +"8 c #BE1818", +"9 c #B92929", +"0 c #BC5454", +"a c #C48B8B", +"b c #CB7A7A", +"c c #CB4444", +"d c #DC1B1B", +"e c #F75656", +"f c #FCAFAF", +"g c #FFEBEB", +"h c #FDCDCD", +"i c #F97474", +"j c #D70E0E", +"k c #B71818", +"l c #B52929", +"m c #B95757", +"n c #CB6161", +"o c #CA2929", +"p c #CF0C0C", +"q c #EC3232", +"r c #FAA4A4", +"s c #FFDCDC", +"t c #FECDCD", +"u c #EE4343", +"v c #BA0000", +"w c #AF1818", +"x c #CB6565", +"y c #CA2020", +"z c #D80000", +"A c #F33E3E", +"B c #FEBFBF", +"C c #FFCCCC", +"D c #F57171", +"E c #C50000", +"F c #A90000", +"G c #BA6868", +"H c #CB8E8E", +"I c #CB4949", +"J c #CF2020", +"K c #F33A3A", +"L c #FFBCBC", +"M c #FFCACA", +"N c #F67474", +"O c #B50000", +"P c #B03636", +"Q c #C19595", +"R c #CA4E4E", +"S c #CB2020", +"T c #EC1F1F", +"U c #FEA0A0", +"V c #FFABAB", +"W c #FFFFFF", +"X c #FFE1E1", +"Y c #ED3F3F", +"Z c #AA0909", +"` c #AD3434", +" . c #CB7171", +".. c #C93434", +"+. c #DF0000", +"@. c #FC7373", +"#. c #FF9A9A", +"$. c #FFC1C1", +"%. c #FFDBDB", +"&. c #FE9090", +"*. c #D00909", +"=. c #A61B1B", +"-. c #B97474", +";. c #C93A3A", +">. c #F52222", +",. c #FF8A8A", +"'. c #FFA0A0", +"). c #FFD4D4", +"!. c #FA5555", +"~. c #AA0404", +"{. c #AD4343", +"]. c #CB8888", +"^. c #C73434", +"/. c #DE0000", +"(. c #FB5353", +"_. c #FF7979", +":. c #FFCECE", +"<. c #FE7272", +"[. c #FB5555", +"}. c #F72F2F", +"|. c #F41818", +"1. c #C80000", +"2. c #A83434", +"3. c #BC8888", +"4. c #C97171", +"5. c #EA0606", +"6. c #FF6767", +"7. c #FFC5C5", +"8. c #FFC7C7", +"9. c #FCACAC", +"0. c #F72929", +"a. c #F20000", +"b. c #E20000", +"c. c #9F1313", +"d. c #C77878", +"e. c #C62424", +"f. c #F51616", +"g. c #FF5656", +"h. c #FFBEBE", +"i. c #FA9F9F", +"j. c #A10909", +"k. c #B26C6C", +"l. c #C86D6D", +"m. c #CD2E2E", +"n. c #F92222", +"o. c #FF4545", +"p. c #FFB8B8", +"q. c #B01010", +"r. c #AE5C5C", +"s. c #C77474", +"t. c #CC3636", +"u. c #F91A1A", +"v. c #FF3333", +"w. c #FFB1B1", +"x. c #AE0D0D", +"y. c #CB3636", +"z. c #F91111", +"A. c #FF2222", +"B. c #FFADAD", +"C. c #AE0C0C", +"D. c #C56F6F", +"E. c #CA3232", +"F. c #F90808", +"G. c #FF1010", +"H. c #FFA7A7", +"I. c #F40000", +"J. c #AE1515", +"K. c #B27373", +"L. c #C01818", +"M. c #F90101", +"N. c #FF0202", +"O. c #FC9F9F", +"P. c #F70000", +"Q. c #9C1414", +"R. c #B17070", +"S. c #BA1313", +"T. c #EE0000", +"U. c #FD0101", +"V. c #FD9F9F", +"W. c #FA0000", +"X. c #E60000", +"Y. c #910909", +"Z. c #BC2F2F", +"`. c #D90404", +" + c #FE0000", +".+ c #FE9F9F", +"++ c #FF9F9F", +"@+ c #C61818", +"#+ c #A24141", +"$+ c #C05D5D", +"%+ c #C01B1B", +"&+ c #FF0707", +"*+ c #FF3535", +"=+ c #FFA3A3", +"-+ c #A52929", +";+ c #A85858", +">+ c #C59191", +",+ c #BC4F4F", +"'+ c #DB1B1B", +")+ c #FF1212", +"!+ c #FF6C6C", +"~+ c #CD1B1B", +"{+ c #9D3838", +"]+ c #B07676", +"^+ c #BD5D5D", +"/+ c #B92727", +"(+ c #F51919", +"_+ c #FF1D1D", +":+ c #FF7272", +"<+ c #F11919", +"[+ c #A13535", +"}+ c #A45252", +"|+ c #C6A2A2", +"1+ c #BA5353", +"2+ c #BE1E1E", +"3+ c #FA2626", +"4+ c #FF2828", +"5+ c #FF5151", +"6+ c #F62929", +"7+ c #A62121", +"8+ c #A44F4F", +"9+ c #B99393", +"0+ c #C08080", +"a+ c #B64747", +"b+ c #CA2323", +"c+ c #FA3030", +"d+ c #FF3434", +"e+ c #F83030", +"f+ c #B81D1D", +"g+ c #A04444", +"h+ c #B07878", +"i+ c #BF8181", +"j+ c #B65252", +"k+ c #B92121", +"l+ c #F43636", +"m+ c #FF3F3F", +"n+ c #F13636", +"o+ c #A31616", +"p+ c #972A2A", +"q+ c #AE7171", +"r+ c #C08C8C", +"s+ c #B14141", +"t+ c #A90404", +"u+ c #D62929", +"v+ c #FF4A4A", +"w+ c #CD2929", +"x+ c #930404", +"y+ c #942020", +"z+ c #AB6868", +"A+ c #C29B9B", +"B+ c #B15151", +"C+ c #AC3C3C", +"D+ c #B02D2D", +"E+ c #CD3838", +"F+ c #EC4545", +"G+ c #EA4545", +"H+ c #C73030", +"I+ c #9F1919", +"J+ c #962020", +"K+ c #B88F8F", +"L+ c #BF9090", +"M+ c #B15555", +"N+ c #AB4646", +"O+ c #A42929", +"P+ c #AB3E3E", +"Q+ c #BA5151", +"R+ c #B64646", +"S+ c #B33838", +"T+ c #B23838", +"U+ c #A02828", +"V+ c #982020", +"W+ c #A13F3F", +"X+ c #B07777", +"Y+ c #C2A2A2", +"Z+ c #B67474", +"`+ c #B98282", +" @ c #AD6464", +".@ c #AC5F5F", +"+@ c #AF6B6B", +"@@ c #BB9696", +" ", +" . + @ # $ % & * = - ", +" ; > , ' ) ! ~ { ] ^ / ( _ : ", +" < [ } | 1 2 3 4 4 4 4 5 6 7 8 9 0 a ", +" b c c d e f g g g g g g g g h i j k l m ", +" n o p q r s s s s s s s s s s s s t u v w m ", +" x y z A B C C C C C C C C C C C C C C C D E F G ", +" H I J K L L L M L L L L L L L L L L M L L L N O P Q ", +" R S T U V V C W X V V V V V V V V X W C V V V Y Z ` ", +" ...+.@.#.#.$.W W W %.#.#.#.#.#.#.%.W W W $.#.#.&.*.=.-. ", +" ;.| >.,.,.'.W W W W W ).,.,.,.,.).W W W W W '.,.,.!.~.{. ", +" ].^./.(._._._.C W W W W W :._._.:.W W W W W C <.[.}.|.1.2.3. ", +" 4.^.5.6.6.6.6.6.7.W W W W W 8.8.W W W W W 9.0.a.a.a.a.b.c.d. ", +" d.e.f.g.g.g.g.g.g.h.W W W W W W W W W W i.a.a.a.a.a.a.a.j.k. ", +" l.m.n.o.o.o.o.o.o.o.p.W W W W W W W W i.a.a.a.a.a.a.a.a.q.r. ", +" s.t.u.v.v.v.v.v.v.v.v.w.W W W W W W i.a.a.a.a.a.a.a.a.a.x.k. ", +" d.y.z.A.A.A.A.A.A.A.A.B.W W W W W W i.a.a.a.a.a.a.a.a.a.C.k. ", +" D.E.F.G.G.G.G.G.G.G.H.W W W W W W W W i.I.I.I.I.I.I.I.I.J.K. ", +" d.L.M.N.N.N.N.N.N.'.W W W W W W W W W W O.P.P.P.P.P.P.P.Q.R. ", +" d.S.T.U.U.U.U.U.U W W W W W V.V.W W W W W V.W.W.W.W.W.X.Y.d. ", +" Z.`. + + + +.+W W W W W ++ + +++W W W W W .+ + + + +@+#+ ", +" $+%+&+&+&+*+W W W W W =+&+&+&+&+=+W W W W W *+&+&+&+-+;+ ", +" >+,+'+)+)+)+!+W W W H.)+)+)+)+)+)+H.W W W !+)+)+)+~+{+]+ ", +" ^+/+(+_+_+_+:+W V _+_+_+_+_+_+_+_+V W :+_+_+_+<+[+}+ ", +" |+1+2+3+4+4+4+5+4+4+4+4+4+4+4+4+4+4+5+4+4+4+6+7+8+9+ ", +" 0+a+b+c+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+e+f+g+h+ ", +" i+j+k+l+m+m+m+m+m+m+m+m+m+m+m+m+m+m+n+o+p+q+ ", +" r+s+t+u+v+v+v+v+v+v+v+v+v+v+v+v+w+x+y+z+ ", +" A+B+C+D+E+F+g.g.g.g.g.g.G+H+I+J+g+K+ ", +" L+M+N+O+P+Q+R+S+T+U+V+W+;+X+ ", +" Y+Z+`+k.k.k. @.@+@@@ ", +" "}; diff --git a/elauncher/icons/run.xpm b/elauncher/icons/run.xpm new file mode 100755 index 0000000..97a959f --- /dev/null +++ b/elauncher/icons/run.xpm @@ -0,0 +1,551 @@ +/* XPM */ +static char * run_xpm[] = { +"32 32 516 2", +" c None", +". c #C9EFF9", +"+ c #BFDCE4", +"@ c #C7ECF6", +"# c #CAEBF4", +"$ c #BAE6F3", +"% c #97A9AE", +"& c #ADE7F3", +"* c #B9EFF7", +"= c #B8F7FB", +"- c #C3EFF7", +"; c #B7EDFC", +"> c #9AC8D8", +", c #A6E1F0", +"' c #9FEFF7", +") c #8BEFF7", +"! c #85EDF6", +"~ c #93EBF5", +"{ c #A4ECFA", +"] c #8CD4E9", +"^ c #8DD2E6", +"/ c #9FC2CC", +"( c #D0F3FA", +"_ c #AEECF5", +": c #81E5F2", +"< c #70E5F2", +"[ c #62E3F1", +"} c #5AE1EF", +"| c #70E1F1", +"1 c #78D8ED", +"2 c #76DAF7", +"3 c #72AFC2", +"4 c #ADDBE8", +"5 c #EDFCFE", +"6 c #EEFBFE", +"7 c #C7F0F7", +"8 c #89DFEE", +"9 c #59DAEB", +"0 c #49D9EB", +"a c #3CD6EA", +"b c #3AD4E9", +"c c #4BD1E7", +"d c #5DD6F1", +"e c #55C0DD", +"f c #6CBFD7", +"g c #9BD6E6", +"h c #C7EDF8", +"i c #F2FEFE", +"j c #E7FBFE", +"k c #E5FBFE", +"l c #DDF8FC", +"m c #ADE8F2", +"n c #66D4E7", +"o c #35CAE2", +"p c #2ACBE4", +"q c #22C8E3", +"r c #1FC6E1", +"s c #34C8E3", +"t c #3FC2E0", +"u c #47C0E2", +"v c #5FA0B4", +"w c #A1DEEF", +"x c #E5F9FC", +"y c #E7FBFD", +"z c #E0F9FC", +"A c #DAF7FC", +"B c #D4F7FB", +"C c #D4F8FC", +"D c #C6F2F9", +"E c #95DFEE", +"F c #4BC8DE", +"G c #1CBEDB", +"H c #16BCDC", +"I c #11BBDC", +"J c #11B8DB", +"K c #1EB7D9", +"L c #32C2E8", +"M c #3CB2D5", +"N c #5FB0C9", +"O c #95D0DB", +"P c #BAE9F6", +"Q c #ECFCFE", +"R c #DAF8FC", +"S c #D5F8FB", +"T c #CEF6FB", +"U c #C8F4FA", +"V c #C2F2F9", +"W c #BEF2FA", +"X c #B2EEF6", +"Y c #79D5E6", +"Z c #33BAD6", +"` c #0DAED0", +" . c #0AAFD5", +".. c #06ACD3", +"+. c #07ABD3", +"@. c #13ADD4", +"#. c #1EADD4", +"$. c #2FB1D7", +"%. c #5895A8", +"&. c #8FD3E5", +"*. c #D7F6FB", +"=. c #E4FBFE", +"-. c #CFF5FA", +";. c #C0F2F9", +">. c #B8F0F8", +",. c #B0EEF7", +"'. c #A9EDF5", +"). c #A9EDF7", +"!. c #97E5F0", +"~. c #65CDE0", +"{. c #23ADCC", +"]. c #05A2C9", +"^. c #03A2CD", +"/. c #02A1CC", +"(. c #019EC9", +"_. c #15A6CD", +":. c #25B9E1", +"<. c #2FA2C5", +"[. c #5FC4E0", +"}. c #A1DFF0", +"|. c #E8FDFE", +"1. c #DCF9FC", +"2. c #D5F7FB", +"3. c #C8F3FA", +"4. c #BFF0F8", +"5. c #AFEEF6", +"6. c #A7EBF4", +"7. c #A1E9F3", +"8. c #98E6F1", +"9. c #93E5F1", +"0. c #8FE5F0", +"a. c #83DEEB", +"b. c #51C1D6", +"c. c #1AA5C4", +"d. c #0194BF", +"e. c #0095C2", +"f. c #3DBFDA", +"g. c #4CC5D9", +"h. c #0291BF", +"i. c #0C9BC8", +"j. c #7FC3D6", +"k. c #D4F9FD", +"l. c #DEF8FC", +"m. c #D6F7FC", +"n. c #D0F6FA", +"o. c #C7F2F9", +"p. c #B8F0F6", +"q. c #B0EEF6", +"r. c #A8EBF4", +"s. c #9FE8F1", +"t. c #93E3EE", +"u. c #82DDE8", +"v. c #72D5E2", +"w. c #6DD4E3", +"x. c #6DD7E6", +"y. c #73DAE8", +"z. c #65D1E1", +"A. c #3EB7CD", +"B. c #0F95B9", +"C. c #0A8DB1", +"D. c #1A96B7", +"E. c #007FAF", +"F. c #1D94BB", +"G. c #B4CDF6", +"H. c #B7CFF7", +"I. c #AEC9F6", +"J. c #A9C5F5", +"K. c #A3C1F5", +"L. c #9DBEF4", +"M. c #95B9F3", +"N. c #8FB4F2", +"O. c #87B0F2", +"P. c #81ACF1", +"Q. c #7AA7F0", +"R. c #73A2EF", +"S. c #6E9FED", +"T. c #689AE9", +"U. c #6497E6", +"V. c #6092E3", +"W. c #5C8FE0", +"X. c #5A8DDE", +"Y. c #5B8EE0", +"Z. c #346CBC", +"`. c #4BC1D0", +" + c #54CADB", +".+ c #57CDDE", +"++ c #59D0E0", +"@+ c #52C8D9", +"#+ c #2DA8C1", +"$+ c #0885AA", +"%+ c #0078A5", +"&+ c #3A90AA", +"*+ c #AECBF6", +"=+ c #A4D3FA", +"-+ c #9CD0FA", +";+ c #96CBF9", +">+ c #8EC7F7", +",+ c #87C2F7", +"'+ c #7EBCF6", +")+ c #75B7F5", +"!+ c #6CB1F4", +"~+ c #61A9F3", +"{+ c #58A2ED", +"]+ c #529CE8", +"^+ c #4B95E2", +"/+ c #448EDC", +"(+ c #3D86D6", +"_+ c #3881D2", +":+ c #3179CC", +"<+ c #2D74C7", +"[+ c #EDF5FD", +"}+ c #7EAFF1", +"|+ c #1758AB", +"1+ c #34A3B1", +"2+ c #48BCCC", +"3+ c #4CC4D7", +"4+ c #4BC5D8", +"5+ c #4AC5D7", +"6+ c #4FCADA", +"7+ c #34AFC6", +"8+ c #1E8FB5", +"9+ c #A8C7F6", +"0+ c #96CEFA", +"a+ c #8EC9F9", +"b+ c #87C5F8", +"c+ c #7FC0F7", +"d+ c #77BAF6", +"e+ c #6DB4F5", +"f+ c #63ADF4", +"g+ c #5AA7F0", +"h+ c #529FEA", +"i+ c #4B98E4", +"j+ c #4591DE", +"k+ c #3F8BD9", +"l+ c #3783D3", +"m+ c #327DCE", +"n+ c #2C76C8", +"o+ c #2771C4", +"p+ c #7CADF0", +"q+ c #5189D5", +"r+ c #1558AB", +"s+ c #1E808C", +"t+ c #39ACBB", +"u+ c #45BCCD", +"v+ c #45BFD1", +"w+ c #42BED0", +"x+ c #41BDCE", +"y+ c #2CABC3", +"z+ c #4E95AA", +"A+ c #A4C2F5", +"B+ c #A7C7F5", +"C+ c #A1C4F4", +"D+ c #9CC0F3", +"E+ c #95BBF2", +"F+ c #8BB5F1", +"G+ c #82AFEF", +"H+ c #77A8EE", +"I+ c #6EA2EC", +"J+ c #679BE6", +"K+ c #5F95DF", +"L+ c #558CD7", +"M+ c #4F86D2", +"N+ c #4880CC", +"O+ c #4078C5", +"P+ c #3972BE", +"Q+ c #316BB8", +"R+ c #2C65B3", +"S+ c #255FAD", +"T+ c #205BA9", +"U+ c #154F9D", +"V+ c #136B75", +"W+ c #2E9EAD", +"X+ c #3BB4C4", +"Y+ c #3CB9CB", +"Z+ c #38B6C9", +"`+ c #2692AD", +" @ c #C1D8FD", +".@ c #F4F9FF", +"+@ c #F1F7FF", +"@@ c #EEF5FE", +"#@ c #EAF3FE", +"$@ c #E7F1FE", +"%@ c #E4F0FE", +"&@ c #E0EDFE", +"*@ c #DBEBFD", +"=@ c #D5E7FD", +"-@ c #CFE3FD", +";@ c #CCE1FC", +">@ c #C5DEFC", +",@ c #BFDAFB", +"'@ c #B9D6FB", +")@ c #AED0FA", +"!@ c #A6CBF9", +"~@ c #A1C8F9", +"{@ c #9AC3F7", +"]@ c #98C3F8", +"^@ c #588BDD", +"/@ c #0F626C", +"(@ c #2694A3", +"_@ c #33ACBD", +":@ c #33B0C3", +"<@ c #32B0C0", +"[@ c #1D9AB6", +"}@ c #3D8D9D", +"|@ c #BCD5FD", +"1@ c #F3F8FF", +"2@ c #F0F6FE", +"3@ c #ECF4FE", +"4@ c #EAF2FE", +"5@ c #E6F0FE", +"6@ c #E1EEFE", +"7@ c #DDEBFD", +"8@ c #D7E8FD", +"9@ c #D2E5FD", +"0@ c #C8E0FC", +"a@ c #C2DCFB", +"b@ c #B3D3FA", +"c@ c #A5CAF8", +"d@ c #9FC6F8", +"e@ c #9DC5F7", +"f@ c #97C2F7", +"g@ c #91BEF6", +"h@ c #5689DB", +"i@ c #0E6069", +"j@ c #218E9D", +"k@ c #2CA4B5", +"l@ c #2CA8BA", +"m@ c #26A2B7", +"n@ c #1D90AD", +"o@ c #B8D2FC", +"p@ c #EBF3FE", +"q@ c #E8F1FE", +"r@ c #DBEAFD", +"s@ c #D4E6FD", +"t@ c #CBE1FC", +"u@ c #C4DDFB", +"v@ c #AACDF9", +"w@ c #9FC6F7", +"x@ c #99C3F6", +"y@ c #95C0F6", +"z@ c #91BDF6", +"A@ c #8DBBF5", +"B@ c #5286D7", +"C@ c #0C5C65", +"D@ c #1B8897", +"E@ c #249BAD", +"F@ c #249EB0", +"G@ c #1A97B1", +"H@ c #3F90A6", +"I@ c #B2CFFC", +"J@ c #EDF4FE", +"K@ c #E7F0FE", +"L@ c #E3EFFD", +"M@ c #DEECFD", +"N@ c #DAE9FD", +"O@ c #CEE2FC", +"P@ c #C5DDFB", +"Q@ c #A9CDF8", +"R@ c #9EC5F7", +"S@ c #9CC4F7", +"T@ c #9BC3F7", +"U@ c #92BEF5", +"V@ c #8CBAF5", +"W@ c #86B6F4", +"X@ c #4E83D4", +"Y@ c #0A5761", +"Z@ c #177F90", +"`@ c #1C91A3", +" # c #1D96A8", +".# c #1A88A7", +"+# c #AFCDFC", +"@# c #E9F2FE", +"## c #E0EDFD", +"$# c #DBE9FD", +"%# c #D1E4FC", +"&# c #AFCFF9", +"*# c #9DC4F7", +"=# c #98C2F6", +"-# c #95C0F5", +";# c #91BDF5", +"># c #8BB9F4", +",# c #85B5F3", +"'# c #7EB1F2", +")# c #4B80D1", +"!# c #08525D", +"~# c #127789", +"{# c #168798", +"]# c #0F86A1", +"^# c #3C8FA5", +"/# c #AACAFC", +"(# c #E2EEFD", +"_# c #D8E9FD", +":# c #D3E5FC", +"<# c #CFE3FC", +"[# c #C0DAFB", +"}# c #A3C8F7", +"|# c #9EC5F6", +"1# c #9DC4F6", +"2# c #99C2F6", +"3# c #97C1F5", +"4# c #8AB8F4", +"5# c #84B4F3", +"6# c #76ABF1", +"7# c #467CCD", +"8# c #07535E", +"9# c #0F7281", +"0# c #0F7B90", +"a# c #0F85A4", +"b# c #A6C7FC", +"c# c #E2EEFE", +"d# c #D6E6FC", +"e# c #CCE1FB", +"f# c #A0C6F6", +"g# c #9AC3F6", +"h# c #96C0F5", +"i# c #92BDF4", +"j# c #8AB8F3", +"k# c #84B3F2", +"l# c #7DB0F1", +"m# c #75AAF0", +"n# c #6DA4EF", +"o# c #4177C8", +"p# c #075765", +"q# c #0B6A7B", +"r# c #09758E", +"s# c #3893AD", +"t# c #A2C4FC", +"u# c #E4EFFE", +"v# c #D5E5FC", +"w# c #CEE2FB", +"x# c #BCD7FA", +"y# c #98C0F5", +"z# c #93BDF4", +"A# c #8EBAF3", +"B# c #85B4F2", +"C# c #7DAFF1", +"D# c #76ABF0", +"E# c #6DA4EE", +"F# c #659EE8", +"G# c #3C72C3", +"H# c #044F61", +"I# c #076376", +"J# c #0D7998", +"K# c #9DC1FB", +"L# c #DEEBFD", +"M# c #D8E7FC", +"N# c #D3E4FC", +"O# c #BFD9FA", +"P# c #A7CAF7", +"Q# c #9FC5F6", +"R# c #9CC3F5", +"S# c #94BDF4", +"T# c #8EB9F3", +"U# c #7FAFF1", +"V# c #74A9EF", +"W# c #6BA2ED", +"X# c #659DE8", +"Y# c #5C96E1", +"Z# c #376DBE", +"`# c #335F69", +" $ c #0F5F77", +".$ c #388DA1", +"+$ c #9AC0FB", +"@$ c #D5E6FC", +"#$ c #CAE0FB", +"$$ c #BAD5F9", +"%$ c #AACCF7", +"&$ c #A6C9F7", +"*$ c #A4C8F6", +"=$ c #99C1F5", +"-$ c #92BCF3", +";$ c #88B6F2", +">$ c #80B0F1", +",$ c #77AAEF", +"'$ c #659CE7", +")$ c #5C95E0", +"!$ c #548DD9", +"~$ c #3068B8", +"{$ c #89B6F9", +"]$ c #C5DDFA", +"^$ c #BDD8F9", +"/$ c #B4D2F9", +"($ c #AFCFF8", +"_$ c #ACCDF7", +":$ c #A9CBF7", +"<$ c #A4C7F6", +"[$ c #9EC3F5", +"}$ c #8DB8F2", +"|$ c #85B2F1", +"1$ c #7AABF0", +"2$ c #6EA3EE", +"3$ c #5B93DF", +"4$ c #538CD7", +"5$ c #4B84D0", +"6$ c #2B63B3", +"7$ c #6095E6", +"8$ c #6095E5", +"9$ c #5E93E4", +"0$ c #5C92E3", +"a$ c #5C91E2", +"b$ c #5A8FE0", +"c$ c #598EDF", +"d$ c #578CDD", +"e$ c #558ADB", +"f$ c #5388D9", +"g$ c #4F84D5", +"h$ c #4D82D3", +"i$ c #4A7FD0", +"j$ c #467CCC", +"k$ c #4076C7", +"l$ c #3D73C4", +"m$ c #386EBF", +"n$ c #3369BA", +"o$ c #2D65B5", +"p$ c #2961B1", +"q$ c #225AA7", +" ", +" . + ", +" @ # $ % ", +" & * = - ; > ", +" , ' ) ! ~ { ] ^ ", +" / ( _ : < [ } | 1 2 3 ", +" 4 5 6 7 8 9 0 a b c d e f ", +" g h i j k l m n o p q r s t u v ", +" w x y z A B C D E F G H I J K L M N ", +" O P Q z R S T U V W X Y Z ` ...+.@.#.$.%. ", +" &.*.=.R B -.U ;.>.,.'.).!.~.{.].^./.(._.:.<.[. ", +" }.|.1.2.-.3.4.>.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i. ", +" j.k.l.m.n.o.4.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F. ", +" G.H.G.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+ ", +" *+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+ ", +" 9+-+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+ ", +" A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+Z+`+ ", +" @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@ ", +" |@1@2@3@4@5@6@7@8@9@-@0@a@b@c@d@e@{@f@g@h@i@j@k@l@m@n@ ", +" o@1@@@p@q@%@6@r@s@9@t@u@v@w@w@e@x@y@z@A@B@C@D@E@F@G@H@ ", +" I@2@J@p@K@L@M@N@s@O@P@Q@R@R@S@T@y@U@V@W@X@Y@Z@`@ #.# ", +" +#+@J@@#5@##$#=@%#t@&#S@R@*#=#-#;#>#,#'#)#!#~#{#]#^# ", +" /#2@p@K@(#M@_#:#<#[#}#|#1#2#3#;#4#5#'#6#7#8#9#0#a# ", +" b#@@p@K@c#7@d#%#e#&#f#1#g#h#i#j#k#l#m#n#o#p#q#r#s# ", +" t#J@@#u###N@v#w#x#}#f#1#y#z#A#B#C#D#E#F#G#H#I#J# ", +" K#J@q@(#L#M#N#O#P#}#Q#R#S#T#B#U#V#W#X#Y#Z#`# $.$ ", +" +$p@5@M@@$#$$$%$&$*$Q#=$-$;$>$,$W#'$)$!$~$ ", +" {$%#e#]$^$/$($_$:$<$[$S#}$|$1$2$'$3$4$5$6$ ", +" 7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$ ", +" ", +" ", +" "}; diff --git a/elauncher/locale/Makefile b/elauncher/locale/Makefile new file mode 100755 index 0000000..0edd810 --- /dev/null +++ b/elauncher/locale/Makefile @@ -0,0 +1,208 @@ +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Set emacs mode -*- Makefile -*- + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = ../.. + +prefix = /usr +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/ede +pkglibdir = $(libdir)/ede +pkgincludedir = $(includedir)/ede + +top_builddir = ../.. + +ACLOCAL = aclocal-1.4 +AUTOCONF = autoconf +AUTOMAKE = automake-1.4 +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = @host@ +CC = gcc +CPP = gcc -E +CXX = gcc +EDE_BUILD = 20050111 +FLTK_CONFIG = /usr/bin/efltk-config +HAVE_LIB = @HAVE_LIB@ +KSTAT_LIB = +LIB = @LIB@ +LTLIB = @LTLIB@ +MAKEINFO = makeinfo +PACKAGE = ede +USE_NLS = yes +VERSION = 1.0.1.1 + +PROG = erun +CWD = locale +MSGFMT = msgfmt +SUB_DIRS = +FILES_PO := $(wildcard *.po) +FILES_MO := $(FILES_PO:.po=.mo) + +LOCALEDIR = $(prefix)/share/locale +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../../config.h +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu elauncher/locale/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = elauncher/locale + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu elauncher/locale/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +all: mo-files + +mo-files: $(FILES_MO) + +install: + $(MAKE) all + for f in *.mo ; do mkdir -p \ + $(INSTALL_PREFIX)$(LOCALEDIR)/`basename $$f .mo`/LC_MESSAGES ; \ + cp $$f $(INSTALL_PREFIX)$(LOCALEDIR)/`basename $$f .mo`/LC_MESSAGES/$(PROG).mo ; done + +%.mo: %.po + $(MSGFMT) -f -o $@ $< + +clean: + $(RM) $(FILES_MO) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/elauncher/locale/hu.po b/elauncher/locale/hu.po new file mode 100755 index 0000000..9171026 --- /dev/null +++ b/elauncher/locale/hu.po @@ -0,0 +1,177 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-10 15:13+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +msgid "&Ok" +msgstr "&Ok" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "Hiba" + +#: elauncher.cpp:69 +#: elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "Nem található:" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "Talán nincs telepítve megfelelően. Ellenőrizd a $PATH változót." + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "A fájl nem futtatható:" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "Elauncher: a gyerek folyamat sikeresen végrehajtódott %d kóddal\n" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "Sztandard kimenet" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "Sztandard hiba kimenet" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "Elauncher: fork() sikertelen!" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "Elauncher: waitpid sikertelen\n" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "Elauncher: %s: gyerek folyamat váratlanul leállt!\n" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" +"Ismeretlen fájl típus:\n" +"\t%s\n" +"A megnyitáshoz ezt használd:\n" +" 'appname %s'" + +#: elauncher.cpp:334 +#, c-format +msgid "You have requested to execute program %s via Elauncher. However, secure mode was enabled. Execution has been prevented." +msgstr "%s program futását kezdeményezted az Elauncher segítségével. A biztonsági mód engedélyezve van, igy a folyamat futtatására nem került sor." + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Összes fájl (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Fájl kiválasztása..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Megnyitás..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Cél:" + +#: elauncher.cpp:407 +msgid "Type the location you want to open or the name of the program you want to run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "Írd be a megnyitni kívánt URL-t vagy programnevet. (Lehetőségek: http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "Mégs&em" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Tallóz" + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "EDE program és URL megnyitó.\n" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" +"Kibocsátva a GNU General Public Licence v2.0 vagy újabb szerint.\n" +"\n" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "Használat:\n" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "Opciók:\n" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "Futtatás root -ként. Írd be a jelszót a dialógus ablakban.\n" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" +"Megnyitás az alapértelmezett terminállal.\n" +"\n" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "Elauncher: Nem megfelelő számú paraméter...\n" + diff --git a/elauncher/locale/id.po b/elauncher/locale/id.po new file mode 100755 index 0000000..caf6533 --- /dev/null +++ b/elauncher/locale/id.po @@ -0,0 +1,179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-11-29 15:39+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&OK" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Pemilihan file..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Buka..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Buka:" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Ketikkan lokasi yang ingin anda buka atau nama dari program yang ingin anda " +"jalankan. (Prefiks yang diijinkan adalah: http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "&Batal" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Browse..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/elauncher/locale/messages.pot b/elauncher/locale/messages.pot new file mode 100755 index 0000000..7264bdd --- /dev/null +++ b/elauncher/locale/messages.pot @@ -0,0 +1,178 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +msgid "&Ok" +msgstr "" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "" + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "" + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "" + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/elauncher/locale/ru.po b/elauncher/locale/ru.po new file mode 100755 index 0000000..5be1f02 --- /dev/null +++ b/elauncher/locale/ru.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&OK" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr " ..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr ":" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +" .( : " +"http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/elauncher/locale/sk.po b/elauncher/locale/sk.po new file mode 100755 index 0000000..3e9659c --- /dev/null +++ b/elauncher/locale/sk.po @@ -0,0 +1,179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&OK" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Výber súboru..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Otvoriť..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Otvoriť:" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Napíšte umiestnenie, ktoré chcete otvoriť alebo názov programu, ktorý chcete " +"spustiť. (Možné predpony sú: http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/elauncher/locale/sr.po b/elauncher/locale/sr.po new file mode 100755 index 0000000..6f9aa5b --- /dev/null +++ b/elauncher/locale/sr.po @@ -0,0 +1,179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-11-30 02:06+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&ОК" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&ОК" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Селектовање фајла..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Отвори..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Отвори:" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Унесите локацију коју желите да отворите или име програма који желите да " +"стартујете. (Могући префикси су: http:, ftp:, gg:, av:, leo: )" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "&Одустани" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Нађи..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/emenueditor/Makefile b/emenueditor/Makefile new file mode 100755 index 0000000..f831b78 --- /dev/null +++ b/emenueditor/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = emenueditor.cpp +TARGET = emenueditor + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/emenueditor/emenueditor.cpp b/emenueditor/emenueditor.cpp new file mode 100755 index 0000000..eff8143 --- /dev/null +++ b/emenueditor/emenueditor.cpp @@ -0,0 +1,395 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include +#include +#include +#include + +#include "icons/up.xpm" +#include "icons/folder.xpm" +#include "icons/item.xpm" + +#include "emenueditor.h" + +static Fl_Image item_pix = *Fl_Image::read_xpm(0, (const char**)item_xpm); +static Fl_Image folder_pix = *Fl_Image::read_xpm(0, (const char**)folder_xpm); + +Fl_Window *edit_window = 0; +Fl_FileBrowser *programs_browser; +Fl_Input *filename_field, *name_field, *command_field, *icon_field; +int selected, submenu_selected = 0; +Fl_Input *filename_field_e, *name_field_e, *command_field_e,*icon_field_e; + +void cb_change_dir(Fl_Widget *, void*); +void cb_directory_up(Fl_Button *, void*); +void cb_new_submenu(Fl_Button *, void*); +void cb_delete_submenu(Fl_Button *, void*); +void cb_new_item(Fl_Button *, void*); +void cb_delete_item(Fl_Button *, void*); +void cb_edit_item(Fl_Button *, void*); +void cb_about_menu_editor(Fl_Widget*, void*); +void cbCloseWindow(Fl_Widget*, Fl_Window*); +void Exit_Editor(Fl_Widget*, void*); +int SomethingInDir(char *); + +void cb_browse(Fl_Widget *, Fl_Input *input) +{ + char *file_types = _("Executables (*.*), *, All files (*.*), *"); + const char *f = fl_select_file(input->value(), file_types, _("File selection ...")); + if (f) input->value(f); +} + + +int main(int argc, char **argv) +{ + Fl_String m_programsdir = fl_homedir() + "/.ede/programs"; + fl_init_locale_support("emenueditor", PREFIX"/share/locale"); + fl_init_images_lib(); + + Fl_Main_Window *menu_edit_window = new Fl_Main_Window(480, 370, _("Menu editor")); + + Fl_Menu_Bar *menubar = new Fl_Menu_Bar(0, 0, 480, 25); + menubar->begin(); + Fl_Item_Group *file = new Fl_Item_Group(_("&File")); + Fl_Item *quit_item = new Fl_Item(_("&Quit")); + quit_item->shortcut(0x40071); + quit_item->x_offset(18); + quit_item->callback(Exit_Editor, menu_edit_window); + + file->end(); + menubar->end(); + + programs_browser = new Fl_FileBrowser(5, 40, 275, 313, _("Programs:")); + programs_browser->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); + programs_browser->tooltip(_("Click on the submenu or on the item you want")); + programs_browser->callback(cb_change_dir); + programs_browser->end(); + programs_browser->directory(m_programsdir); + + Fl_Button *new_submenu = new Fl_Button(315, 50, 125, 23, _("New submenu")); + new_submenu->callback( (Fl_Callback*) cb_new_submenu ); + + Fl_Button *del_submenu = new Fl_Button(315, 80, 125, 23, _("Delete submenu")); + del_submenu->callback( (Fl_Callback*) cb_delete_submenu ); + + Fl_Button *new_item = new Fl_Button(315, 125, 125, 23, _("New item")); + new_item->callback( (Fl_Callback*) cb_new_item ); + + Fl_Button *del_item = new Fl_Button(315, 185, 125, 23, _("Delete item")); + del_item->callback( (Fl_Callback*) cb_delete_item ); + + Fl_Button *edit_item = new Fl_Button(315, 155, 125, 23, _("Edit Item")); + edit_item->callback( (Fl_Callback*) cb_edit_item ); + + menu_edit_window->menu(menubar); + menu_edit_window->resizable(menu_edit_window); + menu_edit_window->end(); + menu_edit_window->show(); + + Fl::run(); + + if(edit_window) + delete edit_window; + + return 0; +} + + +char* get_localized_name(char *cfg) +{ + char *icon_name = 0; + Fl_Config iconConfig(cfg); + iconConfig.set_section("Desktop Entry"); + + char *alocale = strdup(setlocale(LC_ALL, NULL)); + char *tmp = strrchr(alocale, '_'); + if(tmp) + { + *tmp = '\0'; + } + char localName[1024]; + snprintf(localName, sizeof(localName)-1, "Name[%s]", alocale); + iconConfig.read((const char *)localName, icon_name); + delete [] alocale; + + if (!icon_name) + { + iconConfig.read("Name", icon_name, "None"); + } + + return icon_name; + +} + +char* get_localized_string() +{ + char *localname = 0; + char *alocale = strdup(setlocale(LC_MESSAGES, NULL)); +// -- language_country is perfectly valid according to FD.o +/* char *tmp = strrchr(alocale, '_'); + if(tmp) + { + *tmp = '\0'; + } */ + localname = fl_strdup_printf("Name[%s]", alocale); + delete [] alocale; + + if (!localname) localname = strdup("Name"); + return localname; +} + + +void cb_save_item_e(Fl_Widget *, Fl_Window *w) +{ + Fl_String item; + Fl_String dir = programs_browser->directory(); + + Fl_String name = name_field_e->value(); + if (name.empty()) + { + fl_alert(_("Please, enter the name of the menu item.")); + return; + } + + Fl_String filename = filename_field_e->value(); + if (!filename.empty()) + item = filename; + else + item = name + ".desktop"; + + Fl_String path_and_item = dir + slash + item; + char *lname = get_localized_string(); + + Fl_Config flconfig(path_and_item); + flconfig.set_section("Desktop Entry"); + flconfig.write(lname, name_field_e->value()); + flconfig.write("Name", name_field_e->value()); // fallback + flconfig.write("Exec", command_field_e->value()); + flconfig.write("Icon", fl_file_filename(icon_field_e->value())); + + delete [] lname; + + programs_browser->directory(dir); + programs_browser->relayout(); + w->hide(); +} + + +void cb_browse_icon(Fl_Widget *, Fl_Input *input) +{ + char *file_types = _("Icons (*.png), *.png, All files (*.*), *"); + const char *f = fl_select_file(PREFIX"/share/ede/icons/16x16", file_types, _("Choose icon file...")); + if (f) + { + input->value(f); + } +} + + +void Menu_Edit_Dialog(int edit) +{ + if(!edit_window) + { + edit_window = new Fl_Window(370, 250, _("Edit item")); + + filename_field_e = new Fl_Output(5, 25, 195, 23, _("Filename:")); + filename_field_e->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); + + name_field_e = new Fl_Input(5, 80, 195, 23, _("Name in the menu:")); + name_field_e->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); + + command_field_e = new Fl_Input(5, 125, 195, 23, _("Command to execute:")); + command_field_e->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); + + { + Fl_Button *browse_button_c = new Fl_Button(210, 125, 80, 23, _("Bro&wse...")); + browse_button_c->callback( (Fl_Callback*) cb_browse, command_field_e ); + } + + icon_field_e = new Fl_Input(5, 215, 195, 23, _("Icon filename:")); + icon_field_e->align(FL_ALIGN_TOP | FL_ALIGN_LEFT); + + { + Fl_Button *save_button = new Fl_Button(285, 25, 80, 23, _("&Save")); + save_button->callback( (Fl_Callback*) cb_save_item_e, edit_window ); + } + { + Fl_Button *cancel_button = new Fl_Button(285, 60, 80, 23, _("&Cancel")); + cancel_button->callback( (Fl_Callback*) cbCloseWindow, edit_window ); + } + { + Fl_Button *browse_button_i = new Fl_Button(210, 215, 80, 23, _("&Browse...")); + browse_button_i->callback( (Fl_Callback*) cb_browse_icon, icon_field_e ); + } + } + + filename_field_e->value(""); + command_field_e->value("xterm"); + name_field_e->value(_("New folder")); + icon_field_e->value("item.png"); + + if (edit) + { + Fl_String c_file = programs_browser->filename_full(); + Fl_String name = programs_browser->filename(); + + if (!name.empty()) + { + char *this_value = 0; + filename_field_e->value(name); + + const char *tfield = filename_field_e->value(); + + Fl_Config flconfig(c_file); + flconfig.set_section("Desktop Entry"); + + this_value = get_localized_name(c_file); + if(!flconfig.error() && this_value) + { + name_field_e->value(this_value); + delete [] this_value; + } + flconfig.read("Exec", this_value); + if(!flconfig.error() && this_value) + { + command_field_e->value(this_value); + delete [] this_value; + } + flconfig.read("Icon", this_value); + if (!flconfig.error() && this_value) + { + icon_field_e->value(this_value); + delete [] this_value; + } + } + } + + edit_window->end(); + edit_window->exec(); +} + +void cb_new_submenu(Fl_Button *, void *) +{ + Fl_String m_progdir = programs_browser->directory(); + Fl_String m_submenu = fl_input(_("Please enter name of the new submenu:")); + + if (!m_submenu.empty()) + { + Fl_String path = m_progdir + slash + m_submenu; + if (mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR)) + { + fl_alert(_("Cannot create submenu!")); + return; + } + } + programs_browser->directory(m_progdir); + programs_browser->relayout(); + programs_browser->redraw(); +} + +void cb_change_dir(Fl_Widget *w, void *) +{ + if(Fl::event_clicks() || Fl::event_key() == FL_Enter) { + Fl_String path_name(programs_browser->filename_full()); + + if(path_name.empty()) { + programs_browser->up(); + return; + } + + if(fl_is_dir(path_name)) { + + programs_browser->load(path_name); + programs_browser->redraw(); + + } else { + + Menu_Edit_Dialog(1); + + } + } +} + +void cb_directory_up(Fl_Button *, void *) +{ + programs_browser->up(); +} + +int SomethingInDir(char *path) +{ + dirent **files; + int numberOfFiles = 0; + + numberOfFiles = fl_filename_list(path, &files); + + if (numberOfFiles > 2) // . | .. | + + { + for (int i = 0; i < numberOfFiles; i ++) + { + free(files[i]); + } + free(files); + return numberOfFiles; + } + else + { + return 0; + } +} + +void cb_delete_submenu(Fl_Button *, void*) +{ + Fl_String submenu_path(programs_browser->filename_full()); + if (fl_file_exists(submenu_path) && fl_is_dir(submenu_path)) + { + if (SomethingInDir(submenu_path)) + { + fl_alert(_("You should delete all the items from the submenu, before you can delete it!")); + return; + } + rmdir(submenu_path); + programs_browser->directory(programs_browser->directory()); + programs_browser->redraw(); + } +} + +void cb_delete_item(Fl_Button *, void *) +{ + Fl_String submenu_path(programs_browser->filename_full()); + if(fl_file_exists(submenu_path) && !fl_is_dir(submenu_path)) + { + unlink(submenu_path); + programs_browser->directory(programs_browser->directory()); + programs_browser->redraw(); + } +} + +void cb_new_item(Fl_Button *, void *) +{ + Menu_Edit_Dialog(0); + programs_browser->redraw(); +} + +void cb_edit_item(Fl_Button *, void *) +{ + Fl_String submenu_path(programs_browser->filename_full()); + if(!fl_is_dir(submenu_path)) + { + Menu_Edit_Dialog(1); + programs_browser->redraw(); + } +} + +void cbCloseWindow(Fl_Widget *, Fl_Window *windowToClose) +{ + windowToClose->hide(); +} + +void Exit_Editor(Fl_Widget *w, void *d) +{ + Fl_Window *t = (Fl_Window*) d; + t->hide(); +} diff --git a/emenueditor/emenueditor.h b/emenueditor/emenueditor.h new file mode 100755 index 0000000..5a5bee6 --- /dev/null +++ b/emenueditor/emenueditor.h @@ -0,0 +1,46 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + diff --git a/emenueditor/icons/folder.xpm b/emenueditor/icons/folder.xpm new file mode 100755 index 0000000..b327440 --- /dev/null +++ b/emenueditor/icons/folder.xpm @@ -0,0 +1,155 @@ +/* XPM */ +static char * folder_xpm[] = { +"16 16 136 2", +" c None", +". c #469FFF", +"+ c #4193FF", +"@ c #4499FF", +"# c #2C63AC", +"$ c #4DA0FF", +"% c #B5D9FB", +"& c #AAD3FB", +"* c #ADD3FB", +"= c #89C4FF", +"- c #184888", +"; c #4495FF", +"> c #AED5FB", +", c #6DB3F9", +"' c #6FB2F9", +") c #6BAEF8", +"! c #67ABF6", +"~ c #549FF9", +"{ c #3E91FF", +"] c #ACD4FB", +"^ c #6BAEF9", +"/ c #6CAFF8", +"( c #66AAF7", +"_ c #5DA3F6", +": c #74AEF7", +"< c #9EC4F8", +"[ c #92BCF7", +"} c #8DB5F5", +"| c #88B1F3", +"1 c #83ABF2", +"2 c #80A8F0", +"3 c #87AEF5", +"4 c #0940B7", +"5 c #AAD2FB", +"6 c #67ACF8", +"7 c #68ABF8", +"8 c #61A4F7", +"9 c #5B9FF5", +"0 c #5399F3", +"a c #498FF1", +"b c #3F85EF", +"c c #367CEB", +"d c #2E73E8", +"e c #286BE6", +"f c #2164E2", +"g c #2163E5", +"h c #023AB6", +"i c #4394FF", +"j c #A7D0FA", +"k c #63A9F7", +"l c #61A7F7", +"m c #5BA0F6", +"n c #5499F4", +"o c #4B90F2", +"p c #4186EF", +"q c #377DEB", +"r c #2E73E7", +"s c #266AE5", +"t c #2062E2", +"u c #1C5DDF", +"v c #1A5CE2", +"w c #A4CEF9", +"x c #5DA5F7", +"y c #5DA1F6", +"z c #559AF4", +"A c #4C91F3", +"B c #4489F1", +"C c #3A7FED", +"D c #3075E9", +"E c #276BE5", +"F c #2062E1", +"G c #1B5CDE", +"H c #1758DB", +"I c #1857DE", +"J c #0239B6", +"K c #A1CBF9", +"L c #589FF6", +"M c #559BF5", +"N c #4F96F3", +"O c #478CF2", +"P c #3D84F0", +"Q c #3378EB", +"R c #2B6EE7", +"S c #2265E3", +"T c #1C5DDE", +"U c #1757DB", +"V c #1554DA", +"W c #1555DD", +"X c #0139B5", +"Y c #4696FF", +"Z c #FFFFFF", +"` c #FBFBFB", +" . c #F2F2F2", +".. c #E9E9E9", +"+. c #E0E0E0", +"@. c #D7D7D7", +"#. c #D4D4D4", +"$. c #A9A9A9", +"%. c #BABABA", +"&. c #9E9990", +"*. c #0A3DAF", +"=. c #FEFEFE", +"-. c #F8F8F8", +";. c #F1F1F1", +">. c #E8E8E8", +",. c #DCDCDC", +"'. c #D6D6D6", +"). c #D2D2D2", +"!. c #A7A7A7", +"~. c #B7B7B7", +"{. c #929292", +"]. c #BAB6AC", +"^. c #0E41B3", +"/. c #F0F0F0", +"(. c #E5E5E5", +"_. c #DDDDDD", +":. c #D3D3D3", +"<. c #D0D0D0", +"[. c #ABABAB", +"}. c #B5B5B5", +"|. c #939393", +"1. c #ADADAD", +"2. c #938E85", +"3. c #0A3DAE", +"4. c #FFFFFE", +"5. c #F4F4F4", +"6. c #EDEDED", +"7. c #DBDBDB", +"8. c #AEAEAE", +"9. c #969696", +"0. c #878787", +"a. c #AFABA1", +"b. c #0D40B2", +"c. c #0037B2", +"d. c #0034A8", +"e. c #0038B6", +" ", +" . + @ # ", +" $ % & * = - ", +"; > , ' ) ! ~ { + + + + + . ", +"; ] ^ / ( _ : < [ } | 1 2 3 4 ", +"; 5 6 7 8 9 0 a b c d e f g h ", +"i j k l m n o p q r s t u v h ", +"i w x y z A B C D E F G H I J ", +"i K L M N O P Q R S T U V W X ", +"Y Z Z Z Z ` ...+.@.#.$.%.&.*. ", +"Y Z Z =.-.;.>.,.'.).!.~.{.].^. ", +"Y Z =.-./.(._.:.<.[.}.|.1.2.3. ", +"Y 4.5.6.(.7.#.<.1.8.9.!.0.a.b. ", +" c.d.d.d.d.d.d.d.d.d.d.d.e. ", +" ", +" "}; diff --git a/emenueditor/icons/item.xpm b/emenueditor/icons/item.xpm new file mode 100755 index 0000000..6ea12eb --- /dev/null +++ b/emenueditor/icons/item.xpm @@ -0,0 +1,88 @@ +/* XPM */ +static char * item_xpm[] = { +"16 16 69 1", +" c None", +". c #C6C6D5", +"+ c #9494AD", +"@ c #FBFBFC", +"# c #F8F8FA", +"$ c #F4F4F7", +"% c #EEEEF2", +"& c #EAEAF0", +"* c #DEDEE7", +"= c #E0E0E9", +"- c #C1C8D5", +"; c #BEC5D3", +"> c #BBC1CF", +", c #B8BFCE", +"' c #AFB5C7", +") c #C9C9D7", +"! c #F5F5F8", +"~ c #F0F0F4", +"{ c #E4E4EB", +"] c #C0C7D4", +"^ c #BBC2D0", +"/ c #B9C0CE", +"( c #B3B9CA", +"_ c #DBDBE5", +": c #CDCDDA", +"< c #BFBFD0", +"[ c #F7F7F9", +"} c #F2F2F6", +"| c #E7E7EE", +"1 c #E3E3EA", +"2 c #D0D0DC", +"3 c #C4C4D3", +"4 c #C2C2D1", +"5 c #FAFAFB", +"6 c #BDC3D1", +"7 c #B4BACB", +"8 c #AEB4C7", +"9 c #9EA3B9", +"0 c #9BA1B6", +"a c #F9F9FA", +"b c #DCDCE5", +"c c #D6D6E1", +"d c #D2D2DE", +"e c #D1D1DD", +"f c #CECEDB", +"g c #BCC3D1", +"h c #B6BDCD", +"i c #B0B7C7", +"j c #AAB0C3", +"k c #AAAFC2", +"l c #A6ACBF", +"m c #A5ABBF", +"n c #E5E5EC", +"o c #DFDFE8", +"p c #DDDDE6", +"q c #DADAE4", +"r c #D7D7E2", +"s c #B5BBCB", +"t c #B1B8C8", +"u c #ADB3C6", +"v c #A9AFC1", +"w c #EFEFF3", +"x c #E8E8EE", +"y c #E6E6ED", +"z c #B6BCCC", +"A c #B2B8C9", +"B c #ABB1C3", +"C c #F3F3F6", +"D c #E1E1E9", +" ........+ ", +" .@#$%&*=.+ ", +" .@-;>,'=.)+ ", +" .@#!~%{=++++ ", +" .@];^/(=_:<+ ", +" .@[!}~|1234+ ", +" .5];6>7890.+ ", +" .a$}%&bcdef+ ", +" .!g^hijklmd+ ", +" .!$%n1opqrc+ ", +" .[^s(t8ujvc+ ", +" .[wxy{=obqr+ ", +" .$z7(AiuBkr+ ", +" .Cx|n{Do_qr+ ", +" .~xxyt8obqr+ ", +" ++++++++++++ "}; diff --git a/emenueditor/icons/up.xpm b/emenueditor/icons/up.xpm new file mode 100755 index 0000000..d0d2de0 --- /dev/null +++ b/emenueditor/icons/up.xpm @@ -0,0 +1,155 @@ +/* XPM */ +static char * up_xpm[] = { +"24 24 128 2", +" c None", +". c #68A9FF", +"+ c #2E59B8", +"@ c #69AAFF", +"# c #88BFF9", +"$ c #699EE5", +"% c #2551B5", +"& c #6AAAFF", +"* c #8ABFF9", +"= c #86BEF9", +"- c #83BCF9", +"; c #6399E3", +"> c #1D4BB2", +", c #6BABFF", +"' c #87BEF9", +") c #7FB9F8", +"! c #79B4F7", +"~ c #5A91E1", +"{ c #1646B0", +"] c #83BBF9", +"^ c #7EB8F7", +"/ c #79B3F7", +"( c #74AFF6", +"_ c #6DAAF5", +": c #4F88DF", +"< c #1142AE", +"[ c #85BDF9", +"} c #81B9F8", +"| c #7CB6F7", +"1 c #77B2F6", +"2 c #72AEF5", +"3 c #6CA9F4", +"4 c #67A4F3", +"5 c #619EF2", +"6 c #457EDC", +"7 c #0C3EAC", +"8 c #65A7FF", +"9 c #87BDF9", +"0 c #7FB8F7", +"a c #7BB5F7", +"b c #76B0F6", +"c c #71ABF5", +"d c #6AA7F3", +"e c #65A1F2", +"f c #5F9CF0", +"g c #5998EF", +"h c #5493EE", +"i c #3A75D9", +"j c #093BAB", +"k c #62A6FF", +"l c #B5D6FB", +"m c #B4D5FB", +"n c #B1D3FB", +"o c #79B2F6", +"p c #73ADF5", +"q c #6EA9F4", +"r c #69A4F2", +"s c #63A0F1", +"t c #5D9AEF", +"u c #4982DD", +"v c #98BDF5", +"w c #94B9F4", +"x c #91B8F2", +"y c #326DD6", +"z c #0639AA", +"A c #5FA4FF", +"B c #5DA3FF", +"C c #5CA2FF", +"D c #5AA1FF", +"E c #58A0FF", +"F c #569FFF", +"G c #A6CAF8", +"H c #66A1F1", +"I c #609DF0", +"J c #5A98EE", +"K c #5693EE", +"L c #447CDB", +"M c #0B3DAC", +"N c #0A3CAC", +"O c #083BAB", +"P c #073AAB", +"Q c #0437A9", +"R c #539DFF", +"S c #A1C5F7", +"T c #5E9BF0", +"U c #5896EE", +"V c #5391ED", +"W c #4F8DEB", +"X c #3E77DA", +"Y c #509BFF", +"Z c #9CC1F5", +"` c #5694ED", +" . c #518EEC", +".. c #4C89EA", +"+. c #4785EA", +"@. c #3972D8", +"#. c #083AAB", +"$. c #4E9AFF", +"%. c #97BCF5", +"&. c #4D8CEB", +"*. c #4988EA", +"=. c #4584E9", +"-. c #4180E8", +";. c #366FD7", +">. c #4B99FF", +",. c #93B8F3", +"'. c #4785E9", +"). c #4281E9", +"!. c #3F7FE8", +"~. c #3C7BE7", +"{. c #316CD6", +"]. c #0538AA", +"^. c #4998FF", +"/. c #90B4F2", +"(. c #4080E8", +"_. c #3D7CE7", +":. c #3A7AE6", +"<. c #3978E6", +"[. c #306BD6", +"}. c #4897FF", +"|. c #8BB2F0", +"1. c #89AFEF", +"2. c #88AEEF", +"3. c #87AEEF", +"4. c #6790DD", +"5. c #0336A9", +"6. c #093CAB", +"7. c #0236A9", +" ", +" ", +" ", +" ", +" . + ", +" @ # $ % ", +" & * = - ; > ", +" , * ' - ) ! ~ { ", +" @ * ' ] ^ / ( _ : < ", +" . # [ } | 1 2 3 4 5 6 7 ", +" 8 9 ] 0 a b c d e f g h i j ", +" k l m n o p q r s t u v w x y z ", +" A B C D E F G H I J K L 7 M N O P Q ", +" R S T U V W X j ", +" Y Z ` ...+.@.#. ", +" $.%.&.*.=.-.;.z ", +" >.,.'.).!.~.{.]. ", +" ^./.(._.:.<.[.Q ", +" }.|.1.2.2.3.4.5. ", +" 6.O P P z z ].7. ", +" ", +" ", +" ", +" "}; diff --git a/emenueditor/locale/hu.po b/emenueditor/locale/hu.po new file mode 100755 index 0000000..ce348c5 --- /dev/null +++ b/emenueditor/locale/hu.po @@ -0,0 +1,123 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Minden fájl (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Fájl kiválasztása..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Menü szerkesztő" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&Fájl" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Kilépés" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Programok:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Válaszd ki a módosítandó menüt" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Új könyvtár" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Könyvtár törlése" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Új menüfájl" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Menüfájl törlés" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Menüfájl szerkesztés" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Add meg a menü nevét." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Ikonok (*.png), *.png, Minden fájl (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Ikonfájl kiválasztása..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Szerkesztés" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Fájlnév:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "A menü neve:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Futtatandó parancs:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "&Tallóz..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Ikonfájl:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "Menté&s" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "Mégs&em" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "T&allóz..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Új menüfájl" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Mi legyen az új könyvtár neve?" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Az almenü létrehozása sikertelen!" + +#: emenueditor.cpp:350 +msgid "You should delete all the items from the submenu, before you can delete it!" +msgstr "Mielőtt törlöd ezt a könyvtárat távolítsd el a tartalmát!" + diff --git a/emenueditor/locale/id.po b/emenueditor/locale/id.po new file mode 100755 index 0000000..c4fed1a --- /dev/null +++ b/emenueditor/locale/id.po @@ -0,0 +1,136 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-11-29 15:05+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Pemilihan file ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Editor menu" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&File" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Keluar" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Program:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Klik pada submenu atau pada item yang anda inginkan" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Submenu baru" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Hapus submenu" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Item baru" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Hapus item" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Edit item" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Silahkan, masukkan nama dari item menu." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Ikon (*.png), *.png, Semua file (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Pilih file ikon..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Edit item" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Nama file:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "Nama dalam menu:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Perintah untuk dieksekusi:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "Bro&wse..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Nama file ikon:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "$Simpan" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "&Batal" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "&Browse..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Folder baru" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Silahkan masukan nama dari submenu baru:" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Tidak bisa membuat submenu!" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "" +"Anda harus menghapus semua item dari submenu, sebelum anda bisa menghapus " +"submenu!" + +#~ msgid "Go up..." +#~ msgstr "Ke atas..." + +#~ msgid "Go up one level" +#~ msgstr "Ke atas satu level" diff --git a/emenueditor/locale/messages.pot b/emenueditor/locale/messages.pot new file mode 100755 index 0000000..5d667fe --- /dev/null +++ b/emenueditor/locale/messages.pot @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "" + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "" + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "" + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "" + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "" + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "" diff --git a/emenueditor/locale/ru.po b/emenueditor/locale/ru.po new file mode 100755 index 0000000..b56837f --- /dev/null +++ b/emenueditor/locale/ru.po @@ -0,0 +1,135 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr " ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr " " + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr ":" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr " " + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr " " + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr " " + +#: emenueditor.cpp:78 +msgid "New item" +msgstr " " + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr " " + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr " " + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr " ." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr " (*.png), *.png, (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr " ..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr " " + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr " :" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr " :" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr ":" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr " :" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr " " + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr " :" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr " !" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr " " + +#~ msgid "Go up..." +#~ msgstr "..." + +#~ msgid "Go up one level" +#~ msgstr " " diff --git a/emenueditor/locale/sk.po b/emenueditor/locale/sk.po new file mode 100755 index 0000000..dda1bf2 --- /dev/null +++ b/emenueditor/locale/sk.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Výber súboru ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Editor ponuky" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&Súbor" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Koniec" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Programy:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Kliknite na podponuku alebo na položku, ktorú chcete" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Nová podponuka" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Zmazať podponuku" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Nová položka" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Zmazať položku" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Editovať položku" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Prosím vložte názov položky menu." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Ikony (*.png), *.png, Všetky súbory (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Zvoľte súbor s ikonou..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Editovať položku" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Názov súboru:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "Názov v ponuke:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Príkaz ku spusteniu:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "Zv&oliť..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Súbor ikony:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "&Uložiť" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Nový adresár" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Prosím zadajte názov novej ponuky:" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Nemôžem vytvoriť podponuku!" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "Musíte zmazať všetky položky z podponuky predtým ako ju chcete zmazať!" + +#~ msgid "Go up..." +#~ msgstr "Ísť hore..." + +#~ msgid "Go up one level" +#~ msgstr "Ísť hore o úroveň" diff --git a/emenueditor/locale/sr.po b/emenueditor/locale/sr.po new file mode 100755 index 0000000..d06718f --- /dev/null +++ b/emenueditor/locale/sr.po @@ -0,0 +1,136 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-11-30 01:53+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Селекција фајла ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Едитор менија" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&Фајл" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Крај" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Програми:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Кликни на подмени или на ставку коју желите" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Нови подмени" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Бриши подмени" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Нова ставка" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Бриши ставку" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Едитуј ставку" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Молимо Вас, унесите име ставке у менију." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Иконе (*.png), *.png, Сви фајлови (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Изаберите икон-фајл..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Едитуј ставку" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Име фајла:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "Назив у менију:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Команда за извршавање:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "&Нађи..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Име фајла иконе:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "&Сними" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "&Одустани" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "&Нађи..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Нови директоријум" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Молимо Вас унесите назив новог подменија:" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Не могу да креирам подмени!" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "" +"Требало би да обришете све ставке у подменију пре него покушате да га " +"обришете!" + +#~ msgid "Go up..." +#~ msgstr "Иди горе..." + +#~ msgid "Go up one level" +#~ msgstr "Иди један ниво горе" diff --git a/epanelconf/Makefile b/epanelconf/Makefile new file mode 100755 index 0000000..8ede31b --- /dev/null +++ b/epanelconf/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = epanelconf.cpp util.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp +TARGET = epanelconf + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/epanelconf/epanelconf.cpp b/epanelconf/epanelconf.cpp new file mode 100755 index 0000000..96b53d7 --- /dev/null +++ b/epanelconf/epanelconf.cpp @@ -0,0 +1,253 @@ +/* + * $Id$ + * + * Configure window for eworkpanel + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "epanelconf.h" +#include "util.h" + +#include +#include + +using namespace fltk; + + + +// Widgets accessed from util.cpp +Input *workspaces[8]; + +Input* vcProgram; +Input* tdProgram; +Input* browserProgram; +Input* terminalProgram; +CheckButton* autohide_check; +ValueSlider* ws_slider; + +Window* panelWindow; + + +// Callbacks + +static void cb_Apply(Button*, void*) { + write_config(); + send_workspaces(); +} + +static void cb_Close(Button*, void*) { + exit(0); +} + +static void cb_Browse(Button*, void*) { +// char *file_types = _("Executables (*.*), *, All files (*.*), *"); +// const char *fileName = fl_select_file(0, file_types, _("File selection...")); + const char *fileName = file_chooser(_("Choose volume control program"), "*.*", vcProgram->value()); + if (fileName) + vcProgram->value(fileName); +} + +static void cb_Br(Button*, void*) { +// char *file_types = _("Executables (*.*), *, All files (*.*), *"); +// const char *fileName = fl_select_file(0, file_types, _("File selection...")); + const char *fileName = file_chooser(_("Choose time&date program"), "*.*", tdProgram->value()); + if (fileName) + tdProgram->value(fileName); +} + +static void cb_Browse1(Button*, void*) { +// char *file_types = _("Executables (*.*), *, All files (*.*), *"); +// const char *fileName = fl_select_file(0, file_types, _("File selection...")); + const char *fileName = file_chooser(_("Choose web browser program"), "*.*", browserProgram->value()); + if (fileName) + browserProgram->value(fileName); +} + + +static void cb_Br1(Button*, void*) { +// char *file_types = _("Executables (*.*), *, All files (*.*), *"); +// const char *fileName = fl_select_file(0, file_types, _("File selection...")); + const char *fileName = file_chooser(_("Choose file manager program"), "*.*", terminalProgram->value()); + if (fileName) + terminalProgram->value(fileName); +} + +static void cb_ws_slider(ValueSlider*, void*) { + int val = int(ws_slider->value()); + for(int n=0; n<8; n++) { + if(nactivate(); + else + workspaces[n]->deactivate(); + } +} + + +// Main window + +int main (int argc, char **argv) +{ + +Window* w; +//fl_init_locale_support("epanelconf", PREFIX"/share/locale"); +{ + Window* o = panelWindow = new Window(405, 270, _("Panel settings")); + w = o; + o->begin(); + { + Button* o = new Button(205, 235, 90, 25, _("&Apply")); + o->callback((Callback*)cb_Apply); + } + { + Button* o = new Button(305, 235, 90, 25, _("&Close")); + o->callback((Callback*)cb_Close); + } + { + TabGroup* o = new TabGroup(10, 10, 385, 215); + o->selection_color(o->color()); + o->selection_textcolor(o->textcolor()); + o->begin(); + { + Group* o = new Group(0, 25, 385, 190, _("Utilities")); + o->begin(); + { + Group* o = new Group(10, 20, 365, 100, "Panel utilities"); + o->box(ENGRAVED_BOX); + o->align(ALIGN_TOP|ALIGN_LEFT); + o->begin(); + { + Input* o = vcProgram = new Input(10, 20, 245, 25, _("Volume control program:")); + o->align(ALIGN_TOP|ALIGN_LEFT); + } + { + Button* o = new Button(265, 20, 90, 25, _("&Browse...")); + o->callback((Callback*)cb_Browse); + } + { + Input* o = tdProgram = new Input(10, 65, 245, 25, _("Time and date program:")); + o->align(ALIGN_TOP|ALIGN_LEFT); + } + { + Button* o = new Button(265, 65, 90, 25, _("Br&owse...")); + o->callback((Callback*)cb_Br); + } + o->end(); + } + { + Group* o = new Group(10, 140, 365, 35, _("Autohide")); + o->box(ENGRAVED_BOX); + o->align(ALIGN_TOP|ALIGN_LEFT); + o->begin(); + autohide_check = new CheckButton(10, 5, 345, 25, _("Automaticaly hide panel")); + o->end(); + } + o->end(); + } + { + Group* o = new Group(0, 25, 385, 190, _("Workspaces")); + o->hide(); + o->begin(); + { + ValueSlider* o = ws_slider = new ValueSlider(120, 10, 255, 25, _("Number of workspaces: ")); + o->type(ValueSlider::TICK_BELOW); + o->box(THIN_DOWN_BOX); + o->buttonbox(THIN_UP_BOX); + o->step(1); + o->callback((Callback*)cb_ws_slider); + o->align(ALIGN_LEFT|ALIGN_WRAP); + o->step(1); ; + o->range(1,8); + } + { + Group* o = new Group(10, 60, 370, 120, _("Workspace names:")); + o->box(ENGRAVED_BOX); + o->align(ALIGN_TOP|ALIGN_LEFT); + o->begin(); + { + Input* o = new Input(50, 5, 115, 20, _("WS 1:")); + o->deactivate(); + workspaces[0] = o; ; + } + { + Input* o = new Input(50, 35, 115, 20, _("WS 2:")); + o->deactivate(); + workspaces[1] = o; ; + } + { + Input* o = new Input(50, 65, 115, 20, _("WS 3:")); + o->deactivate(); + workspaces[2] = o; ; + } + { + Input* o = new Input(50, 95, 115, 20, _("WS 4:")); + o->deactivate(); + workspaces[3] = o; ; + } + { + Input* o = new Input(250, 5, 115, 20, _("WS 5:")); + o->deactivate(); + workspaces[4] = o; ; + } + { + Input* o = new Input(250, 35, 115, 20, _("WS 6:")); + o->deactivate(); + workspaces[5] = o; ; + } + { + Input* o = new Input(250, 65, 115, 20, _("WS 7:")); + o->deactivate(); + workspaces[6] = o; ; + } + { + Input* o = new Input(250, 95, 115, 20, _("WS 8:")); + o->deactivate(); + workspaces[7] = o; ; + } + o->end(); + } + o->end(); + } + { + Group* o = new Group(0, 25, 385, 190, _("Handlers")); + o->hide(); + o->begin(); + { + Group* o = new Group(10, 20, 365, 110, _("Handlers programs")); + o->box(ENGRAVED_BOX); + o->align(ALIGN_TOP|ALIGN_LEFT); + o->begin(); + { + Input* o = browserProgram = new Input(10, 20, 245, 25, _("Internet browser:")); + o->align(ALIGN_TOP|ALIGN_LEFT); + } + { + Button* o = new Button(265, 20, 90, 25, _("&Browse...")); + o->callback((Callback*)cb_Browse1); + } + { + Input* o = terminalProgram = new Input(10, 65, 245, 25, _("Terminal:")); + o->align(ALIGN_TOP|ALIGN_LEFT); + } + { + Button* o = new Button(265, 65, 90, 25, _("Br&owse...")); + o->callback((Callback*)cb_Br1); + } + o->end(); + } + o->end(); + } + o->end(); + } // TabGroup + o->end(); +} + +read_config(); +update_workspaces(); +w->show(argc, argv); +return run(); +} diff --git a/epanelconf/epanelconf.fl b/epanelconf/epanelconf.fl new file mode 100755 index 0000000..6eaf468 --- /dev/null +++ b/epanelconf/epanelconf.fl @@ -0,0 +1,189 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Panel config for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {selected +} + +decl {\#include "util.h"} {} + +decl {extern fltk::Input *workspaces[8];} {} + +Function {} {open +} { + code {//fl_init_locale_support("epanelconf", PREFIX"/share/locale");} {} + {fltk::Window} panelWindow { + label {Panel settings} open + xywh {347 187 405 270} visible + } { + {fltk::Button} {} { + label {&Apply} + callback {write_config(); +send_workspaces();} + xywh {205 235 90 25} + } + {fltk::Button} {} { + label {&Close} + callback {Fl::first_window()->hide();} + private xywh {305 235 90 25} + } + {fltk::TabGroup} {} {open + xywh {10 10 385 215} + } { + {fltk::Group} {} { + label Utilities open + xywh {0 25 385 190} + } { + {fltk::Group} {} { + label {Panel utilities} open + xywh {10 20 365 100} align 5 box ENGRAVED_BOX + } { + {fltk::Input} vcProgram { + label {Volume control program:} + xywh {10 20 245 25} align 5 + } + {fltk::Button} {} { + label {&Browse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) { + vcProgram->value(fileName); +}} + private xywh {265 20 90 25} + } + {fltk::Input} tdProgram { + label {Time and date program:} + xywh {10 65 245 25} align 5 + } + {fltk::Button} {} { + label {Br&owse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) +{ + tdProgram->value(fileName); +}} + private xywh {265 65 90 25} + } + } + {fltk::Group} {} { + label Autohide open + xywh {10 140 365 35} align 5 box ENGRAVED_BOX + extra_code {;} + } { + {fltk::CheckButton} autohide_check { + label {Automaticaly hide panel} + xywh {10 5 345 25} + } + } + } + {fltk::Group} {} { + label Workspaces open + xywh {0 25 385 190} hide + } { + {fltk::ValueSlider} ws_slider { + label {Number of workspaces: } + callback {int val = int(ws_slider->value()); +for(int n=0; n<8; n++) { + if(nactivate(); + else + workspaces[n]->deactivate(); +}} + xywh {120 10 255 25} type TICK_BELOW align 132 box THIN_DOWN_BOX buttonbox THIN_UP_BOX step 1 + extra_code {o->step(1); ; +o->range(1,8);} + } + {fltk::Group} {} { + label {Workspace names:} open + xywh {10 60 370 120} align 5 box ENGRAVED_BOX + extra_code {;} + } { + {fltk::Input} {} { + label {WS 1:} + xywh {50 5 115 20} deactivate + extra_code {workspaces[0] = o; ;} + } + {fltk::Input} {} { + label {WS 2:} + xywh {50 35 115 20} deactivate + extra_code {workspaces[1] = o; ;} + } + {fltk::Input} {} { + label {WS 3:} + xywh {50 65 115 20} deactivate + extra_code {workspaces[2] = o; ;} + } + {fltk::Input} {} { + label {WS 4:} + xywh {50 95 115 20} deactivate + extra_code {workspaces[3] = o; ;} + } + {fltk::Input} {} { + label {WS 5:} + xywh {250 5 115 20} deactivate + extra_code {workspaces[4] = o; ;} + } + {fltk::Input} {} { + label {WS 6:} + xywh {250 35 115 20} deactivate + extra_code {workspaces[5] = o; ;} + } + {fltk::Input} {} { + label {WS 7:} + xywh {250 65 115 20} deactivate + extra_code {workspaces[6] = o; ;} + } + {fltk::Input} {} { + label {WS 8:} + xywh {250 95 115 20} deactivate + extra_code {workspaces[7] = o; ;} + } + } + } + {fltk::Group} {} { + label Handlers open + xywh {0 25 385 190} hide + } { + {fltk::Group} {} { + label {Handlers programs} open + xywh {10 20 365 110} align 5 box ENGRAVED_BOX + extra_code {;} + } { + {fltk::Input} browserProgram { + label {Internet browser:} + xywh {10 20 245 25} align 5 + } + {fltk::Button} {} { + label {&Browse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) { + browserProgram->value(fileName); +}} + private xywh {265 20 90 25} + } + {fltk::Input} terminalProgram { + label {Terminal:} + xywh {10 65 245 25} align 5 + } + {fltk::Button} {} { + label {Br&owse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) { + terminalProgram->value(fileName); +}} + private xywh {265 65 90 25} + } + } + } + } + } + code {read_config();} {} + code {update_workspaces();} {} +} diff --git a/epanelconf/epanelconf.fld b/epanelconf/epanelconf.fld new file mode 100755 index 0000000..1806172 --- /dev/null +++ b/epanelconf/epanelconf.fld @@ -0,0 +1,195 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Panel config for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "util.h"} {} + +decl {extern Fl_Input *workspaces[8];} {} + +Function {} {open +} { + code {fl_init_locale_support("epanelconf", PREFIX"/share/locale");} {} + Fl_Window panelWindow { + label {Panel settings} open + xywh {118 179 405 264} hide + } { + Fl_Button {} { + label {&Apply} + callback {write_config(); +send_workspaces();} + xywh {237 235 80 25} + } + Fl_Button {} { + label {&Close} + callback {Fl::first_window()->hide();} + private xywh {323 235 80 25} + } + Fl_Tabs {} {open + xywh {0 2 403 230} + } { + Fl_Group {} { + label Utilities open + xywh {0 22 403 208} + } { + Fl_Group {} { + label {Panel utilities} open + xywh {5 20 395 110} align 5 box ENGRAVED_BOX + } { + Fl_Input vcProgram { + label {Volume control program:} + xywh {10 22 285 23} align 5 + } + Fl_Button {} { + label {&Browse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) { + vcProgram->value(fileName); +}} selected + private xywh {305 20 80 25} + } + Fl_Input tdProgram { + label {Time and date program:} + xywh {10 67 285 23} align 5 + } + Fl_Button {} { + label {Br&owse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) +{ + tdProgram->value(fileName); +}} + private xywh {305 65 80 25} + } + } + Fl_Group {} { + label Autohide open + xywh {5 150 395 35} align 5 box ENGRAVED_BOX + extra_code {;} + } { + Fl_Check_Button autohide_check { + label {Automaticaly hide panel} + xywh {5 5 385 25} + } + } + } + Fl_Group {} { + label Workspaces open + xywh {0 22 403 208} hide + } { + Fl_Value_Slider ws_slider { + label {Number of workspaces: } + callback {int val = int(ws_slider->value()); +for(int n=0; n<8; n++) { + if(nactivate(); + else + workspaces[n]->deactivate(); +}} + xywh {145 10 255 20} type {HORIZONTAL|Fl_Slider::TICK_BELOW} align 132 box THIN_DOWN_BOX button_box THIN_UP_BOX step 1 + extra_code {o->step(1); ; +o->range(1,8);} + } + Fl_Group {} { + label {Workspace names:} open + xywh {5 60 395 130} align 5 box ENGRAVED_BOX + extra_code {;} + } { + Fl_Input {} { + label {WS 1:} + xywh {55 10 115 20} deactivate + extra_code {workspaces[0] = o; ;} + } + Fl_Input {} { + label {WS 2:} + xywh {55 40 115 20} deactivate + extra_code {workspaces[1] = o; ;} + } + Fl_Input {} { + label {WS 3:} + xywh {55 70 115 20} deactivate + extra_code {workspaces[2] = o; ;} + } + Fl_Input {} { + label {WS 4:} + xywh {55 100 115 20} deactivate + extra_code {workspaces[3] = o; ;} + } + Fl_Input {} { + label {WS 5:} + xywh {260 10 115 20} deactivate + extra_code {workspaces[4] = o; ;} + } + Fl_Input {} { + label {WS 6:} + xywh {260 40 115 20} deactivate + extra_code {workspaces[5] = o; ;} + } + Fl_Input {} { + label {WS 7:} + xywh {260 70 115 20} deactivate + extra_code {workspaces[6] = o; ;} + } + Fl_Input {} { + label {WS 8:} + xywh {260 100 115 20} deactivate + extra_code {workspaces[7] = o; ;} + } + } + } + Fl_Group {} { + label Handlers open + xywh {0 22 403 208} hide + } { + Fl_Group {} { + label {Handlers programs} open + xywh {5 20 395 110} align 5 box ENGRAVED_BOX + extra_code {;} + } { + Fl_Input browserProgram { + label {Internet browser:} + xywh {10 22 285 23} align 5 + } + Fl_Button {} { + label {&Browse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) { + browserProgram->value(fileName); +}} + private xywh {300 20 80 25} + } + Fl_Input terminalProgram { + label {Terminal:} + xywh {10 67 285 23} align 5 + } + Fl_Button {} { + label {Br&owse...} + callback {char *file_types = _("Executables (*.*), *, All files (*.*), *"); +const char *fileName = fl_select_file(0, file_types, _("File selection...")); +if (fileName) { + terminalProgram->value(fileName); +}} + private xywh {300 65 80 25} + } + } + } + } + } + code {read_config();} {} + code {update_workspaces();} {} +} diff --git a/epanelconf/epanelconf.h b/epanelconf/epanelconf.h new file mode 100755 index 0000000..d4e2551 --- /dev/null +++ b/epanelconf/epanelconf.h @@ -0,0 +1,35 @@ +/* + * $Id$ + * + * Configure window for eworkpanel + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef epanelconf_h +#define epanelconf_h +#include +#include +#include +#include +#include +#include +#include +#include +#include "../edelib2/NLS.h" + +// Widgets accessed from util.cpp +extern fltk::Input *workspaces[8]; + +extern fltk::Input* vcProgram; +extern fltk::Input* tdProgram; +extern fltk::Input* browserProgram; +extern fltk::Input* terminalProgram; +extern fltk::CheckButton* autohide_check; +extern fltk::ValueSlider* ws_slider; + +#endif diff --git a/epanelconf/locale/hu.po b/epanelconf/locale/hu.po new file mode 100755 index 0000000..812ff2a --- /dev/null +++ b/epanelconf/locale/hu.po @@ -0,0 +1,131 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 +#: epanelconf.cpp:35 +#: epanelconf.cpp:60 +#: epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Minden fájl (*.*), *" + +#: epanelconf.cpp:26 +#: epanelconf.cpp:36 +#: epanelconf.cpp:61 +#: epanelconf.cpp:71 +msgid "File selection..." +msgstr "Fájl kiválasztása..." + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "Panel beállítások" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "Be&zár" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "Alkalmazások" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "Panel alkalmazások" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "Hangerőszabályzó program:" + +#: epanelconf.cpp:97 +#: epanelconf.cpp:177 +msgid "&Browse..." +msgstr "&Tallóz..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "Dátum/idő program:" + +#: epanelconf.cpp:103 +#: epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "Ta&llóz..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "Elrejtés" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "Panel automatikus elrejtése" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "Munkaterületek" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "Munkaterületek száma:" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "Munkaterület nevek:" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "MT 1:" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "MT 2:" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "MT 3:" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "MT 4:" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "MT 5:" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "MT 6:" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "MT 7:" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "MT 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Alapértelmezések" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Alapértelmezett programok" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Böngésző:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Terminál:" + diff --git a/epanelconf/locale/id.po b/epanelconf/locale/id.po new file mode 100755 index 0000000..4a2a7fa --- /dev/null +++ b/epanelconf/locale/id.po @@ -0,0 +1,126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: epanelconf\n" +"POT-Creation-Date: 2002-10-17 18:15+0000\n" +"PO-Revision-Date: 2002-11-29 15:30+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: epanelconf.cpp:26 epanelconf.cpp:36 epanelconf.cpp:61 epanelconf.cpp:71 +msgid "File selection..." +msgstr "Pemilihan file" + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "Seting panel" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "Ter&apkan" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "&Tutup" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "Utilitas" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "Utilitas panel" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "Program pengendali volumen" + +#: epanelconf.cpp:97 epanelconf.cpp:177 +msgid "&Browse..." +msgstr "&Browse..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "Program jam dan tanggal:" + +#: epanelconf.cpp:103 epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "Br&owse..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "Sembunyikan otomatis" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "Sembunyikan panel otomatis" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "Ruangkerja" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "Jumlah ruangkerja:" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "Nama ruangkerja:" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "RK 1:" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "RK 2:" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "RK 3:" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "RK 4:" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "RK 5:" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "RK 6:" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "RK 7:" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "RK 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Handler" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Program handler" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Browser internet:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Terminal:" diff --git a/epanelconf/locale/messages.pot b/epanelconf/locale/messages.pot new file mode 100755 index 0000000..62985bf --- /dev/null +++ b/epanelconf/locale/messages.pot @@ -0,0 +1,127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-10-17 18:15+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: epanelconf.cpp:26 epanelconf.cpp:36 epanelconf.cpp:61 epanelconf.cpp:71 +msgid "File selection..." +msgstr "" + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "" + +#: epanelconf.cpp:97 epanelconf.cpp:177 +msgid "&Browse..." +msgstr "" + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "" + +#: epanelconf.cpp:103 epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "" + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "" diff --git a/epanelconf/locale/ru.po b/epanelconf/locale/ru.po new file mode 100755 index 0000000..13dd50f --- /dev/null +++ b/epanelconf/locale/ru.po @@ -0,0 +1,127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: epanelconf.cpp:26 epanelconf.cpp:36 epanelconf.cpp:61 epanelconf.cpp:71 +msgid "File selection..." +msgstr " ..." + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr " " + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr " " + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr " :" + +#: epanelconf.cpp:97 epanelconf.cpp:177 +msgid "&Browse..." +msgstr "..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr ":" + +#: epanelconf.cpp:103 epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr " " + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr " " + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr ":" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr ":" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr " " + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr " :" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr ":" diff --git a/epanelconf/locale/sk.po b/epanelconf/locale/sk.po new file mode 100755 index 0000000..35a5246 --- /dev/null +++ b/epanelconf/locale/sk.po @@ -0,0 +1,127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: epanelconf 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:26 epanelconf.cpp:36 +msgid "File selection..." +msgstr "Výber súboru..." + +#: epanelconf.cpp:60 +msgid "Panel settings" +msgstr "Nastavenia panelu" + +#: epanelconf.cpp:62 +msgid "&Apply" +msgstr "&Použiť" + +#: epanelconf.cpp:66 +msgid "&Close" +msgstr "&Zavrieť" + +#: epanelconf.cpp:71 +msgid "Utilities" +msgstr "Pomôcky" + +#: epanelconf.cpp:72 +msgid "Panel utilities" +msgstr "Pomôcky panelu" + +#: epanelconf.cpp:75 +msgid "Volume control program:" +msgstr "Program nastavenia hlasitosti:" + +#: epanelconf.cpp:79 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: epanelconf.cpp:83 +msgid "Time and date program:" +msgstr "Program nastavenia času a dátumu:" + +#: epanelconf.cpp:87 +msgid "Br&owse..." +msgstr "Zv&oliť..." + +#: epanelconf.cpp:94 +msgid "Autohide" +msgstr "Automatické skrytie" + +#: epanelconf.cpp:97 +msgid "Automaticaly hide panel" +msgstr "Automaticky skryť panel" + +#: epanelconf.cpp:106 +msgid "Workspaces" +msgstr "Pracovné plochy" + +#: epanelconf.cpp:108 +msgid "Number of workspaces: " +msgstr "Počet pracovných plôch: " + +#: epanelconf.cpp:118 +msgid "Workspace names:" +msgstr "Názvy pracovných plôch:" + +#: epanelconf.cpp:121 +msgid "WS 1:" +msgstr "PP 1:" + +#: epanelconf.cpp:125 +msgid "WS 2:" +msgstr "PP 2:" + +#: epanelconf.cpp:129 +msgid "WS 3:" +msgstr "PP 3:" + +#: epanelconf.cpp:133 +msgid "WS 4:" +msgstr "PP 4:" + +#: epanelconf.cpp:137 +msgid "WS 5:" +msgstr "PP 5:" + +#: epanelconf.cpp:141 +msgid "WS 6:" +msgstr "PP 6:" + +#: epanelconf.cpp:145 +msgid "WS 7:" +msgstr "PP 7:" + +#: epanelconf.cpp:149 +msgid "WS 8:" +msgstr "PP 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Správcovia" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Programy správy" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Internetový prehliadač:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Terminál:" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + diff --git a/epanelconf/locale/sr.po b/epanelconf/locale/sr.po new file mode 100755 index 0000000..9748a91 --- /dev/null +++ b/epanelconf/locale/sr.po @@ -0,0 +1,135 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: epanelconf 1.0\n" +"POT-Creation-Date: 2002-10-17 18:15+0000\n" +"PO-Revision-Date: 2002-11-30 02:04+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 +#: epanelconf.cpp:35 +#: epanelconf.cpp:60 +#: epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: epanelconf.cpp:26 +#: epanelconf.cpp:36 +#: epanelconf.cpp:61 +#: epanelconf.cpp:71 +msgid "File selection..." +msgstr "Селектовање фајла..." + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "Особине панела" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "&Примени" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "&Затвори" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "Помоћни алати" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "Помоћни алати за панел" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "Програм за контролу јачине звука:" + +#: epanelconf.cpp:97 +#: epanelconf.cpp:177 +msgid "&Browse..." +msgstr "&Нађи..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "Време и датум - програм:" + +#: epanelconf.cpp:103 +#: epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "&Нађи..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "Аутоскривање" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "Аутоматски сакриј панел" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "Радне површине" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "Број радних површина:" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "Имена радних површина:" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "РП 1:" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "РП 2:" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "РП 3:" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "РП 4:" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "РП 5:" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "РП 6:" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "РП 7:" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "РП 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Хендлери" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Програми-хендлери" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Интернет браузер:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Терминал:" + diff --git a/epanelconf/util.cpp b/epanelconf/util.cpp new file mode 100755 index 0000000..3a6d235 --- /dev/null +++ b/epanelconf/util.cpp @@ -0,0 +1,347 @@ +/* + * $Id$ + * + * Configure window for eworkpanel + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "epanelconf.h" + +#include +#include +//#include +#include "../edelib2/Config.h" +//#include + +using namespace fltk; +using namespace edelib; + + + +extern Input *workspaces[8]; + +void read_config() +{ + char temp_value[128]; + bool temp_bool=0; + Config cfg(Config::find_file("ede.conf", 0)); + cfg.set_section("Panel"); + + if(!cfg.read("Volume Control", temp_value, 0, sizeof(temp_value))) { + vcProgram->value(temp_value); + } + + if(!cfg.read("Time and date", temp_value, 0, sizeof(temp_value))) { + tdProgram->value(temp_value); + } + + cfg.read("AutoHide", temp_bool, false); + autohide_check->value(temp_bool); + + cfg.set_section("Web"); + if(!cfg.read("Browser", temp_value, 0, sizeof(temp_value))) { + browserProgram->value(temp_value); + } + + cfg.set_section("Terminal"); + if(!cfg.read("Terminal", temp_value, 0, sizeof(temp_value))) { + terminalProgram->value(temp_value); + } + +} + +void write_config() +{ + Config cfg(Config::find_file("ede.conf", 0)); + cfg.set_section("Panel"); + cfg.write("Volume Control", vcProgram->value()); + cfg.write("Time and date", tdProgram->value()); + cfg.write("AutoHide", autohide_check->value()); + + cfg.set_section("Web"); + cfg.write("Browser", browserProgram->value()); + cfg.set_section("Terminal"); + cfg.write("Terminal", terminalProgram->value()); + + // Write workspace names to file, edewm will read and set on startup + cfg.set_section("Workspaces"); + cfg.write("Count", int(ws_slider->value())); + for(int n=0; n<8; n++) { + char tmp[128]; snprintf(tmp, sizeof(tmp)-1, "Workspace%d", n+1); + cfg.write(tmp, workspaces[n]->value()); + } +} + +/* +// This was an attempt to separate code into Fl_WM class +// For the moment, we abandon this attempt + +void get_workspaces(Fl_CString_List &desktops, int &count); +void update_workspaces() +{ + Fl_CString_List desktops; + desktops.auto_delete(true); + + int count; + get_workspaces(desktops, count); + if(count>8) count=8; + for(int n=0; n<8; n++) { + const char *name = desktops.item(n); + Fl_Input *i = workspaces[n]; + if(nactivate(); + if(name) { + i->value(name); + } else { + char tmp[128]; + snprintf(tmp, sizeof(tmp)-1, "%s %d", "Workspace" ,n+1); + i->value(tmp); + } + } + ws_slider->value(count); + desktops.clear(); +}*/ + +///////////////////////////////////// +///////////////////////////////////// +// Code for setting desktop names using NET-WM + +static bool atoms_inited=false; + +// NET-WM spec desktop atoms +static Atom _XA_NET_NUM_DESKTOPS; +static Atom _XA_NET_DESKTOP_NAMES; +// GNOME atoms: +static Atom _XA_WIN_WORKSPACE_COUNT; +static Atom _XA_WIN_WORKSPACE_NAMES; + +static void init_atoms() +{ + if(atoms_inited) return; + open_display(); + +#define A(name) XInternAtom(xdisplay, name, False) + + _XA_NET_NUM_DESKTOPS = A("_NET_NUMBER_OF_DESKTOPS"); + _XA_NET_DESKTOP_NAMES = A("_NET_DESKTOP_NAMES"); + + _XA_WIN_WORKSPACE_COUNT = A("_WIN_WORKSPACE_COUNT"); + _XA_WIN_WORKSPACE_NAMES = A("_WIN_WORKSPACE_NAMES"); + + atoms_inited=true; +} + +void* getProperty(XWindow w, Atom a, Atom type, unsigned long* np=0) +{ + Atom realType; + int format; + unsigned long n, extra; + int status; + void* prop; + status = XGetWindowProperty(xdisplay, w, + a, 0L, 256L, False, type, &realType, + &format, &n, &extra, (uchar**)&prop); + if (status != Success) return 0; + if (!prop) return 0; + if (!n) {XFree(prop); return 0;} + if (np) *np = n; + return prop; +} + +int getIntProperty(XWindow w, Atom a, Atom type, int deflt) { + void* prop = getProperty(w, a, type); + if(!prop) return deflt; + int r = int(*(long*)prop); + XFree(prop); + return r; +} + +void setProperty(XWindow w, Atom a, Atom type, int v) { + long prop = v; + XChangeProperty(xdisplay, w, a, type, 32, PropModeReplace, (uchar*)&prop,1); +} + +//void get_workspaces(Fl_CString_List &desktops, int &count) +void update_workspaces() +{ + init_atoms(); + + int count = 0; + int current = 0; +// desktops.clear(); +// desktops.auto_delete(true); + + int length=0; + char *buffer=0; + + XTextProperty names; + // First try to get NET desktop names + XGetTextProperty(xdisplay, RootWindow(xdisplay, xscreen), &names, _XA_NET_DESKTOP_NAMES); + // If not found, look for GNOME ones + if(!names.value) XGetTextProperty(xdisplay, RootWindow(xdisplay, xscreen), &names, _XA_WIN_WORKSPACE_NAMES); + buffer = (char *)names.value; + length = names.nitems; + + if(buffer) { + char* c = buffer; + for (int i = 1; c < buffer+length; i++) { + char* d = c; + while(*d) d++; + if(*c != '<') { + if(strcmp(c, "") != 0) { + Input *i = workspaces[current]; + i->activate(); + i->value(strdup(c)); + current++; + } + } + c = d+1; + } + XFree(names.value); + } + + count = getIntProperty(RootWindow(xdisplay, xscreen), _XA_NET_NUM_DESKTOPS, XA_CARDINAL, -1); + if(count<0) count = getIntProperty(RootWindow(xdisplay, xscreen), _XA_WIN_WORKSPACE_COUNT, XA_CARDINAL, -1); + + // FIXME: What to do with count now? +} + + + +// Code taken from FL_WM.cpp +Atom _XA_NET_SUPPORTED = 0; +Atom _XA_NET_SUPPORTING_WM_CHECK = 0; + +XWindow fl_wmspec_check_window = None; +bool fl_netwm_supports(Atom &xproperty) +{ + // Vedran: -manual atoms initing: + _XA_NET_SUPPORTING_WM_CHECK = A("_NET_SUPPORTING_WM_CHECK"); + _XA_NET_SUPPORTED = A("_NET_SUPPORTED"); + + static Atom *atoms = NULL; + static int natoms = 0; + + Atom type; + int format; + ulong nitems; + ulong bytes_after; + XWindow *xwindow; + + if(fl_wmspec_check_window != None) { + if(atoms == NULL) + return false; + for(int i=0; ivalue()); + + // Tell windowmanager to update its internal desktop count + //Fl_WM::set_workspace_count(cnt); + fl_set_workspace_count(cnt); + + char *ws_names[8]; + for(int n=0; nvalue(), "")) { + char tmp[128]; + snprintf(tmp, sizeof(tmp)-1, "%s %d", "Workspace", n+1); + ws_names[n] = strdup(tmp); + } else + ws_names[n] = strdup(workspaces[n]->value()); + } + + XTextProperty names; + if(XStringListToTextProperty((char **)ws_names, cnt, &names)) { + XSetTextProperty(xdisplay, RootWindow(xdisplay, xscreen), &names, _XA_NET_DESKTOP_NAMES); + XSetTextProperty(xdisplay, RootWindow(xdisplay, xscreen), &names, _XA_WIN_WORKSPACE_NAMES); + XFree(names.value); + } +} diff --git a/epanelconf/util.h b/epanelconf/util.h new file mode 100755 index 0000000..f7d4137 --- /dev/null +++ b/epanelconf/util.h @@ -0,0 +1,22 @@ +/* + * $Id$ + * + * Configure window for eworkpanel + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef util_h +#define util_h + +extern void read_config(); +extern void write_config(); + +extern void update_workspaces(); +extern void send_workspaces(); + +#endif diff --git a/esvrconf/Makefile b/esvrconf/Makefile new file mode 100755 index 0000000..111bf76 --- /dev/null +++ b/esvrconf/Makefile @@ -0,0 +1,21 @@ + +CPPFILES = escreensaver.cpp escrsaverconf.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp +TARGET = esvrconf + +POFILES = locale/ru.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/esvrconf/ehacklist.h b/esvrconf/ehacklist.h new file mode 100755 index 0000000..dd15f4e --- /dev/null +++ b/esvrconf/ehacklist.h @@ -0,0 +1,207 @@ +/* + * $Id$ + * + * Screensaver configuration + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +// This is from xscreensaver 4.0 XScreenSaver.ad + +char hacks[] = " \ + \"Qix (solid)\" qix -root -solid -segments 100 \n\ + \"Qix (transparent)\" qix -root -count 4 -solid -transparent \n\ + \"Qix (linear)\" qix -root -count 5 -solid -transparent \ + -linear -segments 250 -size 100 \n\ +- mono: \"Qix (xor)\" qix -root -linear -count 5 -size 200 \ + -spread 30 -segments 75 -solid -xor \n\ + \ + \"Attraction (balls)\" attraction -root -mode balls \n\ + \"Attraction (lines)\" attraction -root -mode lines -points 3\ + -segments 200 \n\ +- \"Attraction (poly)\" attraction -root -mode polygons \n\ + \"Attraction (splines)\" attraction -root -mode splines -segments \ + 300 \n\ + \"Attraction (orbital)\" attraction -root -mode lines -radius 300 \ + -orbit -vmult 0.5 \n\ + \ + pyro -root \n\ + rocks -root \n\ + helix -root \n\ + pedal -root \n\ + rorschach -root -offset 7 \n\ + hopalong -root \n\ + greynetic -root \n\ + imsmap -root \n\ + slidescreen -root \n\ + decayscreen -root \n\ + jigsaw -root \n\ + blitspin -root -grab \n\ + slip -root \n\ + distort -root \n\ + spotlight -root \n\ + \"Ripples (oily)\" ripples -root -oily -light 2 \n\ + \"Ripples (stir)\" ripples -root -oily -light 2 -stir \n\ + \"Ripples (desktop)\" ripples -root -water -light 6 \n\ + hypercube -root \n\ + hyperball -root \n\ + halo -root \n\ + maze -root \n\ + noseguy -root \n\ + flame -root \n\ + lmorph -root \n\ + deco -root \n\ + moire -root \n\ + moire2 -root \n\ + lightning -root \n\ + strange -root \n\ + spiral -root \n\ + laser -root \n\ + grav -root \n\ + \"Grav (trails)\" grav -root -trail -decay \n\ + drift -root \n\ + ifs -root \n\ + julia -root \n\ + penrose -root \n\ + sierpinski -root \n\ + braid -root \n\ + galaxy -root \n\ + bouboule -root \n\ + swirl -root \n\ + flag -root \n\ + sphere -root \n\ + forest -root \n\ + lisa -root \n\ + lissie -root \n\ + goop -root -max-velocity 0.5 -elasticity \ + 0.9 \n\ + starfish -root \n\ + \"Starfish (blob)\" starfish -root -blob \n\ + munch -root \n\ + fadeplot -root \n\ + coral -root -delay 0 \n\ + mountain -root \n\ + triangle -root -delay 1 \n\ + worm -root \n\ + rotor -root \n\ + ant -root \n\ + demon -root \n\ + loop -root \n\ + vines -root \n\ + kaleidescope -root \n\ + xjack -root \n\ + xlyap -root -randomize \n\ + cynosure -root \n\ + flow -root \n\ + epicycle -root \n\ + interference -root \n\ + truchet -root -randomize \n\ + bsod -root \n\ + crystal -root \n\ + discrete -root \n\ + kumppa -root \n\ + rd-bomb -root \n\ + \"RD-Bomb (mobile)\" rd-bomb -root -speed 1 -size 0.1 \n\ + sonar -root \n\ + t3d -root \n\ + penetrate -root \n\ + deluxe -root \n\ + compass -root \n\ + squiral -root \n\ + xflame -root \n\ + wander -root \n\ + \"Wander (spots)\" wander -root -advance 0 -size 10 -circles \ + -length 10000 -reset 100000 \n\ + critical -root \n\ + phosphor -root \n\ + xmatrix -root \n\ + petri -root -size 2 -count 20 \n\ + \"Petri 2\" petri -root -minlifespeed 0.02 \ + -maxlifespeed 0.03 -minlifespan 1 \ + -maxlifespan 1 -instantdeathchan 0 \ + -minorchan 0 -anychan 0.3 \n\ + shadebobs -root \n\ + ccurve -root \n\ + blaster -root \n\ + bumps -root \n\ + xteevee -root \n\ + xspirograph -root \n\ + nerverot -root \n\ +- \"NerveRot (dense)\" nerverot -root -count 1000 \n\ +- \"NerveRot (thick)\" nerverot -root -count 100 -line-width 4 \ + -max-nerve-radius 0.8 -nervousness 0.5 -db \n\ + xrayswarm -root \n\ +- \"Zoom (Fatbits)\" zoom -root \n\ + \"Zoom (Lenses)\" zoom -root -lenses \n\ + rotzoomer -root \n\ +- \"RotZoomer (mobile)\" rotzoomer -root -move \n\ +- \"RotZoomer (sweep)\" rotzoomer -root -sweep \n\ + whirlwindwarp -root \n\ + \"WhirlyGig\" whirlygig -root \n\ + \"SpeedMine\" speedmine -root \n\ + \"SpeedWorm\" speedmine -root -worm \n\ + vermiculate -root \n\ + color: bubbles -root \n\ + default-n: webcollage -root \n\ + default-n: \"WebCollage (whacked)\" \ + webcollage -root -filter \ + 'vidwhacker -stdin -stdout' \n\ +- default-n: vidwhacker -root \n\ + \ + GL: gears -root \n\ + GL: \"Gears (planetary)\" gears -root -planetary \n\ + GL: superquadrics -root \n\ + GL: morph3d -root \n\ + GL: cage -root \n\ + GL: moebius -root \n\ + GL: stairs -root \n\ + GL: pipes -root \n\ + GL: sproingies -root \n\ + GL: rubik -root \n\ + GL: atlantis -root \n\ + GL: lament -root \n\ + GL: bubble3d -root \n\ + GL: glplanet -root \n\ + GL: pulsar -root \n\ +- GL: \"Pulsar (textures)\" \ + pulsar -root -texture -mipmap \ + -texture_quality -light -fog \n\ +- GL: extrusion -root \n\ + GL: sierpinski3d -root \n\ + GL: menger -root \n\ + GL: \"GFlux\" gflux -root \n\ + GL: \"GFlux (grab)\" gflux -root -mode grab \n\ + GL: stonerview -root \n\ + GL: starwars -root \n\ + GL: gltext -root \n\ + GL: \"GLText (clock)\" gltext -text \"%A%n%d %b %Y%n%r\" -root \n\ + GL: \"Molecule\" molecule -root \n\ + GL: \"Molecule (lumpy)\" molecule -root -no-bonds -no-labels \n\ + GL: dangerball -root \n\ + GL: circuit -root \n\ + GL: engine -root \n\ + GL: flipscreen3d -root \n\ + \ +- xdaliclock -root -builtin3 -cycle \n\ +- default-n: xearth -nofork -nostars -ncolors 50 \ + -night 3 -wait 0 -timewarp 400.0 -pos \ + sunrel/38/-30 \n\ +- xplanetbg -xscreensaver -moonside \ + -markerfile earth -wait 1 -timewarp 400 \n\ +- ssystem -fullscreen :32 \n\ +- xmountains -b -M -Z 0 -r 1 \n\ +- \"XMountains (top)\" xmountains -b -M -Z 0 -r 1 -m \n\ +- xaos -fullscreen -autopilot \ + -incoloring -1 -outcoloring -1 \n\ +- xfishtank -d -s \n\ +- xsnow \n\ +- goban -root \n\ +- electricsheep \n\ +- cosmos -root \n\ +- GL: sphereEversion --root \n"; + diff --git a/esvrconf/escreensaver.cpp b/esvrconf/escreensaver.cpp new file mode 100755 index 0000000..bfef92a --- /dev/null +++ b/esvrconf/escreensaver.cpp @@ -0,0 +1,514 @@ +/* + * $Id$ + * + * Screensaver configuration + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../edeconf.h" +// blah + +/*#include +#include +#include +#include */ + +#include +//#include +#include +#include +#include +#include "../edelib2/Config.h" + +#include "escreensaver.h" +#include "escrsaverconf.h" +#include "ehacklist.h" + + +using namespace fltk; +using namespace edelib; + + + + + +int running_saver = 0; +pid_t running_preview_pid = 0; +int default_saver = 0; + +typedef struct screenhack screenhack; +struct screenhack +{ + bool enabled_p; + char *visual; + char *name; + char *command; +}; + +struct saver_preferences +{ + screenhack **screenhacks; /* the scrsavers to run */ + int screenhacks_count; +}; + +char* format_command(const char *cmd, bool wrap_p); + +/* Returns a new string describing the shell command. + This may be just the name of the program, capitalized. + It also may be something from the resource database (gotten + by looking for "hacks.XYZ.name", where XYZ is the program.) + */ +char* make_hack_name(const char *shell_command) +{ + char *s = strdup (shell_command); + char *s2; + + for (s2 = s; *s2; s2++) /* truncate at first whitespace */ + if (isspace (*s2)) + { + *s2 = 0; + break; + } + + s2 = strrchr (s, '/'); /* if pathname, take last component */ + if (s2) + { + s2 = strdup (s2+1); + free (s); + s = s2; + } + + if (strlen (s) > 50) /* 51 is hereby defined as "unreasonable" */ + s[50] = 0; + + for (s2 = s; *s2; s2++) /* if it has any capitals, return it */ + if (*s2 >= 'A' && *s2 <= 'Z') + return s; + + /* else cap it */ + if (s[0] >= 'a' && s[0] <= 'z') + s[0] -= 'a'-'A'; + /* (magic leading X) */ + if (s[0] == 'X' && s[1] >= 'a' && s[1] <= 'z') + s[1] -= 'a'-'A'; + return s; +} + + +//Parsing scrsavers + +screenhack* parse_screenhack(const char *line) +{ + screenhack *h = (screenhack *) calloc (1, sizeof(*h)); + const char *s; + + h->enabled_p = true; + + /* skip whitespace */ + while (isspace(*line)) line++; + if (*line == '-') /* handle "-" */ + { + h->enabled_p = false; + line++; + /* skip whitespace */ + while (isspace(*line)) line++; + } + + s = line; /* handle "visual:" */ + while (*line && *line != ':' && *line != '"' && !isspace(*line)) + line++; + if (*line != ':') + line = s; + else + { + h->visual = (char *) malloc (line-s+1); + strncpy (h->visual, s, line-s); + h->visual[line-s] = 0; + if (*line == ':') line++;/* skip ":" */ + /* skip whitespace */ + while (isspace(*line)) line++; + } + + if (*line == '"') /* handle "name" */ + { + line++; + s = line; + while (*line && *line != '"') + line++; + h->name = (char *) malloc (line-s+1); + strncpy(h->name, s, line-s); + h->name[line-s] = 0; + if (*line == '"') line++;/* skip "\"" */ + /* skip whitespace */ + while (isspace(*line)) line++; + } + + /* handle command */ + h->command = format_command(line, false); + return h; +} + + +char* format_command(const char *cmd, bool wrap_p) +{ + int tab = 30; + int col = tab; + char *cmd2 = (char *) calloc (1, 2 * (strlen (cmd) + 1)); + const char *in = cmd; + char *out = cmd2; + while (*in) + { + /* shrink all whitespace to one space, for the benefit of the "demo" + mode display. We only do this when we can easily tell that the + whitespace is not significant (no shell metachars). + */ + switch (*in) + { + case '\'': case '"': case '`': case '\\': + /* Metachars are scary. Copy the rest of the line unchanged. */ + while (*in) + *out++ = *in++, col++; + break; + + case ' ': case '\t': + /* Squeeze all other whitespace down to one space. */ + while (*in == ' ' || *in == '\t') + in++; + *out++ = ' ', col++; + break; + + default: + /* Copy other chars unchanged. */ + *out++ = *in++, col++; + break; + } + } + + *out = 0; + + /* Strip trailing whitespace */ + while (out > cmd2 && isspace (out[-1])) + *(--out) = 0; + + return cmd2; +} + + +static struct saver_preferences p; + +void getScreenhacks() +{ + int i, j; + int start = 0; + int end = 0; + int size; + char *d = hacks; + + p.screenhacks = 0; + p.screenhacks_count = 0; + + if (!d || !*d) + return; + + size = strlen (d); + + /* Count up the number of newlines (which will be equal to or larger than + one less than the number of hacks.) + */ + + for (i = j = 0; d[i]; i++) + { + if (d[i] == '\n') j++; + } + + j++; + + p.screenhacks = (screenhack **) calloc (j + 1, sizeof (screenhack *)); + + /* Iterate over the lines in `d' (the string with newlines) + and make new strings to stuff into the `screenhacks' array. + */ + p.screenhacks_count = 0; + while (start < size) + { + // skip forward over whitespace. + while (d[start] == ' ' || d[start] == '\t' || d[start] == '\n') + start++; + + // skip forward to newline or end of string. + end = start; + while (d[end] != 0 && d[end] != '\n') + end++; + + // null terminate + d[end] = '\0'; + + p.screenhacks[p.screenhacks_count++] = parse_screenhack (d + start); + if (p.screenhacks_count >= i) + abort(); + + start = end+1; + } + + if (p.screenhacks_count == 0) + { + free(p.screenhacks); + p.screenhacks = 0; + } +} + + +void free_screenhack(screenhack *hack) +{ + if (hack->visual) free (hack->visual); + if (hack->name) free (hack->name); + free(hack->command); + memset(hack, 0, sizeof(*hack)); + free (hack); +} + +static void free_screenhack_list(screenhack **list, int count) +{ + int i; + if (!list) return; + for (i = 0; i < count; i++) + if (list[i]) free_screenhack (list[i]); + free (list); +} + +Config config("EDE Team", "escrsaver"); + +void readConfiguration() +{ + int cdefserver = 0; + config.get("Saver", "Active", cdefserver); + + if (!config.error()) + { + default_saver = cdefserver; + saversList->text(saversList->child(default_saver)->label()); + } + + int ctimeout = 0; + config.get("Saver", "Timeout", ctimeout, 1); + if (!config.error()) timeoutSlider->value(ctimeout); + + int cdpmsOn = 0; + config.get("DPMS", "On", cdpmsOn); + if (!config.error()) {enableDPMSCheck->value(cdpmsOn); enableDPMSCheck->do_callback();} + + int cdpmsStandby = 0; config.get("DPMS", "Standby", cdpmsStandby); + if (!config.error()) standbySlider->value(cdpmsStandby); + + int cdpmsSuspend = 0; + config.get("DPMS", "Suspend", cdpmsSuspend); + if (!config.error()) suspendSlider->value(cdpmsSuspend); + + int cdpmsOff = 0; + config.get("DPMS", "Off", cdpmsOff); + if (!config.error()) offSlider->value(cdpmsOff); +} + + +void writeConfiguration() +{ +// FLE_Config config(fle_find_config_file("apps/escrsaver.conf", 1)); + config.create_section("Saver"); + config.set_section("Saver"); + + config.write("Active", saversList->item() ? (int)saversList->item()->user_data() : default_saver); + + config.write("Timeout", timeoutSlider->value()); + config.create_section("DPMS"); + config.set_section("DPMS"); + config.write("On", enableDPMSCheck->value()); + config.write("Standby", standbySlider->value()); + config.write("Suspend", suspendSlider->value()); + config.write("Off", offSlider->value()); + + writeConfigurationSaver(); +} + + +void writeConfigurationSaver() +{ + char *home = getenv("HOME"); + char *path = (char*)malloc(200); + snprintf(path,200,"%s/.xscreensaver", home); + delete [] home; + + FILE *config = fopen(path, "w+"); + + delete [] path; + + fprintf(config, "timeout: 0:%d:00\n", (int) timeoutSlider->value()); + fprintf(config, "dpmsEnabled: %s\n", enableDPMSCheck->value() ? "True" : "False"); + + fprintf(config, "dpmsStandby: 0:%d:00\n", (int) standbySlider->value()); + fprintf(config, "dpmsSuspend: 0:%d:00\n", (int) suspendSlider->value()); + fprintf(config, "dpmsOff: 0:%d:00\n", (int) offSlider->value()); + + fprintf(config, "mode: one\n"); + + + fprintf(config, "selected: %d\n", 0); + + fprintf(config, "programs: \"%s\" %s\n", saversList->item() ? + (char*)p.screenhacks[(int)saversList->item()->user_data()]->name : + (char*)p.screenhacks[default_saver]->name, + saversList->item() ? + (char*)p.screenhacks[(int)saversList->item()->user_data()]->command : + (char*)p.screenhacks[default_saver]->command + ); + + fclose(config); + +} + + +void clearOnExit() +{ + free_screenhack_list(p.screenhacks, p.screenhacks_count); + exit(0); +} + + +static void killPreviewSubproc() +{ + if (running_preview_pid) + { + kill(running_preview_pid, SIGTERM); + running_preview_pid = 0; + } + running_saver = 0; +} + + +void launchPreviewSubprocess(char *new_cmd) +{ + extern char **environ; + pid_t forked; + + if (running_preview_pid) + { + killPreviewSubproc(); + } + + switch ((int) (forked = fork ())) + { + case -1: + { + alert(_("Couldn't fork screensaver subprocess.")); + return; + } + case 0: + { + usleep(250000); + char *argv[4]; + argv[0] = "sh"; + argv[1] = "-c"; + argv[2] = new_cmd; + argv[3] = NULL; + if (execve("/bin/sh", argv, environ) == -1) + alert(_("Couldn't fork shell subprocess.")); + exit(1); + break; + } + default: + running_preview_pid = forked; + break; + } +} + +// fill combo box with scrsavers names +// TODO: read screensavers actually installed on the system +void fillSaversList(InputBrowser *browser) +{ + for (int i = 0; i < p.screenhacks_count; i++) + { + browser->begin(); + Item *item = 0; + if (!(p.screenhacks[i]->name)) // if scrsaver do not have the name + { + item = new Item(make_hack_name(p.screenhacks[i]->command)); + } + else item = new Item(p.screenhacks[i]->name); + + item->user_data((void*) i); + item->activate(p.screenhacks[i]->enabled_p); + browser->end(); + } + browser->text(browser->child(0)->label()); +} + +// preview +void startSaverPreview() +{ + static XWindow id; + static int wid = 0; + static bool warned = false; + + if (!wid) + { + id = xid(saverWindow); + wid=1; + } + saverWindow->show(); + + if (id==0) + return; + killPreviewSubproc(); + + char *location = 0; + if (access(PREFIX"/X11R6/lib/xscreensaver/", F_OK)==0) + location = PREFIX"/X11R6/lib/xscreensaver/"; + else if (access(PREFIX"/lib/xscreensaver/", F_OK)==0) + location = PREFIX"/lib/xscreensaver/"; + else if (access("/usr/X11R6/lib/xscreensaver/", F_OK)==0) + location = "/usr/X11R6/lib/xscreensaver/"; + else if (access("/lib/xscreensaver/",F_OK)==0) + location = "/lib/xscreensaver/"; + else { + location = ""; + if (!warned) { + alert(_("xscreensaver wasn't found on your system.\n\nEquinox Desktop Environment uses xscreensaver to display screen savers. Please install this package if you wish to use graphical screen savers.")); + warned=true; + } + } + + // no need to continue now... + if (strlen(location)<1) return; + + + char cmd[4096] = {0}; + char* savercmd; + // all sorts of stuff can be undefined (zero), so we need to check thoroughly + if (saversList->item()) { + int saverno = (int)saversList->item()->user_data(); + fprintf (stderr, " ++ screenhack %d\n", saverno); + if (p.screenhacks && p.screenhacks[saverno] && p.screenhacks[saverno]->command) { + savercmd = (char*)p.screenhacks[(int)saversList->item()->user_data()]->command; + } else { + // no preview + return; + } + } else + savercmd = (char*)p.screenhacks[default_saver]->command; + snprintf(cmd, 4096, "%s%s -window-id 0x%X", location, savercmd, (int)id); + launchPreviewSubprocess(cmd); +} diff --git a/esvrconf/escreensaver.h b/esvrconf/escreensaver.h new file mode 100755 index 0000000..65a56d7 --- /dev/null +++ b/esvrconf/escreensaver.h @@ -0,0 +1,41 @@ +/* + * $Id$ + * + * Screensaver configuration + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef escreensaver_h +#define escreensaver_h + +#include +#include + +/*#include +#include +#include +#include +#include */ + +#include +#include +#include +#include "../edelib2/NLS.h" + +void fillSaversList(fltk::InputBrowser *); +void startSaverPreview(); +void readConfiguration(); +void writeConfiguration(); +void writeConfigurationSaver(); +void getScreenhacks(); +void clearOnExit(); + +#endif + + + diff --git a/esvrconf/escrsaverconf.cpp b/esvrconf/escrsaverconf.cpp new file mode 100755 index 0000000..438490b --- /dev/null +++ b/esvrconf/escrsaverconf.cpp @@ -0,0 +1,176 @@ +/* + * $Id$ + * + * Screensaver configuration + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "escrsaverconf.h" +#include "escreensaver.h" +#include "../edelib2/NLS.h" + +#include +#include +#include +#include "icons/energy.xpm" + +fltk::Window* mainWindow; + +static void cb_mainWindow(fltk::Window*, void*) { + clearOnExit(); +} + +fltk::InputBrowser* saversList; + +static void cb_saversList(fltk::InputBrowser*, void*) { + startSaverPreview(); +} + +fltk::ValueInput* timeoutSlider; + +static void cb_OK(fltk::Button*, void*) { + writeConfiguration(); clearOnExit(); +} + +static void cb_Cancel(fltk::Button*, void*) { + clearOnExit(); +} + +fltk::Group* dpmsGroup; +fltk::ValueInput* standbySlider; +fltk::ValueInput* suspendSlider; +fltk::ValueInput* offSlider; +fltk::CheckButton* enableDPMSCheck; + +static void cb_enableDPMSCheck(fltk::CheckButton*, void*) { + if (enableDPMSCheck->value()) dpmsGroup->activate(); else dpmsGroup->deactivate(); + enableDPMSCheck->redraw(); +} + + +static void cb_Apply(fltk::Button*, void*) { + writeConfiguration(); +} + +fltk::Window* saverWindow; + +int main(int argc, char **argv) { + fltk::Window* w; + //fl_init_locale_support("escrsaverconf", PREFIX"/share/locale"); + {fltk::Window* o = mainWindow = new fltk::Window(300, 420, _("Screensaver settings")); + w = o; + o->set_vertical(); + o->callback((fltk::Callback*)cb_mainWindow); + o->begin(); + {fltk::Group* o = new fltk::Group(10, 185, 280, 45, "Screensaver"); + o->box(fltk::ENGRAVED_BOX); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + {fltk::InputBrowser* o = saversList = new fltk::InputBrowser(10, 10, 155, 25); + o->callback((fltk::Callback*)cb_saversList); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + //o->type(1); + getScreenhacks(); + fillSaversList(o); + } + {fltk::Group* o = new fltk::Group(165, 5, 105, 35); + o->begin(); + {fltk::ValueInput* o = timeoutSlider = new fltk::ValueInput(65, 5, 40, 25, "Timeout:"); + o->maximum(60); + o->step(1); + o->value(1); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CLIP|fltk::ALIGN_WRAP); + } + o->end(); + } + o->end(); + } + {fltk::Group* o = new fltk::Group(10, 255, 280, 115, "DPMS"); + o->box(fltk::ENGRAVED_BOX); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + {fltk::Group* o = dpmsGroup = new fltk::Group(70, 0, 205, 108); + o->deactivate(); + o->begin(); + {fltk::ValueInput* o = standbySlider = new fltk::ValueInput(160, 10, 40, 25, "Standby:"); + o->maximum(60); + o->step(1); + o->value(10); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + {fltk::ValueInput* o = suspendSlider = new fltk::ValueInput(160, 45, 40, 25, "Suspend:"); + o->maximum(60); + o->step(1); + o->value(15); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + {fltk::ValueInput* o = offSlider = new fltk::ValueInput(160, 80, 40, 25, "Off:"); + o->maximum(60); + o->step(1); + o->value(20); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + } + o->end(); + } + {fltk::CheckButton* o = enableDPMSCheck = new fltk::CheckButton(10, 45, 145, 25, "Enabled"); + o->callback((fltk::Callback*)cb_enableDPMSCheck); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(10, 10, 55, 35); + fltk::xpmImage *img = new fltk::xpmImage((const char**)energy_xpm); + o->image(img); + } + o->end(); + } +// {fltk::Button* o = new fltk::Button(0, 380, 90, 25, "&OK"); +// o->callback((fltk::Callback*)cb_OK); +// } + {fltk::Button* o = new fltk::Button(100, 380, 90, 25, "&Apply"); + o->callback((fltk::Callback*)cb_Apply); + } + {fltk::Button* o = new fltk::Button(200, 380, 90, 25, "&Close"); + o->callback((fltk::Callback*)cb_Cancel); + } + {fltk::Group* o = new fltk::Group(45, 5, 200, 165); + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(10, 6, 180, 131); + o->box(fltk::UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(20, 15, 160, 110); + o->box(fltk::DOWN_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(70, 137, 59, 3); + o->box(fltk::THIN_UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(52, 140, 95, 12); + o->box(fltk::UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(164, 127, 15, 6); + o->box(fltk::THIN_UP_BOX); + } + {fltk::InvisibleBox* o = new fltk::InvisibleBox(157, 128, 2, 4); + o->set_vertical(); + o->box(fltk::FLAT_BOX); + o->color(fltk::GREEN); + } + {fltk::Window* o = saverWindow = new fltk::Window(22, 17, 156, 106); + o->box(fltk::FLAT_BOX); + o->color(fltk::BLACK); + o->end(); + } + o->end(); + } + o->end(); + } + readConfiguration(); + cb_enableDPMSCheck(enableDPMSCheck, 0); //deactivate controls if it's off + mainWindow->end(); + mainWindow->show(); + startSaverPreview(); //preview active saver + return fltk::run(); +} diff --git a/esvrconf/escrsaverconf.fl b/esvrconf/escrsaverconf.fl new file mode 100755 index 0000000..5426f8d --- /dev/null +++ b/esvrconf/escrsaverconf.fl @@ -0,0 +1,117 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {\#include "escreensaver.h"} {} + +Function {main(int argc, char **argv)} {open return_type int +} { + code {//fl_init_locale_support("escrsaverconf", PREFIX"/share/locale");} {} + {fltk::Window} mainWindow { + label {Screensaver settings} + callback {clearOnExit();} open + xywh {401 74 300 420} visible + } { + {fltk::Group} {} { + label Screensaver open + xywh {10 185 280 45} align 5 box ENGRAVED_BOX + } { + {fltk::Choice} saversList { + callback {startSaverPreview();} + xywh {10 10 155 25} align 5 + extra_code {o->type(1); getScreenhacks(); +fillSaversList(o);} + class {fltk::InputBrowser} + } {} + {fltk::Group} {} {open + xywh {165 5 105 35} + } { + {fltk::ValueInput} timeoutSlider { + label {Timeout:} + xywh {65 5 40 25} align 196 maximum 60 step 1 value 1 + } + } + } + {fltk::Button} {} { + label {&OK} + callback {writeConfiguration(); clearOnExit();} + xywh {0 380 90 25} + } + {fltk::Button} {} { + label {&Cancel} + callback {clearOnExit();} + xywh {200 380 90 25} + } + {fltk::Group} {} { + label DPMS open + xywh {10 255 280 115} align 5 box ENGRAVED_BOX + } { + {fltk::Group} dpmsGroup {open + xywh {70 0 205 108} deactivate + } { + {fltk::ValueInput} standbySlider { + label {Standby:} + xywh {160 10 40 25} align 132 maximum 60 step 1 value 10 + } + {fltk::ValueInput} suspendSlider { + label {Suspend:} + xywh {160 45 40 25} align 132 maximum 60 step 1 value 15 + } + {fltk::ValueInput} offSlider { + label {Off:} + xywh {160 80 40 25} align 132 maximum 60 step 1 value 20 + } + } + {fltk::CheckButton} enableDPMSCheck { + label Enabled + callback {if (enableDPMSCheck->value()) dpmsGroup->activate(); else dpmsGroup->deactivate();} + xywh {10 45 145 25} align 148 + } + {fltk::InvisibleBox} {} { + xywh {10 10 55 35} image {icons/energy.xpm} + } + } + {fltk::Button} {} { + label {&Apply} + callback {writeConfiguration();} + xywh {100 380 90 25} + } + {fltk::Group} {} {open + xywh {45 5 200 165} + } { + {fltk::InvisibleBox} {} { + xywh {10 6 180 131} box UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {20 15 160 110} box DOWN_BOX + } + {fltk::InvisibleBox} {} { + xywh {70 137 59 3} box THIN_UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {52 140 95 12} box UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {164 127 15 6} box THIN_UP_BOX + } + {fltk::InvisibleBox} {} { + xywh {157 128 2 4} box FLAT_BOX color 2 + } + {fltk::InvisibleBox} saverWindow { + xywh {22 17 156 106} box FLAT_BOX color 32 + extra_code {o->end();} + class Fl_Window + } + } + } + code {readConfiguration(); +mainWindow->end(); +mainWindow->show(); +startSaverPreview(); //preview active saver +//return fltk::run();} {selected + } +} diff --git a/esvrconf/escrsaverconf.fld b/esvrconf/escrsaverconf.fld new file mode 100755 index 0000000..6b17dff --- /dev/null +++ b/esvrconf/escrsaverconf.fld @@ -0,0 +1,128 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0030 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {\#include "escreensaver.h"} {} + +Function {main(int argc, char **argv)} {open return_type int +} { + code {fl_init_locale_support("escrsaverconf", PREFIX"/share/locale");} {} + Fl_Window mainWindow { + label {Screensaver settings} + callback {clearOnExit();} open + xywh {329 68 285 374} hide + extra_code {o->label(_(o->label()));} + } { + Fl_Group {} { + label Screensaver open + xywh {5 185 275 55} align 5 box ENGRAVED_BOX + extra_code {o->label(_(o->label()));} + } { + Fl_Choice saversList { + callback {startSaverPreview();} open + xywh {7 15 158 23} align 5 + extra_code {\#include +o->type(1); getScreenhacks(); +fillSaversList(o);} + class Fl_Input_Browser + } {} + Fl_Group {} {open + xywh {175 5 95 45} + } { + Fl_Value_Input timeoutSlider { + label {Timeout:} + xywh {55 9 40 25} align 196 maximum 60 step 1 value 1 + extra_code {o->label(_(o->label()));} + } + } + } + Fl_Button {} { + label {&OK} + callback {writeConfiguration(); clearOnExit();} + xywh {30 345 80 25} + extra_code {o->label(_(o->label()));} + } + Fl_Button {} { + label {&Cancel} + callback {clearOnExit();} selected + xywh {200 345 80 25} + extra_code {o->label(_(o->label()));} + } + Fl_Group {} { + label DPMS open + xywh {5 260 275 80} align 5 box ENGRAVED_BOX + extra_code {o->label(_(o->label()));} + } { + Fl_Group dpmsGroup {open + xywh {130 2 140 74} deactivate + } { + Fl_Value_Input standbySlider { + label {Standby:} + xywh {100 2 40 20} align 132 maximum 60 step 1 value 10 + extra_code {o->label(_(o->label()));} + } + Fl_Value_Input suspendSlider { + label {Suspend:} + xywh {100 27 40 20} align 132 maximum 60 step 1 value 15 + extra_code {o->label(_(o->label()));} + } + Fl_Value_Input offSlider { + label {Off:} + xywh {100 52 40 20} align 132 maximum 60 step 1 value 20 + extra_code {o->label(_(o->label()));} + } + } + Fl_Check_Button enableDPMSCheck { + label Enabled + callback {if (enableDPMSCheck->value()) dpmsGroup->activate(); else dpmsGroup->deactivate();} + xywh {60 25 105 25} align 148 + extra_code {o->label(_(o->label()));} + } + Fl_Box {} { + xywh {5 15 55 35} image {icons/energy.xpm} + } + } + Fl_Button {} { + label {&Apply} + callback {writeConfiguration();} + xywh {115 345 80 25} + extra_code {o->label(_(o->label()));} + } + Fl_Group {} {open + xywh {40 5 205 165} + } { + Fl_Box {} { + xywh {10 6 180 131} box UP_BOX + } + Fl_Box {} { + xywh {20 15 160 110} box DOWN_BOX + } + Fl_Box {} { + xywh {70 137 59 3} box THIN_UP_BOX + } + Fl_Box {} { + xywh {52 140 95 12} box UP_BOX + } + Fl_Box {} { + xywh {164 127 15 6} box THIN_UP_BOX + } + Fl_Box {} { + xywh {157 128 2 4} box FLAT_BOX color 2 + } + Fl_Box saverWindow { + xywh {22 17 156 106} box FLAT_BOX color 32 + extra_code {o->end();} + class Fl_Window + } + } + } + code {readConfiguration(); +mainWindow->end(); +mainWindow->show(); +startSaverPreview(); //preview active saver +return Fl::run();} {} +} diff --git a/esvrconf/escrsaverconf.h b/esvrconf/escrsaverconf.h new file mode 100755 index 0000000..9e6963d --- /dev/null +++ b/esvrconf/escrsaverconf.h @@ -0,0 +1,33 @@ +/* + * $Id$ + * + * Screensaver configuration + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef escrsaverconf_h +#define escrsaverconf_h +#include +#include +extern fltk::Window* mainWindow; +#include +#include +extern fltk::InputBrowser* saversList; +#include +extern fltk::ValueInput* timeoutSlider; +#include +extern fltk::Group* dpmsGroup; +extern fltk::ValueInput* standbySlider; +extern fltk::ValueInput* suspendSlider; +extern fltk::ValueInput* offSlider; +#include +extern fltk::CheckButton* enableDPMSCheck; +#include +extern fltk::Window* saverWindow; +int main(int argc, char **argv); +#endif diff --git a/esvrconf/icons/energy.xpm b/esvrconf/icons/energy.xpm new file mode 100755 index 0000000..2559406 --- /dev/null +++ b/esvrconf/icons/energy.xpm @@ -0,0 +1,307 @@ +/* XPM */ +static char * energy_xpm[] = { +"48 48 256 2", +" c None", +". c #000000", +"+ c #4271D0", +"@ c #4777D0", +"# c #4D81BE", +"$ c #3C6FB7", +"% c #4977D8", +"& c #5CA24B", +"* c #5A9A7E", +"= c #61AC4A", +"- c #65B33B", +"; c #4E86A9", +"> c #4579C2", +", c #3966C4", +"' c #4170DC", +") c #5BA52C", +"! c #549C48", +"~ c #65BC0E", +"{ c #67BF00", +"] c #559953", +"^ c #3A63E4", +"/ c #58A723", +"( c #55A42B", +"_ c #56A71A", +": c #64B713", +"< c #3F7695", +"[ c #5EAB26", +"} c #519362", +"| c #58A63A", +"1 c #4A6FB3", +"2 c #55A226", +"3 c #539D3D", +"4 c #559D33", +"5 c #4B8B5E", +"6 c #519533", +"7 c #498A75", +"8 c #3559F9", +"9 c #529E27", +"0 c #40A01E", +"a c #57A823", +"b c #599F3A", +"c c #35699B", +"d c #3B6CAB", +"e c #53954A", +"f c #3F77A5", +"g c #3C6AA6", +"h c #4E914F", +"i c #539A43", +"j c #2E8947", +"k c #9CB232", +"l c #74AF1B", +"m c #35718B", +"n c #458760", +"o c #2F5DBB", +"p c #3864B4", +"q c #4D9347", +"r c #509739", +"s c #4D9847", +"t c #4B8C49", +"u c #448F4C", +"v c #2B8336", +"w c #FFFE5D", +"x c #BBB859", +"y c #2B60AB", +"z c #4D923A", +"A c #498F42", +"B c #497870", +"C c #2850B7", +"D c #2F6094", +"E c #46895A", +"F c #448546", +"G c #326C73", +"H c #498F3D", +"I c #91AF4F", +"J c #FFFF68", +"K c #F8D645", +"L c #257433", +"M c #3B727C", +"N c #3260AC", +"O c #325DA6", +"P c #2E5AA5", +"Q c #42874F", +"R c #33795E", +"S c #2A52C4", +"T c #448954", +"U c #487F56", +"V c #488950", +"W c #4B8A52", +"X c #196C58", +"Y c #FFF253", +"Z c #6E6C32", +"` c #E2D957", +" . c #6B9142", +".. c #236C8B", +"+. c #3D7B5C", +"@. c #3164A7", +"#. c #325DAA", +"$. c #2B7A5B", +"%. c #206B5F", +"&. c #FFF43E", +"*. c #003A2E", +"=. c #AEC865", +"-. c #DAC32C", +";. c #012592", +">. c #073CCA", +",. c #0E4BC2", +"'. c #104BB7", +"). c #2E58A7", +"!. c #1241B3", +"~. c #2F6E5F", +"{. c #2B55B4", +"]. c #2D57AF", +"^. c #31765A", +"/. c #5F8D4E", +"(. c #7A916B", +"_. c #91A480", +":. c #FFFF44", +"<. c #AE9B4E", +"[. c #004778", +"}. c #FFFF4E", +"|. c #C1BC6B", +"1. c #89968A", +"2. c #708287", +"3. c #4A5F88", +"4. c #395F9C", +"5. c #2A51A2", +"6. c #0032B2", +"7. c #4163AB", +"8. c #25686B", +"9. c #2B4D9B", +"0. c #2B599B", +"a. c #234BA7", +"b. c #2E5DA2", +"c. c #337765", +"d. c #136168", +"e. c #FEED65", +"f. c #D0BB4D", +"g. c #F5D457", +"h. c #EACC4D", +"i. c #AEA94B", +"j. c #022686", +"k. c #558C3C", +"l. c #E3D160", +"m. c #FEE336", +"n. c #FDE85B", +"o. c #91894A", +"p. c #24499B", +"q. c #002BB5", +"r. c #F8D52B", +"s. c #3C7C53", +"t. c #175687", +"u. c #0637A7", +"v. c #022CBF", +"w. c #08438D", +"x. c #095460", +"y. c #013162", +"z. c #163E97", +"A. c #0006C2", +"B. c #61746F", +"C. c #CDB22B", +"D. c #586A55", +"E. c #0023B4", +"F. c #013991", +"G. c #00239C", +"H. c #977D1A", +"I. c #0023A3", +"J. c #3C5CA7", +"K. c #E8CB38", +"L. c #000C90", +"M. c #D4C853", +"N. c #07296E", +"O. c #185876", +"P. c #FEE24A", +"Q. c #08329E", +"R. c #68788A", +"S. c #ADAD7E", +"T. c #305E56", +"U. c #787850", +"V. c #2C4887", +"W. c #024C6E", +"X. c #556D96", +"Y. c #0011AA", +"Z. c #24479E", +"`. c #1B45A3", +" + c #1D449C", +".+ c #0018A8", +"++ c #1D387A", +"@+ c #000F6F", +"#+ c #FFFD37", +"$+ c #A99935", +"%+ c #FFFE55", +"&+ c #FFFF76", +"*+ c #4A514C", +"=+ c #EDD74C", +"-+ c #948C30", +";+ c #1439A2", +">+ c #294B95", +",+ c #003897", +"'+ c #FFFE27", +")+ c #232E47", +"!+ c #013485", +"~+ c #204692", +"{+ c #0C3598", +"]+ c #0026A8", +"^+ c #0007B4", +"/+ c #929768", +"(+ c #000397", +"_+ c #000B59", +":+ c #0F2F8E", +"<+ c #E8E45D", +"[+ c #C9C662", +"}+ c #1F4292", +"|+ c #EECF1F", +"1+ c #0006AB", +"2+ c #617CA2", +"3+ c #0014A4", +"4+ c #001AB5", +"5+ c #3D5789", +"6+ c #001CA5", +"7+ c #264E80", +"8+ c #19409B", +"9+ c #0F3B98", +"0+ c #0D2E93", +"a+ c #385170", +"b+ c #012CAB", +"c+ c #012AA4", +"d+ c #DEC21D", +"e+ c #0000B3", +"f+ c #1B4A86", +"g+ c #163A9C", +"h+ c #183C9F", +"i+ c #193D97", +"j+ c #143A98", +"k+ c #0D349D", +"l+ c #000EBD", +"m+ c #163793", +"n+ c #103198", +"o+ c #163696", +"p+ c #123A9A", +"q+ c #11349B", +"r+ c #153E90", +"s+ c #102E9E", +"t+ c #00158D", +"u+ c #062E98", +"v+ c #123796", +"w+ c #113A9D", +"x+ c #00169B", +"y+ c #022A97", +"z+ c #0E3491", +"A+ c #0D3294", +"B+ c #113091", +"C+ c #0E3191", +"D+ c #113295", +"E+ c #113592", +"F+ c #12358D", +"G+ c #344F9F", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . . ", +" . . . . . + @ # # # $ . . . . . ", +" . . $ + % & * = - ; > # # # # @ % > . . ", +" . , > ' * ) ! ~ { { @ ' @ @ ' @ ] & > @ , . ", +" . . ^ ; / ( _ : , & { < ^ [ & ; } ~ : : ~ [ | 1 . . ", +" . 2 ) 3 _ / 4 5 6 7 5 $ 8 ] 9 2 _ _ 4 4 | 4 ) 0 _ a b . ", +" . c d e ) 3 ( < f a g ^ $ 3 h 5 3 b ! 3 3 i | j k l m < n . ", +" . d o p ( q i e r _ 9 m o , n _ 4 s t s q e s u v w x v h < o . ", +" . 1 y o h z t q 6 A B C , p p z D E F G H q t t j I J K L s M N p . ", +" . O P o c z Q A H R S S p O N o T U D c B t V V W X Y Z ` ...+.O N P . ", +" . N @.o c H n M G S N @.#.N o M A V t T $.$.%.%.X X &.*.=.-.;.>.,.'.'.. ", +" . P ).O ).!.%.~.{.S {.#.).P ].).F +.R R ^./.(.I (._.:.<.[.X }.|.1.1.2.3.4.. ", +" . 5.).P 6.7.1.8.M 9.0.C 5.).a.b.Q c.d.d.~.&.e.f.g.h.i.j.+ k.(.l.m.f.n.J o.. ", +" . p.5.9.q._.r.f.o.q.+.s.t.6.a.u.v.w.x.` e.y.x.y.i.z.A.B.Y C.D.E.F.A.G.:.H.I.a.. ", +" . a.5.!.J.K.L.M.N.0.%.O.U P.Q.R.:.3.S.r.C.I n.T.J U.x i.V.G.t.G W.X.:.U.Y.C Z.. ", +" . `. +p..+f.++}.@+S.#+$+@+%+r.$+&+*+e.K &+f.f.Z =+%+-+++E.;+a.>+,+(.'+)+!+0.Z.~+p.. ", +" . {+]+^+2.#+i.N./+J K.U.(.w -+:.=+(+1.m.n._+B C.w *+^+'+:+a.u.`.E.S.i.;.9. + + + +. ", +" . |.<+[+w *+!+n.C.%+L.i.o.-+D.j.j.v.}+#+U..+O.n.|+1+2+K.3+4+5+Q.6+B P.[.7+`.8+8+9+. ", +" . 9.0+B.a+h./+=+*+Q.a+b+6+!+N.F.!.u.c+=+d+++4+M.$+o.A.|.U.e+|.'+:.a+L.&.y.f+g+h+i+j+. ", +" . 1 ;.b+q.G.*+G.E.k+b+8+h+7+7+;+i+I.2.r.$+1+X.o.x ++l+M.U.w '+_+3.:./+M.Z q.h+f+8+{+7.. ", +" . Z.0+m+m+n+b+n+o+p+o+o+q+f+r+s+m+G.3.f.j.^+/+m.$+1+;.w #+D.(+E.3+t+f.w l.L.r+r+q+0+ +. ", +" . u+p+v+w+{+v+w+n+w+v+{+w+z.r+n+q+z.c+x+u.6+R.C.(+b+V.r.@+^+;+o+z.]+e+(.-.G.k+s+j+y+J.. ", +" . :+z+0+:+A+0+B+A+B+z+0+B+0+A+z+C+C+:+D+B+:+y+3+D+E+u+(+c+F+E+0+:+E+D+x+x+D+z+C+B+j.G+. ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/esvrconf/locale/hu.po b/esvrconf/locale/hu.po new file mode 100755 index 0000000..bd31336 --- /dev/null +++ b/esvrconf/locale/hu.po @@ -0,0 +1,63 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-10 14:54+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr "" + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr "" + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr "Képernyőkímélő beállítások" + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr "Képernyőkímélő" + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr "Idö:" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "&OK" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "Mégs&em" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr "Készenlét:" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr "Pihen:" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr "Kikapcsol:" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "Engedélyez" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "&Alkalmaz" + diff --git a/esvrconf/locale/messages.pot b/esvrconf/locale/messages.pot new file mode 100755 index 0000000..dae9701 --- /dev/null +++ b/esvrconf/locale/messages.pot @@ -0,0 +1,67 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr "" + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr "" + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr "" + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr "" + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr "" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr "" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr "" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr "" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "" diff --git a/esvrconf/locale/ru.po b/esvrconf/locale/ru.po new file mode 100755 index 0000000..0536d88 --- /dev/null +++ b/esvrconf/locale/ru.po @@ -0,0 +1,67 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr " " + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr " " + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr " " + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr " " + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr ":" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "&OK" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "DMPS" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr ":" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr ":" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr ":" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "" diff --git a/esvrconf/locale/sk.po b/esvrconf/locale/sk.po new file mode 100755 index 0000000..7b21e00 --- /dev/null +++ b/esvrconf/locale/sk.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: esvrconf 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr "Nemôžem spustiť podproces šetriča obrazovky" + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr "Nemôžem spustiť podproces shelu." + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr "Nastavenie šetriča obrazovky" + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr "Šetrič obrazovky" + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr "Čas:" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "&OK" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "DPMS" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr "Standby:" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr "Suspend:" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr "Off:" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "Povolené" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "&Použiť" diff --git a/etimedate/Date_Time.h b/etimedate/Date_Time.h new file mode 100755 index 0000000..0d1b1c9 --- /dev/null +++ b/etimedate/Date_Time.h @@ -0,0 +1,155 @@ +/* + * Date_Time class for FLTK + * Copyright (C) Vedran Ljubovic , 2005. + * WWW: http://www.sourceforge.net/projects/ede + * + * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE + * version 2. See COPYING for details. + * + */ + +#ifndef _DATE_TIME_H_ +#define _DATE_TIME_H_ + +class DateTime; + +/** \class Timezone + This class enables various manipulations of timezones needed for the DateTime class. +*/ +class Timezone { +public: +/** \fn Timezone::Timezone() + Creates a variable that contains UTC (Coordinated Universal Time) +*/ + TimeZone (); + +/** \fn char* Timezone::place() + Returns location of current timezone e.g. Europe/Sarajevo +*/ + char* place(); + +/** \fn void Timezone::parse(char*) + Parse given string into timezone. String can be place as returned by place() or a part of it. +*/ + void parse(char*); + +/** \fn int Timezone::correction(DateTime*) + Correction i.e. the number of minutes that needs to be added to UTC to get the current time zone. Because of daylight saving, this number can be different during the year - so DateTime needs to be specified. From this number a RFC822-compliant correction can be calculated - e.g. 180 means "+0300". +*/ + int correction(DateTime*); + +/** \fn static char** Timezone::list() + A useful function to return a list of timezone names as used by place() and parse(). +*/ + static char** list(); +} + +/** \class DateTime + DateTime +*/ +class DateTime { +public: +/** \fn DateTime::DateTime() + Creates DateTime at January 1st, year 0, 00:00:00 +*/ + DateTime (); + +/** \fn DateTime::DateTime(double) + Creates DateTime with given time_t value (as returned by time()) +*/ + DateTime (double); + + int year(); + int month(); + int day(); + int hour(); + int minute(); + int second(); + + bool year(int); + bool month(int); + bool day(int); + bool hour(int); + bool minute(int); + bool second(int); + + + + static char dateInputFormat[32]; + static char timeInputFormat[32]; + static char dateFormat[32]; + static char timeFormat[32]; + static char datePartsOrder[4]; + static char dateSeparator; + static char timeSeparator; + static bool time24Mode; + + Fl_Date_Time (short y,short m,short d,short hour=0,short minute=0,short second=0); + Fl_Date_Time (const char * dat); + Fl_Date_Time (const Fl_Date_Time &dt); + Fl_Date_Time (const double dt=0); + + static Fl_Date_Time convert (const long); + + void format_date(char *str) const; + void format_time(char *str, bool ampm=true) const; + + // These functions don't affect the actual system time. + // You can only alter the time for the current program. + static void Now(Fl_Date_Time dt); // Sets to current date and time + static Fl_Date_Time System(); // Gets to current system date and time + static Fl_Date_Time Now(); // Gets to current date and time + static Fl_Date_Time Date(); // Gets to current date + static Fl_Date_Time Time(); // Gets to current time + + short days_in_month() const; // Number of days in month (1..31) + short day_of_week() const; // (1..7) + short day_of_year() const; // returns relative date since Jan. 1 + + char* day_name() const; // Character Day Of Week ('Sunday'..'Saturday') + char* month_name() const; // Character Month name + + unsigned date() const; // Numeric date of date object + short day() const; // Numeric day of date object + short month() const; // Month number (1..12) + short year() const; + + char* date_string() const; + char* time_string() const; + + void decode_date(short *y,short *m,short *d) const; + void decode_time(short *h,short *m,short *s,short *ms) const; + + operator double (void) const; + + void operator = (const Fl_Date_Time& date); + void operator = (const char * dat); + + Fl_Date_Time operator + (int i); + Fl_Date_Time operator - (int i); + Fl_Date_Time operator + (Fl_Date_Time& dt); + Fl_Date_Time operator - (Fl_Date_Time& dt); + + Fl_Date_Time& operator += (int i); + Fl_Date_Time& operator -= (int i); + Fl_Date_Time& operator += (Fl_Date_Time& dt); + Fl_Date_Time& operator -= (Fl_Date_Time& dt); + + Fl_Date_Time& operator ++ (); // Prefix increment + Fl_Date_Time& operator ++ (int); // Postfix increment + Fl_Date_Time& operator -- (); // Prefix decrement + Fl_Date_Time& operator -- (int); // Postfix decrement + +protected: + double m_dateTime; +}; + +// Date comparison +static inline bool operator < (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 < (double)dt2 ); } +static inline bool operator <= (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 <= (double)dt2 ); } +static inline bool operator > (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 > (double)dt2 ); } +static inline bool operator >= (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 >= (double)dt2 ); } +static inline bool operator == (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 == (double)dt2 ); } +static inline bool operator != (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 != (double)dt2 ); } + +#endif diff --git a/etimedate/EDE_Calendar.cpp b/etimedate/EDE_Calendar.cpp new file mode 100755 index 0000000..8a8bb68 --- /dev/null +++ b/etimedate/EDE_Calendar.cpp @@ -0,0 +1,471 @@ +/*************************************************************************** + Fl_Calendar.cpp - description + ------------------- + begin : Sun Aug 18 2002 + copyright : (C) 2002 by Alexey Parshin + email : alexeyp@m7.tts-sf.com + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ +// +// Ported to FLTK2 by Vedran Ljubovic , 2005. + +#include "EDE_Calendar.h" + +// For NLS stuff +//#include "../core/fl_internal.h" +#include +#include +#include +#include +#include +#include +#include + +#include "../edelib2/NLS.h" + +using namespace fltk; + + + + +// FIXME: dont do static +static EDE_Calendar* thecalendar; + + + + +// Constants + +static const char *weekDayLabels[7] = { + "Su","Mo","Tu","We","Th","Fr","Sa" +}; + +static const char *monthDayLabels[31] = { + "1","2","3","4","5","6","7","8","9","10", + "11","12","13","14","15","16","17","18","19","20", + "21","22","23","24","25","26","27","28","29","30", + "31" +}; + +static const char *switchLabels[4] = { + "@-1<<","@-1<","@-1>","@-1>>" +}; + +static const int monthChanges[4] = { + -12,-1,1,12 +}; + +// TODO: read this from locale +const bool weekStartsOnMonday = false; + + +// Callback function for day buttons + +void EDE_Calendar::cbDayButtonClicked(Widget *button, void *param) { + if (event_clicks() == 1 || event_key() == ReturnKey) { +// NOTE: this used to read: +// button->parent->dayButtonChanged... +// but it didn't work! FIXME + thecalendar->dayButtonChanged((unsigned)param); + } else { + thecalendar->dayButtonClicked((unsigned)param); + } +} + +// Callback function for switch buttons + +void EDE_Calendar::cbSwitchButtonClicked(Widget *button, void *param) { + thecalendar->switchButtonClicked((int)param); +} + + +// Real callback functions: + +void EDE_Calendar::dayButtonClicked(unsigned cday) { + if (cday < 1 || cday > 31) return; + short year, month, day; + m_activeDate.decode_date(&year,&month,&day); + Fl_Date_Time::encode_date((double&)m_activeDate,year,month,cday); + redraw(); +// do_callback(); // callback only on changing "today" date +} + +void EDE_Calendar::dayButtonChanged(unsigned cday) { + if (cday < 1 || cday > 31) return; + short year, month, day; + m_todayDate.decode_date(&year,&month,&day); + m_activeDate.decode_date(&year,&month,&day); + Fl_Date_Time::encode_date((double&)m_todayDate,year,month,cday); + redraw(); + do_callback(); +} + +void EDE_Calendar::switchButtonClicked(int monthChange) { + short year, month, day; + m_activeDate.decode_date(&year,&month,&day); + month += monthChange; + if (month < 1) { + month += 12; + year--; + } + if (month > 12) { + month -= 12; + year++; + } +// Fl_Date_Time newDate(year,month,day); +// date(newDate); + Fl_Date_Time::encode_date((double&)m_activeDate,year,month,day); + redraw(); +// do_callback(); +} + + +// This is stuff for NamedStyle - still needed? + +static void revert(Style* s) { + s->color_ = GRAY75; + s->buttoncolor_ = GRAY75; + s->box_ = FLAT_BOX; + s->buttonbox_ = THIN_UP_BOX; + s->textfont_ = HELVETICA_BOLD; +} + +static NamedStyle style("Calendar", revert, &EDE_Calendar::default_style); +NamedStyle* EDE_Calendar::default_style = &::style; + + +// Constructor + +EDE_Calendar::EDE_Calendar(int x,int y,int w,int h,const char *lbl) +: Group(2,2,w-2,h-2,lbl) { + thecalendar = this; + m_globalx = x; m_globaly = y; + + style(default_style); + unsigned i; + + // Header box + m_headerBox = new Group(x,y,w,32); + m_monthNameBox = new InvisibleBox(x,y,w,16); + m_monthNameBox->box(NO_BOX); + + // NLS stuff - FIXME this can't work because gettext needs literals inside _() + for (i=0; i<7;i++) weekDayLabels[i]=_(weekDayLabels[i]); + + // Weekday headers + for (i = 0; i < 7; i++) { + m_dayNameBoxes[i] = new InvisibleBox(x+i*16,y+16,16,16,weekDayLabels[i]); + } + m_headerBox->end(); + + // Day buttons, correct positions are set by resize() + m_buttonBox = new Group(x,y+32,w,64); + m_buttonBox->box(FLAT_BOX); + for (i = 0; i < 31; i++) { + Button *btn = new Button(0,0,16,16,monthDayLabels[i]); + m_dayButtons[i] = btn; + btn->callback(EDE_Calendar::cbDayButtonClicked, (void *)(i+1)); + } + m_buttonBox->end(); + + // Switch buttons, correct positions are set by resize() + for (i = 0; i < 4; i++) { + m_switchButtons[i] = new Button(x,y,16,16,switchLabels[i]); + m_switchButtons[i]->callback(EDE_Calendar::cbSwitchButtonClicked, (void *)monthChanges[i]); + m_switchButtons[i]->labeltype(SYMBOL_LABEL); + } + + end(); + date(Fl_Date_Time::Now()); +} + +/* +// New style ctor +Fl_Calendar::Fl_Calendar(const char* l,int layout_size,Align layout_al,int label_w) +: Group (l,layout_size,layout_al,label_w) +{ + + ctor_init(0,0,w(),h()); +}*/ + +void EDE_Calendar::layout() { + int xx = m_globalx, yy = m_globaly; // in FLTK2 positions are absolute, not relative + int ww = w(), hh = h(); + Rectangle* rect = new Rectangle(xx,yy,ww,hh); + box()->inset(*rect); + unsigned i; + + // one daybox = boxh*boxw is unit of size + int boxh = hh / 10; + int boxw = ww / 7; + + // rounding dimensions to a whole number of boxes + ww = boxw * 7; + hh = hh / boxh * boxh; // why not boxh * 10 ? + + // center horizontally inside this space + xx = xx + (w()-ww)/2+1; + +// if(xxdx()) xx=box()->dx(); //TODO: dx() is no longer available + + // resize header + m_headerBox->resize(xx, yy, ww, boxh*2+2); + m_monthNameBox->resize(xx, yy, ww, boxh); // month name is actually larger + + // resize column titles (Su, Mo, Tu...) + for (i=0; i < 7; i++) { + m_dayNameBoxes[i]->resize(boxw*i + xx, boxh + yy+2, boxw, boxh); // why +2 ? + } + + // compute the month start date + short year, month, day; + if ((double)m_todayDate < 1) m_todayDate = Fl_Date_Time::Now(); + if ((double)m_activeDate < 1) m_activeDate = m_todayDate; + m_activeDate.decode_date(&year,&month,&day); + Fl_Date_Time monthDate(year,month,1); + + // create month name label + char yearstr[4]; + snprintf(yearstr,4,"%d",year); + strncpy(m_headerLabel, monthDate.month_name(), 13); + strcat(m_headerLabel, ", "); + strcat(m_headerLabel, yearstr); + m_monthNameBox->label(m_headerLabel); + + // resize day buttons + int topOffset = boxh*2 + yy+2; + m_buttonBox->resize(xx, topOffset, boxw*7, boxh*6); // background + + int dayOffset = monthDate.day_of_week()-1; + int daysInMonth = monthDate.days_in_month(); + for (i = 0; i < 31; i++) { + Button *btn = m_dayButtons[i]; + btn->resize(dayOffset*boxw + xx, topOffset, boxw, boxh); // 32 = header; bh = daynameboxes + if ((int)i < daysInMonth) { + dayOffset++; + if (dayOffset > 6) { + dayOffset = 0; + topOffset += boxh; + } + btn->show(); + } + else btn->hide(); + } + + int sby = m_buttonBox->y() + m_buttonBox->h(); + for (i = 0; i < 2; i++) + m_switchButtons[i]->resize(i*boxw + xx, sby, boxw, boxh); + + int x1 = ww - boxw * 2; + for (i = 2; i < 4; i++) { + m_switchButtons[i]->resize((i-2)*boxw + x1 + xx, sby, boxw, boxh); + } + + //Clear layout flags + Widget::layout(); +} + +void EDE_Calendar::draw() { + // Note - Fl_Calendar has fixed colors because themes could make it ugly or unreadable + // TODO: Improve this! + +// Color btn_color = color_average(buttoncolor(), WHITE, .4f); + //Color btn_color_hl = color_average(buttoncolor(), GRAY75, .5f); + + //Color btn_color = lerp(buttoncolor(), WHITE, .4f); + Color btn_color = fltk::color(255,255,204); // light yellowish grey a la paper - don't remove fltk:: ! + Color btn_color_hl = WHITE; + Color label_color = BLACK; + Color day_color = lerp(BLUE, GRAY85, .8f); + Color day_color_wknd = lerp(BLUE, WHITE, .9f); // light reddish gray + + unsigned i; + + short year, month, day; + m_activeDate.decode_date(&year,&month,&day); + short activeindex = day-1; + short tyear, tmonth, tday; + m_todayDate.decode_date(&tyear,&tmonth,&tday); + short todayindex = tday-1; + if (tyear != year || tmonth != month) todayindex=-1; + + + for (i = 0; i < 31; i++) { + Button *btn = m_dayButtons[i]; + btn->box(THIN_UP_BOX); + btn->focusbox(DOTTED_FRAME); + btn->color(btn_color); +// btn->highlight_color(btn_color_hov); + btn->labelfont(labelfont()); + btn->labelcolor(label_color); + btn->labelsize(labelsize()); + if((int)i==activeindex) { + btn->box(FLAT_BOX); + btn->color(btn_color_hl); + } + if((int)i==todayindex) { + //btn->box(BORDER_FRAME); + // TODO: why is this rectangle drawn behind button? +// setcolor((Color)RED); +// drawline(btn->x(),btn->y(),btn->x(),btn->y()+btn->h()); +// drawline(btn->x(),btn->y()+btn->h(),btn->x()+btn->w(),btn->y()+btn->h()); +// drawline(btn->x()+btn->w(),btn->y()+btn->h(),btn->x()+btn->w(),btn->y()); +// drawline(btn->x()+btn->w(),btn->y(),btn->x(),btn->y()); + + btn->focusbox(BORDER_FRAME); + // How do I make a red frame? apparently not possible +// btn->textcolor(RED); + focus(btn); + } + } + + for (i = 0; i < 4; i++) { + m_switchButtons[i]->box(FLAT_BOX); + m_switchButtons[i]->color(WHITE); + m_switchButtons[i]->labelcolor(BLACK); + m_switchButtons[i]->highlight_color(GRAY75); + m_switchButtons[i]->labelsize(labelsize()); + } + + for (i=0; i < 7; i++) { + m_dayNameBoxes[i]->box(buttonbox()); + m_dayNameBoxes[i]->color(day_color); + m_dayNameBoxes[i]->labelcolor(label_color); + m_dayNameBoxes[i]->labelsize(labelsize()); + if(i==0 || i==6) + m_dayNameBoxes[i]->color(day_color_wknd); +// m_dayNameBoxes[i]->labelcolor(RED); + } + + m_monthNameBox->labelfont(textfont()); + m_monthNameBox->labelsize(textsize()); + m_monthNameBox->labelcolor(textcolor()); + +// m_buttonBox->color(darker(buttoncolor())); + m_buttonBox->color(lerp(buttoncolor(),BLACK,.67f)); + + Group::draw(); +} + +void EDE_Calendar::measure(int& ww,int& hh) const { + ww = (w() / 7) * 7; + hh = (h() / 10) * 10; +} + +void EDE_Calendar::date(Fl_Date_Time dt) { + m_todayDate = dt; + m_activeDate = dt; + + short year, month, day; + m_todayDate.decode_date(&year,&month,&day); + focus(m_dayButtons[day-1]); + + relayout(); + redraw(); +} + +Fl_Date_Time EDE_Calendar::date() const { + short year, month, day; + m_todayDate.decode_date(&year,&month,&day); + return Fl_Date_Time(year, month, day); +} + +//------------------------------------------------------------------------------------------------------ + +/* Fl_Popup_Calendar - we lack Fl_Popup_Window to make this work... maybe later + +static void popup_revert(Style* s) +{ + s->color = GRAY75; + s->buttoncolor = GRAY75; + s->box = BORDER_BOX; + s->buttonbox = THIN_UP_BOX; + s->font = HELVETICA_BOLD; +} + +static NamedStyle popup_style("Popup_Calendar", popup_revert, &Fl_Popup_Calendar::default_style); +NamedStyle* Fl_Popup_Calendar::default_style = &::popup_style; + +void cb_clicked(Widget *w, void *d) { + Window *win = w->window(); + if(win) { + win->set_value(); + win->hide(); + } + Fl::exit_modal(); //Just in case :) +} + +Fl_Popup_Calendar::Fl_Popup_Calendar(Widget *dateControl) + : Fl_Popup_Window(150,150,"Calendar") +{ + style(default_style); + m_dateControl = dateControl; + m_calendar = new Fl_Calendar(0,0,w(),h()); + m_calendar->callback(cb_clicked); + m_calendar->box(NO_BOX); + m_calendar->copy_style(style()); + + end(); +} + +void Fl_Popup_Calendar::draw() +{ + m_calendar->copy_style(style()); + Fl_Popup_Window::draw(); +} + +void Fl_Popup_Calendar::layout() { + m_calendar->resize(box()->dx(),box()->dy(),w()-box()->dw(),h()-box()->dh()); + m_calendar->layout(); + Fl_Popup_Window::layout(); +} + +bool Fl_Popup_Calendar::popup() { + if (m_dateControl) { + int width = m_dateControl->w(); + if (width < 175) width = 175; + int X=0, Y=0; + for(Widget* w = m_dateControl; w; w = w->parent()) { + X += w->x(); + Y += w->y(); + } + int height = 160; + m_calendar->size(width,height); + m_calendar->measure(width,height); + + resize(X, Y+m_dateControl->h()-1, width+box()->dw(), height+box()->dh()); + } + return Fl_Popup_Window::show_popup(); +} + +bool Fl_Popup_Calendar::popup(Widget *dateControl, int X, int Y, int W, int H) { + if(dateControl) { + int width = (W>0) ? W : dateControl->w(); + if (width < 175) width = 175; + int height = (H>0) ? H : 175; + if (height < 175) height = 175; + for(Widget* w = m_dateControl; w; w = w->parent()) { + X += w->x(); + Y += w->y(); + } + resize(X, Y, width, height); + } + return Fl_Popup_Window::show_popup(); +} + + +int Fl_Popup_Calendar::handle(int event) { + int rc = Fl_Popup_Window::handle(event); + + if (rc) return rc; + + return m_calendar->handle(event); +}*/ diff --git a/etimedate/EDE_Calendar.h b/etimedate/EDE_Calendar.h new file mode 100755 index 0000000..52d57e0 --- /dev/null +++ b/etimedate/EDE_Calendar.h @@ -0,0 +1,111 @@ +/* + * $Id: Fl_Calendar.h,v 1.7 2003/04/05 20:44:12 parshin Exp $ + * + * Extended Fast Light Toolkit (EFLTK) + * Copyright (C) 2002-2003 by EDE-Team + * WWW: http://www.sourceforge.net/projects/ede + * + * Fast Light Toolkit (FLTK) + * Copyright (C) 1998-2003 by Bill Spitzak and others. + * WWW: http://www.fltk.org + * + * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE + * version 2. See COPYING for details. + * + * Author : Alexey Parshin + * Email : alexey@fltk.net + * + * Please report all bugs and problems to "efltk-bugs@fltk.net" + * + */ +// +// Ported to FLTK2 by Vedran Ljubovic , 2005. + +#ifndef _EDE_CALENDAR_H_ +#define _EDE_CALENDAR_H_ + +/* +#include +#include +#include +#include +#include */ + +#include "Fl_Date_Time.h" +#include +#include +#include +#include + +/** Fl_Calendar */ +class EDE_Calendar : public fltk::Group { +public: + static fltk::NamedStyle* default_style; + + /** The traditional constructor creates the calendar using the position, size, and label. */ + EDE_Calendar(int x,int y,int w,int h,const char *lbl=0L); + + /** The new style constructor creates the calendar using the label, size, alignment, and label_width. */ +// Fl_Calendar(const char* l = 0,int layout_size=30,fltk::Align layout_al=fltk::ALIGN_TOP,int label_w=100); + + virtual void layout(); + virtual void draw(); + virtual void measure(int& w,int& h) const; + + virtual void reset() { date(Fl_Date_Time::Now()); } + + void date(Fl_Date_Time dt); + Fl_Date_Time date() const; + + void dayButtonClicked(unsigned day); + void dayButtonChanged(unsigned day); + void switchButtonClicked(int monthChange); + +private: + static void cbDayButtonClicked(fltk::Widget *,void *); + static void cbSwitchButtonClicked(fltk::Widget *,void *); + + fltk::Group *m_headerBox; + fltk::Group *m_buttonBox; + fltk::InvisibleBox *m_monthNameBox; + fltk::InvisibleBox *m_dayNameBoxes[7]; + fltk::Button *m_dayButtons[31]; + fltk::Button *m_switchButtons[4]; + Fl_Date_Time m_todayDate; + Fl_Date_Time m_activeDate; + int m_globalx, m_globaly; + char m_headerLabel[20]; // month+year shouldn't get larger in any locale + + + void ctor_init(int x,int y,int w,int h); +}; + +/* We lack Fl_Popup_Window to make this work... Maybe later... + +class Fl_Popup_Calendar : public Fl_Popup_Window { +public: + static fltk::NamedStyle* default_style; + + Fl_Popup_Calendar(fltk::Widget *dateControl=NULL); + + Fl_Calendar *calendar() { return m_calendar; } + + void clicked() { set_value(); } + void layout(); + void draw(); + int handle(int); + + void date(Fl_Date_Time dt) { m_calendar->date(dt); } + Fl_Date_Time date() const { return m_calendar->date(); } + + bool popup(); + // Popup calendar, relative to widget + bool popup(fltk::Widget *dateControl, int X, int Y, int W=0, int H=0); + +private: + friend class Fl_Calendar; + Fl_Calendar *m_calendar; + fltk::Widget *m_dateControl; +};*/ + +#endif diff --git a/etimedate/Fl_Date_Time.cpp b/etimedate/Fl_Date_Time.cpp new file mode 100755 index 0000000..d2077ef --- /dev/null +++ b/etimedate/Fl_Date_Time.cpp @@ -0,0 +1,735 @@ +/*************************************************************************** + Fl_Date_Time.cpp - description + ------------------- + begin : Tue Dec 14 1999 + copyright : (C) 1999 by Alexey Parshin + email : alexeyp@m7.tts-sf.com + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ +// +// Ported to FLTK2 by Vedran Ljubovic , 2005. + +//#include +//#include + +/*#include +#include */ + +#include "Fl_Date_Time.h" + +// For NLS stuff +//#include "../core/fl_internal.h" +#include "../edelib2/NLS.h" +#include + +#include +#include +#include +#include + +#ifndef _WIN32 +# include +#else +# include +#endif + +static const char *dayname[] = { + "Sunday", "Monday", "Tuesday", "Wednesday", + "Thursday", "Friday", "Saturday" +}; + +static const char *mname[] = { + "January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December" +}; + +static const short _monthDays[2][12] = { + {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, + {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} //Leap year +}; + +static const short _monthDaySums[2][12] = { + {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}, + {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335} //Leap year +}; + +#define DateDelta 693594 + +char Fl_Date_Time::dateInputFormat[32]; +char Fl_Date_Time::timeInputFormat[32]; +char Fl_Date_Time::dateFormat[32]; +char Fl_Date_Time::datePartsOrder[4]; +char Fl_Date_Time::timeFormat[32]; +bool Fl_Date_Time::time24Mode; +char Fl_Date_Time::dateSeparator; +char Fl_Date_Time::timeSeparator; +double Fl_Date_Time::dateTimeOffset; + +static void upperCase(char *dest, const char *src, int dest_len) { + int i = 0; + int len = strlen(src); + if(len>dest_len) len=dest_len; //No buffer overflow. + for (; i < len; i++) + dest[i] = (char)toupper( src[i] ); + dest[i] = '\0'; +} + +static int trimRight(char *s) { + int len = strlen(s); + while( (len--) >= 0) { + if( (unsigned char)s[len] > 32 ) { + len++; + s[len] = '\0'; + break; + } + } + return len; +} + +static char parseDateOrTime(char *format,char *dt) { + char separator[] = " "; + + // Cut-off trailing non-digit characters + int len = strlen(dt); + char *ptr = dt + len - 1; + while (!isdigit(*ptr)) ptr--; + *(ptr+1) = 0; + // find a separator char + ptr = dt; + while (isalnum(*ptr) || *ptr == ' ') ptr++; + separator[0] = *ptr; + ptr = strtok(dt,separator); + strcpy(format,""); + + const char *pattern; + while (ptr) { + int number = atoi(ptr); + switch (number) { + case 10: pattern = "HH"; // hour (12-hour mode) + Fl_Date_Time::time24Mode = false; + break; + case 22: pattern = "HH"; // hour (24-hour mode) + Fl_Date_Time::time24Mode = true; + break; + case 48: pattern = "NN"; // minute + break; + case 59: pattern = "SS"; // second + break; + case 17: pattern = "DD"; // day + strcat(Fl_Date_Time::datePartsOrder,"D"); + break; + case 6: pattern = "MM"; // month + strcat(Fl_Date_Time::datePartsOrder,"M"); + break; + case 2000: + case 0: pattern = "YYYY"; // year + strcat(Fl_Date_Time::datePartsOrder,"Y"); + break; + default: pattern = NULL; break; + } + if (pattern) { + strcat(format,pattern); + strcat(format,separator); + } + ptr = strtok(NULL,separator); + } + len = strlen(format); + if (len) + format[len-1] = 0; + + return separator[0]; +} + +class Fl_Date_Time_Format { +public: + Fl_Date_Time_Format(); +}; + +static void buildDateInputFormat() { + Fl_Date_Time::dateInputFormat[0] = 0; + char separator[] = { Fl_Date_Time::dateSeparator, 0 }; + for (int i = 0; i < 3; i++) + switch (Fl_Date_Time::datePartsOrder[i]) { + case 'D': strcat(Fl_Date_Time::dateInputFormat,"39\\"); + strcat(Fl_Date_Time::dateInputFormat,separator); + break; + case 'M': strcat(Fl_Date_Time::dateInputFormat,"19\\"); + strcat(Fl_Date_Time::dateInputFormat,separator); + break; + case 'Y': strcat(Fl_Date_Time::dateInputFormat,"2999\\"); + strcat(Fl_Date_Time::dateInputFormat,separator); + break; + } + int len = strlen(Fl_Date_Time::dateInputFormat); + if (len) + Fl_Date_Time::dateInputFormat[len-2] = 0; +} + +static void buildTimeInputFormat() { + if (Fl_Date_Time::time24Mode) + strcpy(Fl_Date_Time::timeInputFormat,"29\\:59"); + else strcpy(Fl_Date_Time::timeInputFormat,"19\\:59T\\M"); +} + +Fl_Date_Time_Format::Fl_Date_Time_Format() { + char dateBuffer[32]; + char timeBuffer[32]; + // make a special date and time - today :) + struct tm t; + t.tm_year = 100; // since 1900, -> 2000 + t.tm_mon = 5; // June (January=0) + t.tm_mday = 17; + t.tm_hour = 22; + t.tm_min = 48; + t.tm_sec = 59; + + t.tm_wday = 0; // Sunday + + // Build local data and time + strftime(timeBuffer,32,"%X",&t); + strftime(dateBuffer,32,"%x",&t); + + // Build local date and time formats + Fl_Date_Time::datePartsOrder[0] = 0; + Fl_Date_Time::time24Mode = false; // to be determined below + Fl_Date_Time::dateSeparator = parseDateOrTime(Fl_Date_Time::dateFormat,dateBuffer); + Fl_Date_Time::timeSeparator = parseDateOrTime(Fl_Date_Time::timeFormat,timeBuffer); + if (!Fl_Date_Time::time24Mode) + strcat(Fl_Date_Time::timeFormat,"AM"); + buildDateInputFormat(); + buildTimeInputFormat(); +} + +// This is the only instance to Fl_Date_Time_Format. +static Fl_Date_Time_Format dateFormat; + +bool Fl_Date_Time::is_leap_year(const short year) { + return ((year&3) == 0 && year%100 != 0 || year%400 == 0); +} + +void Fl_Date_Time::encode_date(double &dt,short year,short month,short day) { + if (year == 0 && month == 0 && day == 0) { + dt = 0; + return; + } + if (month < 1 || month > 12) { + dt = 0; + return; + } + int yearKind = is_leap_year(year); + if (day < 1 || day > _monthDays[yearKind][month-1]) { + dt = 0; + return; + } + + if (year <= 0 || year > 9999) { + dt = 0; + return; + } + + day += _monthDaySums[yearKind][month-1]; + int i = year - 1; + dt = i * 365 + i / 4 - i / 100 + i / 400 + day - DateDelta; +} + +void Fl_Date_Time::encode_date(double &dt,const char *dat) { + char bdat[64]; + short datePart[7], partNumber = 0; + char *ptr = NULL; + int i; + + memset(datePart,0,sizeof(datePart)); + upperCase(bdat, dat, sizeof(bdat)); + + if (strcmp(bdat,"TODAY") == 0) { + dt = Date(); // Sets the current date + return; + } else { + int len = strlen(bdat); + for(i = 0; i <= len && partNumber < 7; i++) { + char c = bdat[i]; + if (c == dateSeparator || c == timeSeparator || c == ' ' || c == 0) { + if (c == timeSeparator && partNumber < 3) partNumber = 3; + if (ptr) { // end of token + bdat[i] = 0; + datePart[partNumber] = (short)atoi(ptr); + partNumber++; + ptr = NULL; + } + } else { + if (!isdigit(c)) { + dt = 0; + return; + } + if (!ptr) ptr = bdat + i; + } + } + if (partNumber < 3) { // Not enough date parts + dt = 0; + return; + } + short month=0, day=0, year=0; + for(i = 0; i < 3; i++) + switch (datePartsOrder[i]) { + case 'M': month = datePart[i]; break; + case 'D': day = datePart[i]; break; + case 'Y': year = datePart[i]; break; + } + if (year < 100) { + if (year < 35) year = short(year + 2000); + else year = short(year + 1900); + } + double dd; + encode_date(dd,year,month,day); + if (partNumber > 3) { // Time part included into string + double d; + encode_time(d,datePart[3],datePart[4],datePart[5],datePart[6]); + dd += d; + } + dt = dd; + + } +} + +void Fl_Date_Time::encode_time(double& dt,short h,short m,short s,short ms) { + dt = (h + ((m + (s + ms / 100.0) / 60.0) / 60.0)) / 24.0; +} + +void Fl_Date_Time::encode_time(double& dt,const char *tim) { + char bdat[32]; + short timePart[4] = { 0, 0, 0, 0}, + partNumber = 0; + char *ptr = NULL; + bool afternoon = false; + + upperCase(bdat, tim, sizeof(bdat)); + + if (!trimRight(bdat)) { + dt = 0; + return; + } + + if (strcmp(bdat,"TIME") == 0) { + dt = Time(); // Sets the current date + return; + } else { + char *p = strstr(bdat,"AM"); + if (p) { + *p = 0; + } else { + p = strstr(bdat,"PM"); + if (p) { + *p = 0; + afternoon = true; + } + } + trimRight(bdat); + int len = strlen(bdat); + for (int i = 0; i <= len && partNumber < 4; i++) { + char c = bdat[i]; + if (c == timeSeparator || c == ' ' || c == '.' || c == 0) { + if (ptr) { // end of token + bdat[i] = 0; + timePart[partNumber] = (short) atoi(ptr); + partNumber++; + ptr = NULL; + } + } else { + if (!isdigit(c)) { + dt = 0; + return; + } + if (!ptr) ptr = bdat + i; + } + } + if (afternoon && timePart[0] != 12) + timePart[0] = short(timePart[0] + 12); + encode_time(dt,timePart[0],timePart[1],timePart[2],timePart[3]); + } +} + +const int S1 = 24 * 60 * 60; // seconds in 1 day + +void Fl_Date_Time::decode_time(const double dt,short& h,short& m,short& s,short& ms) { + double t = dt - (int) dt; + + int secs = int(t * S1 + 0.5); + h = short(secs / 3600); + secs = secs % 3600; + m = short(secs / 60); + secs = secs % 60; + s = short(secs); + ms = 0; +} + +const int D1 = 365; // Days in 1 year +const int D4 = D1 * 4 + 1; // Days in 4 years +const int D100 = D4 * 25 - 1; // Days in 100 years +const int D400 = D100 * 4 + 1; // Days in 400 years + +static void DivMod(int op1, int op2, int& div, int& mod) { + div = op1 / op2; + mod = op1 % op2; +} + +void Fl_Date_Time::decode_date(const double dat, short& year, short& month, short& day) { + int Y, M, D, I; + int T = (int) dat + DateDelta; + + T--; + Y = 1; + while (T >= D400) { + T -= D400; + Y += 400; + } + + DivMod(T, D100, I, D); + if (I == 4) { + I--; + D += D100; + } + + Y += I * 100; + DivMod(D, D4, I, D); + Y += I * 4; + DivMod(D, D1, I, D); + if (I == 4) { + I--; + D += D1; + } + Y += I; + year = Y; + //year = short (Y + 1900); + + int leapYear = is_leap_year(short(year)); + for (M = 0;;M++) { + I = _monthDays[leapYear][M]; + if (D < I) + break; + D -= I; + } + + month = short (M + 1); + day = short (D + 1); +} + +//---------------------------------------------------------------- +// Constructors +//---------------------------------------------------------------- +Fl_Date_Time::Fl_Date_Time (short year,short month,short day,short hour,short minute,short second) { + double t; + int i; + // NLS stuff + for (i=0; i<7;i++) dayname[i]=_(dayname[i]); + for (i=0; i<12;i++) mname[i]=_(mname[i]); + + encode_date(m_dateTime,year,month,day); + encode_time(t,hour,minute,second); + m_dateTime += t; +} + +Fl_Date_Time::Fl_Date_Time (const char * dat) { + + int i; + // NLS stuff + for (i=0; i<7;i++) dayname[i]=_(dayname[i]); + for (i=0; i<12;i++) mname[i]=_(mname[i]); + + char* s1 = strdup(dat);//( Fl_String(dat).trim() ); + // TODO: s1.trim() + char* s2; + + if (!*dat) { + m_dateTime = 0; + return; + } + s1 = strtok(s1, " "); + char* p = strtok(NULL, " "); + if (p != NULL) { + s2 = strdup(p+1); + if (strlen(s2)>21) s2[21] = '\0'; + // TODO: s2.trim() + // s1[p] = '\0'; - strtok() already did that + } + if ( strchr(s1,dateSeparator) ) { + encode_date(m_dateTime, s1); + if ( strchr(s2,timeSeparator) ) { + double dt; + encode_time(dt, s2); + m_dateTime += dt; + } + } + else encode_time(m_dateTime, s1); +} + +Fl_Date_Time::Fl_Date_Time (const Fl_Date_Time &dt) { + int i; + // NLS stuff + for (i=0; i<7;i++) dayname[i]=_(dayname[i]); + for (i=0; i<12;i++) mname[i]=_(mname[i]); + + m_dateTime = dt.m_dateTime; +} + +Fl_Date_Time::Fl_Date_Time (const double dt) { + int i; + // NLS stuff + for (i=0; i<7;i++) dayname[i]=_(dayname[i]); + for (i=0; i<12;i++) mname[i]=_(mname[i]); + + m_dateTime = dt; +} +//---------------------------------------------------------------- +// Assignments +//---------------------------------------------------------------- +void Fl_Date_Time::operator = (const Fl_Date_Time &dt) { + m_dateTime = dt.m_dateTime; +} + +void Fl_Date_Time::operator = (const char * dat) { + encode_date(m_dateTime, dat); +} + +//---------------------------------------------------------------- +// Conversion operations +//---------------------------------------------------------------- +// Fl_Date_Time::operator int (void) { return (int) dateTime; } + +Fl_Date_Time::operator double (void) const { return m_dateTime; } + +//---------------------------------------------------------------- +// Date Arithmetic +//---------------------------------------------------------------- +Fl_Date_Time Fl_Date_Time::operator + (int i) { + return Fl_Date_Time(m_dateTime + i); +} + +Fl_Date_Time Fl_Date_Time::operator - (int i) { + return Fl_Date_Time(m_dateTime - i); +} + +Fl_Date_Time Fl_Date_Time::operator + (Fl_Date_Time& dt) { + return Fl_Date_Time(m_dateTime + dt.m_dateTime); +} + +Fl_Date_Time Fl_Date_Time::operator - (Fl_Date_Time& dt) { + return Fl_Date_Time(m_dateTime - dt.m_dateTime); +} + +Fl_Date_Time& Fl_Date_Time::operator += (int i) { + m_dateTime += i; + return *this; +} + +Fl_Date_Time& Fl_Date_Time::operator -= (int i) { + m_dateTime -= i; + return *this; +} + +Fl_Date_Time& Fl_Date_Time::operator += (Fl_Date_Time& dt) { + m_dateTime += dt.m_dateTime; + return *this; +} + +Fl_Date_Time& Fl_Date_Time::operator -= (Fl_Date_Time& dt) { + m_dateTime -= dt.m_dateTime; + return *this; +} + +Fl_Date_Time& Fl_Date_Time::operator ++() { + m_dateTime += 1; + return *this; +} + +Fl_Date_Time &Fl_Date_Time::operator ++(int) { + m_dateTime += 1; + return *this; +} + +Fl_Date_Time &Fl_Date_Time::operator --() { + m_dateTime -= 1; + return *this; +} + +Fl_Date_Time &Fl_Date_Time::operator --(int) { + m_dateTime -= 1; + return *this; +} + +//---------------------------------------------------------------- +// Format routine +//---------------------------------------------------------------- +void Fl_Date_Time::format_date (char *str) const { + char *ptr = str; + short month, day, year; + + if (m_dateTime == 0) { + *str = 0; + return; + } + decode_date(m_dateTime,year,month,day); + for (int i = 0; i < 3; i++) { + switch (datePartsOrder[i]) { + case 'M': sprintf(ptr,"%02i%c",month,dateSeparator); + break; + case 'D': sprintf(ptr,"%02i%c",day,dateSeparator); + break; + case 'Y': sprintf(ptr,"%04i%c",year,dateSeparator); + break; + } + ptr += strlen(ptr); + } + *(ptr-1) = 0; +} + +void Fl_Date_Time::format_time (char *str,bool ampm) const { + short h,m,s,ms; + + if (m_dateTime == 0) { + *str = 0; + return; + } + decode_time(m_dateTime,h,m,s,ms); + if (ampm) { + char format[] = "%02i%c%02iAM"; + if (h > 11) format[10] = 'P'; + sprintf(str,format,h%12,timeSeparator,m); + } + else sprintf(str,"%02i%c%02i%c%02i",h,timeSeparator,m,timeSeparator,s); +} +//---------------------------------------------------------------- +// Miscellaneous Routines +//---------------------------------------------------------------- +short Fl_Date_Time::day_of_year( void ) const { + Fl_Date_Time temp( 1, 1, year() ); + + return (short) (m_dateTime - temp.m_dateTime); +} + +Fl_Date_Time Fl_Date_Time::convert(const long tt) { + struct tm *t = localtime((time_t*)&tt); + double dat,tim; + encode_date(dat,short(t->tm_year+1900),short(t->tm_mon+1),short(t->tm_mday)); + encode_time(tim,short(t->tm_hour),short(t->tm_min),short(t->tm_sec),short(0)); + return dat + tim; +} + +#ifdef _WIN32 +#define FILETIME_1970 0x019db1ded53e8000 +const BYTE DWLEN = sizeof(DWORD) * 8; +/* Code ripped from some xntp implementation on http://src.openresources.com. */ +long get_usec() +{ + FILETIME ft; + __int64 msec; + GetSystemTimeAsFileTime(&ft); + msec = (__int64) ft.dwHighDateTime << DWLEN | ft.dwLowDateTime; + msec = (msec - FILETIME_1970) / 10; + return (long) (msec % 1000000); +} +#endif + +// Get the current system time +Fl_Date_Time Fl_Date_Time::System() { + time_t tt; + time(&tt); + double datetime = convert(tt); +#ifndef _WIN32 + timeval tp; + gettimeofday(&tp,0L); + double mcsec = tp.tv_usec / 1000000.0 / (3600 * 24); +#else + // This works now! + double mcsec = get_usec() / 1000000.0 / (3600 * 24); +#endif + return datetime + mcsec; +} + +// Get the current system time with optional synchronization offset +Fl_Date_Time Fl_Date_Time::Now() { + return (double)Fl_Date_Time::System() + Fl_Date_Time::dateTimeOffset; +} + +// Set the synchronization offset +void Fl_Date_Time::Now(Fl_Date_Time dt) { + Fl_Date_Time::dateTimeOffset = (double)dt - (double)Fl_Date_Time::System(); +} + +Fl_Date_Time Fl_Date_Time::Date() { + double dat = Now(); + return double(int(dat)); +} + +Fl_Date_Time Fl_Date_Time::Time() { + double dat = Now(); + return dat - int(dat); +} + +short Fl_Date_Time::days_in_month() const { + short y, m, d; + decode_date(m_dateTime,y,m,d); + return _monthDays[is_leap_year(y)][m-1]; +} + +unsigned Fl_Date_Time::date() const { + return unsigned(m_dateTime); +} + +short Fl_Date_Time::day() const { + short y, m, d; + decode_date(m_dateTime,y,m,d); + return d; +} + +short Fl_Date_Time::month() const { + short y, m, d; + decode_date(m_dateTime,y,m,d); + return m; +} + +short Fl_Date_Time::year() const { + short y, m, d; + decode_date(m_dateTime,y,m,d); + return y; +} + +short Fl_Date_Time::day_of_week (void) const { + return short((int(m_dateTime) - 1) % 7 + 1); +} + +char* Fl_Date_Time::day_name (void) const { + return strdup(dayname[day_of_week() - 1]); +} + +char* Fl_Date_Time::month_name() const { + return strdup(mname[month()-1]); +} + +char* Fl_Date_Time::date_string() const { + char buffer[32]; + format_date(buffer); + return strdup(buffer); +} + +char* Fl_Date_Time::time_string() const { + char buffer[32]; + format_time(buffer,!time24Mode); + return strdup(buffer); +} + +void Fl_Date_Time::decode_date(short *y,short *m,short *d) const { + decode_date(m_dateTime,*y,*m,*d); +} + +void Fl_Date_Time::decode_time(short *h,short *m,short *s,short *ms) const { + decode_time(m_dateTime,*h,*m,*s,*ms); +} + diff --git a/etimedate/Fl_Date_Time.h b/etimedate/Fl_Date_Time.h new file mode 100755 index 0000000..8754340 --- /dev/null +++ b/etimedate/Fl_Date_Time.h @@ -0,0 +1,120 @@ +/* + * $Id: Fl_Date_Time.h,v 1.11 2003/03/15 16:09:55 laza2000 Exp $ + * + * Extended Fast Light Toolkit (EFLTK) + * Copyright (C) 2002-2003 by EDE-Team + * WWW: http://www.sourceforge.net/projects/ede + * + * Fast Light Toolkit (FLTK) + * Copyright (C) 1998-2003 by Bill Spitzak and others. + * WWW: http://www.fltk.org + * + * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE + * version 2. See COPYING for details. + * + * Author : Alexey Parshin + * Email : alexey@fltk.net + * + * Please report all bugs and problems to "efltk-bugs@fltk.net" + * + */ +// +// Ported to FLTK2 by Vedran Ljubovic , 2005. + +#ifndef _FL_DATE_TIME_H_ +#define _FL_DATE_TIME_H_ + +/*#include "Fl_Export.h" +#include "Fl_String.h"*/ + +/** Fl_Date_Time */ +class Fl_Date_Time { +public: + static char dateInputFormat[32]; + static char timeInputFormat[32]; + static char dateFormat[32]; + static char timeFormat[32]; + static char datePartsOrder[4]; + static char dateSeparator; + static char timeSeparator; + static bool time24Mode; + + Fl_Date_Time (short y,short m,short d,short hour=0,short minute=0,short second=0); + Fl_Date_Time (const char * dat); + Fl_Date_Time (const Fl_Date_Time &dt); + Fl_Date_Time (const double dt=0); + + static Fl_Date_Time convert (const long); + + void format_date(char *str) const; + void format_time(char *str, bool ampm=true) const; + + // These functions don't affect the actual system time. + // You can only alter the time for the current program. + static void Now(Fl_Date_Time dt); // Sets to current date and time + static Fl_Date_Time System(); // Gets to current system date and time + static Fl_Date_Time Now(); // Gets to current date and time + static Fl_Date_Time Date(); // Gets to current date + static Fl_Date_Time Time(); // Gets to current time + + short days_in_month() const; // Number of days in month (1..31) + short day_of_week() const; // (1..7) + short day_of_year() const; // returns relative date since Jan. 1 + + char* day_name() const; // Character Day Of Week ('Sunday'..'Saturday') + char* month_name() const; // Character Month name + + unsigned date() const; // Numeric date of date object + short day() const; // Numeric day of date object + short month() const; // Month number (1..12) + short year() const; + + char* date_string() const; + char* time_string() const; + + void decode_date(short *y,short *m,short *d) const; + void decode_time(short *h,short *m,short *s,short *ms) const; + + operator double (void) const; + + void operator = (const Fl_Date_Time& date); + void operator = (const char * dat); + + Fl_Date_Time operator + (int i); + Fl_Date_Time operator - (int i); + Fl_Date_Time operator + (Fl_Date_Time& dt); + Fl_Date_Time operator - (Fl_Date_Time& dt); + + Fl_Date_Time& operator += (int i); + Fl_Date_Time& operator -= (int i); + Fl_Date_Time& operator += (Fl_Date_Time& dt); + Fl_Date_Time& operator -= (Fl_Date_Time& dt); + + Fl_Date_Time& operator ++ (); // Prefix increment + Fl_Date_Time& operator ++ (int); // Postfix increment + Fl_Date_Time& operator -- (); // Prefix decrement + Fl_Date_Time& operator -- (int); // Postfix decrement + + static void decode_date(const double dt,short& y,short& m,short& d); + static void decode_time(const double dt,short& h,short& m,short& s,short& ms); + static void encode_date(double &dt,short y=0,short m=0,short d=0); + static void encode_date(double &dt,const char *dat); + static void encode_time(double &dt,short h=0,short m=0,short s=0,short ms=0); + static void encode_time(double &dt,const char *tim); + static bool is_leap_year(const short year); + +protected: + double m_dateTime; + static double dateTimeOffset; // The offset from current' system time for synchronization + // with outside system +}; + +// Date comparison +static inline bool operator < (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 < (double)dt2 ); } +static inline bool operator <= (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 <= (double)dt2 ); } +static inline bool operator > (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 > (double)dt2 ); } +static inline bool operator >= (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 >= (double)dt2 ); } +static inline bool operator == (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 == (double)dt2 ); } +static inline bool operator != (const Fl_Date_Time &dt1, const Fl_Date_Time &dt2) { return ( (double)dt1 != (double)dt2 ); } + +#endif diff --git a/etimedate/Makefile b/etimedate/Makefile new file mode 100755 index 0000000..dee0db4 --- /dev/null +++ b/etimedate/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = ../edelib2/Util.cpp ../edelib2/Config.cpp ../edelib2/Run.cpp ../edelib2/process.cpp ../edelib2/pty.cpp etimedate.cpp TimeBox.cpp EDE_Calendar.cpp Fl_Date_Time.cpp +TARGET = etimedate + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/etimedate/TODO b/etimedate/TODO new file mode 100755 index 0000000..c04dc69 --- /dev/null +++ b/etimedate/TODO @@ -0,0 +1,17 @@ +TODO with etimedate: +* calendar +- review methods and add new, for better future usability +- create new doxygen documentation +- add ability to calculate difference between selected date and today +* clock +- redesign clock - use bitmaps for background and possibly hands +- add seconds to input and buttons +- use Date_Time class +- remove unnecessary methods, add new ones +- merge two boxes? +- make hands movable with mouse +* timezones +- add city coordinates (find in evolution / kde), draw current zone on map +- make map sensitive / hotspots on city coordinates +* Date_Time class +- new class \ No newline at end of file diff --git a/etimedate/TimeBox.cpp b/etimedate/TimeBox.cpp new file mode 100755 index 0000000..5453cae --- /dev/null +++ b/etimedate/TimeBox.cpp @@ -0,0 +1,461 @@ +// TimeBox.cxx +// Class that displays a clock with ability to set time +// Part of Equinox Desktop Environment (EDE) +// +// Based on Fl_Time.cxx +// Copyright (C) 2000 Softfield Research Ltd. +// +// Changes 02/09/2001 by Martin Pekar +// Ported to FLTK2 and redesigned by Vedran Ljubovic , 2005. +// +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +// TODO: Update from clock example in latest fltk2 test + +// Note V.Lj.: I don't think we need all of this, some code could be +// safely removed + +#include +#include +#include +#include + +#include +#include +#include "../edelib2/NLS.h" +#include +#include + +#include "etimedate.h" +#include "TimeBox.h" + + +// Constructor + +TimeBox::TimeBox(int x, int y, int w, int h, char *l) : fltk::Group(x, y, w, h, l) +{ + // Basic layout of TimeBox + // TODO: this should be part of draw() so that the widget could be resizable + int button_width; // button_height=button_width + int realx,realy,realh,realw; //realh = realw + realw/7 (buttons) + + if (h >= w * 8/7) { + realx = x; + realy = y + (h-(int)(w*8/7))/2; + realw = w; + realh = (int)w * 8/7; + } else { + realx = x + (w-(int)(h*7/8))/2; + realy = y; + realw = (int)h * 7/8; + realh = h; + } + button_width = (int)(realw/7); + + clock = new fltk::ClockOutput(realx, realy, realw, realw); + + input_time = new fltk::Input(realx, realy+realw, realw - button_width * 4, button_width, 0); + input_time->callback(input_changed_cb, this); + input_time->when(fltk::WHEN_CHANGED); +// input_time->textsize(12); + + button_decrease_hour = new fltk::Button(realx + realw - 4 * button_width, realy+realw + 2, button_width, button_width-4, "@-1<<"); + button_decrease_hour->callback(button_cb, this); + button_decrease_hour->labeltype(fltk::SYMBOL_LABEL); + button_decrease_hour->box(fltk::THIN_UP_BOX); +// button_decrease_hour->labelcolor(buttoncolor()); +// button_decrease_hour->highlight_color(fltk::color_average(buttoncolor(), fltk::GRAY, .5f)); + button_decrease_hour->highlight_color(fltk::lerp(buttoncolor(),fltk::WHITE,.67f)); // ex. fl_lighter() + + button_increase_hour = new fltk::Button(realx + realw - 3 * button_width, realy+realw + 2, button_width, button_width-4, "@-1>>"); + button_increase_hour->callback(button_cb, this); + button_increase_hour->labeltype(fltk::SYMBOL_LABEL); + button_increase_hour->box(fltk::THIN_UP_BOX); +// button_increase_hour->labelcolor(buttoncolor()); +// button_increase_hour->highlightcolor(fltk::color_average(buttoncolor(), fltk::GRAY, .5f)); + button_increase_hour->highlight_color(fltk::lerp(buttoncolor(),fltk::WHITE,.67f)); // ex. fl_lighter() + + button_decrease_minute = new fltk::Button(realx + realw - 2 * button_width, realy+realw + 2, button_width, button_width-4, "@-1<"); + button_decrease_minute->callback(button_cb, this); + button_decrease_minute->labeltype(fltk::SYMBOL_LABEL); + button_decrease_minute->box(fltk::THIN_UP_BOX); +// button_decrease_minute->labelcolor(buttoncolor()); +// button_decrease_minute->highlight_color(fltk::color_average(buttoncolor(), fltk::GRAY, .5f)); + button_decrease_minute->highlight_color(fltk::lerp(buttoncolor(),fltk::WHITE,.67f)); // ex. fl_lighter() + + button_increase_minute = new fltk::Button(realx + realw - button_width, realy+realw + 2, button_width, button_width-4, "@-1>"); + button_increase_minute->callback(button_cb, this); + button_increase_minute->labeltype(fltk::SYMBOL_LABEL); + button_increase_minute->box(fltk::THIN_UP_BOX); +// button_increase_minute->labelcolor(buttoncolor()); +// button_increase_minute->highlight_color(fltk::color_average(buttoncolor(), fltk::GRAY, .5f)); + button_increase_minute->highlight_color(fltk::lerp(buttoncolor(),fltk::WHITE,.67f)); // ex. fl_lighter() + + end(); + +//type(fltk::TIME_12HOUR); + // TODO: read this from current locale + type(TIMEBOX_24HOUR); + current_tv = (struct timeval*)malloc(sizeof(struct timeval)-1); + display_tv = (struct timeval*)malloc(sizeof(struct timeval)-1); + current_time(); +} + + +// dtor +TimeBox::~TimeBox() +{ + free(current_tv); + free(display_tv); +} + + +// Reset the clock to current system time + +void TimeBox::current_time() +{ + struct tm* display_time_tm; + + gettimeofday(current_tv, 0); + display_tv->tv_sec = current_tv->tv_sec; + display_tv->tv_usec = current_tv->tv_usec; + display_time_tm = localtime(¤t_tv->tv_sec); + + if(type() == TIMEBOX_24HOUR) strftime(time_string, 19, "%2H:%2M", display_time_tm); + else strftime(time_string, 19, "%2I:%2M %p", display_time_tm); + + input_time->value(time_string); + + // Start the clock and display current time + clock->value(display_tv->tv_sec); + add_timeout(1.0f); +} + + +// Update the clock each second + +int TimeBox::handle(int event) +{ + switch(event) { + case fltk::TIMEOUT: + { + struct timeval t; gettimeofday(&t, 0); + clock->value(t.tv_sec); + float delay = 1.0f-float(t.tv_usec)*.000001f; + if (delay < .1f || delay > .9f) delay = 1.0f; + add_timeout(delay); + } + break; + } + return clock->handle(event); // right? +} + + +// This apparently has the side effect of moving the clock relatively to +// the current time, e.g +// system time TimeBox +// before 1:00 1:02 +// after 1:03 1:05 +// etc. + +void TimeBox::refresh() +{ + long different; + + if (valid()) + { + different = - display_tv->tv_sec + current_tv->tv_sec; + gettimeofday(current_tv, 0); + + display_tv->tv_sec = current_tv->tv_sec - different; + redisplay(); + } +} + + +// Update the text input field + +void TimeBox::redisplay() +{ + struct tm *display_time_tm; + + display_time_tm = localtime(&display_tv->tv_sec); + + if(type() == TIMEBOX_24HOUR) strftime(time_string, 19, "%2H:%2M", display_time_tm); + else strftime(time_string, 19, "%2I:%2M %p", display_time_tm); + + input_time->value(time_string); +} + + +// Stop the clock and update it (move hands) + +void TimeBox::move_hands() +{ + struct tm *display_time_tm; + + display_time_tm = localtime(&display_tv->tv_sec); + + remove_timeout(); + clock->value(display_tv->tv_sec); +} + + +int TimeBox::hour() +{ + struct tm *display_time_tm; + + display_time_tm = localtime(&display_tv->tv_sec); + return display_time_tm->tm_hour; +} + + +int TimeBox::minute() +{ + struct tm *display_time_tm; + + display_time_tm = localtime(&display_tv->tv_sec); + return display_time_tm->tm_min; +} + + +void TimeBox::hour(int value) +{ + struct tm *display_time_tm; + + display_time_tm = localtime(&display_tv->tv_sec); + display_time_tm->tm_hour = value; + display_tv->tv_sec = mktime(display_time_tm); +} + + +void TimeBox::minute(int value) +{ + struct tm *display_time_tm; + + display_time_tm = localtime(&display_tv->tv_sec); + if(value < 0) + { + display_time_tm->tm_min = 59; + display_time_tm->tm_hour--; + } + else if(value >= 0 && value <= 59) + { + display_time_tm->tm_min = value; + } + else if (value > 59) + { + display_time_tm->tm_min = 0; + display_time_tm->tm_hour++; + } + display_time_tm->tm_sec = 0; + display_tv->tv_sec = mktime(display_time_tm); +} + + +void TimeBox::settime() +{ + struct tm *display_time_tm; + display_time_tm = localtime(&display_tv->tv_sec); + // return display_time_tm->tm_min; + time_t ct = mktime (display_time_tm); + if (stime(&ct)!=0) + fltk::alert(_("Error setting time. You are probably not superuser!")); +} + + +void TimeBox::value(int h, int m) +{ + hour(h); + minute(m); +} + + +bool TimeBox::valid() +{ + int h, m; + char a[5]; + + if(type() == TIMEBOX_12HOUR) + { + if (sscanf(input_time->value(), "%d:%d %s",&h, &m, a) == 3) + { + if (h >= 1 && h <= 12 && m >= 0 && m <= 59 && (strcasecmp(a, "am") == 0 || strcasecmp(a, "pm") == 0)) + { + last_valid = true; + return true; + } + } + } + else + { + if (sscanf(input_time->value(), "%d:%d",&h, &m) == 2) + { + if (h >= 0 && h <= 23 && m >= 0 && m <= 59) + { + last_valid = true; + return true; + } + } + } + last_valid = false; + return false; +} + + +void TimeBox::input_changed_cb(fltk::Widget* widget, void* data) +{ + TimeBox* t = (TimeBox*) data; + int h, m; + char a[5]; + + if (t->valid()) + { + if(t->type() == TIMEBOX_12HOUR) + { + sscanf(t->input_time->value(), "%d:%d %2s",&h, &m, a); + if(strcasecmp(a, "am") == 0) + { + if(h < 12) + { + t->hour(h); + } + else + { + t->hour(0); + } + } + else + { + if(h < 12) + { + t->hour(h + 12); + } + else + { + t->hour(12); + } + } + } + else + { + sscanf(t->input_time->value(), "%d:%d",&h, &m); + t->hour(h); + } + t->minute(m); + t->move_hands(); + } + t->do_callback(); +} + + +void TimeBox::button_cb(fltk::Widget* widget, void* data) +{ + TimeBox* t = (TimeBox*) data; + + if(widget == t->button_decrease_hour) + { + t->hour(t->hour()-1); + } + if (widget == t->button_decrease_minute) + { + t->minute(t->minute()-1); + } + if (widget == t->button_increase_minute) + { + t->minute(t->minute()+1); + } + if (widget == t->button_increase_hour) + { + t->hour(t->hour()+1); + } + t->redisplay(); + t->move_hands(); + t->do_callback(); +} + + +void TimeBox::textsize(int size) +{ + input_time->textsize(size); +} + + +void TimeBox::labelsize(int size) +{ + button_decrease_hour->labelsize(size); + button_decrease_minute->labelsize(size); + button_increase_minute->labelsize(size); + button_increase_hour->labelsize(size); + fltk::Group::labelsize(size); +} + + +void TimeBox::textfont(fltk::Font* font) +{ + input_time->textfont(font); +} + + +void TimeBox::labelfont(fltk::Font* font) +{ + button_decrease_hour->labelfont(font); + button_decrease_minute->labelfont(font); + button_increase_minute->labelfont(font); + button_increase_hour->labelfont(font); + fltk::Group::labelfont(font); +} + + +void TimeBox::textcolor(fltk::Color color) +{ + input_time->textcolor(color); +} + + +void TimeBox::labelcolor(fltk::Color color) +{ + button_decrease_hour->labelcolor(color); + button_decrease_minute->labelcolor(color); + button_increase_minute->labelcolor(color); + button_increase_hour->labelcolor(color); + fltk::Group::labelcolor(color); +} + + +int TimeBox::textsize() +{ + return (int)input_time->textsize(); +} + + +int TimeBox::labelsize() +{ + return (int)button_decrease_hour->labelsize(); +} + + +fltk::Font* TimeBox::labelfont() +{ + return button_decrease_hour->labelfont(); +} + + +fltk::Font* TimeBox::textfont() +{ + return input_time->textfont(); +} + + +fltk::Color TimeBox::labelcolor() +{ + return button_decrease_hour->labelcolor(); +} + + +fltk::Color TimeBox::textcolor() +{ + return input_time->textcolor(); +} diff --git a/etimedate/TimeBox.h b/etimedate/TimeBox.h new file mode 100755 index 0000000..3d5e6f6 --- /dev/null +++ b/etimedate/TimeBox.h @@ -0,0 +1,212 @@ +// TimeBox.h +// Class that displays a clock with ability to set time +// Part of Equinox Desktop Environment (EDE) +// +// Based on Fl_Time.h +// Copyright (C) 2000 Softfield Research Ltd. +// +// Changes 02/09/2001 by Martin Pekar +// Ported to FLTK2 and redesigned by Vedran Ljubovic , 2005. +// +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + + +#ifndef __TIME_WIDGET_H +#define __TIME_WIDGET_H + +#include "sys/time.h" + +#include +#include +#include +#include + +#include "../edelib2/NLS.h" + +#define TIMEBOX_24HOUR 0 +#define TIMEBOX_12HOUR 1 + +class TimeBox : public fltk::Group { + +public: + TimeBox(int x, int y, int w, int h, char *l=0); + ~TimeBox(); + + /** + * Gets the hour. + * + * @return The hour associated with this widget. + */ + int hour(); + + /** + * Sets the hour. + * + * @param hour The hour associated with this widget. + */ + void hour(int value); + + /** + * Gets the minute. + * + * @return The minute associated with this widget. + */ + int minute(); + + /** + * Sets the minute. + * + * @param minute The minute associated with this widget. + */ + void minute(int value); + + // Be sure to run this after using hour and min to change the clock value. + void redisplay(); + void move_hands(); + + /** + * Sets the minute and hour at the same time. + * + * @param minute The minute associated with this widget. + * @param hour The hour associated with this widget. + */ + void value(int h, int m); + + /** + * Sets the minute and hour to the system minute and hour. + */ + void current_time(); + + /** + * Refreshes the widget. + */ + void refresh(); + + /** + * Sets the size of the label text which is used for the M+, + * M-, Y+, and Y- labels. + * + * @param size The size of the label font. + */ + void labelsize(int size); + + /** + * Sets the label font which is used for the M+, + * M-, Y+, and Y- labels. + * + * @param font The label font. + */ + void labelfont(fltk::Font* font); + + /** + * Sets the label color which is used for the M+, + * M-, Y+, and Y- labels. + * + * @param font The label color. + */ + void labelcolor(fltk::Color color); + + /** + * Sets the size of the text which is used to display + * the set time. + * + * @param size The size of the text font. + */ + void textsize(int size); + + /** + * Sets the font of the text which is used to display + * the set time. + * + * @param font The font of the text font. + */ + void textfont(fltk::Font*); + + /** + * Sets the color of the text which is used to display + * the set time. + * + * @param color The color of the text font. + */ + void textcolor(fltk::Color); + + /** + * Gets the size of the label text which is used for the M+, + * M-, Y+, and Y- labels. + * + * @return The size of the label font. + */ + int labelsize(); + + /** + * Gets the label font which is used for the M+, + * M-, Y+, and Y- labels. + * + * @return The label font. + */ + fltk::Font* labelfont(); + + /** + * Gets the label color which is used for the M+, + * M-, Y+, and Y- labels. + * + * @return The label color. + */ + fltk::Color labelcolor(); + + /** + * Gets the size of the text which is used to display + * the set time. + * + * @return The size of the text font. + */ + int textsize(); + + /** + * Gets the font of the text which is used to display + * the set time. + * + * @return The font of the text font. + */ + fltk::Font* textfont(); + + /** + * Gets the color of the text which is used to display + * the set time. + * + * @return The color of the text font. + */ + fltk::Color textcolor(); + + /** + * Determines if the entered time is a recognized format. + * + * @return True if it is a valid time format, otherwise false. + */ + bool valid(); + + int handle(int); + void settime(); //just for superuser + +private: + fltk::ClockOutput *clock; + fltk::Button *button_decrease_hour; + fltk::Button *button_decrease_minute; + fltk::Input *input_time; + fltk::Button *button_increase_minute; + fltk::Button *button_increase_hour; + + struct timeval *current_tv; + struct timeval *display_tv; + char time_string[20]; + bool last_valid; + + int look_; + + static void input_changed_cb(fltk::Widget* widget, void* data); + static void button_cb(fltk::Widget* widget, void* data); +}; + +#endif diff --git a/etimedate/etimedate.cpp b/etimedate/etimedate.cpp new file mode 100755 index 0000000..0769f30 --- /dev/null +++ b/etimedate/etimedate.cpp @@ -0,0 +1,339 @@ +/* + * $Id$ + * + * Application for setting system date, time and local timezone + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "etimedate.h" +//#include +#include +#include +#include +#include +#include + +#include "../edelib2/NLS.h" +#include "../edelib2/Run.h" + +// graphics +#include "icons/world2.xpm" + +using namespace fltk; +using namespace edelib; + + + +static Window* timedateWindow; +TimeBox* timeBox; +EDE_Calendar* calendar; +InputBrowser* timeZonesList; + +Button* applyButton; +bool time_changed = false; +bool date_changed = false; +bool tz_changed = false; + +int phour, pminute; + +// Constants + + + +// -------------------------------------------- +// timezone functions + +// From efltk/filename.h +#define FL_PATH_MAX 1024 +// end filename.h + + +// wait - whether to wait for process to finish + +// end Util.cpp +#include +#include +#include +#include +#include + +void getCurrentTimeZone() +{ + char szZone[100],tempstring[101]; + FILE *f; + + if(readlink("/etc/localtime", szZone, sizeof(szZone)-1)>0) { + char *tz = strstr(szZone, "/zoneinfo/") + strlen("/zoneinfo/"); +// timeZonesList->value(tz); + timeZonesList->text(tz); + } else { + // some distros just copy the file instead of symlinking + // But /etc/sysconfig/clock should contain ZONE=Continent/City + if((f = fopen("/etc/sysconfig/clock", "r")) != NULL) { + while (fgets(tempstring,100,f) != NULL) { + // last char is newline, let's strip that: + if (tempstring[strlen(tempstring)-1] == '\n') + tempstring[strlen(tempstring)-1] = '\0'; + if (strstr(tempstring,"ZONE=") == tempstring) { +// timeZonesList->value(tempstring+5); + timeZonesList->text(tempstring+5); + } + } + } else { +// timeZonesList->value(_("Zone information not found.")); + timeZonesList->text(_("Zone information not found.")); + } + } +} + +static char *zonetab_dir = 0; +void saveTimeZone() +{ +} + +/*int sort_f(const void *w1, const void *w2) { + Widget *widget1 = *(Widget**)w1; + Widget *widget2 = *(Widget**)w2; + return strcmp(widget1->label(), widget2->label()); +}*/ + +// wstrim() - for trimming characters (used in parser) +// parts of former fl_trimleft and fl_trimright from Fl_Util.cpp +#include +char* wstrim2(char *string) +{ + char *start; + + if(string == NULL ) + return NULL; + + if (*string) { + int len = strlen(string); + if (len) { + char *p = string + len; + do { + p--; + if ( !isspace(*p) ) break; + } while ( p != string ); + + if ( !isspace(*p) ) p++; + *p = 0; + } + } + + for(start = string; *start && isspace (*start); start++); + memmove(string, start, strlen(start) + 1); + + return string; +} + + +void fillTimeZones() +{ + // This funtion is very lame :) + + FILE *f; + char tempstring[101] = "Unknown"; + + struct stat s; + if(stat("/usr/share/zoneinfo/zone.tab",&s)==0) { + run_program("cat /usr/share/zoneinfo/zone.tab | grep -e ^[^#] | cut -f 3 |sort > /tmp/_tzone_.txt"); + zonetab_dir = "/usr/share/zoneinfo/"; + } + else if(stat("/usr/local/share/zoneinfo/zone.tab",&s)==0) { + run_program("cat /usr/local/share/zoneinfo/zone.tab | grep -e ^[^#] | cut -f 3 | sort > /tmp/_tzone_.txt"); + zonetab_dir = "/usr/local/share/zoneinfo/"; + } else { + Item *o = new Item(_("Zone information not found.")); + o->textcolor(RED); + return; + } + + if((f = fopen("/tmp/_tzone_.txt", "r")) != NULL) + { + while(fgets(tempstring, 100, f) != NULL) + { + Item *o = new Item(); + o->copy_label(wstrim2(tempstring)); + } + fclose(f); + } else { + Item *o = new Item(_("Zone information not found.")); + o->textcolor(RED); + return; + } + remove("/tmp/_tzone_.txt"); +// TODO: Group::current()->array().sort(sort_f); +} + + +// -------------------------------------------- +// Callback functions + +void applyAll() { + char cmd1[FL_PATH_MAX]; + char cmd2[FL_PATH_MAX]; + cmd1[0]='\0'; cmd2[0]='\0'; + + if (tz_changed) { + if(!zonetab_dir) { + alert(_("Zone information not found.")); + return; + } + + char tz[FL_PATH_MAX]; +// snprintf(tz, sizeof(tz)-1, "%s%s", zonetab_dir, timeZonesList->value()); + snprintf(tz, sizeof(tz)-1, "%s%s", zonetab_dir, timeZonesList->text()); + + snprintf(cmd1, sizeof(cmd1)-1, "rm /etc/localtime; ln -s %s /etc/localtime; ", tz); + + char val[FL_PATH_MAX]; + snprintf(val, sizeof(val)-1, "TZ=%s", tz); + putenv(val); + + tz_changed=false; + } + if (time_changed || date_changed) { + Fl_Date_Time date = calendar->date(); + int mmonth = date.month(); + int mday = date.day(); + int myear = date.year(); + int mhour = timeBox->hour(); + int mminute = timeBox->minute(); + + snprintf(cmd2, sizeof(cmd2)-1, "date %.2d%.2d%.2d%.2d%.2d", mmonth, mday, mhour, mminute, myear); + + time_changed=false; + date_changed = false; + } + char *cmd = (char*)malloc(FL_PATH_MAX*2); + + // Now run everything as root + strcpy(cmd,cmd1); + strcat(cmd,cmd2); + run_program(cmd, true, true, false); +} + +static void cb_OK(Button*, void*) { + applyAll(); + exit(0); +} + +static void cb_Apply(Button*, void*) { + const char *pwd = password(_("This program requires administrator privileges.\nPlease enter your password below:"),0,"somebody"); +printf ("Pwd: %s\n",pwd); +exit(0); + applyAll(); + applyButton->deactivate(); +} + +static void cb_Close(Button*, void*) { + if (date_changed || time_changed) { + int answer = choice_alert(_("You have unsaved changes in this window!\nDo you want to close it anyway?"), 0, _("Go &Back"), _("&Discard Changes")); + if (answer != 2) return; + } + exit(0); +} + +static void cb_tzChanged(Widget*, void*) { + if (tz_changed) return; + tz_changed=true; + applyButton->activate(); +} + +static void cb_dateChanged(Widget*, void*) { + if (date_changed) return; + date_changed=true; + applyButton->activate(); +} + +static void cb_timeChanged(TimeBox* w, void*) { + if (time_changed) return; + time_changed=true; + applyButton->activate(); +} + +// -------------------------------------------- +// Main window design + +int main (int argc, char **argv) { + Window* w; + //fl_init_locale_support("etimedate", PREFIX"/share/locale"); + {Window* o = timedateWindow = new Window(435, 300, _("Time and date")); + w = o; + o->begin(); + {TabGroup* o = new TabGroup(10, 10, 415, 245); + o->begin(); + {Group* o = new Group(0, 25, 415, 220, _("Time and date")); + o->begin(); + {Group* o = new Group(10, 10, 220, 200); + o->box(DOWN_BOX); + o->color((Color)7); + o->begin(); + {EDE_Calendar* o = calendar = new EDE_Calendar(10, 10, 200, 200); + //o->textfont(fonts+9); // TODO: what does this mean!? + o->color((Color)0xffffff00); + o->textcolor((Color)18); + o->labelsize(10); + o->textsize(14); + o->callback((Callback*)cb_dateChanged); + } + o->end(); + } + {TimeBox* o = timeBox = new TimeBox(240, 10, 165, 200); + timeBox->callback((Callback*)cb_timeChanged); + } + o->end(); + } + {Group* o = new Group(0, 25, 415, 220, _("Timezones")); + o->hide(); + o->begin(); + {Group* o = new Group(10, 10, 395, 170); + o->box(DOWN_BOX); + o->color((Color)0x7b00); + o->begin(); + {InvisibleBox* o = new InvisibleBox(0, 0, 395, 170); + xpmImage* i = new xpmImage((const char**)world2_xpm); +// i->draw(Rectangle(10,5,350,160)); +// i->over(Rectangle(0,0,i->w(),i->h()),*o); + o->image(i); + o->box(FLAT_BOX); + o->color((Color)0x8000); + } + o->end(); + } + {InputBrowser* o = timeZonesList = new InputBrowser(10, 185, 395, 25); o->begin(); + o->type(1); fillTimeZones(); + getCurrentTimeZone(); + o->end(); + o->callback((Callback*)cb_tzChanged); + } + o->end(); + } + o->end(); + } + {Group* o = new Group(0, 265, 415, 33); + o->begin(); +// {Button* o = new Button(154, 0, 90, 25, _("&OK")); +// o->callback((Callback*)cb_OK); +// } + {Button* o = applyButton = new Button(235, 0, 90, 25, _("&Apply")); + o->callback((Callback*)cb_Apply); +// o->tooltip(_("Set system time. ->Just root user!<-")); + o->deactivate(); + } + {Button* o = new Button(335, 0, 90, 25, _("&Close")); + o->callback((Callback*)cb_Close); + } + o->end(); + } + o->end(); + } + w->show(argc, argv); + return run(); +} diff --git a/etimedate/etimedate.fld b/etimedate/etimedate.fld new file mode 100755 index 0000000..7d9a21a --- /dev/null +++ b/etimedate/etimedate.fld @@ -0,0 +1,86 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Time and date for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +Function {} {open +} { + code {fl_init_locale_support("etimedate", PREFIX"/share/locale");} {} + Fl_Window timedateWindow { + label {Time and date} open + private xywh {21 381 413 279} visible + } { + Fl_Group {} {open + xywh {0 245 413 33} + } { + Fl_Button {} { + label {&OK} + callback {saveTimeZone(); +timeBox->settime(); +exit(0);} + private xywh {154 4 80 25} + } + Fl_Button {} { + label {&Apply} + callback {saveTimeZone(); +timeBox->settime();} + tooltip {Set system time. ->Just root user!<-} + xywh {241 4 80 25} + } + Fl_Button {} { + label {&Cancel} + callback {exit(0);} + private xywh {328 4 80 25} + } + } + Fl_Tabs {} {open + xywh {3 5 405 240} + } { + Fl_Group {} { + label {Time/date} open + xywh {0 20 405 220} + } { + Fl_Group {} {open + xywh {5 5 220 200} box DOWN_BOX color 7 + } { + Fl_Calendar {} {selected + xywh {10 5 200 190} text_font 9 color 0xffffff00 text_color 18 label_size 10 text_size 14 + } + } + Fl_Clock {} { + private xywh {235 5 165 165} + } + Fl_Input timeBox { + xywh {235 180 165 25} + extra_code {\#include "fl_time.h"} + class Fl_Time + } + } + Fl_Group {} { + label Timezones open + xywh {0 20 405 220} hide + } { + Fl_Group {} {open + xywh {10 5 385 170} box DOWN_BOX color 0x7b00 + } { + Fl_Box {} { + xywh {10 5 350 160} box FLAT_BOX image {icons/world.xpm} color 0x8000 + } + } + Fl_Input_Browser timeZonesList {open + xywh {12 185 383 25} + extra_code {o->type(1); fillTimeZones(); +getCurrentTimeZone();} + } {} + } + } + } +} diff --git a/etimedate/etimedate.h b/etimedate/etimedate.h new file mode 100755 index 0000000..c491c9b --- /dev/null +++ b/etimedate/etimedate.h @@ -0,0 +1,29 @@ +/* + * $Id$ + * + * Application for setting system date, time and local timezone + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +#ifndef etimedate_h +#define etimedate_h + +#include "../edelib2/NLS.h" +#include +#include +#include +#include +#include +#include + +#include "EDE_Calendar.h" +//#include +#include "TimeBox.h" + +#endif diff --git a/etimedate/icons/world.xpm b/etimedate/icons/world.xpm new file mode 100755 index 0000000..a10a317 --- /dev/null +++ b/etimedate/icons/world.xpm @@ -0,0 +1,190 @@ +/* XPM */ +const char *world[] = { +"356 184 3 1", +". c #000078", +"# c #007800", +"a c #0000f8", +"....................................................................................................................................................................................................................................................................................................................................................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"...................................................................................................................................................................................................................................................................................................................................................############.....", +"................................................................................................................................................................................................................................................................................................................................................################....", +".........................................................................................................................................................................................................................................................................................................###############....................#######################.", +".......................................................................................................................................................................................................................................................................................................##################...............############################", +"..................................................................................................................................................................................................................................................................................................########################.......###################################", +"...####.....................................................................##...................................................................................................................................................................................................................########################...####################################.###", +".#######...................................................................###....##.............................#.............................................................................................................................................................................#########################..#########################################.", +"########.........................................................#####....###..#.###............................####........................................................................................................................................................................##..####.##################..###########################################", +"######................................###.###...................######...#..#.###.............................####.....................................................................................................................................................................#...####..####......##########..#############################################", +"#####..........................#....#.#########...................###..##..##..#..............................###..##.................................................................................................................................................................###..######.....##############...#############################################", +"####..........................########...####................................................................##..#####...........................................................................................................................................................####..##...#######..############.....##############################################", +"##.............................########...........................................................................####...##.....................................................................................................................................................######.......######..##########.....################################################", +"##.............................##.######..........................................................................###..#####...............................................................................................................................................##....######.##....#####..##########...##################################################", +"##................................#####.##.............................................................................####.............................................................................................................................................#####.....##########.#####.#.##########..###################################################", +"##...............................######.###...............................................................................#............................................................................................................................................######....#.###..#####.###..#.#########...###################################################", +"###................................###...##..........................................##................................#####......................................................................................................................................####....##......#........#......##.#######........################################################", +"###.................................#...............................................####...............................#######..................................................................................................................................#####..................#...##..#.###.#######.......#################################################", +"#...............................................................................##.#####.......................##.#..#############..............................................................................................................................#####...##..####.########.#######.###..####..........######.########################################", +"#.............................................................................######........................#########################......................#####...............................................................................................####....##########.#######....####...#.##..............##.....#######################################", +"##...........................................................................######.......................###########################.....................#######...###...............................................................................................###########..######.##.#######.#####.....................#####################################", +"#..........................................................................#####.........................##########################........................#####....###.................................................................................................######......###...###.######.####.......................####################################", +"##.........................................................................####..........................########################...........................##.................................................................................................#######.................#...........##............................###################################", +"#.........................................................................####.....................###.######################.#..##............................#..............................................................................................#########.........#...######..####.......##.###....................###################################", +".........................................................................####............#.........##########################...#########....###..............###.............................................................................................########.........###..#####..#####..##..########...................###################################", +"........................................................................####.............##..###...##########################.#############.#######.............#.............................................................................................######..############..######..###..##############..................##################################.", +"........................................................................###.............####.#####..#################################################.........###..#.........................................................................................######.##############..######......####..##########.................##################################.", +"........................................................................####...........############..################################################........##########.............................#..........................................................###################....###..##....###...###########................#################################.", +"............................................##.##.......................####..........#####.###############################################################.##############.........................####.......................###.##.............................###################......####...###.#.#############.................##############################.", +"........................................##########.........................##.##.....#######.####################################################################################...................##.....................############..............................################.....#####..###.##.##############.............###############################..", +".....................................#############............................####...#######.######################################################################################.........#.............................##################...........##.##..........################..#######....##...###############............##############################...", +"...................................###################.#.......................#####..######..######################################################################################.#####.########...................###########################..################...##########.####..###.#####.....#.......##########............##############################...", +"...................................######################..............###..##.#####...#####..#######################################################################################################................##################################################.######..#.###..####.######...####.....########.................#########################....", +".................................##########################.....##...##################.####..############################################################################################################...........###################################################.##....###.#######.########..####....############...........########################.##.....", +"..................................###########################..###..########################.##############################################################################################################..........###################################################################################....####.#########.........######################.#.........", +".................................############################..###.##########################################################################################################################################...........#################################################################################...###.##########.#.......#####################............", +"...###...........................####################...####...##################################################################################################################################################....############################################.#.###################################........##############.......###################...........#.", +"#######.........................######################......######################################################################################################################################################..#############################################..##################################..........#######..####........##################...........###", +"########.......................##########..############.....######################################################################################################################################################..####################################################################################....############.#...........#############..#............###", +"#######........................##########...###########..############################################################################################################################################...#####.##.....####################################################################################..##############.............###########.................##", +"######.......................############...############..#########################################################################################################################################...................####################################################################################..##..#########.............###########..................#", +".##........................############...##########################################################################################################################################################..................##########################################################################....#...##........#####.#..............#########....................", +".............#............############...############################################################################################################################################################.................##########################################################################......##..#..........###................#######.....................", +"............##...........#############..###########################################################################################################################################################..................#####################################################.###################.......###..#.######....#.................#######.....................", +".........................############...##########.#################################################################################################################################..#########.......................#######################################################################...............#######......................######.....................", +".........................#############..######..##..###########################################################################################################################..##a#########.........................#######################################################################...............#########....#.................####.....................", +".........................##############..####..##############################################################################################################################.....#####..##............................################...##################################################................#########....#...................#......................", +".................#........############....#...#########################################################################################################################.#####....#####....................................########.##...........############################..##############...............###########.####.........................................", +".............#...#........##...#######......#######################################################################################################################.##...###....#####.....................................########...............#############################################.............#################........................................", +".............#.##...........##.######....#.#######################################################################################################################.............#####.........................................####.#...............############################################..............################........................................", +"..............###..........###.######...#######################################################################################################################.#.............#######.......................................####..#...............#################################################..........################.......................................", +"..............###..........####.####....#####################################################################################################################.................#######....................................#####...##.................#################################################....##.#################.......................................", +"...............###..........##..........####################################################################################################################.................#######....................................######........................##############################################.......##################.......................................", +"............###.###.........###.##..######################################################################################################################...................######....##..............................###.#...........................#################################################...#####################....................................", +"...........####..###........#############################################################################################################################....................######......#...........................#.##.............................#.################################################..#######################...................................", +"..........####..#####.....#################################################################################################################################..#..#............#####..................................##................................##################################################...#######################..................................", +"..........####..#####...#########################################################################################################################################.............###...............#.....................................................###################################################..#######################..................................", +"..........####.######..#########################################################################################################################################..............##.......................................................................#..################################################.########################.................................", +"...........##..######..##########################################################################################################################################.............#.............................................................................#############################################.#######################...................................", +".....................#############################################################################################################################################............#............................................................................####################################################################.....................................", +"..................################################################################################################################################################..........................................................................................###########################################################.....##...##.................................", +"...............##################################################################################################################################################..........#................................................................................###.##################################.##################.####.#....##..................................", +"................################################################################################################################################################..........##..................................................................................###################################...################.#####.....####.................................", +".................###############################################################################################################################################.......####...................................................................................####################################...###################......#####.................................", +"..................##########################################################################################################################################..........####....................................................................................#####################################...###############.#.......######................................", +"...................################################.#######################################################################################################..........####......................................................................................#####################################...#.############........#######................................", +"...................##############.################...##...#################################################################################################....##...###........................................................................................####################################.###..############............#.#................................", +".............####.##########..####.##############..........#############..#######.########################################################################.....###.............................................................................................####################################.###.###...######................................................", +"............#############.#....####.############............###########..#######..#######################################################################......####............................................................................................####################################.################................................................", +"............###########......#..####..#########.....###......##########.########..######################################################################......####.............................................................................................####################################.#####.##########................................................", +"............###########.....##...####..#########..#####################.#############################################################################.........###.............................................................................................######################################################................................................", +"............#########.......##.....###.########.#######################..###########################################################################..........#...............................................................................................###################################################...................................................", +"............#########.##.....#.....##...###############################..#########################################################################...........###...............................................................................................#################################################....................................................", +".............#######.............#.##....####.##########################..###############################################################...#..####..........###...............................................................................................################################################.............................................##......", +"..............#####.............##.......###..#########################...##############################################################.......####.........###.................................................................................................###############################################..............................................###....", +"...............###...#####.####.###......##.#..########################....#################################################################....####.......####.................................................................................................##############################################................................................##....", +"...................############............###..##...#.#####################################################################################....####....#######..................................................................................................##############################################.....................................................", +"...............#################............##....#.##.###################################################################################.......##..#########...................................................................................................##############################################.....................................................", +".............##################.............##...####..####################################################################################.....###..#######......................................................................................................###########################################.......................................................", +"............###################.........##........##..#####################################################################################.........#..####.........................................................................................................########################################........................................................", +"...........########################.....###..#........######################################################################################.......#######...........................................................................................................#####################################..........................................................", +"...........##########################..########.############################################################################################.......###.......##.......................................................................................................####################################..........................................................", +"...........#################################################################################################################################........#.........##......................................................................................................###.###############################...........................................................", +"...........###########################################.#####################################################################################..................#........................................................................................................######################.###...######..........................................................", +"..........############################################.#####################################################################################...................#........................................##..............................................................##.#################...#.......###..........................................................", +".........#############################################.##############.######################################################################.......#...........#.........................................###............................................................###.###############............###..#.......................................................", +".......###############################################..##############.###...##############################################################......#.............##........................................###..............................................................##.#############..............###.##......................................................", +"......#################################################.###############....#..############################################################......###.............##........................................................................................................###.############..............##...##.....................................................", +"......#################################################..##############...##...#.###########################..############################.##....#.............###...............................................####......................................................##.############..............##...###....................................................", +".....##################################################...#############..####.........#####################....##########################.###...................#..................................................###......................................................##.##########....................###....................................................", +".....###################################################..####################.........####################....#########################..##........................................................................####........................................................#########..............####....#....................................................", +"....#####################################################..####################.........###################....#######################....#............................................................................##.###.#...................................................########............######........................................................", +"....######################################################.###################..........###################...#################.###.......#.............................................................................####..###.................................................########.......###...########.....................................................", +"....#######################################################.##################...........#.##############.....################.##..............................................................................................##.................................................#########.....####........##...###................................................", +".....######################################################.#################..............#############.......###################..............................................................................................##.................................................#########...####..............####...............................................", +".....#######################################################.###############...............#############........#############..##.........#..........................................................................................................................................##############........####.######.##...........................................", +".....######################################################...##############...............###########...........############............###.......................#...................................................................................................................############..........#.........#..##........................................", +".....#######################################################..###########...................#########............#############...........###.......................#.....................................................................................................................########...##....................#.#.....................................#.", +".....########################################################.########......................#######..............#..###########...........##..............................................................................................................................................#.###########.....................##...................................##.", +".....########################################################..####..........................######............##...###########............##................................................................................................................................................##########......................#....................................#.", +".....##########################################################.##...........................#######..........###...############............#......................#...........................................................................................................................########......................#......................................", +".....###########################################################.............................#######...........##...###..#######...........#.#.....................#...............................................................................................................................###............###........#......................................", +"......#############################################################.####......................######..........##....###..######..........#..#.##....................................................................................................................................................###.........#######......#......................................", +"......#################################################################.......................####.............#...####...###...........##.#.#...........#..........................................................................................................................................###....#..###############.......................................", +".......################################################################........................##..#................###....##...........#...............##............................................................................................................................................#########################.....................................", +".......###############################################################............................###...............###................#....####.......###............................................................................................................................................#####.###################.....................................", +"........##############################################################............................####...............###.....................####......##........................#..........................................................................................................................###################.....................................", +".........##############.#############################################.............................###.................##..............##......###......#........................###.........................................................................................................................####################....................................", +"............########.....###########################################...............................#.............###..###...........#####........................................##.........................................................................................................................##########################..............................", +"...........................########################################...............................................#####.##.........######........................................##.........................................................................................................................###########################.............................", +"............................#######################################................................................####..##.......######..........................................#.........................................................................................................................###########################.............................", +".............................####################################...................................................###..###.....########......................................................................................................................................................#...........############################.............................", +"..............................###################################....................................................###..##....##########..###............................................................##..................................................................................##..........############################.............................", +".............................##################################......................................................####.......#########.####.......##....................................................##.................................................................................###.........#############################.............................", +"............................##################################........................................................######....#######..####.......####...................................................##..................................................................................##........###################################........................", +".............................################################..........................................................######...#######..####...##...####.###..................................................................................................................................##........####################################.......................", +"..............................###############################.............##...........................................######....######.#####.....##..########............................................................................................................................................#####################################.....................", +"...............................#############################.............###............................................#####......####..###...##.###.##########........##...............................................................................................................................##########################################.................", +"................................###########################.............###...............................................###............###.......#....############...####..........................##........###.......................................................................................##########################################.................", +".................................##########################.............##.................................................####........................###.##########.####.##........................##........###........................................................................................############################################..............", +"................................###########################.................................................................######..................#..##...#########.......#.........................##......####.........................................................................................###########################################..............", +".................................##########################..................................................................########.#....###.##...##......#########........####......................#.......##..........................................................................................###########################################..............", +".................................###########################...................................................................######.#######..#..............###..###........####.........................................................................................................................##########################################...............", +".................................############################..##.....................................................................#..###.###....................###..........###........................................................................................................................#########################################...............", +"..................................###########################..##................................................................................................................###.........................................................................................................................#######################################................", +"..................................###########################.......#................................................................................###........#...............................................###..........................................................................................######################################.................", +".................................############################.......###.............................................................................######.....###.....................................##......####...........................................................................................#####################################.................", +".................................############################......####............................................................................#######.....###......................................#.......##............................................................................................#####################################.................", +"................................#############################....#####.........................................................................############....####.....................#......................................................................................................................####################################.................", +"................................#############################...######........................................................................###############..#####...................###......................................................................................................................##################################..................", +"................................############################....######........................................................................###############.######.....................#.........#.#............................................................................................................################################..................", +".................................##########################....#######......................................................................########################..............................###...............................................................................................................###############################.................", +".................................########################......######........#.............................................................#########################..............................####..............................................................................................................###############################.................", +"..................................######################........#####.....##.#...........................................................#############################............................................................................#.................................................................##############################..................", +"..................................#####################........######.....##...........................................................################################..............##..........................................................####...............................................................#############################...................", +"..................................######################.......#####..................................................................##################################..............##..........................................................####..............................................................#############################...................", +"...................................#####################.......#####.................................................................###################################..............###...........................................................#...............................................................###########################.....................", +"...................................#####################.......#####................................................................#####################################..............................................................................##...........................................................#########################.......................", +"...................................####################..........##.................................................................######################################............................................................................####.........................................................##########################.......................", +"...................................###################..............................................................................#######################################.............................................................................##.........................................................#######################..........................", +"...................................##################..............................................................................########################################........................................................................................................................................#######################..........................", +"...................................##################...............................................................................########################################.......................................................................................................................................#######################..........................", +"....................................#################...............................................................................########################################.......................................................................................................................................######################...........................", +"....................................################.................................................................................#######################################.......................................................................................................................................#####################............................", +"....................................###############...................................................................................#####################################........................................................................................................................................#####################............................", +".....................................##############...................................................................................#####################################........................................................................................................................................####################.............................", +"......................................#############...................................................................................############....####################.........................................................................................................................................##################...............................", +"......................................###########.....................................................................................############......###.##############.........................................................................................................................................##################...............................", +"......................................#########.......................................................................................#######............#..#############..........................................................................................................................................###############.#................................", +"........................................####.........................................................................................####..................##############.....................#....................................................................................................................##############...................................", +"......................................................................................................................................##..................###############.....................##..................................................................................................................###############...................................", +".............................................................................................................................................................###########......................###.................................................................................................................###############...................................", +"..............................................................................................................................................................##########.......................###...............................................................................................................###############....................................", +"...............................................................................................................................................................#..###.#.........................####.............................................................................................................##############.....................................", +"...................................................................................................................................................................##..........................#####.............................................................................................................############.......................................", +"...............................................................................................................................................................................................####..............................................................................................................###########........................................", +"...................................................................................................................................................................#............................##..............................................................................................................###########.........................................", +"..................................................................................................................................................................###........................###.#................................................................................................................########..........................................", +"...................................................................................................................................................................####......................###..................................................................................................................#######...........................................", +"....................................................................................................................................................................##.....................####...................................................................................................................#######...........................................", +"..........................................................................................................................................................................................#####..................................................................................................................########...........................................", +".........................................................................................................................................................................................#####..................................................................................................................########............................................", +"........................................................................................................................................................................................#####...................................................................................................................#######.............................................", +"........................................................................................................................................................................................####....................................................................................................................#########...........................................", +"........................................................................................................................................................................................###.....................................................................................................................#########...........................................", +"................................................................................................................................................................................................................................................................................................................#########...........................................", +".......................................................................................##.......................................................................................................................................................................................................................########............................................", +"........................................................................................#.......................................................................................................................................................................................................................#######.............................................", +"................................................................................................................................................................................................................................................................................................................######.......####...................................", +".................................................................................................................................................................................................................................................................................................................#####......#####...................................", +"..........................................................................................#......................................................................................................................................................................................................................######......#......................................", +".........................................................................................###......................................................................................................................................................................................................................######............................................", +"..........................................................................................##.......................................................................................................................................................................................................................######...........................................", +"...................................................................................................................................................................................................................................................................................................................#######..........................................", +".....................................................................................................................................................................................................................................................................................................................####...........................................", +"......................................................................................................................................................................................................................................................................................................................##............................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"....................................................................................................................................................................................................................................................................................................................................................................", +"...................................................................................................................................................................................................................................................................................................................................................................."}; diff --git a/etimedate/icons/world2.xpm b/etimedate/icons/world2.xpm new file mode 100755 index 0000000..d2e9353 --- /dev/null +++ b/etimedate/icons/world2.xpm @@ -0,0 +1,176 @@ +/* XPM */ +static char * world2_xpm[] = { +"395 170 3 1", +" c None", +". c #00017A", +"+ c #007900", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"........................................................................................................................................................................................................................................................................................................................................................................................+++++++++++++......", +".....................................................................................................................................................................................................................................................................................................................................................................................++++++++++++++++++....", +".......................................................................................................................................................................................................................................................................................................................................++++++++++++++++++++.................+++++++++++++++++++++++++++++++", +"..................................................................................................................................................................................................................................................................................................................................++++++++++++++++++++++++++........+++++++++++++++++++++++++++++++++++++++", +"...+++++............................................................................+++..........................................................................................................................................................................................................................................++++++++++++++++++++++++++....++++++++++++++++++++++++++++++++++++++++.+++", +".++++++++..........................................................................++++....++................................+................................................................................................................................................................................................++++++++++++++++++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++.", +"+++++++++...............................................................++++++....+++...+.+++...............................+++++..........................................................................................................................................................................................++...++++.++++++++++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++", +"+++++++...................................+++..+++.....................+++++++...+..+..+++................................++++........................................................................................................................................................................................+...++++...++++.......+++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++++............................++....+.++++++++++.....................++++..++..++...+.................................+++...++..................................................................................................................................................................................++++..+++++++.....++++++++++++++++...++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++.............................+++++++++...+++++.......................................................................++..++++++............................................................................................................................................................................++++...++...++++++++..+++++++++++++......+++++++++++++++++++++++++++++++++++++++++++++++++++", +"++................................+++++++++...................................................................................+++++...++......................................................................................................................................................................++++++........+++++++..+++++++++++......+++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++................................+++.++++++..................................................................................++++..++++++..............................................................................................................................................................++.....+++++++.++....++++++..+++++++++++....+++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++....................................+++++.+++.....................................................................................++++.............................................................................................................................................................+++++......+++++++++++.++++++.+.+++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++...................................++++++.++++.......................................................................................+............................................................................................................................................................++++++.....+.+++...+++++.++++..+.++++++++++...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"+++.....................................+....................................................+++++..................................++++++++................................................................................................................................................++++++....................+...++..++.+++.++++++++........++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"+........................................................................................++.++++++.........................++.++..++++++++++++++............................................................................................................................................++++++...++..+++++.+++++++++.++++++++.+++..+++++...........+++++++.++++++++++++++++++++++++++++++++++++++++++++", +"+......................................................................................++++++...........................++++++++++++++++++++++++++++........................++++++.........................................................................................................++++.....+++++++++++.++++++++....+++++...+.++................++......+++++++++++++++++++++++++++++++++++++++++++", +"++...................................................................................+++++++..........................++++++++++++++++++++++++++++++.......................++++++++...+++..........................................................................................................++++++++++++..+++++++.++.++++++++.++++++.......................+++++++++++++++++++++++++++++++++++++++++", +"+..................................................................................++++++............................++++++++++++++++++++++++++++...........................++++++....+++............................................................................................................+++++++......++++...+++.+++++++.+++++.........................++++++++++++++++++++++++++++++++++++++++", +"++.................................................................................+++++.............................++++++++++++++++++++++++++..............................++............................................................................................................++++++++...................+............++...............................+++++++++++++++++++++++++++++++++++++++", +"+.................................................................................+++++.......................+++.+++++++++++++++++++++++++.+..++...............................++........................................................................................................++++++++++..........+...+++++++..+++++.......+++.+++......................+++++++++++++++++++++++++++++++++++++++", +".................................................................................++++..............+..........+++++++++++++++++++++++++++++...++++++++++....++++...............++++.......................................................................................................+++++++++..........+++..++++++..++++++..++..+++++++++.....................+++++++++++++++++++++++++++++++++++++++", +"................................................................................++++...............++..++++...+++++++++++++++++++++++++++++.++++++++++++++.++++++++...............+.......................................................................................................++++++...+++++++++++++..+++++++..+++...+++++++++++++++....................++++++++++++++++++++++++++++++++++++++.", +"................................................................................+++...............++++.++++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++..........++++..+...................................................................................................++++++.++++++++++++++++..+++++++.......++++..+++++++++++...................++++++++++++++++++++++++++++++++++++++.", +"................................................................................++++.............+++++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++.........+++++++++++................................++................................................................+++++++++++++++++++++....++++..++.....+++...+++++++++++++.................+++++++++++++++++++++++++++++++++++++.", +".................................................++.++..........................++++...........++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++...........................+++++.........................++++.++................................+++++++++++++++++++++.......++++....+++.+.+++++++++++++++...................+++++++++++++++++++++++++++++++++.", +".........................................++++++++++++++................................++++...++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..........+................................++++++++++++++++++++............++.+++...........+++++++++++++++++...+++++++.....++...+++++++++++++++++.............++++++++++++++++++++++++++++++++++...", +".......................................+++++++++++++++++++++.+..........................+++++..+++++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++.+++++++++.....................++++++++++++++++++++++++++++++...+++++++++++++++++....+++++++++++.++++...+++.++++++.....+........+++++++++++.............++++++++++++++++++++++++++++++++++...", +".......................................++++++++++++++++++++++++................+++..+++.+++++....+++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++..+.+++...++++.+++++++...+++++.....+++++++++...................++++++++++++++++++++++++++++....", +".....................................++++++++++++++++++++++++++++......++....++++++++++++++++++++.++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++.....+++.++++++++.+++++++++..+++++....+++++++++++++............+++++++++++++++++++++++++++.++......", +"......................................++++++++++++++++++++++++++++++..+++..+++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...........++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....++++.++++++++++..........+++++++++++++++++++++++++.+..........", +".....................................+++++++++++++++++++++++++++++++..+++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...+++.+++++++++++..+.......++++++++++++++++++++++++.............", +"...++++..............................++++++++++++++++++++++...+++++...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....+++++++++++++++++++++++++++++++++++++++++++++++++.+.+++++++++++++++++++++++++++++++++++++++.........++++++++++++++++.......++++++++++++++++++++++............+.", +"++++++++............................++++++++++++++++++++++++.......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++++++++++++++++++++...........++++++++..+++++........++++++++++++++++++++.............+++", +"+++++++++.........................+++++++++++...+++++++++++++......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....+++++++++++++.+.............++++++++++++++..+..............+++", +"++++++++..........................+++++++++++....++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...+++++..++.....++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+++++++++++++++...............++++++++++++...................++", +"+++++++.........................+++++++++++++....+++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++..++++++++++...............++++++++++++....................+", +".++...........................+++++++++++++....++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....+...+++.........+++++.+................++++++++++......................", +".............+++............++++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++........+++...+.+++++++....+...................++++++++.......................", +"............................+++++++++++++...+++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++.........................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................++++++++........................+++++++.......................", +"............................++++++++++++++..+++++++..++...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+++.++++++++++...........................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................++++++++++....+...................+++++.......................", +"............................+++++++++++++++..+++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....++++++..++................................+++++++++++++++++....+++++++++++++++++++++++++++++++++++++++++++++++++++++++..................++++++++++....+.....................++........................", +"...................+.........+++++++++++++.....+...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++....++++++........................................+++++++++.++............+++++++++++++++++++++++++++++++...+++++++++++++++.................++++++++++++.+++++.............................................", +"..............++...+.........++...++++++++.......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++....+++....++++++.........................................+++++++++................++++++++++++++++++++++++++++++++++++++++++++++++++...............+++++++++++++++++++............................................", +"..............++.++............++.+++++++....++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..............++++++.............................................+++++.+.................++++++++++++++++++++++++++++++++++++++++++++++++................++++++++++++++++++............................................", +"................+++...........+++.+++++++...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+..............++++++++...........................................+++++..+.................++++++++++++++++++++++++++++++++++++++++++++++++++++++...........++++++++++++++++++...........................................", +"................+++...........++++..++++....++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...................++++++++........................................+++++....++...................++++++++++++++++++++++++++++++++++++++++++++++++++++++.....++.+++++++++++++++++++...........................................", +".................+++...........++...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...................++++++++........................................++++++...........................+++++++++++++++++++++++++++++++++++++++++++++++++++........++++++++++++++++++++...........................................", +".............++++.+++..........+++..++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....................+++++++....++..................................+++.+..............................++++++++++++++++++++++++++++++++++++++++++++++++++++++....+++++++++++++++++++++++........................................", +"............+++++..+++.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++......................+++++++......+..............................+..++................................+.+++++++++++++++++++++++++++++++++++++++++++++++++++++...+++++++++++++++++++++++++.......................................", +"...........+++++..+++++......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+...+.............+++++......................................++....................................+++++++++++++++++++++++++++++++++++++++++++++++++++++++....+++++++++++++++++++++++++......................................", +"...........+++++.++++++...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...............++...............................................................................+..++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++.....................................", +"............++...++++++...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..............+......................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++.......................................", +".......................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............+....................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.........................................", +"....................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....................................................................................................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++......++...++.....................................", +".................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...........+.........................................................................................+++.++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++.++++..+....++......................................", +"..................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...........++...........................................................................................+++++++++++++++++++++++++++++++++++++++...++++++++++++++++++.+++++......++++.....................................", +"...................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.......+++++............................................................................................++++++++++++++++++++++++++++++++++++++++...+++++++++++++++++++++.......+++++.....................................", +"....................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...........+++++.............................................................................................+++++++++++++++++++++++++++++++++++++++++...+++++++++++++++++.+........++++++....................................", +".....................++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...........+++++...............................................................................................+++++++++++++++++++++++++++++++++++++++++...+..+++++++++++++.........+++++++....................................", +".....................++++++++++++++++.+++++++++++++++++....++...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....+++...+++..................................................................................................++++++++++++++++++++++++++++++++++++++++.+++...+++++++++++++.............+.+....................................", +"..............+++++.+++++++++++..+++++.+++++++++++++++...........+++++++++++++++..++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....++++.......................................................................................................++++++++++++++++++++++++++++++++++++++++.+++.++++...+++++++.....................................................", +".............+++++++++++++++.+....+++++.+++++++++++++..............++++++++++++..++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++......+++++......................................................................................................++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++.....................................................", +".............+++++++++++++.....++....++++..++++++++++..++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..........++++.......................................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....................................................", +".............++++++++++........++......+++.+++++++++.++++++++++++++++++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...........+..........................................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++++++++.........................................................", +".............++++++++++.+++.....+......++...+++++++++++++++++++++++++++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............++++.........................................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++++++..........................................................", +"..............++++++++...............+.++....+++++.+++++++++++++++++++++++++++++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...+...++++...........++++.........................................................................................................+++++++++++++++++++++++++++++++++++++++++++++++++++++..................................................++.......", +"................+++++...............++.......++++..++++++++++++++++++++++++++++...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........++++..........+++............................................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++++...................................................++++....", +".................+++...++++++.++++..+++......+++.+..+++++++++++++++++++++++++++....++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....++++........++++............................................................................................................+++++++++++++++++++++++++++++++++++++++++++++++++++.....................................................+++....", +".....................+++++++++++++..............+++..++....+.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....++++.....+++++++.............................................................................................................+++++++++++++++++++++++++++++++++++++++++++++++++++...........................................................", +".................+++++++++++++++++++.............++....++.++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........++..++++++++++..............................................................................................................+++++++++++++++++++++++++++++++++++++++++++++++++++...........................................................", +"..............++++++++++++++++++++...............++...+++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++......+++..++++++++.................................................................................................................++++++++++++++++++++++++++++++++++++++++++++++++.............................................................", +".............+++++++++++++++++++++..........+++........+++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..........+...++++....................................................................................................................+++++++++++++++++++++++++++++++++++++++++++++..............................................................", +"............+++++++++++++++++++++++++++.....++++..+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........++++++++.......................................................................................................................+++++++++++++++++++++++++++++++++++++++++................................................................", +"............+++++++++++++++++++++++++++++..+++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........+++........++...................................................................................................................++++++++++++++++++++++++++++++++++++++++................................................................", +"............++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....................+....................................................................................................................++++++++++++++++++++++++.++++...+++++++................................................................", +"...........+++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.....................++............................................++.....................................................................++.+++++++++++++++++++...++.......++++................................................................", +"..........++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........+............++.............................................+++...................................................................+++.+++++++++++++++++.............++++..+.............................................................", +"........++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++.+++...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.......+..............+++............................................+++.....................................................................++.+++++++++++++++...............++++.++............................................................", +".......++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++....+...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.......+++...............++...................................................................................................................+++..+++++++++++++...............+++...++...........................................................", +".......++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++...++....+.++++++++++++++++++++++++++++++..+++++++++++++++++++++++++++++++.++.....+..............++++....................................................++++............................................................++..+++++++++++++...............+++...+++..........................................................", +"......+++++++++++++++++++++++++++++++++++++++++++++++++++++++...+++++++++++++++..++++..........++++++++++++++++++++++++....+++++++++++++++++++++++++++++.+++......................+.......................................................+++............................................................+++.+++++++++++......................+++..........................................................", +"......++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+++++++++++++++++++++++..........++++++++++++++++++++++....++++++++++++++++++++++++++++..++................................................................................+++++..............................................................++++++++++...............+++++....+..........................................................", +"....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+++++++++++++++++++++++..........+++++++++++++++++++++....++++++++++++++++++++++++++....+.....................................................................................++.+++.+.........................................................+++++++++.............+++++++..............................................................", +"....++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++...........+++++++++++++++++++++...+++++++++++++++++++.+++........+......................................................................................++++..++++......................................................+++++++++........+++...+++++++++...........................................................", +"....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++............+.++++++++++++++++.....++++++++++++++++++.++........................................................................................................+++......................................................++++++++++......++++.........++...++++.....................................................", +"......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++................++++++++++++++........+++++++++++++++++++++.........................................................................................................++......................................................++++++++++...+++++...............+++++....................................................", +"......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++....+++++++++++++++.................++++++++++++............++++++++++++++.............+++..........................+................................................................................................................................+++++++++++++...........+..........+..+++............................................", +"......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++.....................++++++++++.............+++++++++++++++............+++..........................+..................................................................................................................................+++++++++...++......................++.+.........................................+.", +"......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++........................++++++++...............+...++++++++++++............++..............................................................................................................................................................+.++++++++++++........................++.......................................++.", +"......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++.............................+++++++.............++....++++++++++++.............++................................................................................................................................................................+++++++++++.........................+........................................+.", +"......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++..............................++++++++...........+++....+++++++++++++.............+.........................+........................................................................................................................................+++++++++.........................+..........................................", +"......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................++++++++............++....+++..++++++++............+.++.......................+.............................................................................................................................................+++..............+++.........+..........................................", +".......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++........................+++++++...........++.....+++..+++++++...........+..+..++....................................................................................................................................................................+++..........++++++++.......+..........................................", +".......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.........................+++++..............+....++++...++++............++.+.++............+.........................................................................................................................................................+++.....+..+++++++++++++++++...........................................", +"........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..........................+++..+..................+++....+++............+.................++...........................................................................................................................................................++++++++++++++++++++++++++++.........................................", +"........++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...............................+++.................+++..................+....+++++........+++...........................................................................................................................................................++++++.+++++++++++++++++++++.........................................", +".........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...............................++++.................+++.......................+++++.......++..........................+........................................................................................................................................+++++++++++++++++++++.........................................", +"..........++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++................................+++...................++................++.......+++.......+..........................++++......................................................................................................................................++++++++++++++++++++++........................................", +"..............................++++++++++++++++++++++++++++++++++++++++++++....................................................++++++.++..........+++++++............................................+++......................................................................................................................................++++++++++++++++++++++++++++++................................", +"...............................+++++++++++++++++++++++++++++++++++++++++++......................................................++++..++........+++++++..............................................++......................................................................................................................................++++++++++++++++++++++++++++++................................", +"................................++++++++++++++++++++++++++++++++++++++++.........................................................+++..++++.....+++++++++......................................................................................................................................................................++............+++++++++++++++++++++++++++++++................................", +".................................+++++++++++++++++++++++++++++++++++++++..........................................................+++..+++....+++++++++++..++++..................................................................++...........................................................................................+++...........+++++++++++++++++++++++++++++++................................", +"................................++++++++++++++++++++++++++++++++++++++............................................................++++........++++++++++.+++++.......+++.........................................................++..........................................................................................++++..........++++++++++++++++++++++++++++++++................................", +"...............................++++++++++++++++++++++++++++++++++++++..............................................................+++++++....++++++++..++++........+++++........................................................++...........................................................................................+++.........++++++++++++++++++++++++++++++++++++++...........................", +"................................++++++++++++++++++++++++++++++++++++................................................................+++++++...++++++++..++++....++...+++++.+++................................................................................................................................................+++.........+++++++++++++++++++++++++++++++++++++++..........................", +".................................+++++++++++++++++++++++++++++++++++..............++................................................+++++++....+++++++.+++++......++..+++++++++............................................................................................................................................................+++++++++++++++++++++++++++++++++++++++++.......................", +"..................................+++++++++++++++++++++++++++++++++..............+++.................................................++++++......+++++..+++....++.+++.++++++++++++........+++.............................................................................................................................................++++++++++++++++++++++++++++++++++++++++++++++...................", +"....................................+++++++++++++++++++++++++++++...............+++....................................................++++.............+++........+.....+++++++++++++...+++++.............................++.........+++.................................................................................................++++++++++++++++++++++++++++++++++++++++++++++...................", +".....................................++++++++++++++++++++++++++++...............++......................................................+++++...........................+++.+++++++++++.+++++.++...........................++.........+++..................................................................................................++++++++++++++++++++++++++++++++++++++++++++++++................", +"....................................+++++++++++++++++++++++++++++.........................................................................++++++....................+...++...++++++++++........+............................++.......++++...................................................................................................+++++++++++++++++++++++++++++++++++++++++++++++................", +".....................................++++++++++++++++++++++++++++++..........................................................................+++++++.+++++++...+...............++++..+++.........++++.......................................................................................................................................++++++++++++++++++++++++++++++++++++++++++++++.................", +".....................................+++++++++++++++++++++++++++++++..++.............................................................................+..+++.++++......................+++...........++++.....................................................................................................................................+++++++++++++++++++++++++++++++++++++++++++++.................", +"......................................++++++++++++++++++++++++++++++..++............................................................................................................................++++......................................................................................................................................+++++++++++++++++++++++++++++++++++++++++++..................", +"......................................++++++++++++++++++++++++++++++.......++........................................................................................++++.........+....................................................+++....................................................................................................++++++++++++++++++++++++++++++++++++++++++...................", +".....................................+++++++++++++++++++++++++++++++.......++++.....................................................................................+++++++.....++++.........................................++.......++++.....................................................................................................+++++++++++++++++++++++++++++++++++++++++...................", +".....................................+++++++++++++++++++++++++++++++......+++++....................................................................................++++++++.....++++..........................................+........++......................................................................................................+++++++++++++++++++++++++++++++++++++++++...................", +"....................................++++++++++++++++++++++++++++++++....++++++.................................................................................+++++++++++++....+++++.......................+...................................................................................................................................++++++++++++++++++++++++++++++++++++++++...................", +"....................................++++++++++++++++++++++++++++++++...+++++++................................................................................++++++++++++++++..++++++.....................+++...................................................................................................................................++++++++++++++++++++++++++++++++++++++....................", +"....................................+++++++++++++++++++++++++++++++....+++++++................................................................................++++++++++++++++.+++++++.......................+..........+..+........................................................................................................................+++++++++++++++++++++++++++++++++++....................", +".....................................++++++++++++++++++++++++++++.....++++++++.............................................................................+++++++++++++++++++++++++++.................................++++...........................................................................................................................++++++++++++++++++++++++++++++++++...................", +".....................................++++++++++++++++++++++++++.......+++++++........++...................................................................++++++++++++++++++++++++++++.................................+++++..........................................................................................................................++++++++++++++++++++++++++++++++++...................", +"......................................++++++++++++++++++++++++.........++++++.....++.++.................................................................++++++++++++++++++++++++++++++++.....................................................................................+........................................................................+++++++++++++++++++++++++++++++++....................", +"......................................++++++++++++++++++++++++........+++++..........................................................................+++++++++++++++++++++++++++++++++++++................++.................................................................++++.....................................................................++++++++++++++++++++++++++++++++.....................", +".......................................+++++++++++++++++++++++........+++++.........................................................................++++++++++++++++++++++++++++++++++++++................+++..................................................................+......................................................................++++++++++++++++++++++++++++++.......................", +".......................................+++++++++++++++++++++++........+++++.......................................................................++++++++++++++++++++++++++++++++++++++++++......................................................................................++..................................................................+++++++++++++++++++++++++++..........................", +".......................................++++++++++++++++++++++...........++........................................................................+++++++++++++++++++++++++++++++++++++++++++....................................................................................++++................................................................++++++++++++++++++++++++++++..........................", +".......................................+++++++++++++++++++++......................................................................................++++++++++++++++++++++++++++++++++++++++++++.....................................................................................++................................................................+++++++++++++++++++++++++.............................", +".......................................++++++++++++++++++++......................................................................................+++++++++++++++++++++++++++++++++++++++++++++.......................................................................................................................................................+++++++++++++++++++++++++.............................", +".......................................++++++++++++++++++++.......................................................................................+++++++++++++++++++++++++++++++++++++++++++++......................................................................................................................................................+++++++++++++++++++++++++.............................", +"........................................+++++++++++++++++++.......................................................................................+++++++++++++++++++++++++++++++++++++++++++++......................................................................................................................................................++++++++++++++++++++++++..............................", +"........................................++++++++++++++++++..........................................................................................+++++++++++++++++++++++++++++++++++++++++++......................................................................................................................................................+++++++++++++++++++++++...............................", +"........................................+++++++++++++++++............................................................................................+++++++++++++++++++++++++++++++++++++++++.......................................................................................................................................................+++++++++++++++++++++++...............................", +".........................................++++++++++++++++............................................................................................+++++++++++++++++++++++++++++++++++++++++.......................................................................................................................................................++++++++++++++++++++++................................", +"..........................................+++++++++++++++............................................................................................+++++++++++++....+++++++++++++++++++++++........................................................................................................................................................++++++++++++++++++++..................................", +"..........................................++++++++++++...............................................................................................+++++++++++++.......+++.++++++++++++++++........................................................................................................................................................++++++++++++++++++++..................................", +"............................................+++++...................................................................................................++++....................++++++++++++++++.......................+.................................................................................................................................+++++++++++++++.......................................", +".....................................................................................................................................................++....................+++++++++++++++++.......................++...............................................................................................................................++++++++++++++++.......................................", +"..............................................................................................................................................................................++++++++++++.........................+++..............................................................................................................................++++++++++++++++.......................................", +"...............................................................................................................................................................................+++++++++++..........................+++...........................................................................................................................+++++++++++++++++........................................", +"................................................................................................................................................................................++..+++.+............................++++.........................................................................................................................++++++++++++++++.........................................", +".....................................................................................................................................................................................++.............................+++++.........................................................................................................................++++++++++++++...........................................", +"....................................................................................................................................................................................................................++++..........................................................................................................................+++++++++++++............................................", +".....................................................................................................................................................................................+...............................++..........................................................................................................................+++++++++++++.............................................", +"....................................................................................................................................................................................+++...........................+++.+.............................................................................................................................++++++++...............................................", +".....................................................................................................................................................................................++++.........................+++...............................................................................................................................+++++++................................................", +"......................................................................................................................................................................................++.......................+++++................................................................................................................................+++++++................................................", +"..............................................................................................................................................................................................................++++++..............................................................................................................................+++++++++................................................", +"............................................................................................................................................................................................................++++++...............................................................................................................................++++++++..................................................", +"............................................................................................................................................................................................................+++++................................................................................................................................++++++++++................................................", +"............................................................................................................................................................................................................+++..................................................................................................................................++++++++++................................................", +".................................................................................................................................................................................................................................................................................................................................................++++++++++................................................", +".................................................................................................++..............................................................................................................................................................................................................................................+++++++++.................................................", +"..................................................................................................+..............................................................................................................................................................................................................................................++++++++..................................................", +".................................................................................................................................................................................................................................................................................................................................................+++++++........++++.......................................", +"..................................................................................................................................................................................................................................................................................................................................................++++++.......+++++.......................................", +"....................................................................................................+.............................................................................................................................................................................................................................................+++++++.......+..........................................", +"...................................................................................................+++..............................................................................................................................................................................................................................................++++++.................................................", +"....................................................................................................++...............................................................................................................................................................................................................................................++++++................................................", +".....................................................................................................................................................................................................................................................................................................................................................+++++++...............................................", +"........................................................................................................................................................................................................................................................................................................................................................++.................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"...........................................................................................................................................................................................................................................................................................................................................................................................................", +"..........................................................................................................................................................................................................................................................................................................................................................................................................."}; diff --git a/etimedate/locale/hu.po b/etimedate/locale/hu.po new file mode 100755 index 0000000..e66cdad --- /dev/null +++ b/etimedate/locale/hu.po @@ -0,0 +1,53 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Dátum és Idő" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Rendszeridő beállítása. ->Csak rendszergazdának!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "Mégs&em" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Dátum/idő" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Időzónák" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "Hiba az idő beállítása közben. Valószínűleg nem vagy rendszergazda!" + +#: fl_time.cpp:397 +#: fl_time.cpp:405 +#: fl_time.cpp:442 +msgid "Zone information not found." +msgstr "A zóna információkat nem találom." + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Időzóna beállítása sikertelen!" + diff --git a/etimedate/locale/id.po b/etimedate/locale/id.po new file mode 100755 index 0000000..b3b2667 --- /dev/null +++ b/etimedate/locale/id.po @@ -0,0 +1,146 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etimedate\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-11-29 15:44+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Jam dan tanggal" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Terapkan" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Set waktu sistem. ->Hanya root!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "&Batal" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Jam/tanggal" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Zone waktu" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "Salah seting jam. Anda mungkin bukan superuser!" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Tidak bisa mensetup zone waktu!" + +#~ msgid "H-" +#~ msgstr "H-" + +#~ msgid "H+" +#~ msgstr "H+" + +#~ msgid "M-" +#~ msgstr "M-" + +#~ msgid "M+" +#~ msgstr "M+" + +#~ msgid "Su" +#~ msgstr "Mg" + +#~ msgid "Mo" +#~ msgstr "Sn" + +#~ msgid "Tu" +#~ msgstr "Sl" + +#~ msgid "We" +#~ msgstr "Rb" + +#~ msgid "Th" +#~ msgstr "Km" + +#~ msgid "Fr" +#~ msgstr "Jm" + +#~ msgid "St" +#~ msgstr "St" + +#~ msgid "Y-" +#~ msgstr "Y-" + +#~ msgid "Previous year." +#~ msgstr "Tahun sebelumnya." + +# msgid "M-" +# msgstr "M-" +#~ msgid "Previous month." +#~ msgstr "Bulan sebelumnya." + +# msgid "M+" +# msgstr "M+" +#~ msgid "Next month." +#~ msgstr "Bulan berikutnya." + +#~ msgid "Y+" +#~ msgstr "Y+" + +#~ msgid "Next year." +#~ msgstr "Tahun berikutnya." + +#~ msgid "January" +#~ msgstr "Januari" + +#~ msgid "Febuary" +#~ msgstr "Februari" + +#~ msgid "March" +#~ msgstr "Maret" + +#~ msgid "April" +#~ msgstr "April" + +#~ msgid "May" +#~ msgstr "Mei" + +#~ msgid "June" +#~ msgstr "Juni" + +#~ msgid "July" +#~ msgstr "Juli" + +#~ msgid "August" +#~ msgstr "Agustus" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Oktober" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "Desember" diff --git a/etimedate/locale/messages.pot b/etimedate/locale/messages.pot new file mode 100755 index 0000000..a9e5707 --- /dev/null +++ b/etimedate/locale/messages.pot @@ -0,0 +1,57 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "" diff --git a/etimedate/locale/ru.po b/etimedate/locale/ru.po new file mode 100755 index 0000000..da4d225 --- /dev/null +++ b/etimedate/locale/ru.po @@ -0,0 +1,147 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr " " + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr " . -> root!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "/" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr " " + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr " . root ;-)" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr " !" + +#~ msgid "H-" +#~ msgstr "-" + +#~ msgid "H+" +#~ msgstr "+" + +#~ msgid "M-" +#~ msgstr "-" + +#~ msgid "M+" +#~ msgstr "+" + +#~ msgid "Su" +#~ msgstr "" + +#~ msgid "Mo" +#~ msgstr "" + +#~ msgid "Tu" +#~ msgstr "" + +#~ msgid "We" +#~ msgstr "" + +#~ msgid "Th" +#~ msgstr "" + +#~ msgid "Fr" +#~ msgstr "" + +#~ msgid "St" +#~ msgstr "" + +#~ msgid "Y-" +#~ msgstr "-" + +#~ msgid "Previous year." +#~ msgstr "+" + +# msgid "M-" +# msgstr "-" +#~ msgid "Previous month." +#~ msgstr " ." + +# msgid "M+" +# msgstr "+" +#~ msgid "Next month." +#~ msgstr " ." + +#~ msgid "Y+" +#~ msgstr "+" + +#~ msgid "Next year." +#~ msgstr " ." + +#~ msgid "January" +#~ msgstr "" + +#~ msgid "Febuary" +#~ msgstr "" + +#~ msgid "March" +#~ msgstr "" + +#~ msgid "April" +#~ msgstr "" + +#~ msgid "May" +#~ msgstr "" + +#~ msgid "June" +#~ msgstr "" + +#~ msgid "July" +#~ msgstr "" + +#~ msgid "August" +#~ msgstr "" + +#~ msgid "September" +#~ msgstr "" + +#~ msgid "October" +#~ msgstr "" + +#~ msgid "November" +#~ msgstr "" + +#~ msgid "December" +#~ msgstr "" diff --git a/etimedate/locale/sk.po b/etimedate/locale/sk.po new file mode 100755 index 0000000..2b34a60 --- /dev/null +++ b/etimedate/locale/sk.po @@ -0,0 +1,147 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etimedate 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Čas a dátum" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Použiť" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Nastaviť systémový čas. ->Iba root užívateľ!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Čas/dátum" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Časové zóny" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "" +"Nastala chyba pri nastavovaní času. Pravdepodobne nie ste superužívateľ!" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Nemôžem nastaviť časovú zónu!" + +#~ msgid "H-" +#~ msgstr "H-" + +#~ msgid "H+" +#~ msgstr "H+" + +#~ msgid "M-" +#~ msgstr "M-" + +#~ msgid "M+" +#~ msgstr "M+" + +#~ msgid "Su" +#~ msgstr "Ne" + +#~ msgid "Mo" +#~ msgstr "Po" + +#~ msgid "Tu" +#~ msgstr "Ut" + +#~ msgid "We" +#~ msgstr "St" + +#~ msgid "Th" +#~ msgstr "Št" + +#~ msgid "Fr" +#~ msgstr "Pi" + +#~ msgid "St" +#~ msgstr "So" + +#~ msgid "Y-" +#~ msgstr "R-" + +#~ msgid "Previous year." +#~ msgstr "Predchádzajúci rok." + +# msgid "M-" +# msgstr "M-" +#~ msgid "Previous month." +#~ msgstr "Predchádzajúci mesiac." + +# msgid "M+" +# msgstr "M+" +#~ msgid "Next month." +#~ msgstr "Nasledujúci mesiac." + +#~ msgid "Y+" +#~ msgstr "R+" + +#~ msgid "Next year." +#~ msgstr "Nasledujúci rok." + +#~ msgid "January" +#~ msgstr "Január" + +#~ msgid "Febuary" +#~ msgstr "Február" + +#~ msgid "March" +#~ msgstr "Marec" + +#~ msgid "April" +#~ msgstr "Apríl" + +#~ msgid "May" +#~ msgstr "Máj" + +#~ msgid "June" +#~ msgstr "Jún" + +#~ msgid "July" +#~ msgstr "Júl" + +#~ msgid "August" +#~ msgstr "August" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Október" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "December" diff --git a/etimedate/locale/sr.po b/etimedate/locale/sr.po new file mode 100755 index 0000000..2c3398c --- /dev/null +++ b/etimedate/locale/sr.po @@ -0,0 +1,146 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etimedate 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-12-02 04:11+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Време и датум" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&ОК" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Примени" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Системско време. -> Морате бити суперкорисник! <-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "&Одустани" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Време/датум" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Временске зоне" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "Грешка у сетовању времена. Вероватно нисте суперкорисник!" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Не могу да сетујем временску зону!" + +#~ msgid "H-" +#~ msgstr "С-" + +#~ msgid "H+" +#~ msgstr "С+" + +#~ msgid "M-" +#~ msgstr "М-" + +#~ msgid "M+" +#~ msgstr "М+" + +#~ msgid "Su" +#~ msgstr "Не" + +#~ msgid "Mo" +#~ msgstr "По" + +#~ msgid "Tu" +#~ msgstr "Ут" + +#~ msgid "We" +#~ msgstr "Ср" + +#~ msgid "Th" +#~ msgstr "Че" + +#~ msgid "Fr" +#~ msgstr "Пе" + +#~ msgid "St" +#~ msgstr "Су" + +#~ msgid "Y-" +#~ msgstr "Г-" + +#~ msgid "Previous year." +#~ msgstr "Претходна година." + +# msgid "M-" +# msgstr "" +#~ msgid "Previous month." +#~ msgstr "Претходни месец." + +# msgid "M+" +# msgstr "" +#~ msgid "Next month." +#~ msgstr "Следеђи месец." + +#~ msgid "Y+" +#~ msgstr "Г+" + +#~ msgid "Next year." +#~ msgstr "Следећа година." + +#~ msgid "January" +#~ msgstr "Јануар" + +#~ msgid "Febuary" +#~ msgstr "Фебруар" + +#~ msgid "March" +#~ msgstr "Март" + +#~ msgid "April" +#~ msgstr "Април" + +#~ msgid "May" +#~ msgstr "Мај" + +#~ msgid "June" +#~ msgstr "Јун" + +#~ msgid "July" +#~ msgstr "Јул" + +#~ msgid "August" +#~ msgstr "Август" + +#~ msgid "September" +#~ msgstr "Септембар" + +#~ msgid "October" +#~ msgstr "Октобар" + +#~ msgid "November" +#~ msgstr "Новембар" + +#~ msgid "December" +#~ msgstr "Децембар" diff --git a/etip/Makefile b/etip/Makefile new file mode 100755 index 0000000..d7e1f0f --- /dev/null +++ b/etip/Makefile @@ -0,0 +1,21 @@ + +CPPFILES = etip.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp +TARGET = etip + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/etip/etip.cpp b/etip/etip.cpp new file mode 100755 index 0000000..cf36cdb --- /dev/null +++ b/etip/etip.cpp @@ -0,0 +1,145 @@ +/* + * $Id$ + * + * Tip of the day + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "etip.h" +#include +#include +#include +#include +#include + +#include "../edelib2/Config.h" +#include "../edelib2/NLS.h" + +#include "../edeconf.h" + +// graphics +#include "icons/hint.xpm" + +#define TOTALTIPS 7 + + +static char *tips[TOTALTIPS]; +static int activeTip = 0; +static edelib::Config conf("EDE Team", "etip"); + + +fltk::CheckButton* show_check; +fltk::InvisibleBox* tipsBox; + +static void cb_Previous(fltk::Button*, void*) { + if (activeTip>0 && activeTip<=TOTALTIPS-1) { + activeTip--; + } else { + activeTip = TOTALTIPS-1; + } + tipsBox->label(tips[activeTip]); + tipsBox->window()->redraw(); +} + +static void cb_Next(fltk::Button*, void*) { + if (activeTip>=0 && activeTiplabel(tips[activeTip]); + tipsBox->window()->redraw(); +} + +static void cb_Close(fltk::Button*, void*) { + conf.set_section("Tips"); + conf.write("Show", !show_check->value()); + conf.flush(); + exit(0); +} + +#include + +int main (int argc, char **argv) { + + fltk::Window* w; + //fl_init_locale_support("etip", PREFIX"/share/locale"); + bool show = true; + conf.set_section("Tips"); + conf.read("Show", show, true); + if (!show) + return 0; + tips[0]=_("To start any application is simple. Click on the EDE button, go to the Programs menu, select category and click on the name of program that you wish to start."); + tips[1]=_("To exit the Equinox Desktop Environment, click first on the EDE button then Logout."); + tips[2]=_("To lock the computer, click first on the EDE button and then Lock."); + tips[3]=_("To configure your computer, click on the EDE button, Panel menu and then Control panel."); + tips[4]=_("To add a program that is not in the Programs menu, click on the EDE button, Panel menu, and then Edit panels menu."); + tips[5]=_("Notice that this is still a development version, so please send your bug reports or comments on EDE forum, EDE bug reporting system (on project's page), or karijes@users.sourceforge.net."); + tips[6]=_("You can download the latest release on: http://sourceforge.net/projects/ede."); + + srand (time(NULL)); + activeTip = rand()%7; + + {fltk::Window* o = new fltk::Window(400, 210, "Useful tips and tricks"); + w = o; + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(10, 15, 60, 145); + o->set_vertical(); + o->image(&fltk::xpmImage(hint_xpm)); + } + {fltk::Group* o = new fltk::Group(80, 15, 310, 125); + o->box(fltk::BORDER_BOX); +// o->color((fltk::Color)0xf4da1200); + o->color(fltk::WHITE); + o->labelsize(18); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP|fltk::ALIGN_WRAP); + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(1, 1, 308, 45, _("Welcome to Equinox Desktop Environment")); + o->box(fltk::FLAT_BOX); + o->color((fltk::Color)0xf4da1200); + o->labelcolor((fltk::Color)32); + o->labelsize(18); + o->align(fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP); + } + {fltk::InvisibleBox* o = tipsBox = new fltk::InvisibleBox(5, 46, 300, 78); + o->box(fltk::FLAT_BOX); + o->color(fltk::WHITE); + o->align(fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP); + fltk::Group::current()->resizable(o); + o->label(tips[activeTip]); + o->window()->redraw(); + } + o->end(); + fltk::Group::current()->resizable(o); + } + {fltk::CheckButton* o = show_check = new fltk::CheckButton(80, 145, 310, 25, _("Do not show this dialog next time")); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP); + } + {fltk::Group* o = new fltk::Group(0, 175, 400, 40); + o->begin(); + {fltk::InvisibleBox* o = new fltk::InvisibleBox(0, 5, 110, 40); + fltk::Group::current()->resizable(o); + } + {fltk::Button* o = new fltk::Button(110, 0, 90, 25, _("@< &Previous")); + o->callback((fltk::Callback*)cb_Previous); + o->align(fltk::ALIGN_WRAP); + } + {fltk::Button* o = new fltk::Button(205, 0, 90, 25, _("&Next @>")); + o->callback((fltk::Callback*)cb_Next); + } + {fltk::Button* o = new fltk::Button(300, 0, 90, 25, _("&Close")); + o->callback((fltk::Callback*)cb_Close); + } + o->end(); + } + o->end(); + o->size_range(o->w(), o->h()); + } + w->show(argc, argv); + return fltk::run(); +} diff --git a/etip/etip.fld b/etip/etip.fld new file mode 100755 index 0000000..bd5ae9c --- /dev/null +++ b/etip/etip.fld @@ -0,0 +1,100 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Tips for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "EDE_Config.h"} {} + +decl {\#include "NLS.h"} {} + +decl {char *tips[5];} {} + +decl {int activeTip = 0;} {} + +decl {EDE_Config conf("EDE Team", "etip");} {} + +Function {} {open +} { + code {//fl_init_locale_support("etip", PREFIX"/share/locale"); +bool show = true; +conf.set_section("Tips"); +conf.read("Show", show, true); +if (!show) + return 0; +tips[0]=_("To start any application is simple. Press on the EDE button, go to the Programs menu, select category and click on the wished program."); +tips[1]=_("To exit the Equinox Desktop environment, press EDE button and then logout."); +tips[2]=_("To lock the computer, press EDE button and then lock."); +tips[3]=_("To setup things on the computer, press EDE button, Panel menu and then the Control panel."); +tips[4]=_("To add a program that is not in the Programs menu, click on the EDE button, Panel menu, and then Edit panels menu.");} {} + {fltk::Window} {} { + label {Startup tips} open selected + xywh {394 319 400 205} resizable + extra_code {o->size_range(o->w(), o->h());} visible + } { + {fltk::InvisibleBox} {} { + xywh {10 15 60 145} image {/home/vedran/ede/ede2/etip/icons/hint.xpm} + } + {fltk::CheckButton} show_check { + label {Do not show this dialog next time} + xywh {77 145 313 20} align 148 + } + {fltk::Group} {} {open + xywh {80 15 310 125} align 209 resizable box BORDER_FRAME color 0xf4da1200 labelsize 18 + } { + {fltk::InvisibleBox} tipsBox { + xywh {1 46 308 74} align 144 resizable box FLAT_BOX color 7 + extra_code {o->label(tips[activeTip]); +o->window()->redraw();} + } + {fltk::InvisibleBox} {} { + label {Welcome to Equinox Desktop Environment} + xywh {5 5 300 45} align 144 box FLAT_BOX color 0xf4da1200 labelcolor 32 labelsize 18 + } + } + {fltk::Group} {} {open + xywh {0 165 400 40} + } { + {fltk::Button} {} { + label {<< &Previous} + callback {if (activeTip>0 && activeTip<=4) { +activeTip--; +tipsBox->label(tips[activeTip]); +tipsBox->window()->redraw(); +}} + xywh {125 7 90 23} align 128 + } + {fltk::Button} {} { + label {&Next >>} + callback {if (activeTip>=0 && activeTip<4) { +activeTip++; +tipsBox->label(tips[activeTip]); +tipsBox->window()->redraw(); +}} + xywh {215 7 90 23} + } + {fltk::InvisibleBox} {} { + xywh {0 5 157 30} + extra_code {// Fluid sucks in layouting... +o->parent()->resizable(o);} + } + {fltk::Button} {} { + label {&Close} + callback {//Fl_Config conf(fl_find_config_file("apps/etip.conf", 1)); +conf.set_section("Tips"); +conf.write("Show", !show_check->value()); +conf.flush(); +exit(0);} + xywh {320 7 70 23} + } + } + } +} diff --git a/etip/etip.h b/etip/etip.h new file mode 100755 index 0000000..0a04635 --- /dev/null +++ b/etip/etip.h @@ -0,0 +1,20 @@ +/* + * $Id$ + * + * Tip of the day + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef etip_h +#define etip_h +#include +#include +#include +#include +#include +#endif diff --git a/etip/icons/hint.xpm b/etip/icons/hint.xpm new file mode 100755 index 0000000..68959a6 --- /dev/null +++ b/etip/icons/hint.xpm @@ -0,0 +1,820 @@ +/* XPM */ +static char * hint_xpm[] = { +"48 48 769 2", +" c None", +". c #C8BC92", +"+ c #E4DBAC", +"@ c #F3EBC2", +"# c #FAF5DF", +"$ c #FBF9ED", +"% c #FCF9F2", +"& c #FBF9EC", +"* c #F8F3DC", +"= c #F3EABB", +"- c #E1D290", +"; c #AA975E", +"> c #D9D2B3", +", c #EDE9D3", +"' c #F6F5F1", +") c #FAF8F3", +"! c #FEFCF4", +"~ c #FEFDF5", +"{ c #FEFDF3", +"] c #FEFCF3", +"^ c #FEFCF2", +"/ c #FEFCF1", +"( c #FDFBEF", +"_ c #FBF8EE", +": c #F1E9B9", +"< c #C3B47C", +"[ c #929292", +"} c #EAE5C8", +"| c #F8F6F2", +"1 c #FCFBF6", +"2 c #FEFDF8", +"3 c #FEFDF7", +"4 c #FEFDF2", +"5 c #FEFDF1", +"6 c #FEFCF0", +"7 c #FEFCEE", +"8 c #FAF9EE", +"9 c #EAE2B9", +"0 c #AAAAAA", +"a c #DBD6C7", +"b c #EEECE1", +"c c #FBFAF6", +"d c #FEFDFA", +"e c #FEFDFB", +"f c #FEFDF4", +"g c #FEFDF0", +"h c #FEFDEF", +"i c #FEFCEF", +"j c #FCF9EE", +"k c #F1EED6", +"l c #BEB49E", +"m c #DBD7C7", +"n c #EEEDE5", +"o c #F8F7F4", +"p c #FEFDF9", +"q c #FEFDFC", +"r c #FEFDFD", +"s c #FEFDEE", +"t c #FCF9ED", +"u c #F5F2DC", +"v c #AEA384", +"w c #EEECE0", +"x c #FAF9F6", +"y c #FEFDFE", +"z c #CCCBCB", +"A c #D1D0CF", +"B c #C7C6BE", +"C c #D8D7CD", +"D c #F3EFD5", +"E c #777777", +"F c #E9E7D7", +"G c #F7F7F4", +"H c #FDFCF8", +"I c #787878", +"J c #656564", +"K c #FEFDF6", +"L c #71716C", +"M c #6A6A65", +"N c #FDFCED", +"O c #FAF7EC", +"P c #EDE7B9", +"Q c #E3E0D2", +"R c #F2F2F0", +"S c #5A5A59", +"T c #4D4D4C", +"U c #545451", +"V c #41413E", +"W c #F9F7EC", +"X c #C5B582", +"Y c #EBE9DE", +"Z c #515150", +"` c #FFFEF7", +" . c #FFFEF6", +".. c #FFFEF5", +"+. c #4E4E4B", +"@. c #FEFDED", +"#. c #F3EDC0", +"$. c #6B6B6B", +"%. c #DBD3B8", +"&. c #F3F3F0", +"*. c #5B5B5A", +"=. c #4F4F4E", +"-. c #FFFFF9", +";. c #FFFFF8", +">. c #FFFEF8", +",. c #4F4E4B", +"'. c #FEFDEC", +"). c #FEFDEB", +"!. c #FCFAEC", +"~. c #917E4C", +"{. c #E8E4CE", +"]. c #FFFFFF", +"^. c #545453", +"/. c #FFFFFB", +"(. c #FFFFFA", +"_. c #4D4C4A", +":. c #FFFEF4", +"<. c #E8DA86", +"[. c #8E8E8E", +"}. c #EEEBD8", +"|. c #585857", +"1. c #4C4B49", +"2. c #535250", +"3. c #F5EFBC", +"4. c #9A9A9A", +"5. c #F3F0E3", +"6. c #FDFCF7", +"7. c #60605E", +"8. c #585856", +"9. c #4A4947", +"0. c #FFFEF2", +"a. c #F8F6D7", +"b. c #C9C7C5", +"c. c #B2B1B0", +"d. c #959494", +"e. c #B3B2B0", +"f. c #BCBCBB", +"g. c #F5F4EF", +"h. c #FFFFFC", +"i. c #DEDEDB", +"j. c #EEEEEA", +"k. c #D9D9D3", +"l. c #FFFEF3", +"m. c #FFFEEF", +"n. c #FEFDEA", +"o. c #FAF7E8", +"p. c #707070", +"q. c #B6B5B4", +"r. c #E6E3DF", +"s. c #DAD6D1", +"t. c #5A5551", +"u. c #C1BAB2", +"v. c #DCD8D5", +"w. c #B5B2AF", +"x. c #F7F5F2", +"y. c #FFFFFE", +"z. c #9C9B90", +"A. c #FCFAED", +"B. c #5A5A5A", +"C. c #C2BFBA", +"D. c #EAE6E2", +"E. c #D5C9BE", +"F. c #7B7268", +"G. c #E8E3DE", +"H. c #E8E1DA", +"I. c #968A7E", +"J. c #898583", +"K. c #F4F4ED", +"L. c #FDFCF6", +"M. c #D8D7D3", +"N. c #FFFFFD", +"O. c #FFFEE6", +"P. c #FFFEF0", +"Q. c #FEFDE9", +"R. c #6F6F66", +"S. c #FDF9E8", +"T. c #5E5E5E", +"U. c #8D8A88", +"V. c #E6E2DC", +"W. c #D9C9B9", +"X. c #9C8979", +"Y. c #B4A89B", +"Z. c #E7DED3", +"`. c #CBBBA7", +" + c #94887A", +".+ c #C6C0B8", +"++ c #A6A4A2", +"@+ c #F2EFE2", +"#+ c #FDFCF4", +"$+ c #848380", +"%+ c #D2D1CC", +"&+ c #FFFEE8", +"*+ c #C7C6B7", +"=+ c #7A7A70", +"-+ c #FCF8D9", +";+ c #626262", +">+ c #B3AFAB", +",+ c #E8E1D9", +"'+ c #CBB4A0", +")+ c #7C6C5B", +"!+ c #E1D8CC", +"~+ c #DFCFBD", +"{+ c #A69482", +"]+ c #C3BBB2", +"^+ c #EDE9E6", +"/+ c #CFC9C2", +"(+ c #949391", +"_+ c #EEEAD4", +":+ c #FCFBF3", +"<+ c #D8D7D1", +"[+ c #686865", +"}+ c #FFFEE7", +"|+ c #FFFEE4", +"1+ c #7E7E74", +"2+ c #D8D7C7", +"3+ c #F8F2B6", +"4+ c #807150", +"5+ c #CAC5B9", +"6+ c #B3B3B3", +"7+ c #DCD7D1", +"8+ c #DBCEC1", +"9+ c #AB9884", +"0+ c #9E8F81", +"a+ c #E7DDD1", +"b+ c #D2BFA9", +"c+ c #958475", +"d+ c #E2DCD5", +"e+ c #DED3C6", +"f+ c #B4A694", +"g+ c #83807D", +"h+ c #E5DFBF", +"i+ c #FAF8F2", +"j+ c #9D9C97", +"k+ c #858481", +"l+ c #FEFDCD", +"m+ c #FFFEDE", +"n+ c #FFFEF1", +"o+ c #A09F93", +"p+ c #8B8A7F", +"q+ c #FEFCEB", +"r+ c #E6D579", +"s+ c #B49E58", +"t+ c #D3CCB0", +"u+ c #C2C0B9", +"v+ c #B5B3B0", +"w+ c #E6DFD6", +"x+ c #C3B4A5", +"y+ c #917F70", +"z+ c #D2C5B8", +"A+ c #DECEBD", +"B+ c #AB9984", +"C+ c #B5A99C", +"D+ c #E8E0D8", +"E+ c #BEAE9D", +"F+ c #B6ADA3", +"G+ c #B6B2AE", +"H+ c #9A9997", +"I+ c #CDC3A5", +"J+ c #FDFCF2", +"K+ c #7B7B75", +"L+ c #B2B1AB", +"M+ c #FEFCBF", +"N+ c #FFFDD6", +"O+ c #FFFEEE", +"P+ c #E1E0CE", +"Q+ c #828177", +"R+ c #D1D0BF", +"S+ c #FEFBED", +"T+ c #8A722C", +"U+ c #C8B876", +"V+ c #DBD3BD", +"W+ c #CBC3B4", +"X+ c #6B6865", +"Y+ c #E9E4DD", +"Z+ c #EDE8E3", +"`+ c #D5CDC5", +" @ c #B2A69A", +".@ c #B4A493", +"+@ c #8D7D6E", +"@@ c #DCD4CC", +"#@ c #DBCEC0", +"$@ c #BAAA9B", +"%@ c #EAE4E0", +"&@ c #E2DCD6", +"*@ c #999794", +"=@ c #EBE8D5", +"-@ c #FAF8F0", +";@ c #74746E", +">@ c #A09F98", +",@ c #FEFDE3", +"'@ c #FEFBAC", +")@ c #DDDCCA", +"!@ c #78786E", +"~@ c #BEBDAD", +"{@ c #FEFDE8", +"]@ c #F7EFB6", +"^@ c #463814", +"/@ c #D3C693", +"(@ c #DAD2BB", +"_@ c #D9D4C6", +":@ c #917E6B", +"<@ c #B7A68F", +"[@ c #E2D3C2", +"}@ c #EDE4D9", +"|@ c #F1EEE9", +"1@ c #F1EEEB", +"2@ c #D7D1CA", +"3@ c #A39489", +"4@ c #DFD6CD", +"5@ c #B4A292", +"6@ c #C3B8AD", +"7@ c #E3DBD3", +"8@ c #C4B9AC", +"9@ c #888683", +"0@ c #D5CEB5", +"a@ c #F9F6EF", +"b@ c #7B7B73", +"c@ c #8E8D86", +"d@ c #C3C2B7", +"e@ c #FEFDC6", +"f@ c #FDFAA0", +"g@ c #BFBEAF", +"h@ c #727268", +"i@ c #CCCBBB", +"j@ c #FDFBED", +"k@ c #A58939", +"l@ c #675325", +"m@ c #D1C69E", +"n@ c #D9D4C2", +"o@ c #DFDBD3", +"p@ c #BDAE9B", +"q@ c #927F6A", +"r@ c #D5C4B1", +"s@ c #E9DFD2", +"t@ c #EEE7DF", +"u@ c #F2EEEB", +"v@ c #F1EFED", +"w@ c #D9D2CB", +"x@ c #C8BAAB", +"y@ c #A09183", +"z@ c #D5C8B8", +"A@ c #948C82", +"B@ c #E7DFB9", +"C@ c #FCFAF1", +"D@ c #B2B1A4", +"E@ c #818077", +"F@ c #A3A26A", +"G@ c #B9B8AB", +"H@ c #FEFCBE", +"I@ c #C3C297", +"J@ c #717167", +"K@ c #7F7E74", +"L@ c #D8D7C5", +"M@ c #FDFBEA", +"N@ c #EFE6A8", +"O@ c #3E3E3E", +"P@ c #807252", +"Q@ c #CBBEA1", +"R@ c #D9D2C4", +"S@ c #E4DED6", +"T@ c #DBD2C5", +"U@ c #897664", +"V@ c #A59584", +"W@ c #E7DED2", +"X@ c #ECE5DE", +"Y@ c #F0EBE8", +"Z@ c #F3F1EE", +"`@ c #BDB1A8", +" # c #B9AFA5", +".# c #E4DBCF", +"+# c #C1B3A1", +"@# c #7F7C78", +"## c #797979", +"$# c #F3EED4", +"%# c #FCF9EF", +"&# c #FEFCEA", +"*# c #EDECDB", +"=# c #A7A56B", +"-# c #8E8D82", +";# c #74746A", +"># c #747469", +",# c #747356", +"'# c #807F75", +")# c #EDECD9", +"!# c #F6F1D1", +"~# c #6F6F6F", +"{# c #848484", +"]# c #8C867C", +"^# c #B3AA93", +"/# c #DCD2C8", +"(# c #E7DFD4", +"_# c #E7E2DC", +":# c #C7B5A0", +"<# c #A79481", +"[# c #CEC2B6", +"}# c #EBE5DE", +"|# c #EFEBE7", +"1# c #F3F0EE", +"2# c #F0EDEA", +"3# c #E3DAD3", +"4# c #D2C1B3", +"5# c #D2C4B2", +"6# c #988E82", +"7# c #858584", +"8# c #ADA48D", +"9# c #F3EFDF", +"0# c #FAF9EF", +"a# c #FEFDBD", +"b# c #D0CD7C", +"c# c #F8F4DC", +"d# c #988D72", +"e# c #939393", +"f# c #B1ABA1", +"g# c #E0D2C4", +"h# c #E8DFD1", +"i# c #EBE3DA", +"j# c #DED2C5", +"k# c #CEBDAB", +"l# c #D0C4B8", +"m# c #EBE5DF", +"n# c #F0EEEB", +"o# c #F4F1EF", +"p# c #F1EDEA", +"q# c #EBE4DD", +"r# c #DDCEBF", +"s# c #C1B19F", +"t# c #8C8884", +"u# c #AFA896", +"v# c #F0EBD1", +"w# c #FEFBEE", +"x# c #FEFCE8", +"y# c #FDFA9D", +"z# c #FEFDCF", +"A# c #FEFDCB", +"B# c #FEFDE7", +"C# c #FDF996", +"D# c #FEFDE2", +"E# c #FEFCE7", +"F# c #FBF9EA", +"G# c #F3F0D4", +"H# c #9B9077", +"I# c #838383", +"J# c #B6B3B1", +"K# c #CEC3B4", +"L# c #E6DACC", +"M# c #E9DED1", +"N# c #E7DCD1", +"O# c #DECFBF", +"P# c #E0D5C8", +"Q# c #EFEDE9", +"R# c #EFECE8", +"S# c #E8DBCD", +"T# c #D3C4B2", +"U# c #A3988C", +"V# c #A4A3A2", +"W# c #858585", +"X# c #E4DBB2", +"Y# c #F9F6EC", +"Z# c #FCF8E4", +"`# c #FCF6B6", +" $ c #FCF8B1", +".$ c #FEFAB0", +"+$ c #FEFBB3", +"@$ c #FEFBB7", +"#$ c #FEFCB6", +"$$ c #FEFCB8", +"%$ c #FEFBB2", +"&$ c #FEFAC5", +"*$ c #FCFBDA", +"=$ c #F8F8EB", +"-$ c #EAE4C2", +";$ c #8B8B8B", +">$ c #8D8883", +",$ c #DDCCB8", +"'$ c #E7D9C8", +")$ c #E9DCCC", +"!$ c #E7DBCA", +"~$ c #E7DCCF", +"{$ c #EAE3DC", +"]$ c #E8DFD3", +"^$ c #E3D7C8", +"/$ c #DBCCBA", +"($ c #B9AA97", +"_$ c #8E8A83", +":$ c #6C6C6C", +"<$ c #948454", +"[$ c #F5EBA6", +"}$ c #F6EDB3", +"|$ c #F7F0B2", +"1$ c #F9F2B2", +"2$ c #FCF6B7", +"3$ c #FCF7B7", +"4$ c #FDF9B7", +"5$ c #FDFAB8", +"6$ c #FCF8B7", +"7$ c #FBF7B6", +"8$ c #FAF4B5", +"9$ c #F4EB92", +"0$ c #A69D6D", +"a$ c #959595", +"b$ c #B1B1B1", +"c$ c #969592", +"d$ c #B4ACA2", +"e$ c #DFD2C2", +"f$ c #E0D2C1", +"g$ c #E5D7C7", +"h$ c #E7DBCB", +"i$ c #E5D9CB", +"j$ c #E2D5C7", +"k$ c #DCCFBE", +"l$ c #D2C3B0", +"m$ c #B9A997", +"n$ c #A09485", +"o$ c #93918F", +"p$ c #F7F1C0", +"q$ c #F1E7A4", +"r$ c #F3EAA3", +"s$ c #F6EEB7", +"t$ c #F8F1BF", +"u$ c #F8F1BE", +"v$ c #F9F3BC", +"w$ c #F9F3B5", +"x$ c #F9F3AE", +"y$ c #F8EF9F", +"z$ c #F8F0AB", +"A$ c #F4EA99", +"B$ c #D9C14F", +"C$ c #938355", +"D$ c #918E8A", +"E$ c #AEACA9", +"F$ c #BDB6AF", +"G$ c #C8BBAD", +"H$ c #CCBCAB", +"I$ c #CDBFAE", +"J$ c #CFC1B1", +"K$ c #CEBFAD", +"L$ c #C1B09F", +"M$ c #B19F8D", +"N$ c #A49483", +"O$ c #A19A91", +"P$ c #F5E79A", +"Q$ c #F6F0C1", +"R$ c #FAF8E6", +"S$ c #FBFAEE", +"T$ c #FAF5CE", +"U$ c #F9F5CA", +"V$ c #FAF6CE", +"W$ c #FBF7D0", +"X$ c #F6EEB3", +"Y$ c #F0E59A", +"Z$ c #DDC862", +"`$ c #968336", +" % c #A18D4B", +".% c #948960", +"+% c #7D7D7C", +"@% c #9D9C9C", +"#% c #6F6E6A", +"$% c #72665C", +"%% c #A18F7D", +"&% c #AD9984", +"*% c #9E8C77", +"=% c #A1907B", +"-% c #9D8F7E", +";% c #A9A096", +">% c #A39F9C", +",% c #F3E3A6", +"'% c #EADB9B", +")% c #F4E7A8", +"!% c #F7E9A9", +"~% c #F7EAA9", +"{% c #F5E89B", +"]% c #F2E187", +"^% c #EDDB7A", +"/% c #E7D573", +"(% c #DFCB6B", +"_% c #D7C367", +":% c #BCA85A", +"<% c #9D8B47", +"[% c #6C612F", +"}% c #928349", +"|% c #B6A977", +"1% c #B1AB98", +"2% c #969696", +"3% c #919191", +"4% c #918A6F", +"5% c #49422C", +"6% c #3C3835", +"7% c #8C8278", +"8% c #ABA196", +"9% c #9F9891", +"0% c #A09E9B", +"a% c #F8F3DD", +"b% c #F8F0D5", +"c% c #E6D69B", +"d% c #DACC96", +"e% c #D4C68E", +"f% c #D6C686", +"g% c #CDBC70", +"h% c #CAB766", +"i% c #C3B064", +"j% c #C6B477", +"k% c #C9BE8F", +"l% c #D3C38A", +"m% c #A28E55", +"n% c #3B3B3B", +"o% c #BDB083", +"p% c #DAC88C", +"q% c #D5C692", +"r% c #968E72", +"s% c #6E6E6E", +"t% c #999999", +"u% c #8C8C8C", +"v% c #C1B693", +"w% c #9D9269", +"x% c #545454", +"y% c #F0DC96", +"z% c #F6EBC1", +"A% c #FBF8EA", +"B% c #FCFBF1", +"C% c #FDFBF2", +"D% c #F9F4DA", +"E% c #F3EAC3", +"F% c #F1E6BD", +"G% c #ECE2BA", +"H% c #EBE2BD", +"I% c #DFD4A9", +"J% c #BDAA64", +"K% c #8B8054", +"L% c #828282", +"M% c #A1A1A1", +"N% c #9F9F9F", +"O% c #464646", +"P% c #D7C37C", +"Q% c #E4CD7B", +"R% c #E4CF86", +"S% c #E4D393", +"T% c #DDCD93", +"U% c #DECD92", +"V% c #CFBF82", +"W% c #C3B377", +"X% c #505050", +"Y% c #F3E6B6", +"Z% c #E3D296", +"`% c #F1E1A8", +" & c #F4E7B9", +".& c #F2E4B1", +"+& c #EFDD9C", +"@& c #E7D288", +"#& c #DFC97A", +"$& c #D9C374", +"%& c #CCB76D", +"&& c #C4B069", +"*& c #A29565", +"=& c #948A62", +"-& c #878787", +";& c #696969", +">& c #424242", +",& c #ACA076", +"'& c #BFB077", +")& c #C7B572", +"!& c #C6B472", +"~& c #887D57", +"{& c #494949", +"]& c #F7EFD6", +"^& c #F4EAC7", +"/& c #E6D8AA", +"(& c #D4C697", +"_& c #D1C59C", +":& c #CEC190", +"<& c #C4B275", +"[& c #BDAA67", +"}& c #B6A361", +"|& c #AE9D5D", +"1& c #C8BD9A", +"2& c #D1C599", +"3& c #9A8D55", +"4& c #727272", +"5& c #717171", +"6& c #EBD792", +"7& c #F1E5BA", +"8& c #F9F5E6", +"9& c #FCFAF4", +"0& c #FBF9EE", +"a& c #F9F6EA", +"b& c #F5EED7", +"c& c #ECE3C0", +"d& c #EADFBC", +"e& c #E8E0C3", +"f& c #D2C492", +"g& c #B8A462", +"h& c #837646", +"i& c #434343", +"j& c #EFE6BF", +"k& c #DFD099", +"l& c #EDE0B1", +"m& c #EEE2B3", +"n& c #EBDCA7", +"o& c #E6D597", +"p& c #DDC982", +"q& c #D3BF72", +"r& c #CDB86D", +"s& c #C9B46A", +"t& c #BCAA65", +"u& c #9F8F55", +"v& c #72673C", +"w& c #484848", +"x& c #F1E9CB", +"y& c #E6DCB9", +"z& c #D4C9A3", +"A& c #CCC19A", +"B& c #C3B480", +"C& c #B9A86C", +"D& c #B2A060", +"E& c #AC9B5C", +"F& c #A59558", +"G& c #BFB38B", +"H& c #CCBF92", +"I& c #92824E", +"J& c #535353", +"K& c #ABA48D", +"L& c #E4D4A3", +"M& c #F0E9CE", +"N& c #F8F6EB", +"O& c #F8F5E9", +"P& c #EFE7CC", +"Q& c #EBE2C2", +"R& c #E7DEBC", +"S& c #E7DEC1", +"T& c #D9D0A9", +"U& c #C4B57F", +"V& c #AEA070", +"W& c #605F5A", +"X& c #868686", +"Y& c #B1B0AD", +"Z& c #DCD5B8", +"`& c #E0D4A4", +" * c #E0D2A1", +".* c #E0D19D", +"+* c #DAC98F", +"@* c #D0BC7A", +"#* c #C7B46C", +"$* c #C3B068", +"%* c #BEAA66", +"&* c #AB9C62", +"** c #898578", +"=* c #8E8D8C", +"-* c #B7B7B7", +";* c #A9A8A4", +">* c #B6B098", +",* c #AFA682", +"'* c #AA9E73", +")* c #928553", +"!* c #847847", +"~* c #6B6242", +"{* c #36311D", +"]* c #3E3A2C", +"^* c #696968", +"/* c #515151", +"(* c #767676", +"_* c #242424", +":* c #191919", +"<* c #1F1F1F", +"[* c #666666", +"}* c #676767", +"|* c #353535", +"1* c #3C3C3C", +"2* c #757575", +"3* c #4E4E4E", +"4* c #8D8D8D", +" ", +" ", +" . + @ # $ % & * = - ; ", +" > , ' ) ! ~ { ] ^ / / ( _ : < [ ", +" } | 1 2 2 3 3 ~ { { 4 5 5 6 7 8 9 0 ", +" a b c 2 d e e d 3 ~ f { { 4 5 g h i j k l ", +" m n o p q r r e p 3 ~ ~ f { { 5 g g s h t u v ", +" w x d q r y z A p 3 3 ~ ~ f B C 5 g h s s t D E ", +" F G H e r r r I J p 2 3 K ~ f L M 5 g h s s N O P I ", +" Q R H d q r r r S T p p 3 3 ~ ~ U V 4 g g s s s N W X ", +" Y o d e q q q q S Z d p 2 ` ...+.+.4 g g s @.@.@.N #.$. ", +" %.&.H d e q r r r *.=.d -.;.>.` .,.,.{ 5 g s '.).).s !.~. ", +" {.o p d e q r ].r S ^./.(.-.;.>.` _.,.:.4 h @.'.).).@.7 <.[. ", +" }.1 p d e q r r r |.Z /./.(.(.-.>.1.2...:.g s ).).).@.s 3.4. ", +" 5.6.p d e e q q r 7.8././.(.(.-.-.9.2. ...0.h @.).).).s a.[. b.c.d.e.f. ", +" g.3 p p d e e e h.i.j./.h././././.k.k.>. .l.m.@.n.).'.s o.p. q.r.s.t.u.v.w. ", +" x.3 2 p p e e e /././.y.y.h.]./.].-.(.>.` :.m.s n.z.).s A.B. C.D.E.F.G.H.I.J. ", +" K.L.K M.p p d d N.N.N./.N.(.N.(.N.N.;.O. .:.P.'.Q.R.'.@.S.T. U.V.W.X.Y.Z.`. +.+++ ", +" @+#+3 $+%+p d d &+(.(.y./.]./.].-.-.;.P. .0.m.).*+=+n.@.-+;+ >+,+'+)+!+~+{+]+^+/+(+ ", +" _+:+~ <+[+2 2 p ~ }+(.(.-.-.-.-.-.>.|+..l.m.'.Q.1+2+n.@.3+4+5+ 6+7+8+9+0+a+b+c+d+e+f+g+ ", +" h+i+f f j+k+3 2 2 l+;.-.;.>.>.` ` .m+l.n+@.n.o+p+Q.n.q+r+s+t+u+ v+w+x+y+z+A+B+C+D+E+F+G+H+", +" I+g.J+g 4 K+L+f ~ M+K . . .......:.N+O+).n.P+Q+R+n.).S+T+U+V+W+X+]+Y+Z+`+ @.@+@@@#@$@%@&@*@", +" =@-@h h g ;@>@4 ,@{ { l.l.l.l.n+P.'@).Q.)@!@~@{@Q.).]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@", +" 0@a@^ s @.s b@c@d@e@5 g g P.P.m.@.f@{@g@h@i@Q.Q.'.j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@7@z@A@ ", +" B@C@/ ).'.'.D@E@F@G@).).Q.Q.Q.H@I@J@K@L@Q.{@).M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@^+`@ #.#+#@# ", +" ##$#%#&#n.n.n.*#=#-#;#J@;#>#>#,#'#)#{@{@{@Q.M@!#~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7# ", +" 8#9#0#6 n.n.n.a#e@2+R+R+R+R+b#Q.Q.Q.{@'.M@c#d#e# f#g#h#i#j#k#l#m#n#o#p#q#r#s#t# ", +" u#v#t w#x#{@,@y#z#l+A#A#B#C#D#B#B#E#F#G#H#I# J#K#L#M#N#O#P#q#Q#R#i#S#T#U#V# ", +" W#X#Y#Z#`# $.$+$@$#$$$$$%$%$&$*$=$-$[ ;$ >$,$'$)$!$~${$}#]$^$/$($_$ ", +" :$<$[$}$|$1$2$3$4$5$5$6$7$8$9$0$a$b$ c$d$e$f$g$h$i$j$k$l$m$n$o$ ", +" p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$ E$F$G$H$I$J$K$L$M$N$O$ ", +" P$Q$R$S$F#T$U$V$W$X$Y$Z$`$ %.%+% @%#%$%%%&%*%=%-%;%>% ", +" ,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2% 3%4%5%6%7%8%9%0% ", +" a%b%c%d%e%f%g%h%i%j%k%l%m%n%T.o%p%q%r%s%{#[ t%u%v%w%x%e# ", +" y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%2% ", +" Y%Z%`% &.&+&@&#&$&%&&&*&=&-& ;&>&,&'&)&!&~&{& ", +" ]&^&/&(&_&:&<&[&}&|&1&2&3&;+ I 4&5& ", +" 6&7&8&9&0&a&b&c&d&e&f&g&h&i& ", +" j&k&l&m&n&o&p&q&r&s&t&u&v&w& ", +" 9#x&y&z&A&B&C&D&E&F&G&H&I&J& ", +" K&L&M&N&O&P&Q&R&S&T&U&V&W&X& ", +" Y&Z&`& *.*+*@*#*$*%*&***=* ", +" -*;*>*,*'*)*!*~*{*]*^*-& ", +" N%/*I#(*_*:*<*[* ", +" }*;+4&|*1*2* ", +" 3*T.(*4* ", +" ", +" "}; diff --git a/etip/locale/id.po b/etip/locale/id.po new file mode 100755 index 0000000..ffba7b6 --- /dev/null +++ b/etip/locale/id.po @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-11-29 15:50+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +"Untuk memulai suatu aplikasi, caranya sederhana. Tekan tombol EDE, gerakkan " +"ke menu Programs, pilih kategori dan klik pada program yang diinginkan." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" +"Untuk keluar dari Equinox Desktop Environment, tekan tombol EDE dan kemudian " +"logout." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "Untuk mengunci komputer, tekan tombol EDE dan kemudian lock." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +"Untuk mensetup hal-hal tertentu di komputer anda, tekan tombol EDE, menu " +"Panel dan kemudian Control panel." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +"Untuk menambahkan suatu program yang tidak berada di menu Programs, klik " +"pada tombol EDE, menu Panel, dan kemudian menu Edit panel/" + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "Tips startup" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "Jangan perlihatkan dialog ini lain kali" + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr "Selamat datang di Equinox Desktop Environment" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< &Sebelum" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "&Berikut >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "&Tutup" diff --git a/etip/locale/messages.pot b/etip/locale/messages.pot new file mode 100755 index 0000000..c653490 --- /dev/null +++ b/etip/locale/messages.pot @@ -0,0 +1,81 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" + +#: etip.cpp:810 +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" + +#: etip.cpp:811 +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" + +#: etip.cpp:812 +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" + +#: etip.cpp:813 +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "" + +#: etip.cpp:840 +msgid "Welcome to Equinox Desktop Environment version " +msgstr "" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "" + +#: etip.cpp:859 +msgid "&Close" +msgstr "" diff --git a/etip/locale/ru.po b/etip/locale/ru.po new file mode 100755 index 0000000..ad59f13 --- /dev/null +++ b/etip/locale/ru.po @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +" , EDE, " +", ݣ ." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr " EDE EDE, ." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" +" , EDE ." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +" - EDE \"" +"\" ." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +" EDE, ," +" , ." + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr " " + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr " " + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr " Equinox Desktop Environment" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< " + +#: etip.cpp:854 +msgid "&Next >>" +msgstr " >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "" diff --git a/etip/locale/sk.po b/etip/locale/sk.po new file mode 100755 index 0000000..dbc5079 --- /dev/null +++ b/etip/locale/sk.po @@ -0,0 +1,94 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etip 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +"Spustiť aplikáciu je jednoduché. Stlačte EDE tlačidlo, chodte do ponuky " +"Programy, zvoľte kategóriu a kliknite na želaný program." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" +"Ak chcete ukončiť prostredie Equinox Desktop environment, stlačte tlačidlo " +"EDE a potom odhlásenie." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" +"Na zamknutie počitača, stlačte EDE tlačidlo a potom zablokovať obrazovku." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +"Na nastavenie vecí na počítači, stlačte EDE tlačidlo, ponuku Panel a potom " +"Kontrólny panel." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +"Na pridanie programu, ktorý nie je ponuke Programy, kliknite na EDE " +"tlačidlo, ponuku Panel a potom Editovať ponuku panelu." + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "Úvodné typy" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "Nabudúce už tento dialóg nezobrazovať" + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr "Vitajte v prostredí Equinox Desktop Environment" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< &Späť" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "&Ďalej >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "&Zavrieť" diff --git a/etip/locale/sr.po b/etip/locale/sr.po new file mode 100755 index 0000000..f8862e9 --- /dev/null +++ b/etip/locale/sr.po @@ -0,0 +1,95 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: etip 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-12-02 04:19+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +"Стартовање апликације је веома просто. Притисните ЕДЕ тастер \"Програми\", " +"селектујте категорију и кликните на жељени програм." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" +"Да бисте изашли из ЕДЕ-а притисните ЕДЕ тастер и након тога кликните на " +"\"Излогуј ме\"." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" +"Да бисте закључали рачунар притисните ЕДЕ тастер и након тога кликните на " +"\"закључај\"." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +"Да бисте подесили разне ствари на вашем рачунару притисните ЕДЕ тастер, " +"након тога изаберите \"Панел\" мени и кликните на \"Контролни панел\" опцију." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +"Да бисте додали програм који није у менију \"Програми\" кликните на ЕДЕ " +"тастер, \"Панел\" мени и онда на \"Едитовање панела\" опцију." + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "Стартап савети" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "Не желим приказивање овог дијалога у будуће" + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr "Добродошли у Иквинокс Десктоп Окружење :)" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< &Претходни" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "&Следећи >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "&Затвори" diff --git a/evolume/Makefile b/evolume/Makefile new file mode 100755 index 0000000..858f02f --- /dev/null +++ b/evolume/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = evolume.cpp prefs.cpp ../edelib2/about_dialog.cpp ../edelib2/Util.cpp ../edelib2/Config.cpp ../edelib2/process.cpp ../edelib2/pty.cpp ../edelib2/Run.cpp +TARGET = evolume + + +POFILES = locale/ru.po\ + locale/sk.po\ + locale/hu.po + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/evolume/evolume.cpp b/evolume/evolume.cpp new file mode 100755 index 0000000..a23141a --- /dev/null +++ b/evolume/evolume.cpp @@ -0,0 +1,624 @@ +/* + * $Id$ + * + * Volume control application + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + + +// TODO: +// At the moment evolume is ALSA only - patches for OSS support +// are welcome + +#include "prefs.h" +#include "evolume.h" +#include "../edeconf.h" + +#include "../edelib2/about_dialog.h" + +#include +#include + + +using namespace fltk; +using namespace edelib; + + + + +// Global variables + +char device[1024]={0}; +Window *main_window=0; + +Config globalConfig("EDE Team", "evolume"); +bool simplemode = true; + + +// Main ALSA device functions + +void set_device(int mixer_fd, int device, Slider *device_sl, Slider *balance) +{ + int l = (unsigned int) ((1.0-(balance->value()) ) * device_sl->value() ); + int r = (unsigned int) ( (balance->value()) * device_sl->value()); + int v = (r << 8) | l; + if (ioctl (mixer_fd, MIXER_WRITE (device), &v) < 0) + alert(_("Cannot setup device, sorry.")); +} + +void get_device_info(int mixer_dev, Slider *sl, Slider *bal, + CheckButton *ck, int device) +{ + unsigned int devmask, recmask, recsrc, stereo; + volume real_volume; + + real_volume.left = real_volume.right = 0; + devmask = recmask = recsrc = stereo = 0; + + if (ioctl(mixer_dev, SOUND_MIXER_READ_DEVMASK, &devmask) == -1) + fprintf(stderr, "Read devmask failed.\n"); + if (devmask & (1 << (device))) + sl->activate(); + else + sl->deactivate(); + + if (ioctl(mixer_dev, SOUND_MIXER_READ_STEREODEVS, &stereo) == -1) + fprintf(stderr, "Read recsrc failed.\n"); + if ( stereo & (1 << (device) ) ) bal->activate(); + else ck->deactivate(); + + if (ioctl(mixer_dev, SOUND_MIXER_READ_RECMASK, &recmask) == -1) + fprintf(stderr, "Read recmask failed.\n"); + if ( recmask & (1 << (device) ) ) ck->activate(); + else ck->deactivate(); + + if (ioctl(mixer_dev, SOUND_MIXER_READ_RECSRC, &recsrc) == -1) + fprintf(stderr, "Read recsrc failed.\n"); + if ( recsrc & (1 << (device) ) ) ck->set(); + else ck->clear(); + + if ( ioctl(mixer_dev, MIXER_READ(device), &real_volume) < 0 ) { + fprintf(stderr, "Can't obtain current volume settings.\n"); + } + + float volume = real_volume.left + real_volume.right; + + float balance = 0; + balance = ( (1.0 * (unsigned char)real_volume.right ) / + (1.0 * ((unsigned char)real_volume.left + (unsigned char)real_volume.right)) ); + + if (volume == 0) + volume=1; + if (balance < 0) + balance=0.5; + sl->value(volume); + bal->value(balance); +} + +void set_mute(int mixer_fd, int device, Slider *device_sl, Slider *balance, CheckButton *check_button) +{ + int vol = 0; + + if ( check_button->value() ) + { + if (ioctl(mixer_fd, MIXER_WRITE(device), &vol) < 0 ) + fprintf(stderr, "Cannot set mute.\n"); + } + else { + volume real_volume; + double old_volume = device_sl->value(); + double old_balance = balance->value(); + real_volume.left = (unsigned char) ( (1.0 - (old_balance)) * old_volume ); + real_volume.right = (unsigned char) ( (old_balance) * old_volume); + if ( ioctl(mixer_fd, MIXER_WRITE(device), &real_volume) < 0 ) + { + fprintf(stderr, "Cannot setup volume, sorry.\n"); + } + } +} + +void set_rec(int mixer_fd, int device, CheckButton *ck) +{ + unsigned int recsrc; + + if (ioctl(mixer_fd, SOUND_MIXER_READ_RECSRC, &recsrc) == -1) + printf("read recsrc failed\n"); + unsigned int new_recsrc = recsrc ^ ( 1 << device ); + + if (ioctl(mixer_fd, SOUND_MIXER_WRITE_RECSRC, &new_recsrc) == -1) + printf("oh no\n"); +} + +void update_info() +{ + mixer_info minfo; + + if (ioctl(mixer_device, SOUND_MIXER_INFO, &minfo) < 0) + fprintf(stderr, "Read device info failed.\n"); + else + { + char *title = (char*)malloc(strlen(_("Volume control: [%s]"))+strlen(minfo.name)); + sprintf(title,_("Volume control: [%s]"), minfo.name); + main_window->label(title); + } +} + + +// These functions set parameters for default look of sliders + +void default_look(Slider* slider) +{ + slider->type(Slider::TICK_BOTH); + slider->set_vertical(); + slider->minimum(-100); + slider->maximum(100); + slider->value(1); + slider->step(1); + slider->align(ALIGN_TOP); +} + +void default_look_b(Slider* balance_slider) +{ + balance_slider->type(1); + balance_slider->minimum(0.00); + balance_slider->maximum(1.00); + balance_slider->step(0.01); + balance_slider->value(0.01); +} + + +// Functions for various control groups - this is mostly copy-paste + +void cb_volume(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_VOLUME, volume_slider, volume_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_VOLUME, volume_slider, volume_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_VOLUME, volume_slider, volume_balance, volume_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_VOLUME, volume_rec); +} + +void cb_cd(Slider* o, void *i) { + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_CD, cd_slider, cd_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_CD, cd_slider, cd_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_CD, cd_slider, cd_balance, cd_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_CD, cd_rec); +} + +void cb_pcm(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_PCM, pcm_slider, pcm_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_PCM, pcm_slider, pcm_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_PCM, pcm_slider, pcm_balance, pcm_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_PCM, pcm_rec); +} + +void cb_synth(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_SYNTH, synth_slider, synth_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_SYNTH, synth_slider, synth_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_SYNTH, synth_slider, synth_balance, synth_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_SYNTH, synth_rec); +} + +void cb_line(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_LINE, line_slider, line_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_LINE, line_slider, line_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_LINE, line_slider, line_balance, line_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_LINE, line_rec); +} + +void cb_bass(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_BASS, bass_slider, bass_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_BASS, bass_slider, bass_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_BASS, bass_slider, bass_balance, bass_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_BASS, bass_rec); +} + +void cb_treble(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_TREBLE, treble_slider, treble_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_TREBLE, treble_slider, treble_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_TREBLE, treble_slider, treble_balance, treble_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_TREBLE, treble_rec); +} + +void cb_mic(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_MIC, mic_slider, mic_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_MIC, mic_slider, mic_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_MIC, mic_slider, mic_balance, mic_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_MIC, mic_rec); +} + +void cb_speaker(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_SPEAKER, speaker_slider, speaker_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_SPEAKER, speaker_slider, speaker_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_SPEAKER, speaker_slider, speaker_balance, speaker_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_SPEAKER, speaker_rec); +} + +void cb_imix(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_IMIX, imix_slider, imix_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_IMIX, imix_slider, imix_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_IMIX, imix_slider, imix_balance, imix_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_IMIX, imix_rec); +} + +void cb_igain(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_IGAIN, igain_slider, igain_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_IGAIN, igain_slider, igain_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_IGAIN, igain_slider, igain_balance, igain_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_IGAIN, igain_rec); +} + +void cb_ogain(Slider* o, void *i) +{ + int x = (int) i; + if (x == 1) set_device(mixer_device, SOUND_MIXER_OGAIN, ogain_slider, ogain_balance); + if (x == 2) set_device(mixer_device, SOUND_MIXER_OGAIN, ogain_slider, ogain_balance); + if (x == 3) set_mute(mixer_device, SOUND_MIXER_OGAIN, ogain_slider, ogain_balance, ogain_mute); + if (x == 4) set_rec(mixer_device, SOUND_MIXER_OGAIN, ogain_rec); +} + + +// Menu callback functions + +void cb_Quit(Widget*, void*) +{ + main_window->hide(); +} + +static void cb_About(Item*, void*) { + about_dialog("Volume Control","1.0",""); +} + +void cb_SimpleMode(Widget*, void*) { + if (!simplemode) { + simplemode = true; + synth_slider->hide(); + synth_balance->hide(); + synth_mute->hide(); + synth_rec->hide(); + bass_slider->hide(); + bass_balance->hide(); + bass_mute->hide(); + bass_rec->hide(); + treble_slider->hide(); + treble_balance->hide(); + treble_mute->hide(); + treble_rec->hide(); + mic_slider->hide(); + mic_balance->hide(); + mic_mute->hide(); + mic_rec->hide(); + speaker_slider->hide(); + speaker_balance->hide(); + speaker_mute->hide(); + speaker_rec->hide(); + imix_slider->hide(); + imix_balance->hide(); + imix_mute->hide(); + imix_rec->hide(); + igain_slider->hide(); + igain_balance->hide(); + igain_mute->hide(); + igain_rec->hide(); + ogain_slider->hide(); + ogain_balance->hide(); + ogain_mute->hide(); + ogain_rec->hide(); + main_window->resize(250,205); + } else { + simplemode = false; + synth_slider->show(); + synth_balance->show(); + synth_mute->show(); + synth_rec->show(); + bass_slider->show(); + bass_balance->show(); + bass_mute->show(); + bass_rec->show(); + treble_slider->show(); + treble_balance->show(); + treble_mute->show(); + treble_rec->show(); + mic_slider->show(); + mic_balance->show(); + mic_mute->show(); + mic_rec->show(); + speaker_slider->show(); + speaker_balance->show(); + speaker_mute->show(); + speaker_rec->show(); + imix_slider->show(); + imix_balance->show(); + imix_mute->show(); + imix_rec->show(); + igain_slider->show(); + igain_balance->show(); + igain_mute->show(); + igain_rec->show(); + ogain_slider->show(); + ogain_balance->show(); + ogain_mute->show(); + ogain_rec->show(); + main_window->resize(720,205); + } + globalConfig.set("Sound mixer", "Simplemode", simplemode); +} + + +// Main window design + +int main (int argc, char **argv) +{ +// fl_init_locale_support("evolume", PREFIX"/share/locale"); + + globalConfig.get("Sound mixer", "Device", device, "/dev/mixer", sizeof(device)); + globalConfig.get("Sound mixer", "Simplemode", simplemode, true); + + main_window = new Window(720, 205, _("Volume control")); + if (simplemode) main_window->resize(250,205); + main_window->begin(); + + MenuBar *vc_menubar = new MenuBar(0, 0, 724, 25); + vc_menubar->begin(); + + ItemGroup file(_("&File")); + file.begin(); + Item* pref_item = new Item(_("Preferences")); + pref_item->shortcut(CTRL+'p'); + pref_item->callback(PreferencesDialog); + + Item* quit_item = new Item(_("Quit")); + quit_item->shortcut(CTRL+'q'); + quit_item->callback(cb_Quit); + + file.end(); + + ItemGroup view(_("&View")); + view.begin(); + Item* mode_item = new Item(_("Simple mode")); + mode_item->shortcut(CTRL+'s'); + mode_item->type(Item::TOGGLE); + mode_item->callback(cb_SimpleMode); + if (simplemode) mode_item->set(); + view.end(); + + ItemGroup help(_("&Help")); + help.begin(); + Item* about_item = new Item(_("About")); + about_item->shortcut(CTRL+'a'); + about_item->callback((Callback*)cb_About); + help.end(); + vc_menubar->end(); + + {Divider* o = new Divider(); + o->resize(0, 24, 724, 3); + } + + volume_slider = new Slider(20, 50, 20, 80, "VOL"); + default_look(volume_slider); + volume_balance = new Slider(10, 135, 40, 15, "Balance"); + default_look_b(volume_balance); + volume_mute = new CheckButton(5, 165, 20, 20, "Mute"); + volume_mute->align(ALIGN_BOTTOM); + volume_rec = new CheckButton(35, 165, 20, 20, "Rec"); + volume_rec->align(ALIGN_BOTTOM); + + cd_slider = new Slider(80, 50, 20, 80, "CD"); + default_look(cd_slider); + cd_balance = new Slider(70, 135, 40, 15, "Balance"); + default_look_b(cd_balance); + cd_mute = new CheckButton(65, 165, 20, 20, "Mute"); + cd_mute->align(ALIGN_BOTTOM); + cd_rec = new CheckButton(95, 165, 20, 20, "Rec"); + cd_rec->align(ALIGN_BOTTOM); + + pcm_slider = new Slider(140, 50, 20, 80, "PCM"); + default_look(pcm_slider); + pcm_balance = new Slider(130, 135, 40, 15, "Balance"); + default_look_b(pcm_balance); + pcm_mute = new CheckButton(125, 165, 20, 20, "Mute"); + pcm_mute->align(ALIGN_BOTTOM); + pcm_rec = new CheckButton(155, 165, 20, 20, "Rec"); + pcm_rec->align(ALIGN_BOTTOM); + + line_slider = new Slider(200, 50, 20, 80, "LINE"); + default_look(line_slider); + line_balance = new Slider(190, 135, 40, 15, "Balance"); + default_look_b(line_balance); + line_mute = new CheckButton(185, 165, 20, 20, "Mute"); + line_mute->align(ALIGN_BOTTOM); + line_rec = new CheckButton(215, 165, 20, 20, "Rec"); + line_rec->align(ALIGN_BOTTOM); + + synth_slider = new Slider(260, 50, 20, 80, "SYNTH"); + default_look(synth_slider); + synth_balance = new Slider(250, 135, 40, 15, "Balance"); + default_look_b(synth_balance); + synth_mute = new CheckButton(245, 165, 20, 20, "Mute"); + synth_mute->align(ALIGN_BOTTOM); + synth_rec = new CheckButton(275, 165, 20, 20, "Rec"); + synth_rec->align(ALIGN_BOTTOM); + + bass_slider = new Slider(320, 50, 20, 80, "BASS"); + default_look(bass_slider); + bass_balance = new Slider(310, 135, 40, 15, "Balance"); + default_look_b(bass_balance); + bass_mute = new CheckButton(305, 165, 20, 20, "Mute"); + bass_mute->align(ALIGN_BOTTOM); + bass_rec = new CheckButton(335, 165, 20, 20, "Rec"); + bass_rec->align(ALIGN_BOTTOM); + + treble_slider = new Slider(380, 50, 20, 80, "TREBLE"); + default_look(treble_slider); + treble_balance = new Slider(370, 135, 40, 15, "Balance"); + default_look_b(treble_balance); + treble_mute = new CheckButton(365, 165, 20, 20, "Mute"); + treble_mute->align(ALIGN_BOTTOM); + treble_rec = new CheckButton(395, 165, 20, 20, "Rec"); + treble_rec->align(ALIGN_BOTTOM); + + mic_slider = new Slider(440, 50, 20, 80, "MIC"); + default_look(mic_slider); + mic_balance = new Slider(430, 135, 40, 15, "Balance"); + default_look_b(mic_balance); + mic_mute = new CheckButton(425, 165, 20, 20, "Mute"); + mic_mute->align(ALIGN_BOTTOM); + mic_rec = new CheckButton(455, 165, 20, 20, "Rec"); + mic_rec->align(ALIGN_BOTTOM); + + speaker_slider = new Slider(500, 50, 20, 80, "SPK"); + default_look(speaker_slider); + speaker_balance = new Slider(490, 135, 40, 15, "Balance"); + default_look_b(speaker_balance); + speaker_mute = new CheckButton(485, 165, 20, 20, "Mute"); + speaker_mute->align(ALIGN_BOTTOM); + speaker_rec = new CheckButton(515, 165, 20, 20, "Rec"); + speaker_rec->align(ALIGN_BOTTOM); + + imix_slider = new Slider(560, 50, 20, 80, "IMIX"); + default_look(imix_slider); + imix_balance = new Slider(550, 135, 40, 15, "Balance"); + default_look_b(imix_balance); + imix_mute = new CheckButton(545, 165, 20, 20, "Mute"); + imix_mute->align(ALIGN_BOTTOM); + imix_rec = new CheckButton(575, 165, 20, 20, "Rec"); + imix_rec->align(ALIGN_BOTTOM); + + igain_slider = new Slider(620, 50, 20, 80, "IGAIN"); + default_look(igain_slider); + igain_balance = new Slider(610, 135, 40, 15, "Balance"); + default_look_b(igain_balance); + igain_mute = new CheckButton(605, 165, 20, 20, "Mute"); + igain_mute->align(ALIGN_BOTTOM); + igain_rec = new CheckButton(635, 165, 20, 20, "Rec"); + igain_rec->align(ALIGN_BOTTOM); + + ogain_slider = new Slider(680, 50, 20, 80, "OGAIN"); + default_look(ogain_slider); + ogain_balance = new Slider(670, 135, 40, 15, "Balance"); + default_look_b(ogain_balance); + ogain_mute = new CheckButton(665, 165, 20, 20, "Mute"); + ogain_mute->align(ALIGN_BOTTOM); + ogain_rec = new CheckButton(695, 165, 20, 20, "Rec"); + ogain_rec->align(ALIGN_BOTTOM); + + mixer_device = open(device, O_RDWR); + + if (mixer_device == -1) + { + alert(_("Opening mixer device %s failed. Setup correct device in configuration dialog."), device); + volume_slider->deactivate(); cd_slider->deactivate(); + pcm_slider->deactivate(); synth_slider->deactivate(); + line_slider->deactivate(); bass_slider->deactivate(); + treble_slider->deactivate(); mic_slider->deactivate(); + speaker_slider->deactivate(); imix_slider->deactivate(); + igain_slider->deactivate(); ogain_slider->deactivate(); + } + + update_info(); + + volume_slider->callback( (Callback*) cb_volume, (void*) 1 ); + volume_balance->callback( (Callback*) cb_volume,(void *) 2 ); + volume_mute->callback( (Callback*) cb_volume,(void *) 3 ); + volume_rec->callback( (Callback*) cb_volume,(void *) 4 ); + get_device_info(mixer_device, volume_slider, volume_balance, volume_rec, SOUND_MIXER_VOLUME); + + cd_slider->callback( (Callback*) cb_cd, (void *) 1 ); + cd_balance->callback( (Callback*) cb_cd,(void *) 2 ); + cd_mute->callback( (Callback*) cb_cd,(void *) 3 ); + cd_rec->callback( (Callback*) cb_cd,(void *) 4 ); + get_device_info(mixer_device, cd_slider, cd_balance, cd_rec, SOUND_MIXER_CD); + + pcm_slider->callback( (Callback*) cb_pcm, (void *) 1 ); + pcm_balance->callback( (Callback*) cb_pcm,(void *) 2 ); + pcm_mute->callback( (Callback*) cb_pcm,(void *) 3 ); + pcm_rec->callback( (Callback*) cb_pcm,(void *) 4 ); + get_device_info(mixer_device, pcm_slider, pcm_balance, pcm_rec, SOUND_MIXER_PCM); + + synth_slider->callback( (Callback*) cb_synth, (void *) 1 ); + synth_balance->callback( (Callback*) cb_synth,(void *) 2 ); + synth_mute->callback( (Callback*) cb_synth,(void *) 3 ); + synth_rec->callback( (Callback*) cb_synth,(void *) 4 ); + get_device_info(mixer_device, synth_slider, synth_balance, synth_rec, SOUND_MIXER_SYNTH); + + line_slider->callback( (Callback*) cb_line, (void *) 1 ); + line_balance->callback( (Callback*) cb_line,(void *) 2 ); + line_mute->callback( (Callback*) cb_line,(void *) 3 ); + line_rec->callback( (Callback*) cb_line,(void *) 4 ); + get_device_info(mixer_device, line_slider, line_balance, line_rec, SOUND_MIXER_LINE); + + bass_slider->callback( (Callback*) cb_bass, (void *) 1 ); + bass_balance->callback( (Callback*) cb_bass,(void *) 2 ); + bass_mute->callback( (Callback*) cb_bass,(void *) 3 ); + bass_rec->callback( (Callback*) cb_bass,(void *) 4 ); + get_device_info(mixer_device, bass_slider, bass_balance, bass_rec, SOUND_MIXER_BASS); + + treble_slider->callback( (Callback*) cb_treble, (void *) 1 ); + treble_balance->callback( (Callback*) cb_treble,(void *) 2 ); + treble_mute->callback( (Callback*) cb_treble,(void *) 3 ); + treble_rec->callback( (Callback*) cb_treble,(void *) 4 ); + get_device_info(mixer_device, treble_slider, treble_balance, treble_rec, SOUND_MIXER_TREBLE); + + mic_slider->callback( (Callback*) cb_mic, (void *) 1 ); + mic_balance->callback( (Callback*) cb_mic,(void *) 2 ); + mic_mute->callback( (Callback*) cb_mic,(void *) 3 ); + mic_rec->callback( (Callback*) cb_mic,(void *) 4 ); + get_device_info(mixer_device, mic_slider, mic_balance, mic_rec, SOUND_MIXER_MIC); + + speaker_slider->callback( (Callback*) cb_speaker, (void *) 1 ); + speaker_balance->callback( (Callback*) cb_speaker,(void *) 2 ); + speaker_mute->callback( (Callback*) cb_speaker,(void *) 3 ); + speaker_rec->callback( (Callback*) cb_speaker,(void *) 4 ); + get_device_info(mixer_device, speaker_slider, speaker_balance, speaker_rec, SOUND_MIXER_SPEAKER); + + imix_slider->callback( (Callback*) cb_imix, (void *) 1 ); + imix_balance->callback( (Callback*) cb_imix,(void *) 2 ); + imix_mute->callback( (Callback*) cb_imix,(void *) 3 ); + imix_rec->callback( (Callback*) cb_imix,(void *) 4 ); + get_device_info(mixer_device, imix_slider, imix_balance, imix_rec, SOUND_MIXER_IMIX); + + igain_slider->callback( (Callback*) cb_igain, (void *) 1 ); + igain_balance->callback( (Callback*) cb_igain,(void *) 2 ); + igain_mute->callback( (Callback*) cb_igain,(void *) 3 ); + igain_rec->callback( (Callback*) cb_igain,(void *) 4 ); + get_device_info(mixer_device, igain_slider, igain_balance, igain_rec, SOUND_MIXER_IGAIN); + + ogain_slider->callback( (Callback*) cb_ogain, (void *) 1 ); + ogain_balance->callback( (Callback*) cb_ogain,(void *) 2 ); + ogain_mute->callback( (Callback*) cb_ogain,(void *) 3 ); + ogain_rec->callback( (Callback*) cb_ogain,(void *) 4 ); + get_device_info(mixer_device, ogain_slider, ogain_balance, ogain_rec, SOUND_MIXER_OGAIN); + + main_window->end(); + main_window->show(argc, argv); + + simplemode = !simplemode; // cb_SimpleMode inverts meaning + cb_SimpleMode(0,0); + + return run(); +} + diff --git a/evolume/evolume.h b/evolume/evolume.h new file mode 100755 index 0000000..0fb4b09 --- /dev/null +++ b/evolume/evolume.h @@ -0,0 +1,93 @@ +/* + * $Id$ + * + * Volume control application + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef EVOLUME_H_ +#define EVOLUME_H_ + +extern "C" { +#include +#include +#include +#include +#include +#include +#include +#include +} + +/*#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../edelib2/Config.h" +#include "../edelib2/NLS.h" + +typedef struct +volume +{ + unsigned char left; + unsigned char right; + +} volume; + +int mixer_device; + +fltk::Slider *volume_slider, *cd_slider, *pcm_slider, *synth_slider, + *line_slider, *bass_slider, *treble_slider, *mic_slider, + *speaker_slider, *imix_slider, *igain_slider, *ogain_slider; + +fltk::Slider *volume_balance, *cd_balance, *pcm_balance, *synth_balance, + *line_balance, *bass_balance, *treble_balance, *mic_balance, + *speaker_balance, *imix_balance, *igain_balance, *ogain_balance; + +fltk::CheckButton *volume_mute, *cd_mute, *pcm_mute, *synth_mute, + *line_mute, *bass_mute, *treble_mute, *mic_mute, + *speaker_mute, *imix_mute, *igain_mute, *ogain_mute; + +fltk::CheckButton *volume_rec, *cd_rec, *pcm_rec, *synth_rec, + *line_rec, *bass_rec, *treble_rec, *mic_rec, + *speaker_rec, *imix_rec, *igain_rec, *ogain_rec; + +void get_device_info(int mixer_dev, fltk::Slider *sl, fltk::Slider *bal, fltk::CheckButton *ck, int device); +void set_device(int mixer_fd, int device, fltk::Slider *device_sl, fltk::Slider *balance); +void set_mute(int mixer_fd, int device, fltk::Slider *device_sl, fltk::Slider *balance, fltk::CheckButton *check_button); +void set_rec(int mixer_fd, int device, fltk::CheckButton *ck); +void update_info(); + +#endif + diff --git a/evolume/locale/hu.po b/evolume/locale/hu.po new file mode 100755 index 0000000..59ecd8f --- /dev/null +++ b/evolume/locale/hu.po @@ -0,0 +1,66 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:23+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "Az eszköz beállítása sikertelen." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "Hangerőszabályzó: [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "Hangerőszabályzó" + +#: evolume.cpp:274 +msgid "&File" +msgstr "&Fájl" + +#: evolume.cpp:275 +#: prefs.cpp:63 +msgid "Preferencies" +msgstr "Beállítások" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "Kilépés" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "Se&gítség" + +#: evolume.cpp:286 +msgid "About" +msgstr "Magamról" + +#: evolume.cpp:406 +#, c-format +msgid "Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "A %s keverő eszköz megnyitása sikertelen. Állítsd be a megfelelő eszközt a beállításoknál!" + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "Keverő eszköz" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "Eszköz neve:" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "Mégs&em" + diff --git a/evolume/locale/id.po b/evolume/locale/id.po new file mode 100755 index 0000000..27d0bb6 --- /dev/null +++ b/evolume/locale/id.po @@ -0,0 +1,101 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: evolume\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: 2002-12-18 14:34+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "Tidak bisa mensetup devais, maaf." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "Pengendali volume: [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "Pengendali volume" + +#: evolume.cpp:274 +msgid "&File" +msgstr "&File" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "Preferensi" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "Keluar" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "&Pertolongan" + +#: evolume.cpp:286 +msgid "About" +msgstr "Tentang" + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" +"Gagal membuka devais mixer %s. Setup devais yang benar pada dialog " +"konfigurasi." + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "Devais suara" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "Nama devais:" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "&Batal" + +#~ msgid "About Volume control" +#~ msgstr "Tentang pengendali volume" + +#~ msgid "&Close" +#~ msgstr "&Tutup" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +#~ "Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +#~ "atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +#~ "Public License, versi 2 atau versi yang lebih baru. Program ini " +#~ "didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +#~ "tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General " +#~ "Public License untuk lebih jelasnya. Anda seharusnya telah menerima " +#~ "salinan GNU General Public License bersama dengan program ini; jikat " +#~ "tidak, silahkan minta ke Free Software Foundation, Inc., 675 Mass Ave, " +#~ "Cambridge, MA 02139, USA." diff --git a/evolume/locale/messages.pot b/evolume/locale/messages.pot new file mode 100755 index 0000000..33f6576 --- /dev/null +++ b/evolume/locale/messages.pot @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "" + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "" + +#: evolume.cpp:274 +msgid "&File" +msgstr "" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "" + +#: evolume.cpp:286 +msgid "About" +msgstr "" + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "" diff --git a/evolume/locale/ru.po b/evolume/locale/ru.po new file mode 100755 index 0000000..0cfb800 --- /dev/null +++ b/evolume/locale/ru.po @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr " , ." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr ": [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr " " + +#: evolume.cpp:274 +msgid "&File" +msgstr "" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "" + +#: evolume.cpp:286 +msgid "About" +msgstr " " + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" +" %s. ." + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr ":" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "" + +#~ msgid "About Volume control" +#~ msgstr " " + +#~ msgid "&Close" +#~ msgstr "" diff --git a/evolume/locale/sk.po b/evolume/locale/sk.po new file mode 100755 index 0000000..56db1e2 --- /dev/null +++ b/evolume/locale/sk.po @@ -0,0 +1,102 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: evolume 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "Nemôžem nastaviť zariadenie, ľutujem." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "Ovládanie hlasitosti: [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "Ovládanie hlasitosti" + +#: evolume.cpp:274 +msgid "&File" +msgstr "&Súbor" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "Nastavenia" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "Koniec" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "&Nápoveda" + +#: evolume.cpp:286 +msgid "About" +msgstr "O programe" + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" +"Otvorenie zariadenia mixéra %s zlyhalo. Nastavte správne zariadenie v " +"konfiguračnom dialógu." + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "Zvukové zariadenie" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "Meno zariadenia:" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "&Zrušiť" + +#~ msgid "About Volume control" +#~ msgstr "O Ovládaní hlasitosti" + +#~ msgid "&Close" +#~ msgstr "&Zavrieť" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +#~ "Tento program je voľný softvér, môžete ho redistribuovať a/alebo " +#~ "modifikovať podľa podmienok licencie GNU General Public License " +#~ "publikovanej nadáciou the Free Software Foundation, buď verzie 2 tejto " +#~ "licencie, alebo (podľa vášho uváženia) ľubovoľnej novšej verzie. Tento " +#~ "program je distribuovaný v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK " +#~ "ZÁRUKY; dokonca bez obsiahnutej záruky OBCHODOVATEĽNOSTI alebo VÝHOD PRE " +#~ "URČITÝ ÚČEL. Ďalšie podrobnosti hľadajte v licencii GNU General Public " +#~ "License. S týmto programom by ste mali dostať kópiu licencie GNU General " +#~ "Public Licence; ak nie, napíšte do nadácie the Free Software Foundation, " +#~ "Inc., 675 Mass Ave, Cambridge, MA 02139, USA." diff --git a/evolume/prefs.cpp b/evolume/prefs.cpp new file mode 100755 index 0000000..5f48c36 --- /dev/null +++ b/evolume/prefs.cpp @@ -0,0 +1,115 @@ +/* + * $Id$ + * + * Volume control application + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "prefs.h" +#include +#include //#include +#include //#include + +#include "../edelib2/NLS.h"//#include +#include "../edelib2/Config.h"//#include + + +using namespace fltk; +using namespace edelib; + + + +extern char device[1024]; +extern int mixer_device; + +void choice_items(char *path) { + Item *new_Item; + dirent **files; + int num_Files = 0; + + num_Files = filename_list(path, &files); + + if (num_Files > 0) { + + for (int i = 0; i < num_Files; i ++) { + if (strcmp(files[i]->d_name, ".") != 0 && + strcmp(files[i]->d_name, "..") != 0) { + + char filename[PATH_MAX]; + snprintf(filename, sizeof(filename)-1, "%s/%s", path, files[i]->d_name); + + struct stat s; + if (!stat(filename, &s)==0) break; + + if (!S_ISDIR(s.st_mode) && strncmp(files[i]->d_name, "mixer", 5)==0) { + new_Item = new Item(); + new_Item->copy_label(filename); + } + } + free(files[i]); + } + free(files); + } +} + +Window* preferencesWindow; + +InputBrowser* deviceNameInput; + +static void cb_OK(Button*, void*) { + Config globalConfig("EDE Team", "evolume"); + globalConfig.set("Sound mixer", "Device", deviceNameInput->value()); + snprintf(device, sizeof(device)-1, "%s", (char*)deviceNameInput->value()); + + mixer_device = open(device, O_RDWR); + update_info(); + + preferencesWindow->hide(); +} + +static void cb_Cancel(Button*, void*) { + preferencesWindow->hide(); +} + +void PreferencesDialog(Widget *, void *) { + Window* w; + {Window* o = preferencesWindow = new Window(265, 290, _("Preferences")); + w = o; + preferencesWindow->begin(); + {TabGroup* o = new TabGroup(10, 10, 245, 240); + o->begin(); + {Group* o = new Group(0, 25, 255, 215, _("Sound device")); + o->align(ALIGN_TOP | ALIGN_LEFT); + o->begin(); + {InputBrowser* o = deviceNameInput = new InputBrowser(10, 30, 155, 25, _("Device name:")); + o->begin(); + o->align(ALIGN_TOP | ALIGN_LEFT); + + o->text(device); + choice_items("/dev"); + choice_items("/dev/sound"); + o->end(); + } + o->end(); + } + o->end(); + o->selection_color(o->color()); + o->selection_textcolor(o->textcolor()); + } + {Button* o = new Button(65, 255, 90, 25, _("&OK")); + o->callback((Callback*)cb_OK); + } + {Button* o = new Button(165, 255, 90, 25, _("&Cancel")); + o->callback((Callback*)cb_Cancel); + } + o->end(); + } + preferencesWindow->end(); + preferencesWindow->set_modal(); + preferencesWindow->show(); +} diff --git a/evolume/prefs.fld b/evolume/prefs.fld new file mode 100755 index 0000000..0d46e4e --- /dev/null +++ b/evolume/prefs.fld @@ -0,0 +1,132 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Volume control for EDE is (C) Copyright 2000-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include } {selected +} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {extern char device[1024];} {} + +decl {extern int mixer_device;} {} + +Function {choice_items(char *path)} {return_type void +} { + code {Fl_Item *new_Item; + dirent **files; + int num_Files = 0; + + num_Files = fl_filename_list(path, &files); + + if (num_Files > 0) { + + for (int i = 0; i < num_Files; i ++) { + if (strcmp(files[i]->d_name, ".") != 0 && + strcmp(files[i]->d_name, "..") != 0) { + + char filename[FL_PATH_MAX]; + snprintf(filename, sizeof(filename)-1, "%s/%s", path, files[i]->d_name); + + if (!fl_is_dir(filename) && fl_file_match(files[i]->d_name, "mixer*")) { + new_Item = new Fl_Item(); + new_Item->copy_label(filename); + } + } + free(files[i]); + } + free(files); + }} {} +} + +Function {PreferencesDialog(Fl_Widget *, void *)} {return_type void +} { + Fl_Window preferenciesWindow { + label Preferencies open + xywh {249 86 265 289} hide + } { + Fl_Tabs {} {open + xywh {5 5 255 245} + } { + Fl_Group {} { + label {Sound device} open + private xywh {0 23 255 221} align 5 + } { + Fl_Input_Browser deviceNameInput { + label {Device name:} open + xywh {90 27 155 23} align 132 + extra_code {\#include + +o->value(device); +choice_items("/dev"); +choice_items("/dev/sound");} + class Fl_Input_Browser + } {} + } + } + Fl_Button {} { + label {&OK} + callback {Fl_Config globalConfig("EDE Team", "evolume"); +globalConfig.set("Sound mixer", "Device", deviceNameInput->value()); +snprintf(device, sizeof(device)-1, "%s", (char*)deviceNameInput->value()); + +mixer_device = open(device, O_RDWR); +update_info(); + +preferenciesWindow->hide();} + private xywh {95 260 80 25} + extra_code {\#include + +extern void update_info();} + } + Fl_Button {} { + label {&Cancel} + callback {preferenciesWindow->hide();} + private xywh {180 260 80 25} + } + } + code {preferenciesWindow->end(); +preferenciesWindow->show();} {} +} + +Function {AboutDialog(Fl_Widget *, void *)} {return_type void +} { + Fl_Window aboutWindow { + label {About Volume control} open + xywh {270 82 285 301} hide + } { + Fl_Button {} { + label {&Close} + callback {aboutWindow->hide();} + private xywh {110 270 80 25} + } + Fl_Box {} { + label {Volume control for Equinox Desktop Environment v. 1.0} + private xywh {5 5 275 45} align 145 label_size 18 + } + Fl_Box {} { + label {This program is based in part on the work of FLTK project (www.fltk.org). This program is free software, you can redistribute it and/or modify it under the terms of 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 Licence along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA} + xywh {5 75 275 185} align 145 label_size 10 + extra_code {;} + } + Fl_Box {} { + label {(C) Copyright 2000-2002 by Martin Pekar} + xywh {5 50 275 25} + } + } + code {aboutWindow->end(); +aboutWindow->show();} {} +} diff --git a/evolume/prefs.h b/evolume/prefs.h new file mode 100755 index 0000000..570f4e1 --- /dev/null +++ b/evolume/prefs.h @@ -0,0 +1,28 @@ +/* + * $Id$ + * + * Volume control application + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef prefs_h +#define prefs_h +//#include +#include "../edelib2/NLS.h" //#include +void choice_items(char *path); +#include //#include +extern fltk::Window* preferencesWindow; +#include //#include +#include //#include +#include //#include +extern fltk::InputBrowser* deviceNameInput; +#include //#include +#include +extern void update_info(); +void PreferencesDialog(fltk::Widget *, void *); +#endif diff --git a/ewmconf/Makefile b/ewmconf/Makefile new file mode 100755 index 0000000..1b246a8 --- /dev/null +++ b/ewmconf/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = ../edelib2/Util.cpp ../edelib2/Config.cpp ewm.cpp ewmconf.cpp +TARGET = ewmconf + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/ewmconf/ewm.cpp b/ewmconf/ewm.cpp new file mode 100755 index 0000000..bd91be1 --- /dev/null +++ b/ewmconf/ewm.cpp @@ -0,0 +1,131 @@ +/* + * $Id$ + * + * edewm (EDE Window Manager) settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "ewm.h" + +#include +#include + +#include +#include +#include +#include + +#include "../edelib2/Config.h" + + +using namespace fltk; +using namespace edelib; + + + + +Color title_active_color, title_active_color_text; +Color title_normal_color, title_normal_color_text; + +int title_height; +int title_align; + +bool opaque_resize; +int title_draw_grad; + +bool animate; +int animate_speed; + +bool use_frame; +Color theme_frame_color; +bool use_theme; +char* theme_path; + +static void sendClientMessage(XWindow w, Atom a, long x) +{ + XEvent ev; + long mask; + + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = w; + ev.xclient.message_type = a; + ev.xclient.format = 32; + ev.xclient.data.l[0] = x; + ev.xclient.data.l[1] = CurrentTime; + mask = 0L; + if (w == RootWindow(xdisplay, xscreen)) + mask = SubstructureRedirectMask; + XSendEvent(xdisplay, w, False, mask, &ev); +} + +void applyConfiguration() +{ + extern Atom FLTKChangeSettings; +// sendClientMessage(RootWindow(xdisplay, xscreen), FLTKChangeSettings, 0); + XFlush(xdisplay); +} + +void readConfiguration() +{ + Config wmconf(Config::find_file("wmanager.conf", 0)); + + wmconf.set_section("TitleBar"); + wmconf.read("Active color", title_active_color, color(0,0,128)); + wmconf.read("Active color text", title_active_color_text, color(255,255,255)); + wmconf.read("Normal color", title_normal_color, color(0,0,130)); + wmconf.read("Normal color text", title_normal_color_text, color(255,255,255)); + + wmconf.read("Box type", title_draw_grad, 0); + wmconf.read("Height", title_height, 20); + wmconf.read("Text align", title_align, 0); + + wmconf.set_section("Resize"); + wmconf.read("Opaque resize", opaque_resize, false); + wmconf.read("Animate", animate, true); + wmconf.read("Animate Speed", animate_speed, 14); + + wmconf.set_section("Misc"); + wmconf.read("Use frame", use_frame, false); + wmconf.read("Frame color", theme_frame_color, color(0,0,128)); + wmconf.read("Use theme", use_theme, false); + wmconf.read("Theme path", theme_path, 0); +} + +void writeConfiguration() +{ + if(title_height > 50) title_height=50; + else if(title_height < 10) title_height=10; + + Config wmconf(Config::find_file("wmanager.conf", 1)); + + wmconf.set_section("TitleBar"); + wmconf.write("Active color", title_active_color); + wmconf.write("Active color text", title_active_color_text); + wmconf.write("Normal color", title_normal_color); + wmconf.write("Normal color text", title_normal_color_text); + + wmconf.write("Box type", title_draw_grad); + wmconf.write("Height", title_height); + wmconf.write("Text align", title_align); + + wmconf.set_section("Resize"); + wmconf.write("Opaque resize", opaque_resize); + wmconf.write("Animate", animate); + wmconf.write("Animate Speed", animate_speed); + + wmconf.set_section("Misc"); + wmconf.write("Use frame", use_frame); + wmconf.write("Frame color", theme_frame_color); + wmconf.write("Use theme", use_theme); + if (use_theme) + wmconf.write("Theme path", theme_path); + else + wmconf.write("Theme path", ""); +} + diff --git a/ewmconf/ewm.h b/ewmconf/ewm.h new file mode 100755 index 0000000..ac3afd2 --- /dev/null +++ b/ewmconf/ewm.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + * edewm (EDE Window Manager) settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef ewm_h +#define ewm_h + +#include + + +extern fltk::Color title_active_color, title_active_color_text; +extern fltk::Color title_normal_color, title_normal_color_text; +extern bool opaque_resize; +extern int title_draw_grad; +extern bool animate; +extern int animate_speed; +extern bool use_frame; +extern fltk::Color theme_frame_color; +extern bool use_theme; +extern char* theme_path; +extern int title_height; +extern int title_align; + +void readConfiguration(); +void applyConfiguration(); +void writeConfiguration(); + +#endif + diff --git a/ewmconf/ewmconf.cpp b/ewmconf/ewmconf.cpp new file mode 100755 index 0000000..298c1ec --- /dev/null +++ b/ewmconf/ewmconf.cpp @@ -0,0 +1,347 @@ +/* + * $Id$ + * + * edewm (EDE Window Manager) settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#include "ewmconf.h" +#include "ewm.h" + +#include +#include +#include + +#include "../edelib2/NLS.h" + +fltk::Button* titlebarLabelColorButton; +fltk::Button* titlebarColorButton; +fltk::Button* titlebarActiveLabelColorButton; +fltk::Button* titlebarActiveColorButton; +fltk::Choice* titlebarDrawGrad; +fltk::CheckButton* useThemeButton; +fltk::Input* themePathInput; +fltk::Button* browse_btn; +fltk::CheckButton* animateButton; +fltk::ValueSlider* animateSlider; +fltk::CheckButton* opaqueResize; + +fltk::Button* applyButton; + +bool conf_changed = false; + + +// Functions called by callbacks + +void changeBoxColor(fltk::Button *box) { + fltk::Button *colorBox = box; + fltk::Color oldColor = colorBox->color(); + fltk::Color defColor = oldColor; + fltk::color_chooser("Choose color", defColor); + if ( defColor != oldColor ) { + colorBox->color(defColor); + colorBox->redraw(); + } +} + +void confChanged() { + if (conf_changed) return; + conf_changed=true; + applyButton->activate(); +} + + +// Callback functions + +static void cb_Text(fltk::Choice* o, void*) { + title_align = (int)o->value(); + confChanged(); +} + +static void cb_Height(fltk::ValueInput* o, void*) { + title_height = (int)o->value(); + confChanged(); +} + +static void cb_titlebarLabelColorButton(fltk::Button*, void*) { + changeBoxColor(titlebarLabelColorButton); + title_normal_color_text = (int) titlebarLabelColorButton->color(); + confChanged(); +} + +static void cb_titlebarColorButton(fltk::Button*, void*) { + changeBoxColor(titlebarColorButton); + title_normal_color = (int) titlebarColorButton->color(); + confChanged(); +} + +static void cb_titlebarActiveLabelColorButton(fltk::Button*, void*) { + changeBoxColor(titlebarActiveLabelColorButton); + title_active_color_text = (int) titlebarActiveLabelColorButton->color(); + confChanged(); +} + +static void cb_titlebarActiveColorButton(fltk::Button*, void*) { + changeBoxColor(titlebarActiveColorButton); + title_active_color = (int) titlebarActiveColorButton->color(); + confChanged(); +} + +static void cb_titlebarDrawGrad(fltk::Choice*, void*) { + title_draw_grad = titlebarDrawGrad->value(); + confChanged(); +} + +static void cb_useThemeButton(fltk::CheckButton*, void*) { + if (useThemeButton->value()) { + themePathInput->activate(); + browse_btn->activate(); + titlebarDrawGrad->deactivate(); + titlebarColorButton->deactivate(); + titlebarActiveColorButton->deactivate(); + } else { + themePathInput->deactivate(); + browse_btn->deactivate(); + titlebarDrawGrad->activate(); + titlebarColorButton->activate(); + titlebarActiveColorButton->activate(); + } + + use_theme = useThemeButton->value(); + confChanged(); +} + +static void cb_themePathInput(fltk::Input*, void*) { + theme_path = (char*)realloc(theme_path, strlen(themePathInput->value())); + strcpy(theme_path, themePathInput->value()); + confChanged(); +} + +static void cb_browse_btn(fltk::Button*, void*) { + char *file_types = _("Themes (*.theme), *.theme, All files (*.*), *"); + const char *fileName = fltk::file_chooser( "Themes...", file_types, themePathInput->value()); + if (fileName) { + themePathInput->value(fileName); + strncpy(theme_path, fileName, strlen(fileName)); + } + confChanged(); +} + +static void cb_animateButton(fltk::CheckButton*, void*) { + if (animateButton->value()) + animateSlider->activate(); + else + animateSlider->deactivate(); + animate = animateButton->value(); + confChanged(); +} + +static void cb_animateSlider(fltk::ValueSlider*, void*) { + animate_speed = (int)animateSlider->value(); + confChanged(); +} + +static void cb_opaqueResize(fltk::CheckButton*, void*) { + opaque_resize = opaqueResize->value(); + confChanged(); +} + +/*static void cb_OK(fltk::Button*, void*) { + writeConfiguration(); + applyConfiguration(); + exit(0); +}*/ + +static void cb_Apply(fltk::Button*, void*) { + writeConfiguration(); + applyConfiguration(); + conf_changed = false; + applyButton->deactivate(); +} + +static void cb_Close(fltk::Button*, void*) { + if (conf_changed) { + int answer = fltk::choice_alert(_("You have unsaved changes in this window!\nDo you want to close it anyway?"), 0, _("Go &Back"), _("&Discard Changes")); + if (answer == 1) return; + } + exit(0); +} + + +// Main window design + +int main (int argc, char **argv) { + + fltk::Window* w; + //fl_init_locale_support("ewmconf", PREFIX"/share/locale"); + readConfiguration(); + {fltk::Window* o = new fltk::Window(325, 385, _("Window manager settings")); + w = o; + o->set_vertical(); + o->begin(); + {fltk::TabGroup* o = new fltk::TabGroup(10, 10, 305, 330); + o->selection_color(o->color()); + o->selection_textcolor(o->textcolor()); + o->box(fltk::THIN_UP_BOX); + o->begin(); + {fltk::Group* o = new fltk::Group(0, 25, 305, 305, _("&Titlebar")); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + {fltk::Choice* o = new fltk::Choice(35, 30, 125, 25, _("Text align:")); + o->callback((fltk::Callback*)cb_Text); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->begin(); + new fltk::Item(_("Left")); + new fltk::Item(_("Right")); + new fltk::Item(_("Center")); + o->end(); + o->value(title_align); + o->tooltip(_("Where will window title be placed on the title bar?")); + } + {fltk::ValueInput* o = new fltk::ValueInput(205, 30, 60, 25, _("Height:")); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->minimum(10); + o->maximum(50); + o->step(1); + o->value(20); + o->callback((fltk::Callback*)cb_Height); + o->value(title_height); + o->tooltip(_("Height of titlebar (in pixels)")); + } + {fltk::Button* o = titlebarLabelColorButton = new fltk::Button(205, 75, 60, 20, _("Label color: ")); + o->callback((fltk::Callback*)cb_titlebarLabelColorButton); + o->align(fltk::ALIGN_LEFT); + o->color((fltk::Color)title_normal_color_text); + o->tooltip(_("Text color of window title")); + } + {fltk::Button* o = titlebarActiveLabelColorButton = new fltk::Button(205, 105, 60, 20, _("Active label color: ")); + o->callback((fltk::Callback*)cb_titlebarActiveLabelColorButton); + o->align(fltk::ALIGN_LEFT); + o->color((fltk::Color) title_active_color_text); + o->tooltip(_("Title text color of active (foremost) window")); + } + {fltk::Button* o = titlebarColorButton = new fltk::Button(205, 135, 60, 20, _("Titlebar color: ")); + o->callback((fltk::Callback*)cb_titlebarColorButton); + o->align(fltk::ALIGN_LEFT); + o->color((fltk::Color) title_normal_color); + o->tooltip(_("Color of title bar")); + } + {fltk::Button* o = titlebarActiveColorButton = new fltk::Button(205, 165, 60, 20, _("Active titlebar color: ")); + o->callback((fltk::Callback*)cb_titlebarActiveColorButton); + o->align(fltk::ALIGN_LEFT); + o->color((fltk::Color)title_active_color); + o->tooltip(_("Titlebar color of active (foremost) window")); + } + {fltk::Choice* o = titlebarDrawGrad = new fltk::Choice(120, 200, 145, 25, _("Effect type:")); + o->callback((fltk::Callback*)cb_titlebarDrawGrad); + o->align(fltk::ALIGN_LEFT|fltk::ALIGN_WRAP); + o->begin(); + new fltk::Item(_("Flat")); + new fltk::Item(_("Horizontal shade")); + new fltk::Item(_("Thin down")); + new fltk::Item(_("Up box")); + new fltk::Item(_("Down box")); + new fltk::Item(_("Plastic")); + o->end(); + o->value(title_draw_grad); + o->tooltip(_("Effect that will be used when drawing titlebar")); + } + {fltk::Divider* o = new fltk::Divider(); + o->resize(10,235,285,2); + {fltk::CheckButton* o = useThemeButton = new fltk::CheckButton(10, 245, 300, 25, _("&Use theme")); + o->callback((fltk::Callback*)cb_useThemeButton); + o->value(use_theme); + o->tooltip(_("Choose titlebar theme below (some options will be disabled)")); + } + {fltk::Input* o = themePathInput = new fltk::Input(65, 270, 195, 25, _("Path:")); + o->callback((fltk::Callback*)cb_themePathInput); + o->deactivate(); + themePathInput->value(theme_path); + o->tooltip(_("Enter filename for file where theme is stored")); + } + {fltk::Button* o = browse_btn = new fltk::Button(270, 270, 25, 25, "..."); + o->callback((fltk::Callback*)cb_browse_btn); + o->deactivate(); + o->tooltip(_("Click here to choose theme")); + } +// {fltk::Divider* o = new fltk::Divider(); +// o->resize(10,100,300,2); +// } + } + o->end(); + } + {fltk::Group* o = new fltk::Group(0, 25, 305, 305, "&Resizing"); + o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT); + o->hide(); + o->begin(); + {fltk::CheckButton* o = animateButton = new fltk::CheckButton(10, 15, 295, 25, _("Animate size changes")); + o->set(); + o->callback((fltk::Callback*)cb_animateButton); + o->value(animate); + o->tooltip(_("If you enable this option, maximize/minimize operations will be animated")); + } + {fltk::ValueSlider* o = animateSlider = new fltk::ValueSlider(70, 40, 225, 25, _("Speed:")); + o->type(fltk::ValueSlider::TICK_ABOVE); + o->box(fltk::DOWN_BOX); + o->textsize(10); + o->minimum(5); + o->maximum(20); + o->step(1); + o->value(14); + o->slider_size(8); + o->callback((fltk::Callback*)cb_animateSlider); + o->align(fltk::ALIGN_LEFT); + o->value(animate_speed); + if(animate) o->activate(); else o->deactivate(); + o->tooltip(_("Set speed for animation when maximizing / minimizing windows")); + } + {fltk::Divider* o = new fltk::Divider(); + o->resize(10,75,285,2); + } + {fltk::CheckButton* o = opaqueResize = new fltk::CheckButton(10, 85, 285, 25, "Show window content while resizing"); + o->callback((fltk::Callback*)cb_opaqueResize); + o->value(opaque_resize); + o->tooltip(_("Enable if you want contents of windows to be redrawn as you resize window")); + } + o->end(); + } + o->end(); + } +// {fltk::Button* o = new fltk::Button(67, 337, 80, 25, "&OK"); +// o->shortcut(0xff0d); +// o->callback((fltk::Callback*)cb_OK); +// } + {fltk::Button* o = applyButton = new fltk::Button(125, 350, 90, 25, _("&Apply")); + o->callback((fltk::Callback*)cb_Apply); + o->tooltip(_("Apply changes")); + } + {fltk::Button* o = new fltk::Button(225, 350, 90, 25, _("&Close")); + o->shortcut(0xff1b); + o->callback((fltk::Callback*)cb_Close); + o->tooltip(_("Close this window")); + } + o->end(); + } + + // Make sure that "Use theme" is active and standalone buttons inactive + // if theme is set - and vice versa + if (!theme_path || strlen(theme_path) < 2) // possibly just 1 space + useThemeButton->value(false); + else + useThemeButton->value(true); + cb_useThemeButton(useThemeButton, 0); + + // above will activate Apply button, so we need to change it back + applyButton->deactivate(); + conf_changed=false; + + //useThemeButton->do_callback(FL_DIALOG_BTN); + w->show(argc, argv); + return fltk::run(); +} + diff --git a/ewmconf/ewmconf.fl b/ewmconf/ewmconf.fl new file mode 100755 index 0000000..4f61bd4 --- /dev/null +++ b/ewmconf/ewmconf.fl @@ -0,0 +1,220 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2.0100 +images_dir ./ +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Window manager settings for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include "ewm.h"} {} + +decl {\#include } {} + +Function {} {open +} { + code {//fl_init_locale_support("ewmconf", PREFIX"/share/locale"); +readConfiguration();} {} + {fltk::Window} {} { + label {Window manager settings} open + xywh {348 192 325 370} visible + } { + {fltk::TabGroup} {} {open + xywh {0 5 330 320} color 16 + } { + {fltk::Group} {} { + label {&Titlebar} open + private xywh {0 20 325 300} align 5 + } { + {fltk::Choice} {} { + label {Text align:} + callback {title_align = (int)o->value();} open + xywh {82 23 105 22} + extra_code {o->value(title_align);} + } { + {fltk::Item} {} { + label Left + } + {fltk::Item} {} { + label Right + } + {fltk::Item} {} { + label Center + } + } + {fltk::ValueInput} {} { + label {Height:} + callback {title_height = (int)o->value();} + xywh {242 23 60 22} minimum 10 maximum 50 step 1 value 20 + extra_code {o->value(title_height);} + } + {fltk::Button} titlebarLabelColorButton { + label {Titlebar label color: } + callback {changeBoxColor(titlebarLabelColorButton); +title_normal_color_text = (int) titlebarLabelColorButton->color();} + xywh {84 65 60 20} align 132 + extra_code {o->color((fltk::Color)title_normal_color_text);} + } + {fltk::Button} titlebarColorButton { + label {Titlebar color: } + callback {changeBoxColor(titlebarColorButton); +title_normal_color = (int) titlebarColorButton->color();} + xywh {84 130 60 20} align 132 + extra_code {o->color((fltk::Color) title_normal_color);} + } + {fltk::Group} {} {open + xywh {150 65 156 145} + } { + {fltk::Button} titlebarActiveLabelColorButton { + label {Titlebar active label color: } + callback {changeBoxColor(titlebarActiveLabelColorButton); +title_active_color_text = (int) titlebarActiveLabelColorButton->color();} + xywh {90 0 60 20} align 132 + extra_code {o->color((fltk::Color) title_active_color_text);} + } + {fltk::Button} titlebarActiveColorButton { + label {Titlebar active color: } + callback {changeBoxColor(titlebarActiveColorButton); +title_active_color = (int) titlebarActiveColorButton->color();} + xywh {90 65 60 20} align 132 + extra_code {o->color((fltk::Color)title_active_color);} + } + } + {fltk::Choice} titlebarDrawGrad { + label {Box type:} + callback {title_draw_grad = titlebarDrawGrad->value();} open + xywh {84 167 163 23} align 132 + extra_code {o->value(title_draw_grad);} + } { + {fltk::Item} {} { + label Flat + } + {fltk::Item} {} { + label {Horizontal shade} + } + {fltk::Item} {} { + label {Thin down} + } + {fltk::Item} {} { + label {Up box} + } + {fltk::Item} {} { + label {Down box} + } + {fltk::Item} {} { + label Plastic + } + } + {fltk::CheckButton} useThemeButton { + label {&Use theme} + callback {if (useThemeButton->value()) { + themePathInput->activate(); + browse_btn->activate(); + titlebarDrawGrad->deactivate(); + titlebarColorButton->deactivate(); + titlebarActiveColorButton->deactivate(); +} +else +{ + themePathInput->deactivate(); + browse_btn->deactivate(); + titlebarDrawGrad->activate(); + titlebarColorButton->activate(); + titlebarActiveColorButton->activate(); + +} + +use_theme = useThemeButton->value();} + xywh {7 230 300 20} + extra_code {o->value(use_theme);} + } + {fltk::Input} themePathInput { + label {Path:} + callback {theme_path = themePathInput->value();} + xywh {64 257 210 23} deactivate + extra_code {themePathInput->value(theme_path);} + } + {fltk::Button} browse_btn { + label {...} + callback {char *file_types = _("Themes (*.theme), *.theme, All files (*.*), *"); +const char *fileName = fltk::file_chooser( "Themes...", themePathInput->value(), file_types); +if (fileName) { + themePathInput->value(fileName); + theme_path = fileName; +}} selected + xywh {279 257 25 23} deactivate + } + {fltk::Divider} {} { + + extra_code {o->resize(10,100,300,2);} + } + {fltk::Divider} {} { + + extra_code {o->resize(10,210,300,2);} + } + } + {fltk::Group} {} { + label {&Resizing} open + xywh {0 20 325 300} align 5 hide + } { + {fltk::CheckButton} animateButton { + label {Animate size changes} + callback {if(animateButton->value()) animateSlider->activate(); +else animateSlider->deactivate(); +animate = animateButton->value();} + xywh {7 15 300 20} value 1 + extra_code {o->value(animate);} + } + {fltk::ValueSlider} animateSlider { + label {Speed:} + callback {animate_speed = (int)animateSlider->value();} + xywh {67 40 235 20} type TICK_ABOVE align 4 box DOWN_BOX textsize 10 minimum 5 maximum 20 step 1 value 14 slider_size 8 + extra_code {o->value(animate_speed); +if(animate) o->activate(); else o->deactivate();} + } + {fltk::Divider} {} { + + extra_code {o->resize(10,75,300,2);} + } + {fltk::CheckButton} opaqueResize { + label {Show window content while resizing} + callback {opaque_resize = opaqueResize->value()} + xywh {7 90 290 20} + extra_code {o->value(opaque_resize);} + } + } + } + {fltk::Button} {} { + label {&OK} + callback {writeConfiguration(); +applyConfiguration(); +exit(0);} + private xywh {67 337 80 25} shortcut 0xff0d + } + {fltk::Button} {} { + label {&Apply} + callback {writeConfiguration(); +applyConfiguration();} + private xywh {152 337 80 25} + } + {fltk::Button} {} { + label {&Cancel} + callback {exit(0);} + private xywh {237 337 80 25} shortcut 0xff1b + } + } + code {//useThemeButton->do_callback(FL_DIALOG_BTN);} {} +} + +Function {changeBoxColor(fltk::Button *box)} {open return_type void +} { + code {fltk::Button *colorBox = box; +fltk::Color oldColor = colorBox->color(); +fltk::Color defColor = oldColor; +fltk::color_chooser("Choose color", defColor); +if ( defColor != oldColor ) { + colorBox->color(defColor); + colorBox->redraw(); +}} {} +} diff --git a/ewmconf/ewmconf.fld b/ewmconf/ewmconf.fld new file mode 100755 index 0000000..b34f0c4 --- /dev/null +++ b/ewmconf/ewmconf.fld @@ -0,0 +1,228 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Window manager settings for EDE is (C) Copyright 2001-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include "ewm.h"} {} + +Function {} {open +} { + code {fl_init_locale_support("ewmconf", PREFIX"/share/locale"); +readConfiguration();} {} + Fl_Window {} { + label {Window manager settings} open + xywh {793 429 320 370} visible + } { + Fl_Tabs {} {open + xywh {2 5 318 325} color 16 + } { + Fl_Group {} { + label {&Titlebar} open + private xywh {1 29 316 295} align 5 + } { + Fl_Choice {} { + label {Text align:} + callback {title_align = (int)o->value();} open + xywh {83 13 105 22} + extra_code {o->value(title_align);} + } { + Fl_Item {} { + label Left + } + Fl_Item {} { + label Right + } + Fl_Item {} { + label Center + } + } + Fl_Value_Input {} { + label {Height:} + callback {title_height = (int)o->value();} + xywh {243 13 60 22} minimum 10 maximum 50 step 1 value 20 + extra_code {o->value(title_height);} + } + Fl_Button titlebarLabelColorButton { + label {Titlebar label color: } + callback {changeBoxColor(titlebarLabelColorButton); +title_normal_color_text = (int) titlebarLabelColorButton->color();} + xywh {85 55 60 20} align 132 box DOWN_BOX + extra_code {o->color((Fl_Color)title_normal_color_text);} + } + Fl_Button titlebarColorButton { + label {Titlebar color: } + callback {changeBoxColor(titlebarColorButton); +title_normal_color = (int) titlebarColorButton->color();} + xywh {85 120 60 20} align 132 box DOWN_BOX + extra_code {o->color((Fl_Color) title_normal_color);} + } + Fl_Group {} {open + xywh {153 45 160 110} + } { + Fl_Button titlebarActiveLabelColorButton { + label {Titlebar active label color: } + callback {changeBoxColor(titlebarActiveLabelColorButton); +title_active_color_text = (int) titlebarActiveLabelColorButton->color();} + xywh {90 10 60 20} align 132 box DOWN_BOX + extra_code {o->color((Fl_Color) title_active_color_text);} + } + Fl_Button titlebarActiveColorButton { + label {Titlebar active color: } + callback {changeBoxColor(titlebarActiveColorButton); +title_active_color = (int) titlebarActiveColorButton->color();} + xywh {90 75 60 20} align 132 box DOWN_BOX + extra_code {o->color((Fl_Color)title_active_color);} + } + } + Fl_Choice titlebarDrawGrad { + label {Box type:} + callback {title_draw_grad = titlebarDrawGrad->value();} open + xywh {85 157 163 23} align 132 + extra_code {o->value(title_draw_grad);} + } { + Fl_Item {} { + label Flat + } + Fl_Item {} { + label {Horizontal shade} + } + Fl_Item {} { + label {Thin down} + } + Fl_Item {} { + label {Up box} + } + Fl_Item {} { + label {Down box} + } + Fl_Item {} { + label Plastic + } + } + Fl_Check_Button useThemeButton { + label {&Use theme} + callback {if (useThemeButton->value()) { + themePathInput->activate(); + browse_btn->activate(); + titlebarDrawGrad->deactivate(); + titlebarColorButton->deactivate(); + titlebarActiveColorButton->deactivate(); +} +else +{ + themePathInput->deactivate(); + browse_btn->deactivate(); + titlebarDrawGrad->activate(); + titlebarColorButton->activate(); + titlebarActiveColorButton->activate(); + +} + +use_theme = useThemeButton->value();} + xywh {8 220 300 20} + extra_code {o->value(use_theme);} + } + Fl_Input themePathInput { + label {Path:} + callback {theme_path = themePathInput->value();} + xywh {65 247 210 23} deactivate + extra_code {themePathInput->value(theme_path);} + } + Fl_Button browse_btn { + label {...} + callback {char *file_types = _("Themes (*.theme), *.theme, All files (*.*), *"); +const char *fileName = fl_select_file(themePathInput->value(), file_types, _("Themes...")); +if (fileName) { + themePathInput->value(fileName); + theme_path = fileName; +}} + xywh {280 247 25 23} deactivate + } + Fl_Divider {} { + label label + xywh {8 190 300 25} color 16 + } + Fl_Divider {} { + label label + xywh {8 85 297 25} color 16 + } + } + Fl_Group {} { + label {&Resizing} open + xywh {3 20 310 305} align 5 hide + } { + Fl_Check_Button animateButton { + label {Animate size changes} + callback {if(animateButton->value()) animateSlider->activate(); +else animateSlider->deactivate(); +animate = animateButton->value();} + xywh {10 10 300 20} value 1 + extra_code {o->value(animate);} + } + Fl_Value_Slider animateSlider { + label {Speed:} + callback {animate_speed = (int)animateSlider->value();} + xywh {70 35 235 20} type {HORIZONTAL|Fl_Slider::TICK_ABOVE} align 4 box DOWN_BOX text_size 10 minimum 5 maximum 20 step 2 value 14 slider_size 8 + extra_code {o->value(animate_speed); +if(animate) o->activate(); else o->deactivate();} + } + Fl_Divider {} { + label label + xywh {0 60 300 25} + } + Fl_Check_Button opaqueResize { + label {Show window content while resizing} + callback {opaque_resize = opaqueResize->value()} + xywh {10 85 290 20} + extra_code {o->value(opaque_resize);} + } + } + } + Fl_Button {} { + label {&OK} + callback {writeConfiguration(); +applyConfiguration(); +exit(0);} + private xywh {67 337 80 25} shortcut 0xff0d + } + Fl_Button {} { + label {&Apply} + callback {writeConfiguration(); +applyConfiguration();} + private xywh {152 337 80 25} + } + Fl_Button {} { + label {&Cancel} + callback {exit(0);} + private xywh {237 337 80 25} shortcut 0xff1b + } + } + code {useThemeButton->do_callback(FL_DIALOG_BTN);} {selected + } +} + +Function {changeBoxColor(Fl_Button *box)} {open return_type void +} { + code {Fl_Button *colorBox = box; +Fl_Color oldColor = colorBox->color(); +Fl_Color defColor = oldColor; +fl_color_chooser(_("Choose color"), defColor); +if ( defColor != oldColor ) { + colorBox->color(defColor); + colorBox->redraw(); +}} {} +} diff --git a/ewmconf/ewmconf.h b/ewmconf/ewmconf.h new file mode 100755 index 0000000..170eaec --- /dev/null +++ b/ewmconf/ewmconf.h @@ -0,0 +1,42 @@ +/* + * $Id$ + * + * edewm (EDE Window Manager) settings + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2006 EDE Authors. + * + * This program is licenced under terms of the + * GNU General Public Licence version 2 or newer. + * See COPYING for details. + */ + +#ifndef ewmconf_h +#define ewmconf_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern fltk::Button* titlebarLabelColorButton; +extern fltk::Button* titlebarColorButton; +extern fltk::Button* titlebarActiveLabelColorButton; +extern fltk::Button* titlebarActiveColorButton; +extern fltk::Choice* titlebarDrawGrad; +extern fltk::CheckButton* useThemeButton; +extern fltk::Input* themePathInput; +extern fltk::Button* browse_btn; +extern fltk::CheckButton* animateButton; +extern fltk::ValueSlider* animateSlider; +extern fltk::CheckButton* opaqueResize; + +void changeBoxColor(fltk::Button *box); + +#endif diff --git a/ewmconf/locale/hu.po b/ewmconf/locale/hu.po new file mode 100755 index 0000000..7fa11bc --- /dev/null +++ b/ewmconf/locale/hu.po @@ -0,0 +1,141 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:23+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "Témák (*.theme), *.theme, Minden fájl (*.*), *" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "Témák..." + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Ablakkezelő beállítások" + +#: ewmconf.cpp:143 +msgid "&Titlebar" +msgstr "&Fejléc" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "Igazítás:" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "Balra" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "Jobbra" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "Középen" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "Mag.:" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Inaktív szöveg szín:" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Inaktív fejléc szín:" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Aktív szöveg szín:" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Aktív fejléc szín:" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "Stílus:" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "Egyszínű" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "Vízszintes színátmenet" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "Karcsú" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "Megemelt" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "Süllyesztett" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "Plasztik" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "&Téma használata" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "Útvonal:" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "..." + +#: ewmconf.cpp:213 +#: ewmconf.cpp:216 +#: ewmconf.cpp:243 +msgid "label" +msgstr "címke" + +#: ewmconf.cpp:221 +msgid "&Resizing" +msgstr "Á&tméretezés" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Animált maximalizálás" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Sebesség:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Ablaktartalom megjelenítése átméretezésnél" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "Mégs&em" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Szín kiválasztása" + diff --git a/ewmconf/locale/id.po b/ewmconf/locale/id.po new file mode 100755 index 0000000..c0d4540 --- /dev/null +++ b/ewmconf/locale/id.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ewmconf\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-11-29 15:44+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Seting window manager" + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "Baris judul" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Warna label baris judul" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Warna judul baris" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Warna label judul baris yang aktif" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Warna judul baris aktif" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr "Pindahkan && Ubah ukuran" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Animasikan perubahan ukuran" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Kecepatan:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Perlihatkan isi window pada saat mengubah ukuran" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "Ter&apkan" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&Batal" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Pilih warna" + +#~ msgid "Draw gradient titlebar" +#~ msgstr "Hapus gradien judul baris" diff --git a/ewmconf/locale/messages.pot b/ewmconf/locale/messages.pot new file mode 100755 index 0000000..f1782e7 --- /dev/null +++ b/ewmconf/locale/messages.pot @@ -0,0 +1,145 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "" + +#: ewmconf.cpp:143 +msgid "&Titlebar" +msgstr "" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +msgid "&Resizing" +msgstr "" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "" diff --git a/ewmconf/locale/ru.po b/ewmconf/locale/ru.po new file mode 100755 index 0000000..c135e9b --- /dev/null +++ b/ewmconf/locale/ru.po @@ -0,0 +1,149 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr " " + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr " :" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr " :" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr " :" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr " :" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr " " + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr " " + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr ":" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr " " + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr " " + +#~ msgid "Draw gradient titlebar" +#~ msgstr " " diff --git a/ewmconf/locale/sk.po b/ewmconf/locale/sk.po new file mode 100755 index 0000000..c99bbb1 --- /dev/null +++ b/ewmconf/locale/sk.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ewmconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Nastavenie manažéra okien" + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "Lišta okna" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Farba menovky lišty: " + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Farba lišty: " + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Aktívna farba menovky lišty: " + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Aktívna farba lišty: " + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr "Presun a zmena veľkosti" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Animácia pri zmene rozmeru" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Rýchlosť:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Zobrazovať obsah okna počas zmeny veľkosti" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&Použiť" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Zvoliť farbu" + +#~ msgid "Draw gradient titlebar" +#~ msgstr "Kresliť gradientovú lištu" diff --git a/ewmconf/locale/sr.po b/ewmconf/locale/sr.po new file mode 100755 index 0000000..d5632c6 --- /dev/null +++ b/ewmconf/locale/sr.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: ewmconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-12-02 04:24+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Подешавање менаџера прозора" + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "Тајтлбар" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Боја наслова:" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Боја тајтлбар-а:" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Боја активног тајтлбар-а:" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Боја активног тајтлбар-а:" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr "Померање и промена величине" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Анимирај промену величине" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Брзина:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Приказуј прозор приликом мењања величине" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&ОК" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&Примени" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&Одустани" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Изабери боју" + +#~ msgid "Draw gradient titlebar" +#~ msgstr "Цртај тајтлбар са преливом" diff --git a/eworkpanel/EDE_Config.cpp b/eworkpanel/EDE_Config.cpp new file mode 100755 index 0000000..2ddd8de --- /dev/null +++ b/eworkpanel/EDE_Config.cpp @@ -0,0 +1,990 @@ +// EDE_Config.cpp: implementation of the EDE_Config class. +// +////////////////////////////////////////////////////////////////////// + +/*#include "fl_internal.h" + +#include +#include +#include +#include +#include +#include */ + +#include "EDE_Config.h" +#include +#include "NLS.h" +#include +#include + +#include +#include +#include +#include + +#ifdef _WIN32_WCE +#include +#endif +//#include + + +#ifdef _WIN32 + +# include +# include +# include +# define access(a,b) _access(a,b) +# define mkdir(a,b) _mkdir(a) +# define R_OK 4 + +#else + +# include + +#endif /* _WIN32 */ + +// This is used for comment inside config files: +#define EDE_VERSION 2.0 + +#define LOCALE_TO_C() \ + char *locale = setlocale(LC_ALL, ""); \ + char *restore_locale = locale ? strdup(locale) : strdup("C"); \ + setlocale(LC_ALL, "C") + +#define RESTORE_LOCALE() \ + setlocale(LC_ALL, restore_locale); \ + free(restore_locale) + +// From Enumerations.h +#ifdef _WIN32 +# undef slash +# define slash '\\' +#else +# undef slash +# define slash '/' +#endif +// End Enumerations.h + +// From config.h +#define CONFIGDIR "/usr/share/ede" +// End config.h + +static int is_path_rooted(const char *fn) +{ + /* see if an absolute name was given: */ +#ifdef _WIN32 + if (fn[0] == '/' || fn[0] == '.' || fn[0] == '\\' || fn[1]==':') +#else + if (fn[0] == '/' || fn[0] == '.') +#endif + return 1; + return 0; +} + +// recursively create a path in the file system +static bool makePath( const char *path ) { + if(access(path, 0)) { + const char *s = strrchr( path, slash ); + if ( !s ) return 0; + int len = s-path; + char *p = (char*)malloc( len+1 ); + memcpy( p, path, len ); + p[len] = 0; + makePath( p ); + free( p ); + return ( mkdir( path, 0777 ) == 0 ); + } + return true; +} + +// strip the filename and create a path +static bool makePathForFile( const char *path ) +{ + const char *s = strrchr( path, slash ); + if ( !s ) return false; + int len = s-path; + char *p = (char*)malloc( len+1 ); + memcpy( p, path, len ); + p[len] = 0; + bool ret=makePath( p ); + free( p ); + return ret; +} + +char *get_sys_dir() { +#ifndef _WIN32 + return CONFIGDIR; +#else + static char path[PATH_MAX]; + HKEY hKey; + if(RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion", 0, KEY_READ, &hKey)==ERROR_SUCCESS) + { + DWORD size=4096; + RegQueryValueExW(hKey, L"CommonFilesDir", NULL, NULL, (LPBYTE)path, &size); + RegCloseKey(hKey); + return path; + } + return "C:\\EDE\\"; +#endif +} + +char *get_homedir() { + char *path = new char[PATH_MAX]; + const char *str1; + + str1=getenv("HOME"); + if (str1) { + memcpy(path, str1, strlen(str1)+1); + return path; + } + + return 0; +} + + +char *EDE_Config::find_config_file(const char *filename, bool create, int mode) +{ + static char path[4096]; + + if(is_path_rooted(filename)) { + strncpy(path, filename, sizeof(path)); + return (create || !access(path, R_OK)) ? path : 0; + } + if(mode==USER) { + char *cptr = get_homedir(); + char *ret=0; + if(cptr) { + snprintf(path, sizeof(path)-1, "%s%c%s%c%s", cptr, slash, ".ede", slash, filename); + if(create || !access(path, R_OK)) { + ret = path; + } + delete []cptr; + return ret; + } + return 0; + } else { + snprintf(path, sizeof(path)-1, "%s%c%s", get_sys_dir(), slash, filename); + return (create || !access(path, R_OK)) ? path : 0; + } +} + + +// Vedran - a few string management functions... + +// strdupcat() - it's cool to strcat with implied realloc +// -- NOTE: due to use of realloc *always* use strdupcat return value: +// dest = strdupcat(dest,src); +// and *never* use it like: +// strdupcat(dest,src); +char *strdupcat(char *dest, const char *src) +{ + if (!dest) { + dest=(char*)malloc(strlen(src)); + } else { + dest=(char*)realloc (dest, strlen(dest)+strlen(src)+1); + } + strcat(dest,src); + return dest; +} + + +// wstrim() - for trimming characters (used in parser) +// parts of former fl_trimleft and fl_trimright from Fl_Util.cpp +char* wstrim(char *string) +{ + char *start; + + if(string == NULL ) + return NULL; + + if (*string) { + int len = strlen(string); + if (len) { + char *p = string + len; + do { + p--; + if ( !isspace(*p) ) break; + } while ( p != string ); + + if ( !isspace(*p) ) p++; + *p = 0; + } + } + + for(start = string; *start && isspace (*start); start++); + memmove(string, start, strlen(start) + 1); + + return string; +} + +// hmmmh? +//char* wstrim(const char *string) +//{ +// char *newstring = strdup(string); +// return wstrim(newstring); +//} + + +// from_string() - adapted from Fl_String_List to use vector +std::vector from_string(const char *str, const char *separator) +{ + if(!str) return std::vector (); + + const char *ptr = str; + const char *s = strstr(ptr, separator); + std::vector retval; + if(s) { + unsigned separator_len = strlen(separator); + do { + unsigned len = s - ptr; + if (len) { + retval.push_back(strndup(ptr,len)); + } else { + retval.push_back(NULL); + } + + ptr = s + separator_len; + s = strstr(ptr, separator); + } + while(s); + + if(*ptr) { + retval.push_back(strdup(ptr)); + } + } else { + retval.push_back(strdup(ptr)); + } + return retval; +} + + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +#define S(item) ((EDE_Config_Section*)item) + +EDE_Config::EDE_Config(const char *vendor, const char *application, int mode) +: EDE_Config_Section("","",0) +{ + m_vendor=m_app=m_filename=NULL; + m_cur_sec = 0; + m_changed=false; + m_error = 0; + + if(vendor) m_vendor = strdup(vendor); + if(application) m_app = strdup(application); + + if(strlen(m_app) > 0) { + const char *file=0; + char tmp[PATH_MAX]; +#ifdef _WIN32 + if(mode==SYSTEM) + snprintf(tmp, sizeof(tmp)-1, "%s%c%s.conf", m_app, slash, m_app); + else +#endif + snprintf(tmp, sizeof(tmp)-1, "apps%c%s%c%s.conf", slash, m_app, slash, m_app); + file = find_config_file(tmp, true, mode); + if(file) { + bool ret = makePathForFile(file); + if(ret) { + m_filename = strdup(file); + read_file(true); + } else + m_error = CONF_ERR_FILE; + } else + m_error = CONF_ERR_FILE; + } else + m_error = CONF_ERR_FILE; +} + +EDE_Config::EDE_Config(const char *filename, bool read, bool create) +: EDE_Config_Section("","",0) +{ + m_vendor=m_app=m_filename=NULL; + + if(filename) m_filename = strdup(filename); else m_filename = strdup(""); +// TODO: shouldn't we just return false if there's no filename?? +// use case: creating a new file (nonexistant) + + m_error = 0; + m_cur_sec = 0; + m_changed=false; + + if(create && strlen(m_filename)>0) { + makePathForFile(m_filename); + } + + if(read) read_file(create); +} + +EDE_Config::~EDE_Config() +{ + flush(); + clear(); + if(m_filename) free(m_filename); + if(m_vendor) free(m_vendor); + if(m_app) free(m_app); +} + +/* get error string associated with error number */ +const char *EDE_Config::strerror(int error) +{ + switch(error) + { + case CONF_SUCCESS: return _("Successful completion"); + case CONF_ERR_FILE: return _("Could not access config file"); + case CONF_ERR_SECTION: return _("Config file section not found"); + case CONF_ERR_KEY: return _("Key not found in section"); + case CONF_ERR_MEMORY: return _("Could not allocate memory"); + case CONF_ERR_NOVALUE: return _("Invalid value associated with key"); + default: return _("Unknown error"); + } +} + +bool EDE_Config::read_file(bool create) +{ + bool error = false; + if(m_filename && strlen(m_filename)<1) { + m_error = CONF_ERR_FILE; + return false; + } + + if(create && !(access(m_filename, F_OK)==0)) { + FILE *f = fopen(m_filename, "w+"); + if(f) { + fputs(" ", f); + fclose(f); + } else error=true; + } + + if(error) { + m_error = CONF_ERR_FILE; + return false; + } + + // If somebody calls this function two times, we + // need to clean earlier section list... + clear(); + + ///// + struct stat fileStat; + stat(m_filename, &fileStat); + unsigned int size = fileStat.st_size; + if(size == 0) { + m_error = 0; + return true; + } + + FILE *fp = fopen(m_filename, "r"); + if(!fp) { + //fprintf(stderr, "fp == 0: %s\n", m_filename); + m_error = CONF_ERR_FILE; + return false; + } + + unsigned bsize = size*sizeof(char); + char *buffer = (char*)malloc(bsize+1); + buffer[bsize] = 0; + if(!buffer) { + m_error = CONF_ERR_MEMORY; + return false; + } + + unsigned int readed = fread(buffer, 1, size, fp); + if(readed <= 0) { + free((char*)buffer); + fclose(fp); + m_error = CONF_ERR_FILE; + return false; + } + fclose(fp); + + /* old parser + EDE_String_List strings(buffer, "\n"); + + free((char*)buffer); + + EDE_Config_Section *section = this; + for(unsigned n=0; n=0) { + line = strings[n].sub_str(comment_pos, strings[n].length()-comment_pos).trim(); + } else { + line = strings[n].trim(); + } + + if(line[0] == '[') + { + int pos = line.pos(']'); + if(pos>=0) + { + EDE_String sec(line.sub_str(1, pos-1)); + section = create_section(sec); + } + } + else if(line[0] != '#') + { + int pos = line.pos('='); + if(pos==-1) pos = line.pos(':'); + if(pos>=0) { + EDE_String key(line.sub_str(0, pos)); + pos++; + EDE_String value(line.sub_str(pos, line.length()-pos)); + section->add_entry(key, value); + } + } + } + */ + + // new parser by Vedran + // I like writing parsers + // too bad others don't like me writing parsers... + // TODO: i did some stupid things here for debugging, need to check + + int pos=0; + bool comment, iskey, issection; + char *key, *value, *sectionname; + key=strdup(""); value=strdup(""); sectionname=strdup(""); + EDE_Config_Section *section = this; + do { + int c=buffer[pos]; + if ((c == '\n') || (c == '\0')) { + comment=false; iskey=true; issection=false; + sectionname = wstrim(sectionname); + key = wstrim(key); + value = wstrim(value); + if (strlen(sectionname) > 0) + section = create_section(sectionname); + if (strlen(key) > 0) + section->add_entry(key,value); + free(sectionname); free(key); free(value); + key=strdup(""); value=strdup(""); sectionname=strdup(""); + } + else if (c == '#') + comment = true; + else if (comment == false) { + if (c == '[') + issection = true; + else if (c == ']') + issection = false; + else if ((c == '=') || (c == ':')) + iskey = false; + else { + if (issection) + sectionname = strdupcat(sectionname, (const char*) &c); + else if (iskey) + key = strdupcat(key, (const char*) &c); + else + value = strdupcat(value,(const char*) &c); + } + } + pos++; + } while (buffer[pos] != '\0'); + + free(key); free(value); free(sectionname); + m_error = 0; + m_changed=false; + return true; +} + +bool EDE_Config::flush() +{ + if(!m_changed) return true; + if(strlen(m_filename) < 1) return false; + + FILE *file = fopen(m_filename, "w+"); +// if(!file) +// fl_throw(::strerror(errno)); + + LOCALE_TO_C(); + + fprintf(file, "# EDE INI Version %f\n", EDE_VERSION); + if(m_vendor && strlen(m_vendor)>0) fprintf(file, "# Vendor: %s\n", m_vendor); + if(m_app && strlen(m_app)>0) fprintf(file, "# Application: %s\n", m_app); + + // Flush sections + write_section(0, file); + + RESTORE_LOCALE(); + + fclose(file); + + m_error = 0; + m_changed=false; + return true; +} + + +EDE_Config_Section *EDE_Config::create_section(const char* name) +{ + if(strlen(name)<1) return 0; + + EDE_Config_Section *section = find_section(name, true); + if(section) return section; + + char *lastptr = strrchr(name,'/'); // int pos = name.rpos('/')+1; + int pos; + if(lastptr) { + pos = lastptr-name + 1; + } else { + section = new EDE_Config_Section(name, "", 0); + sections().push_back(section); + return section; + } + + //char* sec_name(name.sub_str(pos, name.length()-pos)); + char *sec_name = strndup(name+pos, strlen(name)-pos); + //char* sec_path(name.sub_str(0, pos)); + char *sec_path = strndup(name, pos); + + EDE_Config_Section *parent = find_section(sec_path, false); + EDE_Config_Sections *list = §ions(); + + if(!parent) { + // Fl_String_List sections; + std::vector sections = from_string(sec_path, "/"); + + char* path = strdup(""); + for(unsigned n=0; nsections(); + + parent = new EDE_Config_Section(sections.at(n), path, parent); + list->push_back(parent); + + path = strdupcat (path, sections.at(n)); + path = strdupcat (path, (char *)'/'); + } + free(path); + } + + if(parent) list = &parent->sections(); + + section = new EDE_Config_Section(sec_name, sec_path, parent); + list->push_back(section); + + free(sec_name); free(sec_path); + m_error = 0; + return section; +} + +EDE_Config_Section *EDE_Config::find_section(const char *path, bool perfect_match) const +{ + if(!path || !*path) return 0; + + std::vector sections = from_string(path, "/"); + + if(sections.size()==0) + return find(path, false); + + EDE_Config_Section *section = (EDE_Config_Section *)this; + for(unsigned n=0; nfind(sections.at(n), false); + if(!tmp) { + if(perfect_match) + return 0; + else + break; + } + section = tmp; + } + return section; +} + +void EDE_Config::remove_key(const char *section, const char *key) +{ + if(key) { + EDE_Config_Section *sect = find_section(section, true); + if(sect->remove_entry(key)) { + m_error = 0; + m_changed = true; + return; + } + } + m_error = CONF_ERR_KEY; +} + +// finding and removing stuff from deque +void sectremove(EDE_Config_Sections sects, EDE_Config_Section *sect) { + for (unsigned int n=0; nparent()) { + sectremove(sect->parent()->sections(),sect); + } else { + sectremove(sections(),sect); + } + delete sect; + m_error = 0; + m_changed = true; + return; + } + m_error = CONF_ERR_SECTION; +} + +/* + * Read functions + */ + +int EDE_Config::_read_string(EDE_Config_Section *s, const char *key, char *ret, const char *def_value, int size) +{ + if(!key || !s) { + if(def_value) strncpy(ret, def_value, size); + else ret[0] = '\0'; + m_error = (!key ? CONF_ERR_KEY : CONF_ERR_SECTION); + return m_error; + } + + char *val = s->find_entry(key); + if(val) { + int len = strlen(val); // convert from unsigned... and now: + len = (lenfind_entry(key); + if(val && strlen(val)>0) + { + ret = strdup(val); + return (m_error = CONF_SUCCESS); + } + free(val); + + ret = def_value ? strdup(def_value) : 0; + m_error = CONF_ERR_KEY; + return m_error; +} + +/*int EDE_Config::_read_string(EDE_Config_Section *s, const char *key, Fl_String &ret, const char *def_value) +{ + if(!key || !s) { + ret = def_value; + m_error = !key ? CONF_ERR_KEY : CONF_ERR_SECTION; + return m_error; + } + + Fl_String *val = s->find_entry(key); + if(val) { + ret = (*val); + return (m_error = CONF_SUCCESS); + } + + ret = def_value; + return (m_error = CONF_ERR_KEY); +}*/ + +int EDE_Config::_read_long(EDE_Config_Section *s, const char *key, long &ret, long def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + ret = tmp[0] ? strtol(tmp, NULL, 10) : def_value; + } else + ret = def_value; + return m_error; +} + +int EDE_Config::_read_int(EDE_Config_Section *s, const char *key, int &ret, int def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + ret = atoi(tmp); + if ((errno = ERANGE) || (ret == 0 && strcmp(tmp,"0") != 0)) ret = def_value; + } else + ret = def_value; + return m_error; +} + +int EDE_Config::_read_float (EDE_Config_Section *s, const char *key, float &ret, float def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + LOCALE_TO_C(); + ret = (float)strtod(tmp, 0); + RESTORE_LOCALE(); + } else + ret = def_value; + return m_error; +} + +int EDE_Config::_read_double(EDE_Config_Section *s, const char *key, double &ret, double def_value) +{ + char* tmp; + if(!_read_string(s, key, tmp, 0)) { + LOCALE_TO_C(); + ret = strtod(tmp, 0); + RESTORE_LOCALE(); + } else + ret = def_value; + return m_error; +} + +int EDE_Config::_read_bool(EDE_Config_Section *s, const char *key, bool &ret, bool def_value) +{ + char* tmp; + if(_read_string(s, key, tmp, 0)) { + ret = def_value; + return m_error; + } + if ((strncasecmp(tmp,"true",4)) || + (strncasecmp(tmp,"yes",3)) || + (strncasecmp(tmp,"on",2)) || + (strcasecmp(tmp,"1"))) { + ret = true; + } else if((strncasecmp(tmp,"false",5)) || + (strncasecmp(tmp,"no",2)) || + (strncasecmp(tmp,"off",3)) || + (strcasecmp(tmp,"0"))) { + ret = false; + } else { + m_error = CONF_ERR_NOVALUE; + ret = def_value; + } + return m_error; +} + +int EDE_Config::_read_color(EDE_Config_Section *s, const char *key, fltk::Color &ret, fltk::Color def_value) +{ + char* tmp; + if(_read_string(s, key, tmp, 0)) { + ret = def_value; + return m_error; + } + + int r=0,g=0,b=0; + if(sscanf(tmp, "RGB(%d,%d,%d)", &r, &g, &b)!=3) { + ret = def_value; + return (m_error = CONF_ERR_NOVALUE); + } + ret = fltk::color(r,g,b); + return m_error; +} + +/* + * Write functions + */ + +/*int EDE_Config::_write_string(EDE_Config_Section *s, const char *key, const char *value) +{ + char* val(value); + return _write_string(s, key, val); +}*/ + +int EDE_Config::_write_string(EDE_Config_Section *s, const char *key, const char* value) +{ + if(!s) return (m_error = CONF_ERR_SECTION); + if(!key) return (m_error = CONF_ERR_KEY); + +/* This logic is now in add_entry, cause we can't pass around pointers into structure + + char *val = s->find_entry(key); + if(val) { + strncpy(val, value, strlen(value)); + } else */ + if (value) s->add_entry(key, value); else s->add_entry(key, ""); + + m_changed=true; + return (m_error=CONF_SUCCESS); +} + +int EDE_Config::_write_long(EDE_Config_Section *s, const char *key, const long value) +{ + char tmp[128]; snprintf(tmp, sizeof(tmp)-1, "%ld", value); + return _write_string(s, key, tmp); +} + +int EDE_Config::_write_int(EDE_Config_Section *s, const char *key, const int value) +{ + char tmp[128]; snprintf(tmp, sizeof(tmp)-1, "%d", value); + return _write_string(s, key, tmp); +} + +int EDE_Config::_write_float(EDE_Config_Section *s, const char *key, const float value) +{ + LOCALE_TO_C(); + char tmp[32]; snprintf(tmp, sizeof(tmp)-1, "%g", value); + RESTORE_LOCALE(); + return _write_string(s, key, tmp); +} + +int EDE_Config::_write_double(EDE_Config_Section *s, const char *key, const double value) +{ + LOCALE_TO_C(); + char tmp[32]; snprintf(tmp, sizeof(tmp)-1, "%g", value); + RESTORE_LOCALE(); + return _write_string(s, key, tmp); +} + +int EDE_Config::_write_bool(EDE_Config_Section *s, const char *key, const bool value) +{ + if(value) return _write_string(s, key, "1"); + return _write_string(s, key, "0"); +} + +int EDE_Config::_write_color(EDE_Config_Section *s, const char *key, const fltk::Color value) +{ + unsigned char r,g,b; + fltk::split_color(value, r,g,b); + char tmp[32]; + snprintf(tmp, sizeof(tmp)-1, "RGB(%d,%d,%d)", r,g,b); + return _write_string(s, key, tmp); +} + +////////////////////////////////////// +////////////////////////////////////// +////////////////////////////////////// + +EDE_Config_Section::EDE_Config_Section(const char* name, const char* path, EDE_Config_Section *par) +: m_parent(par) +{ + m_name=strdup(name); + m_path=strdup(path); +} + +EDE_Config_Section::~EDE_Config_Section() +{ + free(m_name); + free(m_path); + clear(); +} + +void EDE_Config_Section::clear() +{ + for(unsigned n=0; n0) + fprintf(fp, "[%s%s]\n", path(), name()); + + for(unsigned n=0; n 0) { + for(int a=0; awrite_section(indent+2, fp); + } +} + +void EDE_Config_Section::add_entry(const char* key, const char* value) +{ + int keylen = strlen(key); + if(!key || keylen<1) return; + if(!value) return; + + char *tmp = strdup(key); + char *tmp2 = strdup(value); + tmp = wstrim(tmp); + tmp2 = wstrim(tmp2); + tmp = strdupcat(tmp, "="); + tmp = strdupcat(tmp, tmp2); + free(tmp2); + + // if key already exists, delete + bool found = false; + for (unsigned i=0; isize(); n++) { + EDE_Config_Section *s = (EDE_Config_Section*) list->at(n); + if(strcmp(s->name(), name) == 0) { + return s; + } + if(recursive) { + s = s->find(name, recursive); + if(s) return s; + } + } + return 0; +} diff --git a/eworkpanel/EDE_Config.h b/eworkpanel/EDE_Config.h new file mode 100755 index 0000000..121c6e4 --- /dev/null +++ b/eworkpanel/EDE_Config.h @@ -0,0 +1,752 @@ +/* + * EDE_Config + * Library for configuration files + * Copyright (c) 2000. - 2005. EDE Authors + * WWW: http://ede.sf.net + * + * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE + * version 2. See COPYING for details. + * + * Author : Mikko Lahteenmaki (mikko@fltk.net) + * Port to FLTK2: Vedran Ljubovic (vljubovic@smartnet.ba) + * + * Please report all bugs and problems to "efltk-bugs@fltk.net" + * + */ + +#ifndef _EDE_CONFIG_H_ +#define _EDE_CONFIG_H_ + +/*#include "Enumerations.h" +#include "Fl_Util.h" +#include "Fl_String.h" +#include "Fl_Color.h" +#include "Fl_Ptr_List.h" +#include "Fl_Map.h"*/ + +#include +#include +#include + +#include +#include +#include + +#ifdef _WIN32_WCE +#include +#endif + +/** + * \defgroup EDE_Config EDE_Config globals + */ +/*@{*/ + +/** + * Error codes for EDE_Config + */ +enum ConfErrors { + CONF_SUCCESS = 0, ///< successful operation + CONF_ERR_FILE, ///< trouble accessing config file or directory + CONF_ERR_SECTION, ///< requested section was not found + CONF_ERR_KEY, ///< requested key was not found + CONF_ERR_MEMORY, ///< memory allocation error + CONF_ERR_NOVALUE, ///< key found, but invalid value associated with it +}; + +/** List used for sections in Fl_Config_Section */ +//FIXME +//typedef Fl_Ptr_List Fl_Config_Sections; +typedef std::deque EDE_Config_Sections; + +/** Map used for entries in Fl_Config_Section */ +//FIXME +//typedef Fl_String_String_Map Fl_Config_Lines; +//this is not exactly compatible, but that's the best we can do... +typedef std::vector EDE_Config_Lines; + +/*@}*/ + +class EDE_Config; + +/** + * The configuration section. + * Represents one section in config (ini) file. + * @see EDE_Config + */ +//FIXME: class FL_API EDE_Config_Section +class EDE_Config_Section +{ + friend class EDE_Config; +public: + EDE_Config_Section(const char* name, const char* path, EDE_Config_Section *par); + virtual ~EDE_Config_Section(); + + /** + * Destroys all sections and entries. + */ + virtual void clear(); + + /** + * Returns pointer to parent section, NULL for Fl_Config (root) + */ + EDE_Config_Section *parent() const { return m_parent; } + + /** + * Returns name of section, without path. + * @see path() + */ + const char* name() const { return m_name; } + + /** + * Returns path to section, without name. + * @see name() + */ + const char* path() const { return m_path; } + + /** + * Returns const reference to entry map. + */ + const EDE_Config_Lines &lines() const { return m_lines; } + + /** + * Returns reference to entry map. + */ + EDE_Config_Lines &lines() { return m_lines; } + + /** + * Returns const reference to section list. + */ + const EDE_Config_Sections §ions() const { return m_sections; } + + /** + * Returns reference to section list. + */ + EDE_Config_Sections §ions() { return m_sections; } + + /** + * Find section named 'name'. + * @param section_name name of section to find + * @param recursive set true to perform recursive search. + */ + EDE_Config_Section *find(const char *section_name, bool recursive=false) const; + +protected: + EDE_Config_Section *m_parent; + char *m_name, *m_path; + + EDE_Config_Lines m_lines; //Line map + EDE_Config_Sections m_sections; //Section list + + void write_section(int indent, FILE *fp) const; + + void add_entry(const char* key, const char* value); + bool remove_entry(const char* key); + char* find_entry(const char *key) const; +}; + +/** + * The configuration holder. This class maybe used very easily to + * store application settings to file. Either system wide or user specific, + * depending on config type. Fl_Config is derived Fl_Config_Section, please + * take look a look at functions it provides also. + * @see Fl_Config_Section + */ +//FIXME: class FL_API Fl_Config : public Fl_Config_Section { +class EDE_Config : public EDE_Config_Section { +public: + + /** + * Config file modes + */ + enum ConfigType { + USER=1, ///< User specific config file + SYSTEM ///< System wide config file + }; + + /** + * Creates/reads/writes app specific config file. + * + * LINUX:
    + * File is created in ($home)/.ede/apps/($application)/($application).conf + * Or ($prefix)/share/ede/apps/($application)/($application).conf + * + *
    WIN32:
    + * ($home)\Local Settings\.ede\apps\($application)/($application).conf + * Or ($common files)\($application)\($application).conf + * + * Location depends on ConfigType 'mode', USER or SYSTEM + * + * @param vendor aplication vendor, written down to file + * @param application name, written down to file + * @param mode which mode to use + */ + EDE_Config(const char *vendor, const char *application, int mode=USER); + + /** + * Access custom file in filesystem. + * + * @param filename path to config (ini) file. + * @param readfile if true, file is readed on constructor. I.e no need for read_file() + * @param createfile if true, file is created if it doesn't exists. + */ + EDE_Config(const char *filename, bool readfile=true, bool createfile=true); + + /** + * Destroys config + */ + virtual ~EDE_Config(); + + /** + * Finds config file, depending on mode. + * NOTE: User MUST NOT free returned pointer! + * + * LINUX:
    + * File is created in ($home)/.ede/apps/($application)/($application).conf + * Or ($prefix)/share/ede/apps/($application)/($application).conf + * + *
    WIN32:
    + * ($home)\Local Settings\.ede\apps\($application)/($application).conf + * Or ($common files)\($application)\($application).conf + * + * @param filename Relative filename, e.g. "myapp_config.ini" + * @param create if true, path is returned even if file is not found. Otherwise NULL if path not found. + * @param mode which mode to use + */ + static char *find_config_file(const char *filename, bool create=true, int mode=USER); + + + /** + * (re)read file. NOTE: Deletes current entries from this Fl_Config object. + * @param create if true, file is created if it doesn't exists. + * @see filename() + */ + bool read_file(bool create = true); + + /** + * Flush entries to file. + * Returns true on success. + * @see filename() + */ + bool flush(); + + /** Returns current filename. */ + const char* filename() const { return m_filename; } + /** Set new filename. You need to call read_file() to get new entries. */ + void filename(const char *filename) { strncpy(m_filename, filename, strlen(filename)); } + /** Set new filename. You need to call read_file() to get new entries. */ +// void filename(const Fl_String &filename) { m_filename = filename; } + + /** Returns current vendor name. */ + const char* vendor() const { return m_vendor; } + /** Set new vendor name. */ + void vendor(const char *vendor) { strncpy(m_vendor, vendor, strlen(vendor)); } + /** Set new vendor name. */ +// void vendor(const Fl_String &vendor) { m_vendor = vendor; } + + /** Returns current application name. */ + const char* application() const { return m_app; } + /** Set new application name. */ + void application(const char *app) { strncpy(m_app, app, strlen(app)); } + /** Set new application name. */ +// void application(const Fl_String &app) { m_app = app; } + + /** + * Returns true, if data changed. + * call flush() to sync changes to file + * @see flush() + */ + bool is_changed() const { return m_changed; } + + /** + * Set changed, forces flush() to write file. + * Even if it is not changed. + */ + void set_changed() { m_changed = true; } + + /** + * Returns last error happened. + */ + int error() const { return m_error; } + + /** + * Reset error, normally you don't need to call this. + */ + void reset_error() { m_error = 0; } + + /** + * Return string presentation for last happened error. + */ + const char *strerror() const { return EDE_Config::strerror(m_error); } + + /** + * Return error string, associated with 'errnum' + */ + static const char *strerror(int errnum); + + /** + * Create new section. You can pass full path as section name. + * For example: create_section("/path/to/my/section"); + * All nested sections are created automatically. + * + * Returns pointer to created section, NULL if failed. + */ +// EDE_Config_Section *create_section(const char *path) { char* tmp(path); return create_section(tmp); } + + /** + * Create new section. You can pass full path as section name. + * For example: create_section("/path/to/my/section"); + * All nested sections are created automatically. + * + * Returns pointer to created section, NULL if failed. + */ + EDE_Config_Section *create_section(const char* path); + + /** + * Find section. You can pass full path as section name. + * For example: find_section("/path/to/my/section"); + * + * Returns pointer to found section, NULL if not found. + * + * @param perfect_match is true, it returns NULL if no exact section found. Otherwise it returns last found section in path. + */ + EDE_Config_Section *find_section(const char *path, bool perfect_match=true) const; + + /** + * Return child sections of section specified 'secpath' + */ + EDE_Config_Sections *section_list(const char *secpath) const { EDE_Config_Section *s=find_section(secpath); return s ? (&s->sections()) : 0; } + + /** + * Return entries of section specified 'secpath' + */ + EDE_Config_Lines *line_list(const char *secpath) const { EDE_Config_Section *s=find_section(secpath); return s ? (&s->lines()) : 0; } + + /** + * Set default section for read/write operations. + * NOTE: section is created, if it's not found.
    + * NOTE: You can pass path to section e.g "/path/to/my/section" + */ + void set_section(const char *secpath) { set_section(create_section(secpath)); } + + /** + * Set default section for read/write operations. + */ + void set_section(EDE_Config_Section *sec) { m_cur_sec = sec; } + + /** + * Remove entry associated with 'key' from section. + * NOTE: You can pass path to section e.g "/path/to/my/section" + */ + void remove_key(const char *section, const char *key); + + /** + * Remove section specified by 'section'. + * NOTE: You can pass path to section e.g "/path/to/my/section" + */ + void remove_sec(const char *section); + + + /** + * Read Fl_String entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ +// int read(const char *key, char* ret, const char *def_value) { return _read_string(m_cur_sec, key, ret, def_value); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + * @param size of 'ret' char* array. + */ + int read(const char *key, char *ret, const char *def_value, int size) { return _read_string(m_cur_sec, key, ret, def_value, size); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: 'ret' is allocated by Fl_Confing, user MUST free 'ret' by calling free() function. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, char *&ret, const char *def_value=0) { return _read_string(m_cur_sec, key, ret, def_value); } + + /** + * Read long entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, long &ret, long def_value=0) { return _read_long(m_cur_sec, key, ret, def_value); } + + /** + * Read int entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, int &ret, int def_value=0) { return _read_int(m_cur_sec, key, ret, def_value); } + + /** + * Read float entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, float &ret, float def_value=0) { return _read_float(m_cur_sec, key, ret, def_value); } + + /** + * Read double entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, double &ret, double def_value=0) { return _read_double(m_cur_sec, key, ret, def_value); } + + /** + * Read bool entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, bool &ret, bool def_value=0) { return _read_bool(m_cur_sec, key, ret, def_value); } + + /** + * Read Fl_Color entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int read(const char *key, fltk::Color &ret, fltk::Color def_value=0) { return _read_color(m_cur_sec, key, ret, def_value); } + + + /** + * Write Fl_String entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ +// int write(const char *key, const Fl_String &value) { return _write_string(m_cur_sec, key, value); } + + /** + * Write const char* entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const char *value) { return _write_string(m_cur_sec, key, value); } + + /** + * Write long entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const long value) { return _write_long(m_cur_sec, key, value); } + + /** + * Write int entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const int value) { return _write_int(m_cur_sec, key, value); } + + /** + * Write float entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const float value) { return _write_float(m_cur_sec, key, value); } + + /** + * Write double entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const double value) { return _write_double(m_cur_sec, key, value); } + + /** + * Write bool entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const bool value) { return _write_bool(m_cur_sec, key, value); } + + /** + * Write Fl_Color entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: This function assumes that current section is set with set_section(). + * + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int write(const char *key, const fltk::Color value) { return _write_color(m_cur_sec, key, value); } + + + /** + * Read Fl_String entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ +// int get(const char *section, const char *key, Fl_String &ret, const char *def_value) { return _read_string(find_section(section), key, ret, def_value); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, char *ret, const char *def_value, int size) { return _read_string(find_section(section), key, ret, def_value, size); } + + /** + * Read char* entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: 'ret' is allocated by Fl_Confing, user MUST free 'ret' by calling free() function. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, char *&ret, const char *def_value=0) { return _read_string(find_section(section), key, ret, def_value); } + + /** + * Read long entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, long &ret, long def_value=0) { return _read_long(find_section(section), key, ret, def_value); } + + /** + * Read int entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, int &ret, int def_value=0) { return _read_int(find_section(section), key, ret, def_value); } + + /** + * Read float entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, float &ret, float def_value=0) { return _read_float(find_section(section), key, ret, def_value); } + + /** + * Read double entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, double &ret, double def_value=0) { return _read_double(find_section(section), key, ret, def_value); } + + /** + * Read bool entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, bool &ret, bool def_value=0) { return _read_bool(find_section(section), key, ret, def_value); } + + /** + * Read Fl_Color entry from config. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param ret Result is stored to this. + * @param def_value Default value for ret, if not found. + */ + int get(const char *section, const char *key, fltk::Color &ret, fltk::Color def_value=0) { return _read_color(find_section(section), key, ret, def_value); } + + + /** + * Write Fl_String entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ +// int set(const char *section, const char *key, const Fl_String &value) { return _write_string(create_section(section), key, value); } + + /** + * Write const char *entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const char *value) { return _write_string(create_section(section), key, value); } + + /** + * Write long entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const long value) { return _write_long(create_section(section), key, value); } + + /** + * Write int entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const int value) { return _write_int(create_section(section), key, value); } + + /** + * Write float entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const float value) { return _write_float(create_section(section), key, value); } + + /** + * Write bool entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const bool value) { return _write_double(create_section(section), key, value); } + + /** + * Write Fl_Color entry to config. You must call flush() to sunc changes to file. + * Returns CONF_SUCCESS on success, otherwise errorcode. + * NOTE: section must be set as first parameter! + * + * @param section Section for entry + * @param key Key to entry. + * @param value value to set. if entry with 'key' exists, value is replaced. + */ + int set(const char *section, const char *key, const fltk::Color value) { return _write_color(create_section(section), key, value); } + +private: + int m_error; + char* m_filename; + char *m_vendor, *m_app; + + EDE_Config_Section *m_cur_sec; + bool m_changed; + + //int _read_string(Fl_Config_Section *s, const char *key, Fl_String &ret, const char *def_value); + int _read_string(EDE_Config_Section *s, const char *key, char *ret, const char *def_value, int size); + int _read_string(EDE_Config_Section *s, const char *key, char *&ret, const char *def_value); + int _read_long (EDE_Config_Section *s, const char *key, long &ret, long def_value); + int _read_int (EDE_Config_Section *s, const char *key, int &ret, int def_value); + int _read_float (EDE_Config_Section *s, const char *key, float &ret, float def_value); + int _read_double(EDE_Config_Section *s, const char *key, double &ret, double def_value); + int _read_bool (EDE_Config_Section *s, const char *key, bool &ret, bool def_value); + int _read_color (EDE_Config_Section *s, const char *key, fltk::Color &ret, fltk::Color def_value); + + //int _write_string(Fl_Config_Section *s, const char *key, const Fl_String &value); + int _write_string(EDE_Config_Section *s, const char *key, const char *value); + int _write_long (EDE_Config_Section *s, const char *key, const long value); + int _write_int (EDE_Config_Section *s, const char *key, const int value); + int _write_float (EDE_Config_Section *s, const char *key, const float value); + int _write_double(EDE_Config_Section *s, const char *key, const double value); + int _write_bool (EDE_Config_Section *s, const char *key, const bool value); + int _write_color (EDE_Config_Section *s, const char *key, const fltk::Color value); +}; + +// Backward compatibility... +static inline const char* ede_find_config_file(const char *filename, bool create=true) { + return EDE_Config::find_config_file(filename, create, EDE_Config::USER); +} + +#endif diff --git a/eworkpanel/Makefile b/eworkpanel/Makefile new file mode 100755 index 0000000..c89ebfc --- /dev/null +++ b/eworkpanel/Makefile @@ -0,0 +1,22 @@ + +CPPFILES = aboutdialog.cpp logoutdialog.cpp panelbutton.cpp keyboardchooser.cpp taskbutton.cpp workpanel.cpp item.cpp cpumonitor.cpp dock.cpp mainmenu.cpp mainmenu_scan.cpp +TARGET = eworkpanel + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/eworkpanel/NLS.h b/eworkpanel/NLS.h new file mode 100755 index 0000000..cf1ce3b --- /dev/null +++ b/eworkpanel/NLS.h @@ -0,0 +1,12 @@ +// Native language support - under construction +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#ifndef _NLS_H_ +#define _NLS_H_ + +#define _(s) s + +#endif diff --git a/eworkpanel/aboutdialog.cpp b/eworkpanel/aboutdialog.cpp new file mode 100755 index 0000000..18cc409 --- /dev/null +++ b/eworkpanel/aboutdialog.cpp @@ -0,0 +1,54 @@ +// generated by Extended Fast Light User Interface Designer (eFluid) version 2.0003 + +#include "aboutdialog.h" +//#include +#include "NLS.h" +#include +static fltk::Window* mAboutDialogWindow; + +static void cb_OK(Fl_Button*, void*) { + mAboutDialogWindow->hide(); +} + +void AboutDialog(fltk::Widget*, void*) { + fltk::Window* w; + {fltk::Window* o = mAboutDialogWindow = new fltk::Window(355, 305, _("About Equinox Desktop Environment")); + w = o; + o->shortcut(0xff1b); + {fltk::Box* o = new fltk::Box(5, 10, 345, 35, _("Equinox Desktop Environment "PACKAGE_VERSION)); + o->box(fltk::BORDER_FRAME); + o->label_font(fl_fonts+1); + o->color((fltk::Color)56); + o->label_color((Fl_Color)32); + o->label_size(16); +// o->align(FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } + {fltk::Box* o = new fltk::Box(5, 105, 345, 135, _(" This program is based in part on the work of FLTK project (www.fltk.org). Th\ +is program is free software, you can redistribute it and/or modify it under th\ +e terms of GNU General Public License as published by the Free Software Founda\ +tion, 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 AN\ +Y WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FO\ +R A PARTICULAR PURPOSE. See the GNU General Public License for more details. Y\ +ou should have received a copy of the GNU General Public Licence along with th\ +is program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave,\ + Cambridge, MA 02139, USA")); + o->label_size(10); +// o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } + {fltk::Button* o = new fltk::Button(270, 275, 80, 25, _("&OK")); + o->callback((fltk::Callback*)cb_OK); +// o->align(FL_ALIGN_WRAP); + } + new fltk::Divider(5, 260, 345, 15, _("label")); + {fltk::Box* o = new fltk::Box(5, 70, 345, 15, _("(C)Copyright 2000-2004 EDE Authors")); + o->label_size(10); + o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + } +// o->set_modal(); + o->end(); + o->resizable(o); + } + mAboutDialogWindow->end(); + mAboutDialogWindow->show(); +} diff --git a/eworkpanel/aboutdialog.fld b/eworkpanel/aboutdialog.fld new file mode 100755 index 0000000..7ff2781 --- /dev/null +++ b/eworkpanel/aboutdialog.fld @@ -0,0 +1,44 @@ +# data file for the eFLTK User Interface Designer (eFLUID) +version 2.0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Work Panel for EDE is (C) Copyright 2000-2002 by Martin Pekar and others, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +Function {AboutDialog(Fl_Widget*, void*)} {open return_type void +} { + Fl_Window mAboutDialogWindow { + label {About Equinox Desktop Environment} open + private xywh {386 286 355 305} resizable modal visible + } { + Fl_Box {} { + label {Equinox Desktop Environment v1.0.1.1} selected + private xywh {5 10 345 35} align FL_ALIGN_INSIDE|FL_ALIGN_WRAP box BORDER_FRAME label_font 1 color 56 label_color 32 label_size 16 + } + Fl_Box {} { + label { This program is based in part on the work of FLTK project (www.fltk.org). This program is free software, you can redistribute it and/or modify it under the terms of 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 Licence along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA} + private xywh {5 105 345 135} align FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP label_size 10 + } + Fl_Button {} { + label {&OK} + callback {mAboutDialogWindow->hide();} + private xywh {270 275 80 25} align FL_ALIGN_WRAP + } + Fl_Divider {} { + label label + xywh {5 260 345 15} + } + Fl_Box {} { + label {(C)Copyright 2000-2004 EDE Authors} + private xywh {5 70 345 15} align FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_WRAP label_size 10 + } + } + code {mAboutDialogWindow->end(); +mAboutDialogWindow->show();} {} +} diff --git a/eworkpanel/aboutdialog.h b/eworkpanel/aboutdialog.h new file mode 100755 index 0000000..e58ca7f --- /dev/null +++ b/eworkpanel/aboutdialog.h @@ -0,0 +1,22 @@ +// generated by Extended Fast Light User Interface Designer (eFluid) version 2.0003 + +#ifndef _ABOUTDIALOG_H_ +#define _ABOUTDIALOG_H_ + +/*#include +#include +#include +#include +#include +#include */ +#include +//#include +#include +#include +#include +#include + + +void AboutDialog(fltk::Widget*, void*); + +#endif diff --git a/eworkpanel/cpumonitor.cpp b/eworkpanel/cpumonitor.cpp new file mode 100755 index 0000000..03402a9 --- /dev/null +++ b/eworkpanel/cpumonitor.cpp @@ -0,0 +1,390 @@ +/* + * IceWM + * + * Copyright (C) 1998-2001 Marko Macek + * + * CPU Status + * + * For eWorkPanel by Mikko Lahteenmaki 2003 + */ +#include "cpumonitor.h" + +#include +#include +#include +#include +#include +#include +#include + +#if defined(linux) +//#include +#include +#endif + +#ifdef HAVE_KSTAT_H +#include +#endif + +#if (defined(linux) || defined(HAVE_KSTAT_H)) + +#define UPDATE_INTERVAL .5f + +void cpu_timeout_cb(void *d) { + ((CPUMonitor*)d)->update_status(); + fltk::repeat_timeout(UPDATE_INTERVAL, cpu_timeout_cb, d); +} + +CPUMonitor::CPUMonitor() +: fltk::Widget(0,0,30,0) +{ + box(fltk::THIN_DOWN_BOX); + //box(FL_BORDER_BOX); + + m_draw_label = true; + m_samples = m_old_samples = -1; + cpu = 0; + + colors[IWM_USER] = FL_RED; + colors[IWM_NICE] = FL_GREEN; + colors[IWM_SYS] = FL_DARK3; + colors[IWM_IDLE] = FL_NO_COLOR; + + fltk::add_timeout(UPDATE_INTERVAL, cpu_timeout_cb, this); +} + +CPUMonitor::~CPUMonitor() { + clear(); +} + +void CPUMonitor::clear() +{ + if(!cpu) return; + + for (int i=0; i < samples(); i++) { + delete cpu[i]; cpu[i] = 0; + } + delete cpu; + cpu = 0; + + m_old_samples = -1; +} + +void CPUMonitor::draw() +{ + if(!cpu) { + fltk::push_clip(0,0,w(),h()); + parent()->draw_group_box(); + draw_frame(); + fltk::pop_clip(); + return; + } + + if(colors[IWM_IDLE] == FL_NO_COLOR) { + fltk::push_clip(0,0,w(),h()); + parent()->draw_group_box(); + fltk::pop_clip(); + } + draw_frame(); + + int n, h = height() - box()->dh(); + + int c=0; + for (int i=box()->dx(); i < samples()+box()->dx(); i++) + { + int user = cpu[c][IWM_USER]; + int nice = cpu[c][IWM_NICE]; + int sys = cpu[c][IWM_SYS]; + int idle = cpu[c][IWM_IDLE]; + int total = user + sys + nice + idle; + + c++; + + int y = height() - 1 - box()->dy(); + + if (total > 0) + { + if (sys) { + n = (h * (total - sys)) / total; // check rounding + if (n >= y) n = y; + if (n < 1) n = 1; + fltk::color(colors[IWM_SYS]); + fltk::line(i, y, i, n); + y = n - 1; + } + + if (nice) { + n = (h * (total - sys - nice))/ total; + if (n >= y) n = y; + if (n < 1) n = 1; + fltk::color(colors[IWM_NICE]); + fltk::line(i, y, i, n); + y = n - 1; + } + + if (user) { + n = (h * (total - sys - nice - user))/ total; + if (n >= y) n = y; + if (n < 1) n = 1; + fltk::color(colors[IWM_USER]); + fltk::line(i, y, i, n); + y = n - 1; + } + } + + if (idle) { + if(colors[IWM_IDLE] != FL_NO_COLOR) + { + fltk::color(colors[IWM_IDLE]); + fltk::line(i, box()->dy(), i, y); + } + } + } + + int cpu_percent = cpu[samples()-1][0]*2; + if(m_draw_label && cpu_percent<=100) { + char l[5]; + strcpy(l, itoa(cpu_percent)); + strcat(l, '%'); + label(l); + draw_inside_label(); + } +} + +void CPUMonitor::layout() +{ + label_size(h()/2); + + w(h()*2); + m_samples = w() - box()->dw(); + + if(!cpu || m_old_samples != m_samples) { + clear(); + + cpu = new int*[m_samples]; + for(int i=0; i < m_samples; i++) { + cpu[i] = new int[IWM_STATES]; + cpu[i][IWM_USER] = cpu[i][IWM_NICE] = cpu[i][IWM_SYS] = 0; + cpu[i][IWM_IDLE] = 1; + } + last_cpu[IWM_USER] = last_cpu[IWM_NICE] = last_cpu[IWM_SYS] = last_cpu[IWM_IDLE] = 0; + + update_status(); + m_old_samples = m_samples; + } + + fltk::Widget::layout(); +} + +void CPUMonitor::update_status() +{ + if(!cpu) return; + + for (int i=1; i < samples(); i++) { + cpu[i - 1][IWM_USER] = cpu[i][IWM_USER]; + cpu[i - 1][IWM_NICE] = cpu[i][IWM_NICE]; + cpu[i - 1][IWM_SYS] = cpu[i][IWM_SYS]; + cpu[i - 1][IWM_IDLE] = cpu[i][IWM_IDLE]; + } + + get_cpu_info(); + + // Update tooltip + char load[255]; + snprintf(load, sizeof(load)-1, + _("CPU Load:\n" + "User: %d%%\n" + "Nice: %d%%\n" + "Sys: %d%%\n" + "Idle: %d%%"), + cpu[samples()-1][0]*2, cpu[samples()-1][1]*2, + cpu[samples()-1][2]*2, cpu[samples()-1][3]*2); + tooltip(load); + + redraw(); +} + +void CPUMonitor::get_cpu_info() +{ + if(!cpu) return; + +#ifdef linux + char *p, buf[128]; + long cur[IWM_STATES]; + int len, fd = open("/proc/stat", O_RDONLY); + + cpu[samples()-1][IWM_USER] = 0; + cpu[samples()-1][IWM_NICE] = 0; + cpu[samples()-1][IWM_SYS] = 0; + cpu[samples()-1][IWM_IDLE] = 0; + + if (fd == -1) + return; + len = read(fd, buf, sizeof(buf) - 1); + if (len != sizeof(buf) - 1) { + close(fd); + return; + } + buf[len] = 0; + + p = buf; + while (*p && (*p < '0' || *p > '9')) + p++; + + for (int i = 0; i < 4; i++) { + cur[i] = strtoul(p, &p, 10); + cpu[samples()-1][i] = cur[i] - last_cpu[i]; + last_cpu[i] = cur[i]; + } + close(fd); +#if 0 + fprintf(stderr, "cpu: %d %d %d %d", + cpu[samples()-1][IWM_USER], cpu[samples()-1][IWM_NICE], + cpu[samples()-1][IWM_SYS], cpu[samples()-1][IWM_IDLE]); +#endif + +#endif /* linux */ + +#ifdef HAVE_KSTAT_H +# ifdef HAVE_OLD_KSTAT +# define ui32 ul +#endif + + static kstat_ctl_t *kc = NULL; + static kid_t kcid; + kid_t new_kcid; + kstat_t *ks = NULL; + kstat_named_t *kn = NULL; + int changed,change,total_change; + unsigned int thiscpu; + register int i,j; + static unsigned int ncpus; + static kstat_t **cpu_ks=NULL; + static cpu_stat_t *cpu_stat=NULL; + static long cp_old[CPU_STATES]; + long cp_time[CPU_STATES], cp_pct[CPU_STATES]; + + /* Initialize the kstat */ + if (!kc) { + kc = kstat_open(); + if (!kc) { + perror("kstat_open "); + return;/* FIXME : need err handler? */ + } + changed = 1; + kcid = kc->kc_chain_id; + fcntl(kc->kc_kd, F_SETFD, FD_CLOEXEC); + } else { + changed = 0; + } + /* Fetch the kstat data. Whenever we detect that the kstat has been + changed by the kernel, we 'continue' and restart this loop. + Otherwise, we break out at the end. */ + while (1) { + new_kcid = kstat_chain_update(kc); + if (new_kcid) { + changed = 1; + kcid = new_kcid; + } + if (new_kcid < 0) { + perror("kstat_chain_update "); + return;/* FIXME : need err handler? */ + } + if (new_kcid != 0) + continue; /* kstat changed - start over */ + ks = kstat_lookup(kc, "unix", 0, "system_misc"); + if (kstat_read(kc, ks, 0) == -1) { + perror("kstat_read "); + return;/* FIXME : need err handler? */ + } + if (changed) { + /* the kstat has changed - reread the data */ + thiscpu = 0; ncpus = 0; + kn = (kstat_named_t *)kstat_data_lookup(ks, "ncpus"); + if ((kn) && (kn->value.ui32 > ncpus)) { + /* I guess I should be using 'new' here... FIXME */ + ncpus = kn->value.ui32; + if ((cpu_ks = (kstat_t **) + realloc(cpu_ks, ncpus * sizeof(kstat_t *))) == NULL) + { + perror("realloc: cpu_ks "); + return;/* FIXME : need err handler? */ + } + if ((cpu_stat = (cpu_stat_t *) + realloc(cpu_stat, ncpus * sizeof(cpu_stat_t))) == NULL) + { + perror("realloc: cpu_stat "); + return;/* FIXME : need err handler? */ + } + } + for (ks = kc->kc_chain; ks; ks = ks->ks_next) { + if (strncmp(ks->ks_name, "cpu_stat", 8) == 0) { + new_kcid = kstat_read(kc, ks, NULL); + if (new_kcid < 0) { + perror("kstat_read "); + return;/* FIXME : need err handler? */ + } + if (new_kcid != kcid) + break; + cpu_ks[thiscpu] = ks; + thiscpu++; + if (thiscpu > ncpus) { + fprintf(stderr, "kstat finds too many cpus: should be %d", ncpus); + return;/* FIXME : need err handler? */ + } + } + } + if (new_kcid != kcid) + continue; + ncpus = thiscpu; + changed = 0; + } + for (i = 0; i<(int)ncpus; i++) { + new_kcid = kstat_read(kc, cpu_ks[i], &cpu_stat[i]); + if (new_kcid < 0) { + perror("kstat_read "); + return;/* FIXME : need err handler? */ + } + } + if (new_kcid != kcid) + continue; /* kstat changed - start over */ + else + break; + } /* while (1) */ + + /* Initialize the cp_time array */ + for (i = 0; i < CPU_STATES; i++) + cp_time[i] = 0L; + for (i = 0; i < (int)ncpus; i++) { + for (j = 0; j < CPU_STATES; j++) + cp_time[j] += (long) cpu_stat[i].cpu_sysinfo.cpu[j]; + } + /* calculate the percent utilization for each category */ + /* cpu_state calculations */ + total_change = 0; + for (i = 0; i < CPU_STATES; i++) { + change = cp_time[i] - cp_old[i]; + if (change < 0) /* The counter rolled over */ + change = (int) ((unsigned long)cp_time[i] - (unsigned long)cp_old[i]); + cp_pct[i] = change; + total_change += change; + cp_old[i] = cp_time[i]; /* copy the data for the next run */ + } + /* this percent calculation isn't really needed, since the repaint + routine takes care of this... */ + for (i = 0; i < CPU_STATES; i++) + cp_pct[i] = + ((total_change > 0) ? + ((int)(((1000.0 * (float)cp_pct[i]) / total_change) + 0.5)) : + ((i == CPU_IDLE) ? (1000) : (0))); + + /* OK, we've got the data. Now copy it to cpu[][] */ + cpu[samples()-1][IWM_USER] = cp_pct[CPU_USER]; + cpu[samples()-1][IWM_NICE] = cp_pct[CPU_WAIT]; + cpu[samples()-1][IWM_SYS] = cp_pct[CPU_KERNEL]; + cpu[samples()-1][IWM_IDLE] = cp_pct[CPU_IDLE]; + +#endif /* have_kstat_h */ +} +#endif + diff --git a/eworkpanel/cpumonitor.h b/eworkpanel/cpumonitor.h new file mode 100755 index 0000000..a4aa3dd --- /dev/null +++ b/eworkpanel/cpumonitor.h @@ -0,0 +1,57 @@ +#ifndef _CPUMONITOR_H_ +#define _CPUMONITOR_H_ + +#include + +#if (defined(linux) || defined(HAVE_KSTAT_H)) + +#ifdef HAVE_KSTAT_H +#include +#include +#endif /* have_kstat_h */ + +enum { + IWM_USER = 0, + IWM_NICE, + IWM_SYS, + IWM_IDLE, + IWM_STATES +}; + +/*#include +#include +#include +#include */ +#include +#include +#include */ + +class CPUMonitor : public fltk::Widget { +public: + CPUMonitor(); + virtual ~CPUMonitor(); + + void clear(); + + void update_status(); + void get_cpu_info(); + + virtual void draw(); + virtual void layout(); + virtual void preferred_size(int &w, int &h) { w=this->w(); } + + int samples() const { return m_samples; } + +private: + bool m_draw_label; + int m_old_samples; + int m_samples; + + int **cpu; + long last_cpu[IWM_STATES]; + fltk::Color colors[IWM_STATES]; +}; + +#endif + +#endif diff --git a/eworkpanel/dock.cpp b/eworkpanel/dock.cpp new file mode 100755 index 0000000..622c7fa --- /dev/null +++ b/eworkpanel/dock.cpp @@ -0,0 +1,40 @@ +#include "dock.h" +//#include +#include + +Dock::Dock() + : fltk::Group(0,0,0,0) +{ + //box(FL_THIN_DOWN_BOX); + color(FL_INVALID_COLOR); //Draw with parent color + + layout_align(FL_ALIGN_RIGHT); + layout_spacing(1); + + end(); +} + +void Dock::add_to_tray(Fl_Widget *w) +{ + insert(*w, 0); + + w->layout_align(FL_ALIGN_LEFT); + w->show(); + + int new_width = this->w() + w->width() + layout_spacing(); + this->w(new_width); + + parent()->relayout(); + fltk::redraw(); +} + +void Dock::remove_from_tray(Fl_Widget *w) +{ + remove(w); + + int new_width = this->w() - w->width() - layout_spacing(); + this->w(new_width); + + parent()->relayout(); + fltk::redraw(); +} diff --git a/eworkpanel/dock.h b/eworkpanel/dock.h new file mode 100755 index 0000000..bcda8e4 --- /dev/null +++ b/eworkpanel/dock.h @@ -0,0 +1,16 @@ +#ifndef _DOCK_H_ +#define _DOCK_H_ + +//#include +#include + +class Dock : public fltk::Group +{ +public: + Dock(); + + void add_to_tray(fltk::Widget *w); + void remove_from_tray(fltk::Widget *w); +}; + +#endif diff --git a/eworkpanel/icons/about.xpm b/eworkpanel/icons/about.xpm new file mode 100755 index 0000000..49d513a --- /dev/null +++ b/eworkpanel/icons/about.xpm @@ -0,0 +1,170 @@ +/* XPM */ +static char * about_xpm[] = { +"16 16 151 2", +" c None", +". c #939393", +"+ c #818181", +"@ c #7E7E7E", +"# c #797878", +"$ c #A2A2A2", +"% c #ACACAC", +"& c #BFBFBF", +"* c #9E9E9E", +"= c #8E8E8E", +"- c #707070", +"; c #4D4D4D", +"> c #323031", +", c #999999", +"' c #FAFAFA", +") c #FFFFFF", +"! c #D3D3D3", +"~ c #888888", +"{ c #C2C2C2", +"] c #C1C1C1", +"^ c #515251", +"/ c #343232", +"( c #535353", +"_ c #C3C3C3", +": c #FBFBFC", +"< c #CCCCCF", +"[ c #9D9DA0", +"} c #EFEFF1", +"| c #1A1A1A", +"1 c #737373", +"2 c #2B2B2B", +"3 c #ABABAB", +"4 c #EAEAEB", +"5 c #E5E5DE", +"6 c #7F7F74", +"7 c #808177", +"8 c #C0BFB4", +"9 c #F4F4F3", +"0 c #AEAFAF", +"a c #070707", +"b c #373536", +"c c #3B3B3B", +"d c #191919", +"e c #5B5B5B", +"f c #B5B5BB", +"g c #D4D4AA", +"h c #F5F651", +"i c #FCF646", +"j c #FADE71", +"k c #C6C4C4", +"l c #2D2D2E", +"m c #000000", +"n c #353535", +"o c #161616", +"p c #040404", +"q c #666666", +"r c #E0E0E1", +"s c #EAEBEC", +"t c #FDFB93", +"u c #FBDD43", +"v c #E2D3BC", +"w c #E1E1E6", +"x c #080808", +"y c #272727", +"z c #282828", +"A c #090909", +"B c #FCFCFC", +"C c #FBFBFD", +"D c #F9F8F5", +"E c #ECE4D4", +"F c #DFE0E4", +"G c #E4E3E3", +"H c #D6D6D6", +"I c #545454", +"J c #121212", +"K c #1D1D1D", +"L c #3A3939", +"M c #141313", +"N c #4B4B4B", +"O c #E4E4E4", +"P c #EDEDED", +"Q c #F5F5F5", +"R c #F7F7F9", +"S c #F2F3F7", +"T c #E9E9E9", +"U c #DADADA", +"V c #CACACA", +"W c #282728", +"X c #171717", +"Y c #2A2828", +"Z c #151415", +"` c #7A7A7A", +" . c #DEDEDE", +".. c #EEEEEE", +"+. c #F0F0F0", +"@. c #EBEBEB", +"#. c #E0E0E0", +"$. c #CCCCCC", +"%. c #B4B4B4", +"&. c #8F9090", +"*. c #454545", +"=. c #808080", +"-. c #D1D1D1", +";. c #DCDCDC", +">. c #E6E6E6", +",. c #D2D2D2", +"'. c #BDBDBD", +"). c #A5A5A5", +"!. c #3E3D3D", +"~. c #898989", +"{. c #C5C6C5", +"]. c #D0D0D0", +"^. c #D9D9D9", +"/. c #ADADAD", +"(. c #7D7E7E", +"_. c #A8A9B4", +":. c #BFC1CA", +"<. c #C6C9CC", +"[. c #C6C6C6", +"}. c #BEBEBE", +"|. c #ACADB0", +"1. c #97989B", +"2. c #818187", +"3. c #4B4C56", +"4. c #C6C379", +"5. c #D5C989", +"6. c #C9BCA4", +"7. c #BAB9BA", +"8. c #B1B1B0", +"9. c #B4B39D", +"0. c #C2C4AD", +"a. c #BDBF93", +"b. c #988C45", +"c. c #FCE35C", +"d. c #FFEB66", +"e. c #FFC846", +"f. c #F99635", +"g. c #D47C49", +"h. c #877F7C", +"i. c #7F7E79", +"j. c #D9AC5D", +"k. c #FDC27A", +"l. c #FAB96C", +"m. c #EE973D", +"n. c #AE5333", +"o. c #895E38", +"p. c #81432A", +"q. c #7C3D37", +"r. c #764033", +"s. c #6A2922", +"t. c #662E2E", +" . + @ # ", +" $ % & * = - ; > ", +" , ' ) ! ~ { ] ^ / ", +" ( _ ) : < [ } ) { | ", +" 1 2 3 4 5 6 7 8 9 0 a b ", +" c d e f g h i j k l m n ", +" o p q r s t u v w @ x y ", +" z m A _ B C D E F G H I J K ", +"L M p N O P Q R S T U V ~ W X Y ", +" Z ` .O ..+.@.#.$.%.&.*. ", +" n =.-.;.O >.#.,.'.).~ !. ", +" ~.{.].^.^.,._ /., (. ", +" _.:.<.[.}.|.1.2.3. ", +" 4.5.6.7.8.9.0.a.b. ", +" c.d.e.f.g.h.i.j.k.l.m.n. ", +" o.p.q. r.s.t. "}; diff --git a/eworkpanel/icons/clean.xpm b/eworkpanel/icons/clean.xpm new file mode 100755 index 0000000..db9832e --- /dev/null +++ b/eworkpanel/icons/clean.xpm @@ -0,0 +1,19 @@ +/* XPM */ +static char * clean_xpm[] = { +"16 15 1 1", +" c None", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/eworkpanel/icons/desktop.xpm b/eworkpanel/icons/desktop.xpm new file mode 100755 index 0000000..acfa25d --- /dev/null +++ b/eworkpanel/icons/desktop.xpm @@ -0,0 +1,208 @@ +/* XPM */ +static char * desktop_xpm[] = { +"16 16 189 2", +" c None", +". c #80AADB", +"+ c #89B2E2", +"@ c #83AFE2", +"# c #7CABE2", +"$ c #74A8E2", +"% c #6DA4E2", +"& c #65A0E2", +"* c #609EE2", +"= c #5E9CE2", +"- c #5E9DE2", +"; c #65A0E4", +"> c #4299E6", +", c #003458", +"' c #8BB3E2", +") c #ADD4FF", +"! c #93C7FF", +"~ c #74B8FF", +"{ c #51A7FF", +"] c #2F95FF", +"^ c #0F86FF", +"/ c #007AFF", +"( c #0074FF", +"_ c #0075FF", +": c #0076FF", +"< c #007DFC", +"[ c #003656", +"} c #91B5E1", +"| c #CDE1F8", +"1 c #C2DBF8", +"2 c #B9D7F8", +"3 c #AFD2F8", +"4 c #A4CDF8", +"5 c #9AC8F8", +"6 c #92C5F8", +"7 c #8EC3F8", +"8 c #8DC2F8", +"9 c #8BC2F8", +"0 c #8AC1F8", +"a c #92C5FA", +"b c #5FB1F4", +"c c #003257", +"d c #9CBCE2", +"e c #FDFEFD", +"f c #F7FFFF", +"g c #F6FFFF", +"h c #F6FBFD", +"i c #F5FBFD", +"j c #F3FCFD", +"k c #F1FAFD", +"l c #EEF9FD", +"m c #EBF8FD", +"n c #E9F7FD", +"o c #F0FBFE", +"p c #8FC9F1", +"q c #003056", +"r c #FCFFFF", +"s c #F7DCBA", +"t c #F6C892", +"u c #F1E0C7", +"v c #F0FFFF", +"w c #EEFDFF", +"x c #E7F7FF", +"y c #E7F9FF", +"z c #E6FAFF", +"A c #E2F8FF", +"B c #E0F8FF", +"C c #E3F6FF", +"D c #84C4F2", +"E c #9BBCE2", +"F c #F9FFFF", +"G c #F6A94B", +"H c #F97700", +"I c #F6BD73", +"J c #BFCFD5", +"K c #B3B9BD", +"L c #E8FBFF", +"M c #C0CCD2", +"N c #A6ACB0", +"O c #A9B1B5", +"P c #A7AFB3", +"Q c #D5E7F1", +"R c #85C8F7", +"S c #9ABCE2", +"T c #F4BE7A", +"U c #F7982B", +"V c #F1CA95", +"W c #D8EDF2", +"X c #D4E2EA", +"Y c #E1F6FF", +"Z c #D4E6F1", +"` c #C9DBE6", +" . c #C8DCE8", +".. c #C6DCE7", +"+. c #D7EFFB", +"@. c #82C4F3", +"#. c #9ABBE2", +"$. c #F4FDFF", +"%. c #ECF9FF", +"&. c #E9F9FF", +"*. c #E6F8FF", +"=. c #E4F7FF", +"-. c #DDF2FF", +";. c #DCF3FF", +">. c #DAF4FF", +",. c #D6F3FF", +"'. c #D5F3FF", +"). c #D8F2FF", +"!. c #7FC2F2", +"~. c #99BBE2", +"{. c #F1FBFF", +"]. c #E9F8FF", +"^. c #E6F9FF", +"/. c #DAF1FF", +"(. c #D9F2FF", +"_. c #D6F4FF", +":. c #D3F2FF", +"<. c #D1F1FF", +"[. c #D5F1FF", +"}. c #7EC2F2", +"|. c #98BBE2", +"1. c #EDFEFF", +"2. c #F0BD7A", +"3. c #F6992B", +"4. c #EBC795", +"5. c #D1EAF2", +"6. c #CDDFEA", +"7. c #CCE3F1", +"8. c #C2D9E6", +"9. c #C1DAE8", +"0. c #C0D9E7", +"a. c #CFEBFB", +"b. c #7DC3F3", +"c. c #EAFFFF", +"d. c #F3A84B", +"e. c #FE7900", +"f. c #F0BA73", +"g. c #B5CBD5", +"h. c #ABB6BD", +"i. c #D7F5FF", +"j. c #B6C8D2", +"k. c #A1AAB0", +"l. c #A3AEB5", +"m. c #A1ADB3", +"n. c #C7E2F1", +"o. c #7EC4F7", +"p. c #97BBE2", +"q. c #E9FBFF", +"r. c #E8D7BA", +"s. c #EAC492", +"t. c #E2DBC7", +"u. c #DAF7FF", +"v. c #D8F4FF", +"w. c #D1EFFF", +"x. c #D1F0FF", +"y. c #CFF1FF", +"z. c #CCF1FF", +"A. c #C9F0FF", +"B. c #CDEFFF", +"C. c #7AC0F2", +"D. c #003156", +"E. c #9FBEE4", +"F. c #EFFCFF", +"G. c #E6FCFF", +"H. c #E1FFFF", +"I. c #E0FAFF", +"J. c #DEF3FF", +"K. c #DBF3FF", +"L. c #D4F0FF", +"M. c #D2EFFF", +"N. c #CFEFFF", +"O. c #CDEEFF", +"P. c #D5F2FF", +"Q. c #81C4F5", +"R. c #64A9E4", +"S. c #8BC8F3", +"T. c #87C6F2", +"U. c #86C5F2", +"V. c #83C4F2", +"W. c #81C3F2", +"X. c #80C3F2", +"Y. c #7CC1F2", +"Z. c #7AC1F2", +"`. c #81C5F5", +" + c #54B4F6", +".+ c #00375F", +"++ c #003358", +"@+ c #00375E", +"#+ c #001A2B", +". + @ # $ % & * = - - - ; > , ", +"' ) ! ~ { ] ^ / ( _ _ _ : < [ ", +"} | 1 2 3 4 5 6 7 8 9 0 a b c ", +"d e f g g h i j k l m n o p q ", +"d r s t u v w x y z A B C D q ", +"E F G H I J K L M N O P Q R q ", +"S g T U V W X Y Z ` ...+.@.q ", +"#.$.%.&.*.*.=.-.;.>.,.'.).!.q ", +"~.{.].^.C C Y /.(._.:.<.[.}.q ", +"|.1.2.3.4.5.6.).7.8.9.0.a.b.q ", +"|.c.d.e.f.g.h.i.j.k.l.m.n.o.q ", +"p.q.r.s.t.u.v.w.x.y.z.A.B.C.D. ", +"E.F.G.H.I.J.K.).L.M.N.O.P.Q.D. ", +"R.S.T.U.D V.W.X.}.Y.Y.Z.`. +.+ ", +"++q q q q q q q q q q q q @+#+ ", +" "}; diff --git a/eworkpanel/icons/ede-small.xpm b/eworkpanel/icons/ede-small.xpm new file mode 100755 index 0000000..5053fc9 --- /dev/null +++ b/eworkpanel/icons/ede-small.xpm @@ -0,0 +1,76 @@ +/* XPM */ +static char * ede_small2_xpm[] = { +"16 16 57 1", +" c None", +". c #002F78", +"+ c #002C77", +"@ c #002E78", +"# c #003079", +"$ c #00367B", +"% c #003179", +"& c #002B76", +"* c #003D7D", +"= c #004E84", +"- c #082775", +"; c #002A76", +"> c #003E7E", +", c #005285", +"' c #082072", +") c #081C6F", +"! c #081F71", +"~ c #003B7D", +"{ c #3F8299", +"] c #005486", +"^ c #082675", +"/ c #085887", +"( c #081D70", +"_ c #082975", +": c #081169", +"< c #004D83", +"[ c #608F9F", +"} c #002D77", +"| c #003F7E", +"1 c #257694", +"2 c #13678E", +"3 c #082574", +"4 c #082172", +"5 c #11648C", +"6 c #2B7995", +"7 c #004480", +"8 c #085B89", +"9 c #397F98", +"0 c #004681", +"a c #081A6F", +"b c #196C8F", +"c c #005586", +"d c #085988", +"e c #082474", +"f c #082373", +"g c #003D7E", +"h c #307C97", +"i c #081C70", +"j c #00387C", +"k c #1D7091", +"l c #11668D", +"m c #207392", +"n c #005185", +"o c #004581", +"p c #004580", +"q c #00347A", +"r c #082A76", +"..++++++++++++@.", +".#$$$$$$$$$$$$%.", +"&* =-", +";> ,-", +";> ,')!~{ ]^", +";> /(@._:< [>&", +";> _}+'|1 2_^#", +";> 34%5 6$',7+", +";> -8 904ab c^", +";> de^@' ,^", +";> 2ff@.3g ,^", +";> h.i'ij ,^", +";> klm ,^", +";g n^", +"@%7opppo0oppopq@", +"..r___________@."}; diff --git a/eworkpanel/icons/ede_small.xpm b/eworkpanel/icons/ede_small.xpm new file mode 100755 index 0000000..5fc7024 --- /dev/null +++ b/eworkpanel/icons/ede_small.xpm @@ -0,0 +1,316 @@ +/* XPM */ +static char * ede_small_xpm[] = { +"54 15 298 2", +" c None", +". c #4A484A", +"+ c #454345", +"@ c #000000", +"# c #996523", +"$ c #3A332A", +"% c #706D70", +"& c #282726", +"* c #434243", +"= c #E7EEDE", +"- c #E4EDDA", +"; c #E3ECD7", +"> c #E2EBD6", +", c #DFE9D3", +"' c #DDE8CF", +") c #D9E5CA", +"! c #C4CEB8", +"~ c #791818", +"{ c #7D1616", +"] c #7E1617", +"^ c #7F1617", +"/ c #801717", +"( c #7F1717", +"_ c #7A1515", +": c #671314", +"< c #675E5E", +"[ c #410E92", +"} c #4C12AB", +"| c #5314B9", +"1 c #5A1BBF", +"2 c #5E1FC1", +"3 c #6428C3", +"4 c #6931C4", +"5 c #6D37C4", +"6 c #713FBE", +"7 c #8D5F22", +"8 c #603A08", +"9 c #030303", +"0 c #050504", +"a c #131313", +"b c #DDE8D0", +"c c #DBE6CD", +"d c #D4DFC6", +"e c #CAD4BE", +"f c #CFDBC0", +"g c #D2DDC4", +"h c #D3E0C2", +"i c #D2E0C1", +"j c #8C2727", +"k c #912625", +"l c #912423", +"m c #922726", +"n c #8B2727", +"o c #5211B8", +"p c #5718BD", +"q c #5E26B7", +"r c #5C2CA9", +"s c #532A95", +"t c #1B132B", +"u c #404040", +"v c #2F2E2F", +"w c #787578", +"x c #494749", +"y c #0E0E0E", +"z c #4C4B4C", +"A c #D4E1C3", +"B c #33362F", +"C c #2F312C", +"D c #3E413A", +"E c #953738", +"F c #993738", +"G c #943839", +"H c #903636", +"I c #983637", +"J c #873637", +"K c #5C1FBC", +"L c #6124C2", +"M c #612CB7", +"N c #7B7B7B", +"O c #F9E445", +"P c #A5A3A5", +"Q c #2F2F2F", +"R c #3B3B3B", +"S c #CCDCB9", +"T c #CBDCB8", +"U c #A24B4B", +"V c #A44949", +"W c #984C4E", +"X c #9E4B4B", +"Y c #A44A4A", +"Z c #A24A4A", +"` c #642CBC", +" . c #6930C4", +".. c #6D39BF", +"+. c #4A4C4A", +"@. c #949295", +"#. c #E2DEE2", +"$. c #3E3D3E", +"%. c #0F0F0F", +"&. c #353435", +"*. c #C3D3AF", +"=. c #C5D6AF", +"-. c #C1D5AA", +";. c #AA5C5C", +">. c #AB5A5A", +",. c #A35D5C", +"'. c #AA5959", +"). c #AC5B5B", +"!. c #6D39C1", +"~. c #743DC8", +"{. c #7845C9", +"]. c #7D7C7D", +"^. c #757275", +"/. c #817F81", +"(. c #757475", +"_. c #121212", +":. c #191919", +"<. c #343334", +"[. c #BCD0A4", +"}. c #BBD2A2", +"|. c #B9D09E", +"1. c #BACF9E", +"2. c #B6CE9A", +"3. c #B6CB9A", +"4. c #ACC290", +"5. c #A4BA87", +"6. c #96AB7B", +"7. c #B16B6C", +"8. c #B3696A", +"9. c #AC6E6E", +"0. c #B46A6A", +"a. c #7243BC", +"b. c #7C49CC", +"c. c #8352CF", +"d. c #8659CD", +"e. c #8B60CE", +"f. c #9169D2", +"g. c #966FD1", +"h. c #9B75D5", +"i. c #9F7DD5", +"j. c #A19DA1", +"k. c #6F6C6F", +"l. c #A9A7A9", +"m. c #E2DFE2", +"n. c #2C2B2C", +"o. c #010101", +"p. c #1E1D1C", +"q. c #2A2A2B", +"r. c #1F1F1F", +"s. c #B5CC97", +"t. c #B2CB95", +"u. c #AEC790", +"v. c #899C70", +"w. c #90A477", +"x. c #A1B784", +"y. c #AEC391", +"z. c #ADC390", +"A. c #A9C289", +"B. c #B97C7D", +"C. c #BD7E7E", +"D. c #B97E7E", +"E. c #BD7C7C", +"F. c #BB7A7B", +"G. c #8E63D1", +"H. c #8658CF", +"I. c #8B5FD0", +"J. c #8962C8", +"K. c #616061", +"L. c #F4F0F4", +"M. c #9E9D9E", +"N. c #CCC9CC", +"O. c #F6F3F6", +"P. c #212021", +"Q. c #4A494B", +"R. c #232323", +"S. c #AEC68E", +"T. c #ABC689", +"U. c #9CB27F", +"V. c #3E4731", +"W. c #4C583D", +"X. c #C48F8F", +"Y. c #C68F8E", +"Z. c #C09191", +"`. c #C58E8D", +" + c #936BD3", +".+ c #777677", +"++ c #E7E3E7", +"@+ c #878587", +"#+ c #B3B0B2", +"$+ c #FCF8FC", +"%+ c #171717", +"&+ c #ADAAAD", +"*+ c #878687", +"=+ c #A4C17E", +"-+ c #A2BF7D", +";+ c #899F6B", +">+ c #CDA0A0", +",+ c #CDA1A1", +"'+ c #CDA2A2", +")+ c #CD9FA0", +"!+ c #A07DD7", +"~+ c #9871D5", +"{+ c #9C78D6", +"]+ c #676667", +"^+ c #AFABAF", +"/+ c #F6F2F6", +"(+ c #6C6A6C", +"_+ c #282728", +":+ c #C1BDC1", +"<+ c #BAB7BA", +"[+ c #060606", +"}+ c #9BBB73", +"|+ c #9ABA71", +"1+ c #7B955B", +"2+ c #D6B1B1", +"3+ c #D7B0B0", +"4+ c #D4B2B2", +"5+ c #D1ADAE", +"6+ c #D6AFAF", +"7+ c #D7B2B1", +"8+ c #A382D8", +"9+ c #515051", +"0+ c #CAC6C9", +"a+ c #BEBABE", +"b+ c #585558", +"c+ c #C4C0C4", +"d+ c #CECACE", +"e+ c #252525", +"f+ c #020202", +"g+ c #93B668", +"h+ c #92B566", +"i+ c #91B365", +"j+ c #DFC3C4", +"k+ c #DBC3C3", +"l+ c #DCC0C1", +"m+ c #BFA6A8", +"n+ c #A888DA", +"o+ c #AC8FDD", +"p+ c #4A4848", +"q+ c #ACA9AB", +"r+ c #B3B0B3", +"s+ c #CCC8CC", +"t+ c #D4D0D4", +"u+ c #464546", +"v+ c #080808", +"w+ c #575557", +"x+ c #8DB05F", +"y+ c #8AAE5B", +"z+ c #8AAE5A", +"A+ c #86AC55", +"B+ c #85AB53", +"C+ c #84AA52", +"D+ c #83AA51", +"E+ c #82A74F", +"F+ c #81A451", +"G+ c #E8D3D4", +"H+ c #E9D3D4", +"I+ c #E9D4D5", +"J+ c #DDCACB", +"K+ c #B094DE", +"L+ c #B69CE1", +"M+ c #BAA2E2", +"N+ c #C0AAE4", +"O+ c #C6B1E6", +"P+ c #CBB9E7", +"Q+ c #D0C0E9", +"R+ c #D4C5EC", +"S+ c #525352", +"T+ c #6C6B6C", +"U+ c #626263", +"V+ c #4E4D4E", +"W+ c #4C4C4C", +"X+ c #818081", +"Y+ c #535253", +"Z+ c #101010", +"`+ c #222122", +" @ c #393839", +".@ c #6B8844", +"+@ c #79994C", +"@@ c #7FA34E", +"#@ c #80A54D", +"$@ c #7B9D4D", +"%@ c #D0C5C4", +"&@ c #D0C6C5", +"*@ c #D1C6C5", +"=@ c #C1B8B6", +"-@ c #8B8181", +";@ c #B59EDA", +">@ c #BBA4DE", +",@ c #AE9ACC", +"'@ c #545354", +")@ c #59585A", +"!@ c #858485", +"~@ c #838183", +"{@ c #6D6B6D", +"]@ c #595959", +"^@ c #312C38", +"/@ c #43404B", +" . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" # $ % & * @ = = - ; > , ' ) ! @ @ ~ { ] ^ / ( _ : @ < @ [ } | 1 2 3 4 5 6 @ ", +" 7 8 9 0 @ a @ b b c d e f g h i @ @ j k l k k k k m n @ @ o p 2 q r s s s s t ", +" u v w x y z @ b A h @ B C D @ @ @ @ E F G @ @ @ H F I J @ @ K L M @ @ @ @ @ @ @ ", +" N O O P Q R @ b S T @ @ U V W @ @ X Y Z @ @ ` ...@ ", +" +.@.O #.$.%.&.v @ *.=.-.@ @ @ @ @ @ @ @ ;.>.,.@ @ '.).@ @ !.~.{.@ @ @ @ @ @ @ ", +" ].^./.O (._.9 :.<. @ [.}.|.1.2.3.4.5.6.@ @ 7.8.9.@ @ 8.0.@ @ a.b.c.d.e.f.g.h.i.@ ", +" j.k.l.m.n.o.p.q.r. @ s.t.u.v.w.x.y.z.A.@ @ B.C.D.@ @ E.F.@ @ G.H.I.J.e.e.e.e.e.@ ", +" K.L.M.N.O.P.9 k.Q.y R. @ S.T.U.@ @ @ @ V.W.@ @ X.Y.Z.@ @ Y.`.@ @ G.G. +@ @ @ @ @ @ @ ", +" .+++@+#+$+<.%+&+*+@ %+ @ =+-+;+@ @ >+,+'+@ @ )+,+@ @ !+~+{+@ ", +" ]+^+ /./+(+_+:+<+[+%. @ }+|+1+@ @ 2+3+4+@ @ 5+6+7+@ @ !+!+8+@ ", +" 9+0+a+b+c+d+e+f+ @ g+h+i+@ @ @ @ @ @ @ @ j+j+k+@ @ @ l+j+j+m+@ @ !+n+o+@ @ @ @ @ @ @ ", +" p+q+r+s+t+u+v+w+ @ x+y+z+A+B+C+D+E+F+@ @ G+H+I+H+H+H+H+H+J+@ @ !+K+L+M+N+O+P+Q+R+@ ", +" S+T+U+V+W+X+Y+Z+`+ @ @ .@.@.@.@.@+@@@#@$@@ @ %@%@&@&@&@*@=@-@@ @ !+;@>@,@N+N+N+N+N+@ ", +" '@)@!@~@{@]@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^@/@@ @ @ @ @ @ @ "}; diff --git a/eworkpanel/icons/favourites.xpm b/eworkpanel/icons/favourites.xpm new file mode 100755 index 0000000..a108d09 --- /dev/null +++ b/eworkpanel/icons/favourites.xpm @@ -0,0 +1,150 @@ +/* XPM */ +static char * favourites_xpm[] = { +"16 15 132 2", +" c None", +". c #EDCFD2", +"+ c #F3E6E9", +"@ c #FEE0E0", +"# c #FED2D0", +"$ c #EDB0B2", +"% c #DE6062", +"& c #F1CDCD", +"* c #F3CECE", +"= c #F6D2D2", +"- c #ECCACA", +"; c #DBA2A7", +"> c #F0C0C2", +", c #FEEDED", +"' c #FEE2E2", +") c #FECFCF", +"! c #FEBDBF", +"~ c #FEB3B3", +"{ c #FD9595", +"] c #DB5F62", +"^ c #FBB0B1", +"/ c #FEA7A7", +"( c #FEACAB", +"_ c #FEB9B9", +": c #FEC8C9", +"< c #FED3D3", +"[ c #FEDDDE", +"} c #FEDBDB", +"| c #FED2D2", +"1 c #FEC6C6", +"2 c #FEB7B7", +"3 c #FEA8A9", +"4 c #FE9C9C", +"5 c #FA6C6B", +"6 c #F78282", +"7 c #FE7E7E", +"8 c #FE8988", +"9 c #FEADAE", +"0 c #FEBABA", +"a c #FEC9CA", +"b c #FEC7C7", +"c c #FEC4C4", +"d c #FEAFAE", +"e c #FE9A9A", +"f c #FE7374", +"g c #FC4949", +"h c #9D5054", +"i c #FB5756", +"j c #FE7475", +"k c #FE8484", +"l c #FE9393", +"m c #FEA1A1", +"n c #FEABAB", +"o c #FEB7B8", +"p c #FEB4B4", +"q c #FEA4A5", +"r c #FE8A89", +"s c #FE6969", +"t c #FE4A4A", +"u c #FC3738", +"v c #A33F41", +"w c #FD4748", +"x c #FE6A6A", +"y c #FE7777", +"z c #FE8586", +"A c #FE9292", +"B c #FE9B9B", +"C c #FEA2A3", +"D c #FEA3A4", +"E c #FE8F8F", +"F c #FE7979", +"G c #FE6363", +"H c #FE5757", +"I c #FA3535", +"J c #9A5053", +"K c #F32D2F", +"L c #FE5C5C", +"M c #FE6565", +"N c #FE7171", +"O c #FE7B7C", +"P c #FE8181", +"Q c #FE8383", +"R c #FE7C7B", +"S c #FE7272", +"T c #FF9500", +"U c #FE5454", +"V c #FE4545", +"W c #F73E3D", +"X c #7E2A2B", +"Y c #E03E3E", +"Z c #FE4B4B", +"` c #FE5C5D", +" . c #FE6D6D", +".. c #FE7373", +"+. c #FE6B6C", +"@. c #FE4C4D", +"#. c #6A2324", +"$. c #B56767", +"%. c #F13A3A", +"&. c #FE5352", +"*. c #FE5A59", +"=. c #FE6161", +"-. c #FE6665", +";. c #FFFF1A", +">. c #FFC600", +",. c #CC4040", +"'. c #FE4D4C", +"). c #FE5353", +"!. c #FE5857", +"~. c #FE5959", +"{. c #FFFF5D", +"]. c #FFFF8C", +"^. c #FFFFB6", +"/. c #BF4948", +"(. c #F74A4A", +"_. c #FE4747", +":. c #FD4647", +"<. c #FD4A4B", +"[. c #FE4A4B", +"}. c #FFFFCC", +"|. c #5A292A", +"1. c #B24949", +"2. c #F84848", +"3. c #FE3D3E", +"4. c #F83738", +"5. c #A43D3D", +"6. c #D44F4F", +"7. c #9A3837", +"8. c #EC2525", +"9. c #75302F", +"0. c #8F3A3B", +"a. c #BF4242", +" . + @ # $ % ", +" & * = - ; > , ' ) ! ~ { ] ", +" ^ / ( _ : < [ } | 1 2 3 4 5 ", +"6 7 8 4 9 0 1 a b c 0 d e f g h ", +"i j k l m n ~ 2 o p q r s t u v ", +"w x y z A B C D 4 E F G H t I J ", +"K L M N O P k Q R S T T U V W X ", +"Y Z ` M ...y T T +.T T @.T T #.", +"$.%.&.*.=.-.T ;.>.T ;.;.T >.;.T ", +" ,.V '.).!.~.T {.].^.^.].{.T ", +" /.(._.:.<.[.T >.}.}.>.T |. ", +" 1.2.3.4.T {.].^.^.].{.T ", +" 5.6.T ;.>.T ;.;.T >.;.T ", +" 7.T T 8.T T T T ", +" 9.0.a.T T "}; diff --git a/eworkpanel/icons/file.xpm b/eworkpanel/icons/file.xpm new file mode 100755 index 0000000..2c1accf --- /dev/null +++ b/eworkpanel/icons/file.xpm @@ -0,0 +1,88 @@ +/* XPM */ +static char * file_xpm[] = { +"16 16 69 1", +" c None", +". c #C6C6D5", +"+ c #9494AD", +"@ c #FBFBFC", +"# c #F8F8FA", +"$ c #F4F4F7", +"% c #EEEEF2", +"& c #EAEAF0", +"* c #DEDEE7", +"= c #E0E0E9", +"- c #C1C8D5", +"; c #BEC5D3", +"> c #BBC1CF", +", c #B8BFCE", +"' c #AFB5C7", +") c #C9C9D7", +"! c #F5F5F8", +"~ c #F0F0F4", +"{ c #E4E4EB", +"] c #C0C7D4", +"^ c #BBC2D0", +"/ c #B9C0CE", +"( c #B3B9CA", +"_ c #DBDBE5", +": c #CDCDDA", +"< c #BFBFD0", +"[ c #F7F7F9", +"} c #F2F2F6", +"| c #E7E7EE", +"1 c #E3E3EA", +"2 c #D0D0DC", +"3 c #C4C4D3", +"4 c #C2C2D1", +"5 c #FAFAFB", +"6 c #BDC3D1", +"7 c #B4BACB", +"8 c #AEB4C7", +"9 c #9EA3B9", +"0 c #9BA1B6", +"a c #F9F9FA", +"b c #DCDCE5", +"c c #D6D6E1", +"d c #D2D2DE", +"e c #D1D1DD", +"f c #CECEDB", +"g c #BCC3D1", +"h c #B6BDCD", +"i c #B0B7C7", +"j c #AAB0C3", +"k c #AAAFC2", +"l c #A6ACBF", +"m c #A5ABBF", +"n c #E5E5EC", +"o c #DFDFE8", +"p c #DDDDE6", +"q c #DADAE4", +"r c #D7D7E2", +"s c #B5BBCB", +"t c #B1B8C8", +"u c #ADB3C6", +"v c #A9AFC1", +"w c #EFEFF3", +"x c #E8E8EE", +"y c #E6E6ED", +"z c #B6BCCC", +"A c #B2B8C9", +"B c #ABB1C3", +"C c #F3F3F6", +"D c #E1E1E9", +" ........+ ", +" .@#$%&*=.+ ", +" .@-;>,'=.)+ ", +" .@#!~%{=++++ ", +" .@];^/(=_:<+ ", +" .@[!}~|1234+ ", +" .5];6>7890.+ ", +" .a$}%&bcdef+ ", +" .!g^hijklmd+ ", +" .!$%n1opqrc+ ", +" .[^s(t8ujvc+ ", +" .[wxy{=obqr+ ", +" .$z7(AiuBkr+ ", +" .Cx|n{Do_qr+ ", +" .~xxyt8obqr+ ", +" ++++++++++++ "}; diff --git a/eworkpanel/icons/find.xpm b/eworkpanel/icons/find.xpm new file mode 100755 index 0000000..846f71a --- /dev/null +++ b/eworkpanel/icons/find.xpm @@ -0,0 +1,205 @@ +/* XPM */ +static char * find_xpm[] = { +"16 16 186 2", +" c None", +". c #71A0D1", +"+ c #7FACD8", +"@ c #79A5D0", +"# c #719FC8", +"$ c #6293BE", +"% c #90BBE5", +"& c #B1D5F2", +"* c #E4F7FF", +"= c #F6FDFF", +"- c #F7FFFF", +"; c #ECF8FF", +"> c #A4CAE2", +", c #346386", +"' c #8FBAE4", +") c #DCF4FF", +"! c #FBFFFF", +"~ c #FBFCFF", +"{ c #F4FAFF", +"] c #EBF7FF", +"^ c #E7F4FF", +"/ c #E9FAFF", +"( c #BAE3FD", +"_ c #13446B", +": c #719FD0", +"< c #B7D7F2", +"[ c #F7FEFF", +"} c #F7FCFF", +"| c #F1F9FF", +"1 c #EBF6FF", +"2 c #E4F3FF", +"3 c #DDEFFE", +"4 c #CAE5FD", +"5 c #C3E7FF", +"6 c #528AB6", +"7 c #85AFD9", +"8 c #EFFCFF", +"9 c #F7FBFF", +"0 c #EEF7FF", +"a c #EAF6FE", +"b c #E6F3FE", +"c c #DFF0FE", +"d c #CDE5FD", +"e c #B4D9FC", +"f c #B8DBFF", +"g c #A8D4FE", +"h c #003258", +"i c #76A4D0", +"j c #E5F6FF", +"k c #EAF5FF", +"l c #E6F3FF", +"m c #E2F1FE", +"n c #D4E9FE", +"o c #BFDDFC", +"p c #B0D3FB", +"q c #ABD0FA", +"r c #AFD2FD", +"s c #97C3F4", +"t c #002F52", +"u c #699FCF", +"v c #C5E8FF", +"w c #C3E1FD", +"x c #C4E1FE", +"y c #C1DDFC", +"z c #AFD2FB", +"A c #A8CCFA", +"B c #A5C8F9", +"C c #A1C3F8", +"D c #A3C2FA", +"E c #91BBF9", +"F c #003157", +"G c #325881", +"H c #8FC0ED", +"I c #BCDEFF", +"J c #AED2FC", +"K c #ABCEFA", +"L c #A6C8F9", +"M c #9FC0F8", +"N c #98B9F7", +"O c #91B1F5", +"P c #96B4FF", +"Q c #2F67A1", +"R c #000C16", +"S c #618ABF", +"T c #4B7EAC", +"U c #B6DBFF", +"V c #B3D2FF", +"W c #A2C4F8", +"X c #9BBCF8", +"Y c #91B0F6", +"Z c #89A6F5", +"` c #8AA2FD", +" . c #5F8AF0", +".. c #54879C", +"+. c #8B7F00", +"@. c #ABCCFF", +"#. c #758492", +"$. c #3A6FA2", +"%. c #6EA0DB", +"&. c #A4C3FF", +"*. c #93B2FE", +"=. c #88A5FD", +"-. c #7895F6", +";. c #386CC4", +">. c #586674", +",. c #F5FC73", +"'. c #FCE56A", +"). c #754200", +"!. c #A1C6FF", +"~. c #F8F8FD", +"{. c #95A1AD", +"]. c #214561", +"^. c #1E5A90", +"/. c #195287", +"(. c #175189", +"_. c #134783", +":. c #1A2628", +"<. c #C0710D", +"[. c #DCA026", +"}. c #DBC095", +"|. c #E6C07B", +"1. c #774500", +"2. c #A1C5FE", +"3. c #F6FAFF", +"4. c #E8EEFD", +"5. c #B4C2DE", +"6. c #77859B", +"7. c #5D697A", +"8. c #596679", +"9. c #5D6A7D", +"0. c #5372A1", +"a. c #22170E", +"b. c #854B0C", +"c. c #C08330", +"d. c #E2C692", +"e. c #E5BF7B", +"f. c #784700", +"g. c #F0F6FE", +"h. c #DDEAFF", +"i. c #CDDEFF", +"j. c #C4D7F9", +"k. c #BCD0F1", +"l. c #B3CAF1", +"m. c #B8CDF2", +"n. c #83B2F8", +"o. c #89510C", +"p. c #E1C694", +"q. c #E3BC75", +"r. c #7E4C01", +"s. c #A6C9FF", +"t. c #F1F6FF", +"u. c #D9E7FF", +"v. c #D1E2FF", +"w. c #CFE1FF", +"x. c #CCE0FF", +"y. c #C2D9FF", +"z. c #C7DEFF", +"A. c #8ABBFF", +"B. c #0F3162", +"C. c #874F09", +"D. c #C88C3C", +"E. c #C39748", +"F. c #B3700D", +"G. c #A4C7FE", +"H. c #EDF4FE", +"I. c #D6E4FE", +"J. c #CDDEFE", +"K. c #C9DCFE", +"L. c #C7DBFE", +"M. c #BDD6FE", +"N. c #C3DAFF", +"O. c #87B8FF", +"P. c #0E3162", +"Q. c #844F0D", +"R. c #925B19", +"S. c #623901", +"T. c #4988E5", +"U. c #5691E5", +"V. c #528EE5", +"W. c #508CE3", +"X. c #508BE3", +"Y. c #4F8BE3", +"Z. c #4D8AE3", +"`. c #4F8BE4", +" + c #478DF3", +".+ c #241400", +" . + @ # $ ", +" % & * = - ; > , ", +" ' ) ! ~ { ] ^ / ( _ ", +": < [ } | 1 2 3 4 5 6 ", +"7 8 9 0 a b c d e f g h ", +"i j k l m n o p q r s t ", +"u v w x y z A B C D E F ", +"G H I J K L M N O P Q R ", +"S T U V W X Y Z ` ...+. ", +"@.#.$.%.&.*.=.-.;.>.,.'.). ", +"!.~.{.].^./.(._.:.<.[.}.|.1. ", +"2.3.4.5.6.7.8.9.0.a.b.c.d.e.f. ", +"2.g.h.i.j.k.l.m.n. o.c.p.q.r.", +"s.t.u.v.w.x.y.z.A.B. C.D.E.F.", +"G.H.I.J.K.L.M.N.O.P. Q.R.S.", +"T.U.V.W.X.Y.Z.`. + .+ "}; diff --git a/eworkpanel/icons/help.xpm b/eworkpanel/icons/help.xpm new file mode 100755 index 0000000..a96d196 --- /dev/null +++ b/eworkpanel/icons/help.xpm @@ -0,0 +1,138 @@ +/* XPM */ +static char * help_xpm[] = { +"16 16 119 2", +" c None", +". c #724700", +"+ c #774800", +"@ c #856D3C", +"# c #985817", +"$ c #8E6106", +"% c #8C5E00", +"& c #6A4C19", +"* c #797A7B", +"= c #D0D4DB", +"- c #EEF5F5", +"; c #EBB3B2", +"> c #ED2423", +", c #D51E23", +"' c #9A2423", +") c #C6CFD7", +"! c #FFFFFF", +"~ c #FFDBDB", +"{ c #FF6767", +"] c #FF6A6A", +"^ c #F95354", +"/ c #D52A2D", +"( c #4B3000", +"_ c #6A4500", +": c #C9343A", +"< c #FFBABB", +"[ c #DEDEDE", +"} c #949999", +"| c #735959", +"1 c #7E2020", +"2 c #B03E3E", +"3 c #F76868", +"4 c #FA8989", +"5 c #DBC5C7", +"6 c #583600", +"7 c #7F5902", +"8 c #751E21", +"9 c #FF2828", +"0 c #FF4F4F", +"a c #BE8B8B", +"b c #E9D8D8", +"c c #B1B4B9", +"d c #7B4F0E", +"e c #CB262C", +"f c #FF4A4A", +"g c #DE3232", +"h c #7D8080", +"i c #FBFBFB", +"j c #EAECF0", +"k c #8A795C", +"l c #823E0E", +"m c #EB2626", +"n c #FF4B4B", +"o c #901414", +"p c #DEE3E3", +"q c #FBFFFF", +"r c #9F9B8C", +"s c #EA6867", +"t c #FD7E7E", +"u c #6D2020", +"v c #C7A6A6", +"w c #FDE0E0", +"x c #917675", +"y c #EAE9E6", +"z c #717171", +"A c #CD3333", +"B c #FF7373", +"C c #8C1F20", +"D c #8F6A26", +"E c #D5D8DC", +"F c #A1A2A2", +"G c #E44242", +"H c #F86D70", +"I c #95321F", +"J c #875603", +"K c #9B9A9B", +"L c #FCFCFE", +"M c #E9EDED", +"N c #B61C1C", +"O c #FA6666", +"P c #D65E63", +"Q c #703E15", +"R c #835000", +"S c #DEE4E7", +"T c #FBECEC", +"U c #D94C4C", +"V c #730808", +"W c #B3AEAE", +"X c #F39393", +"Y c #FD7778", +"Z c #823135", +"` c #493100", +" . c #E68788", +".. c #EF3F3F", +"+. c #D11818", +"@. c #BA3F3F", +"#. c #BDBEBE", +"$. c #DEE0E0", +"%. c #F8FAFA", +"&. c #FCFFFF", +"*. c #A47177", +"=. c #644100", +"-. c #BA5960", +";. c #EF7A7D", +">. c #FD6B6D", +",. c #FD9595", +"'. c #FAFCFD", +"). c #F8FBFE", +"!. c #DADDE2", +"~. c #868A8F", +"{. c #5E3E00", +"]. c #8B492D", +"^. c #A14336", +"/. c #9A5655", +"(. c #A29E96", +"_. c #9E937C", +":. c #6E5935", +"<. c #472C00", +"[. c #643F00", +" . + @ # $ % ", +" & * = - ; > , ' ", +" ) ! ! ! ~ { ] ^ / ( ", +"_ : < ! [ } | 1 2 3 4 5 6 ", +"7 8 9 0 a b ! c ", +"d e f g h i j k ", +"l m n o p q r ", +" s t u v w x ", +" y ! z A B C ", +"D E ! F G H I ", +"J K L M N O P Q ", +"R S T U V W X Y Z ` ", +" .] ..+.@.#.$.%.&.*. =. ", +" -.;.>.,.'.).!.~. ", +" ( {. ].^./.(._.:.<.[. ", +" "}; diff --git a/eworkpanel/icons/keyboard.xpm b/eworkpanel/icons/keyboard.xpm new file mode 100755 index 0000000..e2e9390 --- /dev/null +++ b/eworkpanel/icons/keyboard.xpm @@ -0,0 +1,164 @@ +/* XPM */ +static char * keyboard_xpm[] = { +"16 16 145 2", +" c None", +". c #5071B8", +"+ c #B9CBF5", +"@ c #E2ECFC", +"# c #4D6497", +"$ c #B7FBFA", +"% c #ACEBFA", +"& c #A9CCED", +"* c #F5F5FF", +"= c #F3F5FF", +"- c #C7D8FE", +"; c #465D92", +"> c #A3D2C3", +", c #ADEEE0", +"' c #B4F4E6", +") c #B4FFFD", +"! c #ADFAED", +"~ c #B1E4D7", +"{ c #D8E8EF", +"] c #DDE4FF", +"^ c #A1BDFD", +"/ c #324778", +"( c #7DCBB1", +"_ c #8BE8BD", +": c #92F7E7", +"< c #95FAF2", +"[ c #92F2E0", +"} c #89E1B7", +"| c #78D69D", +"1 c #6FCA96", +"2 c #B6D5E8", +"3 c #A3BDFF", +"4 c #90B0F8", +"5 c #2D4274", +"6 c #35C36D", +"7 c #6CE3C4", +"8 c #6EF8FC", +"9 c #70F9FF", +"0 c #6DE1C4", +"a c #66D196", +"b c #60CE98", +"c c #2CB87D", +"d c #3FA685", +"e c #9EB9FF", +"f c #89ABFD", +"g c #799CEC", +"h c #1B2E5A", +"i c #1FB789", +"j c #02C093", +"k c #31E1F3", +"l c #4BEAFF", +"m c #4EE6F9", +"n c #4CCE95", +"o c #45C47B", +"p c #2DB974", +"q c #09A044", +"r c #118E5C", +"s c #89A8E6", +"t c #8FB0FE", +"u c #7498EA", +"v c #6183D2", +"w c #00B1BC", +"x c #00B9A0", +"y c #00BFA4", +"z c #0BCFFF", +"A c #13CDF7", +"B c #13B762", +"C c #0BAB37", +"D c #009F30", +"E c #00903C", +"F c #1080A5", +"G c #88A1D3", +"H c #99B8FF", +"I c #759AEB", +"J c #6387D9", +"K c #5D81D4", +"L c #06A6F8", +"M c #00AB94", +"N c #00A92D", +"O c #00B694", +"P c #00BCF2", +"Q c #00B4D6", +"R c #00A675", +"S c #009528", +"T c #008462", +"U c #1272BA", +"V c #91A5CE", +"W c #A3C0FF", +"X c #7EA2F4", +"Y c #6589DC", +"Z c #4968B1", +"` c #45A7E6", +" . c #0095B6", +".. c #009E35", +"+. c #00A34E", +"@. c #00ABE1", +"#. c #00A8FF", +"$. c #0099B0", +"%. c #008430", +"&. c #006C79", +"*. c #2368A7", +"=. c #A0AFD1", +"-. c #AFC8FF", +";. c #86A8F8", +">. c #5270B4", +",. c #0D86C5", +"'. c #008844", +"). c #0093A6", +"!. c #0095E8", +"~. c #008FE1", +"{. c #0082A4", +"]. c #006D6B", +"^. c #0055A0", +"/. c #5B7EA7", +"(. c #BAC7E5", +"_. c #BBD2FF", +":. c #7995D2", +"<. c #097067", +"[. c #0073BC", +"}. c #0074C8", +"|. c #0070C3", +"1. c #0061B4", +"2. c #0050A4", +"3. c #3E6EA5", +"4. c #AEB6C7", +"5. c #D5E2FF", +"6. c #95ABD9", +"7. c #182646", +"8. c #1D6199", +"9. c #175EA3", +"0. c #12589D", +"a. c #4174A9", +"b. c #7D91AA", +"c. c #B6BCC7", +"d. c #DFE8F7", +"e. c #A5B6D9", +"f. c #192848", +"g. c #5D7B9F", +"h. c #D4D9E1", +"i. c #F0F4FC", +"j. c #B7C5E3", +"k. c #243458", +"l. c #92B0F2", +"m. c #ABBBD7", +"n. c #28385C", +" . ", +" + @ # ", +" $ % & * = - ; ", +" > , ' ) ! ~ { ] ^ / ", +" ( _ : < [ } | 1 2 3 4 5 ", +" 6 7 8 9 0 a b c d e f g h ", +"i j k l m n o p q r s t u v ", +"w x y z A B C D E F G H I J K ", +"L M N O P Q R S T U V W X Y Z ", +"` ...+.@.#.$.%.&.*.=.-.;.>. ", +" ,.'.).!.~.{.].^./.(._.:. ", +" <.[.}.|.1.2.3.4.5.6.7. ", +" 8.9.0.a.b.c.d.e.f. ", +" g.h.i.j.k. ", +" l.m.n. ", +" "}; diff --git a/eworkpanel/icons/lock.xpm b/eworkpanel/icons/lock.xpm new file mode 100755 index 0000000..c238f08 --- /dev/null +++ b/eworkpanel/icons/lock.xpm @@ -0,0 +1,165 @@ +/* XPM */ +static char * lock_xpm[] = { +"16 16 146 2", +" c None", +". c #006495", +"+ c #2D81AA", +"@ c #267CA6", +"# c #247CA6", +"$ c #237BA4", +"% c #1F7BA4", +"& c #1A78A5", +"* c #1777A2", +"= c #1677A2", +"- c #1275A0", +"; c #1577A2", +"> c #006395", +", c #227DA6", +"' c #9EC2D8", +") c #238FB9", +"! c #2D93BD", +"~ c #2E93BD", +"{ c #2593BD", +"] c #3792BE", +"^ c #4694BE", +"/ c #5295C0", +"( c #5999BF", +"_ c #5E99C2", +": c #6B9CC3", +"< c #90ABC9", +"[ c #086F9E", +"} c #9CC0D8", +"| c #006BA4", +"1 c #0078AA", +"2 c #007BAE", +"3 c #007CAF", +"4 c #2491BE", +"5 c #59A6CC", +"6 c #63A9CD", +"7 c #3F8FBB", +"8 c #3B88B5", +"9 c #458CB6", +"0 c #4C8FBA", +"a c #5590BB", +"b c #85A7C7", +"c c #006396", +"d c #2A80AA", +"e c #3797BD", +"f c #0077AA", +"g c #007EB1", +"h c #007FB1", +"i c #6FBAD9", +"j c #FFFFFF", +"k c #71A8C9", +"l c #5090BB", +"m c #5992BB", +"n c #6095BC", +"o c #78A0C5", +"p c #06719F", +"q c #2B92BD", +"r c #2C93BF", +"s c #ECFCFF", +"t c #7DB5D4", +"u c #85B6D5", +"v c #659BC0", +"w c #5F95BC", +"x c #679ABD", +"y c #7DA1C4", +"z c #006C9E", +"A c #0B80B2", +"B c #9ECEE6", +"C c #539AC2", +"D c #418AB6", +"E c #4A8FB8", +"F c #8FBBD8", +"G c #99BED9", +"H c #659ABD", +"I c #729CC2", +"J c #7CA2C3", +"K c #006A9C", +"L c #027DB1", +"M c #2382B3", +"N c #68ABCE", +"O c #A7D0E7", +"P c #BCD7EB", +"Q c #92BAD4", +"R c #6E9BC0", +"S c #769EBE", +"T c #7FA4C7", +"U c #006B9C", +"V c #1A7FB2", +"W c #3B90BB", +"X c #FBFFFF", +"Y c #EEF9FF", +"Z c #739CBE", +"` c #7FA4C5", +" . c #80A6C7", +".. c #00699C", +"+. c #2683B3", +"@. c #6EACCE", +"#. c #CAE4F3", +"$. c #B4D4E9", +"%. c #B9D5E9", +"&. c #BFD9EB", +"*. c #7BA1C4", +"=. c #85A8C6", +"-. c #85ABCA", +";. c #006799", +">. c #3086B4", +",. c #77AECF", +"'. c #82B2D2", +"). c #C6DAEC", +"!. c #7EA6C5", +"~. c #91AECA", +"{. c #7EACCC", +"]. c #006499", +"^. c #7EB1D0", +"/. c #89B3D2", +"(. c #C9DDEE", +"_. c #88AAC9", +":. c #95B2CC", +"<. c #81B1CE", +"[. c #006399", +"}. c #5F99C2", +"|. c #F6FFFF", +"1. c #ECF8FF", +"2. c #EFF9FF", +"3. c #F0FAFF", +"4. c #8CAFCA", +"5. c #9DB6D0", +"6. c #89B6D2", +"7. c #006296", +"8. c #649AC0", +"9. c #4D8FBA", +"0. c #DEEFFB", +"a. c #F1FBFF", +"b. c #F3FCFF", +"c. c #DBE9F6", +"d. c #93B3CE", +"e. c #A7BED4", +"f. c #89B6D1", +"g. c #006397", +"h. c #91ABCA", +"i. c #A4BDD3", +"j. c #D5D4E3", +"k. c #3797BF", +"l. c #87B5D1", +"m. c #9DBFD8", +"n. c #3596BF", +"o. c #005F95", +" . + @ # $ % & * = - ; > ", +" , ' ) ! ~ { ] ^ / ( _ : < [ ", +". } | 1 2 3 4 5 6 7 8 9 0 a b c ", +"d e f g h i j j j j k l m n o p ", +"@ q 2 h r j s t u j j v w x y z ", +"# ~ 3 A B j C D E F j G H I J K ", +"$ { L M N O D E l m P Q R S T U ", +"% ] V W X j j j j j j Y Z ` ...", +"& ^ +.@.j #.$.%.P &.Y j *.=.-.;.", +"* / >.,.j '.m w H R ).j !.~.{.].", +"= ( 8 ^.j /.w H R Z (.j _.:.<.[.", +"- }.9 '.j |.1.Y 2.3.j j 4.5.6.7.", +"; 8.9.v 0.1.Y 2.3.a.b.c.d.e.f.g.", +"> h.a n x I S ` =.~.:.5.i.j.k.> ", +" [ b o y J T .-.{.<.l.m.n.o. ", +" c p z K U ..;.].[.7.7.> "}; diff --git a/eworkpanel/icons/logout.xpm b/eworkpanel/icons/logout.xpm new file mode 100755 index 0000000..ef1ed7d --- /dev/null +++ b/eworkpanel/icons/logout.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * logout_xpm[] = { +"16 16 6 1", +" c None", +". c #8B8B8B", +"+ c #7F7F7F", +"@ c #296FC4", +"# c #4C4C4C", +"$ c #7E7E7E", +" ", +" ", +" ...........+ ", +" .@@@@@@@@@@+# ", +" .@@@@@@@@@@+# ", +" .@@@@@@@@@@+# ", +" .@@@@@@@@@@+# ", +" .@@@@@@@@@@+# ", +" .@@@@@@@@@@+# ", +" .@@@@@@@@@@+# ", +" +++$++++++++# ", +" ###.+++##### ", +" .+++# ", +" .+++++++# ", +" ", +" "}; diff --git a/eworkpanel/icons/mini_penguin.xpm b/eworkpanel/icons/mini_penguin.xpm new file mode 100755 index 0000000..2b1f91c --- /dev/null +++ b/eworkpanel/icons/mini_penguin.xpm @@ -0,0 +1,124 @@ +/* XPM */ +static char * mini_penguin_xpm[] = { +"15 15 106 2", +" c None", +". c #4A484A", +"+ c #454345", +"@ c #996523", +"# c #3A332A", +"$ c #706D70", +"% c #282726", +"& c #434243", +"* c #8D5F22", +"= c #603A08", +"- c #030303", +"; c #050504", +"> c #000000", +", c #131313", +"' c #404040", +") c #2F2E2F", +"! c #787578", +"~ c #494749", +"{ c #0E0E0E", +"] c #4C4B4C", +"^ c #7B7B7B", +"/ c #F8F4F8", +"( c #F7F4F7", +"_ c #A5A3A5", +": c #2F2F2F", +"< c #3B3B3B", +"[ c #4A4C4A", +"} c #949295", +"| c #FFFBFF", +"1 c #E2DEE2", +"2 c #3E3D3E", +"3 c #0F0F0F", +"4 c #353435", +"5 c #7D7C7D", +"6 c #757275", +"7 c #817F81", +"8 c #F3EFF3", +"9 c #757475", +"0 c #121212", +"a c #191919", +"b c #343334", +"c c #A19DA1", +"d c #6F6C6F", +"e c #A9A7A9", +"f c #E2DFE2", +"g c #2C2B2C", +"h c #010101", +"i c #1E1D1C", +"j c #2A2A2B", +"k c #1F1F1F", +"l c #616061", +"m c #F4F0F4", +"n c #9E9D9E", +"o c #CCC9CC", +"p c #F6F3F6", +"q c #212021", +"r c #4A494B", +"s c #232323", +"t c #777677", +"u c #E7E3E7", +"v c #878587", +"w c #B3B0B2", +"x c #FCF8FC", +"y c #171717", +"z c #ADAAAD", +"A c #878687", +"B c #676667", +"C c #AFABAF", +"D c #F6F2F6", +"E c #6C6A6C", +"F c #282728", +"G c #C1BDC1", +"H c #BAB7BA", +"I c #060606", +"J c #515051", +"K c #CAC6C9", +"L c #BEBABE", +"M c #585558", +"N c #C4C0C4", +"O c #CECACE", +"P c #252525", +"Q c #020202", +"R c #4A4848", +"S c #ACA9AB", +"T c #B3B0B3", +"U c #CCC8CC", +"V c #D4D0D4", +"W c #464546", +"X c #080808", +"Y c #575557", +"Z c #525352", +"` c #6C6B6C", +" . c #626263", +".. c #4E4D4E", +"+. c #4C4C4C", +"@. c #818081", +"#. c #535253", +"$. c #101010", +"%. c #222122", +"&. c #393839", +"*. c #545354", +"=. c #59585A", +"-. c #858485", +";. c #838183", +">. c #6D6B6D", +",. c #595959", +" . + ", +" @ # $ % & ", +" * = - ; > , ", +" ' ) ! ~ { ] ", +" ^ / ( _ : < ", +" [ } | 1 2 3 4 ) ", +" 5 6 7 8 9 0 - a b ", +" c d e f g h i j k ", +" l m n o p q - d r { s ", +" t u v w x b y z A > y ", +" B C 7 D E F G H I 3 ", +" J K L M N O P Q ", +" R S T U V W X Y ", +" Z ` ...+.@.#.$.%.&. ", +" *.=.-.;.>.,. "}; diff --git a/eworkpanel/icons/panel.xpm b/eworkpanel/icons/panel.xpm new file mode 100755 index 0000000..eea973e --- /dev/null +++ b/eworkpanel/icons/panel.xpm @@ -0,0 +1,199 @@ +/* XPM */ +static char * panel_xpm[] = { +"16 16 180 2", +" c None", +". c #C2D4D4", +"+ c #D4E0DD", +"@ c #DAE4DD", +"# c #D6E6E7", +"$ c #A0C0E0", +"% c #799BBF", +"& c #7EA0C1", +"* c #83A5C7", +"= c #8DAECE", +"- c #99B9D5", +"; c #B4D0E8", +"> c #BDD6EB", +", c #C1DEF6", +"' c #6A97CD", +") c #4A85D7", +"! c #3272CD", +"~ c #2063C1", +"{ c #175BB5", +"] c #1455A9", +"^ c #105098", +"/ c #79A1CD", +"( c #CEECFF", +"_ c #6989AF", +": c #469D2C", +"< c #5EC647", +"[ c #41942B", +"} c #33592C", +"| c #94A9AD", +"1 c #97BBE2", +"2 c #629AE3", +"3 c #5695F2", +"4 c #3C81E9", +"5 c #2A72DF", +"6 c #1C65D1", +"7 c #0D55BA", +"8 c #3371BE", +"9 c #C6E2FE", +"0 c #9FC3E8", +"a c #559D36", +"b c #8AD768", +"c c #89D968", +"d c #70D657", +"e c #5FBF51", +"f c #3972A0", +"g c #68A0F3", +"h c #5D9BF0", +"i c #4085E7", +"j c #2D76DD", +"k c #1D66CE", +"l c #185EBD", +"m c #92B8E5", +"n c #CBEAFF", +"o c #597692", +"p c #56A136", +"q c #548A47", +"r c #7C9F61", +"s c #9CB054", +"t c #86D155", +"u c #7B9B51", +"v c #5086CF", +"w c #69A1F1", +"x c #498BE9", +"y c #337ADF", +"z c #1A64CD", +"A c #6C9EDC", +"B c #D9F1FF", +"C c #95B9E2", +"D c #509435", +"E c #72A867", +"F c #8CC064", +"G c #93CB67", +"H c #86CE58", +"I c #A9B655", +"J c #3268A7", +"K c #5B97EA", +"L c #5997ED", +"M c #397FE1", +"N c #3A7CD8", +"O c #C1DBF7", +"P c #C2E3FF", +"Q c #556E8F", +"R c #52902E", +"S c #8EB256", +"T c #73C153", +"U c #79C15C", +"V c #A0CF6A", +"W c #A5B04F", +"X c #2960A0", +"Y c #3781E6", +"Z c #4D90ED", +"` c #3E84E3", +" . c #92BBEE", +".. c #D6EFFF", +"+. c #82A9D6", +"@. c #418928", +"#. c #62AB57", +"$. c #7BB955", +"%. c #638E56", +"&. c #81C651", +"*. c #ABB550", +"=. c #5D83AA", +"-. c #3E87E9", +";. c #277AEA", +">. c #4F90E8", +",. c #CBE3FA", +"'. c #A3CEFF", +"). c #42628D", +"!. c #2F8114", +"~. c #48AA2D", +"{. c #5B9B41", +"]. c #449D35", +"^. c #7EC451", +"/. c #A3B253", +"(. c #778790", +"_. c #A3C8F5", +":. c #63A4F6", +"<. c #A6CAF6", +"[. c #C1E0FE", +"}. c #5695E5", +"|. c #2D423A", +"1. c #2C7E0F", +"2. c #41A723", +"3. c #537F3D", +"4. c #518A41", +"5. c #70B84B", +"6. c #213A0C", +"7. c #4A5B6F", +"8. c #9AB5D2", +"9. c #B4D5F9", +"0. c #6DA5F4", +"a. c #619CDB", +"b. c #313B27", +"c. c #2D800F", +"d. c #5BB136", +"e. c #5C8E3F", +"f. c #54943D", +"g. c #67AC44", +"h. c #3A4641", +"i. c #929997", +"j. c #AAABA8", +"k. c #A4B0B8", +"l. c #A0C8F6", +"m. c #A3C8F8", +"n. c #B7D9F8", +"o. c #596C76", +"p. c #287010", +"q. c #53A42F", +"r. c #6DB546", +"s. c #71AE50", +"t. c #82A2AD", +"u. c #DEF1FF", +"v. c #EDFCFF", +"w. c #EAF9FF", +"x. c #E5F3FD", +"y. c #C2DFF9", +"z. c #96C6FC", +"A. c #7FBFFF", +"B. c #2E4B5F", +"C. c #214512", +"D. c #38831C", +"E. c #419624", +"F. c #5C7982", +"G. c #B5D4F4", +"H. c #CDE9FF", +"I. c #D2E8FC", +"J. c #C0E0FE", +"K. c #A7D5FF", +"L. c #7CADDC", +"M. c #4D739E", +"N. c #25303B", +"O. c #1F400F", +"P. c #4C5D71", +"Q. c #97BCE5", +"R. c #C1E5FF", +"S. c #9FC4DB", +"T. c #5B7A92", +"U. c #252B30", +"V. c #415678", +"W. c #2C3134", +" . + @ ", +" # $ % & & * = - ; > ", +" , ' ) ! ~ { ] ^ / ( _ ", +": < [ } | 1 2 3 4 5 6 7 8 9 0 ", +"a b c d e f g h i j k l m n o ", +"p q r s t u v w x y z A B C ", +"D E F G H I J K L M N O P Q ", +"R S T U V W X Y Z ` ...+. ", +"@.#.$.%.&.*.=.-.;.>.,.'.). ", +"!.~.{.].^./.(._.:.<.[.}.|. ", +"1.2.3.4.5.6. 7.8.9.0.a.b. ", +"c.d.e.f.g.h.i.j.k.l.m.n.o. ", +" p.q.r.s.t.u.v.w.x.y.z.A.B. ", +" C.D.E.F.G.H.I.J.K.L.M.N. ", +" O. P.Q.R.S.T.U. ", +" V.W. "}; diff --git a/eworkpanel/icons/penguin.xpm b/eworkpanel/icons/penguin.xpm new file mode 100755 index 0000000..7862e3f --- /dev/null +++ b/eworkpanel/icons/penguin.xpm @@ -0,0 +1,358 @@ +/* XPM */ +static char * penguin_xpm[] = { +"32 32 323 2", +" c None", +". c #A5A5A5", +"+ c #727272", +"@ c #555555", +"# c #6B6B6B", +"$ c #7D7D7D", +"% c #A4A4A4", +"& c #A7A7A7", +"* c #848484", +"= c #868686", +"- c #979797", +"; c #999999", +"> c #959595", +", c #8B8B8B", +"' c #737373", +") c #757575", +"! c #808080", +"~ c #777777", +"{ c #A2A2A2", +"] c #A0A0A0", +"^ c #9C9C9C", +"/ c #969696", +"( c #909090", +"_ c #898989", +": c #838383", +"< c #767676", +"[ c #3F3F3F", +"} c #616161", +"| c #ADADAD", +"1 c #EAEAEA", +"2 c #F4F4F4", +"3 c #B9B9B9", +"4 c #929292", +"5 c #8D8D8D", +"6 c #878787", +"7 c #7E7E7E", +"8 c #747474", +"9 c #6A6A6A", +"0 c #636363", +"a c #292929", +"b c #474747", +"c c #575757", +"d c #6F6F6F", +"e c #A3A3A3", +"f c #EBEBEB", +"g c #FCFCFC", +"h c #FEFEFE", +"i c #F5F5F5", +"j c #BCBCBC", +"k c #858585", +"l c #7F7F7F", +"m c #7A7A7A", +"n c #7B7B7B", +"o c #6C6C6C", +"p c #424242", +"q c #000000", +"r c #4A4A4A", +"s c #6D6D6D", +"t c #444444", +"u c #E0E0E0", +"v c #FDFDFD", +"w c #FFFFFF", +"x c #FBFBFB", +"y c #989898", +"z c #E2E2E2", +"A c #F3F3F3", +"B c #E8E8E8", +"C c #B5B5B5", +"D c #1B1B1B", +"E c #010101", +"F c #6E6E6E", +"G c #212121", +"H c #5B5B5B", +"I c #BABABA", +"J c #F2F2F2", +"K c #F9F9F9", +"L c #FAFAFA", +"M c #B4B4B4", +"N c #ECECEC", +"O c #F8F8F8", +"P c #0B0B0B", +"Q c #3A3A3A", +"R c #EEEEEE", +"S c #F7F7F7", +"T c #BBBBBB", +"U c #C2C2C2", +"V c #8F8F8F", +"W c #ABABAB", +"X c #CBCBCB", +"Y c #040404", +"Z c #535353", +"` c #060606", +" . c #464646", +".. c #4C4C4C", +"+. c #D0D0D0", +"@. c #E1E1E1", +"#. c #EFEFEF", +"$. c #696969", +"%. c #656565", +"&. c #565656", +"*. c #F1F1F1", +"=. c #BFBFBF", +"-. c #050505", +";. c #101010", +">. c #7E7D7D", +",. c #5E5E5E", +"'. c #030303", +"). c #3D3D3D", +"!. c #434343", +"~. c #CDCDCD", +"{. c #D9D9D9", +"]. c #DFDFDF", +"^. c #9B9B9B", +"/. c #676767", +"(. c #E6E6E6", +"_. c #D1D1D1", +":. c #919191", +"<. c #020202", +"[. c #070707", +"}. c #0D0D0D", +"|. c #363536", +"1. c #242424", +"2. c #C1C1C1", +"3. c #CACACA", +"4. c #F3F370", +"5. c #FEFE55", +"6. c #FEFE57", +"7. c #FEFE53", +"8. c #FEFE4F", +"9. c #FFF043", +"0. c #FAD554", +"a. c #D5D5D5", +"b. c #080808", +"c. c #111111", +"d. c #5C5C5C", +"e. c #1A1A1A", +"f. c #090909", +"g. c #2C2C2C", +"h. c #3B3B3B", +"i. c #595959", +"j. c #B1B1B1", +"k. c #C4C49E", +"l. c #F3F364", +"m. c #FFFF45", +"n. c #FFFE42", +"o. c #FFF23E", +"p. c #FFD33D", +"q. c #F2D69D", +"r. c #171717", +"s. c #404040", +"t. c #0A0A0A", +"u. c #373737", +"v. c #F9F9DB", +"w. c #FDFD5B", +"x. c #FFF339", +"y. c #FFCE36", +"z. c #F1CB8D", +"A. c #DEDDDD", +"B. c #E4E4E4", +"C. c #666666", +"D. c #0E0E0E", +"E. c #2D2D2D", +"F. c #0C0C0C", +"G. c #F5F2CA", +"H. c #FCD952", +"I. c #F2C481", +"J. c #DDDCDB", +"K. c #D8D7D7", +"L. c #D8D8D8", +"M. c #3C3C3C", +"N. c #222222", +"O. c #2A2A2A", +"P. c #202020", +"Q. c #CFCFCF", +"R. c #F0F0F0", +"S. c #E2E1E1", +"T. c #D9D8D9", +"U. c #D3D3D3", +"V. c #D6D6D6", +"W. c #D4D4D4", +"X. c #1C1C1C", +"Y. c #232323", +"Z. c #141414", +"`. c #131313", +" + c #F6F6F6", +".+ c #EFEEEF", +"++ c #DBDBDB", +"@+ c #DCDCDC", +"#+ c #C5C5C5", +"$+ c #4D4D4D", +"%+ c #1D1D1D", +"&+ c #282828", +"*+ c #121212", +"=+ c #3E3E3E", +"-+ c #3C3B3B", +";+ c #AEAEAE", +">+ c #DDDDDD", +",+ c #E5E5E5", +"'+ c #F3F2F2", +")+ c #CCCCCC", +"!+ c #B0B0B0", +"~+ c #303030", +"{+ c #454545", +"]+ c #B7B6B7", +"^+ c #A4A3A3", +"/+ c #ADACAC", +"(+ c #282727", +"_+ c #4F4F4F", +":+ c #C4C4C4", +"<+ c #E7E7E7", +"[+ c #C3C3C3", +"}+ c #B6B6B6", +"|+ c #A8A8A8", +"1+ c #8E8E8E", +"2+ c #353535", +"3+ c #EDEDED", +"4+ c #E9E9E9", +"5+ c #C7C7C7", +"6+ c #A1A1A1", +"7+ c #8C8C8C", +"8+ c #343434", +"9+ c #D7D7D7", +"0+ c #E3E3E3", +"a+ c #B2B2B2", +"b+ c #A6A6A6", +"c+ c #9A9A9A", +"d+ c #8A8A8A", +"e+ c #545353", +"f+ c #BDBDBD", +"g+ c #C9C9C9", +"h+ c #B7B7B7", +"i+ c #ACACAC", +"j+ c #9E9E9E", +"k+ c #939393", +"l+ c #888888", +"m+ c #4B4B4B", +"n+ c #DADADA", +"o+ c #DEDEDE", +"p+ c #CECECE", +"q+ c #AFAFAF", +"r+ c #BEBEBE", +"s+ c #C6C6C6", +"t+ c #B3B3B3", +"u+ c #434242", +"v+ c #C0C0C0", +"w+ c #A9A9A9", +"x+ c #AAAAAA", +"y+ c #FCFCD4", +"z+ c #FCFC98", +"A+ c #F8F76E", +"B+ c #F6F14B", +"C+ c #F1E64C", +"D+ c #DFD474", +"E+ c #CEC69B", +"F+ c #BFBEBC", +"G+ c #A7A7A0", +"H+ c #C1C0A4", +"I+ c #E2E2C6", +"J+ c #F2F2B9", +"K+ c #F6F386", +"L+ c #F3F056", +"M+ c #EBDF5B", +"N+ c #FDFA99", +"O+ c #FDF896", +"P+ c #FDF88F", +"Q+ c #FDF481", +"R+ c #FDED67", +"S+ c #F8DA40", +"T+ c #F2C73B", +"U+ c #EDBB4A", +"V+ c #DBAF67", +"W+ c #BEB19E", +"X+ c #B8B088", +"Y+ c #E0D377", +"Z+ c #F5EDB0", +"`+ c #F9F2BF", +" @ c #FCF4B8", +".@ c #FCF2A1", +"+@ c #F7E46A", +"@@ c #EFC83B", +"#@ c #E0A53D", +"$@ c #CC895E", +"%@ c #FCE136", +"&@ c #FCE13D", +"*@ c #FBE254", +"=@ c #FADE5A", +"-@ c #F9D754", +";@ c #F7C444", +">@ c #F2AA35", +",@ c #EB9031", +"'@ c #E17832", +")@ c #D66A33", +"!@ c #BB8061", +"~@ c #CC9F4E", +"{@ c #E8AE44", +"]@ c #EEBC62", +"^@ c #F1C373", +"/@ c #F1C273", +"(@ c #ECB55F", +"_@ c #E29C3E", +":@ c #D37C2B", +"<@ c #BA5527", +"[@ c #90251E", +"}@ c #F2C767", +"|@ c #F1B64E", +"1@ c #EEA740", +"2@ c #EC9537", +"3@ c #E57F33", +"4@ c #DF6B36", +"5@ c #D65C3E", +"6@ c #CD5B4C", +"7@ c #C66E63", +"8@ c #856559", +"9@ c #A7886A", +"0@ c #D28C60", +"a@ c #CF7347", +"b@ c #CB6137", +"c@ c #C7562E", +"d@ c #BF4E29", +"e@ c #B7462A", +"f@ c #AC4233", +"g@ c #A04340", +"h@ c #9A5555", +" ", +" . + @ @ # $ % ", +" & * = - ; ; > , ' ) - ", +" ! ~ { . ] ^ / ( _ : < [ # ", +" } ! | 1 2 3 4 5 6 7 8 9 0 a b ", +" c d e f g h i j k l < m n o p q r ", +" s t = u g v h w x y < | z A B C D E F ", +" / G H I J K L x L M ; { N v x O A ^ E P n ", +" b Q @ u R J i S T U V W - L O J f X E Y Z ", +" ` ...+.@.B f #.$.9 %.+ &.2 *.f @.=.E -.;.>. ", +" ,.'.).!.4 ~.{.].z ^./.~ C > N (.u _.:.<.[.}.) ", +" |.Y 1.Q ..e 2.3.4.5.6.7.8.9.0.a.X ] a '.b.c.d. ", +" e.` f.g.h.i.| j.k.l.m.n.o.p.q.].{.F '.-.P r.!. ", +" s.t.-.E ;.u.W S K L v.w.x.y.z.@.u A.B.C.` D.e.E. ", +" F.E <.q q d *.i S K O G.H.I.J.K.a.L.L._.M.c.D N.F ", +" O.q q E q P.Q.f R.i O S 2 N S.T.U.V.L.W.X e e.X.Y.Z.[ ", +" H E.`.'.E E q s @.B R J +S +.+B u ++@+K.+.#+j $+%+&+&+*+=+ ", +" -+}.<.Z.;+>+,+f *.i + +'+R (.z >+a.)+=.!+! ~+{+]+^+/+ ", +" (+c.<._+:+L.u B R J 2 2 *.R <+@.{.Q.[+}+|+1+2+.. ", +" G E : [+U.@+B.1 R #.R.3+4+z @+U.5+T | 6+7+h.&. ", +" 8+Y { 2.Q.9+u (.1 f 1 B 0+>+a.X =.a+b+c+d+[ e+ ", +" p f.|+f+g+U.++u 0+,+B.z >+9+~.[+h+i+j+k+l+M.m+ ", +" O.j+h+:+~.a.n+o+].o+n+V.p+#+j q+e - 1+$ p ", +" [ d+a+r+s+~.U.9+9+a.U.~.s+j t+b+^.:.l+$.u+ ", +" d - h+v+#+)+p+p+~.g+U j t+w+j+> 7++ d ", +" # x+3 2.#+5+s+[+=.3 a+W { c+( ~ s ", +" y+z+A+B+C+D+E+F+f+I }+q+x+G+H+I+J+K+L+M+ ", +" N+O+P+Q+R+S+T+U+V+W+j.;+& X+Y+Z+`+ @.@+@@@#@$@ ", +" %@&@*@=@-@;@>@,@'@)@!@c+- :.~@{@]@^@/@(@_@:@<@[@ ", +" }@|@1@2@3@4@5@6@7@8@ 9@0@a@b@c@d@e@f@g@h@ ", +" ", +" "}; diff --git a/eworkpanel/icons/programs.xpm b/eworkpanel/icons/programs.xpm new file mode 100755 index 0000000..98d7cc5 --- /dev/null +++ b/eworkpanel/icons/programs.xpm @@ -0,0 +1,155 @@ +/* XPM */ +static char * programs_xpm[] = { +"16 16 136 2", +" c None", +". c #469FFF", +"+ c #4193FF", +"@ c #4499FF", +"# c #2C63AC", +"$ c #4DA0FF", +"% c #B5D9FB", +"& c #AAD3FB", +"* c #ADD3FB", +"= c #89C4FF", +"- c #184888", +"; c #4495FF", +"> c #AED5FB", +", c #6DB3F9", +"' c #6FB2F9", +") c #6BAEF8", +"! c #67ABF6", +"~ c #549FF9", +"{ c #3E91FF", +"] c #ACD4FB", +"^ c #6BAEF9", +"/ c #6CAFF8", +"( c #66AAF7", +"_ c #5DA3F6", +": c #74AEF7", +"< c #9EC4F8", +"[ c #92BCF7", +"} c #8DB5F5", +"| c #88B1F3", +"1 c #83ABF2", +"2 c #80A8F0", +"3 c #87AEF5", +"4 c #0940B7", +"5 c #AAD2FB", +"6 c #67ACF8", +"7 c #68ABF8", +"8 c #61A4F7", +"9 c #5B9FF5", +"0 c #5399F3", +"a c #498FF1", +"b c #3F85EF", +"c c #367CEB", +"d c #2E73E8", +"e c #286BE6", +"f c #2164E2", +"g c #2163E5", +"h c #023AB6", +"i c #4394FF", +"j c #A7D0FA", +"k c #63A9F7", +"l c #61A7F7", +"m c #5BA0F6", +"n c #5499F4", +"o c #4B90F2", +"p c #4186EF", +"q c #377DEB", +"r c #2E73E7", +"s c #266AE5", +"t c #2062E2", +"u c #1C5DDF", +"v c #1A5CE2", +"w c #A4CEF9", +"x c #5DA5F7", +"y c #5DA1F6", +"z c #559AF4", +"A c #4C91F3", +"B c #4489F1", +"C c #3A7FED", +"D c #3075E9", +"E c #276BE5", +"F c #2062E1", +"G c #1B5CDE", +"H c #1758DB", +"I c #1857DE", +"J c #0239B6", +"K c #A1CBF9", +"L c #589FF6", +"M c #559BF5", +"N c #4F96F3", +"O c #478CF2", +"P c #3D84F0", +"Q c #3378EB", +"R c #2B6EE7", +"S c #2265E3", +"T c #1C5DDE", +"U c #1757DB", +"V c #1554DA", +"W c #1555DD", +"X c #0139B5", +"Y c #4696FF", +"Z c #FFFFFF", +"` c #FBFBFB", +" . c #F2F2F2", +".. c #E9E9E9", +"+. c #E0E0E0", +"@. c #D7D7D7", +"#. c #D4D4D4", +"$. c #A9A9A9", +"%. c #BABABA", +"&. c #9E9990", +"*. c #0A3DAF", +"=. c #FEFEFE", +"-. c #F8F8F8", +";. c #F1F1F1", +">. c #E8E8E8", +",. c #DCDCDC", +"'. c #D6D6D6", +"). c #D2D2D2", +"!. c #A7A7A7", +"~. c #B7B7B7", +"{. c #929292", +"]. c #BAB6AC", +"^. c #0E41B3", +"/. c #F0F0F0", +"(. c #E5E5E5", +"_. c #DDDDDD", +":. c #D3D3D3", +"<. c #D0D0D0", +"[. c #ABABAB", +"}. c #B5B5B5", +"|. c #939393", +"1. c #ADADAD", +"2. c #938E85", +"3. c #0A3DAE", +"4. c #FFFFFE", +"5. c #F4F4F4", +"6. c #EDEDED", +"7. c #DBDBDB", +"8. c #AEAEAE", +"9. c #969696", +"0. c #878787", +"a. c #AFABA1", +"b. c #0D40B2", +"c. c #0037B2", +"d. c #0034A8", +"e. c #0038B6", +" ", +" . + @ # ", +" $ % & * = - ", +"; > , ' ) ! ~ { + + + + + . ", +"; ] ^ / ( _ : < [ } | 1 2 3 4 ", +"; 5 6 7 8 9 0 a b c d e f g h ", +"i j k l m n o p q r s t u v h ", +"i w x y z A B C D E F G H I J ", +"i K L M N O P Q R S T U V W X ", +"Y Z Z Z Z ` ...+.@.#.$.%.&.*. ", +"Y Z Z =.-.;.>.,.'.).!.~.{.].^. ", +"Y Z =.-./.(._.:.<.[.}.|.1.2.3. ", +"Y 4.5.6.(.7.#.<.1.8.9.!.0.a.b. ", +" c.d.d.d.d.d.d.d.d.d.d.d.e. ", +" ", +" "}; diff --git a/eworkpanel/icons/programs_user.xpm b/eworkpanel/icons/programs_user.xpm new file mode 100755 index 0000000..26f4c98 --- /dev/null +++ b/eworkpanel/icons/programs_user.xpm @@ -0,0 +1,178 @@ +/* XPM */ +static char * programs_user_xpm[] = { +"18 18 157 2", +" c None", +". c #4193FF", +"+ c #ACD4FB", +"@ c #AAD3FB", +"# c #A9D1FB", +"$ c #A7CFFA", +"% c #72B6F9", +"& c #70B3F9", +"* c #6DAFF8", +"= c #67ABF7", +"- c #62A8F6", +"; c #70B1F9", +"> c #6DB0F8", +", c #68ABF7", +"' c #63A8F6", +") c #5CA1F6", +"! c #99C2F8", +"~ c #95BEF7", +"{ c #8FB9F6", +"] c #8BB3F4", +"^ c #86AFF2", +"/ c #82AAF2", +"( c #7FA7EF", +"_ c #7CA4EF", +": c #0034A8", +"< c #6CAFF8", +"[ c #69ACF8", +"} c #63A6F7", +"| c #5DA1F6", +"1 c #569CF4", +"2 c #4E94F2", +"3 c #448AF0", +"4 c #3B81ED", +"5 c #3379E9", +"6 c #2C70E7", +"7 c #3770E2", +"8 c #7290DC", +"9 c #7C89D2", +"0 c #1B3BA1", +"a c #A6CFFB", +"b c #69ACF7", +"c c #63A8F7", +"d c #5DA2F6", +"e c #579BF5", +"f c #4F94F2", +"g c #468AF1", +"h c #3C81ED", +"i c #5B8DE6", +"j c #4B7FE3", +"k c #2C69E1", +"l c #A59DCE", +"m c #EBDAE1", +"n c #F2C4C8", +"o c #B16686", +"p c #A3CDFA", +"q c #63A9F7", +"r c #5EA2F6", +"s c #589DF5", +"t c #4F94F3", +"u c #488DF2", +"v c #5189E7", +"w c #E4ABB9", +"x c #FCBDBD", +"y c #F9C2C5", +"z c #ECB7BF", +"A c #FFDCDB", +"B c #FFD1D1", +"C c #FFB3B2", +"D c #FF9091", +"E c #D8676A", +"F c #A1CBFA", +"G c #5EA3F6", +"H c #579CF5", +"I c #5198F4", +"J c #4A8FF2", +"K c #7A8DD2", +"L c #DE7E8C", +"M c #FF7373", +"N c #FF8889", +"O c #FFA8A7", +"P c #FFC1C0", +"Q c #FFC2C3", +"R c #FFB8B7", +"S c #FE9F9E", +"T c #FF6D6D", +"U c #E94647", +"V c #FFFFFF", +"W c #FDFDFD", +"X c #E97777", +"Y c #F54443", +"Z c #FF5D5D", +"` c #FF7A7B", +" . c #FF8F8F", +".. c #FF9B9C", +"+. c #FF8988", +"@. c #FE6363", +"#. c #FF3939", +"$. c #E53031", +"%. c #FAFAFA", +"&. c #F3F3F3", +"*. c #DCA0A2", +"=. c #EA4142", +"-. c #FF4646", +";. c #FF5C5D", +">. c #FE6B6C", +",. c #FF7171", +"'. c #FF6B6A", +"). c #FF5A59", +"!. c #FF4848", +"~. c #FF3535", +"{. c #DA2E2E", +"]. c #E8E8E8", +"^. c #DDDBDB", +"/. c #D48383", +"(. c #FD2F2F", +"_. c #FF4B4A", +":. c #FE5555", +"<. c #FF5958", +"[. c #FF5655", +"}. c #FF4C4C", +"|. c #FF3D3E", +"1. c #FF2C2C", +"2. c #BF3436", +"3. c #F6F6F6", +"4. c #EFEFEF", +"5. c #DEDEDE", +"6. c #D7D7D7", +"7. c #CFCDCD", +"8. c #D54444", +"9. c #FF3635", +"0. c #FF3D3D", +"a. c #FE4241", +"b. c #FF4141", +"c. c #FE3939", +"d. c #FA2A2A", +"e. c #EE2929", +"f. c #883435", +"g. c #263B97", +"h. c #BD3840", +"i. c #FE2F2E", +"j. c #FE2829", +"k. c #F62829", +"l. c #F12324", +"m. c #F41717", +"n. c #AA3C3D", +"o. c #000000", +"p. c #290E0F", +"q. c #993031", +"r. c #D72F2F", +"s. c #E92021", +"t. c #E81213", +"u. c #B52526", +"v. c #4E2E2F", +"w. c #551A1A", +"x. c #9F2C2C", +"y. c #B62527", +"z. c #542021", +" ", +" ", +" . . . . ", +" . + @ # $ . ", +". + % & * = - . . . . . . . . ", +". @ ; > , ' ) ! ~ { ] ^ / ( _ : ", +". # < [ } | 1 2 3 4 5 6 7 8 9 0 ", +". a b c d e f g h i j k l m n o ", +". p q r s t u v w x y z A B C D E ", +". F G H I J K L M N O P Q R S T U ", +". V V V V W X Y Z ` .....+.@.#.$. ", +". V V V %.&.*.=.-.;.>.,.'.).!.~.{. ", +". V V %.&.].^./.(._.:.<.[.}.|.1.2. ", +". V 3.4.].5.6.7.8.9.0.a.b.c.d.e.f. ", +" : : : : : : : g.h.i.j.k.l.m.n. ", +" o.o.o.o.o.o.p.q.r.s.t.u.v. ", +" w.x.y.z. ", +" "}; diff --git a/eworkpanel/icons/run.xpm b/eworkpanel/icons/run.xpm new file mode 100755 index 0000000..63958bf --- /dev/null +++ b/eworkpanel/icons/run.xpm @@ -0,0 +1,177 @@ +/* XPM */ +static char * run_xpm[] = { +"16 16 158 2", +" c None", +". c #2D2D52", +"+ c #454584", +"@ c #555589", +"# c #6A6A91", +"$ c #262655", +"% c #4A4A8C", +"& c #595995", +"* c #5D5D9B", +"= c #6969A6", +"- c #7E7EB3", +"; c #9898C8", +"> c #5E5E81", +", c #39396B", +"' c #2F2F68", +") c #414184", +"! c #63639A", +"~ c #7272A6", +"{ c #7E7EB1", +"] c #8787B9", +"^ c #8C8CBC", +"/ c #AFAFD2", +"( c #ACACD7", +"_ c #21214E", +": c #2E2E62", +"< c #3F3F84", +"[ c #50508B", +"} c #9E9EC5", +"| c #C4C4DF", +"1 c #C0C0DC", +"2 c #A9A9CF", +"3 c #9595C2", +"4 c #9A9AC6", +"5 c #A6A6CD", +"6 c #AAAAD2", +"7 c #6C6C99", +"8 c #28285D", +"9 c #555591", +"0 c #B8B8D5", +"a c #BEBEDB", +"b c #8989BB", +"c c #6868A4", +"d c #8B8BB6", +"e c #AEAED2", +"f c #ADADD1", +"g c #BDBDDB", +"h c #D7D7F0", +"i c #7676A1", +"j c #202045", +"k c #4B4B8A", +"l c #A8A8CC", +"m c #BBBBDA", +"n c #7878B1", +"o c #464681", +"p c #29295A", +"q c #38385A", +"r c #ADADD7", +"s c #BCBCDB", +"t c #C5C5DF", +"u c #DDDDEE", +"v c #A8A8D3", +"w c #1A1A36", +"x c #2F2F54", +"y c #555596", +"z c #7272A7", +"A c #C6C6E0", +"B c #8383B8", +"C c #474785", +"D c #0C0C1E", +"E c #2E2E4D", +"F c #B2B2DC", +"G c #CCCCE4", +"H c #D1D1E7", +"I c #C3C3DE", +"J c #ABABD1", +"K c #52528E", +"L c #555597", +"M c #6A6AA3", +"N c #9191BE", +"O c #B5B5D7", +"P c #565692", +"Q c #0A0A1D", +"R c #8787AF", +"S c #CACAE5", +"T c #B4B4D6", +"U c #8B8BBB", +"V c #7171AA", +"W c #42427D", +"X c #464676", +"Y c #8E8EBC", +"Z c #454582", +"` c #8E8EB9", +" . c #D2D2EC", +".. c #DADAEB", +"+. c #CDCDE4", +"@. c #8A8ABB", +"#. c #5B5B99", +"$. c #3A3A76", +"%. c #7171AC", +"&. c #9898C5", +"*. c #A0A0CA", +"=. c #57578F", +"-. c #373758", +";. c #8A8AB1", +">. c #D3D3ED", +",. c #D3D3E7", +"'. c #E6E6F2", +"). c #E7E7F3", +"!. c #7C7CB1", +"~. c #353570", +"{. c #8181B6", +"]. c #9F9FC9", +"^. c #A6A6CB", +"/. c #7878A2", +"(. c #BBBBE1", +"_. c #D1D1E9", +":. c #DEDEEE", +"<. c #F6F6FB", +"[. c #F3F3FA", +"}. c #8383B2", +"|. c #111125", +"1. c #6C6C8E", +"2. c #A1A1CF", +"3. c #B7B7D8", +"4. c #B5B5D6", +"5. c #BCBCDA", +"6. c #C8C8E5", +"7. c #D5D5E9", +"8. c #D7D7EA", +"9. c #D2D2E7", +"0. c #EFEFF7", +"a. c #EEEEF7", +"b. c #B1B1D4", +"c. c #9898C7", +"d. c #40406E", +"e. c #5B5B7F", +"f. c #AEAED9", +"g. c #B5B5D8", +"h. c #CFCFE8", +"i. c #D4D4E8", +"j. c #D8D8EA", +"k. c #B2B2D4", +"l. c #ABABD3", +"m. c #9797C7", +"n. c #6666A5", +"o. c #28285B", +"p. c #313160", +"q. c #BBBBD6", +"r. c #EEEEFB", +"s. c #363672", +"t. c #454576", +"u. c #333364", +"v. c #2A2A5D", +"w. c #9999C4", +"x. c #7070A9", +"y. c #393975", +"z. c #52528F", +"A. c #41417D", +" . + @ # ", +" $ % & * = - ; > ", +" , ' ) ! ~ { ] ^ / ( _ ", +" : < [ } | 1 2 3 4 5 6 7 ", +" 8 9 0 a b c [ d e f g h i ", +" j k l m n o p q r s t u v w ", +"x y z A B C D E F G H I J K ", +"L M N O P Q R S H T U V W ", +"X V Y 5 Z ` ...+.@.#.$. ", +" %.&.*.=. -.;.>.,.'.).!.~. ", +" {.].2 ^./.(._.:.'.<.[.}.|. ", +"1.2.3.4.5.6.7.8.9.0.a.b.c.d. ", +" e.f.g.h.i.j.k.U ^ l.m.n.o. ", +" p.=.q.r.I @.#.s.t.u.v. ", +" w.6 x.y. ", +" z.A. "}; diff --git a/eworkpanel/icons/showdesktop.xpm b/eworkpanel/icons/showdesktop.xpm new file mode 100755 index 0000000..b419121 --- /dev/null +++ b/eworkpanel/icons/showdesktop.xpm @@ -0,0 +1,138 @@ +/* XPM */ +static char * showdesktop_xpm[] = { +"16 16 119 2", +" c None", +". c #FEDB6F", +"+ c #8F6346", +"@ c #F8C400", +"# c #FEBD09", +"$ c #A75416", +"% c #FED105", +"& c #FB9611", +"* c #E7C21D", +"= c #FECE20", +"- c #BD6418", +"; c #41A0EE", +"> c #5AA9F6", +", c #8DB7B8", +"' c #F9DA36", +") c #FEB635", +"! c #99BFE7", +"~ c #BBD1ED", +"{ c #DAE0F3", +"] c #EEDA7B", +"^ c #FEDC48", +"/ c #D09959", +"( c #B8CFE9", +"_ c #FBF6F8", +": c #F6F0F3", +"< c #EDEBF5", +"[ c #E8DDD1", +"} c #FEDE68", +"| c #FED261", +"1 c #7C879F", +"2 c #1F6BD1", +"3 c #5FC0F9", +"4 c #93DBFD", +"5 c #BDE0F2", +"6 c #F0EDF3", +"7 c #EDEDF5", +"8 c #E9EBF7", +"9 c #E7D8CB", +"0 c #FCE0AC", +"a c #DEB78C", +"b c #4972B9", +"c c #256AD8", +"d c #2262C3", +"e c #83D8FE", +"f c #D1F8FE", +"g c #CFF8FE", +"h c #B3E6FB", +"i c #D7E3F0", +"j c #F6F3F7", +"k c #F0F2F9", +"l c #DDCEC9", +"m c #B3958B", +"n c #CCBEC4", +"o c #88A0CE", +"p c #225DC8", +"q c #1D5FD7", +"r c #1D67DB", +"s c #60B0DE", +"t c #CBFEFE", +"u c #CAF5FE", +"v c #AAE6FE", +"w c #B5DAF3", +"x c #F5F2F6", +"y c #F2F3F8", +"z c #E8E2E6", +"A c #D5CCD2", +"B c #DDDEEB", +"C c #E4E0E7", +"D c #6891D7", +"E c #1053D6", +"F c #0B4CD8", +"G c #256EE4", +"H c #52A0CF", +"I c #AEEDFE", +"J c #B1E7FE", +"K c #97D3F9", +"L c #DCE7F3", +"M c #FDF9FB", +"N c #F9F8FC", +"O c #FCFBFD", +"P c #F9F5F7", +"Q c #F8F2F2", +"R c #BEC5DE", +"S c #2F69D0", +"T c #4D90F1", +"U c #59A1FE", +"V c #4693CB", +"W c #9BE0FE", +"X c #95D7FE", +"Y c #A9D3F3", +"Z c #F2F1F3", +"` c #D7DEE9", +" . c #B5C6E0", +".. c #83A4D6", +"+. c #6290D3", +"@. c #6CA3E1", +"#. c #73B1F3", +"$. c #447CC4", +"%. c #3983C3", +"&. c #87D5FE", +"*. c #8CCFFD", +"=. c #76B3ED", +"-. c #5396E1", +";. c #4089E2", +">. c #4393F0", +",. c #50A6FE", +"'. c #3F84D6", +"). c #102F60", +"!. c #3170AC", +"~. c #74C5FE", +"{. c #6FBDFE", +"]. c #53A8FE", +"^. c #52ABFE", +"/. c #4191EC", +"(. c #163F77", +"_. c #2864A4", +":. c #79C8FE", +"<. c #4299F8", +"[. c #1C5399", +" . + ", +" @ # $ ", +" % & ", +" * = - ", +" ; > , ' ) ", +" ! ~ { ] ^ / ", +" ( _ : < [ } | 1 2 ", +" 3 4 5 6 7 8 9 0 a b c d ", +"e f g h i j k l m n o p q r ", +"s t u v w x y z A B C D E F G ", +" H I J K L M N O P Q R S T U ", +" V W X Y Z ` ...+.@.#.$. ", +" %.&.*.=.-.;.>.,.'.). ", +" !.~.{.].^./.(. ", +" _.:.<.[. ", +" "}; diff --git a/eworkpanel/icons/shutdown.xpm b/eworkpanel/icons/shutdown.xpm new file mode 100755 index 0000000..a33811e --- /dev/null +++ b/eworkpanel/icons/shutdown.xpm @@ -0,0 +1,160 @@ +/* XPM */ +static char * shutdown_xpm[] = { +"16 16 141 2", +" c None", +". c #A01105", +"+ c #B14030", +"@ c #AF3829", +"# c #AE3829", +"$ c #AF3526", +"% c #AC3525", +"& c #AC3423", +"* c #AC3122", +"= c #AC3120", +"- c #AA2E20", +"; c #AC3421", +"> c #9F1005", +", c #DDB593", +"' c #C6714C", +") c #C77954", +"! c #C87C54", +"~ c #C87E58", +"{ c #CA8158", +"] c #C98159", +"^ c #CC855A", +"/ c #CA875C", +"( c #CA8A5E", +"_ c #CE8F63", +": c #D5A576", +"< c #A72718", +"[ c #DCB492", +"} c #B23E18", +"| c #B8532E", +"1 c #B95831", +"2 c #BC5C36", +"3 c #BD6038", +"4 c #D39173", +"5 c #D59376", +"6 c #C06B43", +"7 c #C26E48", +"8 c #C4724B", +"9 c #C4754E", +"0 c #C67953", +"a c #D39E72", +"b c #A01205", +"c c #B03F2F", +"d c #C87C57", +"e c #B8522C", +"f c #BB5E37", +"g c #C46B49", +"h c #F7D4C5", +"i c #FFFFFF", +"j c #F3D0BF", +"k c #CA815D", +"l c #C67B54", +"m c #C77E57", +"n c #D09468", +"o c #A82B19", +"p c #C77753", +"q c #F8D7C8", +"r c #DCA288", +"s c #E3B097", +"t c #FFEFE5", +"u c #FFFAF3", +"v c #CD8863", +"w c #C8825C", +"x c #CF9469", +"y c #A72413", +"z c #E2AB93", +"A c #C26D46", +"B c #F2CFBD", +"C c #EEC6B3", +"D c #C57750", +"E c #E5B59E", +"F c #F0CDBA", +"G c #C98661", +"H c #D1956B", +"I c #A72312", +"J c #C87754", +"K c #C3714A", +"L c #FFF0E6", +"M c #FFF2E8", +"N c #CA8963", +"O c #D0976D", +"P c #A52110", +"Q c #D8997B", +"R c #C4744D", +"S c #FFF0E7", +"T c #C8815A", +"U c #ECC5B1", +"V c #D7A07F", +"W c #D19B72", +"X c #A51F0E", +"Y c #D89B7E", +"Z c #FFF1E7", +"` c #C98560", +" . c #EDC7B2", +".. c #DCAC90", +"+. c #D29D76", +"@. c #A51D0C", +"#. c #CC815E", +"$. c #CA8862", +"%. c #FFF5EC", +"&. c #D39977", +"*. c #D79F79", +"=. c #A21B09", +"-. c #DBA285", +";. c #FADFD1", +">. c #F1CFBC", +",. c #E9C0A9", +"'. c #F9DED0", +"). c #D59E7F", +"!. c #D4A17D", +"~. c #A21907", +"{. c #CA8A5F", +"]. c #CF8B6A", +"^. c #E2B39A", +"/. c #E3B59B", +"(. c #FCE4D5", +"_. c #FFFFF9", +":. c #D9A185", +"<. c #D5A283", +"[. c #D7A685", +"}. c #A21705", +"|. c #AC3422", +"1. c #CC8A5F", +"2. c #C5764F", +"3. c #FDE7DA", +"4. c #D49E7F", +"5. c #DAA98D", +"6. c #D7A585", +"7. c #A21905", +"8. c #D5A677", +"9. c #CF926E", +"0. c #E1B195", +"a. c #E1B59A", +"b. c #D9A88B", +"c. c #E5C8AE", +"d. c #C77C57", +"e. c #9F1105", +"f. c #D7A582", +"g. c #DBB092", +"h. c #C77955", +"i. c #A01201", +"j. c #A11703", +" . + @ # $ % & * = - ; > ", +" @ , ' ) ! ~ { ] ^ / ( _ : < ", +". [ } | 1 2 3 4 5 6 7 8 9 0 a b ", +"c d e f g h i i i i j k l m n o ", +"@ p 1 g i i q r s t i u v w x y ", +"# ! 2 h i z A B C D E i F G H I ", +"$ ~ J i q A K t L l m M i N O P ", +"% { 4 i Q K R L S m T U i V W X ", +"& ] 5 i Y R D S Z T ` .i ..+.@.", +"* ^ #.i j D l Z M ` $.%.i &.*.=.", +"= / 7 t i -.m ;.>.$.,.i '.).!.~.", +"- {.8 ].i i ;.^./.(.i _.:.<.[.}.", +"|.1.2.l v ;.i i i i 3.:.4.5.6.7.", +"> 8.0 m w G 9.0.a.&.).<.b.c.d.e.", +" < a n x H O W +.*.!.f.g.h.i. ", +" b o y I P X @.=.~.}.j.e. "}; diff --git a/eworkpanel/icons/sound.xpm b/eworkpanel/icons/sound.xpm new file mode 100755 index 0000000..6c44b4a --- /dev/null +++ b/eworkpanel/icons/sound.xpm @@ -0,0 +1,162 @@ +/* XPM */ +static char * sound_xpm[] = { +"16 16 143 2", +" c None", +". c #7094A6", +"+ c #6D99A9", +"@ c #73949A", +"# c #6A9BB4", +"$ c #6D828C", +"% c #54595B", +"& c #A0D0E7", +"* c #689BB2", +"= c #5890AB", +"- c #536771", +"; c #2A2A2A", +"> c #424242", +", c #5C5C5C", +"' c #86BBD8", +") c #608191", +"! c #084268", +"~ c #A0D9F5", +"{ c #131313", +"] c #272727", +"^ c #404040", +"/ c #565656", +"( c #787C7E", +"_ c #4B83A5", +": c #001A2E", +"< c #022136", +"[ c #055087", +"} c #94D2F0", +"| c #435D6A", +"1 c #B9B9B9", +"2 c #F6F6F6", +"3 c #CCCCCC", +"4 c #595959", +"5 c #757575", +"6 c #4E8EB3", +"7 c #557384", +"8 c #15546E", +"9 c #005080", +"0 c #55B8EA", +"a c #A5EBFF", +"b c #8BCCEE", +"c c #2B2C2C", +"d c #E9E9E9", +"e c #F5F5F5", +"f c #F8F8F8", +"g c #8F8F8F", +"h c #7B7B7B", +"i c #638CA4", +"j c #447089", +"k c #5C8F9C", +"l c #98DBE9", +"m c #8DDBFF", +"n c #86D4FD", +"o c #72BEE5", +"p c #777777", +"q c #DFDFDF", +"r c #EBEBEB", +"s c #EFEFEF", +"t c #E1E1E1", +"u c #7D7D7D", +"v c #78A8C1", +"w c #29648D", +"x c #1D5D82", +"y c #55AED3", +"z c #54B1D8", +"A c #58B3DB", +"B c #65BBE3", +"C c #B2B2B2", +"D c #D1D1D1", +"E c #DCDCDC", +"F c #DEDEDE", +"G c #D8D8D8", +"H c #858585", +"I c #909A9F", +"J c #1C608D", +"K c #033B57", +"L c #0881A2", +"M c #329ABD", +"N c #359BBF", +"O c #55B1DB", +"P c #A1A1A1", +"Q c #B5B5B5", +"R c #C2C2C2", +"S c #C4C4C4", +"T c #C3C3C3", +"U c #8C8C8C", +"V c #95A0A6", +"W c #145683", +"X c #033241", +"Y c #004F65", +"Z c #0083A5", +"` c #0082A1", +" . c #49AAD8", +".. c #787878", +"+. c #A4A4A4", +"@. c #ABABAB", +"#. c #ACACAC", +"$. c #A7A7A7", +"%. c #999999", +"&. c #65A3C1", +"*. c #10507C", +"=. c #0D323C", +"-. c #00212D", +";. c #00556C", +">. c #00738D", +",. c #2CA1CF", +"'. c #737474", +"). c #797979", +"!. c #8B8B8B", +"~. c #919191", +"{. c #3E80A0", +"]. c #185775", +"^. c #001015", +"/. c #02141A", +"(. c #001A27", +"_. c #069BCE", +":. c #4D8FA4", +"<. c #484848", +"[. c #3A3A3A", +"}. c #A6A6A6", +"|. c #B0B0B0", +"1. c #01588A", +"2. c #13576F", +"3. c #001C2E", +"4. c #0096C8", +"5. c #9C9C9C", +"6. c #A2A2A2", +"7. c #AAAAAA", +"8. c #B3B3B3", +"9. c #B1BCBF", +"0. c #003C6B", +"a. c #003968", +"b. c #67A2B5", +"c. c #006596", +"d. c #074E6B", +"e. c #003764", +"f. c #5399B1", +"g. c #ADBDC3", +"h. c #006E9D", +"i. c #003562", +"j. c #023B5E", +"k. c #01375C", +"l. c #044262", +" . + @ ", +" # $ % & * ", +" = - ; > , ' ) ", +" ! ~ { ] ^ / ( _ ", +" : < [ } | 1 2 3 4 5 6 7 ", +" 8 9 0 a b c d e f g h i j ", +" k l m n o p q r s t u v w ", +" x y z A B C D E F G H I J ", +" K L M N O P Q R S T U V W ", +" X Y Z ` ...+.@.#.$.%.&.*. ", +" =.-.;.>.,.'.).U !.~.+.{.]. ", +" ^./.(._.:.<.[.4 }.|.1.2. ", +" 3.4.5.6.7.8.9.0. ", +" a.b.C 1 R c.d. ", +" e.f.g.h.i. ", +" j.k.l. "}; diff --git a/eworkpanel/icons/sound_penguin.xpm b/eworkpanel/icons/sound_penguin.xpm new file mode 100755 index 0000000..ccf41c7 --- /dev/null +++ b/eworkpanel/icons/sound_penguin.xpm @@ -0,0 +1,202 @@ +/* XPM */ +static char * sound_xpm[] = { +"16 16 183 2", +" c None", +". c #3B9929", +"+ c #4EAB37", +"@ c #49B437", +"# c #49B335", +"$ c #4EBC38", +"% c #368E23", +"& c #6A9A3F", +"* c #69AA41", +"= c #83B64E", +"- c #7FB24E", +"; c #8ACB6A", +"> c #69CB52", +", c #6FCB53", +"' c #7EA568", +") c #636764", +"! c #757475", +"~ c #5D5D5D", +"{ c #6D9832", +"] c #9EBB60", +"^ c #A0D777", +"/ c #5B9146", +"( c #515550", +"_ c #667467", +": c #7D9A7B", +"< c #C7C4C8", +"[ c #AFAEAF", +"} c #8F8F8F", +"| c #757575", +"1 c #424242", +"2 c #6D9941", +"3 c #73A644", +"4 c #7FCC5B", +"5 c #679149", +"6 c #181C17", +"7 c #5F5C5F", +"8 c #E5E1E6", +"9 c #FFFFFF", +"0 c #EBEBED", +"a c #969697", +"b c #C9CACB", +"c c #C6C6C6", +"d c #4C4C4C", +"e c #679133", +"f c #77AB43", +"g c #75BF55", +"h c #8FC968", +"i c #577144", +"j c #727274", +"k c #F5F4F5", +"l c #FEFEFD", +"m c #CCCCCB", +"n c #858587", +"o c #D4D5D3", +"p c #9E9E9E", +"q c #111111", +"r c #5E8E3A", +"s c #66A437", +"t c #4E803D", +"u c #78856B", +"v c #333B2D", +"w c #4F4E4F", +"x c #B8B8BA", +"y c #D9D9D7", +"z c #DDDE79", +"A c #D6D04B", +"B c #E8CB87", +"C c #D5D4D7", +"D c #535354", +"E c #0A0A0A", +"F c #262626", +"G c #3D7530", +"H c #629C39", +"I c #3B8727", +"J c #355B2C", +"K c #070707", +"L c #1C1C1C", +"M c #9A9A9A", +"N c #DDDDE1", +"O c #F4F5B9", +"P c #FFDB56", +"Q c #E5D1BA", +"R c #CCCDD0", +"S c #3A3A3A", +"T c #090909", +"U c #212121", +"V c #508C32", +"W c #68AE44", +"X c #19350F", +"Y c #000000", +"Z c #3D3D3D", +"` c #EFEFEF", +" . c #FEFEFE", +".. c #FCFBFD", +"+. c #EFE7DF", +"@. c #E1E1E5", +"#. c #E8E8E8", +"$. c #B1B1B1", +"%. c #242424", +"&. c #141414", +"*. c #478B2B", +"=. c #336C1D", +"-. c #122209", +";. c #050404", +">. c #8A8A8B", +",. c #F0F0F0", +"'. c #F2F1F1", +"). c #F7F7F8", +"!. c #F3F5F7", +"~. c #E9E9E9", +"{. c #D8D8D8", +"]. c #C4C4C4", +"^. c #5F5F5F", +"/. c #171717", +"(. c #468528", +"_. c #47902A", +":. c #5A754D", +"<. c #2A2729", +"[. c #BABABA", +"}. c #E0E0E0", +"|. c #ECECEC", +"1. c #DFDFDF", +"2. c #C9C9C9", +"3. c #7C7C7C", +"4. c #252525", +"5. c #488828", +"6. c #2B7013", +"7. c #404A3D", +"8. c #445D3F", +"9. c #B8B7B9", +"0. c #D3D3D3", +"a. c #E1E1E1", +"b. c #E4E4E4", +"c. c #DEDEDE", +"d. c #CFCFCF", +"e. c #B7B7B7", +"f. c #A0A0A0", +"g. c #4D842E", +"h. c #5A8F41", +"i. c #759257", +"j. c #69865B", +"k. c #A19DA7", +"l. c #C3C3CA", +"m. c #D0D1D4", +"n. c #D4D4D4", +"o. c #CDCDCD", +"p. c #BBBBBC", +"q. c #A1A1A3", +"r. c #8C8C91", +"s. c #515259", +"t. c #3E7829", +"u. c #335D28", +"v. c #1F4719", +"w. c #335426", +"x. c #8A9A66", +"y. c #CDCBA1", +"z. c #C7C9BA", +"A. c #C2C4C5", +"B. c #BABABB", +"C. c #A9ACAC", +"D. c #AEB1AA", +"E. c #A3A686", +"F. c #002510", +"G. c #002A0F", +"H. c #33581C", +"I. c #E3E665", +"J. c #FFF16C", +"K. c #FFCE45", +"L. c #EBA553", +"M. c #B19D92", +"N. c #999A99", +"O. c #D8BB79", +"P. c #FEE2A2", +"Q. c #FDDD7F", +"R. c #E7A330", +"S. c #753517", +"T. c #A47822", +"U. c #B17126", +"V. c #A54C22", +"W. c #7F2817", +"X. c #974520", +"Y. c #903B1F", +"Z. c #78241A", +" ", +" . + + @ # $ % ", +"& * = - ; > , ' ) ! ~ ", +"{ ] ^ / ( _ : < [ } | 1 ", +"2 3 4 5 6 7 8 9 0 a b c d ", +"e f g h i j k l m n o 9 p q ", +"r s t u v w x y z A B C D E F ", +"G H I J K L M N O P Q R S T U ", +" V W X Y Z ` ...+.@.#.$.%.&. ", +" *.=.-.;.>.,.'.).!.~.{.].^./.Y ", +" (._.:.<.[.}.|.,.|.1.2.$.3.4. ", +" 5.6.7.8.9.0.a.b.c.d.e.f.| ", +" g.h.i.j.k.l.m.n.o.p.q.r.s. ", +" t.u.v.w.x.y.z.A.B.C.D.E. ", +" F.G.H.I.J.K.L.M.N.O.P.Q.R.S. ", +" T.U.V.W. X.Y.Z. "}; diff --git a/eworkpanel/icons/tux.xpm b/eworkpanel/icons/tux.xpm new file mode 100755 index 0000000..71220b5 --- /dev/null +++ b/eworkpanel/icons/tux.xpm @@ -0,0 +1,91 @@ +/* XPM */ +static char * tux_xpm[] = { +"18 18 70 1", +" c None", +". c #000000", +"+ c #363636", +"@ c #5A5A5A", +"# c #0E0E0E", +"$ c #0D0D0D", +"% c #151515", +"& c #999999", +"* c #909090", +"= c #9C9C9C", +"- c #555555", +"; c #998B54", +"> c #E2CD41", +", c #BFAB31", +"' c #675930", +") c #131313", +"! c #81702D", +"~ c #E4BE29", +"{ c #DAAB05", +"] c #6A4411", +"^ c #343434", +"/ c #232323", +"( c #C8C8C5", +"_ c #DED4AF", +": c #E5DEB5", +"< c #939291", +"[ c #1A1A1A", +"} c #878787", +"| c #F5F5F5", +"1 c #EBEBEB", +"2 c #F0F0F0", +"3 c #DADADA", +"4 c #3B3B3B", +"5 c #DEDEDE", +"6 c #F7F7F7", +"7 c #F1F1F1", +"8 c #E8E8E8", +"9 c #7E7E7E", +"0 c #606060", +"a c #C4C4C4", +"b c #E9E9E9", +"c c #ECECEC", +"d c #575757", +"e c #141414", +"f c #58564D", +"g c #F0DE76", +"h c #4A3E00", +"i c #DBDBDB", +"j c #E4E4E4", +"k c #A99E88", +"l c #9F9149", +"m c #534508", +"n c #54472D", +"o c #B5A74B", +"p c #F8D505", +"q c #DCBB00", +"r c #6D6957", +"s c #B9B9B9", +"t c #A2A2A2", +"u c #4D4A41", +"v c #F7DB31", +"w c #E6C70C", +"x c #917F0F", +"y c #7B6D11", +"z c #8B7500", +"A c #5F4D00", +"B c #070500", +"C c #232116", +"D c #C7B134", +"E c #836E00", +" ", +" ", +" ", +" ..+@ ", +" #$%%. ", +" &*=-. ", +" ;>,') ", +" !~{]^ ", +" /(_:<[ ", +" }|1234. ", +" .561789. ", +" .0abc3de ", +" fgh^ijklmn ", +" opqrstuvwx ", +" yzAB..CDE ", +" ", +" ", +" "}; diff --git a/eworkpanel/item.cpp b/eworkpanel/item.cpp new file mode 100755 index 0000000..b1951c8 --- /dev/null +++ b/eworkpanel/item.cpp @@ -0,0 +1,127 @@ +#include "item.h" +#include "mainmenu.h" + +void layout_menu(EItemGroup *g, void *) { + g->add_items(); +} + +EItemGroup::EItemGroup(MainMenu *menu, int type, const char *name) +: fltk::Item_Group(name) +{ + m_modified = 0; + m_menu = menu; + m_gtype = type; + about_to_show = (fltk::Callback*)layout_menu; + m_access = true; +} + +void EItemGroup::add_items() +{ + struct stat s; + if(lstat(dir(), &s) == 0) { + if(!m_modified) { + m_modified = s.st_mtime; + } + if(m_modified != s.st_mtime) { + //dir has changed.. + m_modified = s.st_mtime; + clear(); + } + } + + if(!children() && access()) { + begin(); + if(group_type()==BROWSER_GROUP) + menu()->scan_filebrowser(dir()); + else if(group_type()==APP_GROUP) + menu()->scan_programitems(dir()); + end(); + } +} + +static fltk::Menu_Button *popupMenu=0; +static const char *dir = 0; + +void cb_menu(fltk::Widget *wid, long user_data) +{ + if(!dir) return; + char cmd[FL_PATH_MAX]; + + EDE_Config pGlobalConfig(find_config_file("ede.conf", false)); + + // we can't use Fl_String here, because gcc3.2.3 bug, so we will use + // plain char with stupid FL_PATH_MAX + switch(user_data) { + case 1: { + char term[FL_PATH_MAX]; + pGlobalConfig.get("Terminal", "Terminal", term, 0, sizeof(term)); + if(pGlobalConfig.error() && !term[0] || (strlen(term) == 0)) + strncpy(term, "xterm", sizeof(term)); + + snprintf(cmd, sizeof(cmd)-1, "cd %s; %s\n", dir, term); + } + break; + + case 2: { + char browser[FL_PATH_MAX]; + pGlobalConfig.get("Web", "Browser", browser, 0, sizeof(browser)); + if(pGlobalConfig.error() && !browser[0] || (strlen(browser) == 0)) + strncpy(browser, "mozilla", sizeof(browser)); + + snprintf(cmd, sizeof(cmd)-1, "%s %s\n", browser, dir); + } + break; + + case 0: + fltk::exit_modal(); + default: + return; + } + + fltk::start_child_process(cmd, false); +} + +int popup_menu() +{ + if(!popupMenu) { + popupMenu = new fltk::Menu_Button(0,0,0,0,0); + popupMenu->parent(0); + popupMenu->type(fltk::Menu_Button::POPUP3); + + popupMenu->add(_("Open with terminal..."),0,(fltk::Callback*)cb_menu,(void*)1); + popupMenu->add(_("Open with browser..."),0,(fltk::Callback*)cb_menu,(void*)2); + popupMenu->add(new fltk::Menu_Divider()); + popupMenu->add(_("Close Menu"),0,(fltk::Callback*)cb_menu,(void*)0); + } + return popupMenu->popup(); +} + +int EItemGroup::handle(int event) +{ + if(event == FL_RELEASE) { + if( fltk::event_button() == 3) { + ::dir = this->dir(); + int ret = popup_menu(); + ::dir = 0; + if(ret) return 0; + } + return 1; + } + return fltk::Item_Group::handle(event); +} + +int EItem::handle(int event) +{ + if(event==FL_RELEASE) { + if(type()==FILE) { + if(fltk::event_button() == 3) { + ::dir = this->dir(); + int ret = popup_menu(); + ::dir = 0; + return 1; + } + if(((EItemGroup*)parent())->group_type()==BROWSER_GROUP) return 1; + } + } + return fltk::Item::handle(event); +} diff --git a/eworkpanel/item.h b/eworkpanel/item.h new file mode 100755 index 0000000..f5e56f6 --- /dev/null +++ b/eworkpanel/item.h @@ -0,0 +1,98 @@ +#ifndef _ITEM_H_ +#define _ITEM_H_ + +#include +#include +#include +#include + +/*#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "EDE_Config.h" +#include + + +class MainMenu; + +enum { + NO_TYPE = 0, + APP_GROUP, + BROWSER_GROUP +}; + +class EItemGroup : public fltk::Item_Group { +public: + EItemGroup(MainMenu *menu, int type, const char *name=0); + ~EItemGroup() { } + + void add_items(); + + int handle(int event); + + int group_type() const { return m_gtype; } + void group_type(int val) { m_gtype = val; } + + bool access() const { return m_access; } + void access(bool val) { m_access = val; } + +// void dir(const Fl_String &dir) { m_dir = dir; } + void dir(const char *dir) { strcpy(m_dir, dir); } + const char *dir() const { return m_dir; } + + MainMenu *menu() { return m_menu; } + +private: + long m_modified; + int m_gtype; + char* m_dir; + bool m_access; + MainMenu *m_menu; +}; + +class EItem : public fltk::Item { +public: + EItem(MainMenu *menu, const char *name=0) : fltk::Item(name) { m_menu = menu; } + + enum { FILE=fltk::Item::NO_EXECUTE+1 }; + + int handle(int event); + + const char* dir() const { return ((EItemGroup*)parent())->dir(); } + + void exec(const char *exec) { strcpy(m_exec, exec); } +// void exec(const Fl_String &exec) { m_exec = exec; } + const char* exec() const { return m_exec; } + + void filename(const char *filename) { strcpy(m_filename, filename); } +// void filename(const Fl_String &filename) { m_filename = filename; } + const char* filename() const { return m_filename; } + + MainMenu *menu() const { return m_menu; } + +private: + char* m_filename; + char* m_exec; + MainMenu *m_menu; +}; + +#endif diff --git a/eworkpanel/keyboardchooser.cpp b/eworkpanel/keyboardchooser.cpp new file mode 100755 index 0000000..0b34ec0 --- /dev/null +++ b/eworkpanel/keyboardchooser.cpp @@ -0,0 +1,303 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include "keyboardchooser.h" + +#define MAX_KEYBOARDS 5 + +KeyboardChooser *kbcapplet; + +static fltk::Image keyboard_pix((const char **)keyboard_xpm); + +void setKeyboard(const char* pKbdLayout) +{ + if(!pKbdLayout.empty()) { + char* proc = (char*)malloc(strlen("setxkbmap ")+strlen(pKbdLayout)); + proc = strcpy(proc, "setxkbmap "); + pKbdLayout = strcat(proc,pKbdLayout); + fltk::start_child_process(proc, false); + + char pShortKbd[2]; + strncpy(pShortKbd, pKbdLayout, 2); + kbcapplet->tooltip(pKbdLayout); + kbcapplet->label(pShortKbd); + kbcapplet->redraw(); + } +} + +// count occurences of character within string +int strcount(const char *string, int character) +{ + char *p = string; + int counter; + while (p != 0) + if (p++ == character) counter++; + return counter; +} + +void CB_setKeyboard(fltk::Item *item, void *pData) +{ + EDE_Config pGlobalConfig(find_config_file("ede.conf", true)); + if (!pGlobalConfig.error() && item) { + char* kbdname = item->field_name(); + + pGlobalConfig.set("Keyboard", "Layout", kbdname); + pGlobalConfig.flush(); + setKeyboard(kbdname); + + // update history + char* recentlist; + pGlobalConfig.get("Keyboard", "RecentKeyboards", recentlist, ""); + + if (strstr(recentlist, kbdname) != NULL) return; + if (strcount(recentlist, '|') > MAX_KEYBOARDS) + recentlist = strchr(recentlist, '|'); + + recentlist = realloc(recentlist, strlen(recentlist)+strlen(kbdname)+1); + strcat(recentlist, "|"); + strcat(recentlist, kbdname); + + pGlobalConfig.set("Keyboard", "RecentKeyboards", recentlist); + pGlobalConfig.flush(); + + // refresh menu list + for (int i=0; ichildren(); i++) { + if (strcmp(kbcapplet->child(i)->field_name(),kbdname) != 0) return; + } + fltk::Item *mKbdItem = new fltk::Item(item->label()); + mKbdItem->field_name(kbdname); + mKbdItem->callback((fltk::Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + kbcapplet->insert(*mKbdItem,0); + } +} + +// in case something fails, this function will produce a +// static list of keymaps +void addKeyboardsOld(KeyboardChooser *mPanelMenu) +{ + char *countries[49] = { + "us", "en_US", "us_intl", "am", "az", "by", "be", "br", + "bg", "ca", "cz", "cz_qwerty", "dk", "dvorak", "ee", + "fi", "fr", "fr_CH", "de", "de_CH", "el", "hr", "hu", + "is", "il", "it", "jp", "lt", "lt_std", "lt_p", "lv", + "mk", "no", "pl", "pt", "ro", "ru", "sr", "si", + "sk", "sk_qwerty", "es", "se", "th", "ua", "gb", "vn", + "nec/jp", "tr" + }; + + mPanelMenu->begin(); + fltk::Item *mKbdItem = new fltk::Item("English (US)"); + mKbdItem->field_name("us"); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + new fltk::Divider(10, 5); + fltk::Item_Group *more = new fltk::Item_Group(_("More...")); + mPanelMenu->end(); + + more->begin(); + for (int i=0; i<49; i++) + { + fltk::Item *mKbdItem = new fltk::Item(countries[i]); + mKbdItem->field_name(countries[i]); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + } + more->end(); +} + +void addKeyboards(KeyboardChooser *mPanelMenu) +{ + const char* X11DirList[2] = {"/usr/X11R6/lib/X11/", "/usr/local/X11R6/lib/X11/"}; + const char* rulesFileList[2] = {"xkb/rules/xorg.lst", "xkb/rules/xfree86.lst"}; + char* xdir, xfilename; + FILE *fp; + char kbdnames[300][15]; + char kbddescriptions[300][50]; + EDE_Config pGlobalConfig(fl_find_config_file("ede.conf", true)); + + // First look for directory + for(int ii=0; ii<2; ii++) + if( fltk::is_dir(X11DirList[ii]) ) { + xdir = strdup(X11DirList[ii]); + goto step2; + } + addKeyboardsOld(mPanelMenu); return; + + // Look for filename +step2: + for(int ii=0; ii<2; ii++) { + xfilename = (char*) malloc(strlen(xdir)+strlen(rulesFileList[ii])); + strcpy(xfilename,xdir) + strcat(xfilename,rulesFileList[ii]); + if( fltk::file_exists(xfilename) ) + goto step3; + } + addKeyboardsOld(mPanelMenu); return; + + // now load layouts into widget... +step3: + fp = fopen(xfilename, "r"); + if(!fp) { + addKeyboardsOld(mPanelMenu); return; + } + + + // warning: ugly code ahead (parser) + char line[256]; line[0]='\0'; + while ((!feof(fp)) && (!strstr(line,"! layout"))) { + fgets(line,255,fp); + } + int kbdno = 0; + while ((!feof(fp) && (strcmp(line,"\n")))) { + fgets(line,255,fp); + int i=0, j=0; + char name[10]; + char description[200]; + while((line[i] != 13) && (line[i] != 10)) { + while ((line[i] == 32) || (line[i] == 9)) + i++; + while ((line[i] != 32) && (line[i] != 9)) + name[j++] = line[i++]; + name[j] = 0; j=0; + while ((line[i] == 32) || (line[i] == 9)) + i++; + while ((line[i] != 13) && (line[i] != 10)) + description[j++] = line[i++]; + description[j] = 0; + } + strcpy (kbdnames[kbdno],name); + strcpy (kbddescriptions[kbdno++],description); + } + fclose(fp); + + + // now populate the menu + // main menu with "More..." + mPanelMenu->begin(); + char* recentlist; + pGlobalConfig.get("Keyboard", "RecentKeyboards", recentlist, ""); + for (int i = 0; i < kbdno; i++) { + if (strchr(recentlist,kbdnames[i]) != NULL) { + fltk::Item *mKbdItem = new fltk::Item(kbddescriptions[i]); + mKbdItem->field_name(kbdnames[i]); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + } + } + new fltk::Divider(10, 5); + fltk::Item_Group *more = new fltk::Item_Group(_("More...")); + mPanelMenu->end(); + + more->begin(); + for (int i=0;ifield_name(kbdnames[i]); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + } + more->end(); + + +/* for (int i=0; ilayouts.num_desc; i++) + { + mPanelMenu->begin(); + Fl_Item *mKbdItem = new Fl_Item(rules->layouts.desc[i].name); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + mPanelMenu->end(); + }*/ + return; +} + + +void getKeyboard(KeyboardChooser *mButton) +{ + char* pKbdLayout; + EDE_Config pGlobalConfig(find_config_file("ede.conf", true)); + pGlobalConfig.get("Keyboard", "Layout", pKbdLayout, "us"); + setKeyboard(pKbdLayout); +} + + + +// ---------------------------- +// KeyboardChooser class +// ---------------------------- + +KeyboardChooser::KeyboardChooser(int x, int y, int w, int h, fltk::Boxtype up_c, fltk::Boxtype down_c, const char *label) + : fltk::Menu_Button(x, y, w, h, label) +{ + kbcapplet = this; + + m_open = false; + Height = 0; + up = up_c; + down = down_c; + + anim_speed(2); + anim_flags(BOTTOM_TO_TOP); + + addKeyboards(this); + getKeyboard(this); + +} + +void KeyboardChooser::draw() +{ + fltk::Boxtype box = up; + fltk::Flags flags; + fltk::Color color; + + if (!active_r()) { + flags = fltk::INACTIVE; + color = this->color(); + } else if (belowmouse()) { + flags = fltk::HIGHLIGHT; + color = highlight_color(); + if (!color) color = this->color(); + box = down; + } else { + flags = 0; + color = this->color(); + } + + if(!box->fills_rectangle()) { + fltk::push_clip(0, 0, this->w(), this->h()); + parent()->draw_group_box(); + fltk::pop_clip(); + } + + box->draw(0, 0, this->w(), this->h(), color, flags); + + int x,y,w,h; + x = y = 0; + w = this->w(); h = this->h(); + box->inset(x,y,w,h); + draw_inside_label(x,y,w,h,flags); +} + +void KeyboardChooser::calculate_height() +{ + fltk::Style *s = fltk::Style::find("Menu"); + Height = s->box->dh(); + for(int n=0; nvisible()) continue; + fltk::font(i->label_font(), i->label_size()); + Height += i->height()+s->leading; + } +} + +int KeyboardChooser::popup() +{ + m_open = true; + calculate_height(); + int retval = fltk::Menu_::popup(0, 0-Height);//, w(), h()); + m_open = false; + return retval; +} diff --git a/eworkpanel/keyboardchooser.h b/eworkpanel/keyboardchooser.h new file mode 100755 index 0000000..d157201 --- /dev/null +++ b/eworkpanel/keyboardchooser.h @@ -0,0 +1,60 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#ifndef keyboardchooser_h +#define keyboardchooser_h + +/*#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "EDE_Config.h" +#include +#include +#include +#include + +#include "icons/keyboard.xpm" + + +class KeyboardChooser : public fltk::Menu_Button +{ +public: + KeyboardChooser(int, int, int, int, fltk::Boxtype, fltk::Boxtype, const char *l=0); + void calculate_height(); + + virtual void draw(); + virtual int popup(); + + virtual void preferred_size(int &w, int &h) const { w=this->w(); } + + bool is_open() { return m_open; } + +private: + int Height; + fltk::Boxtype up, down; + bool m_open; +}; + +#endif diff --git a/eworkpanel/locale/hu.po b/eworkpanel/locale/hu.po new file mode 100755 index 0000000..60246e0 --- /dev/null +++ b/eworkpanel/locale/hu.po @@ -0,0 +1,179 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:23+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "Az Equinox Desktop Environment -ről" + +#: aboutdialog.cpp:17 +msgid "Equinox Desktop Environment " +msgstr "Equinox Desktop Environment " + +#: aboutdialog.cpp:25 +msgid " This program is based in part on the work of FLTK project (www.fltk.org). This program is free software, you can redistribute it and/or modify it under the terms of 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 Licence along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" + +#: aboutdialog.cpp:38 +#: logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "címke" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "(C)Copyright 2000-2004 EDE Authors" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" +"CPU terh.:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" + +#: item.cpp:91 +msgid "Open with terminal..." +msgstr "Megnyitás terminálban..." + +#: item.cpp:92 +msgid "Open with browser..." +msgstr "Megnyitás böngészővel..." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Menü bezárása" + +#: keyboardchooser.cpp:86 +#: keyboardchooser.cpp:179 +msgid "More..." +msgstr "Egyéb..." + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "Nincs megfelelő jogosultságod az újraindításhoz !" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "Nincs megfelelő jogosultságod a leállításhoz !" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Kilépés" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "&kijelentkezés" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Kijelentkezés." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "a számítógép új&raindítása" + +#: logoutdialog.cpp:203 +msgid "Restart the computer." +msgstr "A számítógép újraindítása." + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "Újraindítás - Nincs megfelelő jogosultságod." + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "a &számítógép leállítása" + +#: logoutdialog.cpp:213 +msgid "Shut down the computer." +msgstr "A számítógép leállítása." + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "Leállítás - Nincs megfelelő jogosultságod." + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "Mégs&em" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Kijelentkezés, újraindítás vagy leállítás?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Üdvözöllel az Equinox Desktop Environment-ben." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Könyvtár megnyitása..." + +#: taskbutton.cpp:165 +msgid " Close " +msgstr "Bezárás" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "Kilövés" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "Minimalizálás" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "Visszaállítás" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Fogadott: %ld kB (%.1f kB/s)\n" +"Küldött: %ld kB (%.1f kB/s)\n" +"Időtartam: %d perc %d másodperc" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Munkaterület" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "Asztal megjelenítése" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Munkaterületek" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Beállítások" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "Az EDÉ-ről..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Hangerőszabályzó" + diff --git a/eworkpanel/locale/id.po b/eworkpanel/locale/id.po new file mode 100755 index 0000000..2b3f035 --- /dev/null +++ b/eworkpanel/locale/id.po @@ -0,0 +1,257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-11-29 16:05+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "Tentang Equinox Desktop Environment" + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr "Tentang Equinox Desktop Environment" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" +"Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +"Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +"atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +"Public License, versi 2 atau versi yang lebih baru. Program ini " +"didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +"tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General Public " +"License untuk lebih jelasnya. Anda seharusnya telah menerima salinan GNU " +"General Public License bersama dengan program ini; jikat tidak, silahkan " +"minta ke Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, " +"USA." + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr "Buka dengan xterm.." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr "Buka dengan browser.." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Menu Tutup" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Logout" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "&logut dari sessi saat ini" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Logout dari sessi saat ini." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "$restart komputer" + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr "$restart komputer" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "&shut down komputer" + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr "&shut down komputer" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&Batalkan" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Logout, restart atau shut down komputer?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Selamat datang di Equinox Desktop Environment." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Buka Direktori.." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr "Menu Tutup" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Diterima: %ld kB (%.1f kB/detik)\n" +"Dikirim: %ld kB (%.1f kB/detik)\n" +"Durasi: %d menit %d detik" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Ruangkerja" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Ruangkerja" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Seting" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "Tentang EDE..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Kontrol volume" + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr "CPU Load: %3.2f %3.2f %3.2f, %d processes." + +#~ msgid "&Programs" +#~ msgstr "&Program" + +#~ msgid "&Favourites" +#~ msgstr "&Favorit" + +#~ msgid "F&ind" +#~ msgstr "Car&i" + +#~ msgid "&Help" +#~ msgstr "&Pertolongan" + +#~ msgid "&About" +#~ msgstr "&Tentang" + +#~ msgid "&Run..." +#~ msgstr "&Jalankan..." + +#~ msgid "&Panel" +#~ msgstr "&Panel" + +#~ msgid "Edit panels menu" +#~ msgstr "Menu edit panel" + +#~ msgid "Panel settings" +#~ msgstr "Seting panel" + +#~ msgid "Control panel" +#~ msgstr "Panel kontrol" + +#~ msgid "Install new software" +#~ msgstr "Install perangkat lunak baru" + +#~ msgid "L&ock screen" +#~ msgstr "L&ock layar" + +#~ msgid "&Logout" +#~ msgstr "&Logout" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Restart komputer. Hanya diijinkan untuk root !" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Shut down komputer. Hanya diijinkan untuk root !" + +#~ msgid "&User programs" +#~ msgstr "Program-program &User" + +#~ msgid "&Browser" +#~ msgstr "&Browser" diff --git a/eworkpanel/locale/messages.pot b/eworkpanel/locale/messages.pot new file mode 100755 index 0000000..24187ed --- /dev/null +++ b/eworkpanel/locale/messages.pot @@ -0,0 +1,185 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "" + +#: aboutdialog.cpp:17 +msgid "Equinox Desktop Environment " +msgstr "" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +msgid "Open with terminal..." +msgstr "" + +#: item.cpp:92 +msgid "Open with browser..." +msgstr "" + +#: item.cpp:94 +msgid "Close Menu" +msgstr "" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "" + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "" + +#: logoutdialog.cpp:203 +msgid "Restart the computer." +msgstr "" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "" + +#: logoutdialog.cpp:213 +msgid "Shut down the computer." +msgstr "" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "" + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "" + +#: taskbutton.cpp:165 +msgid " Close " +msgstr "" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "" + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "" diff --git a/eworkpanel/locale/ru.po b/eworkpanel/locale/ru.po new file mode 100755 index 0000000..103031b --- /dev/null +++ b/eworkpanel/locale/ru.po @@ -0,0 +1,248 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr " " + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr " " + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr " .." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr ".." + +#: item.cpp:94 +msgid "Close Menu" +msgstr " " + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "& " + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr " " + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr " " + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr " " + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr " " + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr " " + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr ", ?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr " Equinox Desktop Environment." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr " .." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr " " + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +": %ld (%.1f /)\n" +": %ld (%.1f /)\n" +": %d %d " + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr " " + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr " " + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr " EDE..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr " " + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr " : %3.2f %3.2f %3.2f, %d ." + +#~ msgid "&Programs" +#~ msgstr "" + +#~ msgid "&Favourites" +#~ msgstr "" + +#~ msgid "F&ind" +#~ msgstr "" + +#~ msgid "&Help" +#~ msgstr "" + +#~ msgid "&About" +#~ msgstr " " + +#~ msgid "&Run..." +#~ msgstr "..." + +#~ msgid "&Panel" +#~ msgstr "" + +#~ msgid "Edit panels menu" +#~ msgstr " " + +#~ msgid "Panel settings" +#~ msgstr " " + +#~ msgid "Control panel" +#~ msgstr " " + +#~ msgid "Install new software" +#~ msgstr " " + +#~ msgid "L&ock screen" +#~ msgstr "& " + +#~ msgid "&Logout" +#~ msgstr "" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr ". \"root\"!" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr ". \"root\"!" + +#~ msgid "&User programs" +#~ msgstr " " + +#~ msgid "&Browser" +#~ msgstr ".." diff --git a/eworkpanel/locale/sk.po b/eworkpanel/locale/sk.po new file mode 100755 index 0000000..07b6f53 --- /dev/null +++ b/eworkpanel/locale/sk.po @@ -0,0 +1,259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "O Equinox Desktop Environment" + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr "O Equinox Desktop Environment" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" +"Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +"Tento program je voľný softvér, môžete ho redistribuovať a/alebo modifikovať " +"podľa podmienok licencie GNU General Public License publikovanej nadáciou " +"the Free Software Foundation, buď verzie 2 tejto licencie, alebo (podľa " +"vášho uváženia) ľubovoľnej novšej verzie. Tento program je distribuovaný v " +"nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK ZÁRUKY; dokonca bez obsiahnutej " +"záruky OBCHODOVATEĽNOSTI alebo VÝHOD PRE URČITÝ ÚČEL. Ďalšie podrobnosti " +"hľadajte v licencii GNU General Public License. S týmto programom by ste " +"mali dostať kópiu licencie GNU General Public Licence; ak nie, napíšte do " +"nadácie the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA " +"02139, USA." + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr "Otvoriť v xterme.." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr "Otvoriť v prehliadači.." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Zavrieť ponuku" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Odhlásenie" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "&odhlásiť sa z aktuálneho sedenia" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Odhlásenie sa z aktuálneho sedenia." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "&reštarťovať počítač" + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr "&reštarťovať počítač" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "&vypnúť počítač" + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr "&vypnúť počítač" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Odhlásiť sa, reštartovať alebo vypnúť počítač?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Vitajte v Equinox Desktop Environment." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Otvoriť adresár.." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr "Zavrieť ponuku" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Prijatých : %ld kB (%.1f kB/s)\n" +"Odoslaných : %ld kB (%.1f kB/s)\n" +"Čas trvania: %d minút %d sekúnd" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Pracovná plocha" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Pracovné plochy" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Nastavenia" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "O EDE..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Nastavenie hlasitosti" + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr "Zaťaženie procesora: %3.2f %3.2f %3.2f, %d procesov." + +#~ msgid "&Programs" +#~ msgstr "&Programy" + +#~ msgid "&Favourites" +#~ msgstr "&Obľúbené" + +#~ msgid "F&ind" +#~ msgstr "N&ájsť" + +#~ msgid "&Help" +#~ msgstr "&Nápoveda" + +#~ msgid "&About" +#~ msgstr "&O programe" + +#~ msgid "&Run..." +#~ msgstr "&Spustiť..." + +#~ msgid "&Panel" +#~ msgstr "&Panel" + +#~ msgid "Edit panels menu" +#~ msgstr "Editovať ponuku panelu" + +#~ msgid "Panel settings" +#~ msgstr "Nastavenie panela" + +#~ msgid "Control panel" +#~ msgstr "Kontrólny panel" + +#~ msgid "Install new software" +#~ msgstr "Inštalovať nový softvér" + +#~ msgid "L&ock screen" +#~ msgstr "&Zablokovať obrazovku" + +#~ msgid "&Logout" +#~ msgstr "&Odhlásenie" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr "" +#~ "Reštartovanie počítača. Táto akcia je povolená iba \"root\" užívateľovi!" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Vypnúť počítač. Táto akcia je povolená iba \"root\" užívateľovi!" + +#~ msgid "&User programs" +#~ msgstr "&Užívateľove programy" + +#~ msgid "&Browser" +#~ msgstr "&Prehliadač" diff --git a/eworkpanel/locale/sr.po b/eworkpanel/locale/sr.po new file mode 100755 index 0000000..6839057 --- /dev/null +++ b/eworkpanel/locale/sr.po @@ -0,0 +1,257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-12-02 04:33+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "О Иквинокс Десктоп Окружењу" + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr "О Иквинокс Десктоп Окружењу" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" +"Овај програм је базиран на FLTK пројекту (www.fltk.org). Овај програм је " +"слободан софтвер, можете га редистрибуирати и/или модификовати под условима " +"постављеним GNU General Public лиценцом објављеном од стране Free Software " +"Foundation, било да је то верзија 2 Лиценце, или (опционо) било која каснија " +"верзија. Овај програм је дистрибуиран у нади да ће бити употребљив, али БЕЗ " +"ИКАКВИХ ГАРАНЦИЈА; чак без имплицитне гаранције ПРОДАЈЕ РОБЕ или ПОГОДНОСТИ " +"ЗА НЕКУ СПЕЦИФИЧНУ НАМЕНУ. Погледајте \"GNU General Public License\" за више " +"детаља. Требало би да сте добили копију \"GNU General Public License\" " +"лиценце заједно са овим програмом; ако нисте, пишите на Free Software " +"Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&ОК" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr "Отвори са икс-терм-ом." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr "Отвори са браузером..." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Затвори мени" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Излогуј" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "Из&логуј ме из тренутне сесије" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Излогуј ме из тренутне сесије." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "&Рестартуј рачунар" + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr "&Рестартуј рачунар" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "&Угаси рачунар" + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr "&Угаси рачунар" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&Одустани" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Излогуј ме, рестартуј или угаси рачунар?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Добродошли у Иквинокс Десктоп Окружење." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Отвори директоријум..." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr "Затвори мени" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Дошло: %ld kB (%.1f kB/s)\n" +"Послато: %ld kB (%.1f kB/s)\n" +"Трајање: %d min %d sec" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Радна површина" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Радне површине" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Подешавања" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "О ЕДЕ-у..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Контрола звука" + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr "CPU Лоад: %3.2f %3.2f %3.2f, %d процеса." + +#~ msgid "&Programs" +#~ msgstr "&Програми" + +#~ msgid "&Favourites" +#~ msgstr "&Омиљени" + +#~ msgid "F&ind" +#~ msgstr "&Тражи" + +#~ msgid "&Help" +#~ msgstr "По&моћ" + +#~ msgid "&About" +#~ msgstr "&О..." + +#~ msgid "&Run..." +#~ msgstr "&Старт" + +#~ msgid "&Panel" +#~ msgstr "П&анел" + +#~ msgid "Edit panels menu" +#~ msgstr "Едитуј панел меније" + +#~ msgid "Panel settings" +#~ msgstr "Панел подешавање" + +#~ msgid "Control panel" +#~ msgstr "Контролни панел" + +#~ msgid "Install new software" +#~ msgstr "Инсталирај нови софтвер" + +#~ msgid "L&ock screen" +#~ msgstr "&Закључај екран" + +#~ msgid "&Logout" +#~ msgstr "&Излогуј ме" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Рестартуј рачунар. Ова акција је дозвољена само \"root\" кориснику!" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Угаси рачунар. Ова акција је дозвољена само \"root\" кориснику!" + +#~ msgid "&User programs" +#~ msgstr "&Кориснички програми" + +#~ msgid "&Browser" +#~ msgstr "&Браузер" diff --git a/eworkpanel/logoutdialog.cpp b/eworkpanel/logoutdialog.cpp new file mode 100755 index 0000000..1bb4146 --- /dev/null +++ b/eworkpanel/logoutdialog.cpp @@ -0,0 +1,240 @@ +// generated by Fast Light User Interface Designer (fluid) version 2,0003 + +// Work Panel for EDE is (C) Copyright 2000-2002 by Martin Pekar, +// this program is provided under the terms of GNU GPL v.2, see file COPYING for more information. +// Improvements by Vedran Ljubovic (c) 2005. + + +#include "logoutdialog.h" +#include +/*#include +#include + +#include // X stuff +#include +#include // icons*/ + +#include +#include + +#include // X stuff +#include +#include // icons + +// widgets +fltk::Window* windowLogoutDialog; +fltk::Round_Button* logoutRadioItemLogoutDialog; +fltk::Round_Button* restartRadioItemLogoutDialog; +fltk::Round_Button* shutdownRadioItemLogoutDialog; + +// graphics +static fltk::Image penguin_pix((const char **)penguin_xpm); + +// globals +bool dmAvailable; +char *xdm_fifo; +bool canShutdown; +bool sdForceNow; +bool sdTryNow; + + +// This function looks what a user can do and sets other +// global variables +void checkPermissions() +{ + char* xdm_env = getenv("XDM_MANAGED"); + if (strcmp(xdm_env,"") == 0) + dmAvailable = false; + else + dmAvailable = true; + + // shutting down via XDM fifo + if (dmAvailable) { +// Fl_String_List xdm_env_list = Fl_String_List(xdm_env,","); +// xdm_fifo = xdm_env_list.item(0); + xdm_fifo = strtok(xdm_env, ","); + if (xdm_fifo[0] != '/') { // broken config + dmAvailable = false; + xdm_fifo = strdup(""); + } + + canShutdown = sdForceNow = sdTryNow = false; + char* token; + while (token = strtok(NULL, ",") { + if (strcmp(token,"maysd") == 0) canShutdown = true; + if (strcmp(token,"fn") == 0) sdForceNow = true; + if (strcmp(token,"tn") == 0) sdTryNow = true; + } + } + + // the old way + if (!dmAvailable) { + // shutdown cmd with no params shouldn't do anything... + if (fltk::start_child_process("shutdown") == 127) + canShutdown = false; + } +} + + +// Logout using XDM messaging +void newLogoutFunction() { + + if ((logoutRadioItemLogoutDialog->value()==0) && + (restartRadioItemLogoutDialog->value()==0) && + (shutdownRadioItemLogoutDialog->value() == 0)) + // this shoudn't happen... + return; + + if (restartRadioItemLogoutDialog->value()==1) + { + if (!canShutdown) { + fltk::alert (_("You are not allowed to restart !")); + return; + } + + FILE *fd = fopen(xdm_fifo, "w"); + char* method; + if (sdForceNow) + method = strdup("shutdown\treboot\tforcenow\n"); + else if (sdTryNow) + method = strdup("shutdown\treboot\ttrynow\n"); + else + method = strdup("shutdown\treboot\tschedule\n"); + fputs (method, fd); + fclose (fd); + } + + if (shutdownRadioItemLogoutDialog->value() == 1) + { + if (!canShutdown) { + fltk::alert (_("You are not allowed to shutdown !")); + return; + } + + FILE *fd = fopen(xdm_fifo, "w"); + char* method; + if (sdForceNow) + method = strdup("shutdown\thalt\tforcenow\n"); + else if (sdTryNow) + method = strdup("shutdown\thalt\ttrynow\n"); + else + method = strdup("shutdown\thalt\tschedule\n"); + fputs ((char *)method, fd); + fclose (fd); + } + + XCloseDisplay(fltk::display); + //XSetCloseDownMode(fl_display, DestroyAll); + XKillClient(fltk::display, AllTemporary); + //XUngrabServer(fl_display); + //fl_close_display(); + exit(0); +} + + +// "brute force" logout function +// (in case XDM is not available) +void oldLogoutFunction() { + if (logoutRadioItemLogoutDialog->value()==1) + { + XCloseDisplay(fltk::display); + //XSetCloseDownMode(fl_display, DestroyAll); + XKillClient(fltk::display, AllTemporary); + //XUngrabServer(fl_display); + //fl_close_display(); + exit(0); + } + + if (restartRadioItemLogoutDialog->value()==1) + { + if(fltk::start_child_process( "shutdown -r now" ) != 0) + fltk::alert("You are not alowed to reboot !"); + } + + if (shutdownRadioItemLogoutDialog->value() == 1) + { + if(fltk::start_child_process( "shutdown -h now" ) != 0) + fltk::alert("You are not alowed to shutdown !"); + } +} + + +// Determine logout type +void LogoutFunction(fltk::Widget *, void *) { + if (dmAvailable) + newLogoutFunction(); + else + oldLogoutFunction(); +} + + + +// Main logout UI and control +static void cb_Cancel(fltk::Button*, void*) { + windowLogoutDialog->hide(); +} + +void LogoutDialog(fltk::Widget*, void *) { + // first see what options are available + checkPermissions(); + + // draw GUI + fltk::Window* w; + { + fltk::Window* o = windowLogoutDialog = new fltk::Window(171, 160, 330, 190, _("Logout")); + w = o; + { + fltk::Group* o = new fltk::Group(5, 12, 55, 45); + o->image(penguin_pix); + o->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE); + o->end(); + } + { + fltk::Round_Button* o = logoutRadioItemLogoutDialog = new fltk::Round_Button(80, 67, 225, 20, _("&logout from the current session")); + o->type(fltk::Round_Button::RADIO); + o->value(1); + o->tooltip(_("Logout from the current session.")); + } + { + fltk::Round_Button* o = restartRadioItemLogoutDialog = new fltk::Round_Button(80, 88, 225, 20, _("&restart the computer")); + o->type(fltk::Round_Button::RADIO); + if (canShutdown) + o->tooltip(_("Restart the computer.")); + else { + o->tooltip(_("Restart the computer. You do not have privileges to do that.")); + o->deactivate(); + } + } + { + fltk::Round_Button* o = shutdownRadioItemLogoutDialog = new fltk::Round_Button(80, 110, 225, 20, _("&shut down the computer")); + o->type(fltk::Round_Button::RADIO); + if (canShutdown) + o->tooltip(_("Shut down the computer.")); + else { + o->tooltip(_("Shut down the computer. You do not have privileges to do that.")); + o->deactivate(); + } + } + { + fltk::Button* o = new fltk::Button(85, 157, 80, 25, _("&OK")); + o->callback((fltk::Callback*)LogoutFunction); + } + { + fltk::Button* o = new fltk::Button(170, 157, 80, 25, _("&Cancel")); + o->callback((fltk::Callback*)cb_Cancel); + } + { + fltk::Box* o = new fltk::Box(65, 7, 260, 63, _("Logout, restart or shut down the computer?")); + o->label_size(18); + o->align(132|fltk::ALIGN_INSIDE); + } + + new fltk::Divider(60, 130, 210, 20, ""); + o->x( Fl::info().w/2 - (o->w()/2) ); + o->y( (Fl::info().h/2) - (o->h()/2) ); + o->set_modal(); + o->end(); + } + windowLogoutDialog->end(); + windowLogoutDialog->show(); +} diff --git a/eworkpanel/logoutdialog.fld b/eworkpanel/logoutdialog.fld new file mode 100755 index 0000000..e37f215 --- /dev/null +++ b/eworkpanel/logoutdialog.fld @@ -0,0 +1,76 @@ +# data file for the FLTK User Interface Designer (FLUID) +version 2,0003 +images_dir ./ +i18n +header_name {.h} +code_name {.cpp} +gridx 5 +gridy 5 +snap 3 +decl {// Work Panel for EDE is (C) Copyright 2000-2002 by Martin Pekar, this program is provided under the terms of GNU GPL v.2, see file COPYING for more information.} {} + +decl {\#include } {} + +decl {\#include } {} + +decl {\#include } {} + +Function {LogoutFunction(Fl_Widget *, void *)} {selected return_type void +} { + code {if (logoutRadioItemLogoutDialog->value()==1) { + exit(0); +} +if (restartRadioItemLogoutDialog->value()==1) + fl_start_child_process( "shutdown -r now" ); +if (shutdownRadioItemLogoutDialog->value() == 1) + fl_start_child_process( "shutdown -h now" );} {} +} + +Function {LogoutDialog(Fl_Widget*, void *)} {return_type void +} { + Fl_Window windowLogoutDialog { + label Logout open + xywh {171 160 330 190} set_xy hide + extra_code {o->x( Fl::info().w/2 - (o->w()/2) ); +o->y( (Fl::info().h/2) - (o->h()/2) );} modal + } { + Fl_Group {} {open + xywh {5 12 55 45} align 16 image {icons/penguin.xpm} + } {} + Fl_Round_Button logoutRadioItemLogoutDialog { + label {&logout from the current session} + tooltip {Logout from the current session.} + xywh {80 67 225 20} type RADIO value 1 + } + Fl_Round_Button restartRadioItemLogoutDialog { + label {&restart the computer} + tooltip {Restart the computer. This action is only allowed to "root" user!} + xywh {80 88 225 20} type RADIO + } + Fl_Round_Button shutdownRadioItemLogoutDialog { + label {&shut down the computer} + tooltip {Shut down the computer. This action is only allowed to "root" user!} + xywh {80 110 225 20} type RADIO + } + Fl_Button {} { + label {&OK} + callback LogoutFunction + private xywh {85 157 80 25} + } + Fl_Button {} { + label {&Cancel} + callback {windowLogoutDialog->hide();} + private xywh {170 157 80 25} + } + Fl_Box {} { + label {Logout, restart or shut down the computer?} + private xywh {65 7 260 63} align 148 label_size 18 + } + Fl_Divider {} { + label label + xywh {60 130 210 20} + } + } + code {windowLogoutDialog->end(); +windowLogoutDialog->show();} {} +} diff --git a/eworkpanel/logoutdialog.h b/eworkpanel/logoutdialog.h new file mode 100755 index 0000000..7320e0d --- /dev/null +++ b/eworkpanel/logoutdialog.h @@ -0,0 +1,40 @@ +// generated by Fast Light User Interface Designer (fluid) version 2,0003 + +#ifndef logoutdialog_h +#define logoutdialog_h + + +/*#include +#include +#include +#include +#include +#include +#include +#include */ + +#include +#include "NLS.h" +#include +#include +#include +#include +#include +#include + +#include "icons/penguin.xpm" + + +// which of these can be safely removed? what should be extern and +// what shouldn't? + +extern fltk::Window* windowLogoutDialog; +extern fltk::Round_Button* logoutRadioItemLogoutDialog; +extern fltk::Round_Button* restartRadioItemLogoutDialog; +extern fltk::Round_Button* shutdownRadioItemLogoutDialog; +void LogoutFunction(fltk::Widget *, void *); +extern void LogoutFunction(fltk::Button*, void*); +void LogoutDialog(fltk::Widget*, void *); + + +#endif diff --git a/eworkpanel/mainmenu.cpp b/eworkpanel/mainmenu.cpp new file mode 100755 index 0000000..b581356 --- /dev/null +++ b/eworkpanel/mainmenu.cpp @@ -0,0 +1,481 @@ +#include "mainmenu.h" +#include "menu.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +fltk::Pixmap ede_pix((const char **)ede_small2_xpm); +fltk::Pixmap programs_pix((const char **)programs_xpm); +fltk::Pixmap find_pix((const char **)find_xpm); +fltk::Pixmap run_pix((const char **)run_xpm); + +// strdupcat() - it's cool to strcat with implied realloc +// -- NOTE: due to use of realloc *always* use strdupcat return value: +// dest = strdupcat(dest,src); +// and *never* use it like: +// strdupcat(dest,src); +char *strdupcat(char *dest, const char *src) +{ + if (!dest) { + dest=(char*)malloc(strlen(src)); + } else { + dest=(char*)realloc (dest, strlen(dest)+strlen(src)+1); + } + strcat(dest,src); + return dest; +} + + +/////////////////////////// +extern EDE_Config pGlobalConfig; + +MainMenu::MainMenu() + : fltk::Menu_Button(0,0,0,0, "Start") +{ + layout_align(fltk::ALIGN_LEFT); + + label_font(label_font()->bold()); + label_size(label_size()+2); + + m_modified = 0; + e_image = 0; + m_open = false; + + bool showusername; + pGlobalConfig.get("Panel", "ShowUsernameOnMenu", showusername, false); + struct passwd *PWD; + /* Search for an entry with a matching user ID. */ + PWD = getpwuid(getuid()); + if(showusername && PWD && PWD->pw_name && *PWD->pw_name) { + label(PWD->pw_name); + } else { + label("EDE"); + } + + tooltip(_("Welcome to the Equinox Desktop Environment.")); +} + +MainMenu::~MainMenu() +{ + if(e_image) + delete e_image; +} + +int MainMenu::calculate_height() const +{ + fltk::Style *s = fltk::Style::find("Menu"); + int menuheight = s->box->dh(); + for(int n=0; nvisible()) continue; + + fltk::font(i->label_font(), i->label_size()); + menuheight += i->height()+s->leading; + } + return menuheight; +} + +void MainMenu::draw() +{ + fltk::Boxtype box = this->box(); + fltk::Flags flags; + fltk::Color color = this->color(); + fltk::Color lcolor = label_color(); + if (!active_r()) + { + flags = fltk::INACTIVE; + } + else if (belowmouse()) { + flags = fltk::HIGHLIGHT; + color = fltk::lighter(color); + lcolor = fltk::lighter(label_color()); + if(!color) color = this->color(); + if(!lcolor) color = this->label_color(); + } + else if (m_open) { + flags = fltk::HIGHLIGHT|fltk::VALUE; + color = fltk::lighter(color); + lcolor = fltk::lighter(label_color()); + if(!color) color = this->color(); + if(!lcolor) color = this->label_color(); + } else { + flags = 0; + } + box->draw(0, 0, this->w(), this->h(), color, flags); + + int X=0, Y=0, W=w(), H=h(); + box->inset(X,Y,W,H); + + if(image()) { + int imY = (h()/2)-(image()->height()/2); + image()->draw(6, imY, image()->width(), image()->height(), flags); + X+=image()->width()+6; + } else { + X += 4; + W -= 4; + } + + fltk::font(label_font(), label_size()); + label_type()->draw(label(), X, Y, W-X, H, lcolor, flags|fltk::ALIGN_LEFT); +} + +void MainMenu::layout() +{ + fltk::font(label_font(), label_size()); + int W = int(fltk::width(label())) + 12; + int H = h(); + int im_size = H-6; + + if(!e_image || (e_image && e_image->height()!=im_size)) { + if(e_image) delete e_image; + if(ede_pix.height()==im_size) { + e_image=0; + image(ede_pix); + } + else { + e_image = ede_pix.scale(im_size, im_size); + image(e_image); + } + } + if(image()) W+=image()->width(); + + w(W); + fltk::Menu_Button::layout(); +} + +void MainMenu::clear_favourites() +{ + static char* favourites; + if(!favourites || strcmp(favourites,"")==0) { + favourites = strdupcat(favourites,fltk::homedir()); + favourites = strdupcat(favourites,"/.ede/favourites/"); + + if(!fltk::file_exists(favourites)) { + mkdir( favourites, 0777 ); + } + } + + dirent **files; + int pNumFiles = fltk::filename_list(favourites, &files); + + if (pNumFiles > 10) + { + for (int i=0; i<(pNumFiles-10); i++) { + if (strcmp(files[i]->d_name, ".") != 0 && strcmp(files[i]->d_name, "..") != 0 ) { + char* filename = strdup(favourites); + filename = strdupcat(filename,files[i]->d_name); + unlink(filename); + free(filename); + } + } + } + + for(int i = 0; i < pNumFiles; i++) + free(files[i]); + + if(pNumFiles && files) + free(files); +} + +/* + %f a single file name, even if multiple files are selected. + The system reading the Desktop Entry should recognize that + the program in question cannot handle multiple file arguments, + and it should should probably spawn and execute multiple copies + of a program for each selected file if the program is not + able to handle additional file arguments. If files are not on + the local file system (i.e. HTTP or FTP locations), the files will + be copied to the local file system and %f will be expanded to point + at the temporary file. Used for programs that do not understand URL syntax. + + %F a list of files. Use for apps that can open several local files at once. + %u a single URL. + %U a list of URLs. + %d the directory of the file to open. + %D a list of directories + %n a single filename (without path) + %N a list of filenames (without path) + %i the icon associated with the desktop entry + %m the mini-icon associated with the desktop entry + %c the comment associated with the desktop entry + %k the name of the desktop file + %v the name of the Device entry in the desktop file + */ + +// This function is now implemented in elauncher +void MainMenu::resolve_program(char* cmd) +{ + char pRun[FL_PATH_MAX]; + + snprintf(pRun, sizeof(pRun)-1, "elauncher \"%s\"", cmd); + fltk::start_child_process(pRun, false); +} + +fltk::Image *MainMenu::find_image(const char* icon) const +{ + char* iconpath = strdup(fltk::file_expand(icon)); + + fltk::Image *im=0; + + if(fltk::file_exists(iconpath)) + im = fltk::Image::read(iconpath); + + if(!im) { + free(iconpath); + iconpath = strdup(PREFIX"/share/ede/icons/16x16/"); + iconpath = strdupcat(icon); + im = fltk::Image::read(iconpath); + } + free(iconpath); + + if(im && (im->width()!=16 || im->height()!=16)) { + fltk::Image *scaled = im->scale(16, 16); + if(scaled) { + delete im; + im = scaled; + } + } + + return im; +} + +/* +g->dir(PREFIX"/share/ede/programs"); +i->exec("ehelpbook "PREFIX"/share/ede/doc/index.html"); +*/ +enum { + ITEM_NONE = 0, + ITEM_EXEC, + ITEM_APPDIR, + ITEM_SUBDIR, + ITEM_FILEBROWSER, + ITEM_DIVIDER +}; + +int str_to_type(char* str) +{ + if(strcmp(str,"Exec")==0) return ITEM_EXEC; + else if(strcmp(str,"AppDir")==0) return ITEM_APPDIR; + else if(strcmp(str,"SubDir")==0) return ITEM_SUBDIR; + else if(strcmp(str,"FileBrowser")==0) return ITEM_FILEBROWSER; + else if(strcmp(str,"Divider")==0) return ITEM_DIVIDER; + return ITEM_NONE; +} + +bool is_group_item(int t) { return (t==ITEM_APPDIR || t==ITEM_SUBDIR || t==ITEM_FILEBROWSER); } + +char* MainMenu::get_item_name(Fl_XmlNode *node) +{ + char* name = strdup(""); + for(int n=0; nchildren(); n++) { + fltk::XmlNode *np = node->child(n); + if(np->is_element() && np->name()=="Name") { + char* lang = strdup(np->get_attribute("Lang")); + if(strcmp(lang,"")==0 && (strlen(name)==0)) { + free(name); + name=strdup(""); + np->text(name); + } else if(strcmp(lang,locale())==0) { + free(name); + name=strdup(""); + np->text(name); + break; + } + } + } + return name; +} + +char* MainMenu::get_item_dir(Fl_XmlNode *node) +{ + char* dir = strdup(node->get_attribute("Dir")); + + if(strcmp(dir,"$DEFAULT_PROGRAMS_DIR")==0) { + free(dir); + dir = strdup(PREFIX"/share/ede/programs"); + } + + return fltk::file_expand(dir); +} + +// THIS MUST BE CHANGED ASAP! +#include "logoutdialog.h" +#include "aboutdialog.h" +void MainMenu::set_exec(EItem *i, const char* exec) +{ + if(strcmp(exec,"$LOGOUT")==0) + i->callback((fltk::Callback*)LogoutDialog); + else if(strcmp(exec,"$ABOUT")==0) + i->callback((fltk::Callback *)AboutDialog); + else + i->exec(exec); +} + +void MainMenu::build_menu_item(fltk::XmlNode *node) +{ + if(!node) return; + + int type = str_to_type(node->get_attribute("Type")); + if(type==ITEM_NONE) return; + + fltk::Widget *w=0; + EItemGroup *g=0; + EItem *i=0; + + switch(type) { + case ITEM_EXEC: + i = new EItem(this); + i->callback((fltk::Callback*)cb_exec_item); + set_exec(i, node->get_attribute("Exec")); + i->image(run_pix); + w = (fltk::Widget *)i; + break; + + case ITEM_APPDIR: + g = new EItemGroup(this, APP_GROUP); + g->image(programs_pix); + g->dir(get_item_dir(node)); + break; + + case ITEM_SUBDIR: + g = new EItemGroup(this, APP_GROUP); + g->image(programs_pix); + break; + + case ITEM_FILEBROWSER: + g = new EItemGroup(this, BROWSER_GROUP); + g->dir(get_item_dir(node)); + g->image(find_pix); + break; + + case ITEM_DIVIDER: + w = (fltk::Widget *)new fltk::Menu_Divider(); + break; + } + + if(g) { + g->begin(); + w = (fltk::Widget*)g; + } + + fltk::Image *im=0; + if(node->has_attribute("Icon")) { + im = find_image(node->get_attribute("Icon")); + } else { + char* im_path = strdup(node->get_attribute("Exec")); + im_path = strdupcat(im_path,".png"); + im = find_image(im_path); + } + if(im) w->image(im); + + char* label = strdup(get_item_name(node)); + w->label(label); + + for(int n=0; nchildren(); n++) { + fltk::XmlNode *np = node->child(n); + if((np->is_element() || np->is_leaf()) && np->name()=="Item") + build_menu_item(np); + } + + if(w->is_group()) + ((fltk::Group*)w)->end(); +} + +void MainMenu::init_entries() +{ + // Update locale + m_locale = setlocale(LC_ALL, NULL); + int pos = m_locale.rpos('_'); + if(pos>0) m_locale.sub_delete(pos, m_locale.length()-pos); + if(m_locale=="C" || m_locale=="POSIX") m_locale.clear(); + + const char *file = find_config_file("ede_mainmenu.xml", true); + + struct stat s; + if(lstat(file, &s) == 0) { + if(!m_modified) m_modified = s.st_mtime; + if(m_modified != s.st_mtime) { + //file has changed.. + m_modified = s.st_mtime; + clear(); + } + } + + if(children()>0) return; + + FILE *fp = fopen(file, "r"); + if(!fp) { + fltk::warning("Menu not found, creating default.."); + try { + fltk::Buffer buf; + buf.append(default_menu, strlen(default_menu)); + buf.save_file(file); + } catch(fltk::Exception &e) { + fltk::warning(e.text()); + } + fp = fopen(file, "r"); + if(!fp) fltk::fatal("Cannot write default menu."); + } + fltk::XmlLocator locator; + + fltk::XmlDoc *doc=0; + if(fp) { + try { + doc = fltk::XmlParser::create_dom(fp, &locator, false); + } catch(fltk::XmlException &exp) { + char* error = strdup(exp.text()); + error = strdupcat(error,"\n\n"); + error = strdupcat(error,fltk::XmlLocator::error_line(file, *exp.locator())); + error = strdupcat(error,"\n"); + fltk::warning(error); + } + } + + if(!doc) { + // One more try! + try { + fltk::Buffer buf; + buf.append(default_menu, strlen(default_menu)); + doc = fltk::XmlParser::create_dom(buf.data(), buf.bytes(), &locator, false); + } catch(fltk::Exception &e) { + fltk::fatal("Cannot open menu! [%s]", e.text().c_str()); + } + } + + if(doc) { + begin(); + + fltk::XmlNode *node = doc->root_node(); + if(node) { + for(int n=0; nchildren(); n++) { + fltk::XmlNode *np = node->child(n); + if((np->is_element() || np->is_leaf()) && np->name()=="Item") + build_menu_item(np); + } + } + + end(); + } +} + +int MainMenu::popup(int X, int Y, int W, int H) +{ + if(fltk::event_button()==1) { + m_open = true; + init_entries(); + int ret = fltk::Menu_::popup(X, Y-calculate_height()-h()-1, W, H); + clear(); + m_open = false; + return ret; + } + return 0; +} diff --git a/eworkpanel/mainmenu.h b/eworkpanel/mainmenu.h new file mode 100755 index 0000000..5bfef6d --- /dev/null +++ b/eworkpanel/mainmenu.h @@ -0,0 +1,73 @@ +#ifndef _MAINMENU_H_ +#define _MAINMENU_H_ + +/*#include + +#include +#include +#include +#include +#include +#include +#include +#include */ + +#include + +#include +#include "EDE_Config.h" +#include +#include +#include +#include +#include +#include + +#include + +#include "item.h" + +class MainMenu : public fltk::Menu_Button +{ +public: + MainMenu(); + ~MainMenu(); + + int popup(int X, int Y, int W, int H); + + void draw(); + void layout(); + + void init_entries(); + + char* get_item_dir(fltk::XmlNode *node); + char* get_item_name(fltk::XmlNode *node); + + void set_exec(EItem *i, const char* exec); + void build_menu_item(fltk::XmlNode *node); + + int calculate_height() const; + + fltk::Image *find_image(const char* icon) const; + + void scan_programitems(const char *path); + void scan_filebrowser(const char* path); + + const char* locale() const { return m_locale; } + + static void resolve_program(char* cmd); + static void clear_favourites(); + + bool is_open() { return m_open; } + +private: + static inline void cb_exec_item(EItem *i, void *d) { i->menu()->resolve_program(i->exec()); } + + fltk::Image *e_image; + + char* m_locale; + long m_modified; + bool m_open; +}; + +#endif diff --git a/eworkpanel/mainmenu_scan.cpp b/eworkpanel/mainmenu_scan.cpp new file mode 100755 index 0000000..bc7d93a --- /dev/null +++ b/eworkpanel/mainmenu_scan.cpp @@ -0,0 +1,227 @@ +#include "mainmenu.h" +#include "item.h" + +#include +fltk::Pixmap file_pix(file_xpm); + +extern fltk::Pixmap programs_pix; +extern fltk::Pixmap run_pix; + +static void cb_file_item(EItem *item, void *) +{ + char* pFavouriteFile = strdup(fltk::homedir()); + pFavouriteFile = strdupcat(pFavouriteFile"/.ede/favourites/"); + pFavouriteFile = strdupcat(pFavouriteFile,fltk::file_filename(item->filename())); + + EDE_Config pItemConfig(item->filename(), true, false); + char* cmd; + if(!pItemConfig.get("Desktop Entry", "Exec", cmd, "")) + { + MainMenu::clear_favourites(); + symlink(item->filename(), pFavouriteFile); + MainMenu::resolve_program(cmd); + } + free(pFavouriteFile); +} + +static void cb_open_dir(fltk::Widget *w, void *) +{ + EItemGroup *g = (EItemGroup *)w->parent(); + + EDE_Config conf(fltk::find_config_file("ede.conf", false)); + char* term; + conf.get("Terminal", "Terminal", term, 0); + if(term.empty()) + term = "xterm"; + + char* cmd = strdup("cd "); + cmd = strdupcat(cmd,g->dir()); + cmd = strdupcat("; "); + cmd = strdupcat(term); + + fltk::start_child_process(cmd, false); + free(term); + free(cmd); +} + +void MainMenu::scan_filebrowser(const char* path) +{ + EItem *i = new EItem(this, _("Open Directory..")); + i->callback(cb_open_dir); + i->image(run_pix); + + new fltk::Menu_Divider(); + + EItemGroup *mNewGroup=0; + struct dirent **files; + int count = fltk::filename_list(path, &files); + + int n; + for(n=0; nd_name, ".") || !strcmp(files[n]->d_name, "..") || !strcmp(files[n]->d_name, "CVS") ) + { + free((char*)files[n]); + files[n] = 0; + continue; + } + + char* filename = strdup(path); + filename = strdupcat(filename,"/"); + filename = strdupcat(filename,files[n]->d_name); + + if(fltk::is_dir(filename)) { + mNewGroup = new EItemGroup(this, BROWSER_GROUP); + mNewGroup->label(files[n]->d_name); + mNewGroup->image(programs_pix); + mNewGroup->dir(filename); + + mNewGroup->end(); + + if(access(filename, R_OK)) { + mNewGroup->label_color(fltk::inactive(FL_RED)); + mNewGroup->access(false); + } + free((char*)files[n]); + files[n] = 0; + } + free(filename); + } + + for(n=0; nd_name, ".") && strcmp(files[n]->d_name, "..")) + { + char* filename = strdup(path); + filename = strdupcat(filename, "/"); + filename = strdupcat(files[n]->d_name); + + EItem *mNewItem = new EItem(this); + mNewItem->type(EItem::FILE); + mNewItem->image(file_pix); + mNewItem->copy_label(files[n]->d_name); + + if(access(filename, R_OK)) { + mNewItem->label_color(fl_inactive(FL_RED)); + } + free(filename); + } + free((char*)files[n]); + } + + if(count>0 && files) free((char**)files); +} + +void MainMenu::scan_programitems(const char *path) +{ + EItemGroup *mNewGroup; + char* NameEntry; + bool added = false; + + char* localizedName; + if(strlen(locale())>0) + sprintf(localizedName,"Name[%s]", locale()); + else + localizedName = strdup("Name"); + + struct dirent **files; + int count = fltk::filename_list(path, &files); + + int n; + for(n=0; nd_name, ".") && strcmp(files[n]->d_name, "..") && strcmp(files[n]->d_name, "CVS") ) + { + char* filename = strdup(path); + filename = strdupcat(filename,"/"); + filename = strdupcat(filename,files[n]->d_name); + + if(fltk::is_dir(filename)) + { + added=true; + mNewGroup = new EItemGroup(this, APP_GROUP); + mNewGroup->image(programs_pix); + mNewGroup->dir(filename); + + char* locale_file = strdup(filename); + locale_file = strdupcat(locale_file,"/.directory"); + + EDE_Config pLocConfig(locale_file, true, false); + pLocConfig.set_section("Desktop Entry"); + + if(!pLocConfig.read(localizedName, NameEntry, "")) { + // Localized name + mNewGroup->label(NameEntry); + } else { + if(!pLocConfig.read("Name", NameEntry, "")) { + // Default name + mNewGroup->label(NameEntry); + } else { + // Fall back to directory name + mNewGroup->label(files[n]->d_name); + } + } + mNewGroup->end(); + + free(files[n]); + files[n] = 0; + free(locale_file); + } + free(filename); + } + } + + for(n=0; nd_name, ".") && strcmp(files[n]->d_name, "..") && strstr(files[n]->d_name, ".desktop")) + { + char* filename=strdup(path); + filename = strdupcat(filename,"/"); + filename = strdupcat(filename,files[n]->d_name); + + // we check first for localised names... + EDE_Config ItemConfig(filename, true, false); + ItemConfig.set_section("Desktop Entry"); + + bool noDisplay = false; + ItemConfig.read("NoDisplay", noDisplay); + if(noDisplay) continue; + + if(ItemConfig.read(localizedName, NameEntry, "")) { + ItemConfig.read("Name", NameEntry, ""); + } + + if(!ItemConfig.error() && !NameEntry.empty()) + { + added=true; + EItem *mNewItem = new EItem(this); + mNewItem->type(EItem::FILE); + mNewItem->label(NameEntry); + mNewItem->filename(filename); + mNewItem->callback((fltk::Callback *)cb_file_item, 0); + + if(!ItemConfig.read("Icon", NameEntry, "")) + mNewItem->image(find_image(NameEntry)); + + if(!mNewItem->image()) + mNewItem->image(file_pix); + + if(!ItemConfig.read("Exec", NameEntry, "")) + mNewItem->exec(NameEntry); + } + free(filename); + } + if(files[n]) free(files[n]); + } + + if(count>0 && files) free(files); + if(!added) + Fl_Divider *mDivider = new Fl_Divider(); + + free(localizedName); + free(NameEntry); +} diff --git a/eworkpanel/menu.h b/eworkpanel/menu.h new file mode 100755 index 0000000..afe0941 --- /dev/null +++ b/eworkpanel/menu.h @@ -0,0 +1,57 @@ +#include +static const char default_menu[] = +"\n\ +

    \n\ +\n\ + \n\ + Programs\n\ + \n\ + \n\ + User Programs\n\ + \n\ + \n\ + \n\ + Favourites\n\ + \n\ + \n\ + Find\n\ + \n\ + \n\ + Help\n\ + \n\ + \n\ + About\n\ + \n\ + \n\ + Run\n\ + \n\ + \n\ + \n\ + Quick Browser\n\ + \n\ + \n\ + Panel\n\ + \n\ + Control Panel\n\ + \n\ + \n\ + Menu Editor\n\ + \n\ + \n\ + Install New Software\n\ + \n\ + \n\ + \n\ + \n\ + Lock\n\ + \n\ + \n\ + Logout\n\ + \n\ +\n"; diff --git a/eworkpanel/panelbutton.cpp b/eworkpanel/panelbutton.cpp new file mode 100755 index 0000000..da9d5fb --- /dev/null +++ b/eworkpanel/panelbutton.cpp @@ -0,0 +1,166 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include +/*#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include + +#include "panelbutton.h" + +extern fltk::Widget* fl_did_clipping; + + +// class PanelMenu +// This is a standard eworkpanel applet class. It is a button that pops +// up menu when pressed. Typical use is workspace switcher. + +PanelMenu::PanelMenu(int x, int y, int w, int h, fltk::Boxtype up_c, fltk::Boxtype down_c, const char *label) + : fltk::Menu_Button(x, y, w, h, label) +{ + m_open = false; + Height = 0; + up = up_c; + down = down_c; + + anim_speed(2); + anim_flags(BOTTOM_TO_TOP); + accept_focus(false); +} + + +// This function is modified from Fl_Menu_Button + +void PanelMenu::draw() +{ + fltk::Boxtype box = up; + fltk::Flags flags; + fltk::Color color; + + if (!active_r()) { + // Button is disabled + flags = fltk::INACTIVE; + color = this->color(); + } else if (m_open) { + // Menu is open, make the button pushed and highlighted + flags = fltk::HIGHLIGHT; + color = highlight_color(); + if (!color) color = this->color(); + box = down; + } else if (belowmouse()) { + // Menu is not open, but button is below mouse - highlight + flags = fltk::HIGHLIGHT; + color = highlight_color(); + if (!color) color = this->color(); + } else { + // Plain + flags = 0; + color = this->color(); + } + + if(!box->fills_rectangle()) { + fltk::push_clip(0, 0, this->w(), this->h()); + parent()->draw_group_box(); + fltk::pop_clip(); + } + + box->draw(0, 0, this->w(), this->h(), color, flags); + + int x,y,w,h; + x = y = 0; + w = this->w(); h = this->h(); + box->inset(x,y,w,h); + draw_inside_label(x,y,w,h,flags); +} + + +// Used to properly redraw menu + +void PanelMenu::calculate_height() +{ + fltk::Style *s = fltk::Style::find("Menu"); + Height = s->box->dh(); + for(int n=0; nvisible()) continue; + fltk::font(i->label_font(), i->label_size()); + Height += i->height()+s->leading; + } +} + + +// Popup the menu. Global property m_open is useful to detect +// if the menu is visible, e.g. to disable autohiding panel. + +int PanelMenu::popup() +{ + m_open = true; + redraw(); // push down button + calculate_height(); + int retval = fltk::Menu_::popup(0, 0-Height);//, w(), h()); + m_open = false; + redraw(); + return retval; +} + + +// class PanelButton +// A simplified case of PanelMenu - by Vedran +// Used e.g. by show desktop button + +PanelButton::PanelButton(int x, int y, int w, int h, fltk::Boxtype up_c, fltk::Boxtype down_c, const char *label) + : fltk::Button(x, y, w, h, label) +{ +// Height = 0; + up = up_c; + down = down_c; + accept_focus(false); +} + + +void PanelButton::draw() +{ + fltk::Boxtype box = up; + fltk::Flags flags; + fltk::Color color; + + if (belowmouse()) + { + // Highlight button when below mouse + flags = fltk::HIGHLIGHT; + color = highlight_color(); + if (!color) color = this->color(); +// box = down; + } else { + flags = 0; + color = this->color(); + } + + if (value()) box=down; // Push down button when pressed + + if(!box->fills_rectangle()) { + fltk::push_clip(0, 0, this->w(), this->h()); + parent()->draw_group_box(); + fltk::pop_clip(); + } + + box->draw(0, 0, this->w(), this->h(), color, flags); + + int x,y,w,h; + x = y = 0; + w = this->w(); h = this->h(); + box->inset(x,y,w,h); + draw_inside_label(x,y,w,h,flags); +} diff --git a/eworkpanel/panelbutton.h b/eworkpanel/panelbutton.h new file mode 100755 index 0000000..6155e44 --- /dev/null +++ b/eworkpanel/panelbutton.h @@ -0,0 +1,58 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#ifndef panelbutton_h +#define panelbutton_h + +/*#include +#include +#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include +#include +#include + +class PanelMenu : public fltk::Menu_Button +{ +public: + PanelMenu(int, int, int, int, fltk::Boxtype, fltk::Boxtype, const char *l=0); + void calculate_height(); + + virtual void draw(); + virtual int popup(); + + virtual void preferred_size(int &w, int &h) const { w=this->w(); } + + bool is_open() { return m_open; } + +private: + int Height; + fltk::Boxtype up, down; + bool m_open; +}; + +class PanelButton : public fltk::Button +{ +public: + PanelButton(int, int, int, int, fltk::Boxtype, fltk::Boxtype, const char *l=0); + + virtual void draw(); + + virtual void preferred_size(int &w, int &h) const { w=this->w(); } + +private: + int Height; + fltk::Boxtype up, down; +}; + +#endif diff --git a/eworkpanel/taskbutton.cpp b/eworkpanel/taskbutton.cpp new file mode 100755 index 0000000..fa9818f --- /dev/null +++ b/eworkpanel/taskbutton.cpp @@ -0,0 +1,463 @@ +#include "taskbutton.h" + +#include +#include + +/*#include +#include +#include +#include +#include +#include +#include */ +#include +#include +#include +#include "EDE_Config.h" +#include +#include +#include + +#include "../edewm/Windowmanager.h" + +fltk::Menu_ *TaskButton::menu = 0; +TaskButton *TaskButton::pushed = 0; + +int calculate_height(fltk::Menu_ *m) +{ + fltk::Style *s = fltk::Style::find("Menu"); + int Height = s->box->dh(); + for(int n=0; nchildren(); n++) + { + fltk::Widget *i = m->child(n); + if(!i) break; + if(!i->visible()) continue; + fltk::font(i->label_font(), i->label_size()); + Height += i->height()+s->leading; + } + return Height; +} + +void task_button_cb(TaskButton *b, Window w) +{ + if(fltk::event_button()==fltk::RIGHT_MOUSE) { + TaskButton::pushed = b; + + TaskButton::menu->color(b->color()); + TaskButton::menu->popup(fltk::event_x(), fltk::event_y()-calculate_height(TaskButton::menu)); + + } else { + if(TaskBar::active==w) { + XIconifyWindow(fltk::display, w, fltk::screen); + XSync(fltk::display, True); + TaskBar::active = 0; + } else { + Fl_WM::set_active_window(w); + } + } +} + +#define CLOSE 1 +#define KILL 2 +#define MIN 3 +//#define MAX 4 +#define SET_SIZE 5 +#define RESTORE 6 + +void menu_cb(fltk::Menu_ *menu, void *) +{ + // try to read information how much window can be maximized + EDE_Config wm_config(find_config_file("wmanager.conf", true)); + +//pGlobalConfig.get("Panel", "RunHistory", historyString,""); + Window win = TaskButton::pushed->argument(); + int ID = menu->item()->argument(); + int x, y, width, height, title_height; + + wm_config.get("TitleBar", "Height",title_height); + + switch(ID) { + + case CLOSE: + if(Fl_WM::close_window(win)) + break; + // Fallback to kill.. + + case KILL: + XKillClient(fl_display, win); + break; + + case MIN: + XIconifyWindow(fltk::display, win, fltk::screen); + XSync(fltk::display, True); + TaskBar::active = 0; + break; + + /*case MAX: + // This will come in next version + Fl_WM::get_workarea(x, y, width, height); + + // y koord. poveca za title_height + y = y + title_height; + + XMoveResizeWindow(fl_display, win, x, y, width, height); + XSync(fl_display, True); + break;*/ +/* + case SET_SIZE: + { + Fl_Window *win = new Fl_Window(300, 110, _("Set Size")); + win->begin(); + + Fl_Box *b = new Fl_Box(_("Set size to window:"), 20); + b->label_font(b->label_font()->bold()); + //b = new Fl_Box(menu_frame->label(), 20); //here goes title of window + + Fl_Group *g = new Fl_Group("", 23); + + Fl_Value_Input *w_width = new Fl_Value_Input(_("Width:"), 70, FL_ALIGN_LEFT, 60); + w_width->step(1); + Fl_Value_Input *w_height = new Fl_Value_Input(_("Height:"), 70, FL_ALIGN_LEFT, 60); + w_height->step(1); + + g->end(); + + Fl_Divider *div = new Fl_Divider(10, 15); + div->layout_align(FL_ALIGN_TOP); + + g = new Fl_Group("", 50, FL_ALIGN_CLIENT); + + //Fl_Button *but = ok_button = new Fl_Button(40,0,100,20, _("&OK")); + //but->callback(real_set_size_cb); + + but = new Fl_Button(155,0,100,20, _("&Cancel")); + //but->callback(close_set_size_cb); + + g->end(); + + win->end(); + + //w_width->value(menu_frame->w()); + //w_height->value(menu_frame->h()); + //ok_button->user_data(menu_frame); + + //win->callback(close_set_size_cb); + win->show(); + + } + break;*/ + + + case RESTORE: + Fl_WM::set_active_window(win); + break; + } + + fltk::redraw(); +} + +TaskButton::TaskButton(Window win) : fltk::Button(0,0,0,0) +{ + layout_align(fltk::ALIGN_LEFT); + callback((fltk::Callback1*)task_button_cb, win); + + if(!menu) { + fltk::Group *saved = fltk::Group::current(); + fltk::Group::current(0); + + menu = new fltk::Menu_(); + menu->callback((fltk::Callback*)menu_cb); + + //Fl_Widget* add(const char*, int shortcut, Fl_Callback*, void* = 0, int = 0); + + menu->add(_(" Close "), 0, 0, (void*)CLOSE, fltk::MENU_DIVIDER); + new fltk::Divider(10, 15); + menu->add(_(" Kill"), 0, 0, (void*)KILL, fltk::MENU_DIVIDER); + new fltk::Divider(10, 15); + + //Comes in next version + //menu->add(" Maximize", 0, 0, (void*)MAX); + menu->add(_(" Minimize"), 0, 0, (void*)MIN); + menu->add(_(" Restore"), 0, 0, (void*)RESTORE); + //menu->add(" Set size", 0, 0, (void*)SET_SIZE, FL_MENU_DIVIDER); + //----- + + fltk::Group::current(saved); + } +} + +///////////////////////// +// Task bar ///////////// +///////////////////////// + +#include "icons/tux.xpm" +static fltk::Image default_icon(tux_xpm); + +// Forward declaration +static int GetState(Window w); + +Window TaskBar::active = 0; +bool TaskBar::variable_width = true; + +TaskBar::TaskBar() +: fltk::Group(0,0,0,0) +{ + m_max_taskwidth = 150; + + layout_align(fltk::ALIGN_CLIENT); + layout_spacing(2); + + EDE_Config pConfig(find_config_file("ede.conf", true)); + pConfig.get("Panel", "VariableWidthTaskbar",variable_width,true); + + update(); + end(); +} + +void TaskBar::layout() +{ + if(!children()) return; + + int maxW = w()-layout_spacing()*2; + int avgW = maxW / children(); + int n; + + int buttonsW = layout_spacing()*2; + for(n=0; nwidth(), tmph; + + if(TaskBar::variable_width) { + child(n)->preferred_size(W, tmph); + W += 10; + } else + W = avgW; + + if(W > m_max_taskwidth) W = m_max_taskwidth; + + child(n)->w(W); + buttonsW += W+layout_spacing(); + } + + float scale = 0.0f; + if(buttonsW > maxW) + scale = (float)maxW / (float)buttonsW; + + int X=layout_spacing(); + for(n=0; nw(); + if(scale>0.0f) + W = (int)((float)W * scale); + + widget->resize(X, 0, W, h()); + X += widget->w()+layout_spacing(); + } + + fltk::Widget::layout(); +} + +void TaskBar::update() +{ + Fl_WM::clear_handled(); + + int n; + + // Delete all icons: + for(n=0; nimage(); + if(i!=&default_icon) + delete i; + } + clear(); + + Window *wins=0; + int num_windows = Fl_WM::get_windows_mapping(wins); + + if(num_windows<=0) + return; + + fltk::Int_List winlist; + int current_workspace = Fl_WM::get_current_workspace(); + for(n=0; n0) + winlist.append(wins[n]); + } + + if(winlist.size()>0) { + for(n=0; n<(int)winlist.size(); n++) { + add_new_task(winlist[n]); + } + } + delete []wins; + + relayout(); + redraw(); + parent()->redraw(); +} + +void TaskBar::update_active(Window active) +{ + for(int n=0; nargument(); + + if(GetState(win) == IconicState) + w->label_color(fltk::inactive(fltk::BLACK)); + else + w->label_color(fltk::Button::default_style->label_color); + + if(active==win) { + TaskBar::active = win; + w->set_value(); + w->color(fltk::lighter(fltk::Button::default_style->color)); + w->highlight_color(fltk::lighter(fltk::Button::default_style->color)); + } else { + w->clear_value(); + w->color(fltk::Button::default_style->color); + w->highlight_color(fltk::Button::default_style->highlight_color); + } + } + redraw(); +} + +void TaskBar::update_name(Window win) +{ + for(int n=0; nargument(); + + if(window==win) { + char *name = 0; + bool ret = Fl_WM::get_window_icontitle(win, name); + if(!ret || !name) ret = Fl_WM::get_window_title(win, name); + + if(ret && name) { + w->label(name); + w->tooltip(name); + free(name); + } else { + w->label("..."); + w->tooltip("..."); + } + + // Update icon also.. + fltk::Image *icon = w->image(); + if(icon!=&default_icon) delete icon; + + if(Fl_WM::get_window_icon(win, icon, 16, 16)) + w->image(icon); + else + w->image(default_icon); + + w->redraw(); + break; + } + } + redraw(); +} + +void TaskBar::minimize_all() +{ + Window *wins=0; + int num_windows = Fl_WM::get_windows_mapping(wins); + + int current_workspace = Fl_WM::get_current_workspace(); + for(int n=0; n0) + XIconifyWindow(fltk::display, wins[n], fltk::screen); + } + XSync(fl_display, True); + active = 0; +} + +void TaskBar::add_new_task(Window w) +{ + // Add to Fl_WM module handled windows. + Fl_WM::handle_window(w); + + TaskButton *b; + char *name = 0; + fltk::Image *icon = 0; + + if (!w) return; + + begin(); + + b = new TaskButton(w); + + bool ret = Fl_WM::get_window_icontitle(w, name); + if(!ret || !name) ret = Fl_WM::get_window_title(w, name); + + if(ret && name) { + b->label(name); + b->tooltip(name); + free(name); + } else { + b->label("..."); + b->tooltip("..."); + } + + if(Fl_WM::get_window_icon(w, icon, 16, 16)) { + b->image(icon); + } else { + b->image(default_icon); + } + + b->accept_focus(false); + b->align(fltk::ALIGN_LEFT | fltk::ALIGN_INSIDE | fltk::ALIGN_CLIP); + + if(Fl_WM::get_active_window()==w) { + b->value(1); + active = w; + } + + if(GetState(w) == IconicState) + b->label_color(fltk::inactive(fltk::BLACK)); + + end(); +} + +////////////////////////// + +static void* getProperty(Window w, Atom a, Atom type, unsigned long *np, int *ret) +{ + Atom realType; + int format; + unsigned long n, extra; + int status; + uchar *prop=0; + status = XGetWindowProperty(fltk::display, w, a, 0L, 0x7fffffff, + False, type, &realType, + &format, &n, &extra, (uchar**)&prop); + if(ret) *ret = status; + if (status != Success) return 0; + if (!prop) { return 0; } + if (!n) { XFree(prop); return 0; } + if (np) *np = n; + return prop; +} + +static int getIntProperty(Window w, Atom a, Atom type, int deflt, int *ret) +{ + void* prop = getProperty(w, a, type, 0, ret); + if(!prop) return deflt; + int r = int(*(long*)prop); + XFree(prop); + return r; +} + +// 0 ERROR +// Otherwise state +static int GetState(Window w) +{ + static Atom _XA_WM_STATE = 0; + if(!_XA_WM_STATE) _XA_WM_STATE = XInternAtom(fltk::display, "WM_STATE", False); + + int ret=0; + int state = getIntProperty(w, _XA_WM_STATE, _XA_WM_STATE, 0, &ret); + if(ret!=Success) return 0; + return state; +} diff --git a/eworkpanel/taskbutton.h b/eworkpanel/taskbutton.h new file mode 100755 index 0000000..dd81077 --- /dev/null +++ b/eworkpanel/taskbutton.h @@ -0,0 +1,55 @@ +#ifndef _TASKBUTTON_H_ +#define _TASKBUTTON_H_ + +/*#include +#include +#include */ + +#include +#include +#include + +class TaskBar; + +// One task in taskabr +class TaskButton : public fltk::Button +{ +public: + // TashBar is needed for this pointer, so we can call update() + TaskButton(Window w); + + // Menu stuff + static fltk::Menu_ *menu; + static TaskButton *pushed; +}; + +///////////////////////////////////// + +class TaskBar : public fltk::Group +{ +public: + TaskBar(); + + // Active window ID + static Window active; + + //Are buttons variable width + static bool variable_width; + + void layout(); + + void update(); + void update_name(Window win); + void update_active(Window active); + + int max_taskwidth() const { return m_max_taskwidth; } + + void minimize_all(); + +private: + void add_new_task(Window w); + + int m_max_taskwidth; +}; + +#endif diff --git a/eworkpanel/workpanel.cpp b/eworkpanel/workpanel.cpp new file mode 100755 index 0000000..661f9f9 --- /dev/null +++ b/eworkpanel/workpanel.cpp @@ -0,0 +1,664 @@ +// Copyright (c) 2000. - 2005. EDE Authors +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include "workpanel.h" +#include "aboutdialog.h" + +#include "panelbutton.h" +#include "taskbutton.h" +#include "cpumonitor.h" +#include "dock.h" +#include "mainmenu.h" +#include "keyboardchooser.h" + +/*#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include + +#include "item.h" +#include + +static fltk::Image desktop_pix((const char **)desktop_xpm); +static fltk::Image sound_pix((const char **)sound_xpm); +static fltk::Image run_pix((const char **)run_xpm); +static fltk::Image showdesktop_pix((const char **)showdesktop_xpm); + +class Fl_Update_Window : public fltk::Window +{ +public: + Fl_Update_Window(int, int, int, int, char*); + void setAutoHide(int a) { autoHide = a; } + + int handle(int event); + + int autoHide; + int initX, initY, initW, initH; +}; + +Fl_Update_Window *mPanelWindow; + +fltk::Button *mClockBox; +fltk::Group *mModemLeds; +fltk::Box *mLedIn, *mLedOut; + +fltk::Input_Browser *runBrowser; + +PanelMenu *mProgramsMenu; +PanelMenu *mWorkspace; +MainMenu *mSystemMenu; +KeyboardChooser *mKbdSelect; + +Dock *dock; +TaskBar *tasks; + +EDE_Config pGlobalConfig(find_config_file("ede.conf", true)); + +void updateStats(void *); + + +///////////////////////////////////////////////////////////////////////////// + + +Fl_Update_Window::Fl_Update_Window(int X, int Y, int W, int H, char *label=0) + : fltk::Window(X, Y, W, H, label) +{ + autoHide = 0; + initX = X; + initY = Y; + initW = W; + initH = H; +} + +int Fl_Update_Window::handle(int event) +{ + switch (event) { + case fltk::SHOW: { + int ret = fltk::Window::handle(FL_SHOW); + int is_shown = shown(); + + if(is_shown && !autoHide) + Fl_WM::set_window_strut(fltk::xid(mPanelWindow), 0, 0, 0, h()); + + if(is_shown && autoHide) + position(initX, initY); + + return ret; + } + + case fltk::ENTER: + if(!autoHide) { + position(initX, initY); + if(shown()) Fl_WM::set_window_strut(fltk::xid(mPanelWindow), 0, 0, 0, h()); + } + else + position(initX, initY); + + take_focus(); + return 1; + + case FL_LEAVE: + if(autoHide && fltk::event() == fltk::LEAVE) { + position(initX, initY+h()-2); + if(shown()) Fl_WM::set_window_strut(fltk::xid(mPanelWindow), 0, 0, 0, 2); + } + throw_focus(); + return 1; + } + return fltk::Window::handle(event); +} + +void setWorkspace(fltk::Button *, void *w) +{ + Fl_WM::set_current_workspace((int) w); +} + +void restoreRunBrowser() { + // Read the history of commands in runBrowser on start + runBrowser->clear(); + char* historyString; + pGlobalConfig.get("Panel", "RunHistory", historyString,""); + char* token = strtok(historyString,"|"); + do { + runBrowser->add(token); + } while (token = strtok(NULL, "|")); +} + + +bool showseconds = true; + +void clockRefresh(void *) +{ + mClockBox->label(fltk::Date_Time::Now().time_string().sub_str(0, 5)); + + strncpy(fltk::Date_Time::datePartsOrder, _("MDY"), 3); + char* pClockTooltip = strdup(Fl_Date_Time::Now().day_name()); + pClockToolTip = strdupcat(pClockToolTip, ", "); + pClockTooltip = strdupcat(pClockToolTip, Fl_Date_Time::Now().date_string()); + pClockToolTip = strdupcat(pClockToolTip, ", "); + pClockToolTip = strdupcat(Fl_Date_Time::Now().time_string()); + mClockBox->tooltip(pClockTooltip); + + mClockBox->redraw(); + fltk::add_timeout(1.0, clockRefresh); + free(pClockToolTip); +} + +void runUtility(fltk::Widget *, char *pCommand) +{ + char cmd[256]; + snprintf (cmd, sizeof(cmd)-1, "elauncher %s", pCommand); + fltk::start_child_process(cmd, false); +} + +void updateSetup() +{ + //printf("updateSetup()\n"); + struct stat s; + + // Check if configuration needs to be updated + if(!stat(pGlobalConfig.filename(), &s)) { + static long last_modified = 0; + long now = s.st_mtime; + + if(last_modified>0 && last_modified==now) { + // Return if not modified + return; + } + // Store last modified time + last_modified = s.st_mtime; + } + + pGlobalConfig.read_file(false); + if(pGlobalConfig.error()) { + fprintf(stderr, "[EWorkPanel Error]: %s\n", pGlobalConfig.strerror()); + return; + } + + bool auto_hide = false; + static bool hiden = false; + static bool last_state = false; + static bool on_start = true; + bool runbrowser; + + pGlobalConfig.get("Panel", "AutoHide", auto_hide, false); + if (on_start) { + last_state = auto_hide; + pGlobalConfig.get("Panel", "RunBrowser", runbrowser, true); + if (runbrowser) { restoreRunBrowser() ; } + } + + bool old_hiden = hiden; + if (auto_hide) { + mPanelWindow->setAutoHide(1); + hiden = true; + } else { + mPanelWindow->setAutoHide(0); + hiden = false; + } + + if(old_hiden!=hiden || on_start) { + if(!hiden) { + mPanelWindow->position(mPanelWindow->initX, mPanelWindow->initY); + if(mPanelWindow->shown()) Fl_WM::set_window_strut(fltk::xid(mPanelWindow), 0, 0, 0, mPanelWindow->h()); + } else { + mPanelWindow->position(mPanelWindow->initX, mPanelWindow->initY+mPanelWindow->h()-4); + if(mPanelWindow->shown()) Fl_WM::set_window_strut(fltk::xid(mPanelWindow), 0, 0, 0, 4); + } + } + + on_start = false; +} + +void updateStats(void *) +{ + char pLogBuffer[1024]; + static int log_len; + static struct timeval last_time; + static long last_rx=0; static long last_tx=0; static long connect_time=0; + char *ptr; int fd; char buf[1024]; + long rx = -1; long tx = -1; + float spi = 0.0; float spo = 0.0; + static bool modleds = false; + int len = -1; + + fd = open("/proc/net/dev", O_RDONLY); + if(fd > 0) { + + len = read(fd, buf, 1023); + close(fd); + + if(len>0) { + buf[len] = '\0'; + ptr = strstr( buf, "ppp0" ); + } + } + + if(fd==-1 || len < 0 || ptr == NULL) + { + if (modleds) { + dock->remove_from_tray(mModemLeds); + modleds = false; + } + last_rx=0; last_tx=0; connect_time=0; + + } + else + { + long dt; int ct; struct timeval tv; + + gettimeofday(&tv, NULL); + dt = (tv.tv_sec - last_time.tv_sec) * 1000; + dt += (tv.tv_usec - last_time.tv_usec) / 1000; + + if (dt > 0) { + sscanf(ptr, "%*[^:]:%ld %*d %*d %*d %*d %*d %*d %*d %ld", &rx, &tx); + spi = (rx - last_rx) / dt; + spi = spi / 1024.0 * 1000.0; + spo = (tx - last_tx) / dt; + spo = spo / 1024.0 * 1000.0; + + + if ( connect_time == 0 ) + connect_time = tv.tv_sec; + ct = (int)(tv.tv_sec - connect_time); + + snprintf(pLogBuffer, 1024, + _("Received: %ld kB (%.1f kB/s)\n" + "Sent: %ld kB (%.1f kB/s)\n" + "Duration: %d min %d sec"), + rx / 1024, spi, tx / 1024, spo, ct / 60, ct % 60 ); + last_rx = rx; + last_tx = tx; + last_time.tv_sec = tv.tv_sec; + last_time.tv_usec = tv.tv_usec; + + log_len = 0; + + if ((int)(spi) > 0) + { + mLedIn->color( (Fl_Color)2 ); + mLedIn->redraw(); + } + else + { + mLedIn->color( (Fl_Color)968701184 ); + mLedIn->redraw(); + } + + if ( (int)(spo) > 0 ) { + mLedOut->color( (Fl_Color)2 ); + mLedOut->redraw(); + } else { + mLedOut->color( (Fl_Color)968701184 ); + mLedOut->redraw(); + } + mModemLeds->tooltip(pLogBuffer); + } + if (!modleds) + { + dock->add_to_tray(mModemLeds); + modleds = true; + } + } + + updateSetup(); + fltk::repeat_timeout(1.0f, updateStats); +} + + +// Start utility, like "time/date" or "volume" +void startUtility(fltk::Button *, void *pName) +{ + char* value; + pGlobalConfig.get("Panel", pName, value, ""); + + if(!pGlobalConfig.error() && strlen(value)>0) { + char* value2 = strdup("elauncher \""); + value2 = strdupcat(value2,value); + value2 = strdupcat(value2,"\""); + fltk::start_child_process(value2, false); + free(value2); + } + free(value); +} + +void updateWorkspaces(fltk::Widget*,void*) +{ + bool showapplet; + pGlobalConfig.get("Panel", "Workspaces", showapplet, true); + if (!showapplet) { return; } + mWorkspace->clear(); + mWorkspace->begin(); + + char **names=0; + int count = Fl_WM::get_workspace_count(); + int names_count = Fl_WM::get_workspace_names(names); + int current = Fl_WM::get_current_workspace(); + + for(int n=0; ncallback( (fltk::Callback *) setWorkspace, (void*)n); + i->type(fltk::Item::RADIO); + if(nlabel(names[n]); + delete []names[n]; + } else { + char* tmp; + sprintf(tmp,"%s %d", _("Workspace") ,n+1); + i->label(tmp); + free(tmp); + } + if(current==n) i->set_value(); + } + if(names) delete []names; + + mWorkspace->end(); +} + +void FL_WM_handler(fltk::Widget *w, void *d) +{ + if(fltk::WM::action()==fltk::WM::WINDOW_NAME || fltk::WM::action()==fltk::WM::WINDOW_ICONNAME) { + tasks->update_name(fltk::WM::window()); + } + if(fltk::WM::action()==fltk::WM::WINDOW_ACTIVE) { + tasks->update_active(fltk::WM::get_active_window()); + } + else if(fltk::WM::action() >= fltk::WM::WINDOW_LIST && fltk::WM::action() <= fltk::WM::WINDOW_DESKTOP) { + tasks->update(); + } + else if(fltk::WM::action()>0 && fltk::WM::action()update(); + } +} + +#define DEBUG +void terminationHandler(int signum) +{ +#ifndef DEBUG + // to crash the whole X session can make people worried so try it + // to save anymore... + execlp("eworkpanel", "eworkpanel", 0); +#else + fprintf(stderr, "\n\nEWorkPanel has just crashed! Please report bug to efltk-bugs@fltk.net\n\n"); + abort(); +#endif +} + +void cb_run_app(Fl_Input *i, void*) +{ + char* exec = strdup(i->value()); + if (strcmp(exec,"")==0 || strcmp(exec," ")==0) + return; + char* exec2 = strdup("elauncher \""); + exec2 = strdupcat(exec2,exec); + exec2 = strdupcat(exec2,"\""); + fltk::start_child_process(exec, false); + + fltk::Input_Browser *ib = (fltk::Input_Browser *)i->parent(); + if (!ib->find(i->value())) { + ib->add(i->value()); + int c = 0; + if (ib->children() > 15) c = ib->children() - 15; + char* history; + for (; c < ib->children()-1; c++) { + history = strdupcat(ib->child(c)->label()); + history = strdupcat("|"); + } + history = strdupcat(ib->child(ib->children()-1)->label()); + pGlobalConfig.set("Panel", "RunHistory", history); + pGlobalConfig.flush(); + } + + i->value(""); +} +void cb_run_app2(fltk::Input_Browser *i, void*) { cb_run_app(i->input(), 0); } + +void cb_showdesktop(fltk::Button *) { +// spagetti code - workpanel.cpp needs to be cleaned up of extraneous code + tasks->minimize_all(); +} + +int main(int argc, char **argv) +{ + signal(SIGCHLD, SIG_IGN); + signal(SIGSEGV, terminationHandler); +// fl_init_locale_support("eworkpanel", PREFIX"/share/locale"); + fltk::init_images_lib(); + + int X=0,Y=0,W=Fl::w(),H=Fl::h(); + int substract; + + // Get current workarea + Fl_WM::get_workarea(X,Y,W,H); + + //printf("Free area: %d %d %d %d\n", X,Y,W,H); + + // We expect that other docks are moving away from panel :) + mPanelWindow = new Fl_Update_Window(X, Y+H-30, W, 30, "Workpanel"); + mPanelWindow->layout_spacing(0); + // Panel is type DOCK + mPanelWindow->window_type(Fl_WM::DOCK); + mPanelWindow->setAutoHide(0); + + // Read config + bool doShowDesktop; + pGlobalConfig.get("Panel", "ShowDesktop", doShowDesktop, false); + bool doWorkspaces; + pGlobalConfig.get("Panel", "Workspaces", doWorkspaces, true); + bool doRunBrowser; + pGlobalConfig.get("Panel", "RunBrowser", doRunBrowser, true); + bool doSoundMixer; + pGlobalConfig.get("Panel", "SoundMixer", doSoundMixer, true); + bool doCpuMonitor; + pGlobalConfig.get("Panel", "CPUMonitor", doCpuMonitor, true); + + // Group that holds everything.. + fltk::Group *g = new fltk::Group(0,0,0,0); + g->box(fltk::DIV_UP_BOX); + g->layout_spacing(2); + g->layout_align(fltk::ALIGN_CLIENT); + g->begin(); + + mSystemMenu = new MainMenu(); + + fltk::VertDivider *v = new fltk::VertDivider(0, 0, 5, 18, ""); + v->layout_align(fltk::ALIGN_LEFT); + substract = 5; + + if ((doShowDesktop) || (doWorkspaces)) { + //this is ugly: + int size; + if ((doShowDesktop) && (doWorkspaces)) { size=48; } else { size=24; } + fltk::Group *g2 = new fltk::Group(0,0,size,22); + g2->box(fltk::FLAT_BOX); + g2->layout_spacing(0); + g2->layout_align(fltk::ALIGN_LEFT); + + // Show desktop button + if (doShowDesktop) { + PanelButton *mShowDesktop; + mShowDesktop = new PanelButton(0, 0, 24, 22, fltk::NO_BOX, fltk::DOWN_BOX, "ShowDesktop"); + mShowDesktop->layout_align(fltk::ALIGN_LEFT); + mShowDesktop->label_type(fltk::NO_LABEL); + mShowDesktop->align(fltk::ALIGN_INSIDE|fltk::ALIGN_CENTER); + mShowDesktop->image(showdesktop_pix); + mShowDesktop->tooltip(_("Show desktop")); + mShowDesktop->callback( (fltk::Callback*)cb_showdesktop); + mShowDesktop->show(); + + substract += 26; + } + + // Workspaces panel + if (doWorkspaces) { + mWorkspace = new PanelMenu(0, 0, 24, 22, fltk::NO_BOX, fltk::DOWN_BOX, "WSMenu"); + mWorkspace->layout_align(fltk::ALIGN_LEFT); + mWorkspace->label_type(fltk::NO_LABEL); + mWorkspace->align(fltk::ALIGN_INSIDE|fltk::ALIGN_CENTER); + mWorkspace->image(desktop_pix); + mWorkspace->tooltip(_("Workspaces")); + mWorkspace->end(); + + substract += 26; + } + + g2->end(); + g2->show(); + g2->resizable(); + + v = new fltk::VertDivider(0, 0, 5, 18, ""); + v->layout_align(fltk::ALIGN_LEFT); + substract += 5; + } + + // Run browser + if (doRunBrowser) { + runBrowser = new fltk::Input_Browser("",100,fltk::ALIGN_LEFT,30); + //runBrowser->image(run_pix); + //runBrowser->box(FL_THIN_DOWN_BOX); + + // Added _ALWAYS so callback is in case: + // 1) select old command from input browser + // 2) press enter to execute. (this won't work w/o _ALWAYS) +// runBrowser->input()->when(FL_WHEN_ENTER_KEY_ALWAYS | FL_WHEN_RELEASE_ALWAYS); + // Vedran: HOWEVER, with _ALWAYS cb_run_app will be called way + // too many times, causing fork-attack + runBrowser->input()->when(fltk::WHEN_ENTER_KEY); + runBrowser->input()->callback((fltk::Callback*)cb_run_app); + runBrowser->callback((fltk::Callback*)cb_run_app2); + + v = new fltk::VertDivider(0, 0, 5, 18, ""); + v->layout_align(fltk::ALIGN_LEFT); + substract += 105; + } + + + // Popup menu for the whole taskbar + fltk::Menu_Button *mPopupPanelProp = new fltk::Menu_Button( 0, 0, W, 28 ); + mPopupPanelProp->type( fltk::Menu_Button::POPUP3 ); + mPopupPanelProp->anim_flags(fltk::Menu_::LEFT_TO_RIGHT); + mPopupPanelProp->anim_speed(0.8); + mPopupPanelProp->begin(); + + fltk::Item *mPanelSettings = new fltk::Item(_("Settings")); + mPanelSettings->x_offset(12); + mPanelSettings->callback( (fltk::Callback*)runUtility, (void*)"epanelconf" ); + new fltk::Divider(10, 5); + + fltk::Item *mAboutItem = new fltk::Item(_("About EDE...")); + mAboutItem->x_offset(12); + mAboutItem->callback( (fltk::Callback *)AboutDialog ); + + mPopupPanelProp->end(); + + // Subgroup to properly align everything +/* Fl_Group *subgroup; + { + subgroup = new Fl_Group(0, 0, W-substract, 18); + subgroup->box(FL_FLAT_BOX); + subgroup->layout_align(FL_ALIGN_RIGHT); + subgroup->show(); + subgroup->begin(); */ + + // Taskbar... + tasks = new TaskBar(); + dock = new Dock(); + + v = new fltk::VertDivider(0, 0, 5, 18, ""); + v->layout_align(fltk::ALIGN_RIGHT); + +/* subgroup->end(); + }*/ + + { + // MODEM + mModemLeds = new fltk::Group(0, 0, 25, 18); + mModemLeds->box(fltk::FLAT_BOX); + mModemLeds->hide(); + mLedIn = new fltk::Box(2, 5, 10, 10); + mLedIn->box( fltk::OVAL_BOX ); + mLedIn->color( (fltk::Color)968701184); + mLedOut = new fltk::Box(12, 5, 10, 10); + mLedOut->box( fltk::OVAL_BOX); + mLedOut->color( (fltk::Color)968701184); + mModemLeds->end(); + } + + { + // KEYBOARD SELECT + mKbdSelect = new KeyboardChooser(0, 0, 20, 18, fltk::NO_BOX, fltk::DOWN_BOX, "us"); + mKbdSelect->hide(); + mKbdSelect->anim_speed(4); + mKbdSelect->label_font(mKbdSelect->label_font()->bold()); + mKbdSelect->highlight_color(mKbdSelect->selection_color()); + mKbdSelect->highlight_label_color( mKbdSelect->selection_text_color()); + } + + { + // CLOCK + mClockBox = new fltk::Button(0, 0, 50, 20); + mClockBox->align(fltk::ALIGN_INSIDE|fltk::ALIGN_LEFT); + mClockBox->hide(); + mClockBox->box(fltk::FLAT_BOX); + mClockBox->callback( (Fl_Callback*)startUtility, (void*)"Time and date"); + } + + dock->add_to_tray(mClockBox); + dock->add_to_tray(mKbdSelect); + + // SOUND applet + if (doSoundMixer) { + fltk::Button *mSoundMixer; + mSoundMixer = new fltk::Button(0, 0, 20, 18); + mSoundMixer->hide(); + mSoundMixer->box(fltk::NO_BOX); + mSoundMixer->focus_box(fltk::NO_BOX); + mSoundMixer->image(sound_pix); + mSoundMixer->tooltip(_("Volume control")); + mSoundMixer->align(fltk::ALIGN_INSIDE); + mSoundMixer->callback( (fltk::Callback*)startUtility, (void*)"Volume Control" ); + dock->add_to_tray(mSoundMixer); + } + + // CPU monitor + if (doCpuMonitor) { + CPUMonitor *cpumon; + cpumon = new CPUMonitor(); + cpumon->hide(); + dock->add_to_tray(cpumon); + } + + + fltk::focus(mSystemMenu); + + mPanelWindow->end(); + mPanelWindow->show(argc, argv); + + Fl_WM::callback(FL_WM_handler, 0, Fl_WM::DESKTOP_COUNT | + Fl_WM::DESKTOP_NAMES | + Fl_WM::DESKTOP_CHANGED| + Fl_WM::WINDOW_LIST| + Fl_WM::WINDOW_DESKTOP| + Fl_WM::WINDOW_ACTIVE| + Fl_WM::WINDOW_NAME| + Fl_WM::WINDOW_ICONNAME); + + updateWorkspaces(0,0); + + fltk::add_timeout(0, clockRefresh); + fltk::add_timeout(0, updateStats); + + while(mPanelWindow->shown()) + fltk::wait(); +} diff --git a/eworkpanel/workpanel.h b/eworkpanel/workpanel.h new file mode 100755 index 0000000..905b939 --- /dev/null +++ b/eworkpanel/workpanel.h @@ -0,0 +1,114 @@ +// Equinox Desktop Environment - main panel +// Copyright (C) 2000-2002 Martin Pekar +// +// 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; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +#ifndef workpanel_h +#define workpanel_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "EDE_Config.h" +#include +#include +#include +#include "NLS.h" + +#include "icons/sound.xpm" +#include "icons/desktop.xpm" +#include "icons/run.xpm" +#include "icons/showdesktop.xpm" + +#endif diff --git a/exset/exset.h b/exset/exset.h new file mode 100755 index 0000000..4c5bbe9 --- /dev/null +++ b/exset/exset.h @@ -0,0 +1,74 @@ +#ifndef exset_h +#define exset_h + +#include +#include + +#include +#include + +#include +#include + +class Exset { + +public: + Exset(void) {} + ~Exset() {} + + char str[80]; + + void set_pattern(int delay, int pattern = -1){ + if( pattern != -1 ){ + sprintf(str,"xset s %d %d",delay*60,pattern*60); + fl_start_child_process(str); + }else{ + sprintf(str,"xset s %d",delay*60); + fl_start_child_process(str); + } + } + void set_check_blank(int blank){ + sprintf(str,"xset s %s",blank ? "on" : "off"); + fl_start_child_process(str); + } + void set_blank(int blank){ + sprintf(str,"xset s %s",blank ? "blank" : "noblank"); + fl_start_child_process(str); + } + + void test_blank() { fl_start_child_process("xset s activate"); } + void test_bell() { fl_start_child_process("xkbbell"); } + + void set_mouse(int accel, int thresh){ + XChangePointerControl(fl_display, true, true, accel, + 1, thresh); + } + + + void set_bell(int volume, int pitch, int duration, int sound = 0){ + XKeyboardControl _ctrl; + unsigned long mask = KBBellPercent | KBBellPitch | KBBellDuration; + + _ctrl.bell_percent = volume; + _ctrl.bell_pitch = pitch; + _ctrl.bell_duration = duration; + + set_xset(&_ctrl,mask); + } + + void set_keybd( int repeat, int clicks) { + XKeyboardControl _ctrl; + unsigned long mask = KBKeyClickPercent | KBAutoRepeatMode; + + _ctrl.key_click_percent = clicks; + _ctrl.auto_repeat_mode = (repeat ? AutoRepeatModeOn : AutoRepeatModeOff); + + set_xset(&_ctrl,mask); + } + + void set_xset(XKeyboardControl * ctrl, unsigned long mask){ + XChangeKeyboardControl(fl_display, mask, ctrl); + } +}; +#endif + diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..e843669 --- /dev/null +++ b/install-sh @@ -0,0 +1,250 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/l10n-prepare.pl b/l10n-prepare.pl new file mode 100755 index 0000000..076a0e2 --- /dev/null +++ b/l10n-prepare.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl + +# This Perl script prepares files for translations. +# Extracts strings from code, copies into l10n/ directory and +# creates convinient .tar.gz packages for languages. +# Copyright (c) Vedran Ljubovic 2005. +# This program is licensed under terms of GNU General Public +# License v2 or greater. + + +@directories = ("common", "ecolorconf", "econtrol", "edewm", +"edisplayconf", "efinder","eiconman", "eiconsconf", "einstaller", +"ekeyconf", "elauncher", "emenueditor", "epanelconf", "esvrconf", +"etimedate", "etip", "evolume", "ewmconf", "eworkpanel"); + + +foreach $dir (@directories) { + print "Extracting $dir...\n"; + + # Extract new strings from code + $command = "xgettext -o $dir/locale/messages.pot --keyword=\_ $dir/*.cpp $dir/*.h"; + `$command`; +} + + +print "Copying files...\n"; +while ($nextname = <*/locale/*.po>) { + if ($nextname =~ /(.*?)\/locale\/(.*?)\.po/) { + $dest = "l10n/$2/$1".".po"; + `mkdir l10n/$2 &>/dev/null`; + `cp -f $nextname $dest`; + } else { + print "Error: $nextname\n"; + } +} + +`mkdir l10n/nontranslated &>/dev/null`; +while ($nextname = <*/locale/messages.pot>) { + if ($nextname =~ /(.*?)\/locale\/messages.pot/) { + $dest = "l10n/nontranslated/$1".".pot"; + `cp -f $nextname $dest`; + } else { + print "Error: $nextname\n"; + } +} + +while ($nextname = ) { + if ((-d $nextname) && ($nextname =~ /l10n\/(.*?)$/)) { + print "Creating package for $1...\n"; + `tar czvf l10n/$1.tar.gz l10n/$1`; + } +} + diff --git a/l10n/.tar.gz b/l10n/.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..d19866438daef04d3967245db52a27a499038102 GIT binary patch literal 70024 zcmV(tK0=*s7zof|vA2T$%Mn$@d=#_D7BJH6j=O-7#H@(*=%;Z56IqUrYn0A zA!$s=gE|BaYp

    Gsh(cx?ohe)7Px8nR`lDnJ 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 literal 0 HcmV?d00001 diff --git a/l10n/fi/edewm.po b/l10n/fi/edewm.po new file mode 100755 index 0000000..ffb9e61 --- /dev/null +++ b/l10n/fi/edewm.po @@ -0,0 +1,89 @@ +# Finnish translation of edewm. +# Copyright (C) 2002 THE edewm'S COPYRIGHT HOLDER +# This file is distributed under the same license as the edewm package. +# Mikko L. , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: edewm 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-09-16 11:07+0300\n" +"Last-Translator: Mikko L. \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Typyt %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Nimetn" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Kiinte" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Suurenna" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Pienenn" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Typydlle:" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "Tapa" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Sulje" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Palauta" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Toinen ikkunointi jrjestelm kynniss. Sinun tytyy lopettaa se ennen kuin " +"voit ajaa: %s" diff --git a/l10n/hu.tar.gz b/l10n/hu.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..a01a96890ccafb938c5fd16021ad5fd927c8958d GIT binary patch literal 11461 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 literal 0 HcmV?d00001 diff --git a/l10n/hu/ecolorconf.po b/l10n/hu/ecolorconf.po new file mode 100755 index 0000000..23367f1 --- /dev/null +++ b/l10n/hu/ecolorconf.po @@ -0,0 +1,208 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Szín és font beállítások" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Színek" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Háttér szín" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Felirat szín" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Kiválasztás háttere" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Kiválasztott szöveg" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Off szín" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Kiemelés háttere" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Kiemelt szöveg" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Szöveg szín" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Háttér" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Szöveg háttér" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Buborékok" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Buborékok színe" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Buborék szövegszín" + +#: ecolorconf.cpp:203 +#: ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Effektek" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Engedélyez" + +#: ecolorconf.cpp:205 +#: ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Effekt típus:" + +#: ecolorconf.cpp:207 +#: ecolorconf.cpp:256 +msgid "None" +msgstr "Egyik sem" + +#: ecolorconf.cpp:208 +#: ecolorconf.cpp:257 +msgid "Animation" +msgstr "Animáció" + +#: ecolorconf.cpp:209 +#: ecolorconf.cpp:258 +msgid "Fading" +msgstr "Fokozatos" + +#: ecolorconf.cpp:212 +#: ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Késleltetés:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Betűtípusok" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Felirat font:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Szöveg font:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Felirat méret:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Szöveg méret:" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Kódolás:" + +#: ecolorconf.cpp:241 +#: ecolorconf.cpp:244 +msgid "..." +msgstr "..." + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Menük" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Almenü effektek" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Sebesség:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Egyéb" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "MDI animáció engedélyezése" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "MDI opaque animation" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Képállapot váltás" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "Menté&s..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "Színbeállítások &alkalmazása az összes programra" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Témák:" + +#: ecolorconf.cpp:293 +#: efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: ecolorconf.cpp:299 +#: efontdialog.cpp:229 +msgid "&Cancel" +msgstr "Mégs&em" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Szín kiválasztása" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "A szín és felirat szín ugyanaz. Szerkeszd először a színeket." + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Téma mentése:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Új téma" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "Betűtípus kiválasztása..." + diff --git a/l10n/hu/econtrol.po b/l10n/hu/econtrol.po new file mode 100755 index 0000000..d408f3d --- /dev/null +++ b/l10n/hu/econtrol.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Ez az alkalmazás az asztal-ikonok beállításait módosítja" + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Ez az alkalmazás a színösszeállítást módosítja" + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Ez az alkalmazás a képernyőkímélő beállításait módosítja" + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "Ez az alkalmazás az ablakkezelő színeit és viselkedését módosítja" + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Ez az alkalmazás az egér és billentyűzet beállításait módosítja" + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "Ez az alkalmazás segít egy új program telepítésében" + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "Ez az alkalmazás a rendszer időt módosítja" + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Ez az alkalmazás a panel beállításait módosítja" + +#: econtrol.cpp:3870 +#: econtrol.cpp:3894 +msgid "Control panel" +msgstr "Vezérlőpult" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&Fájl" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Kilépés" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "Segítsé&g" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "M&agamról" + +#: econtrol.cpp:3906 +msgid "Welcome to the control panel. Here you can setup most things on your computer." +msgstr "Üdvözöllek a vezérlőpultban. Itt módosíthatod felhasználói felületed beállításait." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Ikonok" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Ikon beállítások" + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Színek" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Szín beállítások" + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Képernyő- kímélő" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Képernyőkímélő beállításai" + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Ablakkezelő" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Ablakkezelő beállításai" + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Felhasználói felület" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Felhasználói felület beállításai" + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Új program telepítése" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Program telepítése" + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Dátum és idő" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Dátum és idő beállítások" + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Panel" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Panel beállítások" + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Kész" + diff --git a/l10n/hu/edewm.po b/l10n/hu/edewm.po new file mode 100755 index 0000000..2984a51 --- /dev/null +++ b/l10n/hu/edewm.po @@ -0,0 +1,85 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 +#: Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Munkaterület %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Névtelen" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "EDEWM: Belső hiba, restacking (%d != %d)! Kilépés... " + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Ragadós" + +#: Titlebar.cpp:275 +#: Titlebar.cpp:320 +msgid "Set size" +msgstr "Méret beállítása" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "Ablakméret beállítása:" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "szél.:" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "mag.:" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "&OK" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "Mégs&em" + +#: Titlebar.cpp:318 +#: Titlebar.cpp:331 +msgid "Maximize" +msgstr "Maximalizálás" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Minimalizálás" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Munkaterületre" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "Kilövés" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Bezárás" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Visszaállítás" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "Egy másik ablakkezelő fut. Ki kell lépni belőle mielőtt ezt futtatod: %s." + diff --git a/l10n/hu/edisplayconf.po b/l10n/hu/edisplayconf.po new file mode 100755 index 0000000..e743756 --- /dev/null +++ b/l10n/hu/edisplayconf.po @@ -0,0 +1,99 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:21+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Felület beállításai" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Egér" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Gyorsulás" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Határérték (képpont)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Csengő" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Hangerő %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Frekvencia" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Időtartam (ms)" + +#: edisplayconf.cpp:116 +msgid "Test" +msgstr "Próba" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Billentyűzet" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr "Billentyűzet ismétlés" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Hangerő %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Képernyő" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "Pró&ba" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Aktiválás kezdete (perc)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr "Képernyő sötétítés" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Embléma változás (perc)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Sötétítés" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Embléma" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "Mégs&em" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "OK" + diff --git a/l10n/hu/efinder.po b/l10n/hu/efinder.po new file mode 100755 index 0000000..8f438f5 --- /dev/null +++ b/l10n/hu/efinder.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 +#: efinder.cpp:322 +msgid "Permissions" +msgstr "Jogok" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "Tulajdonos" + +#: efinder.cpp:71 +#: efinder.cpp:88 +#: efinder.cpp:105 +msgid "Read" +msgstr "Olvasás" + +#: efinder.cpp:74 +#: efinder.cpp:91 +#: efinder.cpp:108 +msgid "Write" +msgstr "Írás" + +#: efinder.cpp:77 +#: efinder.cpp:94 +#: efinder.cpp:111 +msgid "Execute" +msgstr "Futtatás" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "UID-bit" + +#: efinder.cpp:85 +msgid "Group" +msgstr "Csoport" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "GID-bit" + +#: efinder.cpp:102 +msgid "Other" +msgstr "Egyéb" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "Sticky" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "B&ezárás" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr "Könyvtár kiválasztása..." + +#: efinder.cpp:226 +#: efinder.cpp:231 +#: efinder.cpp:232 +msgid "Find" +msgstr "Keresés" + +#: efinder.cpp:236 +msgid "Path:" +msgstr "Útvonal:" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "&Tallóz..." + +#: efinder.cpp:245 +msgid "Find path." +msgstr "" + +#: efinder.cpp:249 +msgid "File filter:" +msgstr "Fájl szűrés:" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr "Alkönyvtárakban is" + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "Lista korlátozása n darabra:" + +#: efinder.cpp:271 +msgid "Content" +msgstr "Tartalom" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr "Tartalmaz:" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr "Kis-/nagybetű számít" + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr "Reguláris kifejezés" + +#: efinder.cpp:295 +msgid "Filter options" +msgstr "Szűrési opciók" + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "Fájl tulajdonságok" + +#: efinder.cpp:300 +msgid "File type:" +msgstr "Fájl típus:" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "Bármilyen" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "Általános fájl" + +#: efinder.cpp:304 +msgid "Directory" +msgstr "Könyvtár" + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "Szimbolikus link" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "Blokk eszköz" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "Karakteres eszköz" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "FIFO" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "Más fájlrendszeren nem keres" + +#: efinder.cpp:325 +msgid "User/group:" +msgstr "Felh./csoport:" + +#: efinder.cpp:330 +msgid "User id:" +msgstr "Felh.:" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr "Csoport:" + +#: efinder.cpp:344 +msgid "Size:" +msgstr "Méret:" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr "nagyobb mint:" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr "kisebb mint (KB):" + +#: efinder.cpp:359 +msgid "Time:" +msgstr "Idő:" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Módosítva" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "Változtatva:" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "Használva:" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr "az előző:" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "Percben" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "Órában" + +#: efinder.cpp:395 +msgid "Days" +msgstr "Napban" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr "Hónapban" + +#: efinder.cpp:413 +msgid "Content options" +msgstr "Tartalom opciók" + +#: efinder.cpp:415 +msgid "General considerations" +msgstr "Tartalmi opciók" + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "Ne keressen bináris fájlban" + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "Talált sorok számolása" + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr "Bármilyen találat" + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr "Teljes szó találat" + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr "Teljes sor találat" + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "Fájlok megjelenítése melyben nincs találat" + +#: efinder.cpp:445 +msgid "About" +msgstr "Magamról" + +#: efinder.cpp:447 +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" + +#: efinder.cpp:458 +msgid "Filename" +msgstr "Fájlnév" + +#: efinder.cpp:459 +msgid "Size" +msgstr "Méret" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Utolsó módosítás" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "Jogok" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "Ke&resés" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr "Keresés megkezdése" + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "Mégs&em" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "Megállítá&s" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr "Megállítja a keresést." + +#: eglob.cpp:446 +msgid "Search finished." +msgstr "Keresés befejezve." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr "Nincs találat." + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "%d találat." + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "Megszakítva - elértem a fájllimitet." + diff --git a/l10n/hu/eiconman.po b/l10n/hu/eiconman.po new file mode 100755 index 0000000..85de808 --- /dev/null +++ b/l10n/hu/eiconman.po @@ -0,0 +1,209 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-10 14:35+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Háttér beállítások" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Háttér" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "S&zín..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "Háttérkép használata" + +#: edeskconf.cpp:91 +#: edeskconf.cpp:130 +msgid "label" +msgstr "címke" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Kép:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Tallóz" + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Áttetsző:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "Mód:" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "Középen" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "Nyújtás" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "Nyújtás (aránymegtartás)" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "Mozaik" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 +#: propdialog.cpp:113 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "Mégs&em" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "Me&gnyitás" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "Tö&rlés" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Tulajdonságok" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Az ikon nevét meg kell adni." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Letöröljem ezt az ikont?" + +#: edeskicon.cpp:473 +#, c-format +msgid "Remove of the icon %s failed. You probably do not have write access to this file." +msgstr "Az ikon törlése sikertelen: %s . Feltehetően nincs hozzá írási jogosultságod." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Mi legyen az ikon neve ?" + +#: edeskicon.cpp:505 +#: eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Létezik már ikon ilyen néven." + +#: edeskicon.cpp:562 +#, c-format +msgid "%d bytes, %s" +msgstr "%d bájt, %s" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "Új iko&n" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "F&rissítés" + +#: eiconman.cpp:122 +msgid "&Icons Settings " +msgstr "I&kon beállítások" + +#: eiconman.cpp:126 +msgid "&Background Settings" +msgstr "Há&ttér beállítások" + +#: eiconman.cpp:718 +msgid "All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg},Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "Minden fájl, *,Png kép, *.png,Xpm kép, *.xpm,Jpeg kép, *.{jpg|jpeg},Gif kép, *.gif,Bmp kép, *.bmp" + +#: eiconman.cpp:724 +msgid "Choose wallpaper:" +msgstr "Háttérkép kiválasztása..." + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "Szín kiválasztása" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Minden fájl (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Fájl kiválasztása..." + +#: propdialog.cpp:39 +msgid "Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*.bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files (*.*), *" +msgstr "Png kép (*.png), *.png, Jpeg kép (*.jpeg), *.{jpeg|jpg}, Bmp kép (*.bmp), *.bmp, Gif kép (*.gif), *.gif, Xpm kép (*.xpm), *.xpm, Minden fájl (*.*), *" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Ikonfájl kiválasztása..." + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Ikon tulajdonságok" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Ikon" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Név:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Méret:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Parancs:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Beállítások" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Link fájl:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Ikon név:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Futtatandó alkalmazás:" + +#: propdialog.cpp:102 +#: propdialog.cpp:109 +msgid "..." +msgstr "..." + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Ikonfájl:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Bezár" + diff --git a/l10n/hu/eiconsconf.po b/l10n/hu/eiconsconf.po new file mode 100755 index 0000000..5d093b4 --- /dev/null +++ b/l10n/hu/eiconsconf.po @@ -0,0 +1,67 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Ikon beállítások" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "Mégs&em" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Megjelenés" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Háttér szín:" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Szöveg szín:" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Maximális szélesség:" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Font magasság:" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Rácshoz igazítás:" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Ikonok automatikus rendezése" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Egy kattintással aktivál" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Töröld a kijelölést a szövegháttér eltűnéséhez" + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Szín kiválasztása" + diff --git a/l10n/hu/einstaller.po b/l10n/hu/einstaller.po new file mode 100755 index 0000000..1e5f383 --- /dev/null +++ b/l10n/hu/einstaller.po @@ -0,0 +1,64 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:39 +#: einstall.cpp:69 +msgid "Please enter the name of the package.\n" +msgstr "Add meg a csomag nevét.\n" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr "Csomagok (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, Minden fájl (*.*), *" + +#: einstaller.cpp:512 +msgid "Package selection" +msgstr "Csomag kiválasztása..." + +#: einstaller.cpp:553 +msgid "Install software package" +msgstr "Szoftver csomag telepítése" + +#: einstaller.cpp:564 +msgid "Enter the name of software package you want to install:" +msgstr "Add meg a telepítendő csomag nevét:" + +#: einstaller.cpp:568 +msgid "&Browse..." +msgstr "&Tallóz" + +#: einstaller.cpp:571 +msgid "Welcome. This installation wizard will help you to install new software on your computer." +msgstr "Üdvözöllek. Ez a varázsló segít egy csomag telepítésében." + +#: einstaller.cpp:577 +msgid "Ignore dependencies" +msgstr "Függőségek figyelmenkívül hagyása" + +#: einstaller.cpp:585 +msgid "Installation results:" +msgstr "Telepítés eredménye:" + +#: einstaller.cpp:590 +msgid "Installation status:" +msgstr "Telepítési folyamat:" + +#: einstaller.cpp:598 +msgid "<< &Previous" +msgstr "<< &Előző" + +#: einstaller.cpp:603 +msgid "&Install" +msgstr "Te&lepítés" + +#: einstaller.cpp:607 +msgid "&Close" +msgstr "&Bezárás" + diff --git a/l10n/hu/elauncher.po b/l10n/hu/elauncher.po new file mode 100755 index 0000000..9171026 --- /dev/null +++ b/l10n/hu/elauncher.po @@ -0,0 +1,177 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-10 15:13+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +msgid "&Ok" +msgstr "&Ok" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "Hiba" + +#: elauncher.cpp:69 +#: elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "Nem található:" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "Talán nincs telepítve megfelelően. Ellenőrizd a $PATH változót." + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "A fájl nem futtatható:" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "Elauncher: a gyerek folyamat sikeresen végrehajtódott %d kóddal\n" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "Sztandard kimenet" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "Sztandard hiba kimenet" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "Elauncher: fork() sikertelen!" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "Elauncher: waitpid sikertelen\n" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "Elauncher: %s: gyerek folyamat váratlanul leállt!\n" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" +"Ismeretlen fájl típus:\n" +"\t%s\n" +"A megnyitáshoz ezt használd:\n" +" 'appname %s'" + +#: elauncher.cpp:334 +#, c-format +msgid "You have requested to execute program %s via Elauncher. However, secure mode was enabled. Execution has been prevented." +msgstr "%s program futását kezdeményezted az Elauncher segítségével. A biztonsági mód engedélyezve van, igy a folyamat futtatására nem került sor." + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Összes fájl (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Fájl kiválasztása..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Megnyitás..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Cél:" + +#: elauncher.cpp:407 +msgid "Type the location you want to open or the name of the program you want to run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "Írd be a megnyitni kívánt URL-t vagy programnevet. (Lehetőségek: http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "Mégs&em" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Tallóz" + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "EDE program és URL megnyitó.\n" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" +"Kibocsátva a GNU General Public Licence v2.0 vagy újabb szerint.\n" +"\n" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "Használat:\n" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "Opciók:\n" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "Futtatás root -ként. Írd be a jelszót a dialógus ablakban.\n" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" +"Megnyitás az alapértelmezett terminállal.\n" +"\n" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "Elauncher: Nem megfelelő számú paraméter...\n" + diff --git a/l10n/hu/emenueditor.po b/l10n/hu/emenueditor.po new file mode 100755 index 0000000..ce348c5 --- /dev/null +++ b/l10n/hu/emenueditor.po @@ -0,0 +1,123 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Minden fájl (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Fájl kiválasztása..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Menü szerkesztő" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&Fájl" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Kilépés" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Programok:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Válaszd ki a módosítandó menüt" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Új könyvtár" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Könyvtár törlése" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Új menüfájl" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Menüfájl törlés" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Menüfájl szerkesztés" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Add meg a menü nevét." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Ikonok (*.png), *.png, Minden fájl (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Ikonfájl kiválasztása..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Szerkesztés" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Fájlnév:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "A menü neve:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Futtatandó parancs:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "&Tallóz..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Ikonfájl:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "Menté&s" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "Mégs&em" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "T&allóz..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Új menüfájl" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Mi legyen az új könyvtár neve?" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Az almenü létrehozása sikertelen!" + +#: emenueditor.cpp:350 +msgid "You should delete all the items from the submenu, before you can delete it!" +msgstr "Mielőtt törlöd ezt a könyvtárat távolítsd el a tartalmát!" + diff --git a/l10n/hu/epanelconf.po b/l10n/hu/epanelconf.po new file mode 100755 index 0000000..812ff2a --- /dev/null +++ b/l10n/hu/epanelconf.po @@ -0,0 +1,131 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 +#: epanelconf.cpp:35 +#: epanelconf.cpp:60 +#: epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Futtatható fájlok (*.*), *, Minden fájl (*.*), *" + +#: epanelconf.cpp:26 +#: epanelconf.cpp:36 +#: epanelconf.cpp:61 +#: epanelconf.cpp:71 +msgid "File selection..." +msgstr "Fájl kiválasztása..." + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "Panel beállítások" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "Be&zár" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "Alkalmazások" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "Panel alkalmazások" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "Hangerőszabályzó program:" + +#: epanelconf.cpp:97 +#: epanelconf.cpp:177 +msgid "&Browse..." +msgstr "&Tallóz..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "Dátum/idő program:" + +#: epanelconf.cpp:103 +#: epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "Ta&llóz..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "Elrejtés" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "Panel automatikus elrejtése" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "Munkaterületek" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "Munkaterületek száma:" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "Munkaterület nevek:" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "MT 1:" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "MT 2:" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "MT 3:" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "MT 4:" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "MT 5:" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "MT 6:" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "MT 7:" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "MT 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Alapértelmezések" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Alapértelmezett programok" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Böngésző:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Terminál:" + diff --git a/l10n/hu/esvrconf.po b/l10n/hu/esvrconf.po new file mode 100755 index 0000000..bd31336 --- /dev/null +++ b/l10n/hu/esvrconf.po @@ -0,0 +1,63 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-10 14:54+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr "" + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr "" + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr "Képernyőkímélő beállítások" + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr "Képernyőkímélő" + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr "Idö:" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "&OK" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "Mégs&em" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr "Készenlét:" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr "Pihen:" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr "Kikapcsol:" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "Engedélyez" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "&Alkalmaz" + diff --git a/l10n/hu/etimedate.po b/l10n/hu/etimedate.po new file mode 100755 index 0000000..e66cdad --- /dev/null +++ b/l10n/hu/etimedate.po @@ -0,0 +1,53 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:22+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Dátum és Idő" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Rendszeridő beállítása. ->Csak rendszergazdának!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "Mégs&em" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Dátum/idő" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Időzónák" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "Hiba az idő beállítása közben. Valószínűleg nem vagy rendszergazda!" + +#: fl_time.cpp:397 +#: fl_time.cpp:405 +#: fl_time.cpp:442 +msgid "Zone information not found." +msgstr "A zóna információkat nem találom." + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Időzóna beállítása sikertelen!" + diff --git a/l10n/hu/evolume.po b/l10n/hu/evolume.po new file mode 100755 index 0000000..59ecd8f --- /dev/null +++ b/l10n/hu/evolume.po @@ -0,0 +1,66 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:23+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "Az eszköz beállítása sikertelen." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "Hangerőszabályzó: [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "Hangerőszabályzó" + +#: evolume.cpp:274 +msgid "&File" +msgstr "&Fájl" + +#: evolume.cpp:275 +#: prefs.cpp:63 +msgid "Preferencies" +msgstr "Beállítások" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "Kilépés" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "Se&gítség" + +#: evolume.cpp:286 +msgid "About" +msgstr "Magamról" + +#: evolume.cpp:406 +#, c-format +msgid "Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "A %s keverő eszköz megnyitása sikertelen. Állítsd be a megfelelő eszközt a beállításoknál!" + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "Keverő eszköz" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "Eszköz neve:" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "Mégs&em" + diff --git a/l10n/hu/ewmconf.po b/l10n/hu/ewmconf.po new file mode 100755 index 0000000..7fa11bc --- /dev/null +++ b/l10n/hu/ewmconf.po @@ -0,0 +1,141 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:23+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "Témák (*.theme), *.theme, Minden fájl (*.*), *" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "Témák..." + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Ablakkezelő beállítások" + +#: ewmconf.cpp:143 +msgid "&Titlebar" +msgstr "&Fejléc" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "Igazítás:" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "Balra" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "Jobbra" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "Középen" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "Mag.:" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Inaktív szöveg szín:" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Inaktív fejléc szín:" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Aktív szöveg szín:" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Aktív fejléc szín:" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "Stílus:" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "Egyszínű" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "Vízszintes színátmenet" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "Karcsú" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "Megemelt" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "Süllyesztett" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "Plasztik" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "&Téma használata" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "Útvonal:" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "..." + +#: ewmconf.cpp:213 +#: ewmconf.cpp:216 +#: ewmconf.cpp:243 +msgid "label" +msgstr "címke" + +#: ewmconf.cpp:221 +msgid "&Resizing" +msgstr "Á&tméretezés" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Animált maximalizálás" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Sebesség:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Ablaktartalom megjelenítése átméretezésnél" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&Alkalmaz" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "Mégs&em" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Szín kiválasztása" + diff --git a/l10n/hu/eworkpanel.po b/l10n/hu/eworkpanel.po new file mode 100755 index 0000000..60246e0 --- /dev/null +++ b/l10n/hu/eworkpanel.po @@ -0,0 +1,179 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-02-09 11:23+0100\n" +"Last-Translator: Nemeth Otto \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "Az Equinox Desktop Environment -ről" + +#: aboutdialog.cpp:17 +msgid "Equinox Desktop Environment " +msgstr "Equinox Desktop Environment " + +#: aboutdialog.cpp:25 +msgid " This program is based in part on the work of FLTK project (www.fltk.org). This program is free software, you can redistribute it and/or modify it under the terms of 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 Licence along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" + +#: aboutdialog.cpp:38 +#: logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "címke" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "(C)Copyright 2000-2004 EDE Authors" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" +"CPU terh.:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" + +#: item.cpp:91 +msgid "Open with terminal..." +msgstr "Megnyitás terminálban..." + +#: item.cpp:92 +msgid "Open with browser..." +msgstr "Megnyitás böngészővel..." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Menü bezárása" + +#: keyboardchooser.cpp:86 +#: keyboardchooser.cpp:179 +msgid "More..." +msgstr "Egyéb..." + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "Nincs megfelelő jogosultságod az újraindításhoz !" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "Nincs megfelelő jogosultságod a leállításhoz !" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Kilépés" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "&kijelentkezés" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Kijelentkezés." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "a számítógép új&raindítása" + +#: logoutdialog.cpp:203 +msgid "Restart the computer." +msgstr "A számítógép újraindítása." + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "Újraindítás - Nincs megfelelő jogosultságod." + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "a &számítógép leállítása" + +#: logoutdialog.cpp:213 +msgid "Shut down the computer." +msgstr "A számítógép leállítása." + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "Leállítás - Nincs megfelelő jogosultságod." + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "Mégs&em" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Kijelentkezés, újraindítás vagy leállítás?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Üdvözöllel az Equinox Desktop Environment-ben." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Könyvtár megnyitása..." + +#: taskbutton.cpp:165 +msgid " Close " +msgstr "Bezárás" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "Kilövés" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "Minimalizálás" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "Visszaállítás" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Fogadott: %ld kB (%.1f kB/s)\n" +"Küldött: %ld kB (%.1f kB/s)\n" +"Időtartam: %d perc %d másodperc" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Munkaterület" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "Asztal megjelenítése" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Munkaterületek" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Beállítások" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "Az EDÉ-ről..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Hangerőszabályzó" + diff --git a/l10n/id.tar.gz b/l10n/id.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..f207596b25bca2c14af716ce786d3afa8e1d91ad GIT binary patch literal 12448 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 literal 0 HcmV?d00001 diff --git a/l10n/id/ecolorconf.po b/l10n/id/ecolorconf.po new file mode 100755 index 0000000..bd53597 --- /dev/null +++ b/l10n/id/ecolorconf.po @@ -0,0 +1,203 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ecolorconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 202-11-29 13:31+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Seting warna dan font" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Warna default" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Warna" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Warna label" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Warna pilihan" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Warna teks pilihan" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Warna off" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Warna sorot" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Warna label sorot" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Warna teks" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Latar belakang" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Teks latar belakang" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Tooltip" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Warna tooltip" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Warna teks tooltip" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Aktifkan efek" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Aktifkan" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Tipe efek:" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "Tidak ada" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "Animasi" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "Fading" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Tunda:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Font" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Font label:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Font teks:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Ukuran label:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Ukuran teks:" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Pengkodean:" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Menu" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Aktifkan efek subwindow" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Kecepatan:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Lainnya" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "Aktifkan animasi MDI" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "Animasi opaque MDI" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Aktifkan efek keadaan citra" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "&Simpan sebagai..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "Berlakukan warna ke semua &program" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Skema:" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "Berl&akukan" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "&Batal" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Pilih warna" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "Warna dan warna label sama. Edit warna lebih dulu." + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Simpan skema sebagai:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Skema baru" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/l10n/id/econtrol.po b/l10n/id/econtrol.po new file mode 100755 index 0000000..36e481e --- /dev/null +++ b/l10n/id/econtrol.po @@ -0,0 +1,193 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: econtrol 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 202-11-29 13:52+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Utilitas konfigurasi ini menetapkan ikon di desktop." + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Utilitas konfigurasi ini menetapkan warna global." + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Utilitas konfigurasi ini menetapkan screensaver." + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "Utilitas konfigurasi ini menetapkan warna dan perilaku window manager." + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Utilitas konfigurasi ini menetapkan parameter untuk sistem window." + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "" +"Utilitas konfigurasi ini menolong anda menginstallkan perangkat lunak baru." + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "" +"Utilitas konfigurasi ini menunjukkan dan menetapkan waktu dan tanggal " +"komputer." + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Utilitas konfigurasi ini menetapkan perilaku panel." + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "Panel kontrol" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&File" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Keluar" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "&Pertolongan" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "&Tentang" + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +"Selamat datang di panel kontrol. Disini anda dapat men-setup hal-hal " +"tertentu di komputer anda." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Ikon" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Seting ikon." + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Warna" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Seting warna" + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Screen saver" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Konfigurasi screensaver." + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Window manager" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Seting window manager." + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Tampilan" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Seting tampilan." + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Install perangkat lunak baru" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Instalasi perangkat lunak." + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Jam dan tanggal" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Seting jam dan tanggal." + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Panel" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Konfigurasi panel." + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Siap" + +#~ msgid "About Control panel" +#~ msgstr "Tentang Panel kontrol" + +#~ msgid "&Close" +#~ msgstr "&Tutup" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +#~ "Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +#~ "atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +#~ "Public License, versi 2 atau versi yang lebih baru. Program ini " +#~ "didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +#~ "tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General " +#~ "Public License untuk lebih jelasnya. Anda seharusnya telah menerima " +#~ "salinan GNU General Public License bersama dengan program ini; jikat " +#~ "tidak, silahkan minta ke Free Software Foundation, Inc., 675 Mass Ave, " +#~ "Cambridge, MA 02139, USA." + +#~ msgid "This config utility shows system information." +#~ msgstr "Utilitas konfigurasi ini menunjukkan informasi sistem." + +#~ msgid "This config utility sets printer." +#~ msgstr "Utilitas konfigurasi ini menetapkan printer." + +#~ msgid "Printers" +#~ msgstr "Printer" + +#~ msgid "Printers management." +#~ msgstr "Pengelolaan printer." + +#~ msgid "Hardware center" +#~ msgstr "Pusat perangkat keras" + +#~ msgid "Hardware center." +#~ msgstr "Pusat perangkat keras." diff --git a/l10n/id/edewm.po b/l10n/id/edewm.po new file mode 100755 index 0000000..ad79606 --- /dev/null +++ b/l10n/id/edewm.po @@ -0,0 +1,89 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edewm 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 202-11-29 14:20+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Ruangkerja %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Tanpa judul" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Sticky" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Maksimalkan" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Minimalkan" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Ke Desktop" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Tutup" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Kembalikan" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Window manager lain sedang berjalan. Anda harus menghentikannya sebelum " +"menjalankan %s." diff --git a/l10n/id/edisplayconf.po b/l10n/id/edisplayconf.po new file mode 100755 index 0000000..647d5e7 --- /dev/null +++ b/l10n/id/edisplayconf.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edisplayconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 202-11-29 14:29+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Konfigurasi tampilan" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Mouse" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Akselerasi" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Threshold (pixel)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Bel" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Volumen dalam %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Pitch dalam Hz" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Durasi dalam milidetik" + +#: edisplayconf.cpp:116 +#, fuzzy +msgid "Test" +msgstr "&Tes" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Keyboard" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " tombol Repeat diaktifkan" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Klik volumen %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Layar" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "&Tes" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Waktu tunda aktivasi (menit)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr " Pengosong layar diaktifkan" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Waktu tunda perubahan pola (menit)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Kosong" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Pola" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "&Batal" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Aktifkan" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/l10n/id/efinder.po b/l10n/id/efinder.po new file mode 100755 index 0000000..2cccaeb --- /dev/null +++ b/l10n/id/efinder.po @@ -0,0 +1,342 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: efinder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:29+0100\n" +"PO-Revision-Date: 2002-12-17 16:07+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 efinder.cpp:322 +msgid "Permissions" +msgstr "Permisi" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "Pemilik" + +#: efinder.cpp:71 efinder.cpp:88 efinder.cpp:105 +msgid "Read" +msgstr "Baca" + +#: efinder.cpp:74 efinder.cpp:91 efinder.cpp:108 +msgid "Write" +msgstr "Tulis" + +#: efinder.cpp:77 efinder.cpp:94 efinder.cpp:111 +msgid "Execute" +msgstr "Eksekusi" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "Set UID" + +#: efinder.cpp:85 +msgid "Group" +msgstr "Grup" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "Set GID" + +#: efinder.cpp:102 +msgid "Other" +msgstr "Lainnya" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "Sticky" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "&Tutup" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr "Pilih direktori" + +#: efinder.cpp:226 efinder.cpp:231 efinder.cpp:232 +msgid "Find" +msgstr "Temukan" + +#: efinder.cpp:236 +msgid "Path:" +msgstr "Path:" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "&Browse" + +#: efinder.cpp:245 +msgid "Find path." +msgstr "Temukan path." + +#: efinder.cpp:249 +msgid "File filter:" +msgstr "Filter file:" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr "Cari di subdirektori" + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "Batasi hasil untuk n file pertama:" + +#: efinder.cpp:271 +msgid "Content" +msgstr "Isi" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr "Berisi:" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr "Membedakan huruf besar dan kecil" + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr "Perluasan regexp" + +#: efinder.cpp:295 +msgid "Filter options" +msgstr "Pilihan filter" + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "Pertimbangan" + +#: efinder.cpp:300 +msgid "File type:" +msgstr "Tipe file:" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder.cpp:304 +#, fuzzy +msgid "Directory" +msgstr "Pilih direktori" + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "Tinggal pada satu filesistem" + +#: efinder.cpp:325 +msgid "User/group:" +msgstr "Pemakai/grup" + +#: efinder.cpp:330 +msgid "User id:" +msgstr "id pemakai:" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr "id grup:" + +#: efinder.cpp:344 +msgid "Size:" +msgstr "Ukuran" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr "Lebih besar dari:" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr "dan lebih kecil dari(KB):" + +#: efinder.cpp:359 +msgid "Time:" +msgstr "Waktu:" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Dimodifikasi" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "Diubah" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "Diakses" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr "dalam sebelumnya:" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "Menit" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "Jam" + +#: efinder.cpp:395 +msgid "Days" +msgstr "Hari" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr "Bulan" + +#: efinder.cpp:413 +msgid "Content options" +msgstr "Pilihan isi" + +#: efinder.cpp:415 +msgid "General considerations" +msgstr "Pertimbangan umum" + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "Jangan melihat isi file biner" + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "Mengeluarkan jumlah baris yang sesuai" + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr "Cocok dimanapun" + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr "Cocok hanya seluruh kata" + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr "Cocok hanya keseluruhan baris" + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "Mengeluarkan file-file yang tidak ada kesesuaian ditemukan" + +#: efinder.cpp:445 +msgid "About" +msgstr "Tentang" + +#: efinder.cpp:447 +#, fuzzy +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" +"(C) Hak cipta 2000-2002 oleh Martin Pekar. Program ini menggunakan kode dari " +"xfglob yang merupakan (C) Hak cipta 2000-2001 oleh Edscott Wilson Gracia." + +#: efinder.cpp:458 +msgid "Filename" +msgstr "Namafile" + +#: efinder.cpp:459 +msgid "Size" +msgstr "Ukuran" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Dimodifikasi terakhir" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "Hak" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "&Temukan" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr "Memulai pencarian." + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "&Batal" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "&Stop" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr "Stop pencarian." + +#: eglob.cpp:446 +msgid "Search finished." +msgstr "Pencarian selesai." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr "Tidak ada yang ditemukan." + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "Ditemukan %d file" + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "Diinterupsi karena batas maksimum terlampaui." + +#~ msgid "Finder for Equinox Desktop Environment v. 1.0" +#~ msgstr "Finder untuk Equinox Desktop Environment v. 1.0" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +#~ msgstr "" +#~ "Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +#~ "Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +#~ "atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +#~ "Public License, versi 2 atau versi yang lebih baru. Program ini " +#~ "didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +#~ "tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General " +#~ "Public License untuk lebih jelasnya. Anda seharusnya telah menerima " +#~ "salinan GNU General Public License bersama dengan program ini; jikat " +#~ "tidak, silahkan minta ke Free Software Foundation, Inc., 675 Mass Ave, " +#~ "Cambridge, MA 02139, USA." diff --git a/l10n/id/eiconman.po b/l10n/id/eiconman.po new file mode 100755 index 0000000..e596bc1 --- /dev/null +++ b/l10n/id/eiconman.po @@ -0,0 +1,258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconman 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 202-11-29 14:43+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Seting latar belakang" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Latar belakang" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "&Warna..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "Gunakan wallpaper" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Citra:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Browse..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Opasitas:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "Mode:" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "Tengah" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "Stretch" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "Stretch (aspek)" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "Tiled" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "&Terapkan" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "&Batal" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "&Buka" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "&Hapus" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Properti" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Nama ikon harus diisi." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Hapus ikon ini?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +"Penghapusan ikon %s gagal. Anda mungkin tidak mempunyai hak tulis terhadap " +"file ini" + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Masukkan nama ikon baru:" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Ikon dengan nama sama telah ada." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d byte" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "&Item desktop baru" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "&Refresh" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "Seting" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr "Seting latar belakang" + +#: eiconman.cpp:718 +#, fuzzy +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" +"Citra Png, *.png,Citra Xpm, *.xpm,Citra Jpeg, *.{jpg|jpeg},Citra Gif, *.gif," +"Citra Bmp, *.bmp,Pilih wallpaper:" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr "Gunakan wallpaper" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "Pilih warna" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Buka lokasi..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Pemilihan file ikon" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Properti ikon" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Ikon" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Nama:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Ukuran:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Perintah:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Seting" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Link file:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Nama ikon:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Lokasi untuk dibuka:" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Nama file ikon:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Tutup" + +#~ msgid "&Edit" +#~ msgstr "&Edit" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr "Masukkan nama program atau lokasi untuk dibuka:" + +#~ msgid "Background color selection..." +#~ msgstr "Pemilihan warna latar belakang..." + +#~ msgid "Image selection..." +#~ msgstr "Pemilihan citra" + +#~ msgid "Wallpaper" +#~ msgstr "Wallpaper" + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ "Citra (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, Semua file (*." +#~ "*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr "Ikon (*.png), *.png, Semua file (*.*), *" + +#~ msgid "None" +#~ msgstr "Tidak ada" + +#~ msgid "&Bg Properties" +#~ msgstr "Properti &Bg" + +#~ msgid "All Files, *" +#~ msgstr "Semua file, *" diff --git a/l10n/id/eiconsconf.po b/l10n/id/eiconsconf.po new file mode 100755 index 0000000..5089303 --- /dev/null +++ b/l10n/id/eiconsconf.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconsconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 202-11-29 14:58+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Seting ikon" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "&Batal" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Terapkan" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Look&&feel" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Warna latar belakang" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Warna label" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Lebar maximum: " + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Tinggi font: " + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Spasi grid: " + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Ikon tersusun otomatis" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Bekerja hanya dengan satu klik" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Bersihkan ini, untuk mendapatkan latar belakang transparan." + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Pilih warna" diff --git a/l10n/id/elauncher.po b/l10n/id/elauncher.po new file mode 100755 index 0000000..caf6533 --- /dev/null +++ b/l10n/id/elauncher.po @@ -0,0 +1,179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-11-29 15:39+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&OK" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Pemilihan file..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Buka..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Buka:" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Ketikkan lokasi yang ingin anda buka atau nama dari program yang ingin anda " +"jalankan. (Prefiks yang diijinkan adalah: http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "&Batal" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Browse..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/l10n/id/emenueditor.po b/l10n/id/emenueditor.po new file mode 100755 index 0000000..c4fed1a --- /dev/null +++ b/l10n/id/emenueditor.po @@ -0,0 +1,136 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-11-29 15:05+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Pemilihan file ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Editor menu" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&File" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Keluar" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Program:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Klik pada submenu atau pada item yang anda inginkan" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Submenu baru" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Hapus submenu" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Item baru" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Hapus item" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Edit item" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Silahkan, masukkan nama dari item menu." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Ikon (*.png), *.png, Semua file (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Pilih file ikon..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Edit item" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Nama file:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "Nama dalam menu:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Perintah untuk dieksekusi:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "Bro&wse..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Nama file ikon:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "$Simpan" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "&Batal" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "&Browse..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Folder baru" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Silahkan masukan nama dari submenu baru:" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Tidak bisa membuat submenu!" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "" +"Anda harus menghapus semua item dari submenu, sebelum anda bisa menghapus " +"submenu!" + +#~ msgid "Go up..." +#~ msgstr "Ke atas..." + +#~ msgid "Go up one level" +#~ msgstr "Ke atas satu level" diff --git a/l10n/id/epanelconf.po b/l10n/id/epanelconf.po new file mode 100755 index 0000000..4a2a7fa --- /dev/null +++ b/l10n/id/epanelconf.po @@ -0,0 +1,126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: epanelconf\n" +"POT-Creation-Date: 2002-10-17 18:15+0000\n" +"PO-Revision-Date: 2002-11-29 15:30+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + +#: epanelconf.cpp:26 epanelconf.cpp:36 epanelconf.cpp:61 epanelconf.cpp:71 +msgid "File selection..." +msgstr "Pemilihan file" + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "Seting panel" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "Ter&apkan" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "&Tutup" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "Utilitas" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "Utilitas panel" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "Program pengendali volumen" + +#: epanelconf.cpp:97 epanelconf.cpp:177 +msgid "&Browse..." +msgstr "&Browse..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "Program jam dan tanggal:" + +#: epanelconf.cpp:103 epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "Br&owse..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "Sembunyikan otomatis" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "Sembunyikan panel otomatis" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "Ruangkerja" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "Jumlah ruangkerja:" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "Nama ruangkerja:" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "RK 1:" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "RK 2:" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "RK 3:" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "RK 4:" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "RK 5:" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "RK 6:" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "RK 7:" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "RK 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Handler" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Program handler" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Browser internet:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Terminal:" diff --git a/l10n/id/erun.po b/l10n/id/erun.po new file mode 100755 index 0000000..de9a747 --- /dev/null +++ b/l10n/id/erun.po @@ -0,0 +1,51 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-29 15:39+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: erun.cpp:861 +msgid "File selection..." +msgstr "Pemilihan file..." + +#: erun.cpp:871 +msgid "Open..." +msgstr "Buka..." + +#: erun.cpp:874 +msgid "Open:" +msgstr "Buka:" + +#: erun.cpp:883 +msgid "" +"Type the location you want to open or the name of the program you want to run. " +"(Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Ketikkan lokasi yang ingin anda buka atau nama dari program yang ingin anda jalankan. " +"(Prefiks yang diijinkan adalah: http:, ftp:, gg:, av:, leo:)" + +#: erun.cpp:893 +msgid "&Browse..." +msgstr "&Browse..." + +#: erun.cpp:887 +msgid "&OK" +msgstr "&OK" + +#: erun.cpp:891 +msgid "&Cancel" +msgstr "&Batal" + +#: erun.cpp:853 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Dapat dieksekusi (*.*), *, Semua file (*.*), *" + diff --git a/l10n/id/etimedate.po b/l10n/id/etimedate.po new file mode 100755 index 0000000..b3b2667 --- /dev/null +++ b/l10n/id/etimedate.po @@ -0,0 +1,146 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etimedate\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-11-29 15:44+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Jam dan tanggal" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Terapkan" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Set waktu sistem. ->Hanya root!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "&Batal" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Jam/tanggal" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Zone waktu" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "Salah seting jam. Anda mungkin bukan superuser!" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Tidak bisa mensetup zone waktu!" + +#~ msgid "H-" +#~ msgstr "H-" + +#~ msgid "H+" +#~ msgstr "H+" + +#~ msgid "M-" +#~ msgstr "M-" + +#~ msgid "M+" +#~ msgstr "M+" + +#~ msgid "Su" +#~ msgstr "Mg" + +#~ msgid "Mo" +#~ msgstr "Sn" + +#~ msgid "Tu" +#~ msgstr "Sl" + +#~ msgid "We" +#~ msgstr "Rb" + +#~ msgid "Th" +#~ msgstr "Km" + +#~ msgid "Fr" +#~ msgstr "Jm" + +#~ msgid "St" +#~ msgstr "St" + +#~ msgid "Y-" +#~ msgstr "Y-" + +#~ msgid "Previous year." +#~ msgstr "Tahun sebelumnya." + +# msgid "M-" +# msgstr "M-" +#~ msgid "Previous month." +#~ msgstr "Bulan sebelumnya." + +# msgid "M+" +# msgstr "M+" +#~ msgid "Next month." +#~ msgstr "Bulan berikutnya." + +#~ msgid "Y+" +#~ msgstr "Y+" + +#~ msgid "Next year." +#~ msgstr "Tahun berikutnya." + +#~ msgid "January" +#~ msgstr "Januari" + +#~ msgid "Febuary" +#~ msgstr "Februari" + +#~ msgid "March" +#~ msgstr "Maret" + +#~ msgid "April" +#~ msgstr "April" + +#~ msgid "May" +#~ msgstr "Mei" + +#~ msgid "June" +#~ msgstr "Juni" + +#~ msgid "July" +#~ msgstr "Juli" + +#~ msgid "August" +#~ msgstr "Agustus" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Oktober" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "Desember" diff --git a/l10n/id/etip.po b/l10n/id/etip.po new file mode 100755 index 0000000..ffba7b6 --- /dev/null +++ b/l10n/id/etip.po @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-11-29 15:50+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +"Untuk memulai suatu aplikasi, caranya sederhana. Tekan tombol EDE, gerakkan " +"ke menu Programs, pilih kategori dan klik pada program yang diinginkan." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" +"Untuk keluar dari Equinox Desktop Environment, tekan tombol EDE dan kemudian " +"logout." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "Untuk mengunci komputer, tekan tombol EDE dan kemudian lock." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +"Untuk mensetup hal-hal tertentu di komputer anda, tekan tombol EDE, menu " +"Panel dan kemudian Control panel." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +"Untuk menambahkan suatu program yang tidak berada di menu Programs, klik " +"pada tombol EDE, menu Panel, dan kemudian menu Edit panel/" + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "Tips startup" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "Jangan perlihatkan dialog ini lain kali" + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr "Selamat datang di Equinox Desktop Environment" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< &Sebelum" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "&Berikut >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "&Tutup" diff --git a/l10n/id/evolume.po b/l10n/id/evolume.po new file mode 100755 index 0000000..27d0bb6 --- /dev/null +++ b/l10n/id/evolume.po @@ -0,0 +1,101 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: evolume\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: 2002-12-18 14:34+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "Tidak bisa mensetup devais, maaf." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "Pengendali volume: [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "Pengendali volume" + +#: evolume.cpp:274 +msgid "&File" +msgstr "&File" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "Preferensi" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "Keluar" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "&Pertolongan" + +#: evolume.cpp:286 +msgid "About" +msgstr "Tentang" + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" +"Gagal membuka devais mixer %s. Setup devais yang benar pada dialog " +"konfigurasi." + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "Devais suara" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "Nama devais:" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "&Batal" + +#~ msgid "About Volume control" +#~ msgstr "Tentang pengendali volume" + +#~ msgid "&Close" +#~ msgstr "&Tutup" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +#~ "Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +#~ "atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +#~ "Public License, versi 2 atau versi yang lebih baru. Program ini " +#~ "didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +#~ "tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General " +#~ "Public License untuk lebih jelasnya. Anda seharusnya telah menerima " +#~ "salinan GNU General Public License bersama dengan program ini; jikat " +#~ "tidak, silahkan minta ke Free Software Foundation, Inc., 675 Mass Ave, " +#~ "Cambridge, MA 02139, USA." diff --git a/l10n/id/ewmconf.po b/l10n/id/ewmconf.po new file mode 100755 index 0000000..c0d4540 --- /dev/null +++ b/l10n/id/ewmconf.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ewmconf\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-11-29 15:44+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Seting window manager" + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "Baris judul" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Warna label baris judul" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Warna judul baris" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Warna label judul baris yang aktif" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Warna judul baris aktif" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr "Pindahkan && Ubah ukuran" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Animasikan perubahan ukuran" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Kecepatan:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Perlihatkan isi window pada saat mengubah ukuran" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "Ter&apkan" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&Batal" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Pilih warna" + +#~ msgid "Draw gradient titlebar" +#~ msgstr "Hapus gradien judul baris" diff --git a/l10n/id/eworkpanel.po b/l10n/id/eworkpanel.po new file mode 100755 index 0000000..2b3f035 --- /dev/null +++ b/l10n/id/eworkpanel.po @@ -0,0 +1,257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-11-29 16:05+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: id \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "Tentang Equinox Desktop Environment" + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr "Tentang Equinox Desktop Environment" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" +"Program ini berbasis pada hasil pekerjaan proyek FLTK (www.fltk.org). " +"Program ini adalah free software, anda bisa mendistribusikan kembali dan/" +"atau memodifikasinya dengan syarat-syarat yang diatur pada GNU General " +"Public License, versi 2 atau versi yang lebih baru. Program ini " +"didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN; bahkan " +"tanpa jaminan daya jual dan tujuan-tujuan tertentu. Lihat GNU General Public " +"License untuk lebih jelasnya. Anda seharusnya telah menerima salinan GNU " +"General Public License bersama dengan program ini; jikat tidak, silahkan " +"minta ke Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, " +"USA." + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr "Buka dengan xterm.." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr "Buka dengan browser.." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Menu Tutup" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Logout" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "&logut dari sessi saat ini" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Logout dari sessi saat ini." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "$restart komputer" + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr "$restart komputer" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "&shut down komputer" + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr "&shut down komputer" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&Batalkan" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Logout, restart atau shut down komputer?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Selamat datang di Equinox Desktop Environment." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Buka Direktori.." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr "Menu Tutup" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Diterima: %ld kB (%.1f kB/detik)\n" +"Dikirim: %ld kB (%.1f kB/detik)\n" +"Durasi: %d menit %d detik" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Ruangkerja" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Ruangkerja" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Seting" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "Tentang EDE..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Kontrol volume" + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr "CPU Load: %3.2f %3.2f %3.2f, %d processes." + +#~ msgid "&Programs" +#~ msgstr "&Program" + +#~ msgid "&Favourites" +#~ msgstr "&Favorit" + +#~ msgid "F&ind" +#~ msgstr "Car&i" + +#~ msgid "&Help" +#~ msgstr "&Pertolongan" + +#~ msgid "&About" +#~ msgstr "&Tentang" + +#~ msgid "&Run..." +#~ msgstr "&Jalankan..." + +#~ msgid "&Panel" +#~ msgstr "&Panel" + +#~ msgid "Edit panels menu" +#~ msgstr "Menu edit panel" + +#~ msgid "Panel settings" +#~ msgstr "Seting panel" + +#~ msgid "Control panel" +#~ msgstr "Panel kontrol" + +#~ msgid "Install new software" +#~ msgstr "Install perangkat lunak baru" + +#~ msgid "L&ock screen" +#~ msgstr "L&ock layar" + +#~ msgid "&Logout" +#~ msgstr "&Logout" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Restart komputer. Hanya diijinkan untuk root !" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Shut down komputer. Hanya diijinkan untuk root !" + +#~ msgid "&User programs" +#~ msgstr "Program-program &User" + +#~ msgid "&Browser" +#~ msgstr "&Browser" diff --git a/l10n/nontranslated.tar.gz b/l10n/nontranslated.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..57b84f4205ce1fd855a19dd9795b1fb3096ded97 GIT binary patch literal 8928 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 literal 0 HcmV?d00001 diff --git a/l10n/nontranslated/common.pot b/l10n/nontranslated/common.pot new file mode 100755 index 0000000..66040bd --- /dev/null +++ b/l10n/nontranslated/common.pot @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:39+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:27 +msgid "About " +msgstr "" + +#: aboutdialog.cpp:36 +msgid "Part of Equinox Desktop Environment " +msgstr "" + +#: aboutdialog.cpp:40 +msgid "(C) Copyright 2000-2005 EDE Authors" +msgstr "" + +#: aboutdialog.cpp:44 +msgid "" +"This program is licenced under terms of the GNU General Public License " +"version 2 or newer." +msgstr "" + +#: aboutdialog.cpp:49 +msgid "Click here for details." +msgstr "" + +#: aboutdialog.cpp:58 +msgid "&Close" +msgstr "" diff --git a/l10n/nontranslated/ecolorconf.pot b/l10n/nontranslated/ecolorconf.pot new file mode 100755 index 0000000..e2a9176 --- /dev/null +++ b/l10n/nontranslated/ecolorconf.pot @@ -0,0 +1,205 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "" + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "" + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/l10n/nontranslated/econtrol.pot b/l10n/nontranslated/econtrol.pot new file mode 100755 index 0000000..cd1926f --- /dev/null +++ b/l10n/nontranslated/econtrol.pot @@ -0,0 +1,143 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "" + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "" + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "" + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "" + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "" + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "" + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "" + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "" + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "" + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "" + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "" + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "" + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "" + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "" + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "" + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "" + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "" + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "" diff --git a/l10n/nontranslated/edewm.pot b/l10n/nontranslated/edewm.pot new file mode 100755 index 0000000..bcf3b89 --- /dev/null +++ b/l10n/nontranslated/edewm.pot @@ -0,0 +1,88 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-07-22 10:29+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edewm/Desktop.cpp:138 edewm/Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "" + +#: edewm/Frame.cpp:106 +msgid "Untitled" +msgstr "" + +#: edewm/Frame.cpp:932 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: edewm/Titlebar.cpp:215 +msgid "Sticky" +msgstr "" + +#: edewm/Titlebar.cpp:275 edewm/Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: edewm/Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: edewm/Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: edewm/Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: edewm/Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: edewm/Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: edewm/Titlebar.cpp:318 edewm/Titlebar.cpp:331 +msgid "Maximize" +msgstr "" + +#: edewm/Titlebar.cpp:319 +msgid "Minimize" +msgstr "" + +#: edewm/Titlebar.cpp:321 +msgid "To Desktop" +msgstr "" + +#: edewm/Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: edewm/Titlebar.cpp:323 +msgid "Close" +msgstr "" + +#: edewm/Titlebar.cpp:330 +msgid "Restore" +msgstr "" + +#: edewm/Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" diff --git a/l10n/nontranslated/edisplayconf.pot b/l10n/nontranslated/edisplayconf.pot new file mode 100755 index 0000000..65447c8 --- /dev/null +++ b/l10n/nontranslated/edisplayconf.pot @@ -0,0 +1,105 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "" + +#: edisplayconf.cpp:116 +msgid "Test" +msgstr "" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr "" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr "" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/l10n/nontranslated/efinder.pot b/l10n/nontranslated/efinder.pot new file mode 100755 index 0000000..5c6ba29 --- /dev/null +++ b/l10n/nontranslated/efinder.pot @@ -0,0 +1,314 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-07-22 10:29+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder/efinder.cpp:65 efinder/efinder.cpp:322 +msgid "Permissions" +msgstr "" + +#: efinder/efinder.cpp:68 +msgid "Owner" +msgstr "" + +#: efinder/efinder.cpp:71 efinder/efinder.cpp:88 efinder/efinder.cpp:105 +msgid "Read" +msgstr "" + +#: efinder/efinder.cpp:74 efinder/efinder.cpp:91 efinder/efinder.cpp:108 +msgid "Write" +msgstr "" + +#: efinder/efinder.cpp:77 efinder/efinder.cpp:94 efinder/efinder.cpp:111 +msgid "Execute" +msgstr "" + +#: efinder/efinder.cpp:80 +msgid "Set UID" +msgstr "" + +#: efinder/efinder.cpp:85 +msgid "Group" +msgstr "" + +#: efinder/efinder.cpp:97 +msgid "Set GID" +msgstr "" + +#: efinder/efinder.cpp:102 +msgid "Other" +msgstr "" + +#: efinder/efinder.cpp:114 +msgid "Sticky" +msgstr "" + +#: efinder/efinder.cpp:119 +msgid "&Close" +msgstr "" + +#: efinder/efinder.cpp:132 +msgid "Select directory" +msgstr "" + +#: efinder/efinder.cpp:226 efinder/efinder.cpp:231 efinder/efinder.cpp:232 +msgid "Find" +msgstr "" + +#: efinder/efinder.cpp:236 +msgid "Path:" +msgstr "" + +#: efinder/efinder.cpp:243 +msgid "&Browse..." +msgstr "" + +#: efinder/efinder.cpp:245 +msgid "Find path." +msgstr "" + +#: efinder/efinder.cpp:249 +msgid "File filter:" +msgstr "" + +#: efinder/efinder.cpp:255 +msgid "Search subdirectories" +msgstr "" + +#: efinder/efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "" + +#: efinder/efinder.cpp:271 +msgid "Content" +msgstr "" + +#: efinder/efinder.cpp:274 +msgid "Containing:" +msgstr "" + +#: efinder/efinder.cpp:279 +msgid "Case sensitive" +msgstr "" + +#: efinder/efinder.cpp:282 +msgid "Extended regexp" +msgstr "" + +#: efinder/efinder.cpp:295 +msgid "Filter options" +msgstr "" + +#: efinder/efinder.cpp:297 +msgid "Considerations" +msgstr "" + +#: efinder/efinder.cpp:300 +msgid "File type:" +msgstr "" + +#: efinder/efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder/efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder/efinder.cpp:304 +msgid "Directory" +msgstr "" + +#: efinder/efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder/efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder/efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder/efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder/efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder/efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "" + +#: efinder/efinder.cpp:325 +msgid "User/group:" +msgstr "" + +#: efinder/efinder.cpp:330 +msgid "User id:" +msgstr "" + +#: efinder/efinder.cpp:336 +msgid "Group id:" +msgstr "" + +#: efinder/efinder.cpp:344 +msgid "Size:" +msgstr "" + +#: efinder/efinder.cpp:351 +msgid "greater than:" +msgstr "" + +#: efinder/efinder.cpp:354 +msgid "and less than(KB):" +msgstr "" + +#: efinder/efinder.cpp:359 +msgid "Time:" +msgstr "" + +#: efinder/efinder.cpp:365 +msgid "Modified" +msgstr "" + +#: efinder/efinder.cpp:368 +msgid "Changed" +msgstr "" + +#: efinder/efinder.cpp:371 +msgid "Accessed" +msgstr "" + +#: efinder/efinder.cpp:377 +msgid "in previous:" +msgstr "" + +#: efinder/efinder.cpp:389 +msgid "Minutes" +msgstr "" + +#: efinder/efinder.cpp:392 +msgid "Hours" +msgstr "" + +#: efinder/efinder.cpp:395 +msgid "Days" +msgstr "" + +#: efinder/efinder.cpp:398 +msgid "Mounths" +msgstr "" + +#: efinder/efinder.cpp:413 +msgid "Content options" +msgstr "" + +#: efinder/efinder.cpp:415 +msgid "General considerations" +msgstr "" + +#: efinder/efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "" + +#: efinder/efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "" + +#: efinder/efinder.cpp:424 +msgid "Match anywhere" +msgstr "" + +#: efinder/efinder.cpp:428 +msgid "Match whole words only" +msgstr "" + +#: efinder/efinder.cpp:431 +msgid "Match whole lines only" +msgstr "" + +#: efinder/efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "" + +#: efinder/efinder.cpp:445 +msgid "About" +msgstr "" + +#: efinder/efinder.cpp:447 +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" + +#: efinder/efinder.cpp:458 +msgid "Filename" +msgstr "" + +#: efinder/efinder.cpp:459 +msgid "Size" +msgstr "" + +#: efinder/efinder.cpp:460 +msgid "Last modified" +msgstr "" + +#: efinder/efinder.cpp:461 +msgid "Rights" +msgstr "" + +#: efinder/efinder.cpp:475 +msgid "&Find" +msgstr "" + +#: efinder/efinder.cpp:478 +msgid "Start the searching." +msgstr "" + +#: efinder/efinder.cpp:480 +msgid "&Cancel" +msgstr "" + +#: efinder/efinder.cpp:483 +msgid "&Stop" +msgstr "" + +#: efinder/efinder.cpp:485 +msgid "Stop the searching." +msgstr "" + +#: efinder/eglob.cpp:446 +msgid "Search finished." +msgstr "" + +#: efinder/eglob.cpp:449 +msgid "Nothing found." +msgstr "" + +#: efinder/eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "" + +#: efinder/eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "" diff --git a/l10n/nontranslated/eiconman.pot b/l10n/nontranslated/eiconman.pot new file mode 100755 index 0000000..0c3a976 --- /dev/null +++ b/l10n/nontranslated/eiconman.pot @@ -0,0 +1,218 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "" + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "" + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "" + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "" + +#: edeskicon.cpp:562 +#, c-format +msgid "%d bytes, %s" +msgstr "" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "" + +#: eiconman.cpp:122 +msgid "&Icons Settings " +msgstr "" + +#: eiconman.cpp:126 +msgid "&Background Settings" +msgstr "" + +#: eiconman.cpp:718 +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" + +#: eiconman.cpp:724 +msgid "Choose wallpaper:" +msgstr "" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "" + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "" diff --git a/l10n/nontranslated/eiconsconf.pot b/l10n/nontranslated/eiconsconf.pot new file mode 100755 index 0000000..718f79d --- /dev/null +++ b/l10n/nontranslated/eiconsconf.pot @@ -0,0 +1,73 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "" + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "" diff --git a/l10n/nontranslated/einstaller.pot b/l10n/nontranslated/einstaller.pot new file mode 100755 index 0000000..e62dbc6 --- /dev/null +++ b/l10n/nontranslated/einstaller.pot @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:39 einstall.cpp:69 +msgid "Please enter the name of the package.\n" +msgstr "" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr "" + +#: einstaller.cpp:512 +msgid "Package selection" +msgstr "" + +#: einstaller.cpp:553 +msgid "Install software package" +msgstr "" + +#: einstaller.cpp:564 +msgid "Enter the name of software package you want to install:" +msgstr "" + +#: einstaller.cpp:568 +msgid "&Browse..." +msgstr "" + +#: einstaller.cpp:571 +msgid "" +"Welcome. This installation wizard will help you to install new software on " +"your computer." +msgstr "" + +#: einstaller.cpp:577 +msgid "Ignore dependencies" +msgstr "" + +#: einstaller.cpp:585 +msgid "Installation results:" +msgstr "" + +#: einstaller.cpp:590 +msgid "Installation status:" +msgstr "" + +#: einstaller.cpp:598 +msgid "<< &Previous" +msgstr "" + +#: einstaller.cpp:603 +msgid "&Install" +msgstr "" + +#: einstaller.cpp:607 +msgid "&Close" +msgstr "" diff --git a/l10n/nontranslated/ekeyconf.pot b/l10n/nontranslated/ekeyconf.pot new file mode 100755 index 0000000..131dfcc --- /dev/null +++ b/l10n/nontranslated/ekeyconf.pot @@ -0,0 +1,55 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-04-03 13:14+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ekeyconf.cpp:47 +msgid "Keyboard settings" +msgstr "" + +#: ekeyconf.cpp:50 +msgid "&OK" +msgstr "" + +#: ekeyconf.cpp:53 +msgid "&Cancel" +msgstr "" + +#: ekeyconf.cpp:56 +msgid "&Apply" +msgstr "" + +#: ekeyconf.cpp:61 +msgid "Shortcuts" +msgstr "" + +#: ekeyconf.cpp:63 +msgid "Keyboard shortcut:" +msgstr "" + +#: ekeyconf.cpp:68 +msgid "" +"To set a shortcut:\n" +" Click here, then type the key combination you want.\n" +"To delete the shortcut:\n" +" Click here, then type backspace.\n" +"To get out of shortcut-setting mode:\n" +" Click the mouse on this again, or on some other field." +msgstr "" + +#: ekeyconf.cpp:72 +msgid "Action:" +msgstr "" diff --git a/l10n/nontranslated/elauncher.pot b/l10n/nontranslated/elauncher.pot new file mode 100755 index 0000000..7264bdd --- /dev/null +++ b/l10n/nontranslated/elauncher.pot @@ -0,0 +1,178 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +msgid "&Ok" +msgstr "" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "" + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "" + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "" + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/l10n/nontranslated/emenueditor.pot b/l10n/nontranslated/emenueditor.pot new file mode 100755 index 0000000..5d667fe --- /dev/null +++ b/l10n/nontranslated/emenueditor.pot @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "" + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "" + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "" + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "" + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "" + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "" diff --git a/l10n/nontranslated/epanelconf.pot b/l10n/nontranslated/epanelconf.pot new file mode 100755 index 0000000..62985bf --- /dev/null +++ b/l10n/nontranslated/epanelconf.pot @@ -0,0 +1,127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-10-17 18:15+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + +#: epanelconf.cpp:26 epanelconf.cpp:36 epanelconf.cpp:61 epanelconf.cpp:71 +msgid "File selection..." +msgstr "" + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "" + +#: epanelconf.cpp:97 epanelconf.cpp:177 +msgid "&Browse..." +msgstr "" + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "" + +#: epanelconf.cpp:103 epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "" + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "" diff --git a/l10n/nontranslated/erun.pot b/l10n/nontranslated/erun.pot new file mode 100755 index 0000000..6482656 --- /dev/null +++ b/l10n/nontranslated/erun.pot @@ -0,0 +1,50 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: erun.cpp:861 +msgid "File selection..." +msgstr "" + +#: erun.cpp:871 +msgid "Open..." +msgstr "" + +#: erun.cpp:874 +msgid "Open:" +msgstr "" + +#: erun.cpp:883 +msgid "" +"Type the location you want to open or the name of the program you want to run. " +"(Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" + +#: erun.cpp:893 +msgid "&Browse..." +msgstr "" + +#: erun.cpp:887 +msgid "&OK" +msgstr "" + +#: erun.cpp:891 +msgid "&Cancel" +msgstr "" + +#: erun.cpp:853 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "" + diff --git a/l10n/nontranslated/esvrconf.pot b/l10n/nontranslated/esvrconf.pot new file mode 100755 index 0000000..dae9701 --- /dev/null +++ b/l10n/nontranslated/esvrconf.pot @@ -0,0 +1,67 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr "" + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr "" + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr "" + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr "" + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr "" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr "" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr "" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr "" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "" diff --git a/l10n/nontranslated/etimedate.pot b/l10n/nontranslated/etimedate.pot new file mode 100755 index 0000000..a9e5707 --- /dev/null +++ b/l10n/nontranslated/etimedate.pot @@ -0,0 +1,57 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "" diff --git a/l10n/nontranslated/etip.pot b/l10n/nontranslated/etip.pot new file mode 100755 index 0000000..c653490 --- /dev/null +++ b/l10n/nontranslated/etip.pot @@ -0,0 +1,81 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" + +#: etip.cpp:810 +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" + +#: etip.cpp:811 +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" + +#: etip.cpp:812 +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" + +#: etip.cpp:813 +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "" + +#: etip.cpp:840 +msgid "Welcome to Equinox Desktop Environment version " +msgstr "" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "" + +#: etip.cpp:859 +msgid "&Close" +msgstr "" diff --git a/l10n/nontranslated/evolume.pot b/l10n/nontranslated/evolume.pot new file mode 100755 index 0000000..33f6576 --- /dev/null +++ b/l10n/nontranslated/evolume.pot @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "" + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "" + +#: evolume.cpp:274 +msgid "&File" +msgstr "" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "" + +#: evolume.cpp:286 +msgid "About" +msgstr "" + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "" diff --git a/l10n/nontranslated/ewmconf.pot b/l10n/nontranslated/ewmconf.pot new file mode 100755 index 0000000..f1782e7 --- /dev/null +++ b/l10n/nontranslated/ewmconf.pot @@ -0,0 +1,145 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "" + +#: ewmconf.cpp:143 +msgid "&Titlebar" +msgstr "" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +msgid "&Resizing" +msgstr "" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "" diff --git a/l10n/nontranslated/eworkpanel.pot b/l10n/nontranslated/eworkpanel.pot new file mode 100755 index 0000000..24187ed --- /dev/null +++ b/l10n/nontranslated/eworkpanel.pot @@ -0,0 +1,185 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "" + +#: aboutdialog.cpp:17 +msgid "Equinox Desktop Environment " +msgstr "" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +msgid "Open with terminal..." +msgstr "" + +#: item.cpp:92 +msgid "Open with browser..." +msgstr "" + +#: item.cpp:94 +msgid "Close Menu" +msgstr "" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "" + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "" + +#: logoutdialog.cpp:203 +msgid "Restart the computer." +msgstr "" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "" + +#: logoutdialog.cpp:213 +msgid "Shut down the computer." +msgstr "" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "" + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "" + +#: taskbutton.cpp:165 +msgid " Close " +msgstr "" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "" + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "" diff --git a/l10n/ru.tar.gz b/l10n/ru.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..7f7e4b055c8e66f6e0ab0f00eaea7349cd3484c1 GIT binary patch literal 13257 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 H02l!PbBqFG literal 0 HcmV?d00001 diff --git a/l10n/ru/ecolorconf.po b/l10n/ru/ecolorconf.po new file mode 100755 index 0000000..15c12e9 --- /dev/null +++ b/l10n/ru/ecolorconf.po @@ -0,0 +1,204 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr " " + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr " " + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr " " + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr " " + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr " " + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr " " + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr " " + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr " " + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr " " + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr " " + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr " " + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr " " + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr " :" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr " :" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr " :" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr " :" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr ":" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr " -" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr ":" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr " -" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr " -" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr " " + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr " " + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr ":" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr " " + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr " , " + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr " :" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr " " + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/l10n/ru/econtrol.po b/l10n/ru/econtrol.po new file mode 100755 index 0000000..bd9774b --- /dev/null +++ b/l10n/ru/econtrol.po @@ -0,0 +1,168 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr " " + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr " " + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr " " + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr " " + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr " , , " + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr " " + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr " " + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr " " + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr " " + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr " " + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +" , ţ " +"." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr " " + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr " " + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr " " + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr " " + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr " " + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr " " + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr " " + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr " " + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr " " + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr " " + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "" + +#~ msgid "About Control panel" +#~ msgstr " " + +#~ msgid "&Close" +#~ msgstr "" + +#~ msgid "This config utility shows system information." +#~ msgstr " " + +#~ msgid "This config utility sets printer." +#~ msgstr " " + +#~ msgid "Printers" +#~ msgstr "" + +#~ msgid "Printers management." +#~ msgstr " " + +#~ msgid "Hardware center" +#~ msgstr "" + +#~ msgid "Hardware center." +#~ msgstr " " diff --git a/l10n/ru/edewm.po b/l10n/ru/edewm.po new file mode 100755 index 0000000..b10b539 --- /dev/null +++ b/l10n/ru/edewm.po @@ -0,0 +1,90 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr " %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr " " + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr " " + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +" . " +" %s." diff --git a/l10n/ru/edisplayconf.po b/l10n/ru/edisplayconf.po new file mode 100755 index 0000000..55160b0 --- /dev/null +++ b/l10n/ru/edisplayconf.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr " " + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr " " + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr ", %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr ", " + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr ", " + +#: edisplayconf.cpp:116 +msgid "Test" +msgstr "" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " ޣ" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr " , %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr " " + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr " ޣ" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr " , " + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr " " + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/l10n/ru/efinder.po b/l10n/ru/efinder.po new file mode 100755 index 0000000..65b1aad --- /dev/null +++ b/l10n/ru/efinder.po @@ -0,0 +1,320 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:29+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 efinder.cpp:322 +msgid "Permissions" +msgstr "" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "" + +#: efinder.cpp:71 efinder.cpp:88 efinder.cpp:105 +msgid "Read" +msgstr "" + +#: efinder.cpp:74 efinder.cpp:91 efinder.cpp:108 +msgid "Write" +msgstr "" + +#: efinder.cpp:77 efinder.cpp:94 efinder.cpp:111 +msgid "Execute" +msgstr "" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "GID" + +#: efinder.cpp:85 +msgid "Group" +msgstr "" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "UID" + +#: efinder.cpp:102 +msgid "Other" +msgstr "" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr " " + +#: efinder.cpp:226 efinder.cpp:231 efinder.cpp:232 +msgid "Find" +msgstr "" + +#: efinder.cpp:236 +msgid "Path:" +msgstr ":" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "..." + +#: efinder.cpp:245 +msgid "Find path." +msgstr " " + +#: efinder.cpp:249 +msgid "File filter:" +msgstr ":" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr " " + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr " n :" + +#: efinder.cpp:271 +msgid "Content" +msgstr "" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr ":" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr " " + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr " " + +#: efinder.cpp:295 +msgid "Filter options" +msgstr " " + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "" + +#: efinder.cpp:300 +msgid "File type:" +msgstr " :" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder.cpp:304 +#, fuzzy +msgid "Directory" +msgstr " " + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr " " + +#: efinder.cpp:325 +msgid "User/group:" +msgstr ":" + +#: efinder.cpp:330 +msgid "User id:" +msgstr ":" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr ":" + +#: efinder.cpp:344 +msgid "Size:" +msgstr ":" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr " , :" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr " , :" + +#: efinder.cpp:359 +msgid "Time:" +msgstr ":" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Σ" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr " :" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "" + +#: efinder.cpp:395 +msgid "Days" +msgstr "" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr ":" + +#: efinder.cpp:413 +msgid "Content options" +msgstr " " + +#: efinder.cpp:415 +msgid "General considerations" +msgstr " " + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr " " + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr " " + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr " " + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr " " + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr " " + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr " " + +#: efinder.cpp:445 +msgid "About" +msgstr " " + +#: efinder.cpp:447 +#, fuzzy +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" +"(C) Copyright 2000-2002 by Martin Pekar. xfglob " +" (C) Copyright 2000-2001 Edscott Wilson Garcia." + +#: efinder.cpp:458 +msgid "Filename" +msgstr " " + +#: efinder.cpp:459 +msgid "Size" +msgstr "" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Σ" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr " " + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr " " + +#: eglob.cpp:446 +msgid "Search finished." +msgstr " ۣ." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr " " + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr " : %d" + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr " - ." + +#~ msgid "Finder for Equinox Desktop Environment v. 1.0" +#~ msgstr " Equinox Desktop Environment v. 1.0" diff --git a/l10n/ru/eiconman.po b/l10n/ru/eiconman.po new file mode 100755 index 0000000..93ca9d0 --- /dev/null +++ b/l10n/ru/eiconman.po @@ -0,0 +1,259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr " " + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr " " + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr ":" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr ":" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr ":" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr " ()" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr " ." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr " ?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +" %s. " +" ." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr " :" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr " ." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d " + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr " " + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr " " + +#: eiconman.cpp:718 +#, fuzzy +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" +" Png, *.png, Xpm, *.xpm, Jpeg, *.{jpg|jpeg}," +" Gif, *.gif, Bmp, *.bmp, :" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr " " + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr " " + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr " ..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr " " + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr " " + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr ":" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr ":" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr ":" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr ":" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr " :" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr " :" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr ":" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "" + +#~ msgid "&Edit" +#~ msgstr "" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr " :" + +#~ msgid "Background color selection..." +#~ msgstr " ..." + +#~ msgid "Image selection..." +#~ msgstr " ..." + +#~ msgid "Wallpaper" +#~ msgstr "" + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ " (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, " +#~ "(*.*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr " (*.png), *.png, (*.*), *" + +#~ msgid "None" +#~ msgstr "" + +#~ msgid "&Bg Properties" +#~ msgstr " " + +#~ msgid "All Files, *" +#~ msgstr " , *" diff --git a/l10n/ru/eiconsconf.po b/l10n/ru/eiconsconf.po new file mode 100755 index 0000000..62967ee --- /dev/null +++ b/l10n/ru/eiconsconf.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr " " + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr " " + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr " : " + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr " : " + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr " : " + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr " : " + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr " : " + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr " " + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr " " + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr " " + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr " " diff --git a/l10n/ru/einstaller.po b/l10n/ru/einstaller.po new file mode 100755 index 0000000..9979f3a --- /dev/null +++ b/l10n/ru/einstaller.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:39 einstall.cpp:69 +msgid "Please enter the name of the package.\n" +msgstr " .\n" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr " (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, (*.*), *" + +#: einstaller.cpp:512 +msgid "Package selection" +msgstr " " + +#: einstaller.cpp:553 +msgid "Install software package" +msgstr " " + +#: einstaller.cpp:564 +msgid "Enter the name of software package you want to install:" +msgstr " , :" + +#: einstaller.cpp:568 +msgid "&Browse..." +msgstr "" + +#: einstaller.cpp:571 +msgid "" +"Welcome. This installation wizard will help you to install new software on " +"your computer." +msgstr "" +" . " +" " + +#: einstaller.cpp:577 +msgid "Ignore dependencies" +msgstr " " + +#: einstaller.cpp:585 +msgid "Installation results:" +msgstr " :" + +#: einstaller.cpp:590 +msgid "Installation status:" +msgstr " :" + +#: einstaller.cpp:598 +msgid "<< &Previous" +msgstr "<< " + +#: einstaller.cpp:603 +msgid "&Install" +msgstr "" + +#: einstaller.cpp:607 +msgid "&Close" +msgstr "" diff --git a/l10n/ru/elauncher.po b/l10n/ru/elauncher.po new file mode 100755 index 0000000..5be1f02 --- /dev/null +++ b/l10n/ru/elauncher.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&OK" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr " ..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr ":" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +" .( : " +"http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/l10n/ru/emenueditor.po b/l10n/ru/emenueditor.po new file mode 100755 index 0000000..b56837f --- /dev/null +++ b/l10n/ru/emenueditor.po @@ -0,0 +1,135 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr " ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr " " + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr ":" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr " " + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr " " + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr " " + +#: emenueditor.cpp:78 +msgid "New item" +msgstr " " + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr " " + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr " " + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr " ." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr " (*.png), *.png, (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr " ..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr " " + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr " :" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr " :" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr ":" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr " :" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr " " + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr " :" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr " !" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr " " + +#~ msgid "Go up..." +#~ msgstr "..." + +#~ msgid "Go up one level" +#~ msgstr " " diff --git a/l10n/ru/epanelconf.po b/l10n/ru/epanelconf.po new file mode 100755 index 0000000..13dd50f --- /dev/null +++ b/l10n/ru/epanelconf.po @@ -0,0 +1,127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + +#: epanelconf.cpp:26 epanelconf.cpp:36 epanelconf.cpp:61 epanelconf.cpp:71 +msgid "File selection..." +msgstr " ..." + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr " " + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr " " + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr " :" + +#: epanelconf.cpp:97 epanelconf.cpp:177 +msgid "&Browse..." +msgstr "..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr ":" + +#: epanelconf.cpp:103 epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr " " + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr " " + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr ":" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr ":" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr " " + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr " :" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr ":" diff --git a/l10n/ru/erun.po b/l10n/ru/erun.po new file mode 100755 index 0000000..6d157b9 --- /dev/null +++ b/l10n/ru/erun.po @@ -0,0 +1,52 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: erun.cpp:861 +msgid "File selection..." +msgstr " ..." + +#: erun.cpp:871 +msgid "Open..." +msgstr "..." + +#: erun.cpp:874 +msgid "Open:" +msgstr ":" + +#: erun.cpp:883 +msgid "" +"Type the location you want to open or the name of the program you want to run. " +"(Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +" ." +"( : http:, ftp:, gg:, av:, leo:)" + +#: erun.cpp:893 +msgid "&Browse..." +msgstr "..." + +#: erun.cpp:887 +msgid "&OK" +msgstr "&OK" + +#: erun.cpp:891 +msgid "&Cancel" +msgstr "" + +#: erun.cpp:853 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr " (*.*), *, (*.*), *" + diff --git a/l10n/ru/esvrconf.po b/l10n/ru/esvrconf.po new file mode 100755 index 0000000..0536d88 --- /dev/null +++ b/l10n/ru/esvrconf.po @@ -0,0 +1,67 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr " " + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr " " + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr " " + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr " " + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr ":" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "&OK" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "DMPS" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr ":" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr ":" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr ":" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "" diff --git a/l10n/ru/etimedate.po b/l10n/ru/etimedate.po new file mode 100755 index 0000000..da4d225 --- /dev/null +++ b/l10n/ru/etimedate.po @@ -0,0 +1,147 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr " " + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr " . -> root!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "/" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr " " + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr " . root ;-)" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr " !" + +#~ msgid "H-" +#~ msgstr "-" + +#~ msgid "H+" +#~ msgstr "+" + +#~ msgid "M-" +#~ msgstr "-" + +#~ msgid "M+" +#~ msgstr "+" + +#~ msgid "Su" +#~ msgstr "" + +#~ msgid "Mo" +#~ msgstr "" + +#~ msgid "Tu" +#~ msgstr "" + +#~ msgid "We" +#~ msgstr "" + +#~ msgid "Th" +#~ msgstr "" + +#~ msgid "Fr" +#~ msgstr "" + +#~ msgid "St" +#~ msgstr "" + +#~ msgid "Y-" +#~ msgstr "-" + +#~ msgid "Previous year." +#~ msgstr "+" + +# msgid "M-" +# msgstr "-" +#~ msgid "Previous month." +#~ msgstr " ." + +# msgid "M+" +# msgstr "+" +#~ msgid "Next month." +#~ msgstr " ." + +#~ msgid "Y+" +#~ msgstr "+" + +#~ msgid "Next year." +#~ msgstr " ." + +#~ msgid "January" +#~ msgstr "" + +#~ msgid "Febuary" +#~ msgstr "" + +#~ msgid "March" +#~ msgstr "" + +#~ msgid "April" +#~ msgstr "" + +#~ msgid "May" +#~ msgstr "" + +#~ msgid "June" +#~ msgstr "" + +#~ msgid "July" +#~ msgstr "" + +#~ msgid "August" +#~ msgstr "" + +#~ msgid "September" +#~ msgstr "" + +#~ msgid "October" +#~ msgstr "" + +#~ msgid "November" +#~ msgstr "" + +#~ msgid "December" +#~ msgstr "" diff --git a/l10n/ru/etip.po b/l10n/ru/etip.po new file mode 100755 index 0000000..ad59f13 --- /dev/null +++ b/l10n/ru/etip.po @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +" , EDE, " +", ݣ ." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr " EDE EDE, ." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" +" , EDE ." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +" - EDE \"" +"\" ." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +" EDE, ," +" , ." + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr " " + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr " " + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr " Equinox Desktop Environment" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< " + +#: etip.cpp:854 +msgid "&Next >>" +msgstr " >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "" diff --git a/l10n/ru/evolume.po b/l10n/ru/evolume.po new file mode 100755 index 0000000..0cfb800 --- /dev/null +++ b/l10n/ru/evolume.po @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr " , ." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr ": [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr " " + +#: evolume.cpp:274 +msgid "&File" +msgstr "" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "" + +#: evolume.cpp:286 +msgid "About" +msgstr " " + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" +" %s. ." + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr ":" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "" + +#~ msgid "About Volume control" +#~ msgstr " " + +#~ msgid "&Close" +#~ msgstr "" diff --git a/l10n/ru/ewmconf.po b/l10n/ru/ewmconf.po new file mode 100755 index 0000000..c135e9b --- /dev/null +++ b/l10n/ru/ewmconf.po @@ -0,0 +1,149 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr " " + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr " :" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr " :" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr " :" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr " :" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr " " + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr " " + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr ":" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr " " + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr " " + +#~ msgid "Draw gradient titlebar" +#~ msgstr " " diff --git a/l10n/ru/eworkpanel.po b/l10n/ru/eworkpanel.po new file mode 100755 index 0000000..103031b --- /dev/null +++ b/l10n/ru/eworkpanel.po @@ -0,0 +1,248 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-11-28 HO:MI+ZONE\n" +"Last-Translator: aabbvv \n" +"Language-Team: RUSSIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr " " + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr " " + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr " .." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr ".." + +#: item.cpp:94 +msgid "Close Menu" +msgstr " " + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "& " + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr " " + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr " " + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr " " + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr " " + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr " " + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr ", ?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr " Equinox Desktop Environment." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr " .." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr " " + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +": %ld (%.1f /)\n" +": %ld (%.1f /)\n" +": %d %d " + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr " " + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr " " + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr " EDE..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr " " + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr " : %3.2f %3.2f %3.2f, %d ." + +#~ msgid "&Programs" +#~ msgstr "" + +#~ msgid "&Favourites" +#~ msgstr "" + +#~ msgid "F&ind" +#~ msgstr "" + +#~ msgid "&Help" +#~ msgstr "" + +#~ msgid "&About" +#~ msgstr " " + +#~ msgid "&Run..." +#~ msgstr "..." + +#~ msgid "&Panel" +#~ msgstr "" + +#~ msgid "Edit panels menu" +#~ msgstr " " + +#~ msgid "Panel settings" +#~ msgstr " " + +#~ msgid "Control panel" +#~ msgstr " " + +#~ msgid "Install new software" +#~ msgstr " " + +#~ msgid "L&ock screen" +#~ msgstr "& " + +#~ msgid "&Logout" +#~ msgstr "" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr ". \"root\"!" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr ". \"root\"!" + +#~ msgid "&User programs" +#~ msgstr " " + +#~ msgid "&Browser" +#~ msgstr ".." diff --git a/l10n/sk.tar.gz b/l10n/sk.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..b38f5da75180d696bd8fb115ee779ad827e8d151 GIT binary patch literal 14714 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 G!TtyJ56XK0 literal 0 HcmV?d00001 diff --git a/l10n/sk/ecolorconf.po b/l10n/sk/ecolorconf.po new file mode 100755 index 0000000..15d8d83 --- /dev/null +++ b/l10n/sk/ecolorconf.po @@ -0,0 +1,212 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ecolorconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Nastavenie farieb a písiem" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Základné farby" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Farba" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Farba menovky" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Farby výberu" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Farba textu vo výbere" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Farba vypnutia" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Farba zvýraznenia" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Farba textu vo zvýraznení" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Farba textu" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Pozadie" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Farba pozadia textu" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Bublinky" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Farba bublinky" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Farba textu v bublinke" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Povoliť efekty" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Povolené" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Typ efektu:" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "Žiadny" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "Animácia" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "Blednutie" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Oneskorenie:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Písma" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Písmo menovky:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Písmo textu:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Veľkosť menovky:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Veľkosť textu" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Kódovanie:" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Ponuky" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Použiť efekty na podokná" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Rýchlosť:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Ostatné" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "Povoliť MDI animáciu" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "Obrysová animácia MDI" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Použiť stavový efekt obrázkov" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "&Uložiť ako..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "Pou&žiť farby pre všetky programy" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Schémy:" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&OK" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "&Použiť" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Zvoľte farbu" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "" + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Uložiť schému ako:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Nová schéma" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" + +#~ msgid "Saves active scheme under new name." +#~ msgstr "Uloží aktívnu schému pod novým menom." + +#~ msgid "Colors will be applied for all programs." +#~ msgstr "Farby budú aplikované na všetky programy." + +#~ msgid "These schemes are available." +#~ msgstr "Tieto schémy sú dostupné." diff --git a/l10n/sk/econtrol.po b/l10n/sk/econtrol.po new file mode 100755 index 0000000..6cb7db5 --- /dev/null +++ b/l10n/sk/econtrol.po @@ -0,0 +1,192 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: econtrol 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Táto konfiguračná utilita nastavuje ikony na ploche." + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Táto konfiguračná utilita umožňuje nastaviť globálne farby." + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Táto konfiguračná utilita nastavuje šetrič obrazovky." + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "" +"Táto konfiguračná utilita nastavuje farby a správanie sa manažéra okien." + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Táto konfiguračná utilita nastavuje parametre window systému." + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "Táto konfiguračná utilita pomáha inštalovať nový softvér." + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "Táto konfiguračná utilita zobrazuje a nastavuje čas a dátum." + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Táto konfiguračná utilita nastavuje správanie sa panelu." + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "Kontrólny panel" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&Súbor" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Koniec" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "&Nápoveda" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "&O programe" + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +"Vitajte v kontrólnom paneli. Môžete tu nastaviť vačšinu vecí na vašom " +"počítači." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Ikony" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Nastavenie ikôn." + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Farby" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Nastavenie farieb." + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Šetrič obrazovky" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Konfigurácia šetriča obrazovky." + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Manažér okien" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Nastavenie manažéra okien." + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Obrazovka" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Nastavenie obrazovky." + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Inštalovať nový softvér" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Inštalácia softvéru." + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Čas a dátum" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Nastavenie času a dátumu." + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Panel" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Konfigurácia panelu." + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Pripravený" + +#~ msgid "About Control panel" +#~ msgstr "O Kontrolnom paneli" + +#~ msgid "&Close" +#~ msgstr "&Zavrieť" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +#~ "Tento program je voľný softvér, môžete ho redistribuovať a/alebo " +#~ "modifikovať podľa podmienok licencie GNU General Public License " +#~ "publikovanej nadáciou the Free Software Foundation, buď verzie 2 tejto " +#~ "licencie, alebo (podľa vášho uváženia) ľubovoľnej novšej verzie. Tento " +#~ "program je distribuovaný v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK " +#~ "ZÁRUKY; dokonca bez 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 " +#~ "Licence along with this program; if not, write to the Free Software " +#~ "Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" + +#~ msgid "This config utility shows system information." +#~ msgstr "Táto konfiguračná utilita zobrazuje systémové informácie." + +#~ msgid "This config utility sets printer." +#~ msgstr "Táto konfiguračná utilita nastavuje tlačiarne." + +#~ msgid "Printers" +#~ msgstr "Tlačiarne" + +#~ msgid "Printers management." +#~ msgstr "Správa tlačiarní." + +#~ msgid "Hardware center" +#~ msgstr "Hardvérové centrum" + +#~ msgid "Hardware center." +#~ msgstr "Hardvérové centrum." diff --git a/l10n/sk/edewm.po b/l10n/sk/edewm.po new file mode 100755 index 0000000..d44ddd7 --- /dev/null +++ b/l10n/sk/edewm.po @@ -0,0 +1,87 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edewm 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Plocha %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Bez názvu" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Lepkavý" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Maximalizovať" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Minimalizovať" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "Na plochu" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "Ukončiť" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Zavrieť" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Obnoviť" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Práve beží už iný manažér okien. Musíte ho ukončiť a chcete spustiť %s." diff --git a/l10n/sk/edisplayconf.po b/l10n/sk/edisplayconf.po new file mode 100755 index 0000000..9a976a2 --- /dev/null +++ b/l10n/sk/edisplayconf.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: edisplayconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Nastavenie obrazovky" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Myš" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Zrýchlenie" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Threshold (v pixeloch)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Zvonček" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Hlasitosť v %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Pitch v Hz" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Trvanie v ms" + +#: edisplayconf.cpp:116 +#, fuzzy +msgid "Test" +msgstr "&Test" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Klávesnica" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " Aktivované opakovanie kláves" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Hlasitosť kliknutia %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Obrazovka" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "&Test" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Čas aktivatácie (min)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr " Aktivovaný šetrič obrazovky" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Čas zmeny vzoru (min)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Žiadny" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Vzor" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Použiť" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/l10n/sk/efinder.po b/l10n/sk/efinder.po new file mode 100755 index 0000000..e5da8c1 --- /dev/null +++ b/l10n/sk/efinder.po @@ -0,0 +1,337 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: efinder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:29+0100\n" +"PO-Revision-Date: 2002-10-13 12:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: efinder.cpp:65 efinder.cpp:322 +msgid "Permissions" +msgstr "Prístupové práva" + +#: efinder.cpp:68 +msgid "Owner" +msgstr "Vlastník" + +#: efinder.cpp:71 efinder.cpp:88 efinder.cpp:105 +msgid "Read" +msgstr "Čítanie" + +#: efinder.cpp:74 efinder.cpp:91 efinder.cpp:108 +msgid "Write" +msgstr "Zápis" + +#: efinder.cpp:77 efinder.cpp:94 efinder.cpp:111 +msgid "Execute" +msgstr "Spustenie" + +#: efinder.cpp:80 +msgid "Set UID" +msgstr "Nastaviť UID" + +#: efinder.cpp:85 +msgid "Group" +msgstr "Skupina" + +#: efinder.cpp:97 +msgid "Set GID" +msgstr "Nastaviť GID" + +#: efinder.cpp:102 +msgid "Other" +msgstr "Ostatní" + +#: efinder.cpp:114 +msgid "Sticky" +msgstr "Sticky" + +#: efinder.cpp:119 +msgid "&Close" +msgstr "&Zavrieť" + +#: efinder.cpp:132 +msgid "Select directory" +msgstr "Zvoliť adresár" + +#: efinder.cpp:226 efinder.cpp:231 efinder.cpp:232 +msgid "Find" +msgstr "Hľadať" + +#: efinder.cpp:236 +msgid "Path:" +msgstr "Cesta:" + +#: efinder.cpp:243 +msgid "&Browse..." +msgstr "&Hľadať..." + +#: efinder.cpp:245 +msgid "Find path." +msgstr "Hľadať cestu." + +#: efinder.cpp:249 +msgid "File filter:" +msgstr "Súborový filter:" + +#: efinder.cpp:255 +msgid "Search subdirectories" +msgstr "Prehľadávať podadresáre" + +#: efinder.cpp:260 +msgid "Limit results to first n files:" +msgstr "Limitovať výsledok na prvých n súborov:" + +#: efinder.cpp:271 +msgid "Content" +msgstr "Obsah" + +#: efinder.cpp:274 +msgid "Containing:" +msgstr "Obsahujúci:" + +#: efinder.cpp:279 +msgid "Case sensitive" +msgstr "Citlivý na veľkosť" + +#: efinder.cpp:282 +msgid "Extended regexp" +msgstr "Rozšírený regexp" + +#: efinder.cpp:295 +msgid "Filter options" +msgstr "Možnosti filtra" + +#: efinder.cpp:297 +msgid "Considerations" +msgstr "Kritériá" + +#: efinder.cpp:300 +msgid "File type:" +msgstr "Typ súboru:" + +#: efinder.cpp:302 +msgid "Any kind" +msgstr "" + +#: efinder.cpp:303 +msgid "Regular" +msgstr "" + +#: efinder.cpp:304 +#, fuzzy +msgid "Directory" +msgstr "Zvoliť adresár" + +#: efinder.cpp:305 +msgid "Symlink" +msgstr "" + +#: efinder.cpp:306 +msgid "Socket" +msgstr "" + +#: efinder.cpp:307 +msgid "Block device" +msgstr "" + +#: efinder.cpp:308 +msgid "Character device" +msgstr "" + +#: efinder.cpp:309 +msgid "FIFO" +msgstr "" + +#: efinder.cpp:315 +msgid "Stay on single filesystem" +msgstr "Zostať na samotnom súborovom systéme" + +#: efinder.cpp:325 +msgid "User/group:" +msgstr "Užívateľ/skupina:" + +#: efinder.cpp:330 +msgid "User id:" +msgstr "Užívateľské id:" + +#: efinder.cpp:336 +msgid "Group id:" +msgstr "Skupinové id:" + +#: efinder.cpp:344 +msgid "Size:" +msgstr "Veľkosť:" + +#: efinder.cpp:351 +msgid "greater than:" +msgstr "väčší ako:" + +#: efinder.cpp:354 +msgid "and less than(KB):" +msgstr "a menší ako(KB)" + +#: efinder.cpp:359 +msgid "Time:" +msgstr "Čas:" + +#: efinder.cpp:365 +msgid "Modified" +msgstr "Modifikovaný" + +#: efinder.cpp:368 +msgid "Changed" +msgstr "Zmenený" + +#: efinder.cpp:371 +msgid "Accessed" +msgstr "Pristúpený" + +#: efinder.cpp:377 +msgid "in previous:" +msgstr "v predchádzajúcich:" + +#: efinder.cpp:389 +msgid "Minutes" +msgstr "Minútach" + +#: efinder.cpp:392 +msgid "Hours" +msgstr "Hodinách" + +#: efinder.cpp:395 +msgid "Days" +msgstr "Dňoch" + +#: efinder.cpp:398 +msgid "Mounths" +msgstr "Mesiacoch" + +#: efinder.cpp:413 +msgid "Content options" +msgstr "Možnosti obsahu" + +#: efinder.cpp:415 +msgid "General considerations" +msgstr "Hlavné kritériá" + +#: efinder.cpp:418 +msgid "Do not look into binary files" +msgstr "Nepozerať sa do binárnych súborov" + +#: efinder.cpp:421 +msgid "Output count of matching lines" +msgstr "Zobraziť počet nájdených riadkov" + +#: efinder.cpp:424 +msgid "Match anywhere" +msgstr "Nájsť všetko" + +#: efinder.cpp:428 +msgid "Match whole words only" +msgstr "Nájsť iba celé slová" + +#: efinder.cpp:431 +msgid "Match whole lines only" +msgstr "Nájsť iba celé riadky" + +#: efinder.cpp:434 +msgid "Output files where no match is found" +msgstr "Zobraziť súbory v ktoré sa nezhodujú" + +#: efinder.cpp:445 +msgid "About" +msgstr "O programe" + +#: efinder.cpp:447 +msgid "" +"(C) Copyright 2000-2005. EDE Authors.\n" +"\n" +" Efinder is using the code from xfglob which is\n" +" (C) Copyright 2000-2001 by Edscott Wilson Garcia." +msgstr "" + +#: efinder.cpp:458 +msgid "Filename" +msgstr "Meno súboru" + +#: efinder.cpp:459 +msgid "Size" +msgstr "Veľkosť" + +#: efinder.cpp:460 +msgid "Last modified" +msgstr "Naposledy modifikované" + +#: efinder.cpp:461 +msgid "Rights" +msgstr "Práva" + +#: efinder.cpp:475 +msgid "&Find" +msgstr "&Hľadať" + +#: efinder.cpp:478 +msgid "Start the searching." +msgstr "Začať vyhľadávanie." + +#: efinder.cpp:480 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: efinder.cpp:483 +msgid "&Stop" +msgstr "&Zastaviť" + +#: efinder.cpp:485 +msgid "Stop the searching." +msgstr "Zastaviť vyhľadávanie." + +#: eglob.cpp:446 +msgid "Search finished." +msgstr "Vyhľadávanie skončilo." + +#: eglob.cpp:449 +msgid "Nothing found." +msgstr "Nebolo nič nájdené." + +#: eglob.cpp:453 +#, c-format +msgid "Found %d files." +msgstr "Bolo nájdených %d súborov." + +#: eglob.cpp:455 +msgid "Interrupted because maximum limit exceded." +msgstr "Prerušené, pretože bol prekročený maximálny limit." + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +#~ msgstr "" +#~ "Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +#~ "Tento program je voľný softvér, môžete ho redistribuovať a/alebo " +#~ "modifikovať podľa podmienok licencie GNU General Public License " +#~ "publikovanej nadáciou the Free Software Foundation, buď verzie 2 tejto " +#~ "licencie, alebo (podľa vášho uváženia) ľubovoľnej novšej verzie. Tento " +#~ "program je distribuovaný v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK " +#~ "ZÁRUKY; dokonca bez obsiahnutej záruky OBCHODOVATEĽNOSTI alebo VÝHOD PRE " +#~ "URČITÝ ÚČEL. Ďalšie podrobnosti hľadajte v licencii GNU General Public " +#~ "License. S týmto programom by ste mali dostať kópiu licencie GNU General " +#~ "Public Licence; ak nie, napíšte do nadácie the Free Software Foundation, " +#~ "Inc., 675 Mass Ave, Cambridge, MA 02139, USA." diff --git a/l10n/sk/eiconman.po b/l10n/sk/eiconman.po new file mode 100755 index 0000000..34adce7 --- /dev/null +++ b/l10n/sk/eiconman.po @@ -0,0 +1,258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconman 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Nastavenie pozadia" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Pozadie" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "F&arba..." + +#: edeskconf.cpp:87 +msgid "Use wallpaper" +msgstr "Použiť tapetu" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Obrázok:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Kontrast:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "Mód:" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "Centrovať" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "Roztiahnuť" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "Roztiahnuť (aspekt)" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "Dláždiť" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&OK" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "&Použiť" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "&Otvoriť" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "&Zmazať" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Vlastnosti" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Názov ikony musí byť vyplnení." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Zmazať túto ikonu?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +"Zmazanie ikony %s zlyhalo. Pravdepodobne namáte prístup na zapisovanie k " +"tomutosúboru." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Zadajte názov novej ikony:" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Ikona s tým istým menom už existuje." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d bajtov" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "&Nová položka plochy" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "&Obnoviť" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "Nastavenia" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr "Nastavenie pozadia" + +#: eiconman.cpp:718 +#, fuzzy +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" +"Png obrázky, *.png,Xpm obrázky, *.xpm,Jpeg obrázky, *.{jpg|jpeg},Gif " +"obrázky, *.gif,Bmp obrázky, *.bmp,Zvoliť tapetu:" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr "Použiť tapetu" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "Zvoliť farbu" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Otvoriť umiestnenie..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Výber súboru s ikonou" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Vlastnosti ikony" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Ikona" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Názov:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Rozmer:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Príkaz:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Nastavenia" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Súbor linky:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Názov ikony:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Otvoriť umiestnenie:" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Súbor ikony:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Zavrieť" + +#~ msgid "&Edit" +#~ msgstr "&Editovať" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr "Zadajte názov programu alebo umiestnenie, ktoré chcete otvoriť:" + +#~ msgid "Background color selection..." +#~ msgstr "Výber farby pozadia..." + +#~ msgid "Image selection..." +#~ msgstr "Výber obrázka..." + +#~ msgid "Wallpaper" +#~ msgstr "Tapeta" + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ "Obrázky (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, Všetky súbory " +#~ "(*.*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr "Ikony (*.png), *.png, Všetky súbory (*.*), *" + +#~ msgid "None" +#~ msgstr "Žiadny" + +#~ msgid "&Bg Properties" +#~ msgstr "&Nastavenie pozadia" + +#~ msgid "All Files, *" +#~ msgstr "Všetky súbory, *" diff --git a/l10n/sk/eiconsconf.po b/l10n/sk/eiconsconf.po new file mode 100755 index 0000000..0bb930d --- /dev/null +++ b/l10n/sk/eiconsconf.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconsconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Nastavenie ikon" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&OK" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Použiť" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Look&&feel" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Farba pozadia:" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Farba menovky:" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Maximálna šírka:" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Veľkosť fontu:" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Odstup mriežky:" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Automaticky usporiadavať ikony" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Potvrdiť iba jedným kliknutím" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Ak je tlačidlo odškrtnuté, budú sa zobrazovať transparentné ikony." + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Voľba farby" diff --git a/l10n/sk/einstaller.po b/l10n/sk/einstaller.po new file mode 100755 index 0000000..46614b3 --- /dev/null +++ b/l10n/sk/einstaller.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: einstaller 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: einstall.cpp:41 einstall.cpp:68 +msgid "Please enter the name of the package.\n" +msgstr "Prosím zadajte meno balíka.\n" + +#: einstaller.cpp:511 +msgid "Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All files (*.*), *" +msgstr "Balíky (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, Všetky súbory (*.*), *" + + +#: einstaller.cpp:509 +msgid "Package selection" +msgstr "Výber balíka" + +#: einstaller.cpp:549 +msgid "Install software package" +msgstr "Inštalácia softvérového balíka" + +#: einstaller.cpp:560 +msgid "Enter the name of software package you want to install:" +msgstr "Vložte meno softvérového balíka, ktorý chcete nainštalovať:" + +#: einstaller.cpp:564 +msgid "&Browse..." +msgstr "&Hľadať..." + +#: einstaller.cpp:568 +msgid "" +"Welcome. This installation wizard will help you to install new software on " +"your computer." +msgstr "" +"Tento sprievodca inštaláciou Vám pomôže nainštalovať nový softvér na Váš " +"počítač." + +#: einstaller.cpp:574 +msgid "Ignore dependencies" +msgstr "Ignorovať závislosti" + +#: einstaller.cpp:582 +msgid "Installation results:" +msgstr "Výsledky inštalácie:" + +#: einstaller.cpp:587 +msgid "Installation status:" +msgstr "Stav inštalácie:" + +#: einstaller.cpp:595 +msgid "<< &Previous" +msgstr "<< &Späť" + +#: einstaller.cpp:600 +msgid "&Install" +msgstr "&Inštalovať" + +#: einstaller.cpp:604 +msgid "&Close" +msgstr "&Zavrieť" diff --git a/l10n/sk/elauncher.po b/l10n/sk/elauncher.po new file mode 100755 index 0000000..3e9659c --- /dev/null +++ b/l10n/sk/elauncher.po @@ -0,0 +1,179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&OK" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&OK" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Výber súboru..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Otvoriť..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Otvoriť:" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Napíšte umiestnenie, ktoré chcete otvoriť alebo názov programu, ktorý chcete " +"spustiť. (Možné predpony sú: http:, ftp:, gg:, av:, leo:)" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/l10n/sk/emenueditor.po b/l10n/sk/emenueditor.po new file mode 100755 index 0000000..dda1bf2 --- /dev/null +++ b/l10n/sk/emenueditor.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Výber súboru ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Editor ponuky" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&Súbor" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Koniec" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Programy:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Kliknite na podponuku alebo na položku, ktorú chcete" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Nová podponuka" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Zmazať podponuku" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Nová položka" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Zmazať položku" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Editovať položku" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Prosím vložte názov položky menu." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Ikony (*.png), *.png, Všetky súbory (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Zvoľte súbor s ikonou..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Editovať položku" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Názov súboru:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "Názov v ponuke:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Príkaz ku spusteniu:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "Zv&oliť..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Súbor ikony:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "&Uložiť" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Nový adresár" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Prosím zadajte názov novej ponuky:" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Nemôžem vytvoriť podponuku!" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "Musíte zmazať všetky položky z podponuky predtým ako ju chcete zmazať!" + +#~ msgid "Go up..." +#~ msgstr "Ísť hore..." + +#~ msgid "Go up one level" +#~ msgstr "Ísť hore o úroveň" diff --git a/l10n/sk/epanelconf.po b/l10n/sk/epanelconf.po new file mode 100755 index 0000000..35a5246 --- /dev/null +++ b/l10n/sk/epanelconf.po @@ -0,0 +1,127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: epanelconf 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:26 epanelconf.cpp:36 +msgid "File selection..." +msgstr "Výber súboru..." + +#: epanelconf.cpp:60 +msgid "Panel settings" +msgstr "Nastavenia panelu" + +#: epanelconf.cpp:62 +msgid "&Apply" +msgstr "&Použiť" + +#: epanelconf.cpp:66 +msgid "&Close" +msgstr "&Zavrieť" + +#: epanelconf.cpp:71 +msgid "Utilities" +msgstr "Pomôcky" + +#: epanelconf.cpp:72 +msgid "Panel utilities" +msgstr "Pomôcky panelu" + +#: epanelconf.cpp:75 +msgid "Volume control program:" +msgstr "Program nastavenia hlasitosti:" + +#: epanelconf.cpp:79 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: epanelconf.cpp:83 +msgid "Time and date program:" +msgstr "Program nastavenia času a dátumu:" + +#: epanelconf.cpp:87 +msgid "Br&owse..." +msgstr "Zv&oliť..." + +#: epanelconf.cpp:94 +msgid "Autohide" +msgstr "Automatické skrytie" + +#: epanelconf.cpp:97 +msgid "Automaticaly hide panel" +msgstr "Automaticky skryť panel" + +#: epanelconf.cpp:106 +msgid "Workspaces" +msgstr "Pracovné plochy" + +#: epanelconf.cpp:108 +msgid "Number of workspaces: " +msgstr "Počet pracovných plôch: " + +#: epanelconf.cpp:118 +msgid "Workspace names:" +msgstr "Názvy pracovných plôch:" + +#: epanelconf.cpp:121 +msgid "WS 1:" +msgstr "PP 1:" + +#: epanelconf.cpp:125 +msgid "WS 2:" +msgstr "PP 2:" + +#: epanelconf.cpp:129 +msgid "WS 3:" +msgstr "PP 3:" + +#: epanelconf.cpp:133 +msgid "WS 4:" +msgstr "PP 4:" + +#: epanelconf.cpp:137 +msgid "WS 5:" +msgstr "PP 5:" + +#: epanelconf.cpp:141 +msgid "WS 6:" +msgstr "PP 6:" + +#: epanelconf.cpp:145 +msgid "WS 7:" +msgstr "PP 7:" + +#: epanelconf.cpp:149 +msgid "WS 8:" +msgstr "PP 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Správcovia" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Programy správy" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Internetový prehliadač:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Terminál:" + +#: epanelconf.cpp:25 epanelconf.cpp:35 epanelconf.cpp:60 epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + diff --git a/l10n/sk/erun.po b/l10n/sk/erun.po new file mode 100755 index 0000000..3d69056 --- /dev/null +++ b/l10n/sk/erun.po @@ -0,0 +1,51 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: erun.cpp:861 +msgid "File selection..." +msgstr "Výber súboru..." + +#: erun.cpp:871 +msgid "Open..." +msgstr "Otvoriť..." + +#: erun.cpp:874 +msgid "Open:" +msgstr "Otvoriť:" + +#: erun.cpp:883 +msgid "" +"Type the location you want to open or the name of the program you want to run. " +"(Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Napíšte umiestnenie, ktoré chcete otvoriť alebo názov programu, ktorý chcete spustiť. " +"(Možné predpony sú: http:, ftp:, gg:, av:, leo:)" + +#: erun.cpp:893 +msgid "&Browse..." +msgstr "&Zvoliť..." + +#: erun.cpp:887 +msgid "&OK" +msgstr "&OK" + +#: erun.cpp:891 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: erun.cpp:853 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Spustiteľné (*.*), *, Všetky súbory (*.*), *" + diff --git a/l10n/sk/esvrconf.po b/l10n/sk/esvrconf.po new file mode 100755 index 0000000..7b21e00 --- /dev/null +++ b/l10n/sk/esvrconf.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: esvrconf 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: escreensaver.cpp:385 +msgid "Couldn't fork screensaver subprocess." +msgstr "Nemôžem spustiť podproces šetriča obrazovky" + +#: escreensaver.cpp:397 +msgid "Couldn't fork shell subprocess." +msgstr "Nemôžem spustiť podproces shelu." + +#: escrsaverconf.cpp:377 +msgid "Screensaver settings" +msgstr "Nastavenie šetriča obrazovky" + +#: escrsaverconf.cpp:382 +msgid "Screensaver" +msgstr "Šetrič obrazovky" + +#: escrsaverconf.cpp:399 +msgid "Timeout:" +msgstr "Čas:" + +#: escrsaverconf.cpp:412 +msgid "&OK" +msgstr "&OK" + +#: escrsaverconf.cpp:418 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: escrsaverconf.cpp:424 +msgid "DPMS" +msgstr "DPMS" + +#: escrsaverconf.cpp:433 +msgid "Standby:" +msgstr "Standby:" + +#: escrsaverconf.cpp:441 +msgid "Suspend:" +msgstr "Suspend:" + +#: escrsaverconf.cpp:449 +msgid "Off:" +msgstr "Off:" + +#: escrsaverconf.cpp:459 +msgid "Enabled" +msgstr "Povolené" + +#: escrsaverconf.cpp:474 +msgid "&Apply" +msgstr "&Použiť" diff --git a/l10n/sk/etimedate.po b/l10n/sk/etimedate.po new file mode 100755 index 0000000..2b34a60 --- /dev/null +++ b/l10n/sk/etimedate.po @@ -0,0 +1,147 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etimedate 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Čas a dátum" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&OK" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Použiť" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Nastaviť systémový čas. ->Iba root užívateľ!<-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Čas/dátum" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Časové zóny" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "" +"Nastala chyba pri nastavovaní času. Pravdepodobne nie ste superužívateľ!" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Nemôžem nastaviť časovú zónu!" + +#~ msgid "H-" +#~ msgstr "H-" + +#~ msgid "H+" +#~ msgstr "H+" + +#~ msgid "M-" +#~ msgstr "M-" + +#~ msgid "M+" +#~ msgstr "M+" + +#~ msgid "Su" +#~ msgstr "Ne" + +#~ msgid "Mo" +#~ msgstr "Po" + +#~ msgid "Tu" +#~ msgstr "Ut" + +#~ msgid "We" +#~ msgstr "St" + +#~ msgid "Th" +#~ msgstr "Št" + +#~ msgid "Fr" +#~ msgstr "Pi" + +#~ msgid "St" +#~ msgstr "So" + +#~ msgid "Y-" +#~ msgstr "R-" + +#~ msgid "Previous year." +#~ msgstr "Predchádzajúci rok." + +# msgid "M-" +# msgstr "M-" +#~ msgid "Previous month." +#~ msgstr "Predchádzajúci mesiac." + +# msgid "M+" +# msgstr "M+" +#~ msgid "Next month." +#~ msgstr "Nasledujúci mesiac." + +#~ msgid "Y+" +#~ msgstr "R+" + +#~ msgid "Next year." +#~ msgstr "Nasledujúci rok." + +#~ msgid "January" +#~ msgstr "Január" + +#~ msgid "Febuary" +#~ msgstr "Február" + +#~ msgid "March" +#~ msgstr "Marec" + +#~ msgid "April" +#~ msgstr "Apríl" + +#~ msgid "May" +#~ msgstr "Máj" + +#~ msgid "June" +#~ msgstr "Jún" + +#~ msgid "July" +#~ msgstr "Júl" + +#~ msgid "August" +#~ msgstr "August" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Október" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "December" diff --git a/l10n/sk/etip.po b/l10n/sk/etip.po new file mode 100755 index 0000000..dbc5079 --- /dev/null +++ b/l10n/sk/etip.po @@ -0,0 +1,94 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etip 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +"Spustiť aplikáciu je jednoduché. Stlačte EDE tlačidlo, chodte do ponuky " +"Programy, zvoľte kategóriu a kliknite na želaný program." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" +"Ak chcete ukončiť prostredie Equinox Desktop environment, stlačte tlačidlo " +"EDE a potom odhlásenie." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" +"Na zamknutie počitača, stlačte EDE tlačidlo a potom zablokovať obrazovku." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +"Na nastavenie vecí na počítači, stlačte EDE tlačidlo, ponuku Panel a potom " +"Kontrólny panel." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +"Na pridanie programu, ktorý nie je ponuke Programy, kliknite na EDE " +"tlačidlo, ponuku Panel a potom Editovať ponuku panelu." + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "Úvodné typy" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "Nabudúce už tento dialóg nezobrazovať" + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr "Vitajte v prostredí Equinox Desktop Environment" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< &Späť" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "&Ďalej >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "&Zavrieť" diff --git a/l10n/sk/evolume.po b/l10n/sk/evolume.po new file mode 100755 index 0000000..56db1e2 --- /dev/null +++ b/l10n/sk/evolume.po @@ -0,0 +1,102 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: evolume 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:54+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: evolume.cpp:158 +msgid "Cannot setup device, sorry." +msgstr "Nemôžem nastaviť zariadenie, ľutujem." + +#: evolume.cpp:256 +#, c-format +msgid "Volume control: [%s]" +msgstr "Ovládanie hlasitosti: [%s]" + +#: evolume.cpp:269 +msgid "Volume control" +msgstr "Ovládanie hlasitosti" + +#: evolume.cpp:274 +msgid "&File" +msgstr "&Súbor" + +#: evolume.cpp:275 prefs.cpp:63 +msgid "Preferencies" +msgstr "Nastavenia" + +#: evolume.cpp:279 +msgid "Quit" +msgstr "Koniec" + +#: evolume.cpp:285 +msgid "&Help" +msgstr "&Nápoveda" + +#: evolume.cpp:286 +msgid "About" +msgstr "O programe" + +#: evolume.cpp:406 +#, c-format +msgid "" +"Opening mixer device %s failed. Setup correct device in configuration dialog." +msgstr "" +"Otvorenie zariadenia mixéra %s zlyhalo. Nastavte správne zariadenie v " +"konfiguračnom dialógu." + +#: prefs.cpp:66 +msgid "Sound device" +msgstr "Zvukové zariadenie" + +#: prefs.cpp:68 +msgid "Device name:" +msgstr "Meno zariadenia:" + +#: prefs.cpp:80 +msgid "&OK" +msgstr "&OK" + +#: prefs.cpp:84 +msgid "&Cancel" +msgstr "&Zrušiť" + +#~ msgid "About Volume control" +#~ msgstr "O Ovládaní hlasitosti" + +#~ msgid "&Close" +#~ msgstr "&Zavrieť" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +#~ "Tento program je voľný softvér, môžete ho redistribuovať a/alebo " +#~ "modifikovať podľa podmienok licencie GNU General Public License " +#~ "publikovanej nadáciou the Free Software Foundation, buď verzie 2 tejto " +#~ "licencie, alebo (podľa vášho uváženia) ľubovoľnej novšej verzie. Tento " +#~ "program je distribuovaný v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK " +#~ "ZÁRUKY; dokonca bez obsiahnutej záruky OBCHODOVATEĽNOSTI alebo VÝHOD PRE " +#~ "URČITÝ ÚČEL. Ďalšie podrobnosti hľadajte v licencii GNU General Public " +#~ "License. S týmto programom by ste mali dostať kópiu licencie GNU General " +#~ "Public Licence; ak nie, napíšte do nadácie the Free Software Foundation, " +#~ "Inc., 675 Mass Ave, Cambridge, MA 02139, USA." diff --git a/l10n/sk/ewmconf.po b/l10n/sk/ewmconf.po new file mode 100755 index 0000000..c99bbb1 --- /dev/null +++ b/l10n/sk/ewmconf.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ewmconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Nastavenie manažéra okien" + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "Lišta okna" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Farba menovky lišty: " + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Farba lišty: " + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Aktívna farba menovky lišty: " + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Aktívna farba lišty: " + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr "Presun a zmena veľkosti" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Animácia pri zmene rozmeru" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Rýchlosť:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Zobrazovať obsah okna počas zmeny veľkosti" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&OK" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&Použiť" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Zvoliť farbu" + +#~ msgid "Draw gradient titlebar" +#~ msgstr "Kresliť gradientovú lištu" diff --git a/l10n/sk/eworkpanel.po b/l10n/sk/eworkpanel.po new file mode 100755 index 0000000..07b6f53 --- /dev/null +++ b/l10n/sk/eworkpanel.po @@ -0,0 +1,259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-04-21 14:50+0200\n" +"Last-Translator: Martin Pekar \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "O Equinox Desktop Environment" + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr "O Equinox Desktop Environment" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" +"Tento program je z časti založený na práci projektu FLTK (www.fltk.org)." +"Tento program je voľný softvér, môžete ho redistribuovať a/alebo modifikovať " +"podľa podmienok licencie GNU General Public License publikovanej nadáciou " +"the Free Software Foundation, buď verzie 2 tejto licencie, alebo (podľa " +"vášho uváženia) ľubovoľnej novšej verzie. Tento program je distribuovaný v " +"nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK ZÁRUKY; dokonca bez obsiahnutej " +"záruky OBCHODOVATEĽNOSTI alebo VÝHOD PRE URČITÝ ÚČEL. Ďalšie podrobnosti " +"hľadajte v licencii GNU General Public License. S týmto programom by ste " +"mali dostať kópiu licencie GNU General Public Licence; ak nie, napíšte do " +"nadácie the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA " +"02139, USA." + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&OK" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr "Otvoriť v xterme.." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr "Otvoriť v prehliadači.." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Zavrieť ponuku" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Odhlásenie" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "&odhlásiť sa z aktuálneho sedenia" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Odhlásenie sa z aktuálneho sedenia." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "&reštarťovať počítač" + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr "&reštarťovať počítač" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "&vypnúť počítač" + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr "&vypnúť počítač" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Odhlásiť sa, reštartovať alebo vypnúť počítač?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Vitajte v Equinox Desktop Environment." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Otvoriť adresár.." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr "Zavrieť ponuku" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Prijatých : %ld kB (%.1f kB/s)\n" +"Odoslaných : %ld kB (%.1f kB/s)\n" +"Čas trvania: %d minút %d sekúnd" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Pracovná plocha" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Pracovné plochy" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Nastavenia" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "O EDE..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Nastavenie hlasitosti" + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr "Zaťaženie procesora: %3.2f %3.2f %3.2f, %d procesov." + +#~ msgid "&Programs" +#~ msgstr "&Programy" + +#~ msgid "&Favourites" +#~ msgstr "&Obľúbené" + +#~ msgid "F&ind" +#~ msgstr "N&ájsť" + +#~ msgid "&Help" +#~ msgstr "&Nápoveda" + +#~ msgid "&About" +#~ msgstr "&O programe" + +#~ msgid "&Run..." +#~ msgstr "&Spustiť..." + +#~ msgid "&Panel" +#~ msgstr "&Panel" + +#~ msgid "Edit panels menu" +#~ msgstr "Editovať ponuku panelu" + +#~ msgid "Panel settings" +#~ msgstr "Nastavenie panela" + +#~ msgid "Control panel" +#~ msgstr "Kontrólny panel" + +#~ msgid "Install new software" +#~ msgstr "Inštalovať nový softvér" + +#~ msgid "L&ock screen" +#~ msgstr "&Zablokovať obrazovku" + +#~ msgid "&Logout" +#~ msgstr "&Odhlásenie" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr "" +#~ "Reštartovanie počítača. Táto akcia je povolená iba \"root\" užívateľovi!" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Vypnúť počítač. Táto akcia je povolená iba \"root\" užívateľovi!" + +#~ msgid "&User programs" +#~ msgstr "&Užívateľove programy" + +#~ msgid "&Browser" +#~ msgstr "&Prehliadač" diff --git a/l10n/sr.tar.gz b/l10n/sr.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..1345f57695a74ffde22c239877702f69f0f9a5db GIT binary patch literal 12913 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 Z7?;w0Ncew@jK=SNx!GIyKmcH%{{dR9PV4{x literal 0 HcmV?d00001 diff --git a/l10n/sr/ecolorconf.po b/l10n/sr/ecolorconf.po new file mode 100755 index 0000000..3d22aa6 --- /dev/null +++ b/l10n/sr/ecolorconf.po @@ -0,0 +1,203 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ECOLORCONF 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:37+0100\n" +"PO-Revision-Date: 2002-11-27 04:15+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ecolorconf.cpp:131 +msgid "Colors and fonts settings" +msgstr "Подешавање боја и фонтова" + +#: ecolorconf.cpp:136 +msgid "Default colors" +msgstr "Дифолт боје" + +#: ecolorconf.cpp:138 +msgid "Color" +msgstr "Боја" + +#: ecolorconf.cpp:143 +msgid "Label color" +msgstr "Боја наслова" + +#: ecolorconf.cpp:148 +msgid "Selection color" +msgstr "Боја селекције" + +#: ecolorconf.cpp:153 +msgid "Selection text color" +msgstr "Боја селектованог текста" + +#: ecolorconf.cpp:158 +msgid "Off color" +msgstr "Без боје" + +#: ecolorconf.cpp:163 +msgid "Highlight color" +msgstr "Боја означења" + +#: ecolorconf.cpp:168 +msgid "Highlight label color" +msgstr "Боја означеног текста" + +#: ecolorconf.cpp:173 +msgid "Text color" +msgstr "Боја текста" + +#: ecolorconf.cpp:178 +msgid "Background" +msgstr "Позадина" + +#: ecolorconf.cpp:183 +msgid "Text background" +msgstr "Позадина текста" + +#: ecolorconf.cpp:190 +msgid "Tooltips" +msgstr "Тултипси" + +#: ecolorconf.cpp:193 +msgid "Tooltip color" +msgstr "Боја тултипса" + +#: ecolorconf.cpp:198 +msgid "Tooltip text color" +msgstr "Боја текста тултипса" + +#: ecolorconf.cpp:203 ecolorconf.cpp:252 +msgid "Enable effects" +msgstr "Укључи ефекте" + +#: ecolorconf.cpp:204 +msgid "Enabled" +msgstr "Омогућен" + +#: ecolorconf.cpp:205 ecolorconf.cpp:254 +msgid "Effect type:" +msgstr "Тип ефекта:" + +#: ecolorconf.cpp:207 ecolorconf.cpp:256 +msgid "None" +msgstr "Никакав" + +#: ecolorconf.cpp:208 ecolorconf.cpp:257 +msgid "Animation" +msgstr "Анимација" + +#: ecolorconf.cpp:209 ecolorconf.cpp:258 +msgid "Fading" +msgstr "Фејдинг" + +#: ecolorconf.cpp:212 ecolorconf.cpp:262 +msgid "Delay:" +msgstr "Пауза:" + +#: ecolorconf.cpp:215 +msgid "Fonts" +msgstr "Фонтови" + +#: ecolorconf.cpp:218 +msgid "Label font:" +msgstr "Фонт наслова:" + +#: ecolorconf.cpp:226 +msgid "Text font:" +msgstr "Фонт текста:" + +#: ecolorconf.cpp:233 +msgid "Label size:" +msgstr "Величина наслова:" + +#: ecolorconf.cpp:236 +msgid "Text size:" +msgstr "Величина текста:" + +#: ecolorconf.cpp:239 +msgid "Encoding:" +msgstr "Енкодинг:" + +#: ecolorconf.cpp:241 ecolorconf.cpp:244 +msgid "..." +msgstr "" + +#: ecolorconf.cpp:250 +msgid "Menus" +msgstr "Менији" + +#: ecolorconf.cpp:253 +msgid "Enable subwindow effects" +msgstr "Укључи сабвиндов ефекте" + +#: ecolorconf.cpp:261 +msgid "Speed:" +msgstr "Брзина:" + +#: ecolorconf.cpp:265 +msgid "Others" +msgstr "Остали" + +#: ecolorconf.cpp:267 +msgid "Enable MDI animation" +msgstr "Укључи МДИ анимације" + +#: ecolorconf.cpp:268 +msgid "MDI opaque animation" +msgstr "МДИ провидна анимација" + +#: ecolorconf.cpp:269 +msgid "Enable images state effect" +msgstr "Укључи ефекат статичне слике" + +#: ecolorconf.cpp:276 +msgid "&Save as..." +msgstr "&Сними као..." + +#: ecolorconf.cpp:279 +msgid "Ap&ply colors to all programs" +msgstr "П&римени боје на све програме" + +#: ecolorconf.cpp:283 +msgid "Schemes:" +msgstr "Шеме:" + +#: ecolorconf.cpp:293 efontdialog.cpp:226 +msgid "&OK" +msgstr "&ОК" + +#: ecolorconf.cpp:296 +msgid "&Apply" +msgstr "&Примени" + +#: ecolorconf.cpp:299 efontdialog.cpp:229 +msgid "&Cancel" +msgstr "&Одустани" + +#: ecolorconf.cpp:314 +msgid "Choose color" +msgstr "Изабери боју" + +#: ecolorutils.cpp:306 +msgid "Color and label color are the same. Edit colors first." +msgstr "Боја и боја наслова су исте. Прво измените боје." + +#: ecolorutils.cpp:344 +msgid "Save scheme as:" +msgstr "Сними шему као:" + +#: ecolorutils.cpp:344 +msgid "New scheme" +msgstr "Нова шема" + +#: efontdialog.cpp:200 +msgid "Select font..." +msgstr "" diff --git a/l10n/sr/econtrol.po b/l10n/sr/econtrol.po new file mode 100755 index 0000000..ab08c54 --- /dev/null +++ b/l10n/sr/econtrol.po @@ -0,0 +1,191 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: ECONTROL 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:35+0100\n" +"PO-Revision-Date: 2002-11-27 04:39+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: econtrol.cpp:27 +msgid "This config utility sets icons on the desktop." +msgstr "Овај конфигурациони алат подешава иконе на десктопу." + +#: econtrol.cpp:478 +msgid "This config utility sets global colors." +msgstr "Овај алат за конфигурисанје сетује глобалне боје." + +#: econtrol.cpp:838 +msgid "This config utility sets screensaver." +msgstr "Овај алат за конфигурисање служи за подешавање скринсејвера." + +#: econtrol.cpp:1401 +msgid "This config utility sets window managers colors and behaviour." +msgstr "Овај конфигурациони алат подешава боје и понашање менаџера прозора." + +#: econtrol.cpp:1958 +msgid "This config utility sets window system parametres." +msgstr "Овај конфигурациони алат подешава параметре система прозора." + +#: econtrol.cpp:2534 +msgid "This config utility helps you to install new software." +msgstr "Овај конфигурациони алат помаже Вам да инсталирате нове програме." + +#: econtrol.cpp:3019 +msgid "This config utility shows and set computer time and date." +msgstr "Овај конфигурациони алат приказује и сетује време и датум рачунара." + +#: econtrol.cpp:3507 +msgid "This config utility sets panel behaviour." +msgstr "Овај конфигурациони алат служи за подешавање понашања панела." + +#: econtrol.cpp:3870 econtrol.cpp:3894 +msgid "Control panel" +msgstr "Контролни панел" + +#: econtrol.cpp:3875 +msgid "&File" +msgstr "&Фајл" + +#: econtrol.cpp:3876 +msgid "&Quit" +msgstr "&Крај" + +#: econtrol.cpp:3883 +msgid "&Help" +msgstr "По&моћ" + +#: econtrol.cpp:3884 +msgid "&About" +msgstr "&О..." + +#: econtrol.cpp:3906 +msgid "" +"Welcome to the control panel. Here you can setup most things on your " +"computer." +msgstr "" +"Добродошли у контролни панел. Овде можете да подесите скоро све ствари Вашег " +"рачунара." + +#: econtrol.cpp:3918 +msgid "Icons" +msgstr "Иконе" + +#: econtrol.cpp:3928 +msgid "Icons settings." +msgstr "Подешавање икона." + +#: econtrol.cpp:3930 +msgid "Colors" +msgstr "Боје" + +#: econtrol.cpp:3939 +msgid "Colors settings." +msgstr "Подешавања боја." + +#: econtrol.cpp:3941 +msgid "Screen saver" +msgstr "Скрин сејвер" + +#: econtrol.cpp:3950 +msgid "Screensaver configuration." +msgstr "Подешавање скрин сејвера." + +#: econtrol.cpp:3952 +msgid "Window manager" +msgstr "Менаџер прозора" + +#: econtrol.cpp:3961 +msgid "Window manager settings." +msgstr "Подешавање менадџера прозора." + +#: econtrol.cpp:3963 +msgid "Display" +msgstr "Дисплеј" + +#: econtrol.cpp:3972 +msgid "Display settings. " +msgstr "Подешавања дисплеја" + +#: econtrol.cpp:3974 +msgid "Install new software" +msgstr "Инсталирај нови софтвер" + +#: econtrol.cpp:3983 +msgid "Software installation." +msgstr "Инсталирање софтвера." + +#: econtrol.cpp:3985 +msgid "Time and date" +msgstr "Време и датум" + +#: econtrol.cpp:3994 +msgid "Time and date settings." +msgstr "Подешавање времена и датума." + +#: econtrol.cpp:3996 +msgid "Panel" +msgstr "Панел" + +#: econtrol.cpp:4005 +msgid "Panel configuration." +msgstr "Конфигурисање панела." + +#: econtrol.cpp:4017 +msgid "Ready" +msgstr "Спреман" + +#~ msgid "About Control panel" +#~ msgstr "О контролном панелу" + +#~ msgid "&Close" +#~ msgstr "&Затвори" + +#~ msgid "" +#~ "This program is based in part on the work of FLTK project (www.fltk.org). " +#~ "This program is free software, you can redistribute it and/or modify it " +#~ "under the terms of 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 Licence along with this program; if not, write to the " +#~ "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +#~ msgstr "" +#~ "Овај програм је базиран на FLTK пројекту (www.fltk.org). Овај програм је " +#~ "слободан софтвер, можете га редистрибуирати и/или модификовати под " +#~ "условима постављеним GNU General Public лиценцом објављеном од стране " +#~ "Free Software Foundation, било да је то верзија 2 Лиценце, или (опционо) " +#~ "било која каснија верзија. Овај програм је дистрибуиран у нади да ће бити " +#~ "употребљив, али БЕЗ ИКАКВИХ ГАРАНЦИЈА; чак без имплицитне гаранције " +#~ "ПРОДАЈЕ РОБЕ или ПОГОДНОСТИ ЗА НЕКУ СПЕЦИФИЧНУ НАМЕНУ. Погледајте \"GNU " +#~ "General Public License\" за више детаља. Требало би да сте добили копију " +#~ "\"GNU General Public License\" лиценце заједно са овим програмом; ако " +#~ "нисте, пишите на Free Software Foundation, Inc., 675 Mass Ave, Cambridge, " +#~ "MA 02139, USA." + +#~ msgid "This config utility shows system information." +#~ msgstr "Овај алат за конфигурисање приказује системске информације." + +#~ msgid "This config utility sets printer." +#~ msgstr "Овај конфигурациони алат подешава штампач." + +#~ msgid "Printers" +#~ msgstr "Штампачи" + +#~ msgid "Printers management." +#~ msgstr "Менаџмент штампача." + +#~ msgid "Hardware center" +#~ msgstr "Хардвер центар" + +#~ msgid "Hardware center." +#~ msgstr "Хардвер центар." diff --git a/l10n/sr/edewm.po b/l10n/sr/edewm.po new file mode 100755 index 0000000..dd8865c --- /dev/null +++ b/l10n/sr/edewm.po @@ -0,0 +1,87 @@ +# EDEWM - Prevod na srpski jezik +# Copyright (C) 2002 EDE Team +# Dejan Lekic Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: EDEWM 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:33+0100\n" +"PO-Revision-Date: 2002-11-21 08:26+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Desktop.cpp:138 Desktop.cpp:180 +#, c-format +msgid "Workspace %d" +msgstr "Радни простор %d" + +#: Frame.cpp:106 +msgid "Untitled" +msgstr "Неименован" + +#: Frame.cpp:938 +#, c-format +msgid "EDEWM: Internal bug, when restacking (%d != %d)! Exiting... " +msgstr "" + +#: Titlebar.cpp:215 +msgid "Sticky" +msgstr "Стики" + +#: Titlebar.cpp:275 Titlebar.cpp:320 +msgid "Set size" +msgstr "" + +#: Titlebar.cpp:276 +msgid "Set size to window:" +msgstr "" + +#: Titlebar.cpp:285 +msgid "width:" +msgstr "" + +#: Titlebar.cpp:287 +msgid "height:" +msgstr "" + +#: Titlebar.cpp:291 +msgid "&OK" +msgstr "" + +#: Titlebar.cpp:294 +msgid "&Cancel" +msgstr "" + +#: Titlebar.cpp:318 Titlebar.cpp:331 +msgid "Maximize" +msgstr "Максимизуј" + +#: Titlebar.cpp:319 +msgid "Minimize" +msgstr "Минимизуј" + +#: Titlebar.cpp:321 +msgid "To Desktop" +msgstr "На десктоп" + +#: Titlebar.cpp:322 +msgid "Kill" +msgstr "" + +#: Titlebar.cpp:323 +msgid "Close" +msgstr "Затвори" + +#: Titlebar.cpp:330 +msgid "Restore" +msgstr "Врати" + +#: Windowmanager.cpp:90 +#, c-format +msgid "Another window manager is running. You must exit it before running %s." +msgstr "" +"Други менаџер прозора је активан. Мораћете га угасити пре покретања %s." diff --git a/l10n/sr/edisplayconf.po b/l10n/sr/edisplayconf.po new file mode 100755 index 0000000..ce3e523 --- /dev/null +++ b/l10n/sr/edisplayconf.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: EDISPLAYCONF 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:31+0100\n" +"PO-Revision-Date: 2002-11-27 04:46+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edisplayconf.cpp:70 +msgid "Display configuration" +msgstr "Прикажи конфигурацију" + +#: edisplayconf.cpp:74 +msgid "Mouse" +msgstr "Миш" + +#: edisplayconf.cpp:76 +msgid "Acceleration" +msgstr "Акцелерација" + +#: edisplayconf.cpp:83 +msgid "Threshold (pixels)" +msgstr "Праг (у пикселима)" + +#: edisplayconf.cpp:92 +msgid "Bell" +msgstr "Звоно" + +#: edisplayconf.cpp:94 +msgid "Volume in %" +msgstr "Јачина у %" + +#: edisplayconf.cpp:101 +msgid "Pitch in Hz" +msgstr "Ниво у Hz" + +#: edisplayconf.cpp:109 +msgid "Duration in ms" +msgstr "Трајање у ms" + +#: edisplayconf.cpp:116 +#, fuzzy +msgid "Test" +msgstr "&Тест" + +#: edisplayconf.cpp:121 +msgid "Keyboard" +msgstr "Тастатура" + +#: edisplayconf.cpp:124 +msgid " Repeat key activated" +msgstr " Активиран тастер за понављање" + +#: edisplayconf.cpp:128 +msgid "Click volume %" +msgstr "Јачина клика %" + +#: edisplayconf.cpp:137 +msgid "Screen" +msgstr "Скрин" + +#: edisplayconf.cpp:139 +msgid "&Test" +msgstr "&Тест" + +#: edisplayconf.cpp:143 +msgid "Activation delay (min)" +msgstr "Пауза за активирање (мин)" + +#: edisplayconf.cpp:151 +msgid " Screen blanker activated" +msgstr "Скрин бланкер активиран" + +#: edisplayconf.cpp:156 +msgid "Pattern change delay (min)" +msgstr "Мењање шаблона након (мин)" + +#: edisplayconf.cpp:166 +msgid "Blank" +msgstr "Бланк" + +#: edisplayconf.cpp:172 +msgid "Pattern" +msgstr "Шаблон" + +#: edisplayconf.cpp:183 +msgid "&Cancel" +msgstr "&Одустани" + +#: edisplayconf.cpp:187 +msgid "&Apply" +msgstr "&Примени" + +#: edisplayconf.cpp:190 +msgid "OK" +msgstr "" diff --git a/l10n/sr/eiconman.po b/l10n/sr/eiconman.po new file mode 100755 index 0000000..537c32a --- /dev/null +++ b/l10n/sr/eiconman.po @@ -0,0 +1,249 @@ +# EICONMAN - Prevod na srpski jezik +# Copyright (C) 2002 EDE Team +# Dejan Lekic Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: EICONMAN 0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:27+0100\n" +"PO-Revision-Date: 2002-11-21 08:43+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: edeskconf.cpp:38 +msgid "Background settings" +msgstr "Особине позадине" + +#: edeskconf.cpp:42 +msgid "Background" +msgstr "Позадина" + +#: edeskconf.cpp:79 +msgid "C&olor..." +msgstr "&Боја..." + +#: edeskconf.cpp:87 +#, fuzzy +msgid "Use wallpaper" +msgstr "Позадинска слика" + +#: edeskconf.cpp:91 edeskconf.cpp:130 +msgid "label" +msgstr "" + +#: edeskconf.cpp:94 +msgid "Image:" +msgstr "Слика:" + +#: edeskconf.cpp:99 +msgid "&Browse..." +msgstr "&Траћи..." + +#: edeskconf.cpp:102 +msgid "Opacity:" +msgstr "Провидност:" + +#: edeskconf.cpp:112 +msgid "Mode:" +msgstr "" + +#: edeskconf.cpp:114 +msgid "Center" +msgstr "" + +#: edeskconf.cpp:117 +msgid "Stretch" +msgstr "" + +#: edeskconf.cpp:120 +msgid "Stretch (aspect)" +msgstr "" + +#: edeskconf.cpp:123 +msgid "Tiled" +msgstr "" + +#: edeskconf.cpp:131 +msgid "&OK" +msgstr "&ОК" + +#: edeskconf.cpp:134 propdialog.cpp:113 +msgid "&Apply" +msgstr "&Примени" + +#: edeskconf.cpp:137 +msgid "&Cancel" +msgstr "О&дустани" + +#: edeskicon.cpp:86 +msgid "&Open" +msgstr "&Отвори" + +#: edeskicon.cpp:90 +msgid "&Delete" +msgstr "О&бриши" + +#: edeskicon.cpp:96 +msgid "&Properties" +msgstr "&Вредности" + +#: edeskicon.cpp:442 +msgid "Name of the icon must be filled." +msgstr "Назив иконе мора бити испуњен." + +#: edeskicon.cpp:467 +msgid "Delete this icon?" +msgstr "Обрисати ову икону?" + +#: edeskicon.cpp:473 +#, c-format +msgid "" +"Remove of the icon %s failed. You probably do not have write access to this " +"file." +msgstr "" +"Брисање иконе %s није успело. Вероватно немате право уписа у овај фајл." + +#: edeskicon.cpp:482 +msgid "Enter the name of the new icon:" +msgstr "Унесите име нове иконе:" + +#: edeskicon.cpp:505 eiconman.cpp:241 +msgid "The icon with the same name already exists." +msgstr "Икона са истим именом већ постоји." + +#: edeskicon.cpp:562 +#, fuzzy, c-format +msgid "%d bytes, %s" +msgstr "%d бајтова" + +#: eiconman.cpp:112 +msgid "&New desktop item" +msgstr "&Нова ставка на десктоп-у" + +#: eiconman.cpp:116 +msgid "&Refresh" +msgstr "О&свежи" + +#: eiconman.cpp:122 +#, fuzzy +msgid "&Icons Settings " +msgstr "Вредности" + +#: eiconman.cpp:126 +#, fuzzy +msgid "&Background Settings" +msgstr "Особине позадине" + +#: eiconman.cpp:718 +msgid "" +"All Files, *,Png Images, *.png,Xpm Images, *.xpm,Jpeg Images, *.{jpg|jpeg}," +"Gif Images, *.gif,Bmp Images, *.bmp" +msgstr "" + +#: eiconman.cpp:724 +#, fuzzy +msgid "Choose wallpaper:" +msgstr "Позадинска слика" + +#: eiconman.cpp:761 +msgid "Choose color" +msgstr "" + +#: propdialog.cpp:31 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: propdialog.cpp:32 +msgid "Open location..." +msgstr "Отвори локацију..." + +#: propdialog.cpp:39 +msgid "" +"Png images (*.png), *.png, Jpeg Images (*.jpeg), *.{jpeg|jpg}, Bmp Files (*." +"bmp), *.bmp, Gif Files (*.gif), *.gif, Xpm Files (*.xpm), *.xpm, All files " +"(*.*), *" +msgstr "" + +#: propdialog.cpp:40 +msgid "Icon file selection" +msgstr "Селекција икон-фајла" + +#: propdialog.cpp:62 +msgid "Icon properties" +msgstr "Особине иконе" + +#: propdialog.cpp:65 +msgid "Icon" +msgstr "Икона" + +#: propdialog.cpp:69 +msgid "Name:" +msgstr "Назив:" + +#: propdialog.cpp:72 +msgid "Size:" +msgstr "Величина:" + +#: propdialog.cpp:75 +msgid "Command:" +msgstr "Команда:" + +#: propdialog.cpp:90 +msgid "Settings" +msgstr "Вредности" + +#: propdialog.cpp:92 +msgid "Link file:" +msgstr "Линк фајл:" + +#: propdialog.cpp:96 +msgid "Icon name:" +msgstr "Назив иконе:" + +#: propdialog.cpp:99 +msgid "Location to open:" +msgstr "Локација за отварање:" + +#: propdialog.cpp:102 propdialog.cpp:109 +msgid "..." +msgstr "" + +#: propdialog.cpp:106 +msgid "Icon filename:" +msgstr "Назив фајла-иконе:" + +#: propdialog.cpp:120 +msgid "&Close" +msgstr "&Затвори" + +#~ msgid "&Edit" +#~ msgstr "&Едитуј" + +#~ msgid "Enter the program name or the location to open:" +#~ msgstr "Унесите име програма или локацију за отварање:" + +#~ msgid "Background color selection..." +#~ msgstr "Селекција боје позадине..." + +#~ msgid "Image selection..." +#~ msgstr "Селекција слике..." + +#~ msgid "" +#~ "Images (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, All files (*." +#~ "*), *" +#~ msgstr "" +#~ "Слике (*.png; *.jpg; *.gif; *.bmp), *.{png|jpg|gif|bmp}, Сви фајлови (*." +#~ "*), *" + +#~ msgid "Icons (*.png), *.png, All files (*.*), *" +#~ msgstr "Иконе (*.png), *.png, Сви фајлови (*.*), *" + +#~ msgid "None" +#~ msgstr "Ништа" + +#~ msgid "&Bg Properties" +#~ msgstr "Особ&ине позадине" diff --git a/l10n/sr/eiconsconf.po b/l10n/sr/eiconsconf.po new file mode 100755 index 0000000..4e23efd --- /dev/null +++ b/l10n/sr/eiconsconf.po @@ -0,0 +1,71 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eiconsconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:25+0100\n" +"PO-Revision-Date: 2002-11-30 01:46+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eiconsconf.cpp:85 +msgid "Icons settings" +msgstr "Подешавања икона" + +#: eiconsconf.cpp:87 +msgid "&OK" +msgstr "&У реду" + +#: eiconsconf.cpp:90 +msgid "&Cancel" +msgstr "&Одустани" + +#: eiconsconf.cpp:93 +msgid "&Apply" +msgstr "&Примени" + +#: eiconsconf.cpp:97 +msgid "Look&&feel" +msgstr "Изглед и особине" + +#: eiconsconf.cpp:99 +msgid "Background color: " +msgstr "Боја позадине:" + +#: eiconsconf.cpp:106 +msgid "Label color: " +msgstr "Боја наслова:" + +#: eiconsconf.cpp:112 +msgid "Maximum width: " +msgstr "Максимална ширина:" + +#: eiconsconf.cpp:123 +msgid "Font height: " +msgstr "Висина фонта:" + +#: eiconsconf.cpp:134 +msgid "Grid spacing: " +msgstr "Размак међу линијама:" + +#: eiconsconf.cpp:145 +msgid "Auto arrange icons" +msgstr "Аутоматско ређање икона" + +#: eiconsconf.cpp:151 +msgid "Engage with just one click" +msgstr "Стартуј једним кликом:" + +#: eiconsconf.cpp:159 +msgid "Clear this, to get transparent background." +msgstr "Искључити ово, да би се добила провидна позадина." + +#: eiconsconf.cpp:176 +msgid "Choose color" +msgstr "Изаберите боју" diff --git a/l10n/sr/elauncher.po b/l10n/sr/elauncher.po new file mode 100755 index 0000000..6f9aa5b --- /dev/null +++ b/l10n/sr/elauncher.po @@ -0,0 +1,179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:22+0100\n" +"PO-Revision-Date: 2002-11-30 02:06+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: elauncher.cpp:46 +#, fuzzy +msgid "&Ok" +msgstr "&ОК" + +#: elauncher.cpp:65 +msgid "Error" +msgstr "" + +#: elauncher.cpp:69 elauncher.cpp:411 +msgid "&OK" +msgstr "&ОК" + +#: elauncher.cpp:104 +msgid "Program not found:" +msgstr "" + +#: elauncher.cpp:105 +msgid "Perhaps it is not installed properly. Check your $PATH value." +msgstr "" + +#: elauncher.cpp:108 +msgid "File is not executable:" +msgstr "" + +#: elauncher.cpp:115 +#, c-format +msgid "Elauncher: child's exited normally with status %d\n" +msgstr "" + +#: elauncher.cpp:130 +msgid "Standard output" +msgstr "" + +#: elauncher.cpp:139 +msgid "Standard error output" +msgstr "" + +#: elauncher.cpp:203 +#, c-format +msgid "Elauncher: fork() failed!" +msgstr "" + +#: elauncher.cpp:235 +#, c-format +msgid "Elauncher: waitpid failed\n" +msgstr "" + +#: elauncher.cpp:245 +#, c-format +msgid "Elauncher: %s: child died unexpectedly!\n" +msgstr "" + +#: elauncher.cpp:296 +#, c-format +msgid "" +"Unknown file type:\n" +"\t%s\n" +"To open this file in 'appname' please use\n" +" 'appname %s'" +msgstr "" + +#: elauncher.cpp:334 +#, c-format +msgid "" +"You have requested to execute program %s via Elauncher. However, secure mode " +"was enabled. Execution has been prevented." +msgstr "" + +#: elauncher.cpp:386 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: elauncher.cpp:387 +msgid "File selection..." +msgstr "Селектовање фајла..." + +#: elauncher.cpp:395 +msgid "Open..." +msgstr "Отвори..." + +#: elauncher.cpp:398 +msgid "Open:" +msgstr "Отвори:" + +#: elauncher.cpp:407 +msgid "" +"Type the location you want to open or the name of the program you want to " +"run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "" +"Унесите локацију коју желите да отворите или име програма који желите да " +"стартујете. (Могући префикси су: http:, ftp:, gg:, av:, leo: )" + +#: elauncher.cpp:414 +msgid "&Cancel" +msgstr "&Одустани" + +#: elauncher.cpp:417 +msgid "&Browse..." +msgstr "&Нађи..." + +#: elauncher.cpp:432 +#, c-format +msgid "program and URL opener for EDE.\n" +msgstr "" + +#: elauncher.cpp:434 +#, c-format +msgid "" +"Licenced under terms of GNU General Public Licence v2.0 or newer.\n" +"\n" +msgstr "" + +#: elauncher.cpp:435 +#, c-format +msgid "Usage:\n" +msgstr "" + +#: elauncher.cpp:439 +#, c-format +msgid "" +"\tParse URL in form protocol:address and open in appropriate program.\n" +"\tURLs with protocol 'file' are opened based on their MIME type.\n" +msgstr "" + +#: elauncher.cpp:441 +#, c-format +msgid "" +"\tRun the program. If no path is given, look in $PATH. To give parameters\n" +"\tto program, use quotes e.g.:\n" +msgstr "" + +#: elauncher.cpp:443 +#, c-format +msgid "Options:\n" +msgstr "" + +#: elauncher.cpp:445 +#, c-format +msgid "This help screen.\n" +msgstr "" + +#: elauncher.cpp:447 +#, c-format +msgid "Run as root. Dialog is opened to enter password.\n" +msgstr "" + +#: elauncher.cpp:449 +#, c-format +msgid "Prevent running programs. Only URLs are allowed.\n" +msgstr "" + +#: elauncher.cpp:451 +#, c-format +msgid "" +"Open in default terminal app.\n" +"\n" +msgstr "" + +#: elauncher.cpp:482 +#, c-format +msgid "Elauncher: Wrong number of parameters...\n" +msgstr "" diff --git a/l10n/sr/emenueditor.po b/l10n/sr/emenueditor.po new file mode 100755 index 0000000..d06718f --- /dev/null +++ b/l10n/sr/emenueditor.po @@ -0,0 +1,136 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: emenueditor 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:17+0100\n" +"PO-Revision-Date: 2002-11-30 01:53+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emenueditor.cpp:40 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: emenueditor.cpp:41 +msgid "File selection ..." +msgstr "Селекција фајла ..." + +#: emenueditor.cpp:52 +msgid "Menu editor" +msgstr "Едитор менија" + +#: emenueditor.cpp:56 +msgid "&File" +msgstr "&Фајл" + +#: emenueditor.cpp:57 +msgid "&Quit" +msgstr "&Крај" + +#: emenueditor.cpp:65 +msgid "Programs:" +msgstr "Програми:" + +#: emenueditor.cpp:67 +msgid "Click on the submenu or on the item you want" +msgstr "Кликни на подмени или на ставку коју желите" + +#: emenueditor.cpp:72 +msgid "New submenu" +msgstr "Нови подмени" + +#: emenueditor.cpp:75 +msgid "Delete submenu" +msgstr "Бриши подмени" + +#: emenueditor.cpp:78 +msgid "New item" +msgstr "Нова ставка" + +#: emenueditor.cpp:81 +msgid "Delete item" +msgstr "Бриши ставку" + +#: emenueditor.cpp:84 +msgid "Edit Item" +msgstr "Едитуј ставку" + +#: emenueditor.cpp:153 +msgid "Please, enter the name of the menu item." +msgstr "Молимо Вас, унесите име ставке у менију." + +#: emenueditor.cpp:183 +msgid "Icons (*.png), *.png, All files (*.*), *" +msgstr "Иконе (*.png), *.png, Сви фајлови (*.*), *" + +#: emenueditor.cpp:184 +msgid "Choose icon file..." +msgstr "Изаберите икон-фајл..." + +#: emenueditor.cpp:196 +msgid "Edit item" +msgstr "Едитуј ставку" + +#: emenueditor.cpp:198 +msgid "Filename:" +msgstr "Име фајла:" + +#: emenueditor.cpp:201 +msgid "Name in the menu:" +msgstr "Назив у менију:" + +#: emenueditor.cpp:204 +msgid "Command to execute:" +msgstr "Команда за извршавање:" + +#: emenueditor.cpp:208 +msgid "Bro&wse..." +msgstr "&Нађи..." + +#: emenueditor.cpp:212 +msgid "Icon filename:" +msgstr "Име фајла иконе:" + +#: emenueditor.cpp:216 +msgid "&Save" +msgstr "&Сними" + +#: emenueditor.cpp:220 +msgid "&Cancel" +msgstr "&Одустани" + +#: emenueditor.cpp:224 +msgid "&Browse..." +msgstr "&Нађи..." + +#: emenueditor.cpp:231 +msgid "New folder" +msgstr "Нови директоријум" + +#: emenueditor.cpp:277 +msgid "Please enter name of the new submenu:" +msgstr "Молимо Вас унесите назив новог подменија:" + +#: emenueditor.cpp:284 +msgid "Cannot create submenu!" +msgstr "Не могу да креирам подмени!" + +#: emenueditor.cpp:350 +msgid "" +"You should delete all the items from the submenu, before you can delete it!" +msgstr "" +"Требало би да обришете све ставке у подменију пре него покушате да га " +"обришете!" + +#~ msgid "Go up..." +#~ msgstr "Иди горе..." + +#~ msgid "Go up one level" +#~ msgstr "Иди један ниво горе" diff --git a/l10n/sr/epanelconf.po b/l10n/sr/epanelconf.po new file mode 100755 index 0000000..9748a91 --- /dev/null +++ b/l10n/sr/epanelconf.po @@ -0,0 +1,135 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: epanelconf 1.0\n" +"POT-Creation-Date: 2002-10-17 18:15+0000\n" +"PO-Revision-Date: 2002-11-30 02:04+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: epanelconf.cpp:25 +#: epanelconf.cpp:35 +#: epanelconf.cpp:60 +#: epanelconf.cpp:70 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + +#: epanelconf.cpp:26 +#: epanelconf.cpp:36 +#: epanelconf.cpp:61 +#: epanelconf.cpp:71 +msgid "File selection..." +msgstr "Селектовање фајла..." + +#: epanelconf.cpp:81 +msgid "Panel settings" +msgstr "Особине панела" + +#: epanelconf.cpp:83 +msgid "&Apply" +msgstr "&Примени" + +#: epanelconf.cpp:86 +msgid "&Close" +msgstr "&Затвори" + +#: epanelconf.cpp:90 +msgid "Utilities" +msgstr "Помоћни алати" + +#: epanelconf.cpp:91 +msgid "Panel utilities" +msgstr "Помоћни алати за панел" + +#: epanelconf.cpp:94 +msgid "Volume control program:" +msgstr "Програм за контролу јачине звука:" + +#: epanelconf.cpp:97 +#: epanelconf.cpp:177 +msgid "&Browse..." +msgstr "&Нађи..." + +#: epanelconf.cpp:100 +msgid "Time and date program:" +msgstr "Време и датум - програм:" + +#: epanelconf.cpp:103 +#: epanelconf.cpp:183 +msgid "Br&owse..." +msgstr "&Нађи..." + +#: epanelconf.cpp:108 +msgid "Autohide" +msgstr "Аутоскривање" + +#: epanelconf.cpp:111 +msgid "Automaticaly hide panel" +msgstr "Аутоматски сакриј панел" + +#: epanelconf.cpp:117 +msgid "Workspaces" +msgstr "Радне површине" + +#: epanelconf.cpp:119 +msgid "Number of workspaces: " +msgstr "Број радних површина:" + +#: epanelconf.cpp:129 +msgid "Workspace names:" +msgstr "Имена радних површина:" + +#: epanelconf.cpp:132 +msgid "WS 1:" +msgstr "РП 1:" + +#: epanelconf.cpp:136 +msgid "WS 2:" +msgstr "РП 2:" + +#: epanelconf.cpp:140 +msgid "WS 3:" +msgstr "РП 3:" + +#: epanelconf.cpp:144 +msgid "WS 4:" +msgstr "РП 4:" + +#: epanelconf.cpp:148 +msgid "WS 5:" +msgstr "РП 5:" + +#: epanelconf.cpp:152 +msgid "WS 6:" +msgstr "РП 6:" + +#: epanelconf.cpp:156 +msgid "WS 7:" +msgstr "РП 7:" + +#: epanelconf.cpp:160 +msgid "WS 8:" +msgstr "РП 8:" + +#: epanelconf.cpp:169 +msgid "Handlers" +msgstr "Хендлери" + +#: epanelconf.cpp:171 +msgid "Handlers programs" +msgstr "Програми-хендлери" + +#: epanelconf.cpp:174 +msgid "Internet browser:" +msgstr "Интернет браузер:" + +#: epanelconf.cpp:180 +msgid "Terminal:" +msgstr "Терминал:" + diff --git a/l10n/sr/erun.po b/l10n/sr/erun.po new file mode 100755 index 0000000..47bc234 --- /dev/null +++ b/l10n/sr/erun.po @@ -0,0 +1,47 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: erun 1.0\n" +"POT-Creation-Date: 2002-04-21 14:09+0200\n" +"PO-Revision-Date: 2002-11-30 02:06+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: erun.cpp:861 +msgid "File selection..." +msgstr "Селектовање фајла..." + +#: erun.cpp:871 +msgid "Open..." +msgstr "Отвори..." + +#: erun.cpp:874 +msgid "Open:" +msgstr "Отвори:" + +#: erun.cpp:883 +msgid "Type the location you want to open or the name of the program you want to run. (Possible prefixes are: http:, ftp:, gg:, av:, leo:)" +msgstr "Унесите локацију коју желите да отворите или име програма који желите да стартујете. (Могући префикси су: http:, ftp:, gg:, av:, leo: )" + +#: erun.cpp:893 +msgid "&Browse..." +msgstr "&Нађи..." + +#: erun.cpp:887 +msgid "&OK" +msgstr "&ОК" + +#: erun.cpp:891 +msgid "&Cancel" +msgstr "&Одустани" + +#: erun.cpp:853 +msgid "Executables (*.*), *, All files (*.*), *" +msgstr "Извршни фајлови (*.*), *, Сви фајлови (*.*), *" + diff --git a/l10n/sr/etimedate.po b/l10n/sr/etimedate.po new file mode 100755 index 0000000..2c3398c --- /dev/null +++ b/l10n/sr/etimedate.po @@ -0,0 +1,146 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: etimedate 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 12:00+0100\n" +"PO-Revision-Date: 2002-12-02 04:11+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etimedate.cpp:227 +msgid "Time and date" +msgstr "Време и датум" + +#: etimedate.cpp:230 +msgid "&OK" +msgstr "&ОК" + +#: etimedate.cpp:233 +msgid "&Apply" +msgstr "&Примени" + +#: etimedate.cpp:235 +msgid "Set system time. ->Just root user!<-" +msgstr "Системско време. -> Морате бити суперкорисник! <-" + +#: etimedate.cpp:237 +msgid "&Cancel" +msgstr "&Одустани" + +#: etimedate.cpp:243 +msgid "Time/date" +msgstr "Време/датум" + +#: etimedate.cpp:261 +msgid "Timezones" +msgstr "Временске зоне" + +#: fl_time.cpp:189 +msgid "Error setting time. You are probably not superuser!" +msgstr "Грешка у сетовању времена. Вероватно нисте суперкорисник!" + +#: fl_time.cpp:397 fl_time.cpp:405 fl_time.cpp:442 +msgid "Zone information not found." +msgstr "" + +#: fl_time.cpp:414 +msgid "Cannot setup timezone!" +msgstr "Не могу да сетујем временску зону!" + +#~ msgid "H-" +#~ msgstr "С-" + +#~ msgid "H+" +#~ msgstr "С+" + +#~ msgid "M-" +#~ msgstr "М-" + +#~ msgid "M+" +#~ msgstr "М+" + +#~ msgid "Su" +#~ msgstr "Не" + +#~ msgid "Mo" +#~ msgstr "По" + +#~ msgid "Tu" +#~ msgstr "Ут" + +#~ msgid "We" +#~ msgstr "Ср" + +#~ msgid "Th" +#~ msgstr "Че" + +#~ msgid "Fr" +#~ msgstr "Пе" + +#~ msgid "St" +#~ msgstr "Су" + +#~ msgid "Y-" +#~ msgstr "Г-" + +#~ msgid "Previous year." +#~ msgstr "Претходна година." + +# msgid "M-" +# msgstr "" +#~ msgid "Previous month." +#~ msgstr "Претходни месец." + +# msgid "M+" +# msgstr "" +#~ msgid "Next month." +#~ msgstr "Следеђи месец." + +#~ msgid "Y+" +#~ msgstr "Г+" + +#~ msgid "Next year." +#~ msgstr "Следећа година." + +#~ msgid "January" +#~ msgstr "Јануар" + +#~ msgid "Febuary" +#~ msgstr "Фебруар" + +#~ msgid "March" +#~ msgstr "Март" + +#~ msgid "April" +#~ msgstr "Април" + +#~ msgid "May" +#~ msgstr "Мај" + +#~ msgid "June" +#~ msgstr "Јун" + +#~ msgid "July" +#~ msgstr "Јул" + +#~ msgid "August" +#~ msgstr "Август" + +#~ msgid "September" +#~ msgstr "Септембар" + +#~ msgid "October" +#~ msgstr "Октобар" + +#~ msgid "November" +#~ msgstr "Новембар" + +#~ msgid "December" +#~ msgstr "Децембар" diff --git a/l10n/sr/etip.po b/l10n/sr/etip.po new file mode 100755 index 0000000..f8862e9 --- /dev/null +++ b/l10n/sr/etip.po @@ -0,0 +1,95 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: etip 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:58+0100\n" +"PO-Revision-Date: 2002-12-02 04:19+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: etip.cpp:809 +#, fuzzy +msgid "" +"To start any application is simple. Press on the button with your user name, " +"go to the Programs menu, select category and click on the wished program." +msgstr "" +"Стартовање апликације је веома просто. Притисните ЕДЕ тастер \"Програми\", " +"селектујте категорију и кликните на жељени програм." + +#: etip.cpp:810 +#, fuzzy +msgid "" +"To exit the Equinox Desktop environment, press button with your user name " +"and then logout." +msgstr "" +"Да бисте изашли из ЕДЕ-а притисните ЕДЕ тастер и након тога кликните на " +"\"Излогуј ме\"." + +#: etip.cpp:811 +#, fuzzy +msgid "To lock the computer, press button with your user name and then lock." +msgstr "" +"Да бисте закључали рачунар притисните ЕДЕ тастер и након тога кликните на " +"\"закључај\"." + +#: etip.cpp:812 +#, fuzzy +msgid "" +"To setup things on the computer, press button with your user name, Panel " +"menu and then the Control panel." +msgstr "" +"Да бисте подесили разне ствари на вашем рачунару притисните ЕДЕ тастер, " +"након тога изаберите \"Панел\" мени и кликните на \"Контролни панел\" опцију." + +#: etip.cpp:813 +#, fuzzy +msgid "" +"To add a program that is not in the Programs menu, click on the button with " +"your user, Panel menu, and then Edit panels menu." +msgstr "" +"Да бисте додали програм који није у менију \"Програми\" кликните на ЕДЕ " +"тастер, \"Панел\" мени и онда на \"Едитовање панела\" опцију." + +#: etip.cpp:814 +msgid "" +"Notice that this is still development version, so please send your bug " +"reports or comments on EDE forum, EDE bug reporting system (on project's " +"page), or karijes@users.sourceforge.net." +msgstr "" + +#: etip.cpp:815 +msgid "" +"You can download latest release on - http://sourceforge.net/projects/ede." +msgstr "" + +#: etip.cpp:820 +msgid "Startup tips" +msgstr "Стартап савети" + +#: etip.cpp:825 +msgid "Do not show this dialog next time" +msgstr "Не желим приказивање овог дијалога у будуће" + +#: etip.cpp:840 +#, fuzzy +msgid "Welcome to Equinox Desktop Environment version " +msgstr "Добродошли у Иквинокс Десктоп Окружење :)" + +#: etip.cpp:850 +msgid "<< &Previous" +msgstr "<< &Претходни" + +#: etip.cpp:854 +msgid "&Next >>" +msgstr "&Следећи >>" + +#: etip.cpp:859 +msgid "&Close" +msgstr "&Затвори" diff --git a/l10n/sr/ewmconf.po b/l10n/sr/ewmconf.po new file mode 100755 index 0000000..d5632c6 --- /dev/null +++ b/l10n/sr/ewmconf.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Dejan Lekic , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: ewmconf 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:51+0100\n" +"PO-Revision-Date: 2002-12-02 04:24+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ewmconf.cpp:89 +msgid "Themes (*.theme), *.theme, All files (*.*), *" +msgstr "" + +#: ewmconf.cpp:92 +msgid "Themes..." +msgstr "" + +#: ewmconf.cpp:139 +msgid "Window manager settings" +msgstr "Подешавање менаџера прозора" + +#: ewmconf.cpp:143 +#, fuzzy +msgid "&Titlebar" +msgstr "Тајтлбар" + +#: ewmconf.cpp:145 +msgid "Text align:" +msgstr "" + +#: ewmconf.cpp:147 +msgid "Left" +msgstr "" + +#: ewmconf.cpp:148 +msgid "Right" +msgstr "" + +#: ewmconf.cpp:149 +msgid "Center" +msgstr "" + +#: ewmconf.cpp:153 +msgid "Height:" +msgstr "" + +#: ewmconf.cpp:161 +msgid "Titlebar label color: " +msgstr "Боја наслова:" + +#: ewmconf.cpp:167 +msgid "Titlebar color: " +msgstr "Боја тајтлбар-а:" + +#: ewmconf.cpp:174 +msgid "Titlebar active label color: " +msgstr "Боја активног тајтлбар-а:" + +#: ewmconf.cpp:180 +msgid "Titlebar active color: " +msgstr "Боја активног тајтлбар-а:" + +#: ewmconf.cpp:188 +msgid "Box type:" +msgstr "" + +#: ewmconf.cpp:191 +msgid "Flat" +msgstr "" + +#: ewmconf.cpp:192 +msgid "Horizontal shade" +msgstr "" + +#: ewmconf.cpp:193 +msgid "Thin down" +msgstr "" + +#: ewmconf.cpp:194 +msgid "Up box" +msgstr "" + +#: ewmconf.cpp:195 +msgid "Down box" +msgstr "" + +#: ewmconf.cpp:196 +msgid "Plastic" +msgstr "" + +#: ewmconf.cpp:200 +msgid "&Use theme" +msgstr "" + +#: ewmconf.cpp:204 +msgid "Path:" +msgstr "" + +#: ewmconf.cpp:209 +msgid "..." +msgstr "" + +#: ewmconf.cpp:213 ewmconf.cpp:216 ewmconf.cpp:243 +msgid "label" +msgstr "" + +#: ewmconf.cpp:221 +#, fuzzy +msgid "&Resizing" +msgstr "Померање и промена величине" + +#: ewmconf.cpp:224 +msgid "Animate size changes" +msgstr "Анимирај промену величине" + +#: ewmconf.cpp:229 +msgid "Speed:" +msgstr "Брзина:" + +#: ewmconf.cpp:244 +msgid "Show window content while resizing" +msgstr "Приказуј прозор приликом мењања величине" + +#: ewmconf.cpp:252 +msgid "&OK" +msgstr "&ОК" + +#: ewmconf.cpp:256 +msgid "&Apply" +msgstr "&Примени" + +#: ewmconf.cpp:259 +msgid "&Cancel" +msgstr "&Одустани" + +#: ewmconf.cpp:274 +msgid "Choose color" +msgstr "Изабери боју" + +#~ msgid "Draw gradient titlebar" +#~ msgstr "Цртај тајтлбар са преливом" diff --git a/l10n/sr/eworkpanel.po b/l10n/sr/eworkpanel.po new file mode 100755 index 0000000..6839057 --- /dev/null +++ b/l10n/sr/eworkpanel.po @@ -0,0 +1,257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-02-04 11:48+0100\n" +"PO-Revision-Date: 2002-12-02 04:33+0100\n" +"Last-Translator: Dejan Lekic \n" +"Language-Team: LINUKS.org T.T. \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aboutdialog.cpp:14 +msgid "About Equinox Desktop Environment" +msgstr "О Иквинокс Десктоп Окружењу" + +#: aboutdialog.cpp:17 +#, fuzzy +msgid "Equinox Desktop Environment " +msgstr "О Иквинокс Десктоп Окружењу" + +#: aboutdialog.cpp:25 +msgid "" +" This program is based in part on the work of FLTK project (www.fltk.org). " +"This program is free software, you can redistribute it and/or modify it " +"under the terms of 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 Licence along with this program; if not, write to the Free " +"Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA" +msgstr "" +"Овај програм је базиран на FLTK пројекту (www.fltk.org). Овај програм је " +"слободан софтвер, можете га редистрибуирати и/или модификовати под условима " +"постављеним GNU General Public лиценцом објављеном од стране Free Software " +"Foundation, било да је то верзија 2 Лиценце, или (опционо) било која каснија " +"верзија. Овај програм је дистрибуиран у нади да ће бити употребљив, али БЕЗ " +"ИКАКВИХ ГАРАНЦИЈА; чак без имплицитне гаранције ПРОДАЈЕ РОБЕ или ПОГОДНОСТИ " +"ЗА НЕКУ СПЕЦИФИЧНУ НАМЕНУ. Погледајте \"GNU General Public License\" за више " +"детаља. Требало би да сте добили копију \"GNU General Public License\" " +"лиценце заједно са овим програмом; ако нисте, пишите на Free Software " +"Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." + +#: aboutdialog.cpp:38 logoutdialog.cpp:220 +msgid "&OK" +msgstr "&ОК" + +#: aboutdialog.cpp:42 +msgid "label" +msgstr "" + +#: aboutdialog.cpp:43 +msgid "(C)Copyright 2000-2004 EDE Authors" +msgstr "" + +#: cpumonitor.cpp:194 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" + +#: item.cpp:91 +#, fuzzy +msgid "Open with terminal..." +msgstr "Отвори са икс-терм-ом." + +#: item.cpp:92 +#, fuzzy +msgid "Open with browser..." +msgstr "Отвори са браузером..." + +#: item.cpp:94 +msgid "Close Menu" +msgstr "Затвори мени" + +#: keyboardchooser.cpp:86 keyboardchooser.cpp:179 +msgid "More..." +msgstr "" + +#: logoutdialog.cpp:92 +msgid "You are not allowed to restart !" +msgstr "" + +#: logoutdialog.cpp:111 +msgid "You are not allowed to shutdown !" +msgstr "" + +#: logoutdialog.cpp:185 +msgid "Logout" +msgstr "Излогуј" + +#: logoutdialog.cpp:194 +msgid "&logout from the current session" +msgstr "Из&логуј ме из тренутне сесије" + +#: logoutdialog.cpp:197 +msgid "Logout from the current session." +msgstr "Излогуј ме из тренутне сесије." + +#: logoutdialog.cpp:200 +msgid "&restart the computer" +msgstr "&Рестартуј рачунар" + +#: logoutdialog.cpp:203 +#, fuzzy +msgid "Restart the computer." +msgstr "&Рестартуј рачунар" + +#: logoutdialog.cpp:205 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:210 +msgid "&shut down the computer" +msgstr "&Угаси рачунар" + +#: logoutdialog.cpp:213 +#, fuzzy +msgid "Shut down the computer." +msgstr "&Угаси рачунар" + +#: logoutdialog.cpp:215 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "" + +#: logoutdialog.cpp:224 +msgid "&Cancel" +msgstr "&Одустани" + +#: logoutdialog.cpp:228 +msgid "Logout, restart or shut down the computer?" +msgstr "Излогуј ме, рестартуј или угаси рачунар?" + +#: mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Добродошли у Иквинокс Десктоп Окружење." + +#: mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Отвори директоријум..." + +#: taskbutton.cpp:165 +#, fuzzy +msgid " Close " +msgstr "Затвори мени" + +#: taskbutton.cpp:167 +msgid " Kill" +msgstr "" + +#: taskbutton.cpp:172 +msgid " Minimize" +msgstr "" + +#: taskbutton.cpp:173 +msgid " Restore" +msgstr "" + +#: workpanel.cpp:253 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent: %ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Дошло: %ld kB (%.1f kB/s)\n" +"Послато: %ld kB (%.1f kB/s)\n" +"Трајање: %d min %d sec" + +#: workpanel.cpp:331 +msgid "Workspace" +msgstr "Радна површина" + +#: workpanel.cpp:465 +msgid "Show desktop" +msgstr "" + +#: workpanel.cpp:479 +msgid "Workspaces" +msgstr "Радне површине" + +#: workpanel.cpp:523 +msgid "Settings" +msgstr "Подешавања" + +#: workpanel.cpp:528 +msgid "About EDE..." +msgstr "О ЕДЕ-у..." + +#: workpanel.cpp:597 +msgid "Volume control" +msgstr "Контрола звука" + +#~ msgid "CPU Load: %3.2f %3.2f %3.2f, %d processes." +#~ msgstr "CPU Лоад: %3.2f %3.2f %3.2f, %d процеса." + +#~ msgid "&Programs" +#~ msgstr "&Програми" + +#~ msgid "&Favourites" +#~ msgstr "&Омиљени" + +#~ msgid "F&ind" +#~ msgstr "&Тражи" + +#~ msgid "&Help" +#~ msgstr "По&моћ" + +#~ msgid "&About" +#~ msgstr "&О..." + +#~ msgid "&Run..." +#~ msgstr "&Старт" + +#~ msgid "&Panel" +#~ msgstr "П&анел" + +#~ msgid "Edit panels menu" +#~ msgstr "Едитуј панел меније" + +#~ msgid "Panel settings" +#~ msgstr "Панел подешавање" + +#~ msgid "Control panel" +#~ msgstr "Контролни панел" + +#~ msgid "Install new software" +#~ msgstr "Инсталирај нови софтвер" + +#~ msgid "L&ock screen" +#~ msgstr "&Закључај екран" + +#~ msgid "&Logout" +#~ msgstr "&Излогуј ме" + +#~ msgid "Restart the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Рестартуј рачунар. Ова акција је дозвољена само \"root\" кориснику!" + +#~ msgid "" +#~ "Shut down the computer. This action is only allowed to \"root\" user!" +#~ msgstr "Угаси рачунар. Ова акција је дозвољена само \"root\" кориснику!" + +#~ msgid "&User programs" +#~ msgstr "&Кориснички програми" + +#~ msgid "&Browser" +#~ msgstr "&Браузер" diff --git a/makeinclude.in b/makeinclude.in new file mode 100755 index 0000000..19782ee --- /dev/null +++ b/makeinclude.in @@ -0,0 +1,84 @@ +# +# $Id: makeinclude.in 1652 2006-06-07 19:37:51Z karijes $ +# +# Part of Equinox Desktop Environment (EDE). +# Copyright (c) 2000-2006 EDE Authors. +# +# This program is licenced under terms of the +# GNU General Public Licence version 2 or newer. +# See COPYING for details. + +# Overwrite if you want that be overwriten + +# directories +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +datadir = @datadir@ +includedir = @includedir@ +libdir = @libdir@ +mandir = @mandir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +VPATH = @srcdir@ +EVOLUME = @EVOLUME@ + +#locale directory +LOCALEDIR = @prefix@/share/locale + +# programs +CXX = @CXX@ +MSGFMT = @MSGFMT@ +MAKEDEPEND = @MAKEDEPEND@ +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +RM = @RM@ -f +MKINSTALLDIRS = @HOME_DIR@/mkinstalldirs + +# NOTE: this is a function +# it is called like '$(INSTALL_LOCALE)' + +INSTALL_LOCALE=\ + for f in $(MOFILES); do\ + $(MKINSTALLDIRS) $(LOCALEDIR)/`basename $$f .mo`/LC_MESSAGES;\ + $(INSTALL_DATA) $$f $(LOCALEDIR)/`basename $$f .mo`/LC_MESSAGES/$(TARGET).mo;\ + done + +# compiler flags +CXXFLAGS = -DSHAPE @CXXFLAGS@ + +# libraries +LIBS = @LIBS@ + + + +@SILENT@ + +.SUFFIXES: .o .cxx .cpp .c .po .mo + +OBJECTS:= $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(CXXFILES:.cxx=.o) +MOFILES:= $(POFILES:.po=.mo) + +all: $(TARGET) $(MOFILES) + +$(TARGET): $(OBJECTS) + echo Linking $@ + $(CXX) $^ -o $@ $(LIBS) + +%.o: %.cpp + echo Compiling $<... + $(CXX) $(CXXFLAGS) -c $< + +%.o: %.cxx + echo Compiling $<... + $(CXX) $(CXXFLAGS) -c $< + +%.o: %.c + echo Compiling $<... + $(CXX) $(CXXFLAGS)-c $< + +%.mo: %.po + echo Translation $<... + $(MSGFMT) $< -o $@ diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..f22b579 --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1.1.1 2005/03/04 15:44:35 karijes Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/tempfile.tmp b/tempfile.tmp new file mode 100644 index 0000000000000000000000000000000000000000..393a00335c6d1fb7c5395148089b7a77b830b0ed GIT binary patch literal 1201 zcmX9+TW=dx5RO2iC_Eq#AOsH`IaNw&H(B3uaZ^;|bG%;Hx7r(5soKQH_OZQmy=S|7 z+|+$&*^6Dqdf?OP7x=zey{O->G1+MsPkq$9N-zTl}%}|f@sC@Bg0~*yb1wtFSx?VH%CIv$`N_1;| z19HL{yJmkN;fLG}IHK7)7zGNoZ0=rGqt_ddtJaR{x>hitP%RN!M~*QtJ?NPh2ee(& zldjnwN#2E#-Q_OG0SAu_Iap?g+a3qzfx|jaSfA(hdc%P1p;4&T;eeL2dg*SKkUDKN ze!7Kn);DfJZ}j5Dczx*g%`U`ZSUgs9#V@=g6}_u8x$Bw2&NOMgp;s%9?AUs&&K==O zrL6os>U)YIGEl1;O3vj>VyZ%zC8%V})b5XP2*u!Rn1NEZq8%QTN_Q=DOSt{AUZ(M_ zoUkRgkv?{?spQY)wqr5Vz73rLb3HEaszADEa(VJxZYmU>$n{E&Yp2M zo>Jqdrri~%Fl07rcY)bmX!8MkW{S~%+8cY45Ai%M9!$DCkxr%t+;Th^ixEfxrtL{) zSzz;1@I+6ZGM6XS`2Ikgq8#iwbWq-qcbQD94zszH+}l<6afb9}9>2)W{gEm6k_D`} znQdcB6)*OHTS(+vP~a}_Fni>{P9s#qsK#b^ik{x~5S8 literal 0 HcmV?d00001