void update_3270_toggle_action(int toggle, int value) { const gchar *name = get_toggle_name(toggle); GtkAction *action; gchar *ptr; ptr = g_strconcat("Toggle",name,NULL); action = get_action_by_name(ptr); g_free(ptr); // Update toggle buttons if(action) gtk_toggle_action_set_active((GtkToggleAction *) action,value); // Update toolbar items ptr = g_strconcat("ToggleReset",name,NULL); action = get_action_by_name(ptr); g_free(ptr); if(action) gtk_action_set_visible(action,value ? TRUE : FALSE); ptr = g_strconcat("ToggleSet",name,NULL); action = get_action_by_name(ptr); g_free(ptr); if(action) gtk_action_set_visible(action,value ? FALSE : TRUE); }
LOCAL_EXTERN void gui_toogle_set_visible(enum GUI_TOGGLE id, gboolean visible) { gchar *name = g_strconcat("Toggle",gui_toggle_info[id].name,NULL); GtkAction *action = get_action_by_name(name); if(action) gtk_action_set_visible(action,visible); g_free(name); }
int main( int argc, char **argv ) { int i ; ASBiDirElem *curr; char *command; action_t *a; ASWinCommandState WinCommandState ; InitMyApp (CLASS_WINCOMMAND, argc, argv, NULL, NULL, OPTION_SINGLE|OPTION_RESTART ); ConnectX( ASDefaultScr, 0 ); ASBiDirList *operations = create_asbidirlist( NULL ); /* Initialize State */ memset( &WinCommandState, 0x00, sizeof(WinCommandState)); /* Traverse arguments */ for( i = 1 ; i< argc ; ++i) { if(argv[i] == NULL) continue; /* If it's a flag */ if(argv[i][0] == '-') { switch( set_WinCommandParam( &WinCommandState, argv[i], (i+1<argc)?argv[i+1]:NULL ) ) { case ASWC_BadParam : case ASWC_BadVal : fprintf( stderr, "bad parameter [%s]\n", argv[i] ); break; case ASWC_Ok_ValUsed : ++i; case ASWC_Ok_ValUnused : break ; } }else { LOCAL_DEBUG_OUT("Adding operation: %s", argv[i]); append_bidirelem(operations, argv[i]); } } if( WinCommandState.pattern == NULL) WinCommandState.pattern = mystrdup(DEFAULT_PATTERN); if( operations->count > 0 ) { ascom_init(); ascom_update_winlist(); /* execute default_handlers */ for( curr = operations->head; curr != NULL; curr = curr->next) if ( (a = get_action_by_name( (char *) curr->data)) ) a->init_defaults(&WinCommandState); /* honor flags */ if( get_flags( WinCommandState.flags, WINCOMMAND_Desk)) select_windows_on_desk(False); else if( ! get_flags( WinCommandState.flags, WINCOMMAND_AllDesks)) select_windows_on_screen(False); if ( ! select_windows_by_pattern(WinCommandState.pattern, !get_flags(WinCommandState.flags, WINCOMMAND_ActOnAll), False) ) LOCAL_DEBUG_OUT("warning: invalid pattern. Reverting to default."); /* apply operations */ for( curr = operations->head; curr != NULL; curr = curr->next) { command = (char *) curr->data; LOCAL_DEBUG_OUT("command: %s", command); if ( (a = get_action_by_name( (char *) curr->data)) ) a->exec_wrapper(&WinCommandState, (char *) curr->data); } ascom_wait(); ascom_deinit(); }else/* interactive mode */ { char *line_read = NULL ; while( (line_read = my_readline()) != NULL ) { char *ptr = line_read; char *cmd = NULL ; ptr = parse_token (ptr, &cmd); if( cmd != NULL && cmd[0] != '\0' ) { if( mystrcasecmp(cmd, "quit") == 0 ) break; if( mystrcasecmp(cmd, "set") == 0 ) { char *param = NULL ; ptr = parse_token (ptr, ¶m); while( isspace(*ptr) ) ++ptr ; switch( set_WinCommandParam( &WinCommandState, param, ptr) ) { case ASWC_BadParam : case ASWC_BadVal : printf("bad parameter [%s]\n", argv[i] ); break; case ASWC_Ok_ValUsed : case ASWC_Ok_ValUnused : #ifdef HAVE_READLINE add_history (line_read); #endif printf( "ok\n"); break ; } }else if( (a = get_action_by_name( cmd )) ) { a->init_defaults(&WinCommandState); ascom_init(); ascom_update_winlist(); if( get_flags( WinCommandState.flags, WINCOMMAND_Desk)) select_windows_on_desk(False); else if( ! get_flags( WinCommandState.flags, WINCOMMAND_AllDesks)) select_windows_on_screen(False); if ( ! select_windows_by_pattern(WinCommandState.pattern, !get_flags(WinCommandState.flags, WINCOMMAND_ActOnAll), False) ) LOCAL_DEBUG_OUT("warning: invalid pattern. Reverting to default."); a->exec_wrapper(&WinCommandState, ptr); ascom_wait(); ascom_deinit(); #ifdef HAVE_READLINE add_history (line_read); #endif printf( "ok\n"); }else { /* try to parse it as AS function */ printf( "bad command\n"); } free( cmd ) ; } free( line_read ); } printf( "\nbye bye\n" ); } destroy_asbidirlist( &operations ); return 0 ; }