/* $Id: yamt.c,v 1.1.1.1 2000/01/30 16:39:25 benediktroth Exp $ */ #include #include #include "yamt.h" #include "dirbrowser.h" #include "menus.h" extern GtkWidget *edit_box_new( ); extern GtkWidget *rename_box_new( ); extern GtkWidget *rename_box_new( ); extern GtkWidget *mass_box_new( ); extern GtkWidget *xchange_box_new( ); extern GtkWidget *auto_box_new( ); extern GtkWidget *sort_box_new( ); extern GtkWidget *explore_box_new( ); extern GtkWidget *playlists_box_new( ); extern GtkWidget *misc_box_new( ); extern void edit_browse_load( void ); extern int edit_file_load( gchar *dirandfile ); extern void edit_directory_load( ); extern void rename_directory_load( ); extern void rename_directory_load( ); extern void mass_directory_load( ); extern void xchange_directory_load( ); extern void auto_directory_load( ); extern void sort_directory_load( ); extern void explore_directory_load( ); extern void playlists_directory_load( ); extern void misc_directory_load( ); int main( int argc, char *argv[] ) { GtkWidget *main_vbox; GtkWidget *hbox; GtkWidget *dirtree; GtkWidget *nb; GtkWidget *logbox; GtkWidget *logobox; GtkWidget *vbox_tag; GtkWidget *vbox_rename; GtkWidget *vbox_mass; GtkWidget *vbox_xchange; GtkWidget *vbox_auto; GtkWidget *vbox_sort; GtkWidget *vbox_explore; GtkWidget *vbox_playlists; GtkWidget *vbox_misc; GtkWidget *label; gchar *tmp; gchar *buffer; bindtextdomain(PACKAGE, GNOMELOCALEDIR); textdomain(PACKAGE); selected_directory=NULL; gnome_init( _("Yet Another MP3 Tool"), VERSION, argc, argv); /* This creates the basic window */ app = gnome_app_new( PACKAGE, _("Yet Another MP3 Tool") ); gtk_window_set_policy(GTK_WINDOW(app), FALSE, TRUE, FALSE); /* gtk_window_set_default_size(GTK_WINDOW(app), 660, 550); */ gtk_window_set_wmclass(GTK_WINDOW(app),"mnsc","mnsc"); gtk_signal_connect( GTK_OBJECT(app), "delete_event", GTK_SIGNAL_FUNC(gtk_exit), NULL); /* set up logging */ logbox = yamtlog_box_new(); /* Create the statusbar and show it */ install_statusbar( app ); /* Create the menubar and show it */ install_menus( app ); /* Read the yamt configuration file */ properties_get(); /* The main vbox */ main_vbox = gtk_vbox_new( FALSE, 0); gtk_container_border_width( GTK_CONTAINER (main_vbox), 1); gnome_app_set_contents( GNOME_APP (app), main_vbox); /* Sort the array iad3tag_genres_sorted[GENRE_MAX] of genres alphabetical */ id3tag_sort_genres(); hbox = gtk_hbox_new( FALSE, 20 ); gtk_box_pack_start( GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show( hbox ); /* The global directory selection as a directory tree */ dirtree = create_dir_browser( prop_mp3_dir, app ); gtk_widget_set_usize( GTK_WIDGET (dirtree), 400, 100); /* gtk_container_set_border_width( GTK_CONTAINER (dirtree), 5 ); */ gtk_box_pack_start( GTK_BOX (hbox), dirtree, FALSE, FALSE, 0 ); gtk_widget_show( dirtree ); /* Notebook for logo and log window */ nb = gtk_notebook_new(); gtk_notebook_set_tab_pos( GTK_NOTEBOOK(nb), GTK_POS_LEFT ); gtk_box_pack_start( GTK_BOX(hbox), nb, FALSE, FALSE, 0); gtk_widget_show( nb ); /* logo */ logobox = logo_box_new(); /* gtk_signal_connect( GTK_OBJECT(logobox), "clicked", */ /* GTK_SIGNAL_FUNC(yamtlog_show), nb ); */ gtk_widget_show(logobox); label = gtk_label_new( "Logo" ); gtk_widget_show( label ); gtk_notebook_append_page( GTK_NOTEBOOK(nb), logobox, label ); /* log window */ gtk_widget_show(logbox); label = gtk_label_new( "Log" ); gtk_widget_show( label ); gtk_notebook_append_page( GTK_NOTEBOOK(nb), logbox, label ); /******************************** END OF NOTEBOOK ********************************/ /* The notebook itself */ notebook = gtk_notebook_new(); /* Function to call when the user switches to another notebook page */ gtk_signal_connect( GTK_OBJECT( notebook), "switch_page", GTK_SIGNAL_FUNC (page_switched), NULL ); gtk_box_pack_start( GTK_BOX(main_vbox), notebook, FALSE, FALSE, 0); gtk_widget_show( notebook ); /***************** Page 0: "Change the ID3 TAG of one file" *****************/ label = gtk_label_new( _("Edit") ); gtk_widget_show( label ); vbox_tag = edit_box_new(); gtk_widget_show(vbox_tag); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_tag, label ); /***************** Page 1: "Rename fileas based on their ID3 TAG" *****************/ label = gtk_label_new( _("Rename") ); gtk_widget_show( label ); vbox_rename = rename_box_new(); gtk_widget_show( vbox_rename ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_rename, label ); /***************** Page 2: "Mass set ID3 TAG" *****************/ label = gtk_label_new( _("Mass") ); gtk_widget_show( label ); vbox_mass = mass_box_new(); gtk_widget_show( vbox_mass ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_mass, label ); /***************** Page 3: "Auto set ID3 TAG " *****************/ label = gtk_label_new( _("Auto") ); gtk_widget_show( label ); vbox_auto = auto_box_new(); gtk_widget_show( vbox_auto ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_auto, label ); /***************** Page 4: "Exchange ID3 TAG" *****************/ label = gtk_label_new( _("Exchange") ); gtk_widget_show( label ); vbox_xchange = xchange_box_new(); gtk_widget_show( vbox_xchange ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_xchange, label ); /***************** Page 5: "Sort MP3 Files" *****************/ label = gtk_label_new( _("Sort") ); gtk_widget_show( label ); /* The vbox */ vbox_sort = sort_box_new(); gtk_widget_show( vbox_sort ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_sort, label ); /***************** Page 6: "Explore MP3 Files" *****************/ label = gtk_label_new( _("Explore") ); gtk_widget_show( label ); /* The vbox */ vbox_explore = explore_box_new(); gtk_widget_show( vbox_explore ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_explore, label ); /***************** Page 7: "Create Playlists" *****************/ label = gtk_label_new( _("Playlists") ); gtk_widget_show( label ); /* The vbox */ vbox_playlists = playlists_box_new(); gtk_widget_show( vbox_playlists ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_playlists, label ); /***************** Page 8: "Misc" *****************/ label = gtk_label_new( _("Misc") ); gtk_widget_show( label ); /* The vbox */ vbox_misc = misc_box_new(); gtk_widget_show( vbox_misc ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), vbox_misc, label ); /******************************** END OF NOTEBOOK ********************************/ gtk_widget_show( app ); /* Load the properties of each feature */ properties_load(); /* One or more argument(s) was / were given */ if( argc > 1 ) { /* Load the dir */ buffer = g_strdup( argv[1] ); tmp = g_filename_pointer( buffer ); *tmp = '\0'; selected_directory = buffer; edit_browse_load( ); /* load the file */ edit_file_load( argv[1] ); } gtk_main(); g_free (prop_mp3_dir); g_free (prop_mp3_player); return(1); } GtkWidget *logo_box_new( void ) { GtkWidget *dummy; GtkWidget *pixmap; /* dummy = gtk_button_new(); */ dummy = gtk_hbox_new( FALSE, 0 ); /* The YAMT- Logo */ pixmap = gnome_pixmap_new_from_file(gnome_pixmap_file(YAMT_LOGO) ); if( pixmap ) { /* gtk_container_add( GTK_CONTAINER(dummy), pixmap ); */ gtk_box_pack_start( GTK_BOX(dummy), pixmap, FALSE, FALSE, 0); gtk_widget_show(pixmap); } else gtk_widget_set_usize( GTK_WIDGET(dummy), 250, 175 ); gtk_widget_show(dummy); return(dummy); } GtkWidget *yamtlog_box_new( void ) { GtkWidget *box; GtkWidget *scrolled_window; GtkWidget *button; box = gtk_vbox_new( FALSE, 10); scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_widget_set_usize( GTK_WIDGET(scrolled_window), 200, 150); /* gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), */ /* GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); */ gtk_box_pack_start( GTK_BOX(box), scrolled_window, TRUE, TRUE, 0); gtk_widget_show(scrolled_window); logwidget = gtk_clist_new(1); gtk_clist_set_column_width( GTK_CLIST(logwidget), 0, 600); gtk_container_add( GTK_CONTAINER(scrolled_window), logwidget); gtk_widget_show(logwidget); button = gnome_stock_or_ordinary_button( "Clear" ); gtk_signal_connect( GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(yamtlog_clear), logwidget ); gtk_box_pack_start( GTK_BOX(box), button, TRUE, TRUE, 0); gtk_widget_show(button); return(box); } void yamtlog_show( GtkWidget *widget, gpointer *data ) { gtk_notebook_set_page( GTK_NOTEBOOK(data), 1 ); } void yamtlog_clear( GtkWidget *widget, gpointer *data ) { gtk_clist_clear( GTK_CLIST(data) ); } void tree_selection_changed( GtkWidget *widget, gpointer *data) { GtkCTreeNode *node; DirNode *dirnode; void (*handler)(gchar *); /* gchar *line[7]; */ if (GTK_CLIST(tree)->selection) { node = GTK_CLIST(tree)->selection->data; dirnode = gtk_ctree_node_get_row_data(GTK_CTREE(tree),node); handler = (void (*)(gchar *))gtk_object_get_user_data(GTK_OBJECT(tree)); if(handler) handler(dirnode->path); yamtlog("%s %s", "dirnode->path: ", dirnode->path); selected_directory = dirnode->path; /* Change the selected directory in every notebook page */ rename_directory_load( selected_directory ); mass_directory_load( selected_directory ); xchange_directory_load( selected_directory ); auto_directory_load( selected_directory ); sort_directory_load( selected_directory ); explore_directory_load( selected_directory ); playlists_directory_load( selected_directory ); misc_directory_load( selected_directory ); /* If the edit page is the current one load the files into the clist */ if ( (gtk_notebook_get_current_page( GTK_NOTEBOOK(notebook) )) == 0 ) edit_browse_load( ); } } /* called when the user switches to another notebook page */ void page_switched( GtkWidget *widget, GtkNotebookPage *page, gint page_num) { /* If the user selected the first page update the clist */ if( page_num == 0 ) edit_browse_load( ); } void yamt_exit( void ) { yamtlog("%s", "Normal exit!"); gtk_main_quit(); }