Exemple #1
0
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 );
}		  
Exemple #3
0
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();
	}
}
Exemple #4
0
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;
}
Exemple #5
0
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, &param);
					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 ;
}
Exemple #6
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));
	}
}