Exemplo n.º 1
0
void DisasmViewer::settingsChanged()
{
	frameL = frameT = frameB = frameWidth();
	frameR = frameL + scrollBar->sizeHint().width();
	setMinimumHeight(frameT + 5 * fontMetrics().height() + frameB);

	// set font sizes
	Settings& s = Settings::get();
	QFontMetrics lfm(s.font(Settings::LABEL_FONT));
	QFontMetrics cfm(s.font(Settings::CODE_FONT));
	labelFontHeight = lfm.height();
	labelFontAscent = lfm.ascent();
	codeFontHeight  = cfm.height();
	codeFontAscent  = cfm.ascent();

	// calculate layout locations
	int charWidth = cfm.width("0");
	xAddr = frameL + 40;
	xMCode[0] = xAddr     + 6 * charWidth;
	xMCode[1] = xMCode[0] + 3 * charWidth;
	xMCode[2] = xMCode[1] + 3 * charWidth;
	xMCode[3] = xMCode[2] + 3 * charWidth;
	xMnem = xMCode[3] + 4 * charWidth;
	xMnemArg = xMnem  + 7 * charWidth;

	setMinimumSize(xMCode[0], 2*codeFontHeight);
	setMaximumSize(QApplication::desktop()->width(),
	               QApplication::desktop()->height());
	update();
}
Exemplo n.º 2
0
// This is a copy of OS X's XRE_GetBinaryPath from nsAppRunner.cpp with the
// gBinaryPath check removed so that the updater can reload the stub executable
// instead of xulrunner-bin. See bug 349737.
static nsresult
GetXULRunnerStubPath(const char* argv0, nsILocalFile* *aResult)
{
    nsresult rv;
    nsCOMPtr<nsILocalFile> lf;

    NS_NewNativeLocalFile(EmptyCString(), PR_TRUE, getter_AddRefs(lf));
    nsCOMPtr<nsILocalFileMac> lfm (do_QueryInterface(lf));
    if (!lfm)
        return NS_ERROR_FAILURE;

    // Works even if we're not bundled.
    CFBundleRef appBundle = CFBundleGetMainBundle();
    if (!appBundle)
        return NS_ERROR_FAILURE;

    CFURLRef bundleURL = CFBundleCopyExecutableURL(appBundle);
    if (!bundleURL)
        return NS_ERROR_FAILURE;

    FSRef fileRef;
    if (!CFURLGetFSRef(bundleURL, &fileRef)) {
        CFRelease(bundleURL);
        return NS_ERROR_FAILURE;
    }

    rv = lfm->InitWithFSRef(&fileRef);
    CFRelease(bundleURL);

    if (NS_FAILED(rv))
        return rv;

    NS_ADDREF(*aResult = lf);
    return NS_OK;
}
Exemplo n.º 3
0
static int run(void) {

  int i;
  int *grey = (int *)malloc(sizeof(int)*width);
  int speed[2]={150,150};
  ////default fixed speed, whther Epuck is on line or not
  const unsigned char *image;
    
  // 1. Get the sensors values
  image = wb_camera_get_image(cam);
  for (i = 0; i < width; i++) {
    grey[i] = 255-wb_camera_image_get_grey(image, width, i, 0);
	////0 = black, 255 = white, so 255-0=255 in grey[i] = black (value representation is now reversed
	////capture just topmost row for the width of the camera vision
  }
  
  // 2. Behavior-based robotic:
  // call the modules in the right order
  lem(grey,width);
  lfm(grey, width);
  llm(grey, width);
  //utm();
  
  // 3. Send the values to actuators
  wb_differential_wheels_set_speed(
    speed[LEFT]+lfm_speed[LEFT],//+utm_speed[LEFT],
    speed[RIGHT]+lfm_speed[RIGHT]//+utm_speed[RIGHT]
  );
  free(grey);
  return TIME_STEP;
}
Exemplo n.º 4
0
void
lastfm::TrackData::onGotInfo()
{
    const QByteArray data = static_cast<QNetworkReply*>(sender())->readAll();

    try
    {
        lastfm::XmlQuery lfm( data );

        QString imageUrl = lfm["track"]["image size=small"].text();
        if ( !imageUrl.isEmpty() ) m_images[lastfm::Small] = imageUrl;
        imageUrl = lfm["track"]["image size=medium"].text();
        if ( !imageUrl.isEmpty() ) m_images[lastfm::Medium] = imageUrl;
        imageUrl = lfm["track"]["image size=large"].text();
        if ( !imageUrl.isEmpty() ) m_images[lastfm::Large] = imageUrl;
        imageUrl = lfm["track"]["image size=extralarge"].text();
        if ( !imageUrl.isEmpty() ) m_images[lastfm::ExtraLarge] = imageUrl;
        imageUrl = lfm["track"]["image size=mega"].text();
        if ( !imageUrl.isEmpty() ) m_images[lastfm::Mega] = imageUrl;

        loved = lfm["track"]["userloved"].text().toInt();

        emit gotInfo( data );
        emit loveToggled( loved );
    }
    catch (...)
    {
        emit gotInfo( data );
    }

    // you should connect everytime you call getInfo
    disconnect( this, SIGNAL(gotInfo(const QByteArray&)), 0, 0);
}
NS_IMETHODIMP
nsMacShellService::OpenApplicationWithURI(nsIFile* aApplication, const nsACString& aURI)
{
  nsCOMPtr<nsILocalFileMac> lfm(do_QueryInterface(aApplication));
  CFURLRef appURL;
  nsresult rv = lfm->GetCFURL(&appURL);
  if (NS_FAILED(rv))
    return rv;
  
  const nsCString spec(aURI);
  const UInt8* uriString = (const UInt8*)spec.get();
  CFURLRef uri = ::CFURLCreateWithBytes(nullptr, uriString, aURI.Length(),
                                        kCFStringEncodingUTF8, nullptr);
  if (!uri) 
    return NS_ERROR_OUT_OF_MEMORY;
  
  CFArrayRef uris = ::CFArrayCreate(nullptr, (const void**)&uri, 1, nullptr);
  if (!uris) {
    ::CFRelease(uri);
    return NS_ERROR_OUT_OF_MEMORY;
  }

  LSLaunchURLSpec launchSpec;
  launchSpec.appURL = appURL;
  launchSpec.itemURLs = uris;
  launchSpec.passThruParams = nullptr;
  launchSpec.launchFlags = kLSLaunchDefaults;
  launchSpec.asyncRefCon = nullptr;
  
  OSErr err = ::LSOpenFromURLSpec(&launchSpec, nullptr);
  
  ::CFRelease(uris);
  ::CFRelease(uri);
  
  return err != noErr ? NS_ERROR_FAILURE : NS_OK;
}
Exemplo n.º 6
0
int main(int argc, char **argv)
{

  if (argc != 3)
  {
    std::cout << "Usage: musiccontrols <musiclibrary.xml> <music location>"
              << std::endl;
    return 1;
  }

  //become a daemon
  /*
  if(fork() != 0)
    return 0;

  setpgrp();    // break away from process group
  */

  int exitstatus = 0;

  //globally init curl (thread unsafe)
  curl_global_init(CURL_GLOBAL_NOTHING);

  http = new httpSocket(ServerHttpPort);
  ss = new streamSocket(ServerWebsocketPort);

  player = new mp3Player( "file://" + std::string(argv[2]) );
  player->trackChangedFn = &playerTrackChanged;

  lib = new musicLibrary();
  if (!lib->loadLibrary( std::string(argv[1]) ))
    std::cout << "couldn't load library file" << std::endl;

  //add song pickers in the order they should be used
  lastFM lfm(LastFmApiKey, *lib);
  artistPicker ap(*lib);
  player->pickerList.push_back(&lfm);
  player->pickerList.push_back(&ap);

  while (!exitstatus)
  {
    //poll, wait at most 100 ms
    ss->pollFDList(100);

    //respond to events on the websocket
    for (size_t i=0; i<ss->fdlist.size(); i++)
    {
      if (ss->fdlist[i].revents & POLLERR)
      {
        //error, close the fd
        ss->closeSocket(ss->fdlist[i].fd);
        i--;
        continue;
      }

      //check for incoming data
      if (!(ss->fdlist[i].revents & POLLIN)) continue;

      //check websocket opcode
      unsigned char opcode = 0x0;
      std::vector<unsigned char> data = ss->recvData(ss->fdlist[i].fd, opcode);

      if (opcode == streamSocket::WEBSOCKET_OP_DISCONNECT)
      {
        ss->closeSocket(ss->fdlist[i].fd);
        i--;
        continue;
      }
      else if (opcode == streamSocket::WEBSOCKET_OP_PING)
      {
        //reply with pong
        ss->sendData(ss->fdlist[i].fd, data.data(), data.size(), streamSocket::WEBSOCKET_OP_PONG);
        continue;
      }

      ControlCommand command = (ControlCommand)data[0];

      //parse command
      switch (command)
      {
        case Status:
          sendSingleStatusReport(ss->fdlist[i].fd);
          break;
        case MusicListing:
        {
          int group = 0, artist = 0, album = 0;
          std::string response;

          response += (char)0x01;

          if (data.size() >= 1 * 4 + 1) group  = (data[ 1] << 24) |
                                                 (data[ 2] << 16) |
                                                 (data[ 3] << 8)  |
                                                 (data[ 4] << 0);

          if (data.size() >= 2 * 4 + 1) artist = (data[ 5] << 24) |
                                                 (data[ 6] << 16) |
                                                 (data[ 7] << 8)  |
                                                 (data[ 8] << 0);

          if (data.size() >= 3 * 4 + 1) album  = (data[ 9] << 24) |
                                                 (data[10] << 16) |
                                                 (data[11] << 8)  |
                                                 (data[12] << 0);

          if (album != 0)
          {
            lib->listToString(lib->getTracks(group, artist, album), response, 10);
          }
          else if (artist != 0)
          {
            lib->listToString(lib->getAlbums(group, artist), response, 10);
          }
          else if (group != 0)
          {
            lib->listToString(lib->getArtists(group), response, 10);
          }
          else
          {
            lib->listToString(lib->getGroups(), response, 10);
          }

          ss->sendData(ss->fdlist[i].fd, (unsigned char *)response.data(), response.size());

          break;
        }
        case Playlist:
        {
          std::string response;
          std::ostringstream str;

          str << (char)0x02;

          std::vector<playlistitem> list = player->getList();
          for (size_t i = 0; i<list.size(); i++)
          {
            str << list[i].track  << (char)13 <<
                   list[i].artist << (char)13 <<
                   list[i].reason;
            if (i != list.size() - 1) str << (char)10;
          }

          response = str.str();

          ss->sendData(ss->fdlist[i].fd, (unsigned char *)response.data(), response.size());

          break;
        }
        case AddToPlaylist:
        case PlayNow:
        {
          int group = 0, artist = 0, album = 0, track = 0;

          if (data.size() == 4 * 4 + 1)
          {
            group  = (data[ 1] << 24) | (data[ 2] << 16) | (data[ 3] << 8) | (data[ 4] << 0);
            artist = (data[ 5] << 24) | (data[ 6] << 16) | (data[ 7] << 8) | (data[ 8] << 0);
            album  = (data[ 9] << 24) | (data[10] << 16) | (data[11] << 8) | (data[12] << 0);
            track  = (data[13] << 24) | (data[14] << 16) | (data[15] << 8) | (data[16] << 0);

            player->addItem(lib->getArtistName(group, artist),
                           lib->getTrackName(group, artist, album, track),
                           lib->getTrackFilename(group, artist, album, track));

            if (command == PlayNow)
            {
              player->setPlaylistIndex(player->getPlaylistSize() - 1);
              player->play();
            }

            sendStatusReport(true);
          }

          break;
        }
        case PlayPause:
          player->playPause();

          sendStatusReport(false);
          break;
        case Play:
          player->play();

          sendStatusReport(false);
          break;
        case Pause:
          player->pause();

          sendStatusReport(false);
          break;
        case Previous:
          player->prev();

          break;
        case Next:
          player->next();

          break;
        case SetVol:
          if (data.size() != 2) continue;
          player->setVol(data[1]);

          sendStatusReport(false);
          break;
        case VolUp:
          player->setVol(player->getVol() + 10);

          sendStatusReport(false);
          break;
        case VolDown:
          player->setVol(player->getVol() - 10);

          sendStatusReport(false);
          break;
        case ToggleMute:
          player->setMute(!player->getMute());

          sendStatusReport(false);
          break;
        case SetMute:
          if (data.size() != 2) continue;
          player->setMute((bool)data[1]);

          sendStatusReport(false);
          break;
        case SetPlaylistPosition:
          if (data.size() != 2) continue;
          player->setPlaylistIndex((size_t)data[1]);

          sendStatusReport(false);
          break;
        case ClearPlaylist:
          player->clearPlaylist();

          sendStatusReport(true);
          break;
        case RestartServer:
          exitstatus = 1;
          break;
        case ShutDownServer:
          exitstatus = 2;
          break;
      }
    }
  }

  delete lib;
  delete player;
  delete ss;
  delete http;

  //clean up curl
  curl_global_cleanup();

  switch (exitstatus)
  {
    case 1:
      system("shutdown -r now");
      break;
    case 2:
      system("shutdown -h -H now");
      break;
  }

  return exitstatus;
}
Exemplo n.º 7
0
NS_IMETHODIMP
nsCommandLine::ResolveFile(const nsAString& aArgument, nsIFile* *aResult)
{
  NS_ENSURE_TRUE(mWorkingDir, NS_ERROR_NOT_INITIALIZED);

  // This is some seriously screwed-up code. nsIFile.appendRelativeNativePath
  // explicitly does not accept .. or . path parts, but that is exactly what we
  // need here. So we hack around it.

  nsresult rv;

#if defined(MOZ_WIDGET_COCOA)
  nsCOMPtr<nsILocalFileMac> lfm (do_QueryInterface(mWorkingDir));
  NS_ENSURE_TRUE(lfm, NS_ERROR_NO_INTERFACE);

  nsCOMPtr<nsILocalFileMac> newfile (do_CreateInstance(NS_LOCAL_FILE_CONTRACTID));
  NS_ENSURE_TRUE(newfile, NS_ERROR_OUT_OF_MEMORY);

  CFURLRef baseurl;
  rv = lfm->GetCFURL(&baseurl);
  NS_ENSURE_SUCCESS(rv, rv);

  nsAutoCString path;
  NS_CopyUnicodeToNative(aArgument, path);

  CFURLRef newurl =
    CFURLCreateFromFileSystemRepresentationRelativeToBase(nullptr, (const UInt8*) path.get(),
                                                          path.Length(),
                                                          true, baseurl);

  CFRelease(baseurl);

  rv = newfile->InitWithCFURL(newurl);
  CFRelease(newurl);
  if (NS_FAILED(rv)) return rv;

  newfile.forget(aResult);
  return NS_OK;

#elif defined(XP_UNIX)
  nsCOMPtr<nsIFile> lf (do_CreateInstance(NS_LOCAL_FILE_CONTRACTID));
  NS_ENSURE_TRUE(lf, NS_ERROR_OUT_OF_MEMORY);

  if (aArgument.First() == '/') {
    // absolute path
    rv = lf->InitWithPath(aArgument);
    if (NS_FAILED(rv)) return rv;

    NS_ADDREF(*aResult = lf);
    return NS_OK;
  }

  nsAutoCString nativeArg;
  NS_CopyUnicodeToNative(aArgument, nativeArg);

  nsAutoCString newpath;
  mWorkingDir->GetNativePath(newpath);

  newpath.Append('/');
  newpath.Append(nativeArg);

  rv = lf->InitWithNativePath(newpath);
  if (NS_FAILED(rv)) return rv;

  rv = lf->Normalize();
  if (NS_FAILED(rv)) return rv;

  lf.forget(aResult);
  return NS_OK;

#elif defined(XP_WIN32)
  nsCOMPtr<nsIFile> lf (do_CreateInstance(NS_LOCAL_FILE_CONTRACTID));
  NS_ENSURE_TRUE(lf, NS_ERROR_OUT_OF_MEMORY);

  rv = lf->InitWithPath(aArgument);
  if (NS_FAILED(rv)) {
    // If it's a relative path, the Init is *going* to fail. We use string magic and
    // win32 _fullpath. Note that paths of the form "\Relative\To\CurDrive" are
    // going to fail, and I haven't figured out a way to work around this without
    // the PathCombine() function, which is not available in plain win95/nt4

    nsAutoString fullPath;
    mWorkingDir->GetPath(fullPath);

    fullPath.Append('\\');
    fullPath.Append(aArgument);

    WCHAR pathBuf[MAX_PATH];
    if (!_wfullpath(pathBuf, fullPath.get(), MAX_PATH))
      return NS_ERROR_FAILURE;

    rv = lf->InitWithPath(nsDependentString(pathBuf));
    if (NS_FAILED(rv)) return rv;
  }
  lf.forget(aResult);
  return NS_OK;

#else
#error Need platform-specific logic here.
#endif
}