You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
2.4 KiB

#include "SidebarPreviewLayers.h"
#include "SidebarPreviewLayerEntry.h"
#include "control/Control.h"
#include "control/PdfCache.h"
#include <i18n.h>
SidebarPreviewLayers::SidebarPreviewLayers(Control* control, GladeGui* gui, SidebarToolbar* toolbar)
: SidebarPreviewBase(control, gui, toolbar),
displayedPage(0)
{
XOJ_INIT_TYPE(SidebarPreviewLayers);
}
SidebarPreviewLayers::~SidebarPreviewLayers()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
XOJ_RELEASE_TYPE(SidebarPreviewLayers);
}
string SidebarPreviewLayers::getName()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
return _("Layer Preview");
}
string SidebarPreviewLayers::getIconName()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
return "layer.svg";
}
void SidebarPreviewLayers::updatePreviews()
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
// clear old previews
for (SidebarPreviewBaseEntry* p : this->previews)
{
delete p;
}
this->previews.clear();
Document* doc = this->getControl()->getDocument();
int len = doc->getPageCount();
if (displayedPage < 0 || displayedPage >= len)
{
return;
}
PageRef page = doc->getPage(displayedPage);
int layerCount = page->getLayerCount();
for (int i = layerCount - 1; i >= 0; i--)
{
SidebarPreviewBaseEntry* p = new SidebarPreviewLayerEntry(this, page, i);
this->previews.push_back(p);
gtk_layout_put(GTK_LAYOUT(this->iconViewPreview), p->getWidget(), 0, 0);
}
// background
SidebarPreviewBaseEntry* p = new SidebarPreviewLayerEntry(this, page, -1);
this->previews.push_back(p);
gtk_layout_put(GTK_LAYOUT(this->iconViewPreview), p->getWidget(), 0, 0);
layout();
}
void SidebarPreviewLayers::pageSelected(int page)
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
displayedPage = page;
updatePreviews();
}
void SidebarPreviewLayers::pageSizeChanged(int page)
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
if (displayedPage == page)
{
updatePreviews();
}
}
void SidebarPreviewLayers::pageChanged(int page)
{
XOJ_CHECK_TYPE(SidebarPreviewLayers);
printf("->SidebarPreviewLayers::pageChanged(%i)\n", page);
if (displayedPage == page)
{
printf("->current page\n");
// Document* doc = this->getControl()->getDocument();
// PageRef page = doc->getPage(displayedPage);
// int layerCount = page->getLayerCount();
// if (layerCount + 1 == this->previews.size())
// {
// updatePreviews();
// }
// for (SidebarPreviewBaseEntry* p : this->previews)
// {
// p->repaint();
// }
}
}