Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Gtk+ - Sodipodi, kako mu proslediti parametar - argument?

[es] :: C/C++ programiranje :: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?

[ Pregleda: 1425 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Gtk+ - Sodipodi, kako mu proslediti parametar - argument?25.11.2003. u 13:56 - pre 249 meseci
Potrebno mi je da iz Windows aplikacije, pozovem program Sodipodi koji bi trebao da ucita neki SVF fajl i da ga prikaze.
Mogu to da uradim uz pomoc Internet Explorera, ali on ima problema kod stampanja....
Sodipodi je pisan uz pomoc Gtk+, pa ne znam kako da mu prosledim parametar (ovde bi to bilo ime fajle).
Probao sam direktno iz komandne linije, medjutim Sodipodi izgleda uopste ne uzima u obzir argumente koji mu se proslede, jer sta god da mu stavis kao argument on samo otvori glavni widget i nista vise (cak ni gresku ne prijavi).

Iz mog programa sam probao fje ShellExecute i CreateProcess, ali ni to ne pomaze.

Ima li neki iskusni Gtk+ programer da mi ponudi neko resenje?

Ako se neko pita zasto koristim bas Sodipodi, tri su glavna razloga:
- editor vektorske grafike, pa korisnik moze doda i nesto svoje na vec gotov crtez
- License: GNU General Public License (GPL), Public Domain (znaci moze se besplatno koristiti)

Sledi deo koda test aplikacije, koja bi trebala da pozove Sodipodi i ucita fajlu MojaSVG.SVG.

Code:

//Dlg_Test.cpp
#include <windows.h>
#include "dlg_test.h" 
using namespace std;
char SvgFile[256], SodipodiPath[256], ExtProg[256];
BOOL CALLBACK DlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
  switch(Message)
  {
    case WM_INITDIALOG:
      strcpy(SvgFile,"D:\\CppRadni\\DLG_Test\\MojaSVG.SVG");
      strcpy(SodipodiPath,"C:\\Program Files\\Sodipodi\\bin\\");
      strcpy(ExtProg,SodipodiPath);  strcat(ExtProg,"Sodipodi.exe");  
    break;
    case WM_COMMAND:
      switch(LOWORD(wParam))
      {
        case IDC_BUTT1:
        {
          ShellExecute(hwnd, "open", "IEXPLORE.EXE", SvgFile,NULL,SW_SHOWNORMAL);
          // ovo radi kako treba
        }
        break;
        case IDC_BUTT2:
        {
          SetCurrentDirectory(SodipodiPath); // da bi se glavni Widget pravilno iscrtao
          ShellExecute(hwnd, NULL, ExtProg, NULL,NULL,SW_SHOWNORMAL);
          //ovo samo startuje Sodipodi, bez obzira sta mu stavim za cetvrti argument
        }
        break;
        case IDC_BUTT3:
          SetCurrentDirectory(SodipodiPath); // da bi se glavni Widget pravilno iscrtao
          { // ovo parce je modifikovani kod sa MSDN:
            // http://msdn.microsoft.com/libr...oc/base/creating_processes.asp
              STARTUPINFO si;
              PROCESS_INFORMATION pi;
              ZeroMemory( &si, sizeof(si) );
              si.cb = sizeof(si);
              ZeroMemory( &pi, sizeof(pi) );
              // Start the child process. 
              if( !CreateProcess(ExtProg, NULL, NULL, NULL, false, 0, NULL, NULL, &si, &pi )) 
                  MessageBox(hwnd, "NESTO SAM POGRESIO", "PORUKA", MB_OK);
          
              // Wait until child process exits.
                //WaitForSingleObject( pi.hProcess, INFINITE );
              // Close process and thread handles. 
              CloseHandle( pi.hProcess );
              CloseHandle( pi.hThread );
              //ovo samo startuje Sodipodi, bez obzira sta mu stavim za drugi argument
          }
        break;
      }
    break;
    case WM_CLOSE:
      EndDialog(hwnd, 0);
    break;
    default:
      return false;
  }
  return true;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
  return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
}


Inace radim pod Windows2000 i sa Dev-Cpp 4.9.8.4 with Mingw/GCC 3.2
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?25.11.2003. u 14:48 - pre 249 meseci
Sodipodi je IMHO jedan od najboljih SVG editora. Ali to je sada nebitno. Ja sedoh malopre Za ovu Windows masinu i pokusah da startujem sodipodi sa opcijama (Windows 2000). Izgleda da ne radi! Na sajtu sam nasao da sodipodi --help daje spisak opcija - ali ne... sodipodi --help prosto startuje sodipodi!

Da to radi onda bi radilo i nesto tipa
Code:

#include <windows.h>
#include <process.h>
int main(int argc, char** argv)
{
  execlp("C:\\GNU\\sodipodi\\sodipodi.exe", "sodipodi.exe", "U:\\art\\rtk.svg", NULL);
  return 0;
}

Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?25.11.2003. u 15:00 - pre 249 meseci
Citat:
Izgleda da ne radi! Na sajtu sam nasao da sodipodi --help daje spisak opcija - ali ne... sodipodi --help prosto startuje sodipodi!

Tako je Leko i ja sam to bio nasao i obradovao se, ali mrka kapa.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?26.11.2003. u 13:37 - pre 249 meseci
Nije "izgleda" vec 100% ne radi. :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?16.12.2003. u 10:18 - pre 248 meseci
Po onoj narodnoj "Kad se ja veselim, neka se svi vesele"
Izašla je nova verzija Sodipodi 0.33beta. Za mene je najvažnija novina je da podržava Unicode i da mogu programu da prosledim argument sa imenom fajle koju treba da otvori!
Treba preuzeti Windows 2000/XP binary package (http://sourceforge.net/project/showfiles.php?group_id=4054), on podrzava Unicode
Program koji sam predhodno napisao pretrpeo je manje izmene:
Code:

.
.
case WM_INITDIALOG:
   strcpy(SvgFile,"D:\\CppRadni\\DLG_Test\\MojaSVG.SVG"); 
   strcpy(SodipodiPath,"C:\\Program Files\\Sodipodi\\");   // PROMENJENO! Nov Path izvrsnog fajle sodipodi.exe
   strcpy(ExtProg,SodipodiPath);  strcat(ExtProg,"Sodipodi.exe");  
break;
.
.
.
   case IDC_BUTT2:
   {
      SetCurrentDirectory(SodipodiPath); // da bi se glavni Widget pravilno iscrtao
      ShellExecute(hwnd, "open", ExtProg, SvgFile,NULL,SW_SHOWNORMAL);    // PROMENJENO!
   }
   break;
.
.
.

opciju case IDC_BUTT3: nisam proveravao.

Predpostavljem da se problem mogao resiti kao u programu gimp-win-remote (http://sourceforge.net/projects/gimp-win-remote/) koji poktece GIMP i prosledjuje mu ime fajle koju treba otvoriti (Predpostavljam posto su oba radjena u Gtk).

Deo ekipe koji je razvijao Sodipodi se odvojio i radi novi projekt Inkscape http://www.inkscape.org/
Zasto su to uradili moze se videti na njihovom sajtu, ali programi izgledaju veoma slicno, mada Inkscape jos uvek ne podrzava Unicode.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?17.12.2003. u 08:07 - pre 248 meseci
Kako tipicno... Nikako narod da skapira da je forkovanje projekata najveci neprijatelj opensource razvoja... Naravno, nekad je to dobro, ali uglavnom nije.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: C/C++ programiranje :: Gtk+ - Sodipodi, kako mu proslediti parametar - argument?

[ Pregleda: 1425 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.