1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#include <iostream>
#include <gtk/gtk.h>
#include "ppeffect.h"
#include "effects_dialog.h"
#include "effectselector.h"
#include "effectlist.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "gettext.h"
#define _(x) gettext(x)
#define N_(x) gettext_noop(x)
using namespace std;
struct dialogstate
{
PPEffectHeader *header;
GtkWidget *preview;
GdkPixbuf *previewsourcepb;
GtkWidget *availselector;
GtkWidget *currentselector;
};
#if 0
static void add_effect(GtkWidget *w,gpointer userdata)
{
struct dialogstate *ds=(struct dialogstate *)userdata;
EffectListItem *eli;
if((eli=effectselector_get_selected(EFFECTSELECTOR(ds->availselector))))
{
cerr << "Got selection: " << eli->GetName() << endl;
// eli->Action();
// Add effect to PPEffectHeader here.
effectselector_refresh(EFFECTSELECTOR(ds->currentselector));
}
}
static void effect_settings(GtkWidget *w,gpointer userdata)
{
struct dialogstate *ds=(struct dialogstate *)userdata;
EffectListItem *eli;
if((eli=effectselector_get_selected(EFFECTSELECTOR(ds->currentselector))))
{
cerr << "Got selection: " << eli->GetName() << endl;
// eli->Action();
}
}
static void remove_effect(GtkWidget *w,gpointer userdata)
{
struct dialogstate *ds=(struct dialogstate *)userdata;
EffectListItem *eli;
if((eli=effectselector_get_selected(EFFECTSELECTOR(ds->currentselector))))
{
cerr << "Got selection: " << eli->GetName() << endl;
eli->Remove();
effectselector_refresh(EFFECTSELECTOR(ds->currentselector));
}
}
#endif
void EffectsDialog(PPEffectHeader &header,GtkWindow *parent,GdkPixbuf *thumbnail)
{
dialogstate st;
st.header=&header;
st.previewsourcepb=thumbnail;
GtkWidget *dialog;
dialog=gtk_dialog_new_with_buttons(_("Effects..."),
parent,GtkDialogFlags(0),
// GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
GTK_STOCK_OK,GTK_RESPONSE_OK,
NULL);
gtk_window_set_default_size(GTK_WINDOW(dialog),400,400);
st.availselector=effectselector_new();
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),st.availselector,TRUE,TRUE,0);
gtk_widget_show(st.availselector);
gtk_widget_show(dialog);
effectselector_set_current_list(EFFECTSELECTOR(st.availselector),&header);
// effectselector_set_current_list(EFFECTSELECTOR(st.availselector),NULL);
bool done=false;
while(!done)
{
gint result=gtk_dialog_run(GTK_DIALOG(dialog));
switch(result)
{
case GTK_RESPONSE_CANCEL:
cerr << "Clicked Cancel" << endl;
done=true;
break;
case GTK_RESPONSE_OK:
cerr << "Clicked OK" << endl;
done=true;
break;
}
}
gtk_widget_destroy(dialog);
}
|