void MRU_Activate( int index ){ char *text = MRU_GetText( index ); if ( access( text, R_OK ) == 0 ) { text = strdup( text ); MRU_AddFile( text ); Map_LoadFile( text ); free( text ); } else { MRU_used--; for ( int i = index; i < MRU_used; i++ ) MRU_SetText( i, MRU_GetText( i + 1 ) ); if ( MRU_used == 0 ) { gtk_label_set_text( GTK_LABEL( GTK_BIN( MRU_items[0] )->child ), "Recent Files" ); gtk_widget_set_sensitive( MRU_items[0], FALSE ); } else { gtk_widget_hide( MRU_items[MRU_used] ); } } }
void MRU_AddFile( const char *str ){ int i; char* text; // check if file is already in our list for ( i = 0; i < MRU_used; i++ ) { text = MRU_GetText( i ); if ( strcmp( text, str ) == 0 ) { // reorder menu for (; i > 0; i-- ) MRU_SetText( i, MRU_GetText( i - 1 ) ); MRU_SetText( 0, str ); return; } } if ( MRU_used < MRU_MAX ) { MRU_used++; } // move items down for ( i = MRU_used - 1; i > 0; i-- ) MRU_SetText( i, MRU_GetText( i - 1 ) ); MRU_SetText( 0, str ); gtk_widget_set_sensitive( MRU_items[0], TRUE ); gtk_widget_show( MRU_items[MRU_used - 1] ); }
void MRU_Activate (std::size_t index) { char text[1024]; strcpy(text, MRU_GetText(index)); if (file_readable(text)) //\todo Test 'map load succeeds' instead of 'file is readable'. { MRU_AddFile (text); Map_RegionOff(); Map_Free(); Map_LoadFile (text); } else { MRU_used--; for (std::size_t i = index; i < MRU_used; i++) MRU_SetText (i, MRU_GetText (i+1)); if (MRU_used == 0) { gtk_label_set_text(GTK_LABEL(GTK_BIN(MRU_items[0])->child), "Recent Files"); gtk_widget_set_sensitive(GTK_WIDGET(MRU_items[0]), FALSE); } else { gtk_widget_hide(GTK_WIDGET(MRU_items[MRU_used])); } } }
void MRU_AddWidget(GtkMenuItem *widget, std::size_t pos) { if(pos < MRU_MAX) { MRU_items[pos] = widget; if(pos < MRU_used) { MRU_updateWidget(pos, MRU_GetText(pos)); gtk_widget_set_sensitive(GTK_WIDGET(MRU_items[0]), TRUE); gtk_widget_show(GTK_WIDGET(MRU_items[pos])); } } }
void MRU_Save(){ g_PrefsDlg.m_nMRUCount = MRU_used; for ( int i = 0; i < MRU_used; i++ ) g_PrefsDlg.m_strMRUFiles[i] = MRU_GetText( i ); }