master #9

Merged
asmeron merged 3 commits from YanTheKaller/libublsettings-gtk3:master into master 2 years ago

@ -4,6 +4,7 @@
static render_data render;
// vte section
#ifdef VTE_INCLUDE
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
@ -101,7 +102,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
gtk_widget_show_all(terminal);
}
#endif
// Window config functions
// Window config section
#define check_window_config_setup if(__yon_window_config_target_window)
@ -433,6 +434,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosY"),"window",&Y,YON_TYPE_INT);
}
// gtk misc section
GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){
GtkWidget *menu_item = gtk_menu_item_new();
gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom");
@ -461,9 +463,6 @@ GtkWidget *yon_ubl_menu_item_documentation_new(char *buttonname){
return menu_item;
}
// other Gtk functions
int yon_gtk_combo_box_fill(GtkWidget *combo, config_str parameters,int size){
if (combo&&parameters){
for (int i=0;i<size;i++){
@ -581,6 +580,7 @@ void yon_gtk_toggle_button_set_inactive_from_toggle_button(GtkToggleButton *self
}
}
// status section
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path)
{
gtk_overlay_add_overlay(GTK_OVERLAY(Overlay), Head);
@ -829,6 +829,7 @@ void yon_ubl_status_box_spawn(GtkContainer *container,char *display_text, int ti
}
}
// socket section
void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id){
if (main_window&&socket_main_id>-1){
gtk_widget_hide(gtk_widget_get_toplevel(main_window));
@ -858,7 +859,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
}
gtk_style_context_add_class(gtk_widget_get_style_context(left_window),"inherited");
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(left_window)),left_window);
gtk_box_pack_end(GTK_BOX(box),left_window,0,0,5);
gtk_box_pack_start(GTK_BOX(box),left_window,0,0,5);
}
if (socket_right_id>-1&&right_window){
plug_right=gtk_plug_new(socket_right_id);
@ -881,7 +882,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
}
gtk_style_context_add_class(gtk_widget_get_style_context(right_window),"inherited");
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(right_window)),right_window);
gtk_box_pack_start(GTK_BOX(box),right_window,0,0,5);
gtk_box_pack_end(GTK_BOX(box),right_window,0,0,5);
}
g_object_ref(main_window);
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(main_window)),main_window);
@ -890,6 +891,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
}
}
// webkit section
#ifdef WEBKIT_INCLUDE
void yon_ubl_browser_window_open(char *link, char *browser_window_name){
@ -918,4 +920,82 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name){
yon_launch(command);
}
#endif
// rmb menu section
gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){
if (self){};
if (event->button==3){
gtk_widget_show_all(window->menu);
gtk_menu_popup_at_pointer(GTK_MENU(window->menu),NULL);
return 0;
}
return 0;
}
rmb_menu_window *yon_rmb_menu_new(){
rmb_menu_window *window = malloc(sizeof(rmb_menu_window));
window->menu=gtk_menu_new();
gtk_menu_set_reserve_toggle_size(GTK_MENU(window->menu),0);
window->buttons=NULL;
return window;
}
rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, const char *button_label, const char *icon_name, GCallback function, gpointer data,...){
if (target_widget){
rmb_menu_window *window = yon_rmb_menu_new();
{
GtkWidget *menu_item = gtk_menu_item_new();
GtkWidget *content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
gtk_container_add(GTK_CONTAINER(menu_item),content_box);
GtkWidget *image=NULL;
if (!yon_char_is_empty(icon_name)){
image=gtk_image_new_from_icon_name(icon_name,GTK_ICON_SIZE_BUTTON);
gtk_box_pack_start(GTK_BOX(content_box),image,0,0,0);
gtk_widget_show(image);
}
GtkWidget *label = gtk_label_new(button_label);
gtk_box_pack_start(GTK_BOX(content_box),label,0,0,0);
if (function){
g_signal_connect(G_OBJECT(menu_item),"activate",function,data);
}
yon_dictionary_add_or_create_if_exists_with_data(window->buttons,(char*)button_label,menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(window->menu),menu_item);
}
va_list list;
va_start(list,data);
const char *current_label, *current_icon;
GCallback current_function;
gpointer *current_data;
while ((current_label=va_arg(list,const char*))){
current_icon=va_arg(list,const char*);
current_function=va_arg(list,GCallback);
current_data=va_arg(list,gpointer);
GtkWidget *menu_item = gtk_menu_item_new();
GtkWidget *content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
gtk_container_add(GTK_CONTAINER(menu_item),content_box);
GtkWidget *image=NULL;
if (!yon_char_is_empty(current_icon)){
image=gtk_image_new_from_icon_name(current_icon,GTK_ICON_SIZE_BUTTON);
gtk_box_pack_start(GTK_BOX(content_box),image,0,0,0);
gtk_widget_show(image);
}
GtkWidget *label = gtk_label_new(current_label);
gtk_box_pack_start(GTK_BOX(content_box),label,0,0,0);
if (current_function){
g_signal_connect(G_OBJECT(menu_item),"activate",current_function,current_data);
}
yon_dictionary_add_or_create_if_exists_with_data(window->buttons,(char*)current_label,menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(window->menu),menu_item);
}
g_signal_connect(G_OBJECT(target_widget),"button-press-event",G_CALLBACK(on_rmb_menu_open),window);
}
}
#endif

@ -425,4 +425,11 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name);
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#endif
#endif
// rmb menu section
typedef struct {
GtkWidget *menu;
dictionary *buttons;
} rmb_menu_window;
rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, const char *button_label, const char *icon_name, GCallback function, gpointer data,...);
#endif
Loading…
Cancel
Save