Changeset 88

Show
Ignore:
Timestamp:
28/12/07 14:25:18 (1 year ago)
Author:
altglass
Message:

Preview can be saved to a PNG file

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/README.TXT

    r86 r88  
    33Changelog: 
    44----------------------------------------------------------- 
     50.7.0a - Preview can be saved as image 
    560.6.1b - Critical bufix for the Preview Window  
    67       - Bugfix for slider points parsing and XML parsing 
    7 0.6.0a - Resources/windows/layouts/items can be edited by 
     80.6.0b - Resources/windows/layouts/items can be edited by 
    89         doubleclicking on them in the hiearchy trees 
    910       - Sliders are rendered completely as in VLC 
  • trunk/src/vlcskineditor/Main.java

    r87 r88  
    5555  JMenuBar mbar; 
    5656  JMenu m_file, m_edit, m_help; 
    57   JMenuItem m_file_new, m_file_open, m_file_save, m_file_test, m_file_vlt, m_file_quit; 
     57  JMenuItem m_file_new, m_file_open, m_file_save, m_file_test, m_file_vlt, m_file_png, m_file_quit; 
    5858  JMenuItem m_edit_undo, m_edit_redo, m_edit_theme, m_edit_global, m_edit_up, m_edit_down, m_edit_right, m_edit_left; 
    5959  JMenuItem m_help_doc, m_help_about;   
     
    144144    m_file_test = new JMenuItem("Test skin in VLC..."); 
    145145    m_file_test.setMnemonic('T'); 
    146     m_file_test.addActionListener(this); 
     146    m_file_test.setAccelerator(KeyStroke.getKeyStroke("ctrl shift t")); 
     147    m_file_test.addActionListener(this);     
    147148    m_file_vlt = new JMenuItem("Export as VLT..."); 
    148149    m_file_vlt.setMnemonic('V'); 
    149     m_file_vlt.setAccelerator(KeyStroke.getKeyStroke("ctrl v"));    
     150    m_file_vlt.setAccelerator(KeyStroke.getKeyStroke("ctrl shift v"));    
    150151    m_file_vlt.addActionListener(this); 
     152    m_file_png = new JMenuItem("Save current preview as image"); 
     153    m_file_png.setMnemonic('p'); 
     154    m_file_png.addActionListener(this); 
     155    m_file_png.setEnabled(false); 
    151156    m_file_quit = new JMenuItem("Quit"); 
    152157    m_file_quit.setIcon(exit_icon); 
     
    162167    m_file.add(m_file_test); 
    163168    m_file.add(m_file_vlt); 
     169    m_file.add(m_file_png); 
    164170    m_file.addSeparator(); 
    165171    m_file.add(m_file_quit); 
     
    545551      } 
    546552      catch (Exception e) { 
    547         System.err.println(e); 
    548         StackTraceElement[] stack = e.getStackTrace(); 
    549         for(int i=0;i<stack.length;i++) System.err.println("  "+stack[i]); 
     553        e.printStackTrace(); 
    550554      }   
    551555    }    
     
    706710    setTitle(f.toString()+" - VLC Skin Editor "+VERSION);       
    707711    pvwin.clearLayout(); 
     712    m_file_png.setEnabled(false); 
    708713    s.open(f);                   
    709714    selected_resource = null; 
     
    754759    } 
    755760    // </editor-fold>     
    756     // <editor-fold defaultstate="collapsed" desc="Save File "> 
     761    // <editor-fold defaultstate="collapsed" desc="Save File"> 
    757762    else if(e.getSource().equals(m_file_save))  { 
    758763      s.save(); 
     
    867872    } 
    868873    // </editor-fold> 
    869     // <editor-fold defaultstate="collapsed" desc="Quit ">  
     874    // <editor-fold defaultstate="collapsed" desc="Save Preview">  
     875    else if(e.getSource().equals(m_file_png)) { 
     876      JFileChooser png_fc = new JFileChooser(); 
     877      png_fc.setAcceptAllFileFilterUsed(false); 
     878      png_fc.setFileFilter(new CustomFileFilter(png_fc, "png", "*.PNG (Portable Network Graphic)", false, "")); 
     879      int i = png_fc.showSaveDialog(this); 
     880      if(i==JFileChooser.APPROVE_OPTION) { 
     881        File f = png_fc.getSelectedFile(); 
     882        if(!f.getPath().toLowerCase().endsWith(".png"))  
     883          f = new File(f.getPath()+".png"); 
     884        pvwin.savePNG(f); 
     885      } 
     886    } 
     887    // </editor-fold> 
     888    // <editor-fold defaultstate="collapsed" desc="Quit">  
    870889    else if(e.getSource().equals(m_file_quit)) { 
    871890      if(!saved) { 
     
    896915    else if(e.getSource().equals(m_edit_theme)) s.showThemeOptions(); 
    897916    else if(e.getSource().equals(m_edit_global)) s.gvars.showOptions(); 
    898     // <editor-fold defaultstate="collapsed" desc="Open Help ">  
     917    // <editor-fold defaultstate="collapsed" desc="Open Help">  
    899918    else if(e.getSource().equals(m_help_doc)) { 
    900919      Desktop desktop; 
     
    10771096          if(n==0) { 
    10781097            LayoutDeletionEvent lde = new LayoutDeletionEvent(w, l, w.layouts.indexOf(l), s); 
    1079             pvwin.clearLayout();             
     1098            pvwin.clearLayout();    
     1099            m_file_png.setEnabled(false); 
    10801100            w.layouts.remove(l); 
    10811101            s.updateWindows(); 
     
    12691289    else if(e.getSource().equals(m_edit_redo)) { 
    12701290      if(hist!=null) hist.redo(); 
    1271     } 
     1291    }     
    12721292  } 
    12731293   
     
    12901310          selected_layout = null; 
    12911311          pvwin.clearLayout(); 
     1312          m_file_png.setEnabled(false); 
    12921313          items_tree_model.setRoot(new DefaultMutableTreeNode("Root: Items"));                    
    12931314        } 
     
    12951316          selected_layout = path[i].toString().substring(path[i].toString().indexOf(": ")+2); 
    12961317          pvwin.setLayout(s.getWindow(selected_window),s.getWindow(selected_window).getLayout(selected_layout)); 
     1318          m_file_png.setEnabled(true); 
    12971319          s.updateItems(); 
    12981320        }         
  • trunk/src/vlcskineditor/PreviewWindow.java

    r87 r88  
    2626import java.awt.image.*; 
    2727import java.awt.event.*; 
     28import java.io.File; 
     29import javax.imageio.ImageIO; 
    2830import javax.swing.*; 
    2931import vlcskineditor.history.*; 
     
    222224    } 
    223225  } 
     226  /** 
     227   * Saves a preview of the selected layout to a file 
     228   */ 
     229  public void savePNG(File f) { 
     230    BufferedImage bi = new BufferedImage(l.width, l.height, BufferedImage.TYPE_INT_ARGB); 
     231    if(selected_item!=null) selected_item.setSelected(false); 
     232    l.draw(bi.createGraphics()); 
     233    if(selected_item!=null) selected_item.setSelected(true); 
     234    try { 
     235      ImageIO.write(bi, "png", f); 
     236    } 
     237    catch (Exception e) { 
     238      JOptionPane.showMessageDialog(m,"Could not save image!\n"+e.toString(),"Exception caught!",JOptionPane.ERROR_MESSAGE); 
     239      return; 
     240    } 
     241  } 
    224242} 
  • trunk/src/vlcskineditor/resources/Font.java

    r71 r88  
    117117      f = f.deriveFont((float)size); 
    118118    } 
    119     catch(Exception e) { 
    120       e.printStackTrace(); 
     119    catch(Exception e) {       
    121120      if(file.indexOf(".otf")==-1) { 
    122121        JOptionPane.showMessageDialog(frame,"Error while loading font file!\n Please choose another file\n","Font file not valid",JOptionPane.ERROR_MESSAGE);