@ -69,7 +69,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
vte_terminal_set_size ( VTE_TERMINAL ( terminal ) , 10 , 15 ) ;
VtePty * pty = vte_pty_new_sync ( VTE_PTY_DEFAULT , NULL , NULL ) ;
vte_terminal_set_pty ( VTE_TERMINAL ( terminal ) , pty ) ;
char * install_command = yon_char_unite ( " clear;tput cup 0 0 && tput ed && " , command , " ; s leep 5; s tty -echo; unset PS1" , " \n " , NULL ) ;
char * install_command = yon_char_unite ( " clear;tput cup 0 0 && tput ed && " , command , " ; s tty -echo; unset PS1" , " \n " , NULL ) ;
if ( endwork_function )
g_signal_connect ( G_OBJECT ( terminal ) , " child-exited " , G_CALLBACK ( endwork_function ) , endwork_function_argument ) ;
vte_terminal_spawn_async ( VTE_TERMINAL ( terminal ) ,
@ -100,6 +100,31 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
vte_terminal_set_scroll_on_keystroke ( VTE_TERMINAL ( terminal ) , TRUE ) ;
gtk_widget_show_all ( terminal ) ;
}
void yon_gtk_set_scroll ( GtkWidget * self , GdkEventScroll * event , GtkAdjustment * adjustment ) {
if ( self ) { } ;
gdouble val = gtk_adjustment_get_value ( adjustment ) ;
gdouble lower = gtk_adjustment_get_lower ( adjustment ) ;
gdouble upper = gtk_adjustment_get_upper ( adjustment ) ;
switch ( event - > direction ) {
case GDK_SCROLL_DOWN :
val + = 2 ;
if ( val > upper ) val = upper ;
break ;
case GDK_SCROLL_UP :
val - = 2 ;
if ( val < lower ) val = lower ;
break ;
default :
}
gtk_adjustment_set_value ( adjustment , val ) ;
}
void yon_gtk_widget_set_scroll_window_for_scroll ( GtkWidget * target , GtkScrollbar * scroll ) {
GtkAdjustment * adjustment = gtk_range_get_adjustment ( GTK_RANGE ( scroll ) ) ;
g_signal_connect ( G_OBJECT ( target ) , " scroll-event " , G_CALLBACK ( yon_gtk_set_scroll ) , adjustment ) ;
}
// Window config section
# define check_window_config_setup if(__yon_window_config_target_window)
@ -257,7 +282,9 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
g_value_set_string ( val , g_key_file_get_string ( __yon_window_config_file , " window " , param - > parameter_name , NULL ) ) ;
break ;
case YON_TYPE_INT :
g_value_set_int ( val , g_key_file_get_integer ( __yon_window_config_file , " window " , param - > parameter_name , NULL ) ) ;
int output = g_key_file_get_integer ( __yon_window_config_file , " window " , param - > parameter_name , NULL ) ;
if ( ! output ) output = - 1 ;
g_value_set_int ( val , output ) ;
break ;
case YON_TYPE_BOOLEAN :
gboolean res = g_key_file_get_boolean ( __yon_window_config_file , " window " , param - > parameter_name , NULL ) ;
@ -332,6 +359,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
yon_dictionary_add_or_create_if_exists_with_data ( __yon_main_window_config . deleted_parameters , param - > parameter_name , param ) ;
}
int yon_window_config_get_parameter ( char * section , char * config_parameter , void * return_value , enum YON_TYPE type ) {
GError * err = NULL ;
switch ( type ) {
@ -926,7 +954,7 @@ typedef int (*RmbCheck)(void*);
gboolean on_rmb_menu_open ( GtkWidget * self , GdkEventButton * event , rmb_menu_window * window ) {
int ( * func ) ( void * ) = ( RmbCheck ) ( window - > show_function ) ;
if ( func ( window - > show_data ) ) {
if ( ! func | | func ( window - > show_data ) ) {
if ( self ) { } ;
if ( event - > button = = 3 ) {
@ -969,6 +997,8 @@ rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (show_function
if ( function ) {
g_signal_connect ( G_OBJECT ( menu_item ) , " activate " , function , data ) ;
} else {
gtk_widget_set_sensitive ( menu_item , 0 ) ;
}
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 ) ;
@ -979,31 +1009,74 @@ rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (show_function
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 ) ;
if ( current_label ) {
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 ) ;
} else {
gtk_widget_set_sensitive ( menu_item , 0 ) ;
}
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 ) ;
gtk_widget_show ( menu_item ) ;
}
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 ) ;
return window ;
}
}
// GtkEntry section
// struct entry_pattern_data {
// GtkEntry *entry;
// char *pattern; // %d %s
// };
// char *yon_gtk_entry_pattern_format(GtkWidget *target, struct entry_pattern_data *data){
// if (target){
// const char *entry_data = gtk_entry_get_text(target);
// int next_track=0;
// for (int i=0; i<strlen(data->pattern);i++){
// char target_letter=-1;
// target_letter = ;
// switch (data->pattern[i]){
// case '%':next_track=1;
// break;
// case 'd':if (next_track){
// }
// break;
// case 's':
// break;
// default:
// }
// }
// };
// }
// void yon_gtk_entry_set_pattern(GtkEntry *entry, char *pattern){
// struct entry_pattern_data *data = malloc(sizeof(struct entry_pattern_data));
// data->entry=entry;
// data->pattern=pattern;
// char *current_text = gtk_entry_get_text(entry);
// }
# endif