LINUX.ORG.RU

Сообщения mikemike

 

Change pixel color in pixbuf gtkmm

Здравствуйте, собственно сабж, как можно поменять цвет пикселя и его яркость если у меня есть картинка в pixbuf, хотя подскажите в какую степь смотреть, может через cairo и потом грузить из cairo в pixbuf или использовать Image.спасибо. gtk 3.

 ,

mikemike
()

sudo su

Здравствуйте есть команда результат которой зависит от того из под какого пользователя ее вызвали, допустим command при вызове

su $USER -c "command"
результат такой же а при вызове
sudo -u $USER command
результат другой, в чем может быть проблема или какие дополнительные флаги нужны еще у sudo

 ,

mikemike
()

bash

здравствуйте есть скрипт суть которого просто выполнить одну команду #!/bin/bash command ну этот скрипт вызывается из под супер пользователя, а нужно что бы скрипт выполнялся из под обычного пробовал так

sudo -u $SUDO_USER command
но это не работает подскажите как правильно будет

 

mikemike
()

gsettings

Здравствуйте есть необходимость забиндить горячую клавишу на запуск программы, знаю что это можно сделать через настройки клавиатуры, но появилась необходимость сделать это через консоль, нашел что это можно через gsettings, http://forum.russianfedora.ru/viewtopic.php?f=15&t=4101 , но в media-keys у меня нет custom-keybindings,


gsettings list-keys org.gnome.settings-daemon.plugins.media-keys
active
area-screenshot
area-screenshot-clip
calculator
decrease-text-size
eject
email
help
home
increase-text-size
logout
magnifier
magnifier-zoom-in
magnifier-zoom-out
media
next
on-screen-keyboard
pause
play
previous
priority
screenreader
screensaver
screenshot
screenshot-clip
search
stop
toggle-contrast
volume-down
volume-mute
volume-up
window-screenshot
window-screenshot-clip
www
как это возможно сделать по другому, (Ubuntu 12.04)

 ,

mikemike
()

Curl

Здравствуйте есть пост запрос curl -F files[]=@/path/to/file "http://www.example.com/" который должен загружать файл, нужно этот же запрос делать через библиотеку curl.h на с++ и получать от него ответ, но она не работает выдает ошибку, что мол сервер недоступен( а хотя если делать через запрос в консоле то все ок)

static size_t string_appender(void *ptr, size_t size, size_t nmemb, void *data)
{
    size_t realsize = size * nmemb;
    std::string* input = (std::string*)data;

    if (input)
        input->append(static_cast<const char*>(ptr), realsize);

    return realsize;
}

{
....
CURL *curl;
			CURLcode res;
			fname.clear();
			fname="/path/to/file";
			struct curl_httppost *formpost=NULL;
			struct curl_httppost *lastptr=NULL;
			struct curl_slist *headerlist=NULL;
			curl_global_init(CURL_GLOBAL_ALL);
			curl_formadd(&formpost,
			             &lastptr,
			             CURLFORM_COPYNAME, "files[]",
			             CURLFORM_FILE, fname.c_str(),
			             CURLFORM_END);
			curl = curl_easy_init();
			std::string input;
			std::string ur;
			ur.append("\"http://www.example.com\"");          
			if(curl) {
				curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
				curl_easy_setopt(curl, CURLOPT_URL,
				                 ur.c_str());
				curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION,
				                string_appender);
				curl_easy_setopt(curl, CURLOPT_WRITEHEADER
				               , (void *)&input);

				res = curl_easy_perform(curl);				
				curl_easy_cleanup(curl);
				curl_formfree(formpost);
				curl_slist_free_all (headerlist);
			}
..........
}

 ,

mikemike
()

Gtkmm

Здравствуйте возникло два вопроса 1) допустим есть объект типа DrawingArea можно ли ему послать какой либо сигнал( например draw) ( я знаю в XLib есть функция XSendEvent), а есть ли ее аналог в gtk 2)Допустим есть та же DrawingArea и она слушает событие нажатия на нее кнопкой мыши, в обработчике принимается объект типа GdkEventButton можно ли из него извлечь Cairo Context?

 ,

mikemike
()

Xlib

Здравствуйте, возник вопрос, у меня есть несколько окон в одном дисплее, т.е. есть окно и внутри него расположены еще несколько окон, можно ли как то определить накладываются ли эти окна друг на друга или нет?

mikemike
()

Xlib

Здравствуйте, собственно вопрос, как там можно обрабатывать сочетания клавиш допустим Ctrl+O или что то подобное я нашел пример,там написано что выход происходит по нажатию Shift+Control+A, но я не особо понимаю где это происходит, и вообще она по моему не рабочая

Display	*prDisplay;
int	nScreenNum;
GC	prGC;
XEvent	rEvent;
Window	nWnd;
char	sKeyStr[20];
KeySym	nKeySym, naModList[2];
int	n;

/* Устанавливаем связь с сервером, получаем номер экрана . . . */
.........
/* Задаем соответствие символ-строка */
naModList[0] = XK_Control_L;
naModList[1] = XK_Shift_L;
XRebindKeysym (prDisplay, XK_F6, naModList, 2, "EXIT",
     strlen ("EXIT"));
    /* Цикл получения и обработки событий */

white (1) {
   XNextEvent (prDisplay, &rEvent);
   switch (rEvent.type) {
      ......
      case KeyPress :
         /* Очищаем строку */
         memset (sKeyStr, 0, sizeof (sKeyStr));

         /* Получаем строку, соответствующую событию */
         XLookupString (&rEvent.xkey, sKeyStr),
              sizeof (sKeyStr), &nKeySym, NULL);
         if ( !strcmp (sKeyStr, "EXIT"))
         {
            XFreeGC (prDisplay, prGC);
            XCloseDisplay (prDisplay);
            exit (0);
         }

         n = nKeySym == XK_F1 ? 1 :
             nKeySym == XK_F2 ? 2 :
             nKeySym == XK_F3 ? 3 :
             nKeySym == XK_F4 ? 4 :
             nKeySym == XK_F5 ? 5 : 0;

         if (n) {
            sprintf (sKeyStr, "F%d pressed.", n);
            XClearWindow (prDisplay, nWnd);
            XDrawString (prDisplay, nWnd, prGC, 10, 50,
                    sKeyStr, strlen (sKeyStr));
         }
         break;
   }
}
и еще вопрос мне нужно обрабатывать события перекрытия окна за это отвечает событие VisibilityNotify,а как мне узнать какое именно событие произошло? я знаю что за это отвечает переменная state но как к ней обратиться? event.xvisibility.state?

mikemike
()

Xlib

Здравствуйте,подскажите пожалуйста, как мне поступить, я создаю окно,и мне нужно сделать так, что бы курсор мышки не смог выходить за пределы этого окна, можно ли это реализовать какой либо функцией из библиотеки X или какой либо api функцией Unix'a,я могу обрабатывать событие выхода за пределы окна, а вот как сделать что бы нельзя было выходить за его пределы я не знаю, спасибо

mikemike
()

YACC

Доброго времени суток, вот программа на яке

     /* Simplest Context free grammar (0^n1^n) */
 
     %{    #include <ctype.h>
     #include <stdio.h>
       #define YYSTYPE char         // Type of input
       int  yylex   (void);
       void yyerror (char const *);
     %}
 
  // Main symbols of grammar (synonyms: terminals, tokens, etc.)
     %token ONE   
     %token TWO
    %left UR
 
     %% /* Grammar rules and actions follow.  */
 
     input:    /* empty */   { printf("\n\tThis program expecting string as\n");}
             | input line
     ;
 
     line:     '\n'          { printf ("empty line was introduced\n");}
	     |error '\n' {yyerrok;}
		| exp '\n'      { printf ("\t n = %i\n", $1); }
     ;
     exp:   ONE TWO       { $$ = 1; }
	     | TWO ONE
             |ONE  exp  TWO    
	     |TWO  exp ONE   { $$ = $2 + 1;}
     ;
     %%
     int yylex (void)
     {
       int c;

       /* Skip white space  */
       while ((c = getchar ()) == ' ' || c == '\t')
         ;
       /* Process symbols  */
       if (c == '0') {
        
         return ONE;
       }
       else
         if (c == '1') {
         
           return TWO;
         }
         else
         /* Return end-of-input.  */
         if (c == EOF)
           return 0;
       /* Return a single char.  */
       return c;
     }
     void yyerror (char const *s)
     {
       fprintf (stderr, "stderror: %s\n", s);      
     }
     int
     main (void)
     {
       return yyparse ();
     }
он выдает ошибку shift reduce в правиле exp,как это можно исправить и почему появилась эта ошибка программа должна распознавать обратно-зеркальные двоичные наборы, где значения симметричных разрядов не совпадают спасибо

mikemike
()

yacc

Здравствуйте возник вопрос допустим мне нужно реализовать какой либо автомат ну допустим такой из 4 состояний A->1B A->0D B->0C B->1A C->0B C->1D D->1C D->0A (ну соответственно начальный и конечный элемент автомата А, подается бинарный вектор) как это можно сделать, что то ничего толкового не лезит в голову спасибо

mikemike
()

Lex

Здравствуйте встала задача реальзовать конечный автомат на лексе

 

%{
#include <stdio.h>
%}
%x A B C D E O
%%
<INITIAL>[01] {yyless(0);printf("DFF\n");BEGIN O;}
<O>0 BEGIN A;
<O>1 BEGIN B;
<A>0 BEGIN O;
<A>1 BEGIN C;
<B>0 BEGIN C;
<B>1 BEGIN D;
<C>0 BEGIN B;
<C>1 BEGIN E;
<D>0 BEGIN E;
<D>1 BEGIN O;
<E>0 BEGIN D;
<E>1 BEGIN A;
<O>\n	{printf("Right binary expression \n");BEGIN 0;}
Однако одна проблема, если выражение является частью автомата то все хорошо однако если нет, то он становится неработоспособным, т.е. ничего воспринимать не хочет, как это исправить? спасибо

mikemike
()

YACC

Здравствуйте возникла проблема,нужно во входном тексте найти числа состоящие только либо из 0 или из 1

 %{ 
       #include <ctype.h>
       #include <stdio.h>
       int  yylex   (void);
       void yyerror (char const *);
     %}
     %token ONE  TWO 
     %% 
     input:  { printf("\n\tThis program expecting string as 0^n or 1^n\n");}
             | input line
     ;
     line:     '\n'          { printf ("empty line was introduced\n");}
             | exp '\n'		{printf("Right binary expression\n");}
		|exp1 '\n'    	{printf("Right binary expression\n");}
		//|exp2 '\n'    	{printf("Wrong binary expression\n");}
		;
        exp:   ONE 
		| exp ONE       
        ;
	exp1: TWO
		|exp1 TWO
	;
     %%
     int yylex (void)
     {
       int c;
       while ((c = getchar ()) == ' ' || c == '\t');
       if (c == '0')
         return ONE;
       else
         if (c == '1') 
           return TWO;
         else
         if (c == EOF)
           return 0;
       return c;
     }
     void yyerror (char const *s)
     {	
       fprintf (stderr, "Not a binary expression\nstderror: %s\n", s);      
     }
     int main (void)
     {
       return yyparse ();
     }

однако нужно что бы на записи 01010 нужно что бы выводилось сообщение пишу вот так exp2: TWO|ONE|exp2 ONE|exp2 TWO; однако выдается сообщение о конфликте, как это можно исправить?

mikemike
()

Lex анализатор

Здравствуйте,нужно написать простой анализатор для поиска слов в которых чередуются гласные и согласные буквы

%{
#include <stdio.h>
extern int i;
int i=0;
%}
glas [aeiouyAEIOUY]
delim [ \t\n]
soglas [bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]
id ({glas}({soglas}{glas})+)
%%
{id}      {
            
            printf("%s\t%d\n", yytext,i++);
        }
\n ;
[ ]+ ;
[^{id}] printf("1\n");
%%

но почему то слова в которых есть буквы i или d он анализирует неверно в чем проблема,спасибо

mikemike
()

RSS подписка на новые темы