summaryrefslogtreecommitdiff
path: root/tools/editor/addon_editor_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/editor/addon_editor_plugin.h')
-rw-r--r--tools/editor/addon_editor_plugin.h166
1 files changed, 165 insertions, 1 deletions
diff --git a/tools/editor/addon_editor_plugin.h b/tools/editor/addon_editor_plugin.h
index 3a4086d07c..704874ff15 100644
--- a/tools/editor/addon_editor_plugin.h
+++ b/tools/editor/addon_editor_plugin.h
@@ -7,19 +7,183 @@
#include "scene/gui/line_edit.h"
#include "scene/gui/option_button.h"
#include "scene/gui/tab_container.h"
+#include "scene/gui/panel_container.h"
+#include "scene/gui/link_button.h"
+#include "scene/gui/check_box.h"
+#include "scene/gui/separator.h"
+
+#include "scene/gui/grid_container.h"
+#include "scene/gui/scroll_container.h"
+#include "scene/gui/texture_button.h"
+#include "scene/gui/rich_text_label.h"
#include "editor_plugin_settings.h"
+#include "scene/main/http_request.h"
+
+class EditorAssetLibraryItem : public PanelContainer {
+
+ OBJ_TYPE( EditorAssetLibraryItem, PanelContainer );
+
+ TextureButton *icon;
+ LinkButton* title;
+ LinkButton* category;
+ LinkButton* author;
+ TextureFrame *stars[5];
+ Label* price;
+
+ int asset_id;
+ int category_id;
+ int author_id;
+
+
+ void _asset_clicked();
+ void _category_clicked();
+ void _author_clicked();
+
+
+ void set_image(int p_type,int p_index,const Ref<Texture>& p_image);
+
+protected:
+
+ void _notification(int p_what);
+ static void _bind_methods();
+public:
+
+ void configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost);
+
+
+ EditorAssetLibraryItem();
+};
+
+
+class EditorAddonLibraryItemDescription : public ConfirmationDialog {
+
+ OBJ_TYPE(EditorAddonLibraryItemDescription, ConfirmationDialog);
+
+ EditorAssetLibraryItem *item;
+ RichTextLabel *description;
+ ScrollContainer *previews;
+ HBoxContainer *preview_hb;
+
+ struct Preview {
+ int id;
+ String video_link;
+ Button *button;
+ };
+
+ Vector<Preview> preview_images;
+ TextureFrame *preview;
+
+ void set_image(int p_type,int p_index,const Ref<Texture>& p_image);
+
+protected:
+
+ static void _bind_methods();
+public:
+
+ void configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost,const String& p_description);
+ void add_preview(int p_id, bool p_video,const String& p_url);
+
+ EditorAddonLibraryItemDescription();
+
+};
+
class EditorAddonLibrary : public VBoxContainer {
OBJ_TYPE(EditorAddonLibrary,VBoxContainer);
+ String host;
+
TabContainer *tabs;
EditorPluginSettings *installed;
- VBoxContainer *library;
+ ScrollContainer *library_scroll;
+ VBoxContainer *library_vb;
LineEdit *filter;
OptionButton *categories;
+ OptionButton *repository;
+ OptionButton *sort;
+ CheckBox *reverse;
Button *search;
+ HBoxContainer *contents;
+
+ HBoxContainer *asset_top_page;
+ GridContainer *asset_items;
+ HBoxContainer *asset_bottom_page;
+
+ HTTPRequest *request;
+
+ enum SortOrder {
+ SORT_RATING,
+ SORT_DOWNLOADS,
+ SORT_NAME,
+ SORT_COST,
+ SORT_UPDATED,
+ SORT_MAX
+ };
+
+
+ static const char* sort_key[SORT_MAX];
+ static const char* sort_text[SORT_MAX];
+
+
+ ///MainListing
+
+ enum ImageType {
+ IMAGE_QUEUE_ICON,
+ IMAGE_QUEUE_THUMBNAIL,
+ IMAGE_QUEUE_SCREENSHOT,
+
+ };
+
+ struct ImageQueue {
+
+ bool active;
+ int queue_id;
+ int asset_id;
+ ImageType image_type;
+ int image_index;
+ HTTPRequest *request;
+ ObjectID target;
+ };
+
+ int last_queue_id;
+ Map<int,ImageQueue> image_queue;
+
+
+ void _image_request_completed(int p_status, int p_code, const StringArray& headers, const ByteArray& p_data, int p_queue_id);
+ void _request_image(ObjectID p_for,int p_asset_id,ImageType p_type,int p_image_index);
+ void _update_image_queue();
+
+ HBoxContainer* _make_pages(int p_page, int p_max_page, int p_page_len, int p_total_items, int p_current_items);
+
+ //
+ EditorAddonLibraryItemDescription *description;
+
+ String current_request;
+ //
+
+ enum RequestType {
+ REQUESTING_NONE,
+ REQUESTING_CONFIG,
+ };
+
+
+ RequestType requesting;
+
+ void _select_author(int p_id);
+ void _select_category(int p_id);
+ void _select_asset(int p_id);
+
+ void _search(int p_page=0);
+ void _api_request(const String& p_request, const String &p_arguments="");
+ void _http_request_completed(int p_status, int p_code, const StringArray& headers, const ByteArray& p_data);
+
+friend class EditorAddonLibraryItemDescription;
+friend class EditorAssetLibraryItem;
+protected:
+ static void _bind_methods();
+ void _notification(int p_what);
public:
EditorAddonLibrary();
};