Restructure source and resource files (#46)
importantly, res is now res/res and css is now res/css
This commit is contained in:

committed by
GitHub

parent
d88079000a
commit
a51a54bc59
68
src/components/completer.hpp
Normal file
68
src/components/completer.hpp
Normal file
@@ -0,0 +1,68 @@
|
||||
#pragma once
|
||||
#include <gtkmm.h>
|
||||
#include <functional>
|
||||
#include "lazyimage.hpp"
|
||||
#include "discord/snowflake.hpp"
|
||||
|
||||
constexpr static int CompleterImageSize = 24;
|
||||
|
||||
class CompleterEntry : public Gtk::ListBoxRow {
|
||||
public:
|
||||
CompleterEntry(const Glib::ustring &completion, int index);
|
||||
void SetTextColor(int color); // SetText will reset
|
||||
void SetText(const Glib::ustring &text);
|
||||
void SetImage(const Glib::RefPtr<Gdk::Pixbuf> &pb);
|
||||
void SetImage(const std::string &url);
|
||||
void SetAnimation(const std::string &url);
|
||||
|
||||
int GetIndex() const;
|
||||
Glib::ustring GetCompletion() const;
|
||||
|
||||
private:
|
||||
void CheckImage();
|
||||
|
||||
Glib::ustring m_completion;
|
||||
int m_index;
|
||||
Gtk::Box m_box;
|
||||
Gtk::Label *m_text = nullptr;
|
||||
LazyImage *m_img = nullptr;
|
||||
};
|
||||
|
||||
class Completer : public Gtk::Revealer {
|
||||
public:
|
||||
Completer();
|
||||
Completer(const Glib::RefPtr<Gtk::TextBuffer> &buf);
|
||||
|
||||
void SetBuffer(const Glib::RefPtr<Gtk::TextBuffer> &buf);
|
||||
bool ProcessKeyPress(GdkEventKey *e);
|
||||
|
||||
using get_recent_authors_cb = std::function<std::vector<Snowflake>()>;
|
||||
void SetGetRecentAuthors(get_recent_authors_cb cb); // maybe a better way idk
|
||||
using get_channel_id_cb = std::function<Snowflake()>;
|
||||
void SetGetChannelID(get_channel_id_cb cb);
|
||||
|
||||
bool IsShown() const;
|
||||
|
||||
private:
|
||||
CompleterEntry *CreateEntry(const Glib::ustring &completion);
|
||||
void CompleteMentions(const Glib::ustring &term);
|
||||
void CompleteEmojis(const Glib::ustring &term);
|
||||
void CompleteChannels(const Glib::ustring &term);
|
||||
void DoCompletion(Gtk::ListBoxRow *row);
|
||||
|
||||
std::vector<CompleterEntry *> m_entries;
|
||||
|
||||
void OnRowActivate(Gtk::ListBoxRow *row);
|
||||
void OnTextBufferChanged();
|
||||
Glib::ustring GetTerm();
|
||||
|
||||
Gtk::TextBuffer::iterator m_start;
|
||||
Gtk::TextBuffer::iterator m_end;
|
||||
|
||||
Gtk::ScrolledWindow m_scroll;
|
||||
Gtk::ListBox m_list;
|
||||
Glib::RefPtr<Gtk::TextBuffer> m_buf;
|
||||
|
||||
get_recent_authors_cb m_recent_authors_cb;
|
||||
get_channel_id_cb m_channel_id_cb;
|
||||
};
|
Reference in New Issue
Block a user