#ifndef YELLOWNOTES_H #define YELLOWNOTES_H #include #include #include extern "C" { #include "gtk-imports.h" } class YellowNote; 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 _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 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); public: YellowNotes(void *app); ~YellowNotes(); }; #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