#include "build.h"
#include "debugging/debugging.h"
+#include <gtk/gtk.h>
#include <map>
#include <list>
#include "stream/stringstream.h"
class Evaluatable
{
public:
+virtual ~Evaluatable() = default;
virtual void evaluate( StringBuffer& output ) = 0;
virtual void exportXML( XMLImporter& importer ) = 0;
};
class XMLElementParser : public TextOutputStream
{
public:
+virtual ~XMLElementParser() = default;
virtual XMLElementParser& pushElement( const XMLElement& element ) = 0;
virtual void popElement( const char* name ) = 0;
};
};
typedef std::pair<CopiedString, Build> BuildPair;
-#define SEPARATOR_STRING "-"
+const char *SEPARATOR_STRING = "-";
static bool is_separator( const BuildPair &p ){
if ( !string_equal( p.first.c_str(), SEPARATOR_STRING ) ) {
return false;
#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
#include "gtkutil/dialog.h"
#include "gtkutil/closure.h"
for ( Project::iterator i = project.begin(); i != project.end(); ++i )
{
- const char* buildName = ( *i ).first.c_str();
-
- GtkTreeIter buildIter;
- gtk_list_store_append( store, &buildIter );
- gtk_list_store_set( store, &buildIter, 0, const_cast<char*>( buildName ), -1 );
+ store.append(0, (*i).first.c_str());
}
- GtkTreeIter lastIter;
- gtk_list_store_append( store, &lastIter );
+ store.append();
}
class ProjectList
{
public:
Project& m_project;
-ui::ListStore m_store{nullptr};
+ui::ListStore m_store{ui::null};
bool m_changed;
ProjectList( Project& project ) : m_project( project ), m_changed( false ){
}
project.push_back( Project::value_type( new_text, Build() ) );
gtk_list_store_set( projectList->m_store, &iter, 0, new_text, -1 );
- GtkTreeIter lastIter;
- gtk_list_store_append( projectList->m_store, &lastIter );
+ projectList->m_store.append();
}
gtk_tree_path_free( path );
gboolean project_key_press( ui::Widget widget, GdkEventKey* event, ProjectList* projectList ){
Project& project = projectList->m_project;
- if ( event->keyval == GDK_Delete ) {
+ if ( event->keyval == GDK_KEY_Delete ) {
GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) );
GtkTreeIter iter;
GtkTreeModel* model;
gboolean project_selection_changed( GtkTreeSelection* selection, ui::ListStore store ){
Project& project = g_build_project;
- gtk_list_store_clear( store );
+ store.clear();
GtkTreeIter iter;
GtkTreeModel* model;
for ( Build::iterator i = build.begin(); i != build.end(); ++i )
{
- GtkTreeIter commandIter;
- gtk_list_store_append( store, &commandIter );
- gtk_list_store_set( store, &commandIter, 0, const_cast<char*>( ( *i ).c_str() ), -1 );
+ store.append(0, (*i).c_str());
}
- GtkTreeIter lastIter;
- gtk_list_store_append( store, &lastIter );
+ store.append();
}
else
{
gtk_list_store_set( store, &iter, 0, new_text, -1 );
- GtkTreeIter lastIter;
- gtk_list_store_append( store, &lastIter );
+ store.append();
}
gtk_tree_path_free( path );
}
Build& build = *g_current_build;
- if ( event->keyval == GDK_Delete ) {
+ if ( event->keyval == GDK_KEY_Delete ) {
GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) );
GtkTreeIter iter;
GtkTreeModel* model;
ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectList ){
ui::Window window = MainFrame_getWindow().create_dialog_window("Build Menu", G_CALLBACK(dialog_delete_callback ), &modal, -1, 400 );
- ui::Widget buildView;
+ ui::Widget buildView{ui::null};
{
- GtkTable* table1 = create_dialog_table( 2, 2, 4, 4, 4 );
- gtk_container_add( GTK_CONTAINER( window ), GTK_WIDGET( table1 ) );
+ auto table1 = create_dialog_table( 2, 2, 4, 4, 4 );
+ window.add(table1);
{
- GtkVBox* vbox = create_dialog_vbox( 4 );
+ auto vbox = create_dialog_vbox( 4 );
gtk_table_attach( table1, GTK_WIDGET( vbox ), 1, 2, 0, 1,
(GtkAttachOptions) ( GTK_FILL ),
(GtkAttachOptions) ( GTK_FILL ), 0, 0 );
{
- GtkButton* button = create_dialog_button( "OK", G_CALLBACK( dialog_button_ok ), &modal );
- gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ auto button = create_dialog_button( "OK", G_CALLBACK( dialog_button_ok ), &modal );
+ vbox.pack_start( button, FALSE, FALSE, 0 );
}
{
- GtkButton* button = create_dialog_button( "Cancel", G_CALLBACK( dialog_button_cancel ), &modal );
- gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ auto button = create_dialog_button( "Cancel", G_CALLBACK( dialog_button_cancel ), &modal );
+ vbox.pack_start( button, FALSE, FALSE, 0 );
}
}
{
- GtkFrame* frame = create_dialog_frame( "Build menu" );
+ auto frame = create_dialog_frame( "Build menu" );
gtk_table_attach( table1, GTK_WIDGET( frame ), 0, 1, 0, 1,
(GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
(GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
{
- GtkScrolledWindow* scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 );
- gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( scr ) );
+ auto scr = create_scrolled_window( ui::Policy::NEVER, ui::Policy::AUTOMATIC, 4 );
+ frame.add(scr);
{
auto store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
ui::Widget view = ui::TreeView( ui::TreeModel(GTK_TREE_MODEL( store ) ));
gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE );
- auto renderer = ui::CellRendererText();
+ auto renderer = ui::CellRendererText(ui::New);
object_set_boolean_property( G_OBJECT( renderer ), "editable", TRUE );
- g_signal_connect( G_OBJECT(renderer), "edited", G_CALLBACK( project_cell_edited ), &projectList );
+ renderer.connect("edited", G_CALLBACK( project_cell_edited ), &projectList );
GtkTreeViewColumn* column = ui::TreeViewColumn( "", renderer, {{"text", 0}} );
gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );
gtk_tree_selection_set_mode( selection, GTK_SELECTION_BROWSE );
- gtk_widget_show( view );
+ view.show();
buildView = view;
projectList.m_store = store;
- gtk_container_add( GTK_CONTAINER( scr ), view );
+ scr.add(view);
- g_signal_connect( G_OBJECT( view ), "key_press_event", G_CALLBACK( project_key_press ), &projectList );
+ view.connect( "key_press_event", G_CALLBACK( project_key_press ), &projectList );
- g_object_unref( G_OBJECT( store ) );
+ store.unref();
}
}
}
{
- GtkFrame* frame = create_dialog_frame( "Commandline" );
+ auto frame = create_dialog_frame( "Commandline" );
gtk_table_attach( table1, GTK_WIDGET( frame ), 0, 1, 1, 2,
(GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
(GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
{
- GtkScrolledWindow* scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 );
- gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( scr ) );
+ auto scr = create_scrolled_window( ui::Policy::NEVER, ui::Policy::AUTOMATIC, 4 );
+ frame.add(scr);
{
ui::ListStore store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
ui::Widget view = ui::TreeView(ui::TreeModel( GTK_TREE_MODEL( store ) ));
gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE );
- auto renderer = ui::CellRendererText();
+ auto renderer = ui::CellRendererText(ui::New);
object_set_boolean_property( G_OBJECT( renderer ), "editable", TRUE );
- g_signal_connect( G_OBJECT(renderer), "edited", G_CALLBACK( commands_cell_edited ), store );
+ renderer.connect( "edited", G_CALLBACK( commands_cell_edited ), store );
GtkTreeViewColumn* column = ui::TreeViewColumn( "", renderer, {{"text", 0}} );
gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );
gtk_tree_selection_set_mode( selection, GTK_SELECTION_BROWSE );
- gtk_widget_show( view );
+ view.show();
- gtk_container_add( GTK_CONTAINER( scr ), view );
+ scr.add(view);
- g_object_unref( G_OBJECT( store ) );
+ store.unref();
- g_signal_connect( G_OBJECT( view ), "key_press_event", G_CALLBACK( commands_key_press ), store );
+ view.connect( "key_press_event", G_CALLBACK( commands_key_press ), store );
- g_signal_connect( G_OBJECT( gtk_tree_view_get_selection( GTK_TREE_VIEW( buildView ) ) ), "changed", G_CALLBACK( project_selection_changed ), store );
+ auto sel = ui::TreeSelection(gtk_tree_view_get_selection( GTK_TREE_VIEW( buildView ) ));
+ sel.connect( "changed", G_CALLBACK( project_selection_changed ), store );
}
}
}
g_build_changed = true;
}
- gtk_widget_destroy( GTK_WIDGET( window ) );
+ window.destroy();
}
#include "preferences.h"
#include "qe3.h"
-typedef struct _GtkMenuItem GtkMenuItem;
-
class BuildMenuItem
{
const char* m_name;
BuildMenuItems g_BuildMenuItems;
-ui::Menu g_bsp_menu{nullptr};
+ui::Menu g_bsp_menu{ui::null};
void Build_constructMenu( ui::Menu menu ){
for ( Project::iterator i = g_build_project.begin(); i != g_build_project.end(); ++i )
void Build_refreshMenu( ui::Menu menu ){
for ( BuildMenuItems::iterator i = g_BuildMenuItems.begin(); i != g_BuildMenuItems.end(); ++i )
{
- gtk_container_remove( menu, GTK_WIDGET( ( *i ).m_item ) );
+ menu.remove(ui::Widget(GTK_WIDGET((*i).m_item)));
}
g_BuildMenuItems.clear();