From f8c3e1ff7c3068b1059dcd75c298f9c935055d1b Mon Sep 17 00:00:00 2001 From: Sanel Zukan Date: Fri, 20 Feb 2009 13:04:52 +0000 Subject: [PATCH] Copying panel from old ede --- ede-panel/Makefile | 45 ++ ede-panel/aboutdialog.cpp | 108 ++++ ede-panel/aboutdialog.fld | 57 ++ ede-panel/aboutdialog.h | 19 + ede-panel/batterymonitor.cpp | 419 ++++++++++++++ ede-panel/batterymonitor.h | 38 ++ ede-panel/cpumonitor.cpp | 508 +++++++++++++++++ ede-panel/cpumonitor.h | 50 ++ ede-panel/dock.cpp | 326 +++++++++++ ede-panel/dock.h | 43 ++ ede-panel/icons/about.xpm | 170 ++++++ ede-panel/icons/battery.xpm | 22 + ede-panel/icons/clean.xpm | 19 + ede-panel/icons/desktop.xpm | 208 +++++++ ede-panel/icons/ede-small.xpm | 76 +++ ede-panel/icons/ede.xpm | 402 ++++++++++++++ ede-panel/icons/ede_small.xpm | 316 +++++++++++ ede-panel/icons/favourites.xpm | 150 +++++ ede-panel/icons/file.xpm | 88 +++ ede-panel/icons/find.xpm | 205 +++++++ ede-panel/icons/help.xpm | 138 +++++ ede-panel/icons/keyboard.xpm | 164 ++++++ ede-panel/icons/lock.xpm | 165 ++++++ ede-panel/icons/logout.xpm | 25 + ede-panel/icons/mini_penguin.xpm | 124 +++++ ede-panel/icons/panel.xpm | 199 +++++++ ede-panel/icons/penguin.xpm | 358 ++++++++++++ ede-panel/icons/poweron.xpm | 69 +++ ede-panel/icons/programs.xpm | 155 ++++++ ede-panel/icons/programs_user.xpm | 178 ++++++ ede-panel/icons/run.xpm | 177 ++++++ ede-panel/icons/showdesktop.xpm | 138 +++++ ede-panel/icons/shutdown.xpm | 160 ++++++ ede-panel/icons/sound.xpm | 162 ++++++ ede-panel/icons/sound_penguin.xpm | 202 +++++++ ede-panel/icons/tux.xpm | 91 +++ ede-panel/item.cpp | 127 +++++ ede-panel/item.h | 85 +++ ede-panel/keyboardchooser.cpp | 294 ++++++++++ ede-panel/keyboardchooser.h | 46 ++ ede-panel/locale/de.po | 260 +++++++++ ede-panel/locale/fr.po | 240 ++++++++ ede-panel/locale/hu.po | 179 ++++++ ede-panel/locale/id.po | 257 +++++++++ ede-panel/locale/messages.pot | 185 +++++++ ede-panel/locale/ru.po | 248 +++++++++ ede-panel/locale/sk.po | 259 +++++++++ ede-panel/locale/sr.po | 257 +++++++++ ede-panel/logoutdialog.cpp | 268 +++++++++ ede-panel/logoutdialog.fld | 76 +++ ede-panel/logoutdialog.h | 31 ++ ede-panel/mainmenu.cpp | 465 ++++++++++++++++ ede-panel/mainmenu.h | 63 +++ ede-panel/mainmenu_scan.cpp | 214 +++++++ ede-panel/menu.h | 57 ++ ede-panel/panelbutton.cpp | 163 ++++++ ede-panel/panelbutton.h | 50 ++ ede-panel/taskbutton.cpp | 621 +++++++++++++++++++++ ede-panel/taskbutton.h | 59 ++ ede-panel/workpanel.cpp | 888 ++++++++++++++++++++++++++++++ ede-panel/workpanel.h | 81 +++ 61 files changed, 11247 insertions(+) create mode 100644 ede-panel/Makefile create mode 100644 ede-panel/aboutdialog.cpp create mode 100644 ede-panel/aboutdialog.fld create mode 100644 ede-panel/aboutdialog.h create mode 100644 ede-panel/batterymonitor.cpp create mode 100644 ede-panel/batterymonitor.h create mode 100644 ede-panel/cpumonitor.cpp create mode 100644 ede-panel/cpumonitor.h create mode 100644 ede-panel/dock.cpp create mode 100644 ede-panel/dock.h create mode 100644 ede-panel/icons/about.xpm create mode 100644 ede-panel/icons/battery.xpm create mode 100644 ede-panel/icons/clean.xpm create mode 100644 ede-panel/icons/desktop.xpm create mode 100644 ede-panel/icons/ede-small.xpm create mode 100644 ede-panel/icons/ede.xpm create mode 100644 ede-panel/icons/ede_small.xpm create mode 100644 ede-panel/icons/favourites.xpm create mode 100644 ede-panel/icons/file.xpm create mode 100644 ede-panel/icons/find.xpm create mode 100644 ede-panel/icons/help.xpm create mode 100644 ede-panel/icons/keyboard.xpm create mode 100644 ede-panel/icons/lock.xpm create mode 100644 ede-panel/icons/logout.xpm create mode 100644 ede-panel/icons/mini_penguin.xpm create mode 100644 ede-panel/icons/panel.xpm create mode 100644 ede-panel/icons/penguin.xpm create mode 100644 ede-panel/icons/poweron.xpm create mode 100644 ede-panel/icons/programs.xpm create mode 100644 ede-panel/icons/programs_user.xpm create mode 100644 ede-panel/icons/run.xpm create mode 100644 ede-panel/icons/showdesktop.xpm create mode 100644 ede-panel/icons/shutdown.xpm create mode 100644 ede-panel/icons/sound.xpm create mode 100644 ede-panel/icons/sound_penguin.xpm create mode 100644 ede-panel/icons/tux.xpm create mode 100644 ede-panel/item.cpp create mode 100644 ede-panel/item.h create mode 100644 ede-panel/keyboardchooser.cpp create mode 100644 ede-panel/keyboardchooser.h create mode 100644 ede-panel/locale/de.po create mode 100644 ede-panel/locale/fr.po create mode 100644 ede-panel/locale/hu.po create mode 100644 ede-panel/locale/id.po create mode 100644 ede-panel/locale/messages.pot create mode 100644 ede-panel/locale/ru.po create mode 100644 ede-panel/locale/sk.po create mode 100644 ede-panel/locale/sr.po create mode 100644 ede-panel/logoutdialog.cpp create mode 100644 ede-panel/logoutdialog.fld create mode 100644 ede-panel/logoutdialog.h create mode 100644 ede-panel/mainmenu.cpp create mode 100644 ede-panel/mainmenu.h create mode 100644 ede-panel/mainmenu_scan.cpp create mode 100644 ede-panel/menu.h create mode 100644 ede-panel/panelbutton.cpp create mode 100644 ede-panel/panelbutton.h create mode 100644 ede-panel/taskbutton.cpp create mode 100644 ede-panel/taskbutton.h create mode 100644 ede-panel/workpanel.cpp create mode 100644 ede-panel/workpanel.h diff --git a/ede-panel/Makefile b/ede-panel/Makefile new file mode 100644 index 0000000..2fe1463 --- /dev/null +++ b/ede-panel/Makefile @@ -0,0 +1,45 @@ +# +# $Id$ +# +# 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 = aboutdialog.cpp\ + logoutdialog.cpp\ + panelbutton.cpp\ + keyboardchooser.cpp\ + taskbutton.cpp\ + workpanel.cpp\ + item.cpp\ + cpumonitor.cpp\ + batterymonitor.cpp\ + dock.cpp\ + mainmenu.cpp\ + mainmenu_scan.cpp + +TARGET = eworkpanel + +POFILES = locale/ru.po\ + locale/sr.po\ + locale/sk.po\ + locale/hu.po\ + locale/de.po\ + locale/fr.po + +include ../makeinclude + +install: + $(INSTALL_PROGRAM) $(TARGET) $(bindir) + $(INSTALL_LOCALE) + +uninstall: + $(RM) $(bindir)/$(TARGET) + +clean: + $(RM) $(TARGET) + $(RM) *.o + diff --git a/ede-panel/aboutdialog.cpp b/ede-panel/aboutdialog.cpp new file mode 100644 index 0000000..a9ea18f --- /dev/null +++ b/ede-panel/aboutdialog.cpp @@ -0,0 +1,108 @@ +/* + * $Id$ + * + * About dialog + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2000-2007 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 "aboutdialog.h" +#include "icons/ede.xpm" + + +Fl_Image ede_logo_pix((const char**)ede_xpm); + +const char* licence = +_("This program is based in part on the work of\n\ +FLTK project (www.fltk.org).\n\n\ +This program is free software, you can redistribute\n\ +it and/or modify it under the terms of GNU General\n\ +Public License as published by the Free Software\n\ +Foundation, either version 2 of the License, or\n\ +(at your option) any later version.\n\n\ +This program is distributed in the hope that it will\n\ +be useful, but WITHOUT ANY WARRANTY;\n\ +without even the implied\n\ +warranty of MERCHANTABILITY or FITNESS\n\ +FOR A PARTICULAR PURPOSE.\n\n\ +See the GNU General Public License for more details.\n\ +You should have received a copy of the GNU General\n\ +Public Licence along with this program; if not, write\n\ +to the Free Software Foundation, Inc., 675 Mass Ave,\n\ +Cambridge, MA 02139, USA"); + +void close_cb(Fl_Widget*, void* w) +{ + Fl_Window* win = (Fl_Window*)w; + win->hide(); +} + +void DetailsDialog(void) +{ + Fl_Window* win = new Fl_Window(395, 294, _("Details")); + win->shortcut(0xff1b); + win->begin(); + Fl_Button* close = new Fl_Button(310, 265, 80, 25, _("&Close")); + close->callback(close_cb, win); + Fl_Text_Display* txt = new Fl_Text_Display(5, 5, 385, 255); + txt->box(FL_DOWN_BOX); + Fl_Text_Buffer* buff = new Fl_Text_Buffer(); + txt->buffer(buff); + txt->insert(licence); + win->end(); + win->set_modal(); + win->show(); +} + +void details_cb(Fl_Widget*, void*) +{ + DetailsDialog(); +} + +void AboutDialog(Fl_Widget*, void*) +{ + Fl_Window* win = new Fl_Window(370, 214, _("About Equinox Desktop Environment")); + win->shortcut(0xff1b); + win->begin(); + Fl_Box* imgbox = new Fl_Box(10, 15, 55, 55); + imgbox->image(ede_logo_pix); + + Fl_Box* title = new Fl_Box(75, 15, 285, 35, "Equinox Desktop Environment"); + title->label_font(fl_fonts+1); + title->label_size(14); + title->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + + Fl_Box* vers = new Fl_Box(75, 50, 285, 20, _("version "PACKAGE_VERSION)); + vers->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + Fl_Box* copyright = new Fl_Box(75, 85, 285, 20, "Copyright (c) EDE Authors 2000-2007"); + copyright->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + + Fl_Box* lic = new Fl_Box(75, 110, 285, 50, _("This program is licenced under terms of \ +the GNU General Public Licence version 2 or newer.\nSee Details for more.")); + lic->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP); + + Fl_Button* details = new Fl_Button(200, 185, 80, 25, _("&Details")); + details->callback(details_cb); + + Fl_Button* close = new Fl_Button(285, 185, 80, 25, _("&Close")); + close->callback(close_cb, win); + + + win->end(); + win->set_modal(); + win->show(); +} diff --git a/ede-panel/aboutdialog.fld b/ede-panel/aboutdialog.fld new file mode 100644 index 0000000..2acacfd --- /dev/null +++ b/ede-panel/aboutdialog.fld @@ -0,0 +1,57 @@ +# 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 {} {} { + Fl_Window {} {open + xywh {396 268 370 214} resizable visible + } { + Fl_Box {} { + xywh {10 15 55 55} image {icons/ede.xpm} + } + Fl_Box {} { + label {Equinox Desktop Environment} + xywh {75 15 285 35} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE label_font 1 label_size 14 + } + Fl_Box {} { + label {version 1.1} + xywh {75 50 285 20} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE + } + Fl_Button {} { + label {&Close} + xywh {285 185 80 25} + } + Fl_Button {} { + label {&Details...} + xywh {200 185 80 25} + } + Fl_Box {} { + label {Copyright (c) EDE Authors 2000-2007} + xywh {75 85 285 20} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE + } + Fl_Box {} { + label {This program is licenced under terms of the GNU General Public Licence version 2 or newer. +See Details for more.} + xywh {75 110 285 50} align FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_WRAP + } + } +} + +Function {details()} {open +} { + Fl_Window {} { + label Details open + xywh {384 319 395 294} resizable visible + } { + Fl_Button {} { + label {&Close} + xywh {310 265 80 25} + } + Fl_Text_Display {} {selected + xywh {5 5 385 255} box DOWN_BOX + } + } +} diff --git a/ede-panel/aboutdialog.h b/ede-panel/aboutdialog.h new file mode 100644 index 0000000..25ca31a --- /dev/null +++ b/ede-panel/aboutdialog.h @@ -0,0 +1,19 @@ +/* + * $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 _ABOUTDIALOG_H_ +#define _ABOUTDIALOG_H_ + +void AboutDialog(Fl_Widget*, void*); + +#endif diff --git a/ede-panel/batterymonitor.cpp b/ede-panel/batterymonitor.cpp new file mode 100644 index 0000000..5aacbf3 --- /dev/null +++ b/ede-panel/batterymonitor.cpp @@ -0,0 +1,419 @@ +// Battery monitor for EDE / eworkpanel +// +// Copyright (c) 2005. EDE Authors +// +// Based in part on xbattbar +// Copyright (c) 1998-2001 Suguru Yamaguchi +// http://iplab.aist-nara.ac.jp/member/suguru/xbattbar.html +// +// This program is licenced under terms of the +// GNU General Public Licence version 2 or newer. +// See COPYING for details. + +#include "batterymonitor.h" + +#include "icons/poweron.xpm" +#include "icons/battery.xpm" + +#define UPDATE_INTERVAL .5f + +void bat_timeout_cb(void *d) { + ((BatteryMonitor*)d)->update_status(); + Fl::repeat_timeout(UPDATE_INTERVAL, bat_timeout_cb, d); +} + +BatteryMonitor::BatteryMonitor(Dock*dock) +: Fl_Widget(0,0,16,0) +{ + box(FL_FLAT_BOX); + //box(FL_BORDER_BOX); + + // edit this to show/hide the icon when power is plugged + m_show_line_on = true; + + // initial values + m_line_on = true; + m_undefined = false; + m_bat_percentage = m_bat_time = 0; + m_blink = false; + + m_dock = dock; + + m_colors[2] = FL_BLUE; + m_colors[1] = fl_darker(FL_YELLOW); + m_colors[0] = FL_RED; + + this->color(this->button_color()); + Fl::add_timeout(UPDATE_INTERVAL, bat_timeout_cb, this); +} + +BatteryMonitor::~BatteryMonitor() { +// clear(); +} + +void BatteryMonitor::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 BatteryMonitor::draw() +{ + if (m_undefined) { + // We don't draw anything for undefined state + m_dock->remove_from_tray(this); + return; + } + + if (m_line_on) { + if (m_show_line_on) { + this->image(Fl_Image::read_xpm(0, (const char**)poweron_xpm)); + Fl_Widget::draw(); + } + return; + } + + this->image(Fl_Image::read_xpm(0, (const char**)battery_xpm)); + int pixels = (int) m_bat_percentage / 10; + if (pixels > 9) pixels=9; // if it's really 100% + + // Blinking battery + if (pixels < 1) { + if (m_blink) { + this->image(0); + m_blink = false; + } else { + m_blink = true; + } + Fl_Widget::draw(); + return; + } + Fl_Widget::draw(); + + int color = (int)m_bat_percentage / 34; + fl_color(m_colors[color]); + + // Some magic constants follow - this is based on design of battery.xpm + int ddx = box()->dx(); + int ddy = box()->dy(); + fl_line (ddx+7, ddy+15-pixels, ddx+7, ddy+14); + fl_line (ddx+8, ddy+15-pixels, ddx+8, ddy+14); + fl_line (ddx+9, ddy+15-pixels, ddx+9, ddy+14); + +} + +void BatteryMonitor::layout() +{ + update_status(); + Fl_Widget::layout(); +} + +void BatteryMonitor::update_status() +{ + battery_check(); + + // Update tooltip + char load[255]; + if (m_undefined) + snprintf(load, sizeof(load)-1, _("Power management not detected")); + else if (m_line_on) + snprintf(load, sizeof(load)-1, _("The power is plugged in")); + else + snprintf(load, sizeof(load)-1, + _("Battery is %d%% full (%d minutes remaining)"), m_bat_percentage, m_bat_time); + tooltip(load); +} + +// ------------------------------- +// xbattbar.c,v 1.16.2.4 2001/02/02 05:25:29 suguru +// +// The following code is copied from xbattbar, with small modifications +// These modifications include: +// - p is now bool instead of int +// - we try to monitor remaining time, but it only works on linux (for now) +// - in case of error, m_undefined is set and function isn't executed +// anymore, until eworkpanel restart +// - signal() is removed - only redraw() is necessary +// - elapsed_time is removed +// - in struct apm_info (linux), had to replace const char with char +// ------------------------------- + +#ifdef __bsdi__ + +#include +#include + +int first = 1; +void battery_check(void) +{ + int fd; + struct apmreq ar ; + + + // No need to display error too many times + if (m_undefined) return; + + ar.func = APM_GET_POWER_STATUS ; + ar.dev = APM_DEV_ALL ; + + if ((fd = open(_PATH_DEVAPM, O_RDONLY)) < 0) { + perror(_PATH_DEVAPM) ; + m_undefined = true; + return; + } + if (ioctl(fd, PIOCAPMREQ, &ar) < 0) { + fprintf(stderr, "xbattbar: PIOCAPMREQ: APM_GET_POWER_STATUS error 0x%x\n", ar.err); + } + close (fd); + +/* if (first || ac_line != ((ar.bret >> 8) & 0xff) + || battery_level != (ar.cret&0xff)) { + first = 0; + ac_line = (ar.bret >> 8) & 0xff; + battery_level = ar.cret&0xff; + redraw(); + }*/ + + // Feeble attempt at fixing bsdi + if (first || battery_level != (ar.cret&0xff)) { + first = 0; +// ac_line = (ar.bret >> 8) & 0xff; + battery_level = ar.cret&0xff; + m_line_on = false; + m_bat_time = 0; + redraw(); + } + +} + +#endif /* __bsdi__ */ + +#ifdef __FreeBSD__ + +#include + +#define APMDEV21 "/dev/apm0" +#define APMDEV22 "/dev/apm" + +#define APM_STAT_UNKNOWN 255 + +#define APM_STAT_LINE_OFF 0 +#define APM_STAT_LINE_ON 1 + +#define APM_STAT_BATT_HIGH 0 +#define APM_STAT_BATT_LOW 1 +#define APM_STAT_BATT_CRITICAL 2 +#define APM_STAT_BATT_CHARGING 3 + +int first = 1; +void battery_check(void) +{ + int fd, r; + bool p; + struct apm_info info; + + // No need to display error too many times + if (m_undefined) return; + + if ((fd = open(APMDEV21, O_RDWR)) == -1 && + (fd = open(APMDEV22, O_RDWR)) == -1) { + fprintf(stderr, "xbattbar: cannot open apm device\n"); + m_undefined = true; + return; + } + if (ioctl(fd, APMIO_GETINFO, &info) == -1) { + fprintf(stderr, "xbattbar: ioctl APMIO_GETINFO failed\n"); + m_undefined = true; + return; + } + close (fd); + + /* get current status */ + if (info.ai_batt_life == APM_STAT_UNKNOWN) { + switch (info.ai_batt_stat) { + case APM_STAT_BATT_HIGH: + r = 100; + break; + case APM_STAT_BATT_LOW: + r = 40; + break; + case APM_STAT_BATT_CRITICAL: + r = 10; + break; + default: /* expected to be APM_STAT_UNKNOWN */ + r = 100; + } + } else if (info.ai_batt_life > 100) { + /* some APM BIOSes return values slightly > 100 */ + r = 100; + } else { + r = info.ai_batt_life; + } + + /* get AC-line status */ + if (info.ai_acline == APM_STAT_LINE_ON) { + p = true; + } else { + p = false; + } + + if (first || m_line_on != p || m_bat_percentage != r) { + first = 0; + m_line_on = p; + m_bat_percentage = r; + m_bat_time = 0; //FIXME: battery time on FreeBSD + redraw(); + } +} + +#endif /* __FreeBSD__ */ + +#ifdef __NetBSD__ + +#include + +#define _PATH_APM_SOCKET "/var/run/apmdev" +#define _PATH_APM_CTLDEV "/dev/apmctl" +#define _PATH_APM_NORMAL "/dev/apm" + +int first = 1; +void battery_check(void) +{ + int fd, r; + bool p; + struct apm_power_info info; + + // No need to display error too many times + if (m_undefined) return; + + if ((fd = open(_PATH_APM_NORMAL, O_RDONLY)) == -1) { + fprintf(stderr, "xbattbar: cannot open apm device\n"); + m_undefined = true; + return; + } + + if (ioctl(fd, APM_IOC_GETPOWER, &info) != 0) { + fprintf(stderr, "xbattbar: ioctl APM_IOC_GETPOWER failed\n"); + m_undefined = true; + return; + } + + close(fd); + + /* get current remoain */ + if (info.battery_life > 100) { + /* some APM BIOSes return values slightly > 100 */ + r = 100; + } else { + r = info.battery_life; + } + + /* get AC-line status */ + if (info.ac_state == APM_AC_ON) { + p = true; + } else { + p = false; + } + + if (first || m_line_on != p || m_bat_percentage != r) { + first = 0; + m_line_on = p; + m_bat_percentage = r; + m_bat_time = 0; //FIXME: battery time on netbsd + redraw(); + } +} + +#endif /* __NetBSD__ */ + + +#ifdef linux + +#include +#include + +#define APM_PROC "/proc/apm" + +#define APM_STAT_LINE_OFF 0 +#define APM_STAT_LINE_ON 1 + +typedef struct apm_info { + char driver_version[10]; + int apm_version_major; + int apm_version_minor; + int apm_flags; + int ac_line_status; + int battery_status; + int battery_flags; + int battery_percentage; + int battery_time; + int using_minutes; +} apm_info; + + +int first = 1; +void BatteryMonitor::battery_check(void) +{ + int r; + bool p; + FILE *pt; + struct apm_info i; + char buf[100]; + + // No need to display error too many times + if (m_undefined) return; + + /* get current status */ + errno = 0; + if ( (pt = fopen( APM_PROC, "r" )) == NULL) { + fprintf(stderr, "xbattbar: Can't read proc info: %s\n", strerror(errno)); + m_undefined = true; + return; + } + + fgets( buf, sizeof( buf ) - 1, pt ); + buf[ sizeof( buf ) - 1 ] = '\0'; + sscanf( buf, "%s %d.%d %x %x %x %x %d%% %d %d\n", + &i.driver_version, + &i.apm_version_major, + &i.apm_version_minor, + &i.apm_flags, + &i.ac_line_status, + &i.battery_status, + &i.battery_flags, + &i.battery_percentage, + &i.battery_time, + &i.using_minutes ); + + fclose (pt); + + /* some APM BIOSes return values slightly > 100 */ + if ( (r = i.battery_percentage) > 100 ){ + r = 100; + } + + /* get AC-line status */ + if ( i.ac_line_status == APM_STAT_LINE_ON) { + p = true; + } else { + p = false; + } + + if (first || m_line_on != p || m_bat_percentage != r) { + first = 0; + m_line_on = p; + m_bat_percentage = r; + m_bat_time = i.battery_time; + redraw(); + } +} + +#endif /* linux */ + diff --git a/ede-panel/batterymonitor.h b/ede-panel/batterymonitor.h new file mode 100644 index 0000000..3e49ecb --- /dev/null +++ b/ede-panel/batterymonitor.h @@ -0,0 +1,38 @@ +#ifndef _batterymonitor_h_ +#define _batterymonitor_h_ + +#include + +#include +#include +#include +#include +#include +#include + +#include "dock.h" + +class BatteryMonitor : public Fl_Widget { +public: + BatteryMonitor(Dock*dock); + virtual ~BatteryMonitor(); + + void clear(); + + void update_status(); + void battery_check(); + + virtual void draw(); + virtual void layout(); + virtual void preferred_size(int &w, int &h) { w=this->w(); } + +private: + int m_bat_percentage, m_bat_time; + bool m_line_on, m_undefined; + bool m_show_line_on; + bool m_blink; + Dock*m_dock; + Fl_Color m_colors[4]; +}; + +#endif diff --git a/ede-panel/cpumonitor.cpp b/ede-panel/cpumonitor.cpp new file mode 100644 index 0000000..fa4523d --- /dev/null +++ b/ede-panel/cpumonitor.cpp @@ -0,0 +1,508 @@ +/* + * 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 + +#ifdef __FreeBSD__ +#include +#include +#if __FreeBSD_version < 500101 +#include +#else +#include +#endif +#include +#endif + + + +#ifdef __FreeBSD__ + +/* The part ripped from top... */ +/* + * Top users/processes display for Unix + * Version 3 + * + * This program may be freely redistributed, + * but this entire comment MUST remain intact. + * + * Copyright (c) 1984, 1989, William LeFebvre, Rice University + * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University + */ + +/* + * percentages(cnt, out, new, old, diffs) - calculate percentage change + * between array "old" and "new", putting the percentages i "out". + * "cnt" is size of each array and "diffs" is used for scratch space. + * The array "old" is updated on each call. + * The routine assumes modulo arithmetic. This function is especially + * useful on BSD mchines for calculating cpu state percentages. + */ + +static long cp_time[CPUSTATES]; +static long cp_old[CPUSTATES]; +static long cp_diff[CPUSTATES]; +static int cpu_states[CPUSTATES]; + +long percentages(int cnt, int *out, long *my_new, long *old, long *diffs) +{ + register int i; + register long change; + register long total_change; + register long *dp; + long half_total; + + /* initialization */ + total_change = 0; + dp = diffs; + + /* calculate changes for each state and the overall change */ + for (i = 0; i < cnt; i++) + { + if ((change = *my_new - *old) < 0) + { + /* this only happens when the counter wraps */ + change = (int) + ((unsigned long)*my_new-(unsigned long)*old); + } + total_change += (*dp++ = change); + *old++ = *my_new++; + } + + /* avoid divide by zero potential */ + if (total_change == 0) + { + total_change = 1; + } + + /* calculate percentages based on overall change, rounding up */ + half_total = total_change / 2l; + + /* Do not divide by 0. Causes Floating point exception */ + if(total_change) { + for (i = 0; i < cnt; i++) + { + *out++ = (int)((*diffs++ * 1000 + half_total) / total_change); + } + } + + /* return the total in case the caller wants to use it */ + return(total_change); +} + +#endif /* freebsd */ + + + +#define UPDATE_INTERVAL .5f + +void cpu_timeout_cb(void *d) { + ((CPUMonitor*)d)->update_status(); + Fl::repeat_timeout(UPDATE_INTERVAL, cpu_timeout_cb, d); +} + +CPUMonitor::CPUMonitor() +: Fl_Widget(0,0,30,0) +{ + box(FL_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; + + Fl::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) { + fl_push_clip(0,0,w(),h()); + parent()->draw_group_box(); + draw_frame(); + fl_pop_clip(); + return; + } + + if(colors[IWM_IDLE] == FL_NO_COLOR) { + fl_push_clip(0,0,w(),h()); + parent()->draw_group_box(); + fl_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; + fl_color(colors[IWM_SYS]); + fl_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; + fl_color(colors[IWM_NICE]); + fl_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; + fl_color(colors[IWM_USER]); + fl_line(i, y, i, n); + y = n - 1; + } + } + + if (idle) { + if(colors[IWM_IDLE] != FL_NO_COLOR) + { + fl_color(colors[IWM_IDLE]); + fl_line(i, box()->dy(), i, y); + } + } + } + + int cpu_percent = cpu[samples()-1][0]*2; + if(m_draw_label && cpu_percent<=100) { + Fl_String l(cpu_percent); + 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; + } + + Fl_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 */ + + +#ifdef __FreeBSD__ +// char *p, buf[128]; +// long cur[IWM_STATES]; +// int len, fd = open("/proc/stat", O_RDONLY); + size_t len = sizeof(cp_time); + + 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 (sysctlbyname("kern.cp_time", &cp_time, &len, NULL, 0) == -1) + return; /* FIXME : need err handler? */ + + percentages(CPUSTATES, cpu_states, cp_time, cp_old, cp_diff); + + // Translate FreeBSD stuff into ours (probably the same thing anyway) + cpu[samples()-1][IWM_USER] = cp_diff[CP_USER]; + cpu[samples()-1][IWM_NICE] = cp_diff[CP_NICE]; + cpu[samples()-1][IWM_SYS] = cp_diff[CP_SYS]; + cpu[samples()-1][IWM_IDLE] = cp_diff[CP_IDLE]; + +#if 0 + fprintf(stderr, "cpu: %d %d %d %d\n", + cpu[samples()-1][IWM_USER], cpu[samples()-1][IWM_NICE], + cpu[samples()-1][IWM_SYS], cpu[samples()-1][IWM_IDLE]); +#endif + +#endif /* freebsd */ +} + diff --git a/ede-panel/cpumonitor.h b/ede-panel/cpumonitor.h new file mode 100644 index 0000000..a7bff90 --- /dev/null +++ b/ede-panel/cpumonitor.h @@ -0,0 +1,50 @@ +#ifndef _CPUMONITOR_H_ +#define _CPUMONITOR_H_ + +#include + +#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 + +class CPUMonitor : public Fl_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]; + Fl_Color colors[IWM_STATES]; +}; + +#endif diff --git a/ede-panel/dock.cpp b/ede-panel/dock.cpp new file mode 100644 index 0000000..3101b12 --- /dev/null +++ b/ede-panel/dock.cpp @@ -0,0 +1,326 @@ +#include "dock.h" +#include +#include +#include +#include +#include +//#include +#include + +#include +#include //For CARD32 + +#define SYSTEM_TRAY_REQUEST_DOCK 0 +#define SYSTEM_TRAY_BEGIN_MESSAGE 1 +#define SYSTEM_TRAY_CANCEL_MESSAGE 2 + +Dock *currentDock; //Can't pass a pointer to handle_x11_event; must be a better way though +int panelheight=0; + +struct straydata { + Window id; + Fl_Window *win; + straydata *next; +} *traydata; + + +Dock::Dock() + : Fl_Group(0,0,0,0) +{ + register_notification_area(); +// box(FL_THIN_DOWN_BOX); + color(FL_INVALID_COLOR); //Draw with parent color + + layout_align(FL_ALIGN_RIGHT); + layout_spacing(1); + + traydata=0; + end(); + winstate=0; +} + +Dock::~Dock() { + Atom selection_atom; + char selection_atom_name[20]; + + sprintf(selection_atom_name, "_NET_SYSTEM_TRAY_S%d", fl_screen); + selection_atom = XInternAtom (fl_display, selection_atom_name, false); + XSetSelectionOwner(fl_display, selection_atom, None, CurrentTime); + +} + + +void Dock::register_notification_area() +{ + Atom selection_atom; + char selection_atom_name[20]; + + sprintf(selection_atom_name, "_NET_SYSTEM_TRAY_S%d", fl_screen); + selection_atom = XInternAtom (fl_display, selection_atom_name, false); + if (XGetSelectionOwner(fl_display, selection_atom)) { + printf("The notification area service is being provided by a different program. I'll just handle EDE components. \n"); + return; + } + + //Register + XSetSelectionOwner(fl_display, selection_atom, fl_message_window, CurrentTime); + + //Check registration was successful + if (XGetSelectionOwner(fl_display, selection_atom) != fl_message_window) { + printf("Could not register as notification area service.\n"); + return; + } + + XClientMessageEvent xev; + + xev.type = ClientMessage; + xev.message_type = XInternAtom (fl_display, "MANAGER", false); + + xev.format = 32; + xev.data.l[0] = CurrentTime; + xev.data.l[1] = selection_atom; + xev.data.l[2] = fl_message_window; + xev.data.l[3] = 0; + xev.data.l[4] = 0; + + XSendEvent (fl_display, RootWindow(fl_display, fl_screen), false, StructureNotifyMask, (XEvent *)&xev); + + opcode = XInternAtom(fl_display, "_NET_SYSTEM_TRAY_OPCODE", false); + message_data = XInternAtom(fl_display,"_NET_SYSTEM_TRAY_MESSAGE_DATA", false); + + currentDock = this; + Fl::add_handler(handle_x11_event); +} + +int Dock::handle_x11_event(int e) +{ + if (fl_xevent.type == ClientMessage && fl_xevent.xclient.message_type == currentDock->opcode ) { + if (fl_xevent.xclient.data.l[1] == SYSTEM_TRAY_REQUEST_DOCK) { + currentDock->embed_window(fl_xevent.xclient.data.l[2]); + return true; + } + + if (fl_xevent.xclient.data.l[1] == SYSTEM_TRAY_BEGIN_MESSAGE) { + return true; + } + + if (fl_xevent.xclient.data.l[1] == SYSTEM_TRAY_CANCEL_MESSAGE) { + return true; + } + } else if (fl_xevent.type == DestroyNotify) { + XDestroyWindowEvent xev = fl_xevent.xdestroywindow; + + // Loop trough linked list to find destroyed window + struct straydata *p=traydata; + struct straydata *p1=0; + while (p!=0) { + if (p->id == xev.window) { + currentDock->remove_from_tray(p->win); + delete p->win; + if (p1 == 0) + traydata = p->next; + else + p1->next = p->next; + delete p; + break; + } + p1=p; + p=p->next; + } + } + return false; +} + + +// Helper for Dock::embed_window() +// Kopied from kdelibs/kdeui/qxembed.cpp +static int get_parent(Window winid, Window *out_parent) +{ + Window root, *children=0; + unsigned int nchildren; + int st = XQueryTree(fl_display, winid, &root, out_parent, &children, &nchildren); + if (st && children) + XFree(children); + return st; +} + + +void Dock::embed_window(Window id) +{ + if (id==0) return; + + // Store window id in a linked list structure + struct straydata *p=traydata; + struct straydata *p1; + while (p!=0) { + // Sometimes the app will reuse the same id on next start? +// if (p->id == id) +// return; + p1=p; + p=p->next; + } + p = new straydata; + if (traydata == 0) { traydata=p; } else { p1->next = p; } + p->id = id; + p->next = 0; + + Fl_Window *win = new Fl_Window(24, 24); + win->end(); + this->add_to_tray(win); + win->show(); + p->win = win; + +// printf("id: %ld -> %ld\n", id, fl_xid(win)); + XReparentWindow(fl_display, id, fl_xid(win), 0, 0); + + // Hack to get KDE icons working... + Window parent = 0; + get_parent(id, &parent); +// printf(" ++ parent: %ld\n", parent); + XMapWindow(fl_display, id); + + //Need to know when child dies + XSelectInput(fl_display, fl_xid(win), SubstructureNotifyMask); + + + +/* Some ideas from KDE code... consider using (sometime) + + ---------------- + + Does this have any effect? + + static Atom hack_atom = XInternAtom( fl_display, "_KDE_SYSTEM_TRAY_EMBEDDING", False ); + XChangeProperty( fl_display, id, hack_atom, hack_atom, 32, PropModeReplace, NULL, 0 ); + ..... + XDeleteProperty( fl_display, id, hack_atom ); + + + ---------------- + + Force window to withdraw (?) + +// Helper for Dock::embed_window() +// Kopied from kdelibs/kdeui/qxembed.cpp +static bool wstate_withdrawn( Window winid ) +{ + static Atom _XA_WM_STATE = 0; + if(!_XA_WM_STATE) _XA_WM_STATE = XInternAtom(fl_display, "WM_STATE", False); + + Atom type; + int format; + unsigned long length, after; + unsigned char *data; + int r = XGetWindowProperty( fl_display, winid, _XA_WM_STATE, 0, 2, + false, AnyPropertyType, &type, &format, + &length, &after, &data ); + bool withdrawn = true; + // L1610: Non managed windows have no WM_STATE property. + // Returning true ensures that the loop L1711 stops. + if ( r == Success && data && format == 32 ) { + uint32 *wstate = (uint32*)data; + withdrawn = (*wstate == WithdrawnState ); + XFree( (char *)data ); + } + return withdrawn; +} + + + if ( !wstate_withdrawn(id) ) { + XWithdrawWindow(fl_display, id, fl_screen); + XFlush(fl_display); + // L1711: See L1610 + while (!wstate_withdrawn(id)) + sleep(1); + } + + ---------------- + + XEMBED support: + +#define XEMBED_EMBEDDED_NOTIFY 0 +#define XEMBED_WINDOW_ACTIVATE 1 +#define XEMBED_WINDOW_DEACTIVATE 2 +#define XEMBED_REQUEST_FOCUS 3 +#define XEMBED_FOCUS_IN 4 +#define XEMBED_FOCUS_OUT 5 +#define XEMBED_FOCUS_NEXT 6 +#define XEMBED_FOCUS_PREV 7 +#define XEMBED_MODALITY_ON 10 + +// L0500: Helper to send XEmbed messages. +static void sendXEmbedMessage( Window window, long message, long detail = 0, + long data1 = 0, long data2 = 0) +{ + static Atom xembed=0; + if (!xembed) xembed = XInternAtom( fl_display, "_XEMBED", False ); + if (!window) return; + XEvent ev; + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = window; + ev.xclient.message_type = xembed; + ev.xclient.format = 32; + ev.xclient.data.l[0] = CurrentTime; + ev.xclient.data.l[1] = message; + ev.xclient.data.l[2] = detail; + ev.xclient.data.l[3] = data1; + ev.xclient.data.l[4] = data2; + XSendEvent(fl_display, window, false, NoEventMask, &ev); + XSync(fl_display, false); +} + + + static Atom _XA_XEMBED_INFO = 0; + if(!_XA_XEMBED_INFO) _XA_XEMBED_INFO = XInternAtom(fl_display, "_XEMBED_INFO", False); + int status=1; + CARD32* prop = (CARD32*)getProperty(id, _XA_XEMBED_INFO, XA_CARDINAL, 0, &status); + if (status == 0) { + // Not XEMBED + ....... + } else { + sendXEmbedMessage( id, XEMBED_EMBEDDED_NOTIFY, 0, fl_xid(win) ); + } +*/ +} + + + +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(); + Fl::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(); + Fl::redraw(); +} + +int Dock::handle(int event) { + struct straydata *p=traydata; + while (p!=0) { + Fl_Window *w = p->win; + if (Fl::event_x()>=w->x() && Fl::event_x()<=(w->x() + w->w()) + && Fl::event_y()>=w->y() && Fl::event_y()<=(w->y() + w->h())) { + int ret = w->handle(event); + w->throw_focus(); + return ret; + } + p=p->next; + } + return Fl_Group::handle(event); +} diff --git a/ede-panel/dock.h b/ede-panel/dock.h new file mode 100644 index 0000000..774c70e --- /dev/null +++ b/ede-panel/dock.h @@ -0,0 +1,43 @@ +#ifndef _DOCK_H_ +#define _DOCK_H_ + +#include +#include +#include +//#include + +/*using namespace std; + + +struct trayitem +{ + Window child; + Window container; +}; + +typedef vector Tray;*/ + +class Dock : public Fl_Group +{ +public: + Dock(); + ~Dock(); + + void add_to_tray(Fl_Widget *w); + void remove_from_tray(Fl_Widget *w); + static int handle_x11_event(int e); + void embed_window(Window id); + void register_notification_area(); + + int handle(int event); + + Atom opcode; + Atom message_data; + Atom winstate; +// Tray tray; +private: +// int get_free_item(); + +}; + +#endif diff --git a/ede-panel/icons/about.xpm b/ede-panel/icons/about.xpm new file mode 100644 index 0000000..49d513a --- /dev/null +++ b/ede-panel/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/ede-panel/icons/battery.xpm b/ede-panel/icons/battery.xpm new file mode 100644 index 0000000..fd45735 --- /dev/null +++ b/ede-panel/icons/battery.xpm @@ -0,0 +1,22 @@ +/* XPM */ +static char * battery_xpm[] = { +"11 16 3 1", +" c None", +". c #000000", +"+ c #FFFFFF", +" ... ", +" ......... ", +" ......... ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ..+++++.. ", +" ......... ", +" ......... "}; diff --git a/ede-panel/icons/clean.xpm b/ede-panel/icons/clean.xpm new file mode 100644 index 0000000..db9832e --- /dev/null +++ b/ede-panel/icons/clean.xpm @@ -0,0 +1,19 @@ +/* XPM */ +static char * clean_xpm[] = { +"16 15 1 1", +" c None", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/ede-panel/icons/desktop.xpm b/ede-panel/icons/desktop.xpm new file mode 100644 index 0000000..acfa25d --- /dev/null +++ b/ede-panel/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/ede-panel/icons/ede-small.xpm b/ede-panel/icons/ede-small.xpm new file mode 100644 index 0000000..5053fc9 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/ede.xpm b/ede-panel/icons/ede.xpm new file mode 100644 index 0000000..b598ea5 --- /dev/null +++ b/ede-panel/icons/ede.xpm @@ -0,0 +1,402 @@ +/* XPM */ +static char * ede_xpm[] = { +"48 48 351 2", +" c None", +". c #979696", +"+ c #686665", +"@ c #878686", +"# c #4F4D4B", +"$ c #433F3E", +"% c #413F3C", +"& c #433F3D", +"* c #878685", +"= c #706E6D", +"- c #2E2B28", +"; c #211C19", +"> c #2B2724", +", c #6C6968", +"' c #696766", +") c #282522", +"! c #201B18", +"~ c #1F1A17", +"{ c #1E1916", +"] c #282421", +"^ c #292421", +"/ c #393532", +"( c #3F3A38", +"_ c #403B39", +": c #403C39", +"< c #3F3B38", +"[ c #3E3936", +"} c #312C2A", +"| c #231E1B", +"1 c #241F1C", +"2 c #474240", +"3 c #8B8987", +"4 c #A4A3A1", +"5 c #A7A5A4", +"6 c #A7A6A4", +"7 c #A6A5A3", +"8 c #9F9D9B", +"9 c #6A6764", +"0 c #2F2B28", +"a c #26211F", +"b c #5B5756", +"c c #C6C5C4", +"d c #EDEDEC", +"e c #F0F0F0", +"f c #F1F1F1", +"g c #E4E3E3", +"h c #908E8C", +"i c #373230", +"j c #26221F", +"k c #5F5B59", +"l c #D0CFCF", +"m c #F9F9F9", +"n c #FEFEFE", +"o c #FDFDFD", +"p c #979594", +"q c #383431", +"r c #5F5C5A", +"s c #D1D0D0", +"t c #FBFAFA", +"u c #FFFFFF", +"v c #FCFBFB", +"w c #F8F7F7", +"x c #EDECEC", +"y c #EBEBEB", +"z c #EBEBEA", +"A c #F2F2F2", +"B c #F8F8F8", +"C c #989694", +"D c #FBFBFB", +"E c #F1F1F0", +"F c #DEDEDD", +"G c #C5C4C3", +"H c #ABA9A7", +"I c #999695", +"J c #928F8E", +"K c #918F8D", +"L c #ACAAA9", +"M c #C8C7C6", +"N c #E0DFDF", +"O c #F3F3F3", +"P c #F5F5F5", +"Q c #D9D7D7", +"R c #AAA8A7", +"S c #7B7876", +"T c #575351", +"U c #423D3B", +"V c #36322F", +"W c #322E2B", +"X c #36312F", +"Y c #5A5754", +"Z c #7F7C7A", +"` c #B1AFAE", +" . c #DDDCDC", +".. c #F5F5F4", +"+. c #FDFDFC", +"@. c #989695", +"#. c #C9C8C8", +"$. c #888584", +"%. c #4F4B48", +"&. c #25201E", +"*. c #221D1A", +"=. c #332E2C", +"-. c #524E4C", +";. c #898685", +">. c #C3C1C1", +",. c #FCFCFC", +"'. c #F2F1F1", +"). c #999795", +"!. c #EEEEEE", +"~. c #C1C0BF", +"{. c #757371", +"]. c #3E3A38", +"^. c #25211E", +"/. c #3B3734", +"(. c #6C6967", +"_. c #B4B2B1", +":. c #EBEAEA", +"<. c #F2F2F1", +"[. c #C0BFBE", +"}. c #6F6C6A", +"|. c #342F2C", +"1. c #1F1916", +"2. c #322D2A", +"3. c #666361", +"4. c #BBB9B8", +"5. c #393432", +"6. c #CECDCC", +"7. c #767371", +"8. c #332E2B", +"9. c #7B7776", +"0. c #DEDDDC", +"a. c #FEFEFD", +"b. c #FBFBFA", +"c. c #E6E6E6", +"d. c #8D8A89", +"e. c #35312E", +"f. c #E7E7E6", +"g. c #221E1B", +"h. c #706D6B", +"i. c #D6D6D5", +"j. c #F3F2F2", +"k. c #DBDAD9", +"l. c #AAA9A8", +"m. c #5E5A58", +"n. c #2A2623", +"o. c #C7C6C5", +"p. c #2A2523", +"q. c #2B2623", +"r. c #44403D", +"s. c #AEADAC", +"t. c #F6F6F6", +"u. c #E2E1E1", +"v. c #BAB9B8", +"w. c #858281", +"x. c #514D4B", +"y. c #2E2927", +"z. c #F0EFEF", +"A. c #A09E9D", +"B. c #433F3C", +"C. c #26211E", +"D. c #3A3533", +"E. c #63605E", +"F. c #9A9896", +"G. c #CCCBCA", +"H. c #F9F9F8", +"I. c #EAEAEA", +"J. c #93908F", +"K. c #5D5957", +"L. c #373330", +"M. c #25201D", +"N. c #1F1A18", +"O. c #7A7876", +"P. c #332F2C", +"Q. c #565250", +"R. c #8E8C8A", +"S. c #E9E9E8", +"T. c #EFEFEF", +"U. c #D2D0D0", +"V. c #656260", +"W. c #27221F", +"X. c #D3D2D1", +"Y. c #625E5D", +"Z. c #282320", +"`. c #1F1A16", +" + c #302B29", +".+ c #504C4A", +"++ c #83807E", +"@+ c #B9B8B7", +"#+ c #E3E3E3", +"$+ c #F7F6F6", +"%+ c #D8D7D7", +"&+ c #A9A7A7", +"*+ c #726E6D", +"=+ c #292422", +"-+ c #FAFAFA", +";+ c #5A5654", +">+ c #2C2724", +",+ c #45413E", +"'+ c #777372", +")+ c #ADABAB", +"!+ c #D9D8D8", +"~+ c #F4F4F4", +"{+ c #B7B6B5", +"]+ c #7E7B7A", +"^+ c #4E4A48", +"/+ c #CDCCCB", +"(+ c #585452", +"_+ c #24201D", +":+ c #3D3936", +"<+ c #9C9A99", +"[+ c #EEEEED", +"}+ c #FAF9F9", +"|+ c #E7E7E7", +"1+ c #C4C2C2", +"2+ c #8F8D8B", +"3+ c #342F2D", +"4+ c #2A2522", +"5+ c #413D3B", +"6+ c #64615F", +"7+ c #595553", +"8+ c #2D2825", +"9+ c #CFCFCE", +"0+ c #5C5957", +"a+ c #E9E8E8", +"b+ c #D1D0CF", +"c+ c #9D9A99", +"d+ c #65615F", +"e+ c #605D5A", +"f+ c #969493", +"g+ c #C0BEBD", +"h+ c #898785", +"i+ c #6B6866", +"j+ c #878583", +"k+ c #C1BFBF", +"l+ c #E6E6E5", +"m+ c #F7F7F7", +"n+ c #D6D5D5", +"o+ c #A6A4A3", +"p+ c #3E3A37", +"q+ c #4D4946", +"r+ c #8F8C8B", +"s+ c #979593", +"t+ c #E7E6E6", +"u+ c #4A4644", +"v+ c #7A7775", +"w+ c #B0AEAD", +"x+ c #DCDCDC", +"y+ c #F4F3F3", +"z+ c #B2B0AF", +"A+ c #7B7877", +"B+ c #4B4745", +"C+ c #2D2826", +"D+ c #312C29", +"E+ c #827F7D", +"F+ c #D7D6D6", +"G+ c #ABA9A8", +"H+ c #4C4845", +"I+ c #A4A2A0", +"J+ c #EFEFEE", +"K+ c #E5E5E4", +"L+ c #888684", +"M+ c #55514F", +"N+ c #332F2D", +"O+ c #ECEBEB", +"P+ c #D0CFCE", +"Q+ c #7C7978", +"R+ c #92908E", +"S+ c #CAC9C8", +"T+ c #FAFAF9", +"U+ c #ECECEC", +"V+ c #625F5C", +"W+ c #383331", +"X+ c #3C3735", +"Y+ c #A19F9D", +"Z+ c #CACAC9", +"`+ c #C7C6C6", +" @ c #E6E5E5", +".@ c #D5D4D4", +"+@ c #A3A1A0", +"@@ c #272320", +"#@ c #494543", +"$@ c #B5B3B2", +"%@ c #DCDBDA", +"&@ c #AFAEAD", +"*@ c #46423F", +"=@ c #CFCECD", +"-@ c #E3E2E2", +";@ c #868381", +">@ c #534F4D", +",@ c #312D2A", +"'@ c #E5E4E4", +")@ c #DCDBDB", +"!@ c #5E5B59", +"~@ c #272220", +"{@ c #B7B5B4", +"]@ c #CBCAC9", +"^@ c #767271", +"/@ c #3E3937", +"(@ c #8E8B8A", +"_@ c #B3B0B0", +":@ c #2D2926", +"<@ c #35302E", +"[@ c #75716F", +"}@ c #F7F7F6", +"|@ c #E8E7E7", +"1@ c #5D5A57", +"2@ c #1E1A17", +"3@ c #BDBCBB", +"4@ c #EFEEEE", +"5@ c #ADACAB", +"6@ c #3C3835", +"7@ c #2C2725", +"8@ c #817F7D", +"9@ c #C4C3C2", +"0@ c #8C8A88", +"a@ c #3B3634", +"b@ c #433E3C", +"c@ c #696564", +"d@ c #A09D9C", +"e@ c #D7D6D5", +"f@ c #E4E4E4", +"g@ c #9B9898", +"h@ c #797675", +"i@ c #55524F", +"j@ c #635F5D", +"k@ c #807D7B", +"l@ c #CECECD", +"m@ c #F6F6F5", +"n@ c #DBDADA", +"o@ c #C3C2C1", +"p@ c #C2C1C0", +"q@ c #C4C3C3", +"r@ c #CDCCCC", +"s@ c #DFDFDE", +"t@ c #989594", +"u@ c #5E5A59", +"v@ c #CECDCD", +"w@ c #969492", +"x@ c #B5B4B3", +"y@ c #D8D8D7", +"z@ c #DBDBDA", +"A@ c #34302D", +"B@ c #615E5B", +"C@ c #726F6D", +"D@ c #716F6C", +"E@ c #6D6A67", +"F@ c #4B4845", +"G@ c #292521", +"H@ c #272421", +"I@ c #6E6C6B", +"J@ c #302C29", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ", +"@ # $ % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % & # * ", +"= - ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; > , ", +"' ) ! ~ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ~ ~ ] + ", +"+ ] ~ ~ ~ ~ ! ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ! ~ ~ ~ ] + ", +"+ ] ~ ~ ! ^ / ( _ : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : < [ } | ~ ~ ] + ", +"+ ] ~ ~ 1 2 3 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8 9 0 ! ~ ] + ", +"+ ] ~ ~ a b c d e f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f e g h i ! ~ ] + ", +"+ ] ~ ~ j k l m n n n n n n n n n n n o o o o o o o o n n n n n n n n n n n n n o e p q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u u u n n v w f x y z x A B v o n u u u u u u u u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u u n D E F G H I J K C L M N O D n u u u u u u u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u o P Q R S T U V W W X & Y Z ` ...+.n u u u u u u u n f @.q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u o f #.$.%.} &.; ! ! ! ! *.a =.-.;.>.z ,.n u u u u u u n '.)./ ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u o !.~.{.].^.! { { { { { { { { ! &./.(._.:.,.u u u u u u n f )./ ! ~ ] + ", +"+ ] ~ ~ j r s t u u u n <.[.}.|.*.{ { { { { { 1.{ { { { { ; 2.3.4.O n u u u u u n e @.5.! ~ ] + ", +"+ ] ~ ~ j r s t u u n B 6.7.8.! { { { { ~ ~ ~ ~ ~ 1.{ { { { ! =.9.0.D u u u n a.b.c.d.e.! ~ ] + ", +"+ ] ~ ~ j r s t u u o f.).& *.{ { { ~ ~ ~ ~ ~ ~ ~ { { { { ~ g.=.h.i.b.u u n ,.j.k.l.m.n.~ ~ ] + ", +"+ ] ~ ~ j r s t u n m o.3.p.~ { { ~ ~ ~ ~ ~ ~ { { { { { ; q.r.h.s.:.,.n ,.t.u.v.w.x.y.; ~ ~ ] + ", +"+ ] ~ ~ j r s t u n z.A.B.; { { ~ ~ ~ ~ ~ { { { { { ! C.D.E.F.G.x D o H.I.M J.K.L.M.N.~ ~ ~ ] + ", +"+ ] ~ ~ j r s t u ,.N O.0 ~ { { ~ ~ ~ 1.{ { { { ~ 1 P.Q.R.c S.B o t T.U.A.V./.W.! { { { ~ ~ ] + ", +"+ ] ~ ~ j r s t u D X.Y.Z.`.{ ~ ~ ~ { { { { ~ *. +.+++@+#+$+,.D j.%+&+*+& =+! { { ~ ~ ~ ~ ~ ] + ", +"+ ] ~ ~ j r s t u -+6.;+M.~ { ~ { { { { ~ ; >+,+'+)+!+'.D D ~+N {+]+^+0 | ~ { ~ *.q.>+*.~ ~ ] + ", +"+ ] ~ ~ j r s t u -+/+(+_+{ { { { { { ! Z.:+3.<+s [+}+,.B |+1+2+;+3+1 ~ { { ; 4+5+6+7+8+! ~ ] + ", +"+ ] ~ ~ j r s t u -+9+0+C.{ { { { ~ 1 P.;+h G a+m ,.-+z.b+c+d+/.j ! { { { _+q e+f+g+h+V ! ~ ] + ", +"+ ] ~ ~ j r s t u D %+i+4+{ { ~ | } x.j+k+l+m+o D f n+o+i+p+Z.! { { { ~ M.q+r+c S.y s+q ! ~ ] + ", +"+ ] ~ ~ j r s t u o t+$.e.! ; 8+u+v+w+x+y+D D ~+ .z+A+B+C+*.~ { { { { ! D+E+F+..,.e C q ! ~ ] + ", +"+ ] ~ ~ j r s t u n O G+H+8+< (.I+X.J+-+,.$+K+k+L+M+N+1 ~ { { { { { { ! V s+O+o n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u -+P+Q+V.R+S+:.m ,.T+U+G.F.V+W+C.! { { { { { ~ 1.{ ; X+Y+T.n n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u o T.Z+`+ @B ,.D f .@+@i+< @@! { { { { { ~ ~ ~ { { | #@$@~+n n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u ,.m+m+,.D O %@&@7.*@>+; { { { { { ~ ~ ~ ~ 1.{ { Z.V+=@-+u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u n n o m+-@4.;@>@,@| ~ { { { { ~ ~ ~ ~ ~ ~ { { ! L.L+'@o u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u n m )@<+!@W+M.~ { { { { `.~ ~ ~ ~ ~ ~ { { { ~@(+{@..n u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u n P ]@^@i *.{ { { { { ~ ~ ~ ~ ~ ~ { { { { ; /@(@N ,.u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u ,.O+_@r :@! { { { { ~ ~ ~ ~ `.{ { { { ; <@[@S+}@n u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u n D |@H 1@0 ; 2@{ { { { { { { { { ~ _+q *+3@4@o u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u n D K+5@i+6@@@; ~ ~ ~ ~ ~ ~ ~ *.7@#@8@9@[+,.u u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u u n D y G 0@7+a@7@M.| *.| C.y.b@c@d@e@~+o u u u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u u u n o m+f@k+g@h@k >@-.i@j@k@5 l@U+-+n u u u u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r s t u u u u u u u u u n n ,.m@z n@]@o@p@q@r@s@T.B o n u u u u u u u n f C q ! ~ ] + ", +"+ ] ~ ~ j r b+-+u u u u u u u u u u u n n o D m B B B m D o n n u u u u u u u u n f t@q ! ~ ] + ", +"+ ] ~ ~ a u@v@m+D ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.D !.w@W+! ~ ] + ", +"+ ] ~ ~ ^.M+x@y@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@z@l w.A@! ~ ] + ", +"+ ] ~ ~ *.V B@h.C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@D@E@F@Z.~ ~ ] + ", +"+ ] ~ ~ ~ | G@>+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+>+q.C.! ~ ~ ] + ", +"+ ] ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ] + ", +"+ H@~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ H@+ ", +"I@J@H@] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] H@J@I@", +". I@' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' I@. "}; diff --git a/ede-panel/icons/ede_small.xpm b/ede-panel/icons/ede_small.xpm new file mode 100644 index 0000000..5fc7024 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/favourites.xpm b/ede-panel/icons/favourites.xpm new file mode 100644 index 0000000..a108d09 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/file.xpm b/ede-panel/icons/file.xpm new file mode 100644 index 0000000..2c1accf --- /dev/null +++ b/ede-panel/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/ede-panel/icons/find.xpm b/ede-panel/icons/find.xpm new file mode 100644 index 0000000..846f71a --- /dev/null +++ b/ede-panel/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/ede-panel/icons/help.xpm b/ede-panel/icons/help.xpm new file mode 100644 index 0000000..a96d196 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/keyboard.xpm b/ede-panel/icons/keyboard.xpm new file mode 100644 index 0000000..e2e9390 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/lock.xpm b/ede-panel/icons/lock.xpm new file mode 100644 index 0000000..c238f08 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/logout.xpm b/ede-panel/icons/logout.xpm new file mode 100644 index 0000000..ef1ed7d --- /dev/null +++ b/ede-panel/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/ede-panel/icons/mini_penguin.xpm b/ede-panel/icons/mini_penguin.xpm new file mode 100644 index 0000000..2b1f91c --- /dev/null +++ b/ede-panel/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/ede-panel/icons/panel.xpm b/ede-panel/icons/panel.xpm new file mode 100644 index 0000000..eea973e --- /dev/null +++ b/ede-panel/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/ede-panel/icons/penguin.xpm b/ede-panel/icons/penguin.xpm new file mode 100644 index 0000000..7862e3f --- /dev/null +++ b/ede-panel/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/ede-panel/icons/poweron.xpm b/ede-panel/icons/poweron.xpm new file mode 100644 index 0000000..f28d36a --- /dev/null +++ b/ede-panel/icons/poweron.xpm @@ -0,0 +1,69 @@ +/* XPM */ +static char * poweron_xpm[] = { +"11 16 50 1", +" c None", +". c #D06300", +"+ c #D16700", +"@ c #D87900", +"# c #DB8A00", +"$ c #D46B00", +"% c #CA7F37", +"& c #EAB600", +"* c #DB8F00", +"= c #D08248", +"- c #E6A606", +"; c #F6D900", +"> c #D37A00", +", c #D59A6C", +"' c #E19508", +") c #FAD800", +"! c #F2C700", +"~ c #C56B0B", +"{ c #D47208", +"] c #F0B400", +"^ c #FACC00", +"/ c #FBD000", +"( c #E49D00", +"_ c #C66300", +": c #D48948", +"< c #D98B30", +"[ c #D0750D", +"} c #DC8900", +"| c #FAC700", +"1 c #E9A500", +"2 c #C15D00", +"3 c #DF8800", +"4 c #FFC400", +"5 c #ECA800", +"6 c #C36300", +"7 c #B9631B", +"8 c #F7AA00", +"9 c #EE9F00", +"0 c #C46400", +"a c #D87A04", +"b c #EE9800", +"c c #C56200", +"d c #C35A01", +"e c #E28200", +"f c #C35D00", +"g c #C35C00", +"h c #C15B00", +"i c #BA5000", +"j c #B95000", +"k c #B84F00", +" ", +" . ", +" +. ", +" @#$ ", +" %&* ", +" =-;> ", +" ,')!~ ", +" {]^/(_ ", +" :<[}|12 ", +" 3456 ", +" 7890 ", +" abc ", +" def ", +" gh ", +" ij ", +" k "}; diff --git a/ede-panel/icons/programs.xpm b/ede-panel/icons/programs.xpm new file mode 100644 index 0000000..98d7cc5 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/programs_user.xpm b/ede-panel/icons/programs_user.xpm new file mode 100644 index 0000000..26f4c98 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/run.xpm b/ede-panel/icons/run.xpm new file mode 100644 index 0000000..63958bf --- /dev/null +++ b/ede-panel/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/ede-panel/icons/showdesktop.xpm b/ede-panel/icons/showdesktop.xpm new file mode 100644 index 0000000..b419121 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/shutdown.xpm b/ede-panel/icons/shutdown.xpm new file mode 100644 index 0000000..a33811e --- /dev/null +++ b/ede-panel/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/ede-panel/icons/sound.xpm b/ede-panel/icons/sound.xpm new file mode 100644 index 0000000..6c44b4a --- /dev/null +++ b/ede-panel/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/ede-panel/icons/sound_penguin.xpm b/ede-panel/icons/sound_penguin.xpm new file mode 100644 index 0000000..ccf41c7 --- /dev/null +++ b/ede-panel/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/ede-panel/icons/tux.xpm b/ede-panel/icons/tux.xpm new file mode 100644 index 0000000..71220b5 --- /dev/null +++ b/ede-panel/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/ede-panel/item.cpp b/ede-panel/item.cpp new file mode 100644 index 0000000..fe1f9c1 --- /dev/null +++ b/ede-panel/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) +: Fl_Item_Group(name) +{ + m_modified = 0; + m_menu = menu; + m_gtype = type; + about_to_show = (Fl_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 Fl_Menu_Button *popupMenu=0; +static const char *dir = 0; + +void cb_menu(Fl_Widget *wid, long user_data) +{ + if(!dir) return; + char cmd[FL_PATH_MAX]; + + Fl_Config pGlobalConfig(fl_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: + Fl::exit_modal(); + default: + return; + } + + fl_start_child_process(cmd, false); +} + +int popup_menu() +{ + if(!popupMenu) { + popupMenu = new Fl_Menu_Button(0,0,0,0,0); + popupMenu->parent(0); + popupMenu->type(Fl_Menu_Button::POPUP3); + + popupMenu->add(_("Open with terminal..."),0,(Fl_Callback*)cb_menu,(void*)1); + popupMenu->add(_("Open with browser..."),0,(Fl_Callback*)cb_menu,(void*)2); + popupMenu->add(new Fl_Menu_Divider()); + popupMenu->add(_("Close Menu"),0,(Fl_Callback*)cb_menu,(void*)0); + } + return popupMenu->popup(); +} + +int EItemGroup::handle(int event) +{ + if(event == FL_RELEASE) { + if( Fl::event_button() == 3) { + ::dir = this->dir(); + int ret = popup_menu(); + ::dir = 0; + if(ret) return 0; + } + return 1; + } + return Fl_Item_Group::handle(event); +} + +int EItem::handle(int event) +{ + if(event==FL_RELEASE) { + if(type()==FILE) { + if(Fl::event_button() == 3) { + ::dir = this->dir(); + popup_menu(); + ::dir = 0; + return 1; + } + if(((EItemGroup*)parent())->group_type()==BROWSER_GROUP) return 1; + } + } + return Fl_Item::handle(event); +} diff --git a/ede-panel/item.h b/ede-panel/item.h new file mode 100644 index 0000000..4c256c3 --- /dev/null +++ b/ede-panel/item.h @@ -0,0 +1,85 @@ +#ifndef _ITEM_H_ +#define _ITEM_H_ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class MainMenu; + +enum { + NO_TYPE = 0, + APP_GROUP, + BROWSER_GROUP +}; + +class EItemGroup : public Fl_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) { m_dir = dir; } + const Fl_String &dir() const { return m_dir; } + + MainMenu *menu() { return m_menu; } + +private: + long m_modified; + int m_gtype; + Fl_String m_dir; + bool m_access; + MainMenu *m_menu; +}; + +class EItem : public Fl_Item { +public: + EItem(MainMenu *menu, const char *name=0) : Fl_Item(name) { m_menu = menu; } + + enum { FILE=Fl_Item::NO_EXECUTE+1 }; + + int handle(int event); + + const Fl_String &dir() const { return ((EItemGroup*)parent())->dir(); } + + void exec(const char *exec) { m_exec = exec; } + void exec(const Fl_String &exec) { m_exec = exec; } + const Fl_String &exec() const { return m_exec; } + + void filename(const char *filename) { m_filename = filename; } + void filename(const Fl_String &filename) { m_filename = filename; } + const Fl_String &filename() const { return m_filename; } + + MainMenu *menu() const { return m_menu; } + +private: + Fl_String m_filename; + Fl_String m_exec; + MainMenu *m_menu; +}; + +#endif diff --git a/ede-panel/keyboardchooser.cpp b/ede-panel/keyboardchooser.cpp new file mode 100644 index 0000000..239d6c7 --- /dev/null +++ b/ede-panel/keyboardchooser.cpp @@ -0,0 +1,294 @@ +// 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 Fl_Image keyboard_pix((const char **)keyboard_xpm); + +void setKeyboard(const Fl_String &pKbdLayout) +{ + if(!pKbdLayout.empty()) { + Fl_String ApplyString("setxkbmap " + pKbdLayout); + fl_start_child_process(ApplyString, false); + + Fl_String pShortKbd = pKbdLayout.sub_str(0, 2); + kbcapplet->tooltip(pKbdLayout); + kbcapplet->label(pShortKbd); + kbcapplet->redraw(); + } +} + +void CB_setKeyboard(Fl_Item *item, void *pData) +{ + Fl_Config pGlobalConfig(fl_find_config_file("ede.conf", true)); + if (!pGlobalConfig.error() && item) { + Fl_String kbdname = item->field_name(); + + pGlobalConfig.set("Keyboard", "Layout", kbdname); + pGlobalConfig.flush(); + setKeyboard(kbdname); + + // update history + Fl_String recentlist; + pGlobalConfig.get("Keyboard", "RecentKeyboards", recentlist, ""); + Fl_String_List recentkbd(recentlist,"|"); + if (recentkbd.index_of(kbdname) > -1) return; + + Fl_String_List copylist; + if (recentkbd.count() < MAX_KEYBOARDS) + copylist.append(recentkbd.item(0)); + for (unsigned int i=1; ichildren(); i++) { + if (kbcapplet->child(i)->field_name() == kbdname) return; + } + Fl_Item *mKbdItem = new Fl_Item(item->label()); + mKbdItem->field_name(kbdname); + mKbdItem->callback((Fl_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(); + Fl_Item *mKbdItem = new Fl_Item("English (US)"); + mKbdItem->field_name("us"); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + new Fl_Divider(10, 5); + Fl_Item_Group *more = new Fl_Item_Group(_("More...")); + mPanelMenu->end(); + + more->begin(); + for (int i=0; i<49; i++) + { + Fl_Item *mKbdItem = new Fl_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"}; + Fl_String xdir, xfilename; + FILE *fp; + char kbdnames[300][15]; + char kbddescriptions[300][50]; + Fl_Config pGlobalConfig(fl_find_config_file("ede.conf", true)); + + // First look for directory + for(int ii=0; ii<2; ii++) + if( fl_is_dir(X11DirList[ii]) ) { + xdir = X11DirList[ii]; + goto step2; + } + addKeyboardsOld(mPanelMenu); return; + + // Look for filename +step2: + for(int ii=0; ii<2; ii++) { + xfilename = xdir + rulesFileList[ii]; + if( fl_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(); + Fl_String recentlist; + pGlobalConfig.get("Keyboard", "RecentKeyboards", recentlist, ""); + Fl_String_List recentkbd(recentlist,"|"); + for (int i = 0; i < kbdno; i++) { + if (recentkbd.index_of(kbdnames[i]) > -1) { + Fl_Item *mKbdItem = new Fl_Item(kbddescriptions[i]); + mKbdItem->field_name(kbdnames[i]); + mKbdItem->callback((Fl_Callback*)CB_setKeyboard); + mKbdItem->image(keyboard_pix); + } + } + new Fl_Divider(10, 5); + Fl_Item_Group *more = new Fl_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) +{ + Fl_String pKbdLayout; + Fl_Config pGlobalConfig(fl_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, Fl_Boxtype up_c, Fl_Boxtype down_c, const char *label) + : Fl_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() +{ + Fl_Boxtype box = up; + Fl_Flags flags; + Fl_Color color; + + if (!active_r()) { + flags = FL_INACTIVE; + color = this->color(); + } else if (belowmouse() || m_open) { + flags = FL_HIGHLIGHT; + color = highlight_color(); + if (!color) color = this->color(); + box = down; + } else { + flags = 0; + color = this->color(); + } + + if(!box->fills_rectangle()) { + fl_push_clip(0, 0, this->w(), this->h()); + parent()->draw_group_box(); + fl_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() +{ + Fl_Style *s = Fl_Style::find("Menu"); + Height = s->box->dh(); + for(int n=0; nvisible()) continue; + fl_font(i->label_font(), i->label_size()); + Height += i->height()+s->leading; + } +} + +int KeyboardChooser::popup() +{ + m_open = true; + calculate_height(); + int newy=0-Height; + Fl_Widget* panel = parent()->parent()->parent(); // ugh + if (panel->y()+newy<1) newy=parent()->h(); + int retval = Fl_Menu_::popup(0, newy);//, w(), h()); + m_open = false; + return retval; +} diff --git a/ede-panel/keyboardchooser.h b/ede-panel/keyboardchooser.h new file mode 100644 index 0000000..64aa784 --- /dev/null +++ b/ede-panel/keyboardchooser.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. + +#ifndef keyboardchooser_h +#define keyboardchooser_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "icons/keyboard.xpm" + + +class KeyboardChooser : public Fl_Menu_Button +{ +public: + KeyboardChooser(int, int, int, int, Fl_Boxtype, Fl_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; + Fl_Boxtype up, down; + bool m_open; +}; + +#endif diff --git a/ede-panel/locale/de.po b/ede-panel/locale/de.po new file mode 100644 index 0000000..73d1d84 --- /dev/null +++ b/ede-panel/locale/de.po @@ -0,0 +1,260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EDE package. +# Ralf Eichinger , 2007. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: eworkpanel 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-12-12 21:03+0100\n" +"PO-Revision-Date: 2007-02-23 15:00+0100\n" +"Last-Translator: Ralf Eichinger \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: eworkpanel/aboutdialog.cpp:30 +msgid "" +"This program is based in part on the work of\n" +"FLTK project (www.fltk.org).\n" +"\n" +"This program is free software, you can redistribute\n" +"it and/or modify it under the terms of GNU General\n" +"Public License as published by the Free Software\n" +"Foundation, either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will\n" +"be useful, but WITHOUT ANY WARRANTY;\n" +"without even the implied\n" +"warranty of MERCHANTABILITY or FITNESS\n" +"FOR A PARTICULAR PURPOSE.\n" +"\n" +"See the GNU General Public License for more details.\n" +"You should have received a copy of the GNU General\n" +"Public Licence along with this program; if not, write\n" +"to the Free Software Foundation, Inc., 675 Mass Ave,\n" +"Cambridge, MA 02139, USA" +msgstr "" +"Dieses Programm basiert in Teilen auf der Arbeit\n" +"des FLTK-Projektes (www.fltk.org).\n" +"\n" +"This program is free software, you can redistribute\n" +"it and/or modify it under the terms of GNU General\n" +"Public License as published by the Free Software\n" +"Foundation, either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will\n" +"be useful, but WITHOUT ANY WARRANTY;\n" +"without even the implied\n" +"warranty of MERCHANTABILITY or FITNESS\n" +"FOR A PARTICULAR PURPOSE.\n" +"\n" +"See the GNU General Public License for more details.\n" +"You should have received a copy of the GNU General\n" +"Public Licence along with this program; if not, write\n" +"to the Free Software Foundation, Inc., 675 Mass Ave,\n" +"Cambridge, MA 02139, USA" + +#: eworkpanel/aboutdialog.cpp:56 +msgid "Details" +msgstr "Details" + +#: eworkpanel/aboutdialog.cpp:59 eworkpanel/aboutdialog.cpp:101 +msgid "&Close" +msgstr "&Schließen" + +#: eworkpanel/aboutdialog.cpp:78 +msgid "About Equinox Desktop Environment" +msgstr "Über Equinox Desktop Environment" + +#: eworkpanel/aboutdialog.cpp:89 +msgid "version " +msgstr "Version " + +#: eworkpanel/aboutdialog.cpp:94 +msgid "" +"This program is licenced under terms of the GNU General Public Licence " +"version 2 or newer.\n" +"See Details for more." +msgstr "" +"Dieses Programm ist lizenziert unter den Bedingungen der GNU General " +"Public Licence Version 2 oder neuer.\n" +"Lesen Sie unter 'Details' näheres dazu." + +#: eworkpanel/aboutdialog.cpp:98 +msgid "&Details" +msgstr "&Details" + +#: eworkpanel/batterymonitor.cpp:125 +#, c-format +msgid "Power management not detected" +msgstr "Kein Power-Management erkannt" + +#: eworkpanel/batterymonitor.cpp:127 +#, c-format +msgid "The power is plugged in" +msgstr "Externe Stromversorgung" + +#: eworkpanel/batterymonitor.cpp:130 +#, c-format +msgid "Battery is %d%% full (%d minutes remaining)" +msgstr "Batterie %d%% voll (%d Minuten verbleiben)" + +#: eworkpanel/cpumonitor.cpp:283 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" +"CPU Load:\n" +"Benutzer: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" + +#: eworkpanel/item.cpp:91 +msgid "Open with terminal..." +msgstr "Mit Terminal öffnen..." + +#: eworkpanel/item.cpp:92 +msgid "Open with browser..." +msgstr "Mit Browser öffnen..." + +#: eworkpanel/item.cpp:94 +msgid "Close Menu" +msgstr "Menü schließen" + +#: eworkpanel/keyboardchooser.cpp:86 eworkpanel/keyboardchooser.cpp:179 +msgid "More..." +msgstr "Mehr..." + +#: eworkpanel/logoutdialog.cpp:109 +msgid "You are not allowed to restart !" +msgstr "Sie dürfen keinen Neustart ausführen!" + +#: eworkpanel/logoutdialog.cpp:129 +msgid "You are not allowed to shutdown !" +msgstr "Sie dürfen das System nicht herunterfahren!" + +#: eworkpanel/logoutdialog.cpp:210 +msgid "Logout" +msgstr "Ausloggen" + +#: eworkpanel/logoutdialog.cpp:219 +msgid "&Aus aktueller Sitzung ausloggen." +msgstr "" + +#: eworkpanel/logoutdialog.cpp:222 +msgid "Logout from the current session." +msgstr "Aus aktueller Sitzung ausloggen." + +#: eworkpanel/logoutdialog.cpp:225 +msgid "&restart the computer" +msgstr "&Computer neu starten" + +#: eworkpanel/logoutdialog.cpp:228 +msgid "Restart the computer." +msgstr "Computer neu starten." + +#: eworkpanel/logoutdialog.cpp:231 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "Neustart des Computers. Sie haben dazu keine Berechtigung." + +#: eworkpanel/logoutdialog.cpp:236 +msgid "&shut down the computer" +msgstr "&Computer herunterfahren" + +#: eworkpanel/logoutdialog.cpp:239 +msgid "Shut down the computer." +msgstr "Computer herunterfahren." + +#: eworkpanel/logoutdialog.cpp:242 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "Computer herunterfahren. Sie haben dazu keine Berechtigung." + +#: eworkpanel/logoutdialog.cpp:247 +msgid "&OK" +msgstr "&OK" + +#: eworkpanel/logoutdialog.cpp:251 +msgid "&Cancel" +msgstr "&Abbrechen" + +#: eworkpanel/logoutdialog.cpp:255 +msgid "Logout, restart or shut down the computer?" +msgstr "Ausloggen, Computer neu starten oder herunterfahren?" + +#: eworkpanel/mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Willkommen im Equinox Desktop." + +#: eworkpanel/mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Verzeichnis öffnen..." + +#: eworkpanel/taskbutton.cpp:233 +msgid " Close " +msgstr " Schließen " + +#: eworkpanel/taskbutton.cpp:235 +msgid " Kill" +msgstr " Schließen" + +#: eworkpanel/taskbutton.cpp:238 +msgid " Maximize " +msgstr " Maximieren " + +#: eworkpanel/taskbutton.cpp:239 +msgid " Minimize" +msgstr " Minimieren" + +#: eworkpanel/taskbutton.cpp:240 +msgid " Restore" +msgstr " Wiederherstellen" + +#: eworkpanel/workpanel.cpp:167 +msgid "MDY" +msgstr "DMY" + +#: eworkpanel/workpanel.cpp:296 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent:\t\t%ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Erhalten: %ld kB (%.1f kB/s)\n" +"Gesendet:\t\t%ld kB (%.1f kB/s)\n" +"Dauer: %d min %d sec" + +#: eworkpanel/workpanel.cpp:374 +msgid "Workspace" +msgstr "Arbeitsbereich" + +#: eworkpanel/workpanel.cpp:676 +msgid "Show desktop" +msgstr "Arbeitsfläche anzeigen" + +#: eworkpanel/workpanel.cpp:690 +msgid "Workspaces" +msgstr "Arbeitsbereiche" + +#: eworkpanel/workpanel.cpp:755 +msgid "Settings" +msgstr "Einstellungen" + +#: eworkpanel/workpanel.cpp:760 +msgid "About EDE..." +msgstr "Über EDE..." + +#: eworkpanel/workpanel.cpp:815 +msgid "Volume control" +msgstr "Lautstärken-Regler" diff --git a/ede-panel/locale/fr.po b/ede-panel/locale/fr.po new file mode 100644 index 0000000..3de48cb --- /dev/null +++ b/ede-panel/locale/fr.po @@ -0,0 +1,240 @@ +# French translation of ede. +# Copyright (C) 2007 THE ede'S COPYRIGHT HOLDER +# This file is distributed under the same license as the ede package. +# emmanuel coutant , 2007. +# , fuzzy +# +# +msgid "" +msgstr "" +"Project-Id-Version: ede 1.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-01-07 14:49+0100\n" +"PO-Revision-Date: 2007-01-07 20:47+0100\n" +"Last-Translator: emmanuel coutant \n" +"Language-Team: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit" + +#: eworkpanel/aboutdialog.cpp:30 +msgid "" +"This program is based in part on the work of\n" +"FLTK project (www.fltk.org).\n" +"\n" +"This program is free software, you can redistribute\n" +"it and/or modify it under the terms of GNU General\n" +"Public License as published by the Free Software\n" +"Foundation, either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will\n" +"be useful, but WITHOUT ANY WARRANTY;\n" +"without even the implied\n" +"warranty of MERCHANTABILITY or FITNESS\n" +"FOR A PARTICULAR PURPOSE.\n" +"\n" +"See the GNU General Public License for more details.\n" +"You should have received a copy of the GNU General\n" +"Public Licence along with this program; if not, write\n" +"to the Free Software Foundation, Inc., 675 Mass Ave,\n" +"Cambridge, MA 02139, USA" +msgstr "" + +#: eworkpanel/aboutdialog.cpp:56 +msgid "Details" +msgstr "Détails" + +#: eworkpanel/aboutdialog.cpp:59 eworkpanel/aboutdialog.cpp:101 +msgid "&Close" +msgstr "&Fermer" + +#: eworkpanel/aboutdialog.cpp:78 +msgid "About Equinox Desktop Environment" +msgstr "A propos de l'environnement de bureau Equinox" + +#: eworkpanel/aboutdialog.cpp:89 +msgid "version " +msgstr "version " + +#: eworkpanel/aboutdialog.cpp:94 +msgid "" +"This program is licenced under terms of the GNU General Public Licence " +"version 2 or newer.\n" +"See Details for more." +msgstr "" + +#: eworkpanel/aboutdialog.cpp:98 +msgid "&Details" +msgstr "&Détails" + +#: eworkpanel/batterymonitor.cpp:125 +#, c-format +msgid "Power management not detected" +msgstr "Gestion de l'énergie non détectée" + +#: eworkpanel/batterymonitor.cpp:127 +#, c-format +msgid "The power is plugged in" +msgstr "L'ordinateur est sur réseau électrique" + +#: eworkpanel/batterymonitor.cpp:130 +#, c-format +msgid "Battery is %d%% full (%d minutes remaining)" +msgstr "Niveau de batterie: %D%% (%d minutes restantes)" + +#: eworkpanel/cpumonitor.cpp:283 +#, c-format +msgid "" +"CPU Load:\n" +"User: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" +msgstr "" +"Charge CPU:\n" +"Utilisateur: %d%%\n" +"Nice: %d%%\n" +"Sys: %d%%\n" +"Idle: %d%%" + + +#: eworkpanel/item.cpp:91 +msgid "Open with terminal..." +msgstr "Ouvrir dans un terminal" + +#: eworkpanel/item.cpp:92 +msgid "Open with browser..." +msgstr "Ouvrir dans un navigateur..." + +#: eworkpanel/item.cpp:94 +msgid "Close Menu" +msgstr "Fermer le menu" + +#: eworkpanel/keyboardchooser.cpp:86 eworkpanel/keyboardchooser.cpp:179 +msgid "More..." +msgstr "Plus..." + +#: eworkpanel/logoutdialog.cpp:109 +msgid "You are not allowed to restart !" +msgstr "Vous n'êtes pas autorisé à redémarrer l'ordinateur!" + +#: eworkpanel/logoutdialog.cpp:129 +msgid "You are not allowed to shutdown !" +msgstr "Vous n'êtes pas autorisé à éteindre l'ordinateur!" + +#: eworkpanel/logoutdialog.cpp:210 +msgid "Logout" +msgstr "Déconnexion" + +#: eworkpanel/logoutdialog.cpp:219 +msgid "&logout from the current session" +msgstr "&déconnexion de la session courante" + +#: eworkpanel/logoutdialog.cpp:222 +msgid "Logout from the current session." +msgstr "Déconnexion de la session courante." + +#: eworkpanel/logoutdialog.cpp:225 +msgid "&restart the computer" +msgstr "&redémarrer l'ordinateur" + +#: eworkpanel/logoutdialog.cpp:228 +msgid "Restart the computer." +msgstr "Redémarrer l'ordinateur." + +#: eworkpanel/logoutdialog.cpp:231 +msgid "Restart the computer. You do not have privileges to do that." +msgstr "Vous n'avez pas les privilèges pour redémarrer l'ordinateur. " + +#: eworkpanel/logoutdialog.cpp:236 +msgid "&shut down the computer" +msgstr "é&teindre l'ordinateur" + +#: eworkpanel/logoutdialog.cpp:239 +msgid "Shut down the computer." +msgstr "Eteindre l'ordinateur" + +#: eworkpanel/logoutdialog.cpp:242 +msgid "Shut down the computer. You do not have privileges to do that." +msgstr "Vous n'avez pas les privilèges pour éteindre l'ordinateur" + +#: eworkpanel/logoutdialog.cpp:247 +msgid "&OK" +msgstr "&OK" + +#: eworkpanel/logoutdialog.cpp:251 +msgid "&Cancel" +msgstr "A&nnuler" + +#: eworkpanel/logoutdialog.cpp:255 +msgid "Logout, restart or shut down the computer?" +msgstr "Déconnecter, redémarrer ou éteindre l'ordinateur?" + +#: eworkpanel/mainmenu.cpp:45 +msgid "Welcome to the Equinox Desktop Environment." +msgstr "Bienvenue dans l'environnement de bureau Equinox" + +#: eworkpanel/mainmenu_scan.cpp:45 +msgid "Open Directory.." +msgstr "Ouvrir le répertoire..." + +#: eworkpanel/taskbutton.cpp:233 +msgid " Close " +msgstr " Fermer " + +#: eworkpanel/taskbutton.cpp:235 +msgid " Kill" +msgstr " Tuer" + +#: eworkpanel/taskbutton.cpp:238 +msgid " Maximize " +msgstr " Maximiser " + +#: eworkpanel/taskbutton.cpp:239 +msgid " Minimize" +msgstr " Minimiser" + +#: eworkpanel/taskbutton.cpp:240 +msgid " Restore" +msgstr " Restorer" + +#: eworkpanel/workpanel.cpp:167 +msgid "MDY" +msgstr "" + +#: eworkpanel/workpanel.cpp:296 +#, c-format +msgid "" +"Received: %ld kB (%.1f kB/s)\n" +"Sent:\t\t%ld kB (%.1f kB/s)\n" +"Duration: %d min %d sec" +msgstr "" +"Reçu: %ld ko (%.1f kB/s)\n" +"Envoyé: %ld ko (%.1f kB/s)\n" +"Durée: %d min %d sec" + +#: eworkpanel/workpanel.cpp:374 +msgid "Workspace" +msgstr "Espace de travail" + +#: eworkpanel/workpanel.cpp:676 +msgid "Show desktop" +msgstr "Afficher le bureau" + +#: eworkpanel/workpanel.cpp:690 +msgid "Workspaces" +msgstr "Espaces de travail" + +#: eworkpanel/workpanel.cpp:755 +msgid "Settings" +msgstr "Configuration" + +#: eworkpanel/workpanel.cpp:760 +msgid "About EDE..." +msgstr "A propos de EDE..." + +#: eworkpanel/workpanel.cpp:815 +msgid "Volume control" +msgstr "Contrôle de volume" + diff --git a/ede-panel/locale/hu.po b/ede-panel/locale/hu.po new file mode 100644 index 0000000..60246e0 --- /dev/null +++ b/ede-panel/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/ede-panel/locale/id.po b/ede-panel/locale/id.po new file mode 100644 index 0000000..2b3f035 --- /dev/null +++ b/ede-panel/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/ede-panel/locale/messages.pot b/ede-panel/locale/messages.pot new file mode 100644 index 0000000..24187ed --- /dev/null +++ b/ede-panel/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/ede-panel/locale/ru.po b/ede-panel/locale/ru.po new file mode 100644 index 0000000..103031b --- /dev/null +++ b/ede-panel/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/ede-panel/locale/sk.po b/ede-panel/locale/sk.po new file mode 100644 index 0000000..07b6f53 --- /dev/null +++ b/ede-panel/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/ede-panel/locale/sr.po b/ede-panel/locale/sr.po new file mode 100644 index 0000000..6839057 --- /dev/null +++ b/ede-panel/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/ede-panel/logoutdialog.cpp b/ede-panel/logoutdialog.cpp new file mode 100644 index 0000000..efe356b --- /dev/null +++ b/ede-panel/logoutdialog.cpp @@ -0,0 +1,268 @@ +// 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 + +// widgets +Fl_Window* windowLogoutDialog; +Fl_Round_Button* logoutRadioItemLogoutDialog; +Fl_Round_Button* restartRadioItemLogoutDialog; +Fl_Round_Button* shutdownRadioItemLogoutDialog; + +// graphics +static Fl_Image penguin_pix((const char **)penguin_xpm); + +// globals +bool dmAvailable; +char *xdm_fifo; +bool canShutdown; +bool sdForceNow; +bool sdTryNow; + +void SendLogoutMsg(Fl_Window* win) +{ + Atom _XA_EDE_WM_ACTION = XInternAtom(fl_display, "_EDE_WM_ACTION", False); + Atom _XA_EDE_WM_LOGOUT = XInternAtom(fl_display, "_EDE_WM_LOGOUT", False); + XClientMessageEvent evt; + memset(&evt, 0, sizeof(evt)); + evt.type = ClientMessage; + evt.window = fl_xid(win); + evt.format = 32; + evt.message_type = _XA_EDE_WM_ACTION; + evt.data.l[0] = _XA_EDE_WM_LOGOUT; + XSendEvent(fl_display, RootWindow(fl_display, DefaultScreen(fl_display)), False, + SubstructureNotifyMask, (XEvent*)&evt); +} + +// This function looks what a user can do and sets other +// global variables +void checkPermissions() +{ + Fl_String xdm_env = Fl_String(getenv("XDM_MANAGED")); + if (xdm_env == "") + 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); + if (xdm_fifo[0] != '/') // broken config + { + dmAvailable = false; + xdm_fifo = ""; + } + + // can a user shutdown? + if (xdm_env_list.index_of("maysd")>-1) + canShutdown = true; + else + canShutdown = false; + + // we will use fn/tn only if XDM suggests to do it + if (xdm_env_list.index_of("fn")>-1) + sdForceNow = true; + else + sdForceNow = false; + + if (xdm_env_list.index_of("tn")>-1) + sdTryNow = true; + else + sdTryNow = false; + } + + // the old way + if (!dmAvailable) + { + // shutdown cmd with no params shouldn't do anything... + if (fl_start_child_process("shutdown") == 127) + canShutdown = false; + } +} + +// Logout using XDM messaging +void newLogoutFunction(Fl_Window* win) +{ + + if ((logoutRadioItemLogoutDialog->value()==0) && + (restartRadioItemLogoutDialog->value()==0) && + (shutdownRadioItemLogoutDialog->value() == 0)) + // this shoudn't happen... + return; + + if (restartRadioItemLogoutDialog->value()==1) + { + if (!canShutdown) + { + fl_alert (_("You are not allowed to restart !")); + return; + } + + FILE *fd = fopen(xdm_fifo, "w"); + Fl_String method; + if (sdForceNow) + method = "shutdown\treboot\tforcenow\n"; + else if (sdTryNow) + method = "shutdown\treboot\ttrynow\n"; + else + method = "shutdown\treboot\tschedule\n"; + fputs ((char *)method, fd); + fclose (fd); + } + + if (shutdownRadioItemLogoutDialog->value() == 1) + { + if (!canShutdown) + { + fl_alert (_("You are not allowed to shutdown !")); + return; + } + + FILE *fd = fopen(xdm_fifo, "w"); + Fl_String method; + if (sdForceNow) + method = "shutdown\thalt\tforcenow\n"; + else if (sdTryNow) + method = "shutdown\thalt\ttrynow\n"; + else + method = "shutdown\thalt\tschedule\n"; + fputs ((char *)method, fd); + fclose (fd); + } + + SendLogoutMsg(win); + XCloseDisplay(fl_display); + exit(0); + + //XCloseDisplay(fl_display); + //XSetCloseDownMode(fl_display, DestroyAll); + //XKillClient(fl_display, AllTemporary); + //XUngrabServer(fl_display); + //fl_close_display(); + //exit(0); +} + +// "brute force" logout function +// (in case XDM is not available) +void oldLogoutFunction(Fl_Window* win) +{ + if (logoutRadioItemLogoutDialog->value()==1) + { + SendLogoutMsg(win); + XCloseDisplay(fl_display); + exit(0); + //XKillClient(fl_display, AllTemporary); + //XUngrabServer(fl_display); + //fl_close_display(); + //XCloseDisplay(fl_display); + //exit(0); + } + + if (restartRadioItemLogoutDialog->value()==1) + { + if(fl_start_child_process( "shutdown -r now" ) != 0) + fl_alert("You are not alowed to reboot !"); + } + + if (shutdownRadioItemLogoutDialog->value() == 1) + { + if(fl_start_child_process( "shutdown -h now" ) != 0) + fl_alert("You are not alowed to shutdown !"); + } +} + +// Determine logout type +void LogoutFunction(Fl_Widget *, void* w) +{ + Fl_Window* win = (Fl_Window*)w; + if (dmAvailable) + newLogoutFunction(win); + else + oldLogoutFunction(win); +} + +// Main logout UI and control +static void cb_Cancel(Fl_Button*, void*) +{ + windowLogoutDialog->hide(); +} + +void LogoutDialog(Fl_Widget*, void *) +{ + // first see what options are available + checkPermissions(); + + // draw GUI + Fl_Window* w; + { + Fl_Window* o = windowLogoutDialog = new Fl_Window(171, 160, 330, 190, _("Logout")); + w = o; + { + Fl_Group* o = new Fl_Group(5, 12, 55, 45); + o->image(penguin_pix); + o->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE); + o->end(); + } + { + Fl_Round_Button* o = logoutRadioItemLogoutDialog = new Fl_Round_Button(80, 67, 225, 20, _("&logout from the current session")); + o->type(Fl_Round_Button::RADIO); + o->value(1); + o->tooltip(_("Logout from the current session.")); + } + { + Fl_Round_Button* o = restartRadioItemLogoutDialog = new Fl_Round_Button(80, 88, 225, 20, _("&restart the computer")); + o->type(Fl_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(); + } + } + { + Fl_Round_Button* o = shutdownRadioItemLogoutDialog = new Fl_Round_Button(80, 110, 225, 20, _("&shut down the computer")); + o->type(Fl_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(); + } + } + { + Fl_Button* o = new Fl_Button(85, 157, 80, 25, _("&OK")); + o->callback((Fl_Callback*)LogoutFunction, w); + } + { + Fl_Button* o = new Fl_Button(170, 157, 80, 25, _("&Cancel")); + o->callback((Fl_Callback*)cb_Cancel); + } + { + Fl_Box* o = new Fl_Box(65, 7, 260, 63, _("Logout, restart or shut down the computer?")); + o->label_size(18); + o->align(132|FL_ALIGN_INSIDE); + } + + new Fl_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/ede-panel/logoutdialog.fld b/ede-panel/logoutdialog.fld new file mode 100644 index 0000000..e37f215 --- /dev/null +++ b/ede-panel/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/ede-panel/logoutdialog.h b/ede-panel/logoutdialog.h new file mode 100644 index 0000000..26308c7 --- /dev/null +++ b/ede-panel/logoutdialog.h @@ -0,0 +1,31 @@ +// 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 "icons/penguin.xpm" + + +// which of these can be safely removed? what should be extern and +// what shouldn't? + +extern Fl_Window* windowLogoutDialog; +extern Fl_Round_Button* logoutRadioItemLogoutDialog; +extern Fl_Round_Button* restartRadioItemLogoutDialog; +extern Fl_Round_Button* shutdownRadioItemLogoutDialog; +void LogoutFunction(Fl_Widget *, void *); +extern void LogoutFunction(Fl_Button*, void*); +void LogoutDialog(Fl_Widget*, void *); + + +#endif diff --git a/ede-panel/mainmenu.cpp b/ede-panel/mainmenu.cpp new file mode 100644 index 0000000..0853c16 --- /dev/null +++ b/ede-panel/mainmenu.cpp @@ -0,0 +1,465 @@ +#include "mainmenu.h" +#include "menu.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +Fl_Pixmap ede_pix((const char **)ede_small2_xpm); +Fl_Pixmap programs_pix((const char **)programs_xpm); +Fl_Pixmap find_pix((const char **)find_xpm); +Fl_Pixmap run_pix((const char **)run_xpm); + +/////////////////////////// +extern Fl_Config pGlobalConfig; + +MainMenu::MainMenu() + : Fl_Menu_Button(0,0,0,0, "Start") +{ + layout_align(FL_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 +{ + Fl_Style *s = Fl_Style::find("Menu"); + int menuheight = s->box->dh(); + for(int n=0; nvisible()) continue; + + fl_font(i->label_font(), i->label_size()); + menuheight += i->height()+s->leading; + } + return menuheight; +} + +int MainMenu::handle(int e) { + switch (e) { + case FL_ENTER: + case FL_LEAVE: + redraw(); + } + return Fl_Menu_Button::handle(e); +} + +void MainMenu::draw() +{ + Fl_Boxtype box = this->box(); + Fl_Flags flags; + Fl_Color color = this->color(); + Fl_Color lcolor = label_color(); + + if (!active_r()) + flags = FL_INACTIVE; + else if (m_open) + flags = FL_VALUE; + else + flags = 0; + + if (belowmouse()) { + flags = flags|FL_HIGHLIGHT; + color = fl_lighter(color); + lcolor = fl_lighter(label_color()); + if(!color) color = this->color(); + if(!lcolor) color = this->label_color(); + } + 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; + } + + fl_font(label_font(), label_size()); + label_type()->draw(label(), X, Y, W-X, H, lcolor, flags|FL_ALIGN_LEFT); +} + +void MainMenu::layout() +{ + fl_font(label_font(), label_size()); + int W = int(fl_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); + Fl_Menu_Button::layout(); +} + +void MainMenu::clear_favourites() +{ + static Fl_String favourites; + if(favourites.empty()) { + favourites = fl_homedir(); + favourites += "/.ede/favourites/"; + + if(!fl_file_exists(favourites)) { + mkdir( favourites, 0777 ); + } + } + + dirent **files; + int pNumFiles = fl_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 ) { + Fl_String filename(favourites); + filename += files[i]->d_name; + unlink(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(Fl_String cmd) +{ + char pRun[FL_PATH_MAX]; + + snprintf(pRun, sizeof(pRun)-1, "elauncher \"%s\"", cmd.c_str()); + fl_start_child_process(pRun, false); +} + +Fl_Image *MainMenu::find_image(const Fl_String &icon) const +{ + Fl_String iconpath( fl_file_expand(icon) ); + + Fl_Image *im=0; + + if(fl_file_exists(iconpath)) + im = Fl_Image::read(iconpath); + + if(!im) { + iconpath = PREFIX"/share/ede/icons/16x16/"+icon; + im = Fl_Image::read(iconpath); + } + + if(im && (im->width()!=16 || im->height()!=16)) { + Fl_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(Fl_String &str) +{ + if(str=="Exec") return ITEM_EXEC; + else if(str=="AppDir") return ITEM_APPDIR; + else if(str=="SubDir") return ITEM_SUBDIR; + else if(str=="FileBrowser") return ITEM_FILEBROWSER; + else if(str=="Divider") return ITEM_DIVIDER; + return ITEM_NONE; +} + +bool is_group_item(int t) { return (t==ITEM_APPDIR || t==ITEM_SUBDIR || t==ITEM_FILEBROWSER); } + +Fl_String MainMenu::get_item_name(Fl_XmlNode *node) +{ + Fl_String name; + for(uint n=0; nchildren(); n++) { + Fl_XmlNode *np = node->child(n); + if(np->is_element() && np->name()=="Name") { + Fl_String &lang = np->get_attribute("Lang"); + if(lang=="" && name.length()==0) { + name.clear(); + np->text(name); + } else if(lang==locale()) { + name.clear(); + np->text(name); + break; + } + } + } + return name; +} + +Fl_String MainMenu::get_item_dir(Fl_XmlNode *node) +{ + Fl_String dir( node->get_attribute("Dir") ); + + if(dir=="$DEFAULT_PROGRAMS_DIR") + dir = Fl_String(PREFIX"/share/ede/programs"); + + return fl_file_expand(dir); +} + +// THIS MUST BE CHANGED ASAP! +#include "logoutdialog.h" +#include "aboutdialog.h" +void MainMenu::set_exec(EItem *i, const Fl_String &exec) +{ + if(exec=="$LOGOUT") + i->callback((Fl_Callback*)LogoutDialog); + else if(exec=="$ABOUT") + i->callback( (Fl_Callback *)AboutDialog); + else + i->exec(exec); +} + +void MainMenu::build_menu_item(Fl_XmlNode *node) +{ + if(!node) return; + + int type = str_to_type(node->get_attribute("Type")); + if(type==ITEM_NONE) return; + + Fl_Widget *w=0; + EItemGroup *g=0; + EItem *i=0; + + switch(type) { + case ITEM_EXEC: + i = new EItem(this); + i->callback((Fl_Callback*)cb_exec_item); + set_exec(i, node->get_attribute("Exec")); + i->image(run_pix); + w = (Fl_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 = (Fl_Widget *)new Fl_Menu_Divider(); + break; + } + + if(g) { + g->begin(); + w = (Fl_Widget*)g; + } + + Fl_Image *im=0; + if(node->has_attribute("Icon")) { + im = find_image(node->get_attribute("Icon")); + } else { + Fl_String im_path(node->get_attribute("Exec")); + im_path += ".png"; + im = find_image(im_path); + } + if(im) w->image(im); + + Fl_String label = get_item_name(node); + w->label(label); + + for(uint n=0; nchildren(); n++) { + Fl_XmlNode *np = node->child(n); + if((np->is_element() || np->is_leaf()) && np->name()=="Item") + build_menu_item(np); + } + + if(w->is_group()) + ((Fl_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 = fl_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) { + Fl::warning("Menu not found, creating default.."); + try { + Fl_Buffer buf; + buf.append(default_menu, strlen(default_menu)); + buf.save_file(file); + } catch(Fl_Exception &e) { + Fl::warning(e.text()); + } + fp = fopen(file, "r"); + if(!fp) Fl::fatal("Cannot write default menu."); + } + Fl_XmlLocator locator; + + Fl_XmlDoc *doc=0; + if(fp) { + try { + doc = Fl_XmlParser::create_dom(fp, &locator, false); + } catch(Fl_XmlException &exp) { + Fl_String error(exp.text()); + error += "\n\n"; + error += Fl_XmlLocator::error_line(file, *exp.locator()); + error += '\n'; + Fl::warning(error); + } + } + + fclose(fp); + + if(!doc) { + // One more try! + try { + Fl_Buffer buf; + buf.append(default_menu, strlen(default_menu)); + doc = Fl_XmlParser::create_dom(buf.data(), buf.bytes(), &locator, false); + } catch(Fl_Exception &e) { + Fl::fatal("Cannot open menu! [%s]", e.text().c_str()); + } + } + + if(doc) { + begin(); + + Fl_XmlNode *node = doc->root_node(); + if(node) { + for(uint n=0; nchildren(); n++) { + Fl_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(Fl::event_button()==1) { + m_open = true; + init_entries(); + int newy=Y-calculate_height()-h()-1; + // mainmenu is inside a group: + if (parent()->parent()->y()+newy<1) newy=Y; + int ret = Fl_Menu_::popup(X, newy, W, H); + clear(); + m_open = false; + return ret; + } + return 0; +} diff --git a/ede-panel/mainmenu.h b/ede-panel/mainmenu.h new file mode 100644 index 0000000..b3375dd --- /dev/null +++ b/ede-panel/mainmenu.h @@ -0,0 +1,63 @@ +#ifndef _MAINMENU_H_ +#define _MAINMENU_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "item.h" + +class MainMenu : public Fl_Menu_Button +{ +public: + MainMenu(); + ~MainMenu(); + + int popup(int X, int Y, int W, int H); + + void draw(); + int handle(int event); + void layout(); + + void init_entries(); + + Fl_String get_item_dir(Fl_XmlNode *node); + Fl_String get_item_name(Fl_XmlNode *node); + + void set_exec(EItem *i, const Fl_String &exec); + void build_menu_item(Fl_XmlNode *node); + + int calculate_height() const; + + Fl_Image *find_image(const Fl_String &icon) const; + + void scan_programitems(const char *path); + void scan_filebrowser(const Fl_String &path); + + const Fl_String &locale() const { return m_locale; } + + static void resolve_program(Fl_String 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()); } + + Fl_Image *e_image; + + Fl_String m_locale; + long m_modified; + bool m_open; +}; + +#endif diff --git a/ede-panel/mainmenu_scan.cpp b/ede-panel/mainmenu_scan.cpp new file mode 100644 index 0000000..c5c273c --- /dev/null +++ b/ede-panel/mainmenu_scan.cpp @@ -0,0 +1,214 @@ +#include "mainmenu.h" +#include "item.h" + +#include +Fl_Pixmap file_pix(file_xpm); + +extern Fl_Pixmap programs_pix; +extern Fl_Pixmap run_pix; + +static void cb_file_item(EItem *item, void *) +{ + Fl_String pFavouriteFile(fl_homedir()); + pFavouriteFile += "/.ede/favourites/"; + pFavouriteFile += fl_file_filename(item->filename()); + + Fl_Config pItemConfig(item->filename(), true, false); + Fl_String cmd; + if(!pItemConfig.get("Desktop Entry", "Exec", cmd, "")) + { + MainMenu::clear_favourites(); + symlink(item->filename(), pFavouriteFile); + MainMenu::resolve_program(cmd); + } +} + +static void cb_open_dir(Fl_Widget *w, void *) +{ + EItemGroup *g = (EItemGroup *)w->parent(); + + Fl_Config conf(fl_find_config_file("ede.conf", false)); + Fl_String term; + conf.get("Terminal", "Terminal", term, 0); + if(term.empty()) + term = "xterm"; + + Fl_String cmd("cd "); + cmd += g->dir(); + cmd += "; " + term; + + fl_start_child_process(cmd, false); +} + +void MainMenu::scan_filebrowser(const Fl_String &path) +{ + EItem *i = new EItem(this, _("Open Directory..")); + i->callback(cb_open_dir); + i->image(run_pix); + + new Fl_Menu_Divider(); + + EItemGroup *mNewGroup=0; + struct dirent **files; + int count = fl_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; + } + + Fl_String filename(path); + filename += '/'; + filename += files[n]->d_name; + + if(fl_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(fl_inactive(FL_RED)); + mNewGroup->access(false); + } + free((char*)files[n]); + files[n] = 0; + } + } + + for(n=0; nd_name, ".") && strcmp(files[n]->d_name, "..")) + { + Fl_String filename(path + '/'); + filename += 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((char*)files[n]); + } + + if(count>0 && files) free((char**)files); +} + +void MainMenu::scan_programitems(const char *path) +{ + EItemGroup *mNewGroup; + Fl_String NameEntry; + bool added = false; + + Fl_String localizedName; + if(!locale().empty()) + localizedName.printf("Name[%s]", locale().c_str()); + else + localizedName = "Name"; + + struct dirent **files; + int count = fl_filename_list(path, &files); + + int n; + for(n=0; nd_name, ".") && strcmp(files[n]->d_name, "..") && strcmp(files[n]->d_name, "CVS") ) + { + Fl_String filename = path; + filename += '/'; + filename += files[n]->d_name; + + if(fl_is_dir(filename)) + { + added=true; + mNewGroup = new EItemGroup(this, APP_GROUP); + mNewGroup->image(programs_pix); + mNewGroup->dir(filename); + + Fl_String locale_file(filename); + locale_file += "/.directory"; + + Fl_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; + } + } + } + + for(n=0; nd_name, ".") && strcmp(files[n]->d_name, "..") && strstr(files[n]->d_name, ".desktop")) + { + Fl_String filename(path); + filename += '/'; + filename += files[n]->d_name; + + // we check first for localised names... + Fl_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((Fl_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); + } + } + if(files[n]) free(files[n]); + } + + if(count>0 && files) free(files); + if(!added) + new Fl_Divider(); +} diff --git a/ede-panel/menu.h b/ede-panel/menu.h new file mode 100644 index 0000000..afe0941 --- /dev/null +++ b/ede-panel/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/ede-panel/panelbutton.cpp b/ede-panel/panelbutton.cpp new file mode 100644 index 0000000..534ecca --- /dev/null +++ b/ede-panel/panelbutton.cpp @@ -0,0 +1,163 @@ +// 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 "panelbutton.h" + +extern Fl_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, Fl_Boxtype up_c, Fl_Boxtype down_c, const char *label) + : Fl_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() +{ + Fl_Boxtype box = up; + Fl_Flags flags; + Fl_Color color; + + if (!active_r()) { + // Button is disabled + flags = FL_INACTIVE; + color = this->color(); + } else if (m_open) { + // Menu is open, make the button pushed and highlighted + flags = FL_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 = FL_HIGHLIGHT; + color = highlight_color(); + if (!color) color = this->color(); + } else { + // Plain + flags = 0; + color = this->color(); + } + + if(!box->fills_rectangle()) { + fl_push_clip(0, 0, this->w(), this->h()); + parent()->draw_group_box(); + fl_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() +{ + Fl_Style *s = Fl_Style::find("Menu"); + Height = s->box->dh(); + for(int n=0; nvisible()) continue; + fl_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 newy=0-Height; + Fl_Widget* panel = parent()->parent()->parent(); // ugh + if (panel->y()+newy<1) newy=parent()->h(); + int retval = Fl_Menu_::popup(0, newy);//, 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, Fl_Boxtype up_c, Fl_Boxtype down_c, const char *label) + : Fl_Button(x, y, w, h, label) +{ +// Height = 0; + up = up_c; + down = down_c; + accept_focus(false); +} + + +void PanelButton::draw() +{ + Fl_Boxtype box = up; + Fl_Flags flags; + Fl_Color color; + + if (belowmouse()) + { + // Highlight button when below mouse + flags = FL_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()) { + fl_push_clip(0, 0, this->w(), this->h()); + parent()->draw_group_box(); + fl_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/ede-panel/panelbutton.h b/ede-panel/panelbutton.h new file mode 100644 index 0000000..a4cfe9f --- /dev/null +++ b/ede-panel/panelbutton.h @@ -0,0 +1,50 @@ +// 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 + +class PanelMenu : public Fl_Menu_Button +{ +public: + PanelMenu(int, int, int, int, Fl_Boxtype, Fl_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; + Fl_Boxtype up, down; + bool m_open; +}; + +class PanelButton : public Fl_Button +{ +public: + PanelButton(int, int, int, int, Fl_Boxtype, Fl_Boxtype, const char *l=0); + + virtual void draw(); + + virtual void preferred_size(int &w, int &h) const { w=this->w(); } + +private: + int Height; + Fl_Boxtype up, down; +}; + +#endif diff --git a/ede-panel/taskbutton.cpp b/ede-panel/taskbutton.cpp new file mode 100644 index 0000000..b584582 --- /dev/null +++ b/ede-panel/taskbutton.cpp @@ -0,0 +1,621 @@ +#include "taskbutton.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include "../edewm/Windowmanager.h" + +// Forward declaration +static int GetState(Window w); +static bool IsWindowManageable(Window w); + +Fl_Menu_ *TaskButton::menu = 0; +TaskButton *TaskButton::pushed = 0; + +int calculate_height(Fl_Menu_ *m) +{ + Fl_Style *s = Fl_Style::find("Menu"); + int Height = s->box->dh(); + for(int n=0; nchildren(); n++) + { + Fl_Widget *i = m->child(n); + if(!i) break; + if(!i->visible()) continue; + fl_font(i->label_font(), i->label_size()); + Height += i->height()+s->leading; + } + return Height; +} + +void task_button_cb(TaskButton *b, Window w) +{ + if(Fl::event_button()==FL_RIGHT_MOUSE) + { + // Window will lose focus so lets reflect this on taskbar + TaskBar::active = 0; + + // 'pushed' lets the menu_cb() know which button was pressed + TaskButton::pushed = b; + + // Create menu + TaskButton::menu->color(b->color()); + TaskButton::menu->popup(Fl::event_x(), Fl::event_y()-calculate_height(TaskButton::menu)); + + } + else + { + if(TaskBar::active==w) + { + // Click on active window will minimize it + XIconifyWindow(fl_display, w, fl_screen); + XSync(fl_display, True); + TaskBar::active = 0; + b->m_minimized=true; + } + else + { + // Else give focus to window + Fl_WM::set_active_window(w); + TaskBar::active = w; + b->m_minimized=false; + } + } +} + +#define CLOSE 1 +#define KILL 2 +#define MIN 3 +#define MAX 4 +//#define SET_SIZE 5 +#define RESTORE 6 + +void menu_cb(Fl_Menu_ *menu, void *) +{ + // try to read information how much window can be maximized + //int title_height; + //Fl_Config wm_config(fl_find_config_file("wmanager.conf", true)); + //wm_config.get("TitleBar", "Height",title_height,20); + + //int frame_width=3; // pixels + + Window win = TaskButton::pushed->argument(); + int ID = menu->item()->argument(); + //int x, y, width, height; + + Atom _XA_NET_WM_STATE = XInternAtom(fl_display, "_NET_WM_STATE", False); + Atom _XA_EDE_WM_ACTION= XInternAtom(fl_display, "_EDE_WM_ACTION", False); + + // use _NET_WM_STATE_MAXIMIZED_HORZ or _NET_WM_ACTION_MAXIMIZE_HORZ ??? + Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ = XInternAtom(fl_display, "_NET_WM_STATE_MAXIMIZED_HORZ", False); + Atom _XA_NET_WM_STATE_MAXIMIZED_VERT = XInternAtom(fl_display, "_NET_WM_STATE_MAXIMIZED_VERT", False); + Atom _XA_EDE_WM_RESTORE_SIZE = XInternAtom(fl_display, "_EDE_WM_RESTORE_SIZE", False); + XClientMessageEvent evt; + + switch(ID) + { + + case CLOSE: + // TODO: closing should be handled by edewm + if(Fl_WM::close_window(win)) + break; + + case KILL: + // TODO: killing should be handled by edewm + XKillClient(fl_display, win); + break; + + case MIN: + XIconifyWindow(fl_display, win, fl_screen); + XSync(fl_display, True); + TaskBar::active = 0; + TaskButton::pushed->m_minimized=true; + break; + + case MAX: + memset(&evt, 0, sizeof(evt)); + evt.type = ClientMessage; + evt.window = win; + evt.message_type = _XA_NET_WM_STATE; + evt.format = 32; + evt.data.l[0] = 0; + evt.data.l[1] = _XA_NET_WM_STATE_MAXIMIZED_HORZ; + evt.data.l[2] = _XA_NET_WM_STATE_MAXIMIZED_VERT; + XSendEvent(fl_display, RootWindow(fl_display, DefaultScreen(fl_display)), False, SubstructureNotifyMask, + (XEvent*)& evt); + + TaskButton::pushed->m_minimized=false; + TaskBar::active = win; + + /* + Fl_WM::get_workarea(x, y, width, height); + + // leave room for widgets + y += title_height+frame_width; + x += frame_width; + height -= title_height+frame_width*2; + width -= frame_width*2; + + // resize window + XMoveResizeWindow(fl_display, win, x, y, width, height); + XSync(fl_display, True); + + // window lost focus so lets be nice and give it back + Fl_WM::set_active_window(win); + TaskBar::active = win; + TaskButton::pushed->m_minimized=false; + */ + + 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); + memset(&evt, 0, sizeof(evt)); + evt.type = ClientMessage; + evt.window = win; + evt.message_type = _XA_EDE_WM_ACTION; + evt.format = 32; + evt.data.l[0] = _XA_EDE_WM_RESTORE_SIZE; + XSendEvent(fl_display, RootWindow(fl_display, DefaultScreen(fl_display)), False, SubstructureNotifyMask, + (XEvent*)& evt); + TaskBar::active = win; + TaskButton::pushed->m_minimized=false; + break; + } + + Fl::redraw(); +} + +TaskButton::TaskButton(Window win) : Fl_Button(0,0,0,0) +{ + layout_align(FL_ALIGN_LEFT); + callback((Fl_Callback1*)task_button_cb, win); + + if(!menu) + { + Fl_Group *saved = Fl_Group::current(); + Fl_Group::current(0); + + menu = new Fl_Menu_(); + menu->callback((Fl_Callback*)menu_cb); + + //Fl_Widget* add(const char*, int shortcut, Fl_Callback*, void* = 0, int = 0); + + menu->add(_(" Close "), 0, 0, (void*)CLOSE, FL_MENU_DIVIDER); + new Fl_Divider(10, 15); + menu->add(_(" Kill"), 0, 0, (void*)KILL, FL_MENU_DIVIDER); + new Fl_Divider(10, 15); + + 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); + //----- + + Fl_Group::current(saved); + } +} + +void TaskButton::draw() +{ + // Draw method contains most of the logic of taskbar button + // appearance + + // TODO: There seems to be no X event when window get minimized + // so taskbar might not reflect it until next update() call + + // TODO: See how we can make minimized icons gray... + + Fl_Color color = Fl_Button::default_style->color; + Fl_Color lcolor = Fl_Button::default_style->label_color; + + Window win = this->argument(); + this->color(color); + this->highlight_color(fl_lighter(color)); + this->label_color(lcolor); + this->highlight_label_color(lcolor); + this->box(FL_UP_BOX); + + if (win == TaskBar::active) + { + this->box(FL_DOWN_BOX); + this->color(fl_lighter(color)); + this->highlight_color(fl_lighter(fl_lighter(color))); + } + else if (m_minimized) + { + this->label_color(fl_lighter(fl_lighter(lcolor))); + this->highlight_label_color(fl_lighter(fl_lighter(lcolor))); + } + Fl_Button::draw(); +} + +///////////////////////// +// Task bar ///////////// +///////////////////////// + +#include "icons/tux.xpm" +static Fl_Image default_icon(tux_xpm); + +Window TaskBar::active = 0; +bool TaskBar::variable_width = true; +bool TaskBar::all_desktops = false; + +TaskBar::TaskBar() +: Fl_Group(0,0,0,0) +{ + m_max_taskwidth = 150; + + layout_align(FL_ALIGN_CLIENT); + layout_spacing(2); + + Fl_Config pConfig(fl_find_config_file("ede.conf", true)); + pConfig.get("Panel", "VariableWidthTaskbar",variable_width,true); + pConfig.get("Panel", "AllDesktops",all_desktops,false); + + update(); + end(); +} + +// Logic for button sizes + +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(); + } + + Fl_Widget::layout(); +} + +// Recreate all buttons in taskbar +// Called... occasionally ;) + +void TaskBar::update() +{ + Fl_WM::clear_handled(); + + int n; + + // Delete all icons: + for(n=0; nimage(); + if(i && i!=&default_icon) + delete i; + } + clear(); + + Window *wins=0; + int num_windows = Fl_WM::get_windows_mapping(wins); + + if(num_windows<=0) + return; + + // Cleared window list + Fl_Int_List winlist; + int current_workspace = Fl_WM::get_current_workspace(); + for(n=0; n0) + { + for(n=0; n<(int)winlist.size(); n++) + { + add_new_task(winlist[n]); + } + } + free(wins); + + // Probably redundant + relayout(); + redraw(); + parent()->redraw(); +} + +// Called when another window becomes active + +void TaskBar::update_active(Window active) +{ + if (active) + if (IsWindowManageable(active)) TaskBar::active=active; + redraw(); +} + +// A somewhat lighter version of update() when window +// just changes name +// Some apps like to do it a lot + +void TaskBar::update_name(Window win) +{ + //printf ("+update_name\n"); + 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.. + Fl_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(); +} + +// Callback for show desktop button + +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; nlabel(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(FL_ALIGN_LEFT | FL_ALIGN_INSIDE | FL_ALIGN_CLIP); + + if(Fl_WM::get_active_window()==w) + { + TaskBar::active = w; + } + + if(GetState(w) == IconicState) + b->m_minimized=true; + else + b->m_minimized=false; + + end(); +} + +////////////////////////// + +// Below are window management functions that aren't present in Fl_WM +// We can't add them to Fl_WM because we change api, and efltk will be +// dropped in EDE 2.0.... So this functions are just duct tape... +// ugly, non-generic, non-optimized... + +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(fl_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 +// 3 - IconicState +// 1 - NormalState +// 2 - WithdrawnState +static int GetState(Window w) +{ + static Atom _XA_WM_STATE = 0; + if(!_XA_WM_STATE) _XA_WM_STATE = XInternAtom(fl_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; +} + +// Returns false if window w is of type DESKTOP or DOCK +// Not generic enough!! + +static bool IsWindowManageable(Window w) +{ + + static Atom _XA_NET_WM_WINDOW_TYPE = 0; + if(!_XA_NET_WM_WINDOW_TYPE) _XA_NET_WM_WINDOW_TYPE = XInternAtom(fl_display, "_NET_WM_WINDOW_TYPE", False); + static Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP = 0; + if(!_XA_NET_WM_WINDOW_TYPE_DESKTOP) _XA_NET_WM_WINDOW_TYPE_DESKTOP = XInternAtom(fl_display, "_NET_WM_WINDOW_TYPE_DESKTOP", False); + static Atom _XA_NET_WM_WINDOW_TYPE_DOCK = 0; + if(!_XA_NET_WM_WINDOW_TYPE_DOCK) _XA_NET_WM_WINDOW_TYPE_DOCK = XInternAtom(fl_display, "_NET_WM_WINDOW_TYPE_DOCK", False); + static Atom _XA_NET_WM_WINDOW_TYPE_SPLASH = 0; + if(!_XA_NET_WM_WINDOW_TYPE_SPLASH) _XA_NET_WM_WINDOW_TYPE_SPLASH = XInternAtom(fl_display, "_NET_WM_WINDOW_TYPE_SPLASH", False); + + Atom window_type = None; + Atom actual_type; + int actual_format; + unsigned long nitems, bytes_after; + unsigned char *prop_return = NULL; + + if(Success == XGetWindowProperty(fl_display, w, _XA_NET_WM_WINDOW_TYPE, 0L, sizeof(Atom), + False, XA_ATOM, &actual_type, + &actual_format, &nitems, &bytes_after, + &prop_return) && prop_return) + { + window_type = *(Atom *)prop_return; + XFree(prop_return); + } + + if(window_type == _XA_NET_WM_WINDOW_TYPE_DESKTOP + || window_type == _XA_NET_WM_WINDOW_TYPE_DOCK + || window_type == _XA_NET_WM_WINDOW_TYPE_SPLASH) + return false; + else return true; +} diff --git a/ede-panel/taskbutton.h b/ede-panel/taskbutton.h new file mode 100644 index 0000000..d1c0e45 --- /dev/null +++ b/ede-panel/taskbutton.h @@ -0,0 +1,59 @@ +#ifndef _TASKBUTTON_H_ +#define _TASKBUTTON_H_ + +#include +#include +#include + +class TaskBar; + +// One task in taskabr +class TaskButton : public Fl_Button +{ +public: + // TashBar is needed for this pointer, so we can call update() + TaskButton(Window w); + + // Menu stuff + static Fl_Menu_ *menu; + static TaskButton *pushed; + + void draw(); + + // Speed up drawing by keeping the minimized state + bool m_minimized; +}; + +///////////////////////////////////// + +class TaskBar : public Fl_Group +{ +public: + TaskBar(); + + // Active window ID + static Window active; + + //Are buttons variable width + static bool variable_width; + + // Windows from all desktops + static bool all_desktops; + + 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/ede-panel/workpanel.cpp b/ede-panel/workpanel.cpp new file mode 100644 index 0000000..0777859 --- /dev/null +++ b/ede-panel/workpanel.cpp @@ -0,0 +1,888 @@ +// 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 "batterymonitor.h" +#include "dock.h" +#include "mainmenu.h" +#include "keyboardchooser.h" + +#include +#include +#include +#include +#include + +#include "item.h" +#include + +static Fl_Image desktop_pix((const char **)desktop_xpm); +static Fl_Image sound_pix((const char **)sound_xpm); +static Fl_Image run_pix((const char **)run_xpm); +static Fl_Image showdesktop_pix((const char **)showdesktop_xpm); + +Fl_Button *mClockBox; +Fl_Group *mModemLeds; +Fl_Box *mLedIn, *mLedOut; + +Fl_Button *mSoundMixer; +CPUMonitor *cpumon; +BatteryMonitor *batmon; + +Fl_Input_Browser *runBrowser; + +PanelMenu *mProgramsMenu; +PanelMenu *mWorkspace; +MainMenu *mSystemMenu; +KeyboardChooser *mKbdSelect; + +Dock *dock; +TaskBar *tasks; + +Fl_Config pGlobalConfig(fl_find_config_file("ede.conf", true)); + +void updateStats(void *); + + +///////////////////////////////////////////////////////////////////////////// +// Fl_Update_Window is the name of Workpanel class + + +class Fl_Update_Window : public Fl_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; +}; + + +// This global variable is here for stupidity +Fl_Update_Window *mPanelWindow; + + +Fl_Update_Window::Fl_Update_Window(int X, int Y, int W, int H, char *label=0) + : Fl_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 FL_SHOW: { + int ret = Fl_Window::handle(FL_SHOW); + int is_shown = shown(); + + if(is_shown && !autoHide) + Fl_WM::set_window_strut(fl_xid(mPanelWindow), 0, 0, 0, h()); + + if(is_shown && autoHide) + position(initX, initY); + + return ret; + } + + case FL_ENTER: + if(!autoHide) { +// position(initX, initY); + if(shown()) Fl_WM::set_window_strut(fl_xid(mPanelWindow), 0, 0, 0, h()); + } + else + position(initX, initY); + +// take_focus(); + return 1; + + case FL_LEAVE: + if(autoHide && Fl::event() == FL_LEAVE) { + position(initX, initY+h()-2); + if(shown()) Fl_WM::set_window_strut(fl_xid(mPanelWindow), 0, 0, 0, 2); + } +// throw_focus(); + return 1; + + case FL_MOUSEWHEEL: + if (mWorkspace == Fl::belowmouse()) { + int count = Fl_WM::get_workspace_count(); + int current = Fl_WM::get_current_workspace(); + + current-=Fl::event_dy(); // direction of dy is opposite + while (current>=count) current-=count; + while (current<0) current+=count; + + Fl_WM::set_current_workspace(current); + } + } + + return Fl_Window::handle(event); +} + + + +///////////////////////////////////////////////////////////////////////////// + + +void setWorkspace(Fl_Widget *, long w) +{ + Fl_WM::set_current_workspace(w); +} + +void restoreRunBrowser() { + // Read the history of commands in runBrowser on start + runBrowser->clear(); + Fl_String historyString; + pGlobalConfig.get("Panel", "RunHistory", historyString,""); + Fl_String_List history(historyString,"|"); + for (unsigned i = 0; i < history.count(); i++) { + runBrowser->add(history[i]); + } +} + + +bool showseconds = true; + +void clockRefresh(void *) +{ + // Handle user's format preference + Fl_String timestr = Fl_Date_Time::Now().time_string(); + Fl_String timestrsec; + Fl_String format; + pGlobalConfig.get("Clock", "TimeFormat", format, ""); + Fl_String seconds = timestr.sub_str(6, 2); + Fl_String minutes = timestr.sub_str(3, 2); + int hours = atoi(timestr.sub_str(0, 2)); + if(format == "12") { + if(hours > 12) { + hours -= 12; + } + } + timestr = Fl_String(hours) + ":" + minutes; + timestrsec = timestr + ":" + seconds; + mClockBox->label(timestr); + + strncpy(Fl_Date_Time::datePartsOrder, _("MDY"), 3); + Fl_String pClockTooltip = Fl_Date_Time::Now().day_name() + ", "; + pClockTooltip += Fl_Date_Time::Now().date_string() + ", " + timestrsec; + mClockBox->tooltip(pClockTooltip); + + mClockBox->redraw(); + Fl::add_timeout(1.0, clockRefresh); +} + +void runUtility(Fl_Widget *, char *pCommand) +{ + char cmd[256]; + snprintf (cmd, sizeof(cmd)-1, "elauncher %s", pCommand); + fl_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(fl_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(fl_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(); + Fl::repeat_timeout(1.0f, updateStats); +} + + +// Start utility, like "time/date" or "volume" +void startUtility(Fl_Button *, void *pName) +{ + Fl_String value; + pGlobalConfig.get("Panel", (char*)pName, value, ""); + + if(!pGlobalConfig.error() && !value.empty()) { + value = "elauncher \""+value; + value += "\""; + fl_start_child_process(value, false); + } +} + +void updateWorkspaces(Fl_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(setWorkspace, (long)n); + i->type(Fl_Item::RADIO); + if(nlabel(names[n]); + free(names[n]); + } else { + Fl_String tmp; + i->label(tmp.printf(tmp, "%s %d", _("Workspace") ,n+1)); + } + if(current==n) i->set_value(); + } + // add a divider if there are no workspaces + if (count<1) { + new Fl_Menu_Divider(); + } + if(names) delete []names; + + mWorkspace->end(); +} + +void FL_WM_handler(Fl_Widget *w, void *d) +{ + int e = Fl_WM::action(); +// printf (" --- eworkpanel handling %d\n",e); + if(e==Fl_WM::WINDOW_NAME || e==Fl_WM::WINDOW_ICONNAME) { + tasks->update_name(Fl_WM::window()); + } + else if(e==Fl_WM::WINDOW_ACTIVE) { + tasks->update_active(Fl_WM::get_active_window()); + } + else if(e >= Fl_WM::WINDOW_LIST && e <= Fl_WM::WINDOW_DESKTOP) { + tasks->update(); + } + else if(Fl_WM::action()>0 && Fl_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*) +{ + Fl_String exec(i->value()); + if ((exec == "") || (exec == " ")) + return; + exec = "elauncher \""+exec; + exec += "\""; + fl_start_child_process(exec, false); + + Fl_Input_Browser *ib = (Fl_Input_Browser *)i->parent(); + if (!ib->find(i->value())) { + ib->add(i->value()); + Fl_String_List history; + int c = 0; + if (ib->children() > 15) c = ib->children() - 15; + for (; c < ib->children(); c++) { + history.append(ib->child(c)->label()); + } + pGlobalConfig.set("Panel", "RunHistory", history.to_string("|")); + pGlobalConfig.flush(); + } + + i->value(""); +} +void cb_run_app2(Fl_Input_Browser *i, void*) { cb_run_app(i->input(), 0); } + +void cb_showdesktop(Fl_Button *) { +// spagetti code - workpanel.cpp needs to be cleaned up of extraneous code + tasks->minimize_all(); +} + + +///////////////////////////////////////////////////////////////////////////// +// Quick Lunch Bar stuff - integrating code from dzooli +// TODO: remove this in EDE 2.0 + + +#define QLB_CONFNAME "/.ede/qlb.conf" + + +static Fl_Image **qlb_images; +static Fl_Button **qlb_buttons; +static char **qlb_commands; +static char **qlb_tooltips; +static char **qlb_icons; +static int qlb_count; +static int qlb_numbuttons; + + + +/** + * cb_button - Button callback + * @button: The button + * @data: button data (command for exec) + * + * This function is the button callback function and executes the + * specified command with the 'system()' call. + */ +static void cb_qlb_taskbutton(Fl_Button *button, void *data) +{ + fl_start_child_process((char *)data, false); +} + +/** + * get_buttonnum - Count the buttons in the config file + * @configname: configuration file name + * + * The function opens the configuration file for the toolbar and + * counts the all of the lines. Returns an unsigned integer or zero + * if no configuration file found. + */ +unsigned int qlb_get_buttonnum(const char *configname) +{ + if (!configname) + return 0; + + FILE* ifile=fopen(configname, "r+"); + if (!ifile) + return 0; + + unsigned int c = 0; + char buff[256]; + while (!feof(ifile)) { + fgets(buff, sizeof(buff)-1, ifile); + c++; + } + fclose(ifile); + return c; +} + +/** + * load_config - read the configuration file + * @confname: configuration file name + * + * The function reads the given configuration file and scans for + * commands, icon names and tooltips. No checks done in the configuration + * file lines and memory is dinamically allocated as needed. + */ +int qlb_load_config(const char *confname) +{ + int c; + int i; + int j, ln; + FILE *ifile; + char *s = (char *)calloc(512, sizeof(char)); + + if (!confname) { + free(s); + fprintf(stderr, "Cannot open configfile\n"); + return -1; + } + ifile = fopen(confname, "r+"); + if (!ifile) { + free(s); + return -2; + } + c = 0; + //while (!feof(ifile)) { + qlb_numbuttons--; + for (ln=0; lnlayout_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 doQLB; + pGlobalConfig.get("Panel", "QuickLaunchBar", doQLB, 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); + bool doBatteryMonitor; + doBatteryMonitor=true; // blah + + // Group that holds everything.. + Fl_Group *g = new Fl_Group(0,0,0,0); + g->box(FL_DIV_UP_BOX); + g->layout_spacing(2); + g->layout_align(FL_ALIGN_CLIENT); + g->begin(); + + mSystemMenu = new MainMenu(); + + Fl_VertDivider *v = new Fl_VertDivider(0, 0, 5, 18, ""); + v->layout_align(FL_ALIGN_LEFT); + substract = 5; + + //this kind of if-else block is ugly + // - but users demand such features so... + if ((doShowDesktop) || (doWorkspaces) || (doQLB)) { + + int size=0; + if ((doShowDesktop) && (doWorkspaces)) { size=48; } else { size=24; } + // Add size for QLB: + if (doQLB && qlb_create_toolbuttons(0)) size += (qlb_numbuttons * 24); + + Fl_Group *g2 = new Fl_Group(0,0,size,22); + g2->box(FL_FLAT_BOX); + g2->layout_spacing(0); + g2->layout_align(FL_ALIGN_LEFT); + + // Show desktop button + if (doShowDesktop) { + PanelButton *mShowDesktop; + mShowDesktop = new PanelButton(0, 0, 24, 22, FL_NO_BOX, FL_DOWN_BOX, "ShowDesktop"); + mShowDesktop->layout_align(FL_ALIGN_LEFT); + mShowDesktop->label_type(FL_NO_LABEL); + mShowDesktop->align(FL_ALIGN_INSIDE|FL_ALIGN_CENTER); + mShowDesktop->image(showdesktop_pix); + mShowDesktop->tooltip(_("Show desktop")); + mShowDesktop->callback( (Fl_Callback*)cb_showdesktop); + mShowDesktop->show(); + + substract += 26; + } + + // Workspaces panel + mWorkspace=0; // so we can detect it later + if (doWorkspaces) { + mWorkspace = new PanelMenu(0, 0, 24, 22, FL_NO_BOX, FL_DOWN_BOX, "WSMenu"); + mWorkspace->layout_align(FL_ALIGN_LEFT); + mWorkspace->label_type(FL_NO_LABEL); + mWorkspace->align(FL_ALIGN_INSIDE|FL_ALIGN_CENTER); + mWorkspace->image(desktop_pix); + mWorkspace->tooltip(_("Workspaces")); + mWorkspace->end(); + + substract += 26; + } + + // "Quick Lunch" buttons + for (int count=0; countlayout_align(FL_ALIGN_LEFT); + qlb_buttons[count]->label_type(FL_NO_LABEL); + qlb_buttons[count]->align(FL_ALIGN_INSIDE|FL_ALIGN_CENTER); + qlb_images[count] = NULL; + qlb_images[count] = Fl_Image::read(qlb_icons[count]); + if (!qlb_images[count]) + fprintf(stderr, "skipping icon: %s\n", qlb_icons[count]); + else + qlb_buttons[count]->image(qlb_images[count]); + qlb_buttons[count]->tooltip(qlb_tooltips[count]); + qlb_buttons[count]->callback((Fl_Callback*)cb_qlb_taskbutton, (void *)qlb_commands[count]); + qlb_buttons[count]->show(); + + substract += 26; + } + + + + g2->end(); + g2->show(); + g2->resizable(); + + v = new Fl_VertDivider(0, 0, 5, 18, ""); + v->layout_align(FL_ALIGN_LEFT); + substract += 5; + } + + // Run browser + if (doRunBrowser) { + Fl_Group *g3 = new Fl_Group(0,0,100,20); + g3->box(FL_FLAT_BOX); + g3->layout_spacing(0); + g3->layout_align(FL_ALIGN_LEFT); + runBrowser = new Fl_Input_Browser("",100,FL_ALIGN_LEFT,30); + //runBrowser->image(run_pix); + runBrowser->box(FL_THIN_DOWN_BOX); // This is the only box type which works :( + + // 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(FL_WHEN_ENTER_KEY); + runBrowser->input()->callback((Fl_Callback*)cb_run_app); + runBrowser->callback((Fl_Callback*)cb_run_app2); + g3->end(); + g3->show(); + g3->resizable(); + + v = new Fl_VertDivider(0, 0, 5, 18, ""); + v->layout_align(FL_ALIGN_LEFT); + substract += 105; + } + + + // Popup menu for the whole taskbar + Fl_Menu_Button *mPopupPanelProp = new Fl_Menu_Button( 0, 0, W, 28 ); + mPopupPanelProp->type( Fl_Menu_Button::POPUP3 ); + mPopupPanelProp->anim_flags(Fl_Menu_::LEFT_TO_RIGHT); + mPopupPanelProp->anim_speed(0.8); + mPopupPanelProp->begin(); + + Fl_Item *mPanelSettings = new Fl_Item(_("Settings")); + mPanelSettings->x_offset(12); + mPanelSettings->callback( (Fl_Callback*)runUtility, (void*)"epanelconf" ); + new Fl_Divider(10, 5); + + Fl_Item *mAboutItem = new Fl_Item(_("About EDE...")); + mAboutItem->x_offset(12); + mAboutItem->callback( (Fl_Callback *)AboutDialog ); + + mPopupPanelProp->end(); + + // Taskbar... + tasks = new TaskBar(); + + // Dock and various entries... + dock = new Dock(); + + v = new Fl_VertDivider(0, 0, 5, 18, ""); + v->layout_align(FL_ALIGN_RIGHT); + + { + // MODEM + mModemLeds = new Fl_Group(0, 0, 25, 18); + mModemLeds->box(FL_FLAT_BOX); + mModemLeds->hide(); + mLedIn = new Fl_Box(2, 5, 10, 10); + mLedIn->box( FL_OVAL_BOX ); + mLedIn->color( (Fl_Color)968701184); + mLedOut = new Fl_Box(12, 5, 10, 10); + mLedOut->box( FL_OVAL_BOX); + mLedOut->color( (Fl_Color)968701184); + mModemLeds->end(); + } + + { + // KEYBOARD SELECT + mKbdSelect = new KeyboardChooser(0, 0, 20, 18, FL_NO_BOX, FL_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 Fl_Button(0, 0, 50, 20); + mClockBox->align(FL_ALIGN_INSIDE|FL_ALIGN_LEFT); + mClockBox->hide(); + mClockBox->box(FL_FLAT_BOX); + mClockBox->callback( (Fl_Callback*)startUtility, (void*)"Time and date"); + } + + // SOUND applet + if (doSoundMixer) { + mSoundMixer = new Fl_Button(0, 0, 20, 18); + mSoundMixer->hide(); + mSoundMixer->box(FL_NO_BOX); + mSoundMixer->focus_box(FL_NO_BOX); + mSoundMixer->image(sound_pix); + mSoundMixer->tooltip(_("Volume control")); + mSoundMixer->align(FL_ALIGN_INSIDE); + mSoundMixer->callback( (Fl_Callback*)startUtility, (void*)"Volume Control" ); + } + + // CPU monitor + if (doCpuMonitor) { + cpumon = new CPUMonitor(); + cpumon->hide(); + } + + // Battery monitor + if (doBatteryMonitor) { + batmon = new BatteryMonitor(dock); + batmon->hide(); + } + + + dock->add_to_tray(new Fl_Box(0, 0, 5, 20)); + dock->add_to_tray(mClockBox); + dock->add_to_tray(mKbdSelect); + dock->add_to_tray(mSoundMixer); + dock->add_to_tray(cpumon); + dock->add_to_tray(batmon); + + // end Dock + + + Fl::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); + tasks->update(); + + Fl::add_timeout(0, clockRefresh); + Fl::add_timeout(0, updateStats); + + while(mPanelWindow->shown()) + Fl::wait(); +} diff --git a/ede-panel/workpanel.h b/ede-panel/workpanel.h new file mode 100644 index 0000000..ab81e01 --- /dev/null +++ b/ede-panel/workpanel.h @@ -0,0 +1,81 @@ +// 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 "icons/sound.xpm" +#include "icons/desktop.xpm" +#include "icons/run.xpm" +#include "icons/showdesktop.xpm" + +#endif