self
}
+ pub fn onbuttonpress_action(&mut self, action: &str) -> &mut Self {
+ let cstr = CString::new(action).unwrap();
+ unsafe {
+ ui_imageviewer_args_set_onbuttonpress_action(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
pub fn onbuttonrelease<F>(&mut self, f: F) -> &mut Self
where F: FnMut(&mut event::Event<T>) + 'static {
let wrapper = Box::new(EventWrapper::new(f) );
self
}
+ pub fn onbuttonrelease_action(&mut self, action: &str) -> &mut Self {
+ let cstr = CString::new(action).unwrap();
+ unsafe {
+ ui_imageviewer_args_set_onbuttonrelease_action(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
pub fn visibility_states<S: Copy + Into<i32>>(&mut self, states: &[S]) -> &mut Self {
let states: Vec<i32> = states.iter().copied().map(Into::into).collect();
unsafe {
fn ui_imageviewer_args_set_image_padding_bottom(args: *mut UiImageViewerArgs, value: c_int);
fn ui_imageviewer_args_set_onbuttonpress(args: *mut UiImageViewerArgs, callback: UiCallback);
fn ui_imageviewer_args_set_onbuttonpressdata(args: *mut UiImageViewerArgs, data: *const c_void);
+ fn ui_imageviewer_args_set_onbuttonpress_action(args: *mut UiImageViewerArgs, action: *const c_char);
fn ui_imageviewer_args_set_onbuttonrelease(args: *mut UiImageViewerArgs, callback: UiCallback);
fn ui_imageviewer_args_set_onbuttonreleasedata(args: *mut UiImageViewerArgs, data: *const c_void);
+ fn ui_imageviewer_args_set_onbuttonrelease_action(args: *mut UiImageViewerArgs, action: *const c_char);
fn ui_imageviewer_args_set_visibility_states(args: *mut UiImageViewerArgs, states: *const c_int, numstates: c_int);
fn ui_imageviewer_args_free(args: *mut UiImageViewerArgs);
}
+/* ---------------------------- UiHeaderbarArgs ---------------------------- */
+
+UiHeaderbarArgs* ui_headerbar_args_new(void) {
+ UiHeaderbarArgs *args = malloc(sizeof(UiHeaderbarArgs));
+ memset(args, 0, sizeof(UiHeaderbarArgs));
+ return args;
+}
+
+void ui_headerbar_args_set_fill(UiHeaderbarArgs *args, UiBool fill) {
+ args->fill = fill;
+}
+
+void ui_headerbar_args_set_hexpand(UiHeaderbarArgs *args, UiBool value) {
+ args->hexpand = value;
+}
+
+void ui_headerbar_args_set_vexpand(UiHeaderbarArgs *args, UiBool value) {
+ args->vexpand = value;
+}
+
+void ui_headerbar_args_set_hfill(UiHeaderbarArgs *args, UiBool value) {
+ args->hfill = value;
+}
+
+void ui_headerbar_args_set_vfill(UiHeaderbarArgs *args, UiBool value) {
+ args->vfill = value;
+}
+
+void ui_headerbar_args_set_override_defaults(UiHeaderbarArgs *args, UiBool value) {
+ args->override_defaults = value;
+}
+
+void ui_headerbar_args_set_margin(UiHeaderbarArgs *args, int value) {
+ args->margin = value;
+}
+
+void ui_headerbar_args_set_margin_left(UiHeaderbarArgs *args, int value) {
+ args->margin_left = value;
+}
+
+void ui_headerbar_args_set_margin_right(UiHeaderbarArgs *args, int value) {
+ args->margin_right = value;
+}
+
+void ui_headerbar_args_set_margin_top(UiHeaderbarArgs *args, int value) {
+ args->margin_top = value;
+}
+
+void ui_headerbar_args_set_margin_bottom(UiHeaderbarArgs *args, int value) {
+ args->margin_bottom = value;
+}
+
+void ui_headerbar_args_set_colspan(UiHeaderbarArgs *args, int colspan) {
+ args->colspan = colspan;
+}
+
+void ui_headerbar_args_set_rowspan(UiHeaderbarArgs *args, int rowspan) {
+ args->rowspan = rowspan;
+}
+
+void ui_headerbar_args_set_name(UiHeaderbarArgs *args, const char *name) {
+ args->name = strdup(name);
+}
+
+void ui_headerbar_args_set_style_class(UiHeaderbarArgs *args, const char *classname) {
+ args->style_class = strdup(classname);
+}
+
+void ui_headerbar_args_set_showtitle(UiHeaderbarArgs *args, UiBool value) {
+ args->showtitle = value;
+}
+
+void ui_headerbar_args_set_showwindowbuttons(UiHeaderbarArgs *args, UiBool value) {
+ args->showwindowbuttons = value;
+}
+
+void ui_headerbar_args_set_alternative(UiHeaderbarArgs *args, UiHeaderbarAlternative alt) {
+ args->alternative = alt;
+}
+
+void ui_headerbar_args_set_alt_spacing(UiHeaderbarArgs *args, int spacing) {
+ args->alt_spacing = spacing;
+}
+
+void ui_headerbar_args_free(UiHeaderbarArgs *args) {
+ free((void*)args->name);
+ free((void*)args->style_class);
+ free(args);
+}
+
+
+
/* ---------------------------- UiMenuItemArgs ---------------------------- */
UiMenuItemArgs* ui_menuitem_args_new(void) {
args->onbuttonpressdata = onbuttonpressdata;
}
+void ui_imageviewer_args_set_onbuttonpress_action(UiImageViewerArgs *args, const char *action) {
+ args->onbuttonpress_action = strdup(action);
+}
+
void ui_imageviewer_args_set_onbuttonrelease(UiImageViewerArgs *args, ui_callback callback) {
args->onbuttonrelease = callback;
}
args->onbuttonreleasedata = onbuttonreleasedata;
}
+void ui_imageviewer_args_set_onbuttonrelease_action(UiImageViewerArgs *args, const char *action) {
+ args->onbuttonrelease_action = strdup(action);
+}
+
void ui_imageviewer_args_free(UiImageViewerArgs *args) {
free((void*)args->name);
free((void*)args->style_class);
free((void*)args->varname);
free((void*)args->visibility_states);
+ free((void*)args->onbuttonpress_action);
+ free((void*)args->onbuttonrelease_action);
free(args);
}
UIEXPORT void ui_dialogwindow_args_set_onclick(UiDialogWindowArgs *args, ui_callback cb);
UIEXPORT void ui_dialogwindow_args_set_onclickdata(UiDialogWindowArgs *args, void *userdata);
UIEXPORT void ui_dialogwindow_args_free(UiDialogWindowArgs *args);
+
+UIEXPORT UiHeaderbarArgs* ui_headerbar_args_new(void);
+UIEXPORT void ui_headerbar_args_set_fill(UiHeaderbarArgs *args, UiBool fill);
+UIEXPORT void ui_headerbar_args_set_hexpand(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_vexpand(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_hfill(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_vfill(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_override_defaults(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_margin(UiHeaderbarArgs *args, int value);
+UIEXPORT void ui_headerbar_args_set_margin_left(UiHeaderbarArgs *args, int value);
+UIEXPORT void ui_headerbar_args_set_margin_right(UiHeaderbarArgs *args, int value);
+UIEXPORT void ui_headerbar_args_set_margin_top(UiHeaderbarArgs *args, int value);
+UIEXPORT void ui_headerbar_args_set_margin_bottom(UiHeaderbarArgs *args, int value);
+UIEXPORT void ui_headerbar_args_set_colspan(UiHeaderbarArgs *args, int colspan);
+UIEXPORT void ui_headerbar_args_set_rowspan(UiHeaderbarArgs *args, int rowspan);
+UIEXPORT void ui_headerbar_args_set_name(UiHeaderbarArgs *args, const char *name);
+UIEXPORT void ui_headerbar_args_set_style_class(UiHeaderbarArgs *args, const char *classname);
+UIEXPORT void ui_headerbar_args_set_showtitle(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_showwindowbuttons(UiHeaderbarArgs *args, UiBool value);
+UIEXPORT void ui_headerbar_args_set_alternative(UiHeaderbarArgs *args, UiHeaderbarAlternative alt);
+UIEXPORT void ui_headerbar_args_set_alt_spacing(UiHeaderbarArgs *args, int spacing);
+UIEXPORT void ui_headerbar_args_free(UiHeaderbarArgs *args);
UIEXPORT UiMenuItemArgs* ui_menuitem_args_new(void);
UIEXPORT void ui_menuitem_args_set_label(UiMenuItemArgs *args, const char *label);
UIEXPORT void ui_imageviewer_args_set_contextmenu(UiImageViewerArgs *args, UiMenuBuilder *menubuilder);
UIEXPORT void ui_imageviewer_args_set_onbuttonpress(UiImageViewerArgs *args, ui_callback callback);
UIEXPORT void ui_imageviewer_args_set_onbuttonpressdata(UiImageViewerArgs *args, void *onbuttonpressdata);
+UIEXPORT void ui_imageviewer_args_set_onbuttonpress_action(UiImageViewerArgs *args, const char *action);
UIEXPORT void ui_imageviewer_args_set_onbuttonrelease(UiImageViewerArgs *args, ui_callback callback);
UIEXPORT void ui_imageviewer_args_set_onbuttonreleasedata(UiImageViewerArgs *args, void *onbuttonreleasedata);
+UIEXPORT void ui_imageviewer_args_set_onbuttonrelease_action(UiImageViewerArgs *args, const char *action);
UIEXPORT void ui_imageviewer_args_free(UiImageViewerArgs *args);
UIEXPORT UiWebviewArgs* ui_webview_args_new(void);
#include "widget.h"
#include "../common/context.h"
#include "../common/object.h"
+#include "../common/action.h"
static void imageviewer_destroy(UiImageViewer *iv) {
if(iv->pixbuf) {
g_object_unref(iv->pixbuf);
}
+ free(iv->onbuttonpress_action);
+ free(iv->onbuttonrelease_action);
free(iv);
}
imgviewer->obj = obj;
imgviewer->onbuttonpress = args->onbuttonpress;
imgviewer->onbuttonpressdata = args->onbuttonpressdata;
+ imgviewer->onbuttonpress_action = args->onbuttonpress_action ? strdup(args->onbuttonpress_action) : NULL;
imgviewer->onbuttonrelease = args->onbuttonrelease;
imgviewer->onbuttonreleasedata = args->onbuttonreleasedata;
+ imgviewer->onbuttonrelease_action = args->onbuttonrelease_action ? strdup(args->onbuttonrelease_action) : NULL;
if(args->image_padding > 0) {
imgviewer->padding_left = args->image_padding;
imgviewer->padding_right = args->image_padding;
GtkGestureClick *gesture,
UiImageViewer *imgviewer,
ui_callback callback,
- void *userdata)
+ void *userdata,
+ const char *action)
{
UiEvent event;
event.obj = imgviewer->obj;
event.eventdatatype = 0;
event.intval = gtk_gesture_single_get_current_button(GTK_GESTURE_SINGLE(gesture));
event.set = 0;
- callback(&event, userdata);
+
+ if(callback) {
+ callback(&event, userdata);
+ }
+ if(action) {
+ uic_action_callback(&event, action);
+ }
}
void ui_imageviewer_pressed_cb(
gpointer userdata)
{
UiImageViewer *imgviewer = userdata;
- if(imgviewer->onbuttonpress) {
- imgviewer_button_event(self, imgviewer, imgviewer->onbuttonpress, imgviewer->onbuttonpressdata);
- }
+ imgviewer_button_event(self, imgviewer, imgviewer->onbuttonpress, imgviewer->onbuttonpressdata, imgviewer->onbuttonpress_action);
}
void ui_imageviewer_released_cb(
gpointer userdata)
{
UiImageViewer *imgviewer = userdata;
- if(imgviewer->onbuttonrelease) {
- imgviewer_button_event(self, imgviewer, imgviewer->onbuttonrelease, imgviewer->onbuttonreleasedata);
- }
+ imgviewer_button_event(self, imgviewer, imgviewer->onbuttonrelease, imgviewer->onbuttonreleasedata, imgviewer->onbuttonrelease_action);
}
#else
ui_callback onbuttonpress;
void *onbuttonpressdata;
+ char *onbuttonpress_action;
ui_callback onbuttonrelease;
void *onbuttonreleasedata;
+ char *onbuttonrelease_action;
} UiImageViewer;
void ui_cairo_draw_image(UiImageViewer *imgviewer, cairo_t *cr, int width, int height);
ui_callback onbuttonpress;
void *onbuttonpressdata;
+ const char *onbuttonpress_action;
ui_callback onbuttonrelease;
void *onbuttonreleasedata;
+ const char *onbuttonrelease_action;
const int *visibility_states;
} UiImageViewerArgs;