A
download interface.h
Language: C++
License: GPL
Copyright: (C) 2000-2006 Vincent LE PRINCE
LOC: 99
Project Info
Truevision
Server: SourceForge
Type: cvs
...evision\Truevision\include\
   atmosphere.h
   bicubic.h
   blob.h
   box.h
   camera.h
   cone.h
   cylinder.h
   density.h
   disc.h
   dlgutils.h
   fnintern.h
   fog.h
   function.h
   glview.h
   glview2d.h
   glview3d.h
   heightfield.h
   impsurface.h
   interface.h
   interior.h
   isosurface.h
   julia.h
   lathe.h
   lights.h
   linkobj.h
   main.h
   mapedit.h
   material.h
   matlib.h
   matlist.h
   matpov.h
   media.h
   mesh.h
   meshrotate.h
   meshscale.h
   meshtool.h
   meshtranslate.h
   obj3dcsg.h
   obj3ddef.h
   object3d.h
   objectlayer.h
   objectlist.h
   parametric.h
   plane.h
   polygon.h
   povfe.h
   povpreview.h
   povscript.h
   preferences.h
   prism.h
   proppanel.h
   pycamera.h
   pyengine.h
   pylights.h
   pyobjects.h
   pyscriptdb.h
   pyscriptobj.h
   pyutils.h
   rotation.h
   scene.h
   scriptobj.h
   slopemap.h
   sphere.h
   spheresweep.h
   spline2d.h
   spline3d.h
   superellipsoid.h
   texfinish.h
   texnormal.h
   texpigment.h
   text.h
   torus.h
   tvio.h
   tvwidgets.h
   undo.h
   utils3d.h
   vertex.h
   viewmanager.h

//*****************************************************************************************
// Truevision - a 3d modeler for povray
//
// interface.h
//
// Vincent LE PRINCE <vincentleprince@users.sourceforge.net>
// Copyright (C) 2000-2006 Vincent LE PRINCE
// This file is part of the TRUEVISION Package

//   This program is free software; you can redistribute it and/or modify
//   it under the terms of the GNU General Public License as published by
//   the Free Software Foundation; either version 2 of the License, or
//   (at your option) any later version.
//
//   This program is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.
//
//   You should have received a copy of the GNU General Public License
//   along with this program; if not, write to the Free Software
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */ 
//*******************************************************************************************
#ifndef INTERFACE_H
#define INTERFACE_H
using namespace std;
#include "main.h"
#include "viewmanager.h"
#include "proppanel.h"
#include "scene.h"
#include "undo.h"
#include "preferences.h"
#include "povfe.h"
#include "matlist.h"
#include "matlib.h"

#ifdef HAVE_TV_PYTHON
	#include "include/pyengine.h"
#endif

#define INTERF_DEF Interface *interf = (Interface*)(app_ref->interf);

//*******************************************************************
// Class Interface
//
// manage GUI, ie menus, toolbar
//*******************************************************************
class Interface : private app_object {
	#define SENDER ((Interface*)data)
	friend void sign_interface_recent_file( GtkWidget *wid, gpointer data ) { ((Interface*)data)->load_recent_file( wid ); }
	friend void sign_interf_hide_panel( GtkWidget *wid, gpointer data ) { ((Interface*)data)->hide_panel(); }

	// Menu callbacks
	friend void interf_sign_menu_new( GtkAction *action, gpointer data ) { ((Scene*)(SENDER->app_ref->scene))->new_scene( ); }
	friend void interf_sign_menu_open( GtkWidget *wid, gpointer data ) { ((Scene*)(SENDER->app_ref->scene))->load_as( ); }
	friend void interf_sign_menu_save( GtkWidget *wid, gpointer data ) { ((Scene*)(SENDER->app_ref->scene))->save( );}
	friend void interf_sign_menu_saveas( GtkWidget *wid, gpointer data ) { ((Scene*)(SENDER->app_ref->scene))->save_as( );}
	friend void interf_sign_menu_exportpov( GtkWidget *wid, gpointer data ) { ((Scene*)(SENDER->app_ref->scene))->export_to_povray( ); }
	friend void interf_sign_menu_exportpack( GtkWidget *wid, gpointer data ) { ((Scene*)(SENDER->app_ref->scene))->export_scene_pack( ); }
	friend void interf_sign_menu_loadobj( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->load_object(); }
	friend void interf_sign_menu_saveobj( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->save_object(); }
	friend void interf_sign_menu_exit( GtkWidget *wid, gpointer data ) { app_exit( NULL, NULL, NULL ); }

	friend void interf_sign_menu_undo( GtkWidget *wid, gpointer data ) { ((UndoRedoManager*)(SENDER->app_ref->undoman))->undo(); }
	friend void interf_sign_menu_redo( GtkWidget *wid, gpointer data ) { ((UndoRedoManager*)(SENDER->app_ref->undoman))->redo(); }
	friend void interf_sign_menu_cut( GtkWidget *wid, gpointer data ) { sign_objlist_cut_object( NULL, (gpointer)(SENDER->app_ref->obj3dlist) ); }
	friend void interf_sign_menu_copy( GtkWidget *wid, gpointer data ) { sign_objlist_copy_object( NULL, (gpointer)(SENDER->app_ref->obj3dlist) ); }
	friend void interf_sign_menu_paste( GtkWidget *wid, gpointer data ) { sign_objlist_paste_object( NULL, (gpointer)(SENDER->app_ref->obj3dlist) ); }
	friend void interf_sign_menu_prefs( GtkWidget *wid, gpointer data ) { ((Preferences*)(SENDER->app_ref->prefer))->raise_dlg(); }
	
	friend void interf_sign_menu_render( GtkWidget *wid, gpointer data ) { ((PovrayFE*)(SENDER->app_ref->povfe))->render_run(); }
	friend void interf_sign_menu_stop( GtkWidget *wid, gpointer data ) { ((PovrayFE*)(SENDER->app_ref->povfe))->stop_render(); }
	friend void interf_sign_menu_frontend( GtkWidget *wid, gpointer data ) {((PovrayFE*)(SENDER->app_ref->povfe))->raise_render_box(); }
	friend void interf_sign_menu_options( GtkWidget *wid, gpointer data ) { ((PovrayFE*)(SENDER->app_ref->povfe))->raise_options_box(); }
	
	friend void interf_sign_menu_fullscreen( GtkWidget *wid, gpointer data ) { SENDER->toggle_fullscreen(); }
	friend void interf_sign_menu_matedit( GtkWidget *wid, gpointer data ) { ((MatList*)(SENDER->app_ref->matlist))->raise_texeditor(); }
	friend void interf_sign_menu_matlib( GtkWidget *wid, gpointer data ) { ((MatLib*)(SENDER->app_ref->matlib))->raise_dlg_box(); }
	
	#ifdef HAVE_TV_PYTHON
	friend void interf_sign_menu_script( GtkWidget *wid, gpointer data ) { ((PyEngine*)(SENDER->app_ref->python_engine))->load_as(); }
	#endif

	friend void interf_sign_menu_select_all_poly( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->select_all_poly();}
	friend void interf_sign_menu_unselect_all_poly( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->unselect_all_poly();}
	friend void interf_sign_menu_invert_selection_poly( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->invert_selection_poly();}
	friend void interf_sign_menu_deletepoly( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->delete_polygons();}
	friend void interf_sign_menu_tesselate( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->tesselate();}
	friend void interf_sign_menu_flatten( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->flatten();}
	friend void interf_sign_menu_flatten_region( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->flatten_region();}
	friend void interf_sign_menu_extractpoly( GtkWidget *wid, gpointer data ) { SENDER->vmanager->set_tool_mode( TV_TOOL_EXTRACT );}

	friend void interf_sign_menu_applytrans( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->apply_transformations();}
	friend void interf_sign_menu_meshconvert( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->mesh_convert();}
	
	friend void interf_sign_menu_help( GtkWidget *wid, gpointer data ) { help_index(); }
	friend void interf_sign_menu_helpon( GtkWidget *wid, gpointer data ) { ((ObjectList*)(SENDER->app_ref->obj3dlist))->help_on_current_object(); }
	friend void interf_sign_menu_website( GtkWidget *wid, gpointer data ) { display_homepage(); }
	friend void interf_sign_menu_about( GtkWidget *wid, gpointer data ) { about(); }
	
	friend void interf_sign_toolbar_pointer( GtkAction *action, gpointer data ) { SENDER->vmanager->sign_pmode_change( action ); }
	#undef SENDER
	
	private:
		app_objs * app_ref;
		ViewManager *vmanager;
		PropPanel *panel;

		GtkWidget *win, *vbox, *paned, *side_panel_box, *hide_button;
		GtkWidget *toolbar;
		GtkAccelGroup *accels;
		GtkUIManager *ui_manager;
	
		// Recent files
		GtkMenuItem *recent_files;
		GtkWidget *recent_files_widgets[10];
		void set_recent_files();
	
		void hide_panel( bool change = true );
		bool fullscreen;
	
		void register_tv_stock_icons();
	
		// Status bar
		GtkWidget *progress_bar;
		GtkWidget *status;

	public:
		Interface( app_objs *app_ref );
	
		// Preferences
		void flush_pref();
		void pref_changed();
	
		// Attributes
		GdkWindow *get_gdkwin() { return win->window; }
		GtkWidget *get_gtkwin() { return win; }
		GtkAccelGroup *get_accels() { return accels; }
		
		// Save & Load
		void save( ofstream & file );
		void clear() { vmanager->clear(); }
		bool load( ifstream & file, char * tag );
		
		// Set information systems
		void set_status( char *mesg ) { gtk_label_set_text( GTK_LABEL(status), mesg ); update_appbar(); }
		void clear_status() { gtk_label_set_text( GTK_LABEL(status), NULL ); }
		void set_progress( float val ) {  gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(progress_bar), val ); update_appbar(); }
		void update_appbar() { while ( gtk_events_pending() ) gtk_main_iteration(); }
		void set_hourglass( bool set );

		// Recent files		
		void recent_file_push( char *filename );
		void recent_file_pop( char *filename );
		void load_recent_file( GtkWidget *wid );
		
		// Fullscreen
		void toggle_fullscreen();
		
		
		GtkUIManager *get_ui_manager() { return ui_manager; }
		// temp
		//void jitter();
}; 

#endif

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us