static void preview_init (GschemPreview *preview) { struct event_reg_t { gchar *detailed_signal; GCallback c_handler; } drawing_area_events[] = { { "realize", G_CALLBACK (preview_callback_realize) }, { "expose_event", G_CALLBACK (x_event_expose) }, { "button_press_event", G_CALLBACK (preview_callback_button_press) }, { "configure_event", G_CALLBACK (x_event_configure) }, { "scroll_event", G_CALLBACK (preview_event_scroll) }, { NULL, NULL } }, *tmp; GschemToplevel *preview_w_current; preview_w_current = gschem_toplevel_new (); gschem_toplevel_set_toplevel (preview_w_current, s_toplevel_new ()); preview_w_current->toplevel->load_newer_backup_func = x_fileselect_load_backup; preview_w_current->toplevel->load_newer_backup_data = preview_w_current; o_text_set_rendered_bounds_func (preview_w_current->toplevel, o_text_get_rendered_bounds, preview_w_current); i_vars_set (preview_w_current); /* be sure to turn off scrollbars */ preview_w_current->scrollbars_flag = FALSE; /* be sure to turn off the grid */ gschem_options_set_grid_mode (preview_w_current->options, GRID_MODE_NONE); /* preview_w_current windows don't have toolbars */ preview_w_current->handleboxes = FALSE; preview_w_current->toolbars = FALSE; preview_w_current->drawing_area = GTK_WIDGET (preview); preview->preview_w_current = preview_w_current; preview->active = FALSE; preview->filename = NULL; preview->buffer = NULL; GSCHEM_PAGE_VIEW (preview)->page = s_page_new (preview->preview_w_current->toplevel, "preview"); gtk_widget_set_events (GTK_WIDGET (preview), GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK); for (tmp = drawing_area_events; tmp->detailed_signal != NULL; tmp++) { g_signal_connect (GTK_WIDGET (preview), tmp->detailed_signal, tmp->c_handler, preview_w_current); } }
/*! \brief Creates a new X window. * * \par Function description * * Creates and initializes new GschemToplevel object and then sets * and setups its libgeda \a toplevel. * * \param toplevel The libgeda TOPLEVEL object. * \return Pointer to the new GschemToplevel object. */ GschemToplevel* x_window_new (TOPLEVEL *toplevel) { GschemToplevel *w_current; w_current = gschem_toplevel_new (); gschem_toplevel_set_toplevel (w_current, (toplevel != NULL) ? toplevel : s_toplevel_new ()); gschem_toplevel_get_toplevel (w_current)->load_newer_backup_func = x_fileselect_load_backup; gschem_toplevel_get_toplevel (w_current)->load_newer_backup_data = w_current; o_text_set_rendered_bounds_func (gschem_toplevel_get_toplevel (w_current), o_text_get_rendered_bounds, w_current); /* Damage notifications should invalidate the object on screen */ o_add_change_notify (gschem_toplevel_get_toplevel (w_current), (ChangeNotifyFunc) o_invalidate, (ChangeNotifyFunc) o_invalidate, w_current); x_window_setup (w_current); return w_current; }