void init_ASMount(ASFlagType flags, const char *cmd) { memset( &AppState, 0x00, sizeof(AppState)); AppState.flags = flags ; AppState.tileWidth = DEFAULT_TILE_WIDTH; AppState.tileHeight = DEFAULT_TILE_HEIGHT; createMainWindow(); reloadButtons(); AppState.volumes = create_asbidirlist (ASVolume_destroy); g_type_init(); GVolumeMonitor * monitor = g_volume_monitor_get(); g_signal_connect_object (monitor, "mount-added", G_CALLBACK (mount_added), NULL, 0); g_signal_connect_object (monitor, "mount-changed", G_CALLBACK (mount_changed), NULL, 0); g_signal_connect_object (monitor, "mount-removed", G_CALLBACK (mount_removed), NULL, 0); g_signal_connect_object (monitor, "volume-added", G_CALLBACK (volume_added), NULL, 0); g_signal_connect_object (monitor, "volume-changed", G_CALLBACK (volume_changed), NULL, 0); g_signal_connect_object (monitor, "volume-removed", G_CALLBACK (volume_removed), NULL, 0); GList *tmp; GList *list = g_volume_monitor_get_volumes(G_VOLUME_MONITOR(monitor)); show_activity ("Adding volumes..."); for (tmp = list; tmp != NULL; tmp = tmp->next) { ASVolume *v = ASVolume_newGVolume (tmp->data); if (v) append_bidirelem (AppState.volumes, v); else g_object_unref (tmp->data); } g_list_free (list); #if 1 show_activity ("Adding mounts..."); list = g_volume_monitor_get_mounts(G_VOLUME_MONITOR(monitor)); for (tmp = list; tmp != NULL; tmp = tmp->next) { ASVolume *v = ASVolume_newGMount (tmp->data); if (v) append_bidirelem (AppState.volumes, v); else g_object_unref (tmp->data); } g_list_free (list); #endif AppState.volumeMonitor = monitor; redecorateVolumes (); }
static void on_add_point_clicked(GtkWidget *widget, gpointer data ) { ASGtkGradient *ge = ASGTK_GRADIENT (data); ASGradientPoint* point = create_asgrad_point(); query_point_values( ge, point ); append_bidirelem( ge->points, point ); bubblesort_asbidirlist( ge->points, compare_asgrad_point ); ge->current_point = point ; asgtk_gradient_update_color_list(ge); refresh_gradient_preview(ge); gtk_widget_set_sensitive( ge->delete_btn, TRUE ); gtk_widget_set_sensitive( ge->apply_btn, TRUE ); }
static void volume_added (GVolumeMonitor *monitor, GVolume *volume, GObject *unused) { ASVolume *v; char* name = g_volume_get_name (volume); if (name == NULL) return; /* check if existing - could have been added at the initialization phase */ v = name2Volume (name); free (name); if (v != NULL) return; v = ASVolume_newGVolume (volume); SHOW_CHECKPOINT; if (v) { show_progress ("Volume \"%s\" added", v->name); append_bidirelem (AppState.volumes, v); redecorateVolumes(); } }
void * insert_bidirelem_after( ASBiDirList *l, void *data, ASBiDirElem *after ) { ASBiDirElem *e ; if( l == NULL ) return data ; /* don't check if after is in the list since it could be time-consuming */ if( after == NULL ) return append_bidirelem( l, data ); e = alloc_bidirelem(); e->data = data ; e->prev = after ; e->next = after->next ; if( after->next ) after->next->prev = e ; after->next = e ; if( after == l->tail ) l->tail = e ; ++(l->count); return data; }
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 ; }
static void queue_dispatch(DBusConnection *connection, DBusDispatchStatus new_status, void *data){ if (new_status == DBUS_DISPATCH_DATA_REMAINS){ show_debug(__FILE__,__FUNCTION__,__LINE__,"ADDED dbus dispatch=%p\n", data); append_bidirelem (ASDBus.dispatches, asdbus_create_dispatch(connection, data)); } }