Ejemplo n.º 1
0
static void
workspacedefs_refresh( vObject *vobject )
{
	Workspacedefs *workspacedefs = WORKSPACEDEFS( vobject );
	Workspace *ws = workspacedefs->ws;
	char txt[256];
	VipsBuf buf = VIPS_BUF_STATIC( txt );

#ifdef DEBUG
	printf( "workspacedefs_refresh:\n" );
#endif /*DEBUG*/

	if( !workspacedefs->changed ) {
		guint text_hash = g_str_hash( ws->local_defs );

		if( text_hash != workspacedefs->text_hash ) {
			g_signal_handlers_block_by_func( 
				gtk_text_view_get_buffer( 
					GTK_TEXT_VIEW( workspacedefs->text ) ),
				workspacedefs_text_changed, workspacedefs );
			text_view_set_text( 
				GTK_TEXT_VIEW( workspacedefs->text ), 
				ws->local_defs, TRUE );
			g_signal_handlers_unblock_by_func( 
				gtk_text_view_get_buffer( 
					GTK_TEXT_VIEW( workspacedefs->text ) ),
				workspacedefs_text_changed, workspacedefs );

			workspacedefs->text_hash = text_hash;
		}
	}

	if( ws->local_kit ) {
		int n = icontainer_get_n_children( ICONTAINER( 
			ws->local_kit ) );

		vips_buf_appendf( &buf, ngettext( "%d definition", 
			"%d definitions", n ), n );
	}
	if( workspacedefs->errors ) {
		if( !vips_buf_is_empty( &buf ) )
			vips_buf_appendf( &buf, ", " ); 
		vips_buf_appendf( &buf, _( "errors" ) ); 
	}
	if( workspacedefs->changed ) {
		if( !vips_buf_is_empty( &buf ) )
			vips_buf_appendf( &buf, ", " ); 
		vips_buf_appendf( &buf, _( "modified" ) ); 
	}
	set_glabel( workspacedefs->status, "%s", vips_buf_all( &buf ) );

	VOBJECT_CLASS( parent_class )->refresh( vobject );
}
Ejemplo n.º 2
0
void import_write(Logbook *logbook)
{
  GPid pid;
  int fdin, fdout, fderr;
  FILE *fin=NULL, *fout=NULL, *ferr=NULL;
  GError *error=NULL;

  gchar *argv[] = {"./importcsv",
		   gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(logbook->import_write_force)) ? "-f" : "",
		   gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(logbook->import_write_dryrun)) ? "-d" : "",
		   gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(logbook->import_write_overwrite)) ? "-o" : "",
		   logbook->db_filename,

		   NULL};

  if (g_spawn_async_with_pipes(NULL, argv, NULL, 0, NULL, NULL, &pid, &fdin, &fdout, &fderr, &error)) {
    if (!((fin  = fdopen(fdin, "ab")) &&
	  (fout = fdopen(fdout, "rb")) &&
	  (ferr = fdopen(fderr, "rb")))) {
      fprintf(stderr, "spawn_script fdopen failed\n");
      exit(1);
    }
    store_fwrite_csv(GTK_TREE_VIEW(logbook->import_interpreted_treeview), fin);
    fclose(fin);

    int c;
    GString *gsout, *gserr;
    gsout = g_string_new("");
    gserr = g_string_new("");
    while ((c = fgetc(fout)) != EOF) {
      gsout = g_string_append_c(gsout, c);
    }
    while ((c = fgetc(ferr)) != EOF) {
      gserr = g_string_append_c(gserr, c);
    }    
    fclose(fout);
    fclose(ferr);

    text_view_set_text(GTK_TEXT_VIEW(logbook->import_response_text), gsout->str);
    g_string_free(gsout, FALSE);
    g_string_free(gserr, FALSE);

    logbook->flights_stale = TRUE;
    logbook->aircraft_stale = TRUE;
    logbook->roles_stale = TRUE;
    logbook->models_stale = TRUE;
    logbook->airports_stale = TRUE;
  } else {
    fprintf(stderr, "Could not open database import program\n");
  }
}
Ejemplo n.º 3
0
void on_reports_title_changed(GtkWidget *entry, Logbook *logbook)
{
  if (GTK_WIDGET_HAS_FOCUS(entry)) {
    reports_set_modified(logbook);
    gtk_expander_set_expanded(GTK_EXPANDER(logbook->reports_sql_expander), TRUE);
  } else {
    db_bind_text(logbook->reports_sql_by_title, 1, gtk_entry_get_text(GTK_ENTRY(logbook->reports_title)));
    db_step(logbook->reports_sql_by_title);
    fprintf(stderr, "Error's from here ...\n");
    text_view_set_text(GTK_TEXT_VIEW(logbook->reports_sql_text), (char*)db_column_text(logbook->reports_sql_by_title, 0));
    fprintf(stderr, "... to here during delete.\n");
    db_reset(logbook->reports_sql_by_title);
    db_clear_bindings(logbook->reports_sql_by_title);

    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(logbook->reports_armdel_btn), FALSE);
    gtk_widget_set_sensitive(logbook->reports_armdel_btn, TRUE);
    gtk_widget_set_sensitive(logbook->reports_del_btn, FALSE);
    gtk_widget_set_sensitive(logbook->reports_save_btn, FALSE);
  }
}