コード例 #1
0
SimpleString FailableMemoryAllocator::getBaseName(const char* file)
{
    SimpleString fileFullPath(file);
    fileFullPath.replace('\\', '/');
    SimpleStringCollection pathElements;
    fileFullPath.split("/", pathElements);
    return pathElements[pathElements.size() - 1];
}
コード例 #2
0
int start( int argc, char **argv )
{
  char file[PATH_MAX];
  char *f = NULL;
  char line[7];
  int lineToOpen = 0;

  memset(file,'\0',PATH_MAX);
  memset(line,'\0',7);

  gtk_init( &argc, &argv );

  //printf("arguments::\n");

  for( int i = 0; i < argc; i++ )
  {
    //printf(" argument %d is %s\n",i,argv[i]);fflush(stdout);
    if( i == 1 )
    {
      strncpy(file,argv[i],PATH_MAX);
      f = fileFullPath(file);
    }
    else if( i == 2 )
    {
      strncpy(line,argv[i],6);
      lineToOpen = atoi(line);
      if( lineToOpen < 0 ) lineToOpen = 0;
    }
  }

  g_app = unique_app_new(EDITOR,NULL);

  if( unique_app_is_running (g_app) )
  {
    char* fl = NULL;
    int len = 0;
    UniqueCommand cmd = UNIQUE_NEW;
    UniqueMessageData* msg = unique_message_data_new();

    if( f ) len += strlen(f);
    if( lineToOpen ) len += strlen(line) + 1;
    fl = (char*)malloc(len+1);
    
    if( f )
    {
      strcpy(fl,f);
      free(f);
      
      if( lineToOpen )
      {
        strcat(fl,"@");
        strcat(fl,line);
      }
    }

    if( len > 1 && fl )
    {      
      cmd = UNIQUE_OPEN;
      unique_message_data_set_text(msg,fl,len);
      free(fl);
    }
    
    unique_app_send_message(g_app,cmd,msg);
    unique_message_data_free(msg);
  }
  else
  {
    if(f) free(f);
    //g_appWin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    //unique_app_watch_window (app, GTK_WINDOW(g_appWin));
    g_signal_connect(g_app,"message-received",G_CALLBACK(message_received_cb),NULL);

    MyEditorHandlerLin* meh = (MyEditorHandlerLin*)MyEditorHandlerLin::getInstance();
    meh->createEditor(file,lineToOpen);

    gtk_main();

    //gtk_widget_destroy(g_appWin);
  }

  g_object_unref (g_app);

  return 0;
}
コード例 #3
0
static UniqueResponse
message_received_cb (UniqueApp         *app,
                     UniqueCommand      command,
                     UniqueMessageData *message,
                     guint              time_,
                     gpointer           user_data)
{
  UniqueResponse res = UNIQUE_RESPONSE_OK;
  MyEditor* top = NULL;
  MyTabWindow* mtw = NULL;

  switch(command)
  {
    case UNIQUE_NEW:
    {
      MyEditorHandlerLin* meh = (MyEditorHandlerLin*)MyEditorHandlerLin::getInstance();
      top = meh->getTopEditor();
      if( top ) mtw = top->getTabWindow();
      meh->createEditor(mtw,NULL,0);
      //gtk_window_set_screen (GTK_WINDOW (ed->getWindow()), unique_message_data_get_screen (message));
      //gtk_window_present_with_time( GTK_WINDOW(ed->getWindow()), time_);
    }
    break;
    case UNIQUE_OPEN:
    {
      char* f = NULL;
      char* lineStr = NULL;
      int line = 0;
      MyEditor* me = NULL;
      MyEditorHandlerLin* meh = (MyEditorHandlerLin*)MyEditorHandlerLin::getInstance();

      top = meh->getTopEditor();
      if( top ) mtw = top->getTabWindow();

      char* file = unique_message_data_get_text(message);
      char* atSym = strrchr(file,'@');
      if( atSym )
      {
        lineStr = atSym + 1;
        *atSym = '\0';
        line = atoi(lineStr);
      }

      f = fileFullPath(file);

      if( f )
        me = meh->findEditor(f);
      else
        return UNIQUE_RESPONSE_FAIL;

      if( me )
      {
        meh->setTopEditor(me);
//        gtk_window_set_screen (GTK_WINDOW (me->getWindow()), unique_message_data_get_screen (message));
//cd         gtk_window_present_with_time( GTK_WINDOW(me->getWindow()), time_);
      }
      else
      {
        me = meh->createEditor(mtw,file,line+20);
      }

      me->focus();
      
      me->gotoLine(line-1);

      if( f ) free(f);
      if( file ) free(file);
      
    }
    break;
    default:
    {
    }
    break;
      // do nothing
  }

  return res;
}