Guest User

Untitled

a guest
Dec 20th, 2013
137
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module main;
  2.  
  3. import std.c.windows.windows;
  4.  
  5. import dsfml.audio;
  6. import dsfml.graphics;
  7. import dsfml.window;
  8. import dsfml.system;
  9.  
  10. import std.c.windows.windows;
  11. import std.stdio;
  12. import std.conv;
  13. import std.string;
  14.  
  15. pragma(lib, "comdlg32");
  16.  
  17. struct OPENFILENAME {
  18.     DWORD         lStructSize;
  19.     HWND          hwndOwner;
  20.     HINSTANCE     hInstance;
  21.     LPCTSTR       lpstrFilter;
  22.     LPTSTR        lpstrCustomFilter;
  23.     DWORD         nMaxCustFilter;
  24.     DWORD         nFilterIndex;
  25.     LPTSTR        lpstrFile;
  26.     DWORD         nMaxFile;
  27.     LPTSTR        lpstrFileTitle;
  28.     DWORD         nMaxFileTitle;
  29.     LPCTSTR       lpstrInitialDir;
  30.     LPCTSTR       lpstrTitle;
  31.     DWORD         Flags;
  32.     WORD          nFileOffset;
  33.     WORD          nFileExtension;
  34.     LPCTSTR       lpstrDefExt;
  35.     LPARAM        lCustData;
  36.     LPOFNHOOKPROC lpfnHook;
  37.     LPCTSTR       lpTemplateName;
  38. }
  39.  
  40. extern(Windows) BOOL GetOpenFileNameA(OPENFILENAME*);
  41.  
  42. void main()
  43. {
  44.     auto font = new dsfml.graphics.font.Font();
  45.     font.loadFromFile("arial.ttf");
  46.     auto window = new RenderWindow(VideoMode(1280, 720), "Virtual Soundboard", Window.Style.Titlebar | Window.Style.Close);
  47.    
  48.     auto bgColor = new Color(29, 29, 29, 255);
  49.    
  50.     auto label = new Text("Uninitialized", font);
  51.     label.setCharacterSize(15);
  52.     label.position(Vector2f(50, 50));
  53.  
  54.     SoundBuffer buffer = new SoundBuffer();
  55.    
  56.     while (window.isOpen())
  57.     {
  58.         Event event;
  59.        
  60.         while(window.pollEvent(event))
  61.         {
  62.             if(event.type == Event.EventType.Closed)
  63.             {
  64.                 window.close();
  65.             }
  66.             if(event.type == Event.EventType.MouseButtonReleased)
  67.             {
  68.                 if(event.mouseButton.button == 0)
  69.                 {
  70.                     writeln("finding sound file");
  71.                     auto temp = openSoundFile();
  72.                     string temp2 = temp[0..temp.lastIndexOf('.') + 4];
  73.                     writeln("file found: " ~ temp2);
  74. //                  if(!buffer.loadFromFile(temp2))
  75. //                  {
  76. //                      writeln("Buffer load failed");
  77. //                      return;
  78. //                  }
  79.                     auto setLabel1 = temp[(temp.lastIndexOf('\\') + 1)..(temp.lastIndexOf('\\') + 12)].dup;
  80.                     auto setLable2 = temp[(temp.lastIndexOf('\\') + 1)..(temp.length - 1)].dup;
  81.                     writefln("Setting label text to %s", setLabel1);
  82.                     label.setString(to!(dstring)(setLabel1));
  83.                     writeln("Label set.");
  84.                 }
  85.             }
  86.         }
  87.        
  88.         window.clear(*bgColor);
  89.         window.draw(label);
  90.        
  91.         window.display();
  92.     }
  93. }
  94.  
  95. auto openSoundFile()
  96. {
  97.     char[256] filenameBuffer;
  98.     filenameBuffer[0] = 0;
  99.     OPENFILENAME info;
  100.     info.lStructSize = OPENFILENAME.sizeof;
  101.     info.lpstrFilter = "Audio Files\0*.wav;*.ogg\0\0".ptr;
  102.     info.lpstrFile = filenameBuffer.ptr;
  103.     info.nMaxFile = filenameBuffer.length;
  104.     if(GetOpenFileNameA(&info))
  105.     {
  106.         return to!string(filenameBuffer);
  107.     }
  108.     else return to!string("!!failed");
  109. }
RAW Paste Data