131 lines
3.4 KiB
C++
131 lines
3.4 KiB
C++
#ifndef YELLOWNOTES_H
|
|
#define YELLOWNOTES_H
|
|
|
|
#include <string>
|
|
#include <list>
|
|
#include <unordered_map>
|
|
|
|
extern "C" {
|
|
#include "gtk-imports.h"
|
|
}
|
|
|
|
class YellowNote;
|
|
class SettingContainer;
|
|
|
|
#define YELLOWNOTE_MAJOR "1"
|
|
#define YELLOWNOTE_MINOR "0"
|
|
#define YELLOWNOTE_PATCH "3"
|
|
#define YELLOWNOTE_VERSION YELLOWNOTE_MAJOR "." YELLOWNOTE_MINOR "." YELLOWNOTE_PATCH
|
|
#define YELLOWNOTE_FILE_VERSION 3
|
|
|
|
|
|
|
|
typedef enum {
|
|
DARK = 0,
|
|
FIRST= DARK,
|
|
YELLOW,
|
|
ORANGE,
|
|
BLUE,
|
|
CYAAN,
|
|
GREEN,
|
|
RED,
|
|
GREY,
|
|
LAST = GREY
|
|
} ColorType_t;
|
|
|
|
class Geom_t {
|
|
public:
|
|
int x, y, width, height;
|
|
};
|
|
|
|
class YellowNotes
|
|
{
|
|
private:
|
|
void *_tray_menu;
|
|
void *_app;
|
|
void *_dlg;
|
|
void *_langs;
|
|
|
|
std::list<SettingContainer *> _settings_containers;
|
|
std::list<YellowNote *> _notes;
|
|
int _font_size;
|
|
GtkWindow *_toplevel;
|
|
std::unordered_map<std::string, std::string> _cfg;
|
|
|
|
std::list<Geom_t> _monitors;
|
|
|
|
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();
|
|
void colorSet(void *sender);
|
|
void setFontSize(int size);
|
|
|
|
public:
|
|
void popupTrayMenu(void *sender);
|
|
bool popupTrayMenuBtn(void *sender, GdkEventButton *evt);
|
|
void newNote(void *sender);
|
|
void showNotes(void *sender);
|
|
void notesToDesktop(void *sender);
|
|
void notesFromDesktop(void *sender);
|
|
void reloadNotes(void *sender);
|
|
void monitorsChanged(void *sender);
|
|
void quit(void *sender);
|
|
void topLevelHidden(GtkWidget *sender);
|
|
void setup(void *sender);
|
|
void reOrder(void *sender);
|
|
void setupClose(GtkWidget *sender);
|
|
void setupCancel(GtkWidget *sender);
|
|
bool setupDel(GtkWidget *sender, void *evt);
|
|
void remove(YellowNote *n);
|
|
void checkMonitors();
|
|
void about(void *sender);
|
|
|
|
|
|
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);
|
|
void updateWidgetCss(GtkWidget *w, ColorType_t col);
|
|
GtkWidget *getWindow();
|
|
|
|
public:
|
|
YellowNotes(void *app);
|
|
~YellowNotes();
|
|
};
|
|
|
|
#define YELLOWNOTES(obj) reinterpret_cast<YellowNotes *>(obj)
|
|
#define SIGNAL(type, func, member) \
|
|
static void func(GObject *obj, gpointer user_data) { type *o = reinterpret_cast<type *>(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<type *>(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<type *>(user_data); o->member(obj, reinterpret_cast<argtype *>(arg)); }
|
|
|
|
#define BSIGNAL2(type, func, member, argtype) \
|
|
static gboolean func(GObject *obj, void *arg, gpointer user_data) { \
|
|
type *o = reinterpret_cast<type *>(user_data); return o->member(obj, reinterpret_cast<argtype *>(arg)); }
|
|
|
|
#endif // YELLOWNOTES_H
|