diff options
Diffstat (limited to 'noatun-plugins/noatunmadness')
-rw-r--r-- | noatun-plugins/noatunmadness/Makefile.am | 10 | ||||
-rw-r--r-- | noatun-plugins/noatunmadness/madness.cpp | 123 | ||||
-rw-r--r-- | noatun-plugins/noatunmadness/madness.h | 32 | ||||
-rw-r--r-- | noatun-plugins/noatunmadness/madness.plugin | 105 |
4 files changed, 270 insertions, 0 deletions
diff --git a/noatun-plugins/noatunmadness/Makefile.am b/noatun-plugins/noatunmadness/Makefile.am new file mode 100644 index 0000000..973ae51 --- /dev/null +++ b/noatun-plugins/noatunmadness/Makefile.am @@ -0,0 +1,10 @@ +INCLUDES= $(all_includes) + +kde_module_LTLIBRARIES = noatunmadness.la +noatunmadness_la_SOURCES = madness.cpp +noatunmadness_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined +noatunmadness_la_LIBADD = $(LIB_KFILE) -lnoatun -lm +noatunmadness_la_METASOURCES = AUTO + +noatun_DATA = madness.plugin +noatundir = $(kde_datadir)/noatun diff --git a/noatun-plugins/noatunmadness/madness.cpp b/noatun-plugins/noatunmadness/madness.cpp new file mode 100644 index 0000000..0b0d086 --- /dev/null +++ b/noatun-plugins/noatunmadness/madness.cpp @@ -0,0 +1,123 @@ +/***************************************************************** + +Copyright (c) 2001 Charles Samuels <charles@kde.org> + 2000 Rik Hemsley <rik@kde.org> + +This code is released under the GNU General Public License 2.0, or any +later version, at your option. I mean, you know the drill, just read +RMS's novel that I'm supposed to put at the top of every story. He's insane. +******************************************************************/ + +#include "madness.h" + +#include <kwin.h> +#include <kwinmodule.h> +#include <kiconloader.h> +#include <math.h> +#include <iostream> + +#include <X11/Xlib.h> + + +extern "C" +{ +Plugin *create_plugin() +{ + return new Madness(); +} +} + +Madness::Madness() + : MonoFFTScope(100), Plugin(), mWm(this) +{ + connect(&mWm, SIGNAL(currentDesktopChanged(int)), SLOT(update())); + connect(&mWm, SIGNAL(windowAdded(WId)), SLOT(update())); + connect(&mWm, SIGNAL(windowRemoved(WId)), SLOT(update())); + connect(&mWm, SIGNAL(strutChanged()), SLOT(update())); + +} + +Madness::~Madness() +{ + QMap<WId, QPoint>::ConstIterator it(mOriginalPositions.begin()); + + for (; it != mOriginalPositions.end(); ++it) + XMoveWindow(qt_xdisplay(), it.key(), (*it).x(), (*it).y()); +} + +void Madness::update() +{ + mWindowList = mWm.windows(); + mWorkArea = mWm.workArea(); + + QValueList<WId>::ConstIterator it(mWindowList.begin()); + + for (; it != mWindowList.end(); ++it) + { + QRect area=KWin::info(*it).frameGeometry; + if (!mOriginalPositions.contains(*it)) + mOriginalPositions.insert(*it, area.topLeft()); + } +} + +void Madness::init() +{ + update(); + MonoFFTScope::start(); +} + +void Madness::scopeEvent(float *d, int size) +{ + int delta=0; // in pixels + for (int count=0; count<size; count++) + { + delta+=(int)((log10(d[count]+1)/log(2))*(size-count))/2; + } + +// cout << "delta: " << delta << endl; + + QValueList<WId>::ConstIterator it(mWindowList.begin()); + + for (; it != mWindowList.end(); ++it) + { + KWin::Info i(KWin::info(*it)); + + if ((NET::Visible != i.mappingState) || + ((NET::Unknown != i.windowType) && + (NET::Normal != i.windowType) && + (NET::Tool != i.windowType) && + (NET::Menu != i.windowType) && + (NET::Dialog != i.windowType)) || (NET::Max & i.state) + || (NET::Shaded & i.state) + || (mWm.currentDesktop() != i.desktop)) + continue; + + QRect area=i.frameGeometry; + float lightness=100000.0/(area.width()*area.height()); + + int x=area.x(); + int y=area.y(); + + + int dx=(int)((delta*lightness*(area.height()/10)/100))*(KApplication::random()%2 ? -1 : 1); + int dy=(int)((delta*lightness*(area.width()/10)/100))*(KApplication::random()%2 ? -1 : 1); + + if (dx < 0 && (x - dx < mWorkArea.left())) + dx = -dx; + + else if (dx > 0 && (x + dx + area.width() > mWorkArea.right())) + dx = -dx; + + if (dy < 0 && (y - dy < mWorkArea.top())) + dy = -dy; + + else if (dy > 0 && (y + dy + area.height() > mWorkArea.bottom())) + dy = -dy; + + + XMoveWindow(qt_xdisplay(), i.win, x + dx, y + dy); + } + +} + +#include "madness.moc" diff --git a/noatun-plugins/noatunmadness/madness.h b/noatun-plugins/noatunmadness/madness.h new file mode 100644 index 0000000..b36c468 --- /dev/null +++ b/noatun-plugins/noatunmadness/madness.h @@ -0,0 +1,32 @@ +#ifndef MADNESS_H +#define MADNESS_H + +#include <noatun/plugin.h> +#include <string.h> +#include <qmap.h> +#include <qvaluelist.h> +#include <kwinmodule.h> + +class Madness : public QObject, public MonoFFTScope, public Plugin +{ +Q_OBJECT +public: + Madness(); + virtual ~Madness(); + + void init(); + +private slots: + void update(); + +protected: + virtual void scopeEvent(float *data, int bands); + +private: + KWinModule mWm; + QValueList<WId> mWindowList; + QRect mWorkArea; + QMap<WId, QPoint> mOriginalPositions; +}; + +#endif diff --git a/noatun-plugins/noatunmadness/madness.plugin b/noatun-plugins/noatunmadness/madness.plugin new file mode 100644 index 0000000..ddfd136 --- /dev/null +++ b/noatun-plugins/noatunmadness/madness.plugin @@ -0,0 +1,105 @@ +Filename=noatunmadness.la +Author=Charles Samuels +Site=http://noatun.kde.org/ +Email=charles@kde.org +Type=visualization +License=GPL +Name=Madness +Name[ar]=جنون +Name[az]=Dəlilik +Name[br]=Fallentez +Name[bs]=Ludilo +Name[cs]=Šílenost +Name[cy]=Gwallgofrwydd +Name[da]=Galskab +Name[de]=Verrücktheit +Name[el]=Τρέλα +Name[eo]=Delireco +Name[es]=Locura +Name[et]=Hullumeelsus +Name[fa]=دیوانگی +Name[fi]=Hulluus +Name[fy]=Gekheid +Name[gl]=Loucura +Name[hi]=मेडनेस +Name[hr]=Ludilo +Name[ka]=სიგიჟე +Name[km]=ភាពឆ្កួត +Name[lt]=Beprotybė +Name[mk]=Беснило +Name[nds]=Mallheit +Name[ne]=पागलपन +Name[nl]=Gekheid +Name[nn]=Galskap +Name[nso]=Bogafa +Name[pl]=Szaleństwo +Name[pt]=Loucura +Name[pt_BR]=Maldade +Name[ro]=Nebunie +Name[ru]=Безумие +Name[sl]=Norost +Name[sv]=Galenskap +Name[ta]= முட்டாள்தனம் +Name[tg]=Беандешагӣ +Name[tr]=Çılgınlık +Name[uk]=Божевілля +Name[vi]=Chứng điên +Name[xh]=Impambano +Name[zh_CN]=疯狂 +Comment=A weird and annoying scope that moves your windows +Comment[af]='n weird en irriterend skoop wat skuiwe jou vensters +Comment[ar]=ملحق غريب و مزعج يقوم بتحريك نوافذك +Comment[az]=Pəncərələrinizi daşıyan dəlicə və narahat edən dairə +Comment[bg]=Досадна приставка за преместване на прозореца +Comment[bs]=Čudan i neugodan scope koji pomjera rvaše prozore +Comment[ca]=Un estrany i molest calidoscopi que mou les finestres +Comment[cs]=Otravná vizualizace, který hýbe s vašimi okny +Comment[cy]=Sgop annifyr a diflas sy'n symud eich ffenestri +Comment[da]=Et underligt og irriterende virkefelt der flytter dine vinduer +Comment[de]=Ein verrücktes und nervendes Oszilloskop, das Fenster verschiebt +Comment[el]=Ένα περίεργο και ενοχλητικό καλειδοσκόπιο που μετακινεί τα παράθυρά σας +Comment[eo]=Bizara kaj incita vidilo kiu movas viajn fenestrojn +Comment[es]=Algo extraño y fastidioso se mueve por su pantalla +Comment[et]=Veider ja ärritav ostsilloskoop, mis paneb aknad lendlema +Comment[eu]=Zure leihoak mugitzen dituen esparru bitxi eta harrigarria +Comment[fa]=دامنۀ رنجشآور و مرموزی که پنجرههای شما را حرکت میدهد +Comment[fi]=Outo ja rasittava oskiloskooppi, joka liikuttelee ikkunoitasi +Comment[fr]=Un aperçu magique et ennuyeux qui déplace votre fenêtre +Comment[fy]=In maffe en nerveuze Ossilloskoop dy't jo finsters ferpleatst +Comment[ga]=Scóp corr ciapach a bhogann do chuid fuinneog +Comment[gl]=Un osciloscópio estraño e irritante que move as suas fiestras +Comment[he]=תחום מוזר ומעצבן שמזיז את החלונות שלך +Comment[hi]=एक सनकी और चिढ़ाकू स्कोप जो आपके विंडो को खिसकाता है +Comment[hr]=Neobičan i živcirajući osciloskop koji pomiče vaše prozore +Comment[hu]=Egy különleges ablakmozgató vizualizációs modul +Comment[is]=Undarlegur og pirrandi mælir sem færir gluggana þína +Comment[it]=Uno strano e scocciante "scope" che muove le tue finestre +Comment[ja]=奇妙で鬱しくあなたのウィンドウを動かすスコープ +Comment[ka]=უცნაური გამოსახულებები, რომლებიც თქვენს ფანჯრებს გადააადგილებს +Comment[kk]=Терезлеріңізді жылжытатын біртүрлі көрініс +Comment[km]= វិសាលដែលរំខាន និងចំឡែកដែលផ្លាស់ទីបង្អួចរបស់អ្នក +Comment[lt]=Keista ir erzinantis vaizdas, judinantis Jūsų langus +Comment[mk]=Чуден и досаден осцилоскоп што Ви ги движи прозорците +Comment[ms]=Skop yang pelik untuk memerhati pergerakan pada tetingkap anda +Comment[nb]=En rar og irriterende ting som flytter vinduene dine +Comment[nds]=En snaaksch un piesacken Frequenzkieker, de Finster verschufft +Comment[ne]=तपाईँको सञ्झ्याल चलाउने एउटा भाग्य र कष्टप्रद क्षेत्र +Comment[nl]=Een maffe en nerveuze Oscilloscoop die uw vensters verplaatst +Comment[nn]=Ein rar og irriterande ting som flyttar vindauga dine +Comment[pl]=Przesuwa twoje okna w rytm muzyki +Comment[pt]=Um osciloscópio estranho e irritante que move as suas janelas +Comment[pt_BR]= Um escopo estranho que move suas janelas +Comment[ro]=Un modul de vizualizare care mişcă ferestrele +Comment[ru]=Странный зрительный образ, перемещающий ваши окна +Comment[sk]=Šialený a protivný rámec ktorý hýbe vašími oknami. +Comment[sl]=Čudno in nadležno območje, ki premika vaša okna +Comment[sr]=Чудан и иритирајући нишан који помера ваше прозоре +Comment[sr@Latn]=Čudan i iritirajući nišan koji pomera vaše prozore +Comment[sv]=Konstigt och påfrestande oscilloskop som flyttar fönster +Comment[ta]=ஒரு புதிரான வரையெல்லை உங்கள் சாளரத்தை நகர்த்துகிறது +Comment[tg]=Намуди тамошобини аҷиб, ки тирезаҳои шуморо бетартиб мекунад +Comment[tr]=Pencerelerinizi taşıyan garip ve sinir bozucu bir alan +Comment[uk]=Дивний та набридливий моноскоп, що пересуває ваші вікна +Comment[vi]=Ô xem lạ di chuyển các cửa sổ +Comment[xh]=Isibuko esingaqhelekanga nesidikayo sesibuko esi hambisa iiwindow zakho +Comment[zh_CN]=一个会移动您的窗口的奇怪而有讨厌的观测器 |