انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: واقعا متاسفم که فقط ادعا داریم و بس.  (دفعات بازدید: 1498 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین hamed_ubuntu

  • Sr. Member
  • *
  • ارسال: 251
  • جنسیت : پسر
  • linuxforlife.ir
    • لینوکس برای زندگی
واقعا متاسفم که فقط ادعا داریم و بس.
« : 10 خرداد 1392، 02:32 ب‌ظ »
با سلام خدمت دوستان
من یه برنامه دریافت کردم که با GTK  نوشته شده و مثل تخته وایت بورد هست که میتونی روش چیزی بنویسی اما حالا من میخوام رو این صفحه به صورت اتوماتیک یه خطوطی چاپ شه مثل ضربان قلب.از دوستان کسی میتونه کمکم کنه.در ضمن تا حدودی موفق شدم ولی برای رسم باید مدام کلیک کنم تا اون چیزی که میخوام ترسیم شه.
اینم کد به صورت کامل:
#include <gtk/gtk.h>
#include <math.h>
float xx=0.0,yy=0.0;
char res;
typedef struct _components {
    GtkWidget *window;
    GtkWidget *previous;
    GtkWidget *next;
    GtkWidget *graphNavigationPanel;
    GtkWidget *mainPanel;
    GtkWidget *drawingArea;
    GdkPixmap *pixMap;
} components;

static     components this;

static void next_handler( GtkWidget *widget,gpointer   data )
{
    g_print ("next %s \n", (gchar *) data);
}

static void previous_handler( GtkWidget *widget,gpointer   data )
{
    g_print ("previous %s \n", (gchar *) data);
}

static gboolean delete_event( GtkWidget *widget,GdkEvent  *event,gpointer   data )
{
    return FALSE;
}

/* Another callback */
static void destroy( GtkWidget *widget,gpointer   data )
{
    gtk_main_quit ();
}


static void createWindow() {
    this.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_container_set_border_width (GTK_CONTAINER (this.window), 1);
    gtk_window_set_title (GTK_WINDOW (this.window), "Electro saze damon");

    g_signal_connect (G_OBJECT (this.window), "delete_event",G_CALLBACK (delete_event), NULL);

    g_signal_connect (G_OBJECT (this.window), "destroy",G_CALLBACK (destroy), NULL);

}


static void createButtons() {
    this.next = gtk_button_new_with_label ("SPO2");
    this.previous = gtk_button_new_with_label ("HR");

     GtkWidget *dialog = NULL;

//  dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");

    //g_signal_connect (G_OBJECT (this.next), "clicked", G_CALLBACK (next_handler), NULL);
    //g_signal_connect (G_OBJECT (this.previous), "clicked", G_CALLBACK (previous_handler), NULL);

}

static void layoutWidgets() {
    /* Create the graph navigation panel and add it to the window. */
    this.graphNavigationPanel = gtk_hbox_new (FALSE, 0);
    this.mainPanel = gtk_vbox_new(FALSE, 0);

    gtk_container_add  (GTK_CONTAINER (this.window), this.mainPanel);


    /* Add the buttons to the graph navigation panel. */
    gtk_box_pack_start (GTK_BOX(this.graphNavigationPanel), this.previous, TRUE, TRUE, 0);
    gtk_box_pack_start (GTK_BOX(this.graphNavigationPanel), this.next,     TRUE, TRUE, 0);


    /*Add the graph navigation panel to the main panel. */
    gtk_box_pack_start (GTK_BOX(this.mainPanel), this.graphNavigationPanel, TRUE, TRUE, 0);
    /* Add the draw-able area to the main panel. */
    gtk_box_pack_start (GTK_BOX(this.mainPanel), this.drawingArea, TRUE, TRUE, 0);



}

static void show() {
    gtk_widget_show (this.drawingArea);
    gtk_widget_show (this.mainPanel);
    gtk_widget_show (this.next);
    gtk_widget_show (this.previous);
    gtk_widget_show (this.graphNavigationPanel);
    gtk_widget_show (this.window);
}

/* Draw a rectangle on the screen */
static void draw_brush (GtkWidget *widget, gdouble x, gdouble y)
{
  GdkRectangle update_rect;
   /// tanzimate galam//
  update_rect.x = x - 1;
  update_rect.y = y - 1;
  update_rect.width = 2;
  update_rect.height = 2;
  gdk_draw_rectangle (this.pixMap,widget->style->white_gc,TRUE,
              update_rect.x, update_rect.y,
              update_rect.width, update_rect.height);
  gtk_widget_queue_draw_area (widget,
                              update_rect.x, update_rect.y,
                      update_rect.width, update_rect.height);
}

/* Redraw the screen from the backing pixmap */
static gboolean
expose_event( GtkWidget *widget, GdkEventExpose *event )
{
  gdk_draw_drawable(widget->window,
            widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
            this.pixMap,
            event->area.x, event->area.y,
            event->area.x, event->area.y,
            event->area.width, event->area.height);

  return FALSE;
}
/* Create a new backing pixmap of the appropriate size */
static gboolean
configure_event( GtkWidget *widget, GdkEventConfigure *event )
{
  if (this.pixMap)
    g_object_unref(this.pixMap);

  this.pixMap = gdk_pixmap_new(widget->window,
              widget->allocation.width,
              widget->allocation.height,
              -1);

  gdk_draw_rectangle (this.pixMap,
              widget->style->black_gc,
              TRUE,
              0, 0,
              widget->allocation.width,
              widget->allocation.height);

  return TRUE;
}


///tanzimate mouse///
static gboolean button_press_event( GtkWidget *widget, GdkEventButton *event )
{
// if (event->button == 1 && this.pixMap != NULL)
     xx=xx+0.2;
     yy=yy+(xx/2);
      draw_brush (widget, xx, yy);


  return TRUE;
}

static gboolean
motion_notify_event( GtkWidget *widget, GdkEventMotion *event )
{
  int x, y;
  GdkModifierType state;

  if (event->is_hint)
    gdk_window_get_pointer (event->window, &x, &y, &state);
  else
    {
      x = event->x;
      y = event->y;
      state = event->state;
    }

  if (state & GDK_BUTTON1_MASK && this.pixMap != NULL)
    draw_brush (widget, x, y);

  return TRUE;
}

static void createDrawingArea() {
    this.drawingArea = gtk_drawing_area_new();

    gtk_signal_connect (GTK_OBJECT (this.drawingArea), "expose_event",
                  (GtkSignalFunc) expose_event, NULL);
    gtk_signal_connect (GTK_OBJECT(this.drawingArea),"configure_event",
                  (GtkSignalFunc) configure_event, NULL);
    gtk_signal_connect (GTK_OBJECT (this.drawingArea), "motion_notify_event",
                  (GtkSignalFunc) motion_notify_event, NULL);
    gtk_signal_connect (GTK_OBJECT (this.drawingArea), "button_press_event",
                  (GtkSignalFunc) button_press_event, 1);

    gtk_widget_set_events (this.drawingArea, GDK_EXPOSURE_MASK
                 | GDK_LEAVE_NOTIFY_MASK
                 | GDK_BUTTON_PRESS_MASK
                 | GDK_POINTER_MOTION_MASK
                 | GDK_POINTER_MOTION_HINT_MASK);

    gtk_drawing_area_size(this.drawingArea, 800, 600); // sayze safhe//
}


int main( int   argc,
          char *argv[] )
{


    gtk_init (&argc, &argv);

    createWindow();
    createButtons();
    createDrawingArea();
    layoutWidgets();
    show();

    gtk_main ();

    return 0;
}
« آخرین ویرایش: 19 خرداد 1392، 12:49 ب‌ظ توسط hamed_ubuntu »
تا میتونم باید تلاش کنم.همین

آفلاین hamed_ubuntu

  • Sr. Member
  • *
  • ارسال: 251
  • جنسیت : پسر
  • linuxforlife.ir
    • لینوکس برای زندگی
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #1 : 19 خرداد 1392، 12:53 ب‌ظ »
هزار جا سوال پرسیدم و هیچ جواب قابل قبولی نگرفتم و از این بابت خیلی متاسفم برای جامعه برنامه نویسی کشور.
معلوم شد که چرا هنوز نمیتونیم یه نرم افزار موفقی داشته باشیم و دلیلش سواد کم و نداشتن اطلاعات کافی از یک زبان برنامه نویسی میباشد.
فقط بلدیم لینک بدیم و کتاب فلان نویسنده رو معرفی کنیم که تو اونا هم یا اون چیزی که میخوای نیست یا ناقصه.
حداقل از دانیال عزیز یه کمک میتونست برسه !که فکر کنم اسم من توی لیست بلوکه هاش باشه.
من خودم برنامه نویسی میکروکنترلر میکنم و تا جایی که یادمه کم کمک نکردم به دانشجوهام یا افرادی که ازم سوال پرسیدن و زکات علمم رو افتخار میکنم که پرداخت کردم تا کنون.

با تشکر از دوستان به ظاهر برنامه نویس.
« آخرین ویرایش: 19 خرداد 1392، 12:57 ب‌ظ توسط hamed_ubuntu »
تا میتونم باید تلاش کنم.همین

آفلاین william wallace

  • Jr. Member
  • *
  • ارسال: 33
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #2 : 19 خرداد 1392، 01:22 ب‌ظ »
1- خیلی تند نرو
۲- عنوان تاپیک رو با محتوای تاپیک ست. کن این چجور عنوانیه!
۳- مگه زوره کسی اینجا GTK بلد نیست (معمولا چیزی بلد نیستن و فقط زبونشون درازه البته منظورم همه نیست بیشتر کاربرها)
۴- کاربرای اینجا بیشتر برای گذران وقت میان
۵- من برنامه‌نویسی کیوت کار میکنم ولی هیچگاه پرسشهام رو اینجا مطرح نمی کنم به دلیل ۴ یکبار از بلندر پرسیدم نزدیک ۳۰ تا جواب دادن ولی هیچکدومش در مورد بلندر نبود
۶- پرسشت رو در فاروم GTK انگلیسی مطرح کن یا از کانال IRC‌ استفاده کن البته E-Mail List بسیار فعالی دارن که کاربرای بادانش زیادی عضوش هستند که می‌تونی به راحتی پاسخ بگیری

یک نگاهی به تاپیکهای بروز شده بنداز ببین چند درصدشون خبری و انتقادی هستن و از تاپیکهای باقی مونده چند درصد غیر تکراری؟ جواب صفر درصد

رفیق مشکل از اینجا نیست مشکل از شماست محل رو اشتباه اومدی
من قبل از کیوتی GTKmm کار کردم ولی به برنامت که نگاه می‌کنم خیلی ناخواناست و بسیار بد نوشته شده. یک دستی به سروگوشش بکش بعد اون رو به لیست ایمیل رفع اشکال GTK بفرست اینجوری فکر نکنم کسی حاضر بشه نگاشم کنه

آفلاین hamed_ubuntu

  • Sr. Member
  • *
  • ارسال: 251
  • جنسیت : پسر
  • linuxforlife.ir
    • لینوکس برای زندگی
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #3 : 19 خرداد 1392، 01:37 ب‌ظ »
۱-تند میرم چون از این انجمن واقعا انتظار دارم.
۲-عنوان تاپیک چندان هم بی ربط نیست دوست عزیز.
۳-من نه تنها gtk بلکه در مورد زبان سی و سی پلاس پلاس هم پرسیدم حتی QT , ...
۴-اتفاقا باهات مخالفم چون اشکال زدایی های فراوانی میشه در این انجمن فقط کار ما راه نمی افته.
 و در آخر هم بگم که این کد رو از لینک هایی که دوستان دادن گرفتم و خودم ننوشتم که ایراد میگیری شلوغه و نا مرتب.
تا میتونم باید تلاش کنم.همین

آفلاین !

  • High Sr. Member
  • *
  • ارسال: 586
  • جنسیت : پسر
  • Don't Panic!
    • مانیتورینگ سایت
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #4 : 19 خرداد 1392، 01:54 ب‌ظ »
ببین عزیزم اینکه یکی تمام تلاششو بکنه که gtk و qt یاد بگیره دیگه همچین معقول نیست.

محیطهای جذابتری واسه کاربرا ایجاد شده که کم کم امثال این پلتفورم ها بخاطر وجود چیزای جذاب باحال منقرض میشن.

جامعه برنامه نویسی کشور خیلی هم کارای خوبی عرضه میکنه منتها بخاطر موقعیت خاص سوق الجیشی کشورمون! کارا برای عرضه ازینجا نیستن و دوستان میزارن میرن ولایت غریب و حقم دارن.

البته با اونا که عین چی چپیدن تو پلتفورم .net مخالفم و اونا فقط شبیه برنامه نویسان!

الان عصر Android و iOS و ویندزد 8 شده.تو این شلم شوربا معقول نیست که هر کس همه چیزو دس ببره توش.

انجمن های تخصصی تری مثل برنامه نویس واسه اینکار ایجاد شدن.

عموما آدما شاید واسه کمک اینجا باشن ولی اعصاب خوندن اونهمه کد و تابع  تو نهاد هیچکس نیست اونم تو این گرما.

برنامه نویس خوبه بیکار نداریم که بیاد تو انجمن اوبونتو الافی کنه و تلاش کنه به دیگران خدمت کنه، خب خدمتشو با انجام ی کار خوب میکنه قطعا.

اینجا بازار شامه

آی لاو یو PMC
I just felt like running

Altern AI Directory --- GitHub

آفلاین mozo68

  • Sr. Member
  • *
  • ارسال: 414
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #5 : 19 خرداد 1392، 02:40 ب‌ظ »
در عوض ما عاشق این‌جور سوال پرسیدن و این‌جور عنوان انتخاب کردن هستیم:]خیلی هم باعث افتخار انجمنمونه.

آفلاین william wallace

  • Jr. Member
  • *
  • ارسال: 33
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #6 : 19 خرداد 1392، 02:46 ب‌ظ »
۱-تند میرم چون از این انجمن واقعا انتظار دارم.
۲-عنوان تاپیک چندان هم بی ربط نیست دوست عزیز.
۳-من نه تنها gtk بلکه در مورد زبان سی و سی پلاس پلاس هم پرسیدم حتی QT , ...
۴-اتفاقا باهات مخالفم چون اشکال زدایی های فراوانی میشه در این انجمن فقط کار ما راه نمی افته.
 و در آخر هم بگم که این کد رو از لینک هایی که دوستان دادن گرفتم و خودم ننوشتم که ایراد میگیری شلوغه و نا مرتب.

اگه میدونستم که کد رو خودت ننوشتی اصلا پست نمی دادم. از همون جایی که دانلود کردی بگو برات تغییرش بدن شما که چیزی از GTK‌نمیدونی چطور داری اینجوری از انجمن انتقاد می‌کنی

فرهنگ کمک در گنو به این معنا نیست که دیگران برات کاری انجام بدن خیلی وقتها خودت باید چیزی که وجود نداره ایجاد کنی
در مورد کیوت اگه سوالی داشتی هستم خدمتت البته اگه کد دیگران رو نیاری بگی تغییرش بده

توی این انجمن یک زمانی کارای خوبی انجام میشد چون کاربرای بادانشی داشت و اینجوری بی در و پیکر نشده بود ولی حالا نه. انجمن عملا مرده

فقط در یک جمله بگم "داریوش!" کاملا باهات مخالفم و این تاپیک هم جای مناسبی برای بحث کردن در موردش نیست فقط خواستم مخالفتم رو بهت بگم بدون اینکه بخوام به بحث ادامه بدم

به دلیل بی‌ربط بودن عنوان تاپیک با محتوا بهتره تاپیک بسته بشه

آفلاین hamed_ubuntu

  • Sr. Member
  • *
  • ارسال: 251
  • جنسیت : پسر
  • linuxforlife.ir
    • لینوکس برای زندگی
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #7 : 19 خرداد 1392، 03:17 ب‌ظ »
خوب ویلیام عزیز که فقط نقد میکنی! ;)
من هم کیوت کار میکنم و برنامم رو توی کیوت نوشتم و به خاطر نبود مستند خوب در زمینه ترسیم پلات رفتم سمت GTK.
خوب شما که این همه ادعا دارین و میگین کیوت بلدین یه کد ساده واسه ترسیم شکل موج سینوسی بنویسید که هم من و هم بچه های دیگه انجمن استفاده کنن.
در ضمن ترسیم بر حسب زمان باید باشه یعنی اینجوری نباشه فقط به یکباره رسم کنه!
در واقع دنبال یه پلاتی شبیه نمودار ضربان قلب هستم.
خوب!
در ضمن برنامه ای که در بالا هست و به زبان Gtk  رو هم میتونم توضیحشو بدم و اینکه من این کد رو کمتر از ۵ دقیقه خوندم و واقف بودم به کدهاش که چیکار میکنن فقط خواستم تغییر جزیی بدم تا بر حسب زمان خودش اتوماتیک ترسیم کنه،که به دلیل ناآشنا بودن با GTK  و دستوراتش نتونستم همین.
لطفا اگر جوابی دارین لینک ندین که فکر کنم تمام لینک های کیوت رو خوندم و چیزی به دستم نیومد.فقط جواب ایرانی میخوام و بس!


تا میتونم باید تلاش کنم.همین

آفلاین MHA152

  • High Hero Member
  • *
  • ارسال: 2745
  • جنسیت : پسر
  • من عاشق یونیکسی ها هستم
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #8 : 19 خرداد 1392، 03:19 ب‌ظ »
چرا اسم این تاپیک اینجوریه؟لطفا عوضش کنید
بهتون پیشنهاد می کنم به دنیای بزرگ شبه−یونیکس وارد بشید و از پیشرفت لذت ببرید
جیمیلم

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #9 : 19 خرداد 1392، 03:25 ب‌ظ »
دوست من، یا هدفتون گرفتن جواب هست که با این موضوع تاپیک جواب نمی‌گیرید، یا هدفتون تنها اسپم هستش که فقط باعث تلف کردن وقت خودتون و ما می‌شه.
اگر واقعا جواب می‌خواید، موضوعتون رو تصحیح کنید.

آفلاین narcissus

  • گروه راهبران
  • *
  • ارسال: 1132
    • روز شمار شروع!
پاسخ : واقعا متاسفم که فقط ادعا داریم و بس.
« پاسخ #10 : 19 خرداد 1392، 03:34 ب‌ظ »
قفل تاپیک به علت عنوان نا مناسب.
first they ignore you
then they laugh at you
then they fight you
then you win