#ifndef YELLOWNOTES_H #define YELLOWNOTES_H #include #include #include extern "C" { #include "gtk-imports.h" } class YellowNote; class ColorSet; typedef enum { DARK = 0, FIRST= DARK, YELLOW, ORANGE, BLUE, CYAAN, GREEN, RED, GREY, LAST = GREY } ColorType_t; class YellowNotes { private: void *_tray_menu; void *_app; void *_dlg; void *_langs; std::list _color_sets; std::list _notes; int _font_size; GtkWindow *_toplevel; std::unordered_map _cfg; private: void loadConfig(); void saveConfig(); public: void loadNotes(); void clearNotes(); public: std::string imageFile(const char *name); std::string appDir(); std::string notesDir(); std::string css(ColorType_t type); int fontSize(); int iconSize(); GtkWindow *topLevel(); public: void popupTrayMenu(void *sender); void newNote(void *sender); void showNotes(void *sender); void notesToDesktop(void *sender); void notesFromDesktop(void *sender); void reloadNotes(void *sender); void quit(void *sender); void topLevelHidden(GtkWidget *sender); void setup(void *sender); void setupClose(GtkWidget *sender); void setupCancel(GtkWidget *sender); bool setupDel(GtkWidget *sender, void *evt); void remove(YellowNote *n); public: std::string currentLang(); void setCurrentLang(const std::string &l); bool cfgOnDesktop(); void setCfgOnDesktop(bool y); std::string getFgColor(ColorType_t type); std::string getBgColor(ColorType_t type); void setFgColor(ColorType_t type, const std::string &col); void setBgColor(ColorType_t type, const std::string &col); std::string fromRGBA(const GdkRGBA &rgba); void toRGBA(const std::string &col, GdkRGBA &rgba); public: YellowNotes(void *app); ~YellowNotes(); void colorSet(void *sender); }; #define YELLOWNOTES(obj) reinterpret_cast(obj) #define SIGNAL(type, func, member) \ static void func(GObject *obj, gpointer user_data) { type *o = reinterpret_cast(user_data); o->member(obj); } #define BSIGNAL(type, func, member) \ static gboolean func(GObject *obj, gpointer user_data) { std::cout << user_data << std::endl; type *o = reinterpret_cast(user_data); return o->member(obj); } #define SIGNAL2(type, func, member, argtype) \ static void func(GObject *obj, void *arg, gpointer user_data) { type *o = reinterpret_cast(user_data); o->member(obj, reinterpret_cast(arg)); } #define BSIGNAL2(type, func, member, argtype) \ static gboolean func(GObject *obj, void *arg, gpointer user_data) { type *o = reinterpret_cast(user_data); return o->member(obj, reinterpret_cast(arg)); } #endif // YELLOWNOTES_H